diff options
| author | Ben Sima <ben@bsima.me> | 2025-11-20 16:23:29 -0500 |
|---|---|---|
| committer | Ben Sima <ben@bsima.me> | 2025-11-20 16:23:29 -0500 |
| commit | b6334da771d764b7c29b33522db06b6cc716c6cb (patch) | |
| tree | 644805fb7f3276ea6a5a8af022f4b1f67c316a6f /Omni/Task/Core.hs | |
| parent | 9ab85c33379f98229235a30dbf5108ad31a01d1f (diff) | |
feat: implement multi-agent workflow infrastructure
- 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
Diffstat (limited to 'Omni/Task/Core.hs')
| -rw-r--r-- | Omni/Task/Core.hs | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/Omni/Task/Core.hs b/Omni/Task/Core.hs index 3da47aa..af105de 100644 --- a/Omni/Task/Core.hs +++ b/Omni/Task/Core.hs @@ -36,7 +36,7 @@ data Task = Task data TaskType = Epic | WorkTask deriving (Show, Eq, Generic) -data Status = Open | InProgress | Done +data Status = Open | InProgress | Review | Done deriving (Show, Eq, Generic) -- Priority levels (matching beads convention) @@ -83,9 +83,11 @@ instance FromJSON Task -- Get the tasks database file path (use test file if TASK_TEST_MODE is set) getTasksFilePath :: IO FilePath getTasksFilePath = do + customPath <- lookupEnv "TASK_DB_PATH" testMode <- lookupEnv "TASK_TEST_MODE" - pure <| case testMode of - Just "1" -> ".tasks/tasks-test.jsonl" + pure <| case (customPath, testMode) of + (Just path, _) -> path + (_, Just "1") -> ".tasks/tasks-test.jsonl" _ -> ".tasks/tasks.jsonl" -- Initialize the task database @@ -347,6 +349,7 @@ showTaskTree maybeId = do WorkTask -> case taskStatus task of Open -> "[ ]" InProgress -> "[~]" + Review -> "[?]" Done -> "[✓]" nsStr = case taskNamespace task of Nothing -> "" @@ -462,6 +465,7 @@ data TaskStats = TaskStats { totalTasks :: Int, openTasks :: Int, inProgressTasks :: Int, + reviewTasks :: Int, doneTasks :: Int, totalEpics :: Int, readyTasks :: Int, @@ -483,6 +487,7 @@ getTaskStats = do let total = length tasks open = length <| filter (\t -> taskStatus t == Open) tasks inProg = length <| filter (\t -> taskStatus t == InProgress) tasks + review = length <| filter (\t -> taskStatus t == Review) tasks done = length <| filter (\t -> taskStatus t == Done) tasks epics = length <| filter (\t -> taskType t == Epic) tasks readyCount = length ready @@ -504,6 +509,7 @@ getTaskStats = do { totalTasks = total, openTasks = open, inProgressTasks = inProg, + reviewTasks = review, doneTasks = done, totalEpics = epics, readyTasks = readyCount, @@ -522,6 +528,7 @@ showTaskStats = do putText <| "Total tasks: " <> T.pack (show (totalTasks stats)) putText <| " Open: " <> T.pack (show (openTasks stats)) putText <| " In Progress: " <> T.pack (show (inProgressTasks stats)) + putText <| " Review: " <> T.pack (show (reviewTasks stats)) putText <| " Done: " <> T.pack (show (doneTasks stats)) putText "" putText <| "Epics: " <> T.pack (show (totalEpics stats)) |
