diff options
| author | Ben Sima <ben@bensima.com> | 2025-11-24 21:43:35 -0500 |
|---|---|---|
| committer | Ben Sima <ben@bensima.com> | 2025-11-24 21:43:35 -0500 |
| commit | 6b9b5f5129dff789753df7d0c82939d3c219b29b (patch) | |
| tree | 0e5a3015a4cb29df2adf06f18898eeda5ee2acfe /Omni/Agent.hs | |
| parent | 32a81cad9782bb82f826307005bd187d4e6f0c93 (diff) | |
Remove harvest command and documentation
The 'harvest' functionality was tied to git-synced JSONL task files,
which have been replaced by a local SQLite database. This commit
removes the command from the CLI and updates documentation to reflect
the new workflow.
Amp-Thread-ID:
https://ampcode.com/threads/T-ac41b9b6-d117-46de-9e4f-842887a22f1d
Co-authored-by: Amp <amp@ampcode.com>
Diffstat (limited to 'Omni/Agent.hs')
| -rw-r--r-- | Omni/Agent.hs | 70 |
1 files changed, 1 insertions, 69 deletions
diff --git a/Omni/Agent.hs b/Omni/Agent.hs index 15ff77d..53ac5ec 100644 --- a/Omni/Agent.hs +++ b/Omni/Agent.hs @@ -10,9 +10,7 @@ module Omni.Agent where import Alpha import qualified Data.Text as Text -import qualified Data.Text.IO as TIO import qualified Omni.Agent.Core as Core -import qualified Omni.Agent.Git as Git import qualified Omni.Agent.Log as Log import qualified Omni.Agent.Worker as Worker import qualified Omni.Cli as Cli @@ -23,8 +21,6 @@ import qualified System.Directory as Directory import qualified System.Environment as Env import qualified System.Exit as Exit import System.FilePath (takeFileName) -import qualified System.IO as IO -import qualified System.IO.Temp as Temp main :: IO () main = Cli.main plan @@ -45,7 +41,6 @@ agent Usage: agent start [<task-id>] - agent harvest [--path=<path>] agent merge-driver <ours> <theirs> agent test agent --help @@ -76,7 +71,6 @@ move args let taskId = fmap Text.pack (Cli.getArg args (Cli.argument "task-id")) Worker.start worker taskId - | args `Cli.has` Cli.command "harvest" = harvest args | args `Cli.has` Cli.command "merge-driver" = mergeDriver args | otherwise = putStrLn (Cli.usage help) @@ -88,63 +82,6 @@ getArgOrExit args opt = putText <| "Error: Missing required argument " <> Text.pack (show opt) Exit.exitFailure -harvest :: Cli.Arguments -> IO () -harvest args = do - let path = Cli.getArgWithDefault args "." (Cli.longOption "path") - putText "Harvesting task updates from workers..." - - branches <- Git.listBranches path "omni-worker-*" - if null branches - then putText "No worker branches found." - else do - updated <- foldlM (processBranch path) False branches - when updated <| do - -- Consolidate - Directory.setCurrentDirectory path - -- Export to temporary file then commit? No, harvest implies we are merging back to source of truth. - -- But wait, tasks are now in SQLite. - -- If we are harvesting from branches, we are importing from JSONL in branches into our DB. - -- Then we probably want to export back to JSONL for git tracking? - -- The user said: "Remove git-tracked tasks.jsonl". - -- So harvest might need rethinking or just be disabled for now. - -- But strictly answering the compilation error: exportTasks takes an argument now. - -- Since we removed tasks.jsonl, maybe we shouldn't be exporting here at all if the goal is to just update the DB? - -- However, if harvest is about syncing multiple workers, it assumes a shared git repo. - -- If we removed git tracking of tasks, harvest via git branches makes less sense unless we still use JSONL for interchange. - -- For now, let's pass Nothing to exportTasks (stdout) which is probably not what we want, OR - -- if we want to save to DB, we don't need to call exportTasks because importTasks already updates the DB. - -- Let's remove the exportTasks call here as it seems redundant or incorrect given we removed the file. - -- But wait, if 'harvest' commits "task: harvest updates...", what is it committing? - -- The SQLite DB is likely .gitignore'd. - -- So harvest effectively does nothing useful for git if tasks are not in git. - -- I will comment out the commit and export for now to fix the build, assuming 'harvest' is legacy/deprecated with the removal of git-tracked tasks. - - -- TaskCore.exportTasks Nothing - - -- Commit if changed - -- Git.commit path "task: harvest updates from workers" - putText "Success: Task database updated." - -processBranch :: FilePath -> Bool -> Text -> IO Bool -processBranch repo updated branch = do - putText <| "Checking " <> branch <> "..." - maybeContent <- Git.showFile repo branch ".tasks/tasks.jsonl" - case maybeContent of - Nothing -> do - putText <| " Warning: Could not read .tasks/tasks.jsonl from " <> branch - pure updated - Just content -> do - -- Write to temp file - Temp.withSystemTempFile "worker-tasks.jsonl" <| \tempPath h -> do - TIO.hPutStr h content - IO.hClose h - -- Import - -- We need to ensure we are in the repo directory for TaskCore to find .tasks/tasks.jsonl - Directory.setCurrentDirectory repo - TaskCore.importTasks tempPath - putText <| " Imported tasks from " <> branch - pure True - mergeDriver :: Cli.Arguments -> IO () mergeDriver args = do ours <- getArgOrExit args (Cli.argument "ours") @@ -183,10 +120,5 @@ unitTests = Left err -> Test.assertFailure <| "Failed to parse 'start t-123': " <> show err Right args -> do args `Cli.has` Cli.command "start" Test.@?= True - Cli.getArg args (Cli.argument "task-id") Test.@?= Just "t-123", - Test.unit "can parse harvest command" <| do - let result = Docopt.parseArgs help ["harvest"] - case result of - Left err -> Test.assertFailure <| "Failed to parse 'harvest': " <> show err - Right args -> args `Cli.has` Cli.command "harvest" Test.@?= True + Cli.getArg args (Cli.argument "task-id") Test.@?= Just "t-123" ] |
