summaryrefslogtreecommitdiff
path: root/Omni/Jr.hs
diff options
context:
space:
mode:
authorBen Sima <ben@bensima.com>2025-11-27 14:14:40 -0500
committerBen Sima <ben@bensima.com>2025-11-27 14:14:40 -0500
commitbe32ee30dacc65406c1e949765786446345f37b2 (patch)
treedcb489bbbaee9aba21cb07ecacef2475be26e2dd /Omni/Jr.hs
parentaad0175d6bb2b90d2c78a4a73844ae30ea6cefac (diff)
Add human notes field for intervention tasks
All tests pass. Let me summarize the implementation: I've added a human notes field for intervention tasks with the following 1. **Omni/Task/Core.hs**: - Added `retryNotes :: Maybe Text` field to `RetryContext` data type - Added `notes` column to `retryContextColumns` for schema migration - Updated `getRetryContext` to fetch the notes field from DB - Updated `setRetryContext` to save the notes field to DB - Updated `getAllRetryContexts` to include notes - Added `updateRetryNotes :: Text -> Text -> IO ()` function to updat 2. **Omni/Jr/Web.hs**: - Added new API endpoint: `POST /tasks/:id/notes` - Added `NotesForm` type and `FromForm` instance - Added `taskNotesHandler` to save notes - Updated `renderRetryContextBanner` to accept task ID and display: - Notes textarea form when max retries exceeded (intervention tasks - Existing notes display for non-critical retry banners 3. **Omni/Agent/Worker.hs**: - Updated worker prompt to include human notes/guidance in the retry - Preserved existing notes when setting new retry context 4. **Omni/Jr.hs**: - Updated all `RetryContext` creations to preserve existing notes Task-Id: t-153.5
Diffstat (limited to 'Omni/Jr.hs')
-rwxr-xr-xOmni/Jr.hs10
1 files changed, 7 insertions, 3 deletions
diff --git a/Omni/Jr.hs b/Omni/Jr.hs
index 2de4975..0746424 100755
--- a/Omni/Jr.hs
+++ b/Omni/Jr.hs
@@ -221,13 +221,15 @@ handleConflict tid conflictFiles commitSha = do
TaskCore.updateTaskStatus tid TaskCore.Open []
else do
conflictDetails <- gatherConflictContext commitSha conflictFiles
+ maybeExistingCtx <- TaskCore.getRetryContext tid
TaskCore.setRetryContext
TaskCore.RetryContext
{ TaskCore.retryTaskId = tid,
TaskCore.retryOriginalCommit = Text.pack commitSha,
TaskCore.retryConflictFiles = conflictFiles,
TaskCore.retryAttempt = attempt,
- TaskCore.retryReason = conflictDetails
+ TaskCore.retryReason = conflictDetails,
+ TaskCore.retryNotes = maybeExistingCtx +> TaskCore.retryNotes
}
TaskCore.updateTaskStatus tid TaskCore.Open []
putText ("[review] Task " <> tid <> " returned to queue (attempt " <> tshow attempt <> "/3).")
@@ -401,7 +403,8 @@ autoReview tid task commitSha = do
TaskCore.retryOriginalCommit = Text.pack commitSha,
TaskCore.retryConflictFiles = [],
TaskCore.retryAttempt = attempt,
- TaskCore.retryReason = reason
+ TaskCore.retryReason = reason,
+ TaskCore.retryNotes = maybeCtx +> TaskCore.retryNotes
}
TaskCore.updateTaskStatus tid TaskCore.Open []
putText ("[review] Task " <> tid <> " reopened (attempt " <> tshow attempt <> "/3).")
@@ -435,7 +438,8 @@ interactiveReview tid commitSha = do
TaskCore.retryOriginalCommit = Text.pack commitSha,
TaskCore.retryConflictFiles = [],
TaskCore.retryAttempt = attempt,
- TaskCore.retryReason = "rejected: " <> reason
+ TaskCore.retryReason = "rejected: " <> reason,
+ TaskCore.retryNotes = maybeCtx +> TaskCore.retryNotes
}
TaskCore.updateTaskStatus tid TaskCore.Open []
putText ("Task " <> tid <> " reopened (attempt " <> tshow attempt <> "/3).")