From b6334da771d764b7c29b33522db06b6cc716c6cb Mon Sep 17 00:00:00 2001 From: Ben Sima Date: Thu, 20 Nov 2025 16:23:29 -0500 Subject: 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 --- Omni/Task/Core.hs | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) (limited to 'Omni/Task/Core.hs') 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)) -- cgit v1.2.3