Add ready_for_merge tool and prompt agents for it after review
This commit is contained in:
@@ -51,6 +51,7 @@ enum RowKind {
|
||||
case turnEnd(error: String?)
|
||||
case note(Note)
|
||||
case review(note: Note, md: [MDBlock])
|
||||
case ready(when: Date, md: [MDBlock])
|
||||
case handoff
|
||||
case snapshot(Snapshot)
|
||||
case question
|
||||
@@ -192,6 +193,7 @@ final class TranscriptBuilder {
|
||||
private(set) var context: [String: Usage] = [:]
|
||||
private(set) var open = false
|
||||
private(set) var lastMergeAfterReview: Int?
|
||||
private(set) var lastReady: Int?
|
||||
@ObservationIgnored private var ctx = Ctx()
|
||||
@ObservationIgnored private var sink: RowList?
|
||||
@ObservationIgnored private var stream: Row?
|
||||
@@ -460,6 +462,9 @@ final class TranscriptBuilder {
|
||||
let snap = try! decodePayload(ev.payload, as: Snapshot.self)
|
||||
let row = Row(.snapshot(snap), taskId: taskId)
|
||||
ctx.reviewButtons[snap.n] = row
|
||||
if snap.trigger != .answer && sink == nil {
|
||||
lastReady = nil
|
||||
}
|
||||
put(row)
|
||||
continue
|
||||
}
|
||||
@@ -540,6 +545,9 @@ final class TranscriptBuilder {
|
||||
if ev.kind == "task.merge_after_review" && sink == nil {
|
||||
lastMergeAfterReview = row.id
|
||||
}
|
||||
if ev.kind == "task.ready" && sink == nil {
|
||||
lastReady = row.id
|
||||
}
|
||||
put(row, keepHeld: ev.kind == "agent.thinking")
|
||||
}
|
||||
return contextChanged
|
||||
@@ -744,6 +752,9 @@ final class TranscriptBuilder {
|
||||
case "task.summary":
|
||||
return note([.text("\(ev.actor) set the task summary")])
|
||||
|
||||
case "task.ready":
|
||||
return Row(.ready(when: when, md: parseMarkdown(jsString(p["overview"]))), taskId: taskId)
|
||||
|
||||
case "task.discard_started":
|
||||
return note([.text("\(ev.actor) asked to discard the task; the agent writes the task summary first")])
|
||||
|
||||
|
||||
Reference in New Issue
Block a user