Support Codex subagent transcripts
This commit is contained in:
1 parent
7d9df5d572
commit
83b113ef0f
6 files changed
+557
-38
No files matched your search
@@ -270,6 +270,17 @@ also makes adoption safe: if a backend restart falls between the deltas and the
|
||||
completion, the correction is still meaningful without process-local memory
|
||||
of which item ids streamed.
|
||||
|
||||
**Codex subagents share that one app-server process** (2026-09-13). Every
|
||||
thread in the session tree is multiplexed onto its stdout and identified by
|
||||
the notification's `threadId`. `collabAgentToolCall` carries the spawn prompt;
|
||||
`subAgentActivity` carries the child thread id, path and lifecycle. The driver
|
||||
uses that child thread id as the existing `Subagents` registry key, routes the
|
||||
child's ordinary items through a separate translator into its own transcript,
|
||||
and keeps only the root thread's process state in `CodexDriver`. A child turn
|
||||
ending does not finish the child: `completed` or `interrupted` activity does.
|
||||
An `agentMessage` marked `delivery: async` is a peer message delivered to a
|
||||
thread, never that thread's own assistant reply.
|
||||
|
||||
### The llama driver
|
||||
|
||||
One `llama-server` per session, started through the same `Transport` as any
|
||||
@@ -877,13 +888,12 @@ session, which is what auto-resume needs.
|
||||
model, with no process and no controls of its own.** Full design and wire
|
||||
shape in `SUBAGENTS.md`, kept separate because the app half is being built
|
||||
against it in parallel and it is the shared contract between the two. The
|
||||
one-paragraph reason: a session's Task-tool helpers already speak the common
|
||||
event model on the parent's own stdout (each line carrying
|
||||
`parent_tool_use_id`), so giving each one its own small transcript — same
|
||||
file format, same paging routes, same SSE stream, reused by addressing rather
|
||||
than by copying — costs a routing step in the translator and a registry
|
||||
(`session/subagent.rs`) rather than a second session type with a driver, a
|
||||
process and a config entry it does not need.
|
||||
one-paragraph reason: Claude's Task helpers and Codex's collaboration threads
|
||||
already speak their parent's event stream with a child identifier, so giving
|
||||
each one its own small transcript — same file format, same paging routes, same
|
||||
SSE stream, reused by addressing rather than by copying — costs a routing step
|
||||
in the translator and a registry (`session/subagent.rs`) rather than a second
|
||||
session type with a driver, a process and a config entry it does not need.
|
||||
|
||||
### HTTP surface
|
||||
|
||||
|
||||
Reference in new issue
Block a user