Track parent turns for nested Codex requests (#35835)

## What changed

- Propagate the initiating turn ID through agent spawns, follow-up tasks, reviews, and delegated Codex sessions.
- Add `parent_turn_id` to Responses client and turn metadata while keeping it out of external MCP metadata.
- Preserve parent-turn provenance across queued agent messages when their triggering parent is unambiguous.

## Testing

- Cover spawned, resumed, nested, reviewed, delegated, and WebSocket request metadata.
- Verify queued messages do not claim ambiguous or queue-only parent turns.

GitOrigin-RevId: 481fdebbe7df2031880fe259509273cce50b20a8
This commit is contained in:
Eddie Chen authored and copyberry committed 2026-07-28 21:58:33 +00:00
1 parent 12b3e88028
commit 1def0a8925
34 files changed
+635 -165

No files matched your search

@@ -119,6 +119,7 @@ pub async fn run_codex_tool_session(
},
client_user_message_id: None,
trace: None,
parent_turn_id: None,
};
if let Err(e) = thread.submit_with_id(submission).await {
@@ -560,6 +560,7 @@ impl MessageProcessor {
op: codex_protocol::protocol::Op::Interrupt,
client_user_message_id: None,
trace: None,
parent_turn_id: None,
})
.await
{