diff options
| author | Ben Sima <ben@bensima.com> | 2025-11-27 14:14:40 -0500 |
|---|---|---|
| committer | Ben Sima <ben@bensima.com> | 2025-11-27 14:14:40 -0500 |
| commit | be32ee30dacc65406c1e949765786446345f37b2 (patch) | |
| tree | dcb489bbbaee9aba21cb07ecacef2475be26e2dd /Omni/Jr.hs | |
| parent | aad0175d6bb2b90d2c78a4a73844ae30ea6cefac (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-x | Omni/Jr.hs | 10 |
1 files changed, 7 insertions, 3 deletions
@@ -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).") |
