Start a new task from a closed task

This commit is contained in:
Ian Gulliver
2026-10-22 09:05:24 -07:00
parent 88c0199845
commit fedd4ad673
13 changed files with 589 additions and 365 deletions
+13 -2
View File
@@ -536,11 +536,16 @@ final class TranscriptBuilder {
continue
}
if ev.kind == "task.forked", let fork = str(p, "fork") {
if let row = ctx.snapshots[snapKey(int(p, "forked_at") ?? 0)] {
let at = int(p, "forked_at") ?? 0
if at == 0 {
put(Row(.note(Note(parts: [.text("\(ev.actor) continued this task as "), .task(fork)], when: ev.createdAt)), taskId: rowTask))
continue
}
if let row = ctx.snapshots[snapKey(at)] {
row.forks.append(fork)
continue
}
put(Row(.note(Note(parts: [.text("\(ev.actor) forked snapshot #\(jsString(p["forked_at"])) as "), .task(fork)], when: ev.createdAt)), taskId: rowTask))
put(Row(.note(Note(parts: [.text("\(ev.actor) forked snapshot #\(at) as "), .task(fork)], when: ev.createdAt)), taskId: rowTask))
continue
}
if ev.kind == "review.started" || ev.kind == "review.finished" || ev.kind == "review.finding" {
@@ -913,6 +918,12 @@ final class TranscriptBuilder {
return note([.text("\(jsString(p["error"])) (\(jsString(p["vendor"])) \(limit["rateLimitType"].map { jsString($0) } ?? "") limit resets \(resets))")], .error)
case "task.created":
if let from = str(p, "forked_from"), p["forked_at"] == nil {
if let task = rowTask, task != taskId {
return note([.text("\(ev.actor) continued "), .task(from), .text(" as "), .task(task), .text(" here")])
}
return note([.text("\(ev.actor) continued "), .task(from), .text(" here in a new task, started from main; everything above happened in that task, and its agent continues that conversation")])
}
if let from = str(p, "forked_from"), let task = rowTask, task != taskId {
return note([.text("\(ev.actor) forked "), .task(task), .text(" here from "), .task(from), .text(" at snapshot #\(jsString(p["forked_at"]))")])
}