summaryrefslogtreecommitdiff
path: root/Omni
AgeCommit message (Collapse)Author
2025-11-20docs(agent): update logging design with 2-line status UIBen Sima
2025-11-20docs: update Agent design with git robustness learningsBen Sima
2025-11-20feat(task): remove horizontal bars from outputBen Sima
2025-11-20fix(worker): force checkout to overwrite untracked filesBen Sima
2025-11-20fix: rebase on local live branchBen Sima
- Removed fetch origin - Rebasing directly on local live branch for shared-repo setup
2025-11-20fix: update worker script to use rebaseBen Sima
- Ensures linear history on worker branch
2025-11-20doc: switch worker to rebase workflowBen Sima
- Use 'git rebase' instead of 'git merge' to maintain linear history - Aligns with git-branchless patch-based philosophy
2025-11-20Merge branch 'task/t-PpYZt2' into liveBen Sima
2025-11-20feat: implement t-PpYZt2Ben Sima
2025-11-20feat: implement t-PpYZt2Ben Sima
2025-11-20doc: add design docs for open epicsBen Sima
- Omni/Task/DESIGN.md: Task manager improvements - Biz/PodcastItLater/DESIGN.md: Architecture and features - Biz/PodcastItLater/TESTING.md: Test strategy - Network/Wai/Middleware/Braid/DESIGN.md: Keep-alive design
2025-11-20feat: implement t-PpYZt2Ben Sima
2025-11-20doc: update agent design to require timestamps in logsBen Sima
2025-11-20feat: implement t-PpYZt2Ben Sima
2025-11-20doc: add design document for Multi-Agent System 2.0Ben Sima
2025-11-20feat: implement t-PpYZt2Ben Sima
2025-11-20feat: implement t-PpYZt2Ben Sima
2025-11-20fix: remove null noise from worker monitorBen Sima
- Use 'empty' in jq to properly filter ignored log lines
2025-11-20feat: implement t-PpYZt2Ben Sima
2025-11-20fix: enable debug logs for worker agentBen Sima
- Allows monitoring tool execution details in amp.log
2025-11-20feat: automate worker workflow in bashBen Sima
- Replaced agent-driven workflow with robust bash script - Script handles task claiming, branching, syncing, and submission - Agent is now only responsible for implementation and testing - Eliminates context loss and process adherence issues
2025-11-20fix: merge local live branch in worker guideBen Sima
- We share the .git directory, so we can merge 'live' directly - Avoids dependency on 'origin' which might be stale or unused
2025-11-20fix: prevent data loss in worker loopBen Sima
- Changed 'git reset --hard' to 'git merge' in worker guide - This prevents the worker from wiping its own status updates (commits to base branch) when starting a new task loop
2025-11-20fix: handle existing task branches in worker guideBen Sima
- Workers should reuse existing branches if they crashed/restarted - Changed 'git checkout -b' to 'git checkout || git checkout -b'
2025-11-20fix: instruct worker to reset to latest live codeBen Sima
- Workers need to pull the latest merged code before starting a new task - Added 'git reset --hard origin/live' to Step 1 of the loop
2025-11-20Merge branch 'task/t-1gcR9RV' into liveBen Sima
2025-11-20Move agent log file to cabdirBen Sima
2025-11-20feat: implement task harvesting logicBen Sima
- Added Omni/Agent/harvest-tasks.sh for Planner to pull updates from workers - Updated WORKER_AGENT_GUIDE.md to instruct workers to commit status updates to their base branch
2025-11-20fix: capture worker agent logs to fileBen Sima
- Added --log-file amp.log to worker command - Allows users to monitor agent progress with tail -f
2025-11-20chore: task breakdown and cleanupBen Sima
- Updated Omni/Task/Core.hs to filter parent tasks from 'task ready' - Broke down 'PodcastItLater: Path to Paid Product' into 5 subtasks - Broke down 'General Code Quality Refactor' into 3 subtasks - Broke down 'Complete comprehensive test suite' into 2 subtasks - Fixed namespace naming in tasks.jsonl
2025-11-20feat: implement t-1gcR9RVBen Sima
Amp-Thread-ID: https://ampcode.com/threads/T-c683858e-5ed5-4d8e-8b9f-842ebdcec0a3 Co-authored-by: Amp <amp@ampcode.com>
2025-11-20fix: enable dangerously-allow-all for worker agentBen Sima
- The autonomous worker needs to execute commands without interactive prompts - Added --dangerously-allow-all flag to start-worker.sh
2025-11-20fix: improve start-worker.sh scriptBen Sima
- Use 'git worktree list' to reliably find main repo and amp binary - Run amp in a loop with -x flag for autonomous execution - Support flexible worker path resolution
2025-11-20Fix duplicate worktree commandBen Sima
2025-11-20feat: implement multi-agent workflow infrastructureBen Sima
- Add 'Review' status to Task tool - Add Omni/Agent/ directory with setup and sync scripts - Add WORKER_AGENT_GUIDE.md - Configure custom merge driver for tasks.jsonl
2025-11-20bild: fix --plan to output only JSON without loggingBen Sima
- Remove Log.wipe from --plan output path - Add isPlanMode parameter to analyzeAll to skip LogC.withLineManager when planning - Update all analyzeAll call sites to pass isPlanMode flag - Remove grep workaround from repl.sh (no longer needed) Now 'bild --plan' outputs clean JSON that can be piped directly to jq. This fixes typecheck.sh and other tools that rely on clean JSON output. Amp-Thread-ID: https://ampcode.com/threads/T-4e6225cf-3e78-4538-963c-5377bbbccee8 Co-authored-by: Amp <amp@ampcode.com>
2025-11-20typecheck: add Haskell support to typecheck.shBen Sima
- Implement Haskell typechecking using 'ghc -fno-code' - Use repl.sh to provision correct GHC environment with dependencies - Follows same pattern as Python typechecking (via repl.sh) - Typechecks without generating code (fast feedback) Now typecheck.sh supports both Python (.py) and Haskell (.hs) files. Amp-Thread-ID: https://ampcode.com/threads/T-4e6225cf-3e78-4538-963c-5377bbbccee8 Co-authored-by: Amp <amp@ampcode.com>
2025-11-20task: implement epic progress trackingBen Sima
- Add progress display to 'task show' for epics (X/Y with percentage) - Add progress display to 'task list --type=epic' showing [X/Y] - Progress already shown in 'task tree' as [X/Y] - Calculate completed/total child tasks for epics - Clean up test tasks accidentally created in production database All 31 tests passing. Amp-Thread-ID: https://ampcode.com/threads/T-4e6225cf-3e78-4538-963c-5377bbbccee8 Co-authored-by: Amp <amp@ampcode.com>
2025-11-20task: implement stats commandBen Sima
- Add 'task stats' command to show task statistics - Display total tasks, status breakdown (open/in-progress/done) - Show epic count, ready vs blocked tasks - Show task counts by priority (P0-P4) and namespace - Support both human-readable and JSON output (--json flag) - Add tests for stats command and stats --json - TaskStats data type with ToJSON/FromJSON instances All 31 tests passing. Amp-Thread-ID: https://ampcode.com/threads/T-4e6225cf-3e78-4538-963c-5377bbbccee8 Co-authored-by: Amp <amp@ampcode.com>
2025-11-20task: prettier tree visualization and flag ordering fixesBen Sima
- Implement box-drawing characters (├──, └──, │) for task tree visualization - Fix 'task create' flag ordering by using [options] in docopt (same as 'task list') - Document TASK_TEST_MODE environment variable in AGENTS.md Testing section - Add test case for multi-flag ordering on 'task create' - Clean up test tasks polluted in production database All 29 tests passing. Amp-Thread-ID: https://ampcode.com/threads/T-4e6225cf-3e78-4538-963c-5377bbbccee8 Co-authored-by: Amp <amp@ampcode.com>
2025-11-20Fix docopt flag ordering issue by using [options]Ben Sima
- Changed 'task list' usage from explicit flags to [options] - Allows flags to be specified in any order (fixes t-10KNtTF) - All combinations now work: --namespace --status, --status --namespace, etc. - Updated AGENTS.md examples to use correct status argument format - All tests passing (28/28)
2025-11-20Add task show command for detailed task inspectionBen Sima
- Implemented 'task show <id>' command with human-readable output - Shows all task fields: title, type, status, priority, timestamps - Displays dependencies with their types - Supports --json flag for programmatic use - Added CLI tests for show command - Includes priority descriptions (Critical/High/Medium/Low/Backlog)
2025-11-20task: sync databaseBen Sima
2025-11-16Fix repl.sh and typecheck.sh to properly parse bild --plan JSONBen Sima
The issue was that bild --plan outputs progress indicators before the JSON, causing jq to fail parsing. Fixed by: - Using grep to extract only lines starting with '{' (the JSON output) - This filters out progress lines like '[…] target' - Restored typecheck.sh to use repl.sh for proper environment setup Now typecheck.sh correctly provisions the environment via repl.sh instead of trying to use bild or raw python.
2025-11-16Add 'Add to feed' button on episode pages and fix typecheck.shBen Sima
- Episode pages now show 'Add to feed' button for logged-in users who don't have the episode - Added POST /episode/{id}/add-to-feed endpoint - Tracks 'added' metric when user adds episode to their feed - Added Database.track_episode_metric() function for metrics tracking - Fixed typecheck.sh to use bild instead of broken repl.sh approach Tasks completed: t-gc9aud, t-gcbqDl
2025-11-15Fix run.sh to handle bild --plan JSON outputBen Sima
The bild --plan command now outputs progress indicators before JSON. Updated run.sh to use 'tail -1' to extract only the JSON line and fixed the file path check to use the full path. Amp-Thread-ID: https://ampcode.com/threads/T-cc5d29f0-454e-4864-8d7e-1ad69a42afa9 Co-authored-by: Amp <amp@ampcode.com>
2025-11-15Expand terminalLock scope to protect all terminal I/OBen Sima
Problem: Still getting segfaults ("free(): invalid pointer") even with ncurses calls protected. The mutex only covered ANSI calls, but IORef reads and IO.hPutStr operations were happening outside the lock. Root cause: Race conditions in concurrent terminal output: 1. Multiple threads reading namespaceLines IORef concurrently 2. Interleaved IO.hPutStr calls corrupting output buffer 3. Rainbow.hPutChunks not being thread-safe Solution: Expand terminalLock scope to cover entire output operations: - Move IORef reads inside the lock - Protect all IO.hPutStr and Rainbow.hPutChunks calls - Lock both SingleLine and MultiLine modes - Ensure atomicity from IORef read through all I/O to flush This makes each updateLine/updateLineState call atomic, preventing any interleaving of terminal operations between threads. Changes: - updateLine SingleLine: wrap entire output in withMVar terminalLock - updateLine MultiLine: move nsMap read inside lock - updateLineState SingleLine: wrap entire output in withMVar terminalLock - updateLineState MultiLine: move nsMap read inside lock Tested: 10/10 successful runs of `bild --time 0 **/*` without segfaults.
2025-11-15Improve terminalLock comment for clarityBen Sima
Clarify that the mutex protects against ncurses thread-safety issues that cause segfaults during concurrent builds. This commit also forces a new Nix derivation hash to ensure the mutex fix is actually used (previous builds were cached with the old version).
2025-11-15Fix segfault: add mutex for ANSI terminal operationsBen Sima
Problem: Intermittent segfaults when running `bild --time 0 **/*` with many concurrent builds. Core dumps showed crashes in libncursesw's free() function during terminal cleanup. Root cause: ANSI.getTerminalSize and other ANSI terminal library calls are not thread-safe. With mapConcurrentlyBounded running up to 8 analyses concurrently, multiple threads were calling ANSI functions simultaneously, causing memory corruption in the ncurses library. Solution: Add global MVar terminalLock to serialize all ANSI terminal operations. Wrap all ANSI function calls (cursor movement, line clearing, etc.) with withMVar terminalLock. Changes: - Add terminalLock :: MVar () in Omni/Log/Concurrent.hs - Wrap all ANSI calls in withMVar terminalLock: - initializeLines: cursor column, clear line - updateLine: cursor up/down, column set, clear line - updateLineState: cursor up/down, column set, clear line - withLineManager: cursor up Tested: 5 consecutive runs of `bild --time 0 **/*` complete without segfaults (previously failed 1-2 out of 3 runs).
2025-11-15Fix NixOS integration: separate package building from OS buildsBen Sima
Problem: Calling bild.run inside NixOS configs triggered IFD during OS evaluation. ANSI escape codes from bild broke JSON parsing in Nix sandbox, causing build failures. Root cause: bild.run uses IFD (Import From Derivation) which runs bild --plan during Nix evaluation. When this happened inside NixOS service definitions, it ran recursively and bild output ANSI codes that corrupted the JSON analysis output. Solution: Two-phase architecture + NO_COLOR support 1. Biz/Packages.nix: Pre-builds all packages outside NixOS context 2. Biz.nix: Accepts packages as function argument (default: Packages.nix) 3. Omni/Bild.nix: Sets NO_COLOR=1 in analysis derivation 4. Omni/Log/Terminal.hs: Respects NO_COLOR env var 5. Omni/Log/Terminal.hs: Skip getTerminalSize when NO_COLOR set to avoid escape code output 6. Omni/Log/Concurrent.hs: Skip line initialization without ANSI support Now NixOS builds succeed: - Package IFD happens once at top level - No recursive builds during service evaluation - Clean JSON output from bild --plan in Nix sandbox - NixOS configs reference pre-analyzed packages Changes: - Add Biz/Packages.nix - standalone package builder - Update Biz.nix to accept packages argument - Update Biz/Dragons/Analysis.nix to use Packages.nix - Remove Biz/Targets.nix (replaced by Packages.nix) - Add NO_COLOR support throughout logging stack - Fix ANSI.getTerminalSize outputting escape codes when NO_COLOR set Amp-Thread-ID: https://ampcode.com/threads/T-bc0f6fc7-46bf-4aa2-892e-dd62e7251d4b Co-authored-by: Amp <amp@ampcode.com>