From cfc946f4e1d7ebf86e02fefa0c53182d444075f4 Mon Sep 17 00:00:00 2001 From: Eddie Chen <173840017+eddie-openai@users.noreply.github.com> Date: Tue, 6 Oct 2026 16:46:03 +0000 Subject: [PATCH] Expose and persist turn lineage across the app server (#51415) ## Why Clients starting delegated work need to attribute descendant turns to the original turn and retain that attribution through completion and history reads. ## What changed - Accept optional `parentTurnId` and `rootTurnId` in `turn/start`, and expose `rootTurnId` on returned turns and lifecycle notifications. - Default new turns to their own root when none is supplied. Preserve the active turn's root when steering, ignoring incoming lineage fields. - Carry root IDs through completion, interruption, recovery, and fork boundaries, and persist them for paginated history reads. Leave unknown roots null in older history. - Update protocol schemas and generated TypeScript and Python bindings. ## Testing Extend coverage for default and explicit roots, steering without changing lineage, interrupted and recovered turns, history reads after restart in both history modes, nested fork pagination, and compatibility with older database writers. GitOrigin-RevId: f1a570a12bd11742929fd2e8b017e5d35aa07dcb --- codex-rs/analytics/src/client.rs | 2 + codex-rs/analytics/src/client_tests.rs | 1 + codex-rs/analytics/src/tests/support.rs | 3 + codex-rs/app-server-client/src/lib.rs | 1 + .../schema/json/ClientRequest.json | 14 ++++ .../schema/json/ServerNotification.json | 7 ++ .../codex_app_server_protocol.schemas.json | 21 ++++++ .../codex_app_server_protocol.v2.schemas.json | 21 ++++++ .../schema/json/v2/ReviewStartResponse.json | 7 ++ .../schema/json/v2/ThreadForkResponse.json | 7 ++ .../schema/json/v2/ThreadListResponse.json | 7 ++ .../json/v2/ThreadMetadataUpdateResponse.json | 7 ++ .../schema/json/v2/ThreadReadResponse.json | 7 ++ .../schema/json/v2/ThreadResumeResponse.json | 7 ++ .../schema/json/v2/ThreadRevertResponse.json | 7 ++ .../schema/json/v2/ThreadStartResponse.json | 7 ++ .../json/v2/ThreadStartedNotification.json | 7 ++ .../json/v2/ThreadTurnsListResponse.json | 7 ++ .../json/v2/ThreadUnarchiveResponse.json | 7 ++ .../json/v2/TurnCompletedNotification.json | 7 ++ .../schema/json/v2/TurnStartParams.json | 14 ++++ .../schema/json/v2/TurnStartResponse.json | 7 ++ .../json/v2/TurnStartedNotification.json | 7 ++ .../app-server-exports-experimental.json.zst | Bin 162360 -> 162703 bytes .../app-server-exports-stable.json.zst | Bin 158318 -> 158579 bytes .../schema/typescript/v2/Turn.ts | 6 ++ .../schema/typescript/v2/TurnStartParams.ts | 17 ++++- .../src/protocol/common.rs | 1 + .../src/protocol/thread_history.rs | 55 ++++++++++++++- .../src/protocol/thread_history_projection.rs | 4 +- .../thread_history_projection_tests.rs | 8 ++- .../src/protocol/v2/tests.rs | 2 + .../src/protocol/v2/thread_data.rs | 4 ++ .../src/protocol/v2/turn.rs | 15 ++++ .../app-server/src/bespoke_event_handling.rs | 13 +++- codex-rs/app-server/src/in_process.rs | 1 + .../src/message_processor_tracing_tests.rs | 2 + .../request_processors/daemon_continuation.rs | 1 + .../request_processors/thread_processor.rs | 1 + .../thread_processor_tests.rs | 1 + .../thread_queue_processor.rs | 8 ++- .../thread_resume_redaction.rs | 1 + .../src/request_processors/turn_processor.rs | 18 +++-- .../app-server/tests/suite/v2/thread_fork.rs | 5 +- .../app-server/tests/suite/v2/thread_queue.rs | 4 ++ .../app-server/tests/suite/v2/thread_read.rs | 44 ++++++++++-- .../tests/suite/v2/thread_resume.rs | 1 + .../tests/suite/v2/thread_timeline.rs | 1 + .../app-server/tests/suite/v2/turn_start.rs | 31 ++++++-- codex-rs/core/src/agent/control.rs | 2 +- .../core/src/agent/control/residency_tests.rs | 2 + codex-rs/core/src/agent/control_tests.rs | 4 ++ codex-rs/core/src/codex_delegate_tests.rs | 1 + codex-rs/core/src/codex_thread.rs | 24 +++++-- .../core/src/guardian/review_session_tests.rs | 9 ++- codex-rs/core/src/guardian/tests.rs | 1 + .../realtime_conversation/transcript_tail.rs | 1 + codex-rs/core/src/realtime_history_tests.rs | 2 + codex-rs/core/src/session/mod.rs | 7 +- .../session/rollout_reconstruction_tests.rs | 24 +++++++ codex-rs/core/src/session/tests.rs | 4 ++ codex-rs/core/src/session/turn_context.rs | 7 ++ codex-rs/core/src/session/turn_input.rs | 34 ++++++--- codex-rs/core/src/session/turn_input_tests.rs | 2 + codex-rs/core/src/tasks/mod.rs | 3 + codex-rs/core/src/tasks/mod_tests.rs | 16 ++++- codex-rs/core/src/thread_manager.rs | 12 +++- codex-rs/core/src/thread_manager_tests.rs | 20 ++++++ .../src/thread_rollout_truncation_tests.rs | 1 + .../src/tools/handlers/multi_agents_tests.rs | 4 ++ codex-rs/core/tests/suite/abort_tasks.rs | 5 +- codex-rs/core/tests/suite/compact.rs | 2 +- .../core/tests/suite/cyber_access_program.rs | 6 +- codex-rs/core/tests/suite/git_enrichment.rs | 2 +- .../core/tests/suite/mcp_auth_elicitation.rs | 2 +- codex-rs/core/tests/suite/pending_input.rs | 6 +- .../tests/suite/pending_input_persistence.rs | 7 +- .../core/tests/suite/realtime_conversation.rs | 10 ++- .../tests/suite/reasoning_effort_override.rs | 7 +- codex-rs/core/tests/suite/remote_env.rs | 2 +- .../tests/suite/remote_env_spawn_tests.rs | 2 +- codex-rs/core/tests/suite/resume_warning.rs | 1 + codex-rs/core/tests/suite/settings_commits.rs | 4 +- .../core/tests/suite/settings_constraints.rs | 2 +- .../skills_extension/yielded_skill_tests.rs | 10 ++- .../core/tests/suite/turn_input_submission.rs | 66 +++++++++++++----- codex-rs/core/tests/suite/turn_phase_trace.rs | 2 + ...event_processor_with_human_output_tests.rs | 5 ++ ...event_processor_with_jsonl_output_tests.rs | 1 + codex-rs/exec/src/lib.rs | 2 + codex-rs/exec/src/lib_tests.rs | 3 + .../tests/event_processor_with_json_output.rs | 11 +++ codex-rs/ext/agent/src/lib.rs | 2 +- codex-rs/ext/goal/src/runtime.rs | 2 +- .../ext/guardian-reviewer/src/execution.rs | 2 +- codex-rs/ext/queue/tests/queue_service.rs | 2 +- .../src/sessions/export.rs | 1 + codex-rs/protocol/src/protocol.rs | 15 +++- codex-rs/protocol/src/turn_input.rs | 18 +++-- .../rollout/src/persistence_metrics_tests.rs | 2 + codex-rs/state/src/migrations_tests.rs | 29 ++++++-- .../0008_thread_turn_root.sql | 1 + codex-rs/thread-store/src/local/mod.rs | 1 + .../src/local/model_context_tests.rs | 1 + .../src/local/revert_thread_tests.rs | 1 + .../local/rollout_migration/canonicalizer.rs | 1 + .../src/local/rollout_migration_tests.rs | 1 + .../thread-store/src/local/thread_history.rs | 5 +- .../src/local/thread_history/read.rs | 3 + .../src/local/thread_history/read_tests.rs | 30 ++++++++ .../local/thread_history/segment_paging.rs | 31 +++----- .../thread_history_materialization_tests.rs | 28 ++++++-- codex-rs/thread-store/src/types.rs | 2 + codex-rs/tui/src/app/activity_groups_tests.rs | 1 + codex-rs/tui/src/app/agents_overview_tests.rs | 1 + codex-rs/tui/src/app/composer_hints_tests.rs | 1 + .../tui/src/app/history_completion_tests.rs | 1 + .../tui/src/app/history_pagination_tests.rs | 1 + .../src/app/owned_transcript_follow_tests.rs | 1 + .../src/app/owned_transcript_input_tests.rs | 2 + .../tui/src/app/owned_transcript_tests.rs | 1 + .../tui/src/app/pending_interactive_replay.rs | 1 + codex-rs/tui/src/app/recap_tests.rs | 1 + .../tui/src/app/safety_buffering_tests.rs | 1 + codex-rs/tui/src/app/tests.rs | 4 ++ codex-rs/tui/src/app/tests/buffered_replay.rs | 3 + .../src/app/tests/history_hydration_tests.rs | 1 + .../app/tests/pagination_completion_tests.rs | 1 + .../tui/src/app/tests/realtime_requests.rs | 8 +++ .../tui/src/app/thread_event_buffer_tests.rs | 1 + codex-rs/tui/src/app/thread_events.rs | 1 + codex-rs/tui/src/app/thread_title_tests.rs | 1 + .../tui/src/app/transcript_export_tests.rs | 1 + codex-rs/tui/src/app_backtrack.rs | 1 + codex-rs/tui/src/app_server_session.rs | 3 + codex-rs/tui/src/chatwidget/realtime_tests.rs | 1 + .../realtime_tests/caption_replay.rs | 2 + codex-rs/tui/src/chatwidget/replay.rs | 2 + .../tui/src/chatwidget/tests/app_server.rs | 9 +++ codex-rs/tui/src/chatwidget/tests/helpers.rs | 1 + .../src/chatwidget/tests/history_replay.rs | 3 + .../tui/src/chatwidget/tests/plan_mode.rs | 4 ++ .../tui/src/chatwidget/tests/review_mode.rs | 2 + .../tui/src/chatwidget/thread_usage_tests.rs | 1 + codex-rs/tui/src/resume_picker.rs | 3 + .../src/temporary_structured_request_tests.rs | 1 + .../computer_groups_tests.rs | 1 + .../src/transcript_view/mutations_tests.rs | 1 + .../src/openai_codex/generated/v2_all.py | 21 ++++++ 149 files changed, 896 insertions(+), 135 deletions(-) create mode 100644 codex-rs/state/thread_history_migrations/0008_thread_turn_root.sql diff --git a/codex-rs/analytics/src/client.rs b/codex-rs/analytics/src/client.rs index ef310acf2c..c6a2f195f7 100644 --- a/codex-rs/analytics/src/client.rs +++ b/codex-rs/analytics/src/client.rs @@ -862,6 +862,7 @@ fn session_event_to_analytics_notification( thread_id: thread_id.to_string(), turn: Turn { started_at: started.started_at, + root_turn_id: started.root_turn_id.clone(), ..analytics_turn(&started.turn_id, TurnStatus::InProgress) }, }) @@ -920,6 +921,7 @@ fn session_event_to_analytics_notification( fn analytics_turn(turn_id: &str, status: TurnStatus) -> Turn { Turn { id: turn_id.to_string(), + root_turn_id: None, items: Vec::new(), items_view: TurnItemsView::NotLoaded, status, diff --git a/codex-rs/analytics/src/client_tests.rs b/codex-rs/analytics/src/client_tests.rs index 79f8a28697..55f53efe24 100644 --- a/codex-rs/analytics/src/client_tests.rs +++ b/codex-rs/analytics/src/client_tests.rs @@ -721,6 +721,7 @@ fn sample_turn_start_response() -> ClientResponsePayload { ClientResponsePayload::TurnStart(TurnStartResponse { turn: Turn { id: "turn-1".to_string(), + root_turn_id: None, items_view: codex_app_server_protocol::TurnItemsView::Full, items: Vec::new(), status: AppServerTurnStatus::InProgress, diff --git a/codex-rs/analytics/src/tests/support.rs b/codex-rs/analytics/src/tests/support.rs index 634f516ea5..e32fe28aca 100644 --- a/codex-rs/analytics/src/tests/support.rs +++ b/codex-rs/analytics/src/tests/support.rs @@ -265,6 +265,7 @@ pub(super) fn sample_turn_start_response(turn_id: &str) -> ClientResponsePayload ClientResponsePayload::TurnStart(codex_app_server_protocol::TurnStartResponse { turn: Turn { id: turn_id.to_string(), + root_turn_id: None, items_view: codex_app_server_protocol::TurnItemsView::Full, items: vec![], status: AppServerTurnStatus::InProgress, @@ -284,6 +285,7 @@ pub(super) fn sample_turn_started_notification( thread_id: thread_id.to_string(), turn: Turn { id: turn_id.to_string(), + root_turn_id: None, items_view: codex_app_server_protocol::TurnItemsView::Full, items: vec![], status: AppServerTurnStatus::InProgress, @@ -321,6 +323,7 @@ pub(super) fn sample_turn_completed_notification( thread_id: thread_id.to_string(), turn: Turn { id: turn_id.to_string(), + root_turn_id: None, items_view: codex_app_server_protocol::TurnItemsView::Full, items: vec![], status, diff --git a/codex-rs/app-server-client/src/lib.rs b/codex-rs/app-server-client/src/lib.rs index 079d1bd2ca..df5dc3e99f 100644 --- a/codex-rs/app-server-client/src/lib.rs +++ b/codex-rs/app-server-client/src/lib.rs @@ -1082,6 +1082,7 @@ mod tests { thread_id: "thread".to_string(), turn: codex_app_server_protocol::Turn { id: "turn".to_string(), + root_turn_id: None, items_view: codex_app_server_protocol::TurnItemsView::Full, items: Vec::new(), status: codex_app_server_protocol::TurnStatus::Completed, diff --git a/codex-rs/app-server-protocol/schema/json/ClientRequest.json b/codex-rs/app-server-protocol/schema/json/ClientRequest.json index 8c530ac641..00752e35cd 100644 --- a/codex-rs/app-server-protocol/schema/json/ClientRequest.json +++ b/codex-rs/app-server-protocol/schema/json/ClientRequest.json @@ -5736,6 +5736,13 @@ "outputSchema": { "description": "Optional JSON Schema used to constrain the final assistant message for this turn." }, + "parentTurnId": { + "description": "ID of the turn that caused this new turn to start.\n\nSet this when starting work on behalf of another turn, such as delegated work in a different thread. Leave unset for work started directly by the user. Ignored when this request adds input to an active turn.", + "type": [ + "string", + "null" + ] + }, "personality": { "anyOf": [ { @@ -5747,6 +5754,13 @@ ], "description": "@deprecated `friendly` and `pragmatic` no longer select a style. Changing this does not rewrite the thread's existing instructions." }, + "rootTurnId": { + "description": "ID of the first turn in the chain of work that led to this new turn.\n\nWhen setting `parentTurnId`, set this to the parent turn's `rootTurnId` when known. This keeps descendant work attributed to the original turn. If omitted, the new turn becomes its own root. Ignored when this request adds input to an active turn.", + "type": [ + "string", + "null" + ] + }, "sandboxPolicy": { "anyOf": [ { diff --git a/codex-rs/app-server-protocol/schema/json/ServerNotification.json b/codex-rs/app-server-protocol/schema/json/ServerNotification.json index b48ed37529..b57a1ca471 100644 --- a/codex-rs/app-server-protocol/schema/json/ServerNotification.json +++ b/codex-rs/app-server-protocol/schema/json/ServerNotification.json @@ -6403,6 +6403,13 @@ "default": "full", "description": "Describes how much of `items` has been loaded for this turn." }, + "rootTurnId": { + "description": "ID of the first turn in the chain of work that led to this turn. Pass this as `rootTurnId` when starting work on behalf of this turn. May be null in older history or a `review/start` response.", + "type": [ + "string", + "null" + ] + }, "startedAt": { "description": "Unix timestamp (in seconds) when the turn started.", "format": "int64", diff --git a/codex-rs/app-server-protocol/schema/json/codex_app_server_protocol.schemas.json b/codex-rs/app-server-protocol/schema/json/codex_app_server_protocol.schemas.json index 0525c96a99..6260a20dfd 100644 --- a/codex-rs/app-server-protocol/schema/json/codex_app_server_protocol.schemas.json +++ b/codex-rs/app-server-protocol/schema/json/codex_app_server_protocol.schemas.json @@ -25604,6 +25604,13 @@ "default": "full", "description": "Describes how much of `items` has been loaded for this turn." }, + "rootTurnId": { + "description": "ID of the first turn in the chain of work that led to this turn. Pass this as `rootTurnId` when starting work on behalf of this turn. May be null in older history or a `review/start` response.", + "type": [ + "string", + "null" + ] + }, "startedAt": { "description": "Unix timestamp (in seconds) when the turn started.", "format": "int64", @@ -25921,6 +25928,13 @@ "outputSchema": { "description": "Optional JSON Schema used to constrain the final assistant message for this turn." }, + "parentTurnId": { + "description": "ID of the turn that caused this new turn to start.\n\nSet this when starting work on behalf of another turn, such as delegated work in a different thread. Leave unset for work started directly by the user. Ignored when this request adds input to an active turn.", + "type": [ + "string", + "null" + ] + }, "personality": { "anyOf": [ { @@ -25932,6 +25946,13 @@ ], "description": "@deprecated `friendly` and `pragmatic` no longer select a style. Changing this does not rewrite the thread's existing instructions." }, + "rootTurnId": { + "description": "ID of the first turn in the chain of work that led to this new turn.\n\nWhen setting `parentTurnId`, set this to the parent turn's `rootTurnId` when known. This keeps descendant work attributed to the original turn. If omitted, the new turn becomes its own root. Ignored when this request adds input to an active turn.", + "type": [ + "string", + "null" + ] + }, "sandboxPolicy": { "anyOf": [ { diff --git a/codex-rs/app-server-protocol/schema/json/codex_app_server_protocol.v2.schemas.json b/codex-rs/app-server-protocol/schema/json/codex_app_server_protocol.v2.schemas.json index 6a6e3dad5d..637d715a00 100644 --- a/codex-rs/app-server-protocol/schema/json/codex_app_server_protocol.v2.schemas.json +++ b/codex-rs/app-server-protocol/schema/json/codex_app_server_protocol.v2.schemas.json @@ -23318,6 +23318,13 @@ "default": "full", "description": "Describes how much of `items` has been loaded for this turn." }, + "rootTurnId": { + "description": "ID of the first turn in the chain of work that led to this turn. Pass this as `rootTurnId` when starting work on behalf of this turn. May be null in older history or a `review/start` response.", + "type": [ + "string", + "null" + ] + }, "startedAt": { "description": "Unix timestamp (in seconds) when the turn started.", "format": "int64", @@ -23635,6 +23642,13 @@ "outputSchema": { "description": "Optional JSON Schema used to constrain the final assistant message for this turn." }, + "parentTurnId": { + "description": "ID of the turn that caused this new turn to start.\n\nSet this when starting work on behalf of another turn, such as delegated work in a different thread. Leave unset for work started directly by the user. Ignored when this request adds input to an active turn.", + "type": [ + "string", + "null" + ] + }, "personality": { "anyOf": [ { @@ -23646,6 +23660,13 @@ ], "description": "@deprecated `friendly` and `pragmatic` no longer select a style. Changing this does not rewrite the thread's existing instructions." }, + "rootTurnId": { + "description": "ID of the first turn in the chain of work that led to this new turn.\n\nWhen setting `parentTurnId`, set this to the parent turn's `rootTurnId` when known. This keeps descendant work attributed to the original turn. If omitted, the new turn becomes its own root. Ignored when this request adds input to an active turn.", + "type": [ + "string", + "null" + ] + }, "sandboxPolicy": { "anyOf": [ { diff --git a/codex-rs/app-server-protocol/schema/json/v2/ReviewStartResponse.json b/codex-rs/app-server-protocol/schema/json/v2/ReviewStartResponse.json index 928e56e572..3934100532 100644 --- a/codex-rs/app-server-protocol/schema/json/v2/ReviewStartResponse.json +++ b/codex-rs/app-server-protocol/schema/json/v2/ReviewStartResponse.json @@ -1888,6 +1888,13 @@ "default": "full", "description": "Describes how much of `items` has been loaded for this turn." }, + "rootTurnId": { + "description": "ID of the first turn in the chain of work that led to this turn. Pass this as `rootTurnId` when starting work on behalf of this turn. May be null in older history or a `review/start` response.", + "type": [ + "string", + "null" + ] + }, "startedAt": { "description": "Unix timestamp (in seconds) when the turn started.", "format": "int64", diff --git a/codex-rs/app-server-protocol/schema/json/v2/ThreadForkResponse.json b/codex-rs/app-server-protocol/schema/json/v2/ThreadForkResponse.json index 9e1b212d6a..116c703cc2 100644 --- a/codex-rs/app-server-protocol/schema/json/v2/ThreadForkResponse.json +++ b/codex-rs/app-server-protocol/schema/json/v2/ThreadForkResponse.json @@ -2628,6 +2628,13 @@ "default": "full", "description": "Describes how much of `items` has been loaded for this turn." }, + "rootTurnId": { + "description": "ID of the first turn in the chain of work that led to this turn. Pass this as `rootTurnId` when starting work on behalf of this turn. May be null in older history or a `review/start` response.", + "type": [ + "string", + "null" + ] + }, "startedAt": { "description": "Unix timestamp (in seconds) when the turn started.", "format": "int64", diff --git a/codex-rs/app-server-protocol/schema/json/v2/ThreadListResponse.json b/codex-rs/app-server-protocol/schema/json/v2/ThreadListResponse.json index 70bf0d107f..03f1aa2c97 100644 --- a/codex-rs/app-server-protocol/schema/json/v2/ThreadListResponse.json +++ b/codex-rs/app-server-protocol/schema/json/v2/ThreadListResponse.json @@ -2419,6 +2419,13 @@ "default": "full", "description": "Describes how much of `items` has been loaded for this turn." }, + "rootTurnId": { + "description": "ID of the first turn in the chain of work that led to this turn. Pass this as `rootTurnId` when starting work on behalf of this turn. May be null in older history or a `review/start` response.", + "type": [ + "string", + "null" + ] + }, "startedAt": { "description": "Unix timestamp (in seconds) when the turn started.", "format": "int64", diff --git a/codex-rs/app-server-protocol/schema/json/v2/ThreadMetadataUpdateResponse.json b/codex-rs/app-server-protocol/schema/json/v2/ThreadMetadataUpdateResponse.json index d90c52e1e4..44cdf7f557 100644 --- a/codex-rs/app-server-protocol/schema/json/v2/ThreadMetadataUpdateResponse.json +++ b/codex-rs/app-server-protocol/schema/json/v2/ThreadMetadataUpdateResponse.json @@ -2419,6 +2419,13 @@ "default": "full", "description": "Describes how much of `items` has been loaded for this turn." }, + "rootTurnId": { + "description": "ID of the first turn in the chain of work that led to this turn. Pass this as `rootTurnId` when starting work on behalf of this turn. May be null in older history or a `review/start` response.", + "type": [ + "string", + "null" + ] + }, "startedAt": { "description": "Unix timestamp (in seconds) when the turn started.", "format": "int64", diff --git a/codex-rs/app-server-protocol/schema/json/v2/ThreadReadResponse.json b/codex-rs/app-server-protocol/schema/json/v2/ThreadReadResponse.json index d86656672e..e20bfa1c75 100644 --- a/codex-rs/app-server-protocol/schema/json/v2/ThreadReadResponse.json +++ b/codex-rs/app-server-protocol/schema/json/v2/ThreadReadResponse.json @@ -2419,6 +2419,13 @@ "default": "full", "description": "Describes how much of `items` has been loaded for this turn." }, + "rootTurnId": { + "description": "ID of the first turn in the chain of work that led to this turn. Pass this as `rootTurnId` when starting work on behalf of this turn. May be null in older history or a `review/start` response.", + "type": [ + "string", + "null" + ] + }, "startedAt": { "description": "Unix timestamp (in seconds) when the turn started.", "format": "int64", diff --git a/codex-rs/app-server-protocol/schema/json/v2/ThreadResumeResponse.json b/codex-rs/app-server-protocol/schema/json/v2/ThreadResumeResponse.json index 5a8248c1d8..9c03d89695 100644 --- a/codex-rs/app-server-protocol/schema/json/v2/ThreadResumeResponse.json +++ b/codex-rs/app-server-protocol/schema/json/v2/ThreadResumeResponse.json @@ -2680,6 +2680,13 @@ "default": "full", "description": "Describes how much of `items` has been loaded for this turn." }, + "rootTurnId": { + "description": "ID of the first turn in the chain of work that led to this turn. Pass this as `rootTurnId` when starting work on behalf of this turn. May be null in older history or a `review/start` response.", + "type": [ + "string", + "null" + ] + }, "startedAt": { "description": "Unix timestamp (in seconds) when the turn started.", "format": "int64", diff --git a/codex-rs/app-server-protocol/schema/json/v2/ThreadRevertResponse.json b/codex-rs/app-server-protocol/schema/json/v2/ThreadRevertResponse.json index 1639c808ee..f51ce46103 100644 --- a/codex-rs/app-server-protocol/schema/json/v2/ThreadRevertResponse.json +++ b/codex-rs/app-server-protocol/schema/json/v2/ThreadRevertResponse.json @@ -2419,6 +2419,13 @@ "default": "full", "description": "Describes how much of `items` has been loaded for this turn." }, + "rootTurnId": { + "description": "ID of the first turn in the chain of work that led to this turn. Pass this as `rootTurnId` when starting work on behalf of this turn. May be null in older history or a `review/start` response.", + "type": [ + "string", + "null" + ] + }, "startedAt": { "description": "Unix timestamp (in seconds) when the turn started.", "format": "int64", diff --git a/codex-rs/app-server-protocol/schema/json/v2/ThreadStartResponse.json b/codex-rs/app-server-protocol/schema/json/v2/ThreadStartResponse.json index 5f8b018216..ed56fcde2a 100644 --- a/codex-rs/app-server-protocol/schema/json/v2/ThreadStartResponse.json +++ b/codex-rs/app-server-protocol/schema/json/v2/ThreadStartResponse.json @@ -2628,6 +2628,13 @@ "default": "full", "description": "Describes how much of `items` has been loaded for this turn." }, + "rootTurnId": { + "description": "ID of the first turn in the chain of work that led to this turn. Pass this as `rootTurnId` when starting work on behalf of this turn. May be null in older history or a `review/start` response.", + "type": [ + "string", + "null" + ] + }, "startedAt": { "description": "Unix timestamp (in seconds) when the turn started.", "format": "int64", diff --git a/codex-rs/app-server-protocol/schema/json/v2/ThreadStartedNotification.json b/codex-rs/app-server-protocol/schema/json/v2/ThreadStartedNotification.json index 1195bf7602..58d032d99c 100644 --- a/codex-rs/app-server-protocol/schema/json/v2/ThreadStartedNotification.json +++ b/codex-rs/app-server-protocol/schema/json/v2/ThreadStartedNotification.json @@ -2419,6 +2419,13 @@ "default": "full", "description": "Describes how much of `items` has been loaded for this turn." }, + "rootTurnId": { + "description": "ID of the first turn in the chain of work that led to this turn. Pass this as `rootTurnId` when starting work on behalf of this turn. May be null in older history or a `review/start` response.", + "type": [ + "string", + "null" + ] + }, "startedAt": { "description": "Unix timestamp (in seconds) when the turn started.", "format": "int64", diff --git a/codex-rs/app-server-protocol/schema/json/v2/ThreadTurnsListResponse.json b/codex-rs/app-server-protocol/schema/json/v2/ThreadTurnsListResponse.json index 1b885d1b6d..8e5a334fb1 100644 --- a/codex-rs/app-server-protocol/schema/json/v2/ThreadTurnsListResponse.json +++ b/codex-rs/app-server-protocol/schema/json/v2/ThreadTurnsListResponse.json @@ -1888,6 +1888,13 @@ "default": "full", "description": "Describes how much of `items` has been loaded for this turn." }, + "rootTurnId": { + "description": "ID of the first turn in the chain of work that led to this turn. Pass this as `rootTurnId` when starting work on behalf of this turn. May be null in older history or a `review/start` response.", + "type": [ + "string", + "null" + ] + }, "startedAt": { "description": "Unix timestamp (in seconds) when the turn started.", "format": "int64", diff --git a/codex-rs/app-server-protocol/schema/json/v2/ThreadUnarchiveResponse.json b/codex-rs/app-server-protocol/schema/json/v2/ThreadUnarchiveResponse.json index 2fd357b835..de9b859959 100644 --- a/codex-rs/app-server-protocol/schema/json/v2/ThreadUnarchiveResponse.json +++ b/codex-rs/app-server-protocol/schema/json/v2/ThreadUnarchiveResponse.json @@ -2419,6 +2419,13 @@ "default": "full", "description": "Describes how much of `items` has been loaded for this turn." }, + "rootTurnId": { + "description": "ID of the first turn in the chain of work that led to this turn. Pass this as `rootTurnId` when starting work on behalf of this turn. May be null in older history or a `review/start` response.", + "type": [ + "string", + "null" + ] + }, "startedAt": { "description": "Unix timestamp (in seconds) when the turn started.", "format": "int64", diff --git a/codex-rs/app-server-protocol/schema/json/v2/TurnCompletedNotification.json b/codex-rs/app-server-protocol/schema/json/v2/TurnCompletedNotification.json index 1d72c8cd2a..eb4ac85aa6 100644 --- a/codex-rs/app-server-protocol/schema/json/v2/TurnCompletedNotification.json +++ b/codex-rs/app-server-protocol/schema/json/v2/TurnCompletedNotification.json @@ -1888,6 +1888,13 @@ "default": "full", "description": "Describes how much of `items` has been loaded for this turn." }, + "rootTurnId": { + "description": "ID of the first turn in the chain of work that led to this turn. Pass this as `rootTurnId` when starting work on behalf of this turn. May be null in older history or a `review/start` response.", + "type": [ + "string", + "null" + ] + }, "startedAt": { "description": "Unix timestamp (in seconds) when the turn started.", "format": "int64", diff --git a/codex-rs/app-server-protocol/schema/json/v2/TurnStartParams.json b/codex-rs/app-server-protocol/schema/json/v2/TurnStartParams.json index 751bb8bc4e..ff77ccec85 100644 --- a/codex-rs/app-server-protocol/schema/json/v2/TurnStartParams.json +++ b/codex-rs/app-server-protocol/schema/json/v2/TurnStartParams.json @@ -819,6 +819,13 @@ "outputSchema": { "description": "Optional JSON Schema used to constrain the final assistant message for this turn." }, + "parentTurnId": { + "description": "ID of the turn that caused this new turn to start.\n\nSet this when starting work on behalf of another turn, such as delegated work in a different thread. Leave unset for work started directly by the user. Ignored when this request adds input to an active turn.", + "type": [ + "string", + "null" + ] + }, "personality": { "anyOf": [ { @@ -830,6 +837,13 @@ ], "description": "@deprecated `friendly` and `pragmatic` no longer select a style. Changing this does not rewrite the thread's existing instructions." }, + "rootTurnId": { + "description": "ID of the first turn in the chain of work that led to this new turn.\n\nWhen setting `parentTurnId`, set this to the parent turn's `rootTurnId` when known. This keeps descendant work attributed to the original turn. If omitted, the new turn becomes its own root. Ignored when this request adds input to an active turn.", + "type": [ + "string", + "null" + ] + }, "sandboxPolicy": { "anyOf": [ { diff --git a/codex-rs/app-server-protocol/schema/json/v2/TurnStartResponse.json b/codex-rs/app-server-protocol/schema/json/v2/TurnStartResponse.json index e99476202c..0d6620adfb 100644 --- a/codex-rs/app-server-protocol/schema/json/v2/TurnStartResponse.json +++ b/codex-rs/app-server-protocol/schema/json/v2/TurnStartResponse.json @@ -1888,6 +1888,13 @@ "default": "full", "description": "Describes how much of `items` has been loaded for this turn." }, + "rootTurnId": { + "description": "ID of the first turn in the chain of work that led to this turn. Pass this as `rootTurnId` when starting work on behalf of this turn. May be null in older history or a `review/start` response.", + "type": [ + "string", + "null" + ] + }, "startedAt": { "description": "Unix timestamp (in seconds) when the turn started.", "format": "int64", diff --git a/codex-rs/app-server-protocol/schema/json/v2/TurnStartedNotification.json b/codex-rs/app-server-protocol/schema/json/v2/TurnStartedNotification.json index 2a4b666554..ab6c2ea72c 100644 --- a/codex-rs/app-server-protocol/schema/json/v2/TurnStartedNotification.json +++ b/codex-rs/app-server-protocol/schema/json/v2/TurnStartedNotification.json @@ -1888,6 +1888,13 @@ "default": "full", "description": "Describes how much of `items` has been loaded for this turn." }, + "rootTurnId": { + "description": "ID of the first turn in the chain of work that led to this turn. Pass this as `rootTurnId` when starting work on behalf of this turn. May be null in older history or a `review/start` response.", + "type": [ + "string", + "null" + ] + }, "startedAt": { "description": "Unix timestamp (in seconds) when the turn started.", "format": "int64", diff --git a/codex-rs/app-server-protocol/schema/precomputed/app-server-exports-experimental.json.zst b/codex-rs/app-server-protocol/schema/precomputed/app-server-exports-experimental.json.zst index 44b7e44a47457243e925934d4a076b68fa2fc617..f568cd09ab9c725a860a583305de48280bde074b 100644 GIT binary patch delta 118135 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

WFt0>Lb3x2PECF`wE;M&3 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

S~JM|d; z*tjd(5Gq$kVt;A&XwuG3CCl6uw2k0u>fqi#26HMIQfid_8!G!lG$Ra8rZC8azcHz~ z9x+EIDoyk@M6J7s&V1>-*pXpzP0eyak-J$IAZM{##z5Q@5&lq%cSFl=0qGP+GW|6u zrLaMNbY}~H*`V}PTV?9tqyv{(LT7b}^uQrIDJin^({B71+oN-(7%EAq9(q$Gvx)B6 zj%w1AETcLKLI2{^6AdAr%jXZR2sfj3N#N;c%8EA+*OOG zswZoYJ1pu>YIszZ9F&n&Wr6+*3fQ4w-GA#ynZGR>MLWahON3Vs;_lZ72w&;@bzu0C z!j*VwZ$e?FV$!ek0x9au`7gL`3OBl75J3eA1$Pv-*V3`}TESbbVUrk4BLEmpMQ(vx zxbbrmKoC$M2yh4-f`|Y?5GDaakPsjULO>HB1RTVWkY&JBR?`6}=|M2x_^a~%D}S2a zuEW=IP2mUSZNE^kJQz0zo?hD0!Wudf;wFABnTp~@zzu8j=zeoBSN~pstrm9k+Q4Z{>?1{p+w+0&o zwJmlrT?PL_#f^1to_$Xd{2`m~6nrZlXy%@8O5(c)`mcz(Pf~8ip{G-OOVkb4a?&wJ zRCFUFa^(@MCvJ&A{sHIshAT^_To&bpopSe2$WAA8`BF)tc800Y&Vzk< zie@R`2`O9*h3k7!ebP`N)f<`KY!0u7% zk9)Trcd9FsOzSHEr2LprL!BwWzRQsA!`~5WmOPju;Kdb@Z48hjD6^;H%BVnjaBv?A2Axj zbOeyY_xGPcMSnvJ-(C)Vu4mU@JwXC(v4a8@U_kR_-Yqh;UWY$~KCM*aL*^jO^U(-^ zkqyQ0A}JdBH2+11rm8W4*pvP`2TRdH>=_nLMaO+9_JpH$up||vu_pzpdBNSm$xTRGK3&Qt_Ko8AP6W3a0ncN3?V=eB!NSa5F{*uAS8pZjEA^HHt8IfU(N^V-3v-N zYPYaGQ-3;!QVv1!3`$j_*oCEjMNu4lsnUPWnc&~mRoK-91uGR;J9WIS z6R1+oR>30{x@osC@5zN6Sd}dNpO#mn{_r()(ZE@#>v+Y}%iij}=yMa2HLP{+Tv9%) z7^yoKsaQ!w)(G5kPyp>j(u@-t81mNOvErhQI)6q8iaC&a8vym@z7#c|p7Q|wH<#`W zwcleq3g=Qw5$^=+xJRgF@YBS{$GJn`=So`7lye=doa=Z=KFgPLCtnmwu@b9pGUV1F z{koh0P+Qm;I@epGbA4@15)4>Bzb_RKWF+4NCfyCf&hUbp*fCEuTo;Pp5mAfZA9Q3zj|! zvzu(gWsNfwCxw8+9EnBHE;W#BYMn95o&-Kk9O7bB07$H|{|VoQuAGsWi+e4kQ+1Xz zYvUBh@OjW;7V`7g&zXP=GYT(md}X@q=ud$iIj2xTR0)0n`q8wYi$w0*?*ha z?oU@}kp$Nf9GcNaK-4{_)O5z!bncX#puuVb<_NFn`~k49E9%sj$c*F>lV?5Fb}cvVz9dEQ;2)?l-Es-V5Tt zU3WTzLuXfL4A-B-BL)J~N_*8x_ZwrA%U{mPu>!QL*`gdm=;Tte!6=jk(j{pVrsKa! zLISA+_7J5bC98UdbTPOru`ZV85soEn1>zYo^$^CansFY-mInO`TYuOu7=S@NczqVH zmw~kMUf>1cqhpZA5_Ihs1Ca){^ki*4Bd}7X)wjpPPntZ4@2qvBvpDxTteXh;295#H zqOt91M{Eq2jC$kW%-WeZnHEjxJ}?9u77p;6hpJA404yQk``T3yM!=iM_)26Cc($Qy z;M>eAM=aKHWCSTZz&Q@+XMTAt(4E9Rasqe_ z3FjUv$9qS4{$(NoEzEaQUV9@^tvBnk^Uo_kALcmE&k_-so6m<{9p9Bo@!=A#4j|)E zExLIxVi;B9Jz2@nDf zK~RK9OszN>4j|TOn5G%mbY@j~ZpH>XP_pVbX_5;ev@3vjdPSwC29-CpniXZ5-JvqQ z9+>@l!1EMy@8$H%uN+fi6|A6Lc@>lVm(XL@{udrM)St7aW$EjR3iHS{_`|XKUBK$qE z{HykW&v^!{_J|dPUe(t!W0Tt>JXRfyduL2ctJJc^qX$6bhP!`A*D;Rw`J9ph*=cl< zmn7PZ)dCpB5CN)P-{`ydq6i69?K)l?Txi1}|4j8wfdzJhoDlOJ9YGxA#N=gn`0P;E zAs3=J{g!lyx(@#c6QNgoQn2fXrZO(f2I5nDEc;x}Qw=Pi45;6aO-(#Of45>0sqYEr zd@Z3`rf(wpGlYM>C}U@P+U-S*Ezg!hN8%Y|WUW_3e+%=q**wdHtY9uWy&evY)m_e{9TL1u^^!x8s6cS5y>&`sr?LB zG?`qOyRTqfcK%2LL#qv|C{joe+x+@oD6s{!<@Ztr!wr97Rn$mn`b5ZH16r0}C4?Vk z>DRJTDc=`x)bV&Y$%>L7%RdXLaNrO~EhpprGm+n~4qx8IoVznVJ`7&~wj0&0hSxm| z67wwa5s(V6dMl_dQR+6*N)?2~Up3x~1KDj*IJ?!^YA%kAmK0d}uI1s2vc|xq$oftp z*ao}8TtR;v22hXBpK*_3R~SG&WK_Ntsz#9?Ej9!{exLmK{LCBv_$T0b;y?bmKsf9Q zl0F7KDC#pF)eXeko$|fF4^PZ5eKB3PuI@(WVo77X9!Q58kDPTa zaBjOeZzfu~iC`>gyt8qsu}?ki0$Rd#hMUEo#Ufab(Z;FrCpSs=Ig+-kjrH5cqs>sm zb`*b%?zyzWop?y3k{&U)1?It7<&am(~1aGGT_=8|}ljRtjtg00y0Ft*`3}vV(v1@p0&Mp%!qVDX3VE3d$uASDJ_p&t<~Aq750D#e|ia^3S2biwN1(P>(tx`==B;Y<~s z>1l6ub&h-~2yjU?DkXF0I42G*>V%F1g=Wdqp;@N3GV<3HR3QK`b9HS&XJ>&usNvHA zAp|1`15(Z)WC$TdVh<8PAP6J~ga{OZgkUCtLXaQ`0Z*VI2#r7usHiCEcww3%JU{(E z($yCLxpN9O4*SwD=%DYz%A+Auxk&{O5XmWIsJA(jP>6bW(&|k(Z2l zFDn#rBdP3FC_)h_nT%=YgAZ6hQd}PpuwYPMatQ7^Ys}{mAL2C`xUk7cAk8({W(0| zLAgg=UmC^pDhDaDE@ZD0o5$!PwS{QG^84sBL{n|DIuLzD!qB%@h5?1V1j2mdI~4Ax zbT;HwFuj`k7a}pkxQBIar5w^E2fkMlg(zCMmJ~|2q)2};tpX-Ra4;#t_c7^KCPjA4qzM1Q z{HdB0(blBMJw)#PO^Uy8QuJt~Roc`^p?aMZIi$t2J1H_?8HAe%!A%F7XSRMHd|fyg zltNXtxT_cl{BM7)8?aOb2vLe&Pa<7Z$Ba@SY?LC^)8?@IQHq6-Qjql}KvIgI*MPM- zRoIaY)DmX zOg~J;&~a|ZuwWEd>?_3;sbt81aP`9=1pFWe^?tad&}wm6{S;74U5TSM!<{}zzq$j^ zVjg&0J#m&+%yj9x>wd^-qokN&Ec1@mmzGuv0=!C}q~KQ@sbeQQ6)x{VebqvTFF9g; zfsd3yvMPT#ym+wGYi0?-jh0P94W&{6;`$A#3V4^BF10ZJsrl1H&HL}as#>Zm5kMRd zL2IT=<31J`-mpi)Dy|z8fx&(75n}v{Rgv>xzr3WhWA=d9E|3e2l@t(&YN6`6RHJFi zwFbkfO(=8T=``{?$d5p0DiW~zAsj)7VJlWeT~2?$NhgjOjVmn?07Hl^r@gSCm@ig; zLvcD`#YezCoVaHgt1>R~HKkl*Zmk%U_*$k4R&M^e;D4zT0H)BQfO{G%?ImEFjZUsA zxRcK6QMFAf+g+T0;0F#WP_z{$0W1ap5L{<3z-YI416aMOk_OrV*9$20YEiTa$CQYFDd2>=mIgG+*2HmYqFx>$6uD?Bng=qV_tD{|Ky%sJEOmO@9YYHM=W zP+$P2X%Bnh2_vG9a@T53c5lS`+2&qgttWql;EHsAK)+>~R4V3k5!=5ls?nrkD$`J- z61pZU)GLu2*^#&GVAn)lDOBJOd=UURP*rebb#P>Wo#-(L!3aZPjv*pcMp1hbXb?Dq z5R4!Mg9#72}}ZpW|#&vNz`;A&pS+9G)=KLDtYj-)6G8#dfrr9CAK&XdP+1+ z0{iTLCYcGbpelzrhh~Ah>%{&(^Vdf-;dc%hMqA*^#4|`6 zMf*bKciLJAuJ{9?$;weQ&7^ zJ=aj9L2_4<&sEQPf4@LsJlXdfzEsCy6$8Tx6dUE>g;jPLL|~O<%e(XE4YQ-ds+2j8 zD!?9EFnktJN?vG?o2r@krvDLK#}-9GIF9pvVS>(UyM5AUEItzN+NOQ4q`B`GZ^;Jcyy+i=X++clH3ba+Ri3u?e zpozA`a{%00agOwm4l4(ByE__B8}(>^;^#u(pCrZ2)+r}UP>s9{2|tyc@TN)8i92>4 z$2n`s*9?9HMTsz@@|$rVp3OrHskoX1RMBJ%R1+Mi|3ImD`6StQemcTPf5Vcul zLBN0vIH2uS{~4!~<~W_1kB5qXoX!<|k^LYUu+OPvHIg|FNT(B8I-QA2IXmHQvg+I6 zRa@_xoO!47KYtp@JE7dtIC+BDS3%R6`W7)`UX7`-@7Gztr}L|-XLZ?%DRLvFUF!oF z?8Fi37)q$a-6%P*?Cd!BJ4n>%?x}3PEe6Bi$g4Z{{f`N#IpO}puO5njQ$ocjhF*n4 zg8E9?A0hRu61ch`{Q)Q-yQPDARLWxukb9oWzcYf6@lU2JCo>9I;Wr+p8$ zsFy(a(8Judl+E{fp~bZC|O;689>BA-Tg&^ z_0->@tM5kZy+ToYlFsL3=~&KW1#ANV5J6`d@OZRu#oErn?~K9^*=ukO)eMu{iIs$M zge0CKnKMvz3E-rEv+1<}DIbw-{qYaU3Au{l^I>tWLsV1eN257JptQ@~_^KB!1|K!6=?d2W#H>d zla1QOOTsh!(x`&_0Uhl}{h1eZik+mrr6o|Z3#AgJ1x-1BL1}NPsw;a8@eagt60M7n zGy~fI8KCI`=>2sPof0k;_FQArfL2`)4o@9AkKXel>0TO-$blRasLTl67V#S_b%H+A zwIZl67hFSyi);d9kQsKjxbu>zvR1YFQ2%^MOcY_j$TI5rAORb()MOq)8 z!$^}V8zO4E_3dOniuDUd)YIh8n*l`KlQp~y05ElOZcuDtYv3USHxvabLxe;rr?3aw zD!LB!SH%)Ov?>&g$5j;uIrH2@;gLD#zo9)5()}ZUnf?vVcs?~Uxz?y!8gR*_o-R@~ z`@^B4jjA$yrnaj{2WW2AxJ_XcrL9|=!l;q7ZxEFjn((RY+E1N!wN8gX1xgK3aF7#d zlW?m6xNba!OT|u4<+>3i=GgUlt{cy1RN|(<0d6Joa*D4)}Or}xwjgKn^zeVBaMn0=#fP{_Bz1OZN3pyfkGSEU=THzTJU+qIMW zyd>{01@J%JS|c||Bzpe_QW$Q)8hB7z>kbEr63*AYR^|RosdY5dDeED+It*Ojdq@UI;vH@|5oI5jGb}9RnIyd zht+I7Z!avGWZVgu#fd21fJ{97{aKe5=e7ieWIaHjq=R8cc}wW@ zmhfqd;k+H<_F=2xL!7sZy&G@(p!xZI@tTMuaUxDaluUtW`GcD4d{}<*q9VLcnC0V& z6+R1va4A0eP`xtb6a6lsseiox_K^gC5${`JJ>rOa#2J`^?mr<>p3Z&cuc|iG0VZ5g ztdh7=PB=BLmJlx3ci*SP?GG&MKZv~IF%o@5=%IbJ((9?d`qmORcnDKJ91awG2LaNc zSeQ6FiFf)j?%;?tboxIwVrU8H04~lo`*b{C8=$GLK!CH%NZPo(qU&&|0;LiR04N}R zEPZ`|w5aeomq2*}7=K|S1PZ|^0fLYW10$XylM4s&u}Rm!uZ{}9Icp4^i@Us5jOPYo zRzsP67KZWj5O)F&!$@_heIGsR7w5L5THOh=zkHZKGdhEiQ3*!mYQE7x>W%Ax{ORiG!H}FjygCd`MpAVt#eS`pZyK8Qj zf;~grj)6TTCU*iVPKavC2t&uDPpv=E1b>KG_erTb2VuTklH3?*9GvYX&*LaScD2R3 zmP0s{0yI_%Fn?YzWHAMZJyMA71rJSTnv35O0AtTTPjejd8?-;2V+dQ8EKW3=Q2vCD zu|7j!p5A#T@vM4LC=J)@t2|JYU1j~!CLlMU@8pk+v1=l0kp*cd1A^M{; zRa7y6cH*GNxMI*r2B90NUMPkEdNx?Hn{(y_VcC61AAi>|UR}pXXkE2M7#{G;HnU@R zC?Y9@b`0Ome665q{xzdxoJgb&P6?9uuWf45n!o6=A{CKrtE~UdxTTW!GHBkQnpWqI}6EeU6RUV_cm$NrT@?< KxbEwcx&_Exk4`fH diff --git a/codex-rs/app-server-protocol/schema/precomputed/app-server-exports-stable.json.zst b/codex-rs/app-server-protocol/schema/precomputed/app-server-exports-stable.json.zst index 668e51f34b6989f3fad2d75b9342e8e97e3eb93f..0c2346600aa8ccde605cd7f67872ae739ecee230 100644 GIT binary patch delta 113198 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%0AdSj8F(Vw692AE%sZWY#odu2jL$DJ>beA(0# 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

rvrdn^{%O4m}76dZ;xn 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 diff --git a/codex-rs/app-server-protocol/schema/typescript/v2/Turn.ts b/codex-rs/app-server-protocol/schema/typescript/v2/Turn.ts index e804fa974c..ce309330d5 100644 --- a/codex-rs/app-server-protocol/schema/typescript/v2/Turn.ts +++ b/codex-rs/app-server-protocol/schema/typescript/v2/Turn.ts @@ -11,6 +11,12 @@ export type Turn = { * Identifier for this turn. Codex-generated turn IDs are UUIDv7. */ id: string, +/** + * ID of the first turn in the chain of work that led to this turn. + * Pass this as `rootTurnId` when starting work on behalf of this turn. + * May be null in older history or a `review/start` response. + */ +rootTurnId: string | null, /** * Thread items currently included in this turn payload. */ diff --git a/codex-rs/app-server-protocol/schema/typescript/v2/TurnStartParams.ts b/codex-rs/app-server-protocol/schema/typescript/v2/TurnStartParams.ts index b5f5321916..e83b681899 100644 --- a/codex-rs/app-server-protocol/schema/typescript/v2/TurnStartParams.ts +++ b/codex-rs/app-server-protocol/schema/typescript/v2/TurnStartParams.ts @@ -19,7 +19,22 @@ disabledPluginIds?: Array | null, clientUserMessageId?: string | null, i * Optional source classification for the caller that starts this turn. * Ignored when this request steers an already-active turn. */ -turnTrigger?: string | null, toolOutput?: TurnToolOutput | null, /** +turnTrigger?: string | null, /** + * ID of the turn that caused this new turn to start. + * + * Set this when starting work on behalf of another turn, such as delegated + * work in a different thread. Leave unset for work started directly by the + * user. Ignored when this request adds input to an active turn. + */ +parentTurnId?: string | null, /** + * ID of the first turn in the chain of work that led to this new turn. + * + * When setting `parentTurnId`, set this to the parent turn's `rootTurnId` + * when known. This keeps descendant work attributed to the original turn. + * If omitted, the new turn becomes its own root. Ignored when this request + * adds input to an active turn. + */ +rootTurnId?: string | null, toolOutput?: TurnToolOutput | null, /** * Override the working directory for this turn and subsequent turns. */ cwd?: string | null, /** diff --git a/codex-rs/app-server-protocol/src/protocol/common.rs b/codex-rs/app-server-protocol/src/protocol/common.rs index 35610e8b93..3e73b44fff 100644 --- a/codex-rs/app-server-protocol/src/protocol/common.rs +++ b/codex-rs/app-server-protocol/src/protocol/common.rs @@ -225,6 +225,7 @@ macro_rules! client_request_definitions { ) => { /// Request from the client to the server. #[derive(Serialize, Deserialize, Debug, Clone, PartialEq, JsonSchema, TS)] + #[allow(clippy::large_enum_variant)] #[serde(tag = "method", rename_all = "camelCase")] pub enum ClientRequest { $( diff --git a/codex-rs/app-server-protocol/src/protocol/thread_history.rs b/codex-rs/app-server-protocol/src/protocol/thread_history.rs index c0928c758c..1559004762 100644 --- a/codex-rs/app-server-protocol/src/protocol/thread_history.rs +++ b/codex-rs/app-server-protocol/src/protocol/thread_history.rs @@ -134,6 +134,7 @@ impl From for Turn { fn from(value: ThreadHistoryTurnMetadata) -> Self { Self { id: value.turn_id, + root_turn_id: value.root_turn_id, items: Vec::new(), items_view: TurnItemsView::NotLoaded, error: value.error, @@ -1729,6 +1730,7 @@ impl PendingTurn { fn snapshot(&self, items_view: TurnItemsView) -> Turn { Turn { id: self.id.clone(), + root_turn_id: self.root_turn_id.clone(), items: items_view.project_items(&self.items), items_view, error: self.error.clone(), @@ -1744,6 +1746,7 @@ impl From for Turn { fn from(value: PendingTurn) -> Self { Self { id: value.id, + root_turn_id: value.root_turn_id, items: value.items, items_view: TurnItemsView::Full, error: value.error, @@ -1988,6 +1991,7 @@ mod tests { review_output: None, }), EventMsg::TurnComplete(TurnCompleteEvent { + root_turn_id: None, turn_id: "turn-1".into(), started_at: None, last_agent_message: None, @@ -2050,6 +2054,7 @@ mod tests { completed_at_ms: 0, }), EventMsg::TurnComplete(TurnCompleteEvent { + root_turn_id: None, turn_id: "turn-1".into(), started_at: None, last_agent_message: None, @@ -2213,6 +2218,7 @@ mod tests { started_at_ms: 0, }), EventMsg::TurnComplete(TurnCompleteEvent { + root_turn_id: None, turn_id: turn_id.to_string(), started_at: None, last_agent_message: None, @@ -2269,6 +2275,7 @@ mod tests { completed_at_ms: 1_000, }), EventMsg::TurnComplete(TurnCompleteEvent { + root_turn_id: None, turn_id: turn_id.to_string(), started_at: None, last_agent_message: None, @@ -2351,6 +2358,7 @@ mod tests { completed_at_ms: 1_000, }), EventMsg::TurnComplete(TurnCompleteEvent { + root_turn_id: None, turn_id: turn_id.to_string(), started_at: None, last_agent_message: None, @@ -2463,6 +2471,7 @@ mod tests { status: CoreExecCommandStatus::Completed, }), EventMsg::TurnComplete(TurnCompleteEvent { + root_turn_id: None, turn_id: turn_id.to_string(), started_at: None, last_agent_message: None, @@ -2567,6 +2576,7 @@ mod tests { ..Default::default() }), EventMsg::TurnComplete(TurnCompleteEvent { + root_turn_id: None, turn_id: turn_id.to_string(), started_at: None, last_agent_message: None, @@ -2670,6 +2680,7 @@ mod tests { saved_path: Some(test_path_buf("/tmp/ig_123.png").abs()), })), RolloutItem::EventMsg(EventMsg::TurnComplete(TurnCompleteEvent { + root_turn_id: None, turn_id: "turn-image".into(), started_at: None, last_agent_message: None, @@ -2686,6 +2697,7 @@ mod tests { turns[0], Turn { id: "turn-image".into(), + root_turn_id: None, status: TurnStatus::Completed, error: None, started_at: None, @@ -2797,6 +2809,7 @@ mod tests { questions: None, }), EventMsg::TurnAborted(TurnAbortedEvent { + root_turn_id: None, turn_id: Some("turn-1".into()), started_at: None, reason: TurnAbortReason::Replaced, @@ -3060,6 +3073,7 @@ mod tests { ..Default::default() }), EventMsg::TurnComplete(TurnCompleteEvent { + root_turn_id: None, turn_id: "turn-a".into(), started_at: None, last_agent_message: None, @@ -3732,6 +3746,7 @@ mod tests { ..Default::default() }), EventMsg::TurnComplete(TurnCompleteEvent { + root_turn_id: None, turn_id: "turn-a".into(), started_at: None, last_agent_message: None, @@ -3799,6 +3814,7 @@ mod tests { ..Default::default() }), EventMsg::TurnComplete(TurnCompleteEvent { + root_turn_id: None, turn_id: "turn-a".into(), started_at: None, last_agent_message: None, @@ -3844,6 +3860,7 @@ mod tests { status: CoreExecCommandStatus::Completed, }), EventMsg::TurnComplete(TurnCompleteEvent { + root_turn_id: None, turn_id: "turn-b".into(), started_at: None, last_agent_message: None, @@ -3908,6 +3925,7 @@ mod tests { ..Default::default() }), EventMsg::TurnComplete(TurnCompleteEvent { + root_turn_id: None, turn_id: "turn-a".into(), started_at: None, last_agent_message: None, @@ -3953,6 +3971,7 @@ mod tests { status: CoreExecCommandStatus::Completed, }), EventMsg::TurnComplete(TurnCompleteEvent { + root_turn_id: None, turn_id: "turn-b".into(), started_at: None, last_agent_message: None, @@ -4038,6 +4057,7 @@ mod tests { Some(expected.clone()) ); builder.handle_event(&EventMsg::TurnComplete(TurnCompleteEvent { + root_turn_id: None, turn_id: "turn-1".into(), started_at: Some(100), last_agent_message: None, @@ -4090,8 +4110,13 @@ mod tests { Some(expected.clone()) ); assert_eq!(builder.active_turn_snapshot().unwrap().items.len(), 1); + assert_eq!( + builder.active_turn_snapshot().unwrap().root_turn_id, + expected.root_turn_id + ); builder.handle_event(&EventMsg::TurnComplete(TurnCompleteEvent { + root_turn_id: None, turn_id: "turn-1".into(), started_at: Some(100), last_agent_message: None, @@ -4103,8 +4128,16 @@ mod tests { expected.status = TurnStatus::Completed; expected.completed_at = Some(102); expected.duration_ms = Some(2_000); - assert_eq!(builder.active_turn_metadata_snapshot(), Some(expected)); + assert_eq!( + builder.active_turn_metadata_snapshot(), + Some(expected.clone()) + ); + assert_eq!( + builder.active_turn_snapshot_with_items_view(TurnItemsView::NotLoaded), + Some(Turn::from(expected.clone())) + ); assert_eq!(builder.active_turn_snapshot().unwrap().items.len(), 1); + assert_eq!(builder.finish()[0].root_turn_id, expected.root_turn_id); } #[test] @@ -4270,6 +4303,7 @@ mod tests { ..Default::default() }), EventMsg::TurnComplete(TurnCompleteEvent { + root_turn_id: None, turn_id: "turn-a".into(), started_at: None, last_agent_message: None, @@ -4296,6 +4330,7 @@ mod tests { ..Default::default() }), EventMsg::TurnComplete(TurnCompleteEvent { + root_turn_id: None, turn_id: "turn-a".into(), started_at: None, last_agent_message: None, @@ -4312,6 +4347,7 @@ mod tests { questions: None, }), EventMsg::TurnComplete(TurnCompleteEvent { + root_turn_id: None, turn_id: "turn-b".into(), started_at: None, last_agent_message: None, @@ -4371,6 +4407,7 @@ mod tests { ..Default::default() }), EventMsg::TurnComplete(TurnCompleteEvent { + root_turn_id: None, turn_id: "turn-a".into(), started_at: Some(10), last_agent_message: None, @@ -4395,6 +4432,7 @@ mod tests { vec![ Turn { id: "turn-a".into(), + root_turn_id: None, items_view: TurnItemsView::Full, items: vec![ThreadItem::UserMessage { id: "item-1".into(), @@ -4420,6 +4458,7 @@ mod tests { }, Turn { id: "turn-b".into(), + root_turn_id: None, items_view: TurnItemsView::Full, items: vec![ThreadItem::UserMessage { id: "item-2".into(), @@ -4460,6 +4499,7 @@ mod tests { ..Default::default() }), EventMsg::TurnComplete(TurnCompleteEvent { + root_turn_id: None, turn_id: "turn-a".into(), started_at: None, last_agent_message: None, @@ -4486,6 +4526,7 @@ mod tests { ..Default::default() }), EventMsg::TurnAborted(TurnAbortedEvent { + root_turn_id: None, turn_id: Some("turn-a".into()), started_at: None, reason: TurnAbortReason::Replaced, @@ -4541,6 +4582,7 @@ mod tests { resume_metadata: None, }), RolloutItem::EventMsg(EventMsg::TurnComplete(TurnCompleteEvent { + root_turn_id: None, turn_id: "turn-compact".into(), started_at: None, last_agent_message: None, @@ -4556,6 +4598,7 @@ mod tests { turns, vec![Turn { id: "turn-compact".into(), + root_turn_id: None, status: TurnStatus::Completed, error: None, started_at: None, @@ -4810,6 +4853,7 @@ mod tests { ..Default::default() }), EventMsg::TurnComplete(TurnCompleteEvent { + root_turn_id: None, turn_id: "turn-a".into(), started_at: None, last_agent_message: None, @@ -4835,6 +4879,7 @@ mod tests { turns[0], Turn { id: "turn-a".into(), + root_turn_id: None, status: TurnStatus::Completed, error: None, started_at: None, @@ -4881,6 +4926,7 @@ mod tests { }), }), EventMsg::TurnComplete(TurnCompleteEvent { + root_turn_id: None, turn_id: "turn-a".into(), started_at: None, last_agent_message: None, @@ -4935,6 +4981,7 @@ mod tests { ..Default::default() }), EventMsg::TurnComplete(TurnCompleteEvent { + root_turn_id: None, turn_id: "turn-a".into(), started_at: Some(10), last_agent_message: None, @@ -4958,6 +5005,7 @@ mod tests { build_turns_from_rollout_items(&items), vec![Turn { id: "turn-a".into(), + root_turn_id: None, items_view: TurnItemsView::Full, items: vec![ThreadItem::UserMessage { id: "item-1".into(), @@ -5008,6 +5056,7 @@ mod tests { })), RolloutItem::ResponseItem(hook_prompt.into()), RolloutItem::EventMsg(EventMsg::TurnComplete(TurnCompleteEvent { + root_turn_id: None, turn_id: "turn-a".into(), started_at: None, last_agent_message: None, @@ -5091,6 +5140,7 @@ mod tests { collaboration_mode_kind: Default::default(), })), RolloutItem::EventMsg(EventMsg::TurnComplete(TurnCompleteEvent { + root_turn_id: None, turn_id: "turn-a".into(), started_at: None, last_agent_message: None, @@ -5152,6 +5202,7 @@ mod tests { .into(), ), RolloutItem::EventMsg(EventMsg::TurnComplete(TurnCompleteEvent { + root_turn_id: None, turn_id: "turn-a".into(), started_at: None, last_agent_message: None, @@ -5331,6 +5382,7 @@ mod tests { ))); let complete_changes = builder.handle_rollout_item_with_changes(&RolloutItem::EventMsg( EventMsg::TurnComplete(TurnCompleteEvent { + root_turn_id: None, turn_id: "turn-a".into(), started_at: None, last_agent_message: None, @@ -5421,6 +5473,7 @@ mod tests { collaboration_mode_kind: Default::default(), })), RolloutItem::EventMsg(EventMsg::TurnComplete(TurnCompleteEvent { + root_turn_id: None, turn_id: "turn-a".into(), started_at: None, last_agent_message: None, diff --git a/codex-rs/app-server-protocol/src/protocol/thread_history_projection.rs b/codex-rs/app-server-protocol/src/protocol/thread_history_projection.rs index b6ad558bb5..756f42e3ab 100644 --- a/codex-rs/app-server-protocol/src/protocol/thread_history_projection.rs +++ b/codex-rs/app-server-protocol/src/protocol/thread_history_projection.rs @@ -35,7 +35,7 @@ pub fn project_rollout_line(line: &RolloutLine) -> ThreadHistoryChangeSet { RolloutItem::EventMsg(EventMsg::TurnComplete(event)) => ThreadHistoryChangeSet { changed_turns: vec![ThreadHistoryTurnMetadata { turn_id: event.turn_id.clone(), - root_turn_id: None, + root_turn_id: event.root_turn_id.clone(), status: if event.error.is_some() { TurnStatus::Failed } else { @@ -60,7 +60,7 @@ pub fn project_rollout_line(line: &RolloutLine) -> ThreadHistoryChangeSet { ThreadHistoryChangeSet { changed_turns: vec![ThreadHistoryTurnMetadata { turn_id: turn_id.clone(), - root_turn_id: None, + root_turn_id: event.root_turn_id.clone(), status: TurnStatus::Interrupted, error: event.error.as_ref().map(|error| TurnError { message: error.message.clone(), diff --git a/codex-rs/app-server-protocol/src/protocol/thread_history_projection_tests.rs b/codex-rs/app-server-protocol/src/protocol/thread_history_projection_tests.rs index bed87ac9ab..6afb4411ee 100644 --- a/codex-rs/app-server-protocol/src/protocol/thread_history_projection_tests.rs +++ b/codex-rs/app-server-protocol/src/protocol/thread_history_projection_tests.rs @@ -37,6 +37,7 @@ fn projects_turn_lifecycle_without_prior_builder_state() { ))); let completed = project(RolloutItem::EventMsg(EventMsg::TurnComplete( TurnCompleteEvent { + root_turn_id: Some("root-turn".into()), turn_id: "turn-1".to_string(), last_agent_message: None, error: None, @@ -60,7 +61,7 @@ fn projects_turn_lifecycle_without_prior_builder_state() { ThreadHistoryChangeSet { changed_turns: vec![ThreadHistoryTurnMetadata { turn_id: "turn-1".to_string(), - root_turn_id: None, + root_turn_id: Some("root-turn".into()), status: TurnStatus::Completed, error: None, started_at: Some(10), @@ -82,6 +83,7 @@ fn projects_failed_turn_completion_as_snapshot() { let changes = project(RolloutItem::EventMsg(EventMsg::TurnComplete( TurnCompleteEvent { + root_turn_id: None, turn_id: "turn-1".to_string(), last_agent_message: None, error: Some(error), @@ -199,6 +201,7 @@ fn projects_optional_completed_item_lifecycle_timestamps() { fn ignores_legacy_abort_without_turn_id_and_context_only_records() { let aborted = project(RolloutItem::EventMsg(EventMsg::TurnAborted( TurnAbortedEvent { + root_turn_id: None, turn_id: None, reason: TurnAbortReason::Interrupted, error: None, @@ -237,6 +240,7 @@ fn ignores_legacy_abort_without_turn_id_and_context_only_records() { fn projects_identified_turn_aborts() { let changes = project(RolloutItem::EventMsg(EventMsg::TurnAborted( TurnAbortedEvent { + root_turn_id: Some("root-turn".into()), turn_id: Some("turn-1".to_string()), reason: TurnAbortReason::Interrupted, error: None, @@ -251,7 +255,7 @@ fn projects_identified_turn_aborts() { ThreadHistoryChangeSet { changed_turns: vec![ThreadHistoryTurnMetadata { turn_id: "turn-1".to_string(), - root_turn_id: None, + root_turn_id: Some("root-turn".into()), status: TurnStatus::Interrupted, error: None, started_at: Some(10), diff --git a/codex-rs/app-server-protocol/src/protocol/v2/tests.rs b/codex-rs/app-server-protocol/src/protocol/v2/tests.rs index e299c13095..598c9b71d1 100644 --- a/codex-rs/app-server-protocol/src/protocol/v2/tests.rs +++ b/codex-rs/app-server-protocol/src/protocol/v2/tests.rs @@ -5060,6 +5060,8 @@ fn turn_start_params_preserve_explicit_null_service_tier() { client_user_message_id: None, input: vec![], turn_trigger: None, + parent_turn_id: None, + root_turn_id: None, tool_output: None, responsesapi_client_metadata: None, additional_context: None, diff --git a/codex-rs/app-server-protocol/src/protocol/v2/thread_data.rs b/codex-rs/app-server-protocol/src/protocol/v2/thread_data.rs index e54fa77765..015d813462 100644 --- a/codex-rs/app-server-protocol/src/protocol/v2/thread_data.rs +++ b/codex-rs/app-server-protocol/src/protocol/v2/thread_data.rs @@ -386,6 +386,10 @@ impl<'de> Deserialize<'de> for Thread { pub struct Turn { /// Identifier for this turn. Codex-generated turn IDs are UUIDv7. pub id: String, + /// ID of the first turn in the chain of work that led to this turn. + /// Pass this as `rootTurnId` when starting work on behalf of this turn. + /// May be null in older history or a `review/start` response. + pub root_turn_id: Option, /// Thread items currently included in this turn payload. pub items: Vec, /// Describes how much of `items` has been loaded for this turn. diff --git a/codex-rs/app-server-protocol/src/protocol/v2/turn.rs b/codex-rs/app-server-protocol/src/protocol/v2/turn.rs index f7a7ec09ea..6b784ada66 100644 --- a/codex-rs/app-server-protocol/src/protocol/v2/turn.rs +++ b/codex-rs/app-server-protocol/src/protocol/v2/turn.rs @@ -177,6 +177,21 @@ pub struct TurnStartParams { /// Ignored when this request steers an already-active turn. #[ts(optional = nullable)] pub turn_trigger: Option, + /// ID of the turn that caused this new turn to start. + /// + /// Set this when starting work on behalf of another turn, such as delegated + /// work in a different thread. Leave unset for work started directly by the + /// user. Ignored when this request adds input to an active turn. + #[ts(optional = nullable)] + pub parent_turn_id: Option, + /// ID of the first turn in the chain of work that led to this new turn. + /// + /// When setting `parentTurnId`, set this to the parent turn's `rootTurnId` + /// when known. This keeps descendant work attributed to the original turn. + /// If omitted, the new turn becomes its own root. Ignored when this request + /// adds input to an active turn. + #[ts(optional = nullable)] + pub root_turn_id: Option, #[ts(optional = nullable)] pub tool_output: Option>, /// Optional metadata to enrich Codex's ResponsesAPI turn metadata. diff --git a/codex-rs/app-server/src/bespoke_event_handling.rs b/codex-rs/app-server/src/bespoke_event_handling.rs index 14908318e3..0e0c31fbca 100644 --- a/codex-rs/app-server/src/bespoke_event_handling.rs +++ b/codex-rs/app-server/src/bespoke_event_handling.rs @@ -162,6 +162,7 @@ pub(crate) async fn apply_bespoke_event_handling( let state = thread_state.lock().await; let mut turn = state.active_turn_snapshot().unwrap_or_else(|| Turn { id: payload.turn_id.clone(), + root_turn_id: payload.root_turn_id.clone(), items: Vec::new(), items_view: TurnItemsView::NotLoaded, error: None, @@ -1311,6 +1312,7 @@ async fn handle_turn_plan_update( struct TurnCompletionMetadata { status: TurnStatus, + root_turn_id: Option, error: Option, last_agent_message: Option, started_at: Option, @@ -1332,6 +1334,7 @@ async fn emit_turn_completed_with_status( thread_id: conversation_id.to_string(), turn: Turn { id: event_turn_id, + root_turn_id: turn_completion_metadata.root_turn_id, items, items_view, error: turn_completion_metadata.error, @@ -1519,6 +1522,7 @@ async fn handle_turn_complete( event_turn_id, TurnCompletionMetadata { status, + root_turn_id: turn_complete_event.root_turn_id, error, last_agent_message, started_at: turn_summary.started_at, @@ -1544,6 +1548,7 @@ async fn handle_turn_interrupted( event_turn_id, TurnCompletionMetadata { status: TurnStatus::Interrupted, + root_turn_id: turn_aborted_event.root_turn_id, error: turn_aborted_event.error.map(|error| TurnError { message: error.message, codex_error_info: error.codex_error_info.map(Into::into), @@ -2179,6 +2184,7 @@ mod tests { fn turn_complete_event(turn_id: &str) -> TurnCompleteEvent { TurnCompleteEvent { + root_turn_id: None, turn_id: turn_id.to_string(), started_at: None, last_agent_message: None, @@ -2191,6 +2197,7 @@ mod tests { fn turn_aborted_event(turn_id: &str) -> TurnAbortedEvent { TurnAbortedEvent { + root_turn_id: None, turn_id: Some(turn_id.to_string()), started_at: None, reason: codex_protocol::protocol::TurnAbortReason::Interrupted, @@ -3513,7 +3520,10 @@ mod tests { handle_turn_interrupted( conversation_id, event_turn_id.clone(), - turn_aborted_event(&event_turn_id), + TurnAbortedEvent { + root_turn_id: Some("root-a".to_string()), + ..turn_aborted_event(&event_turn_id) + }, &outgoing, &thread_state, ) @@ -3523,6 +3533,7 @@ mod tests { match msg { ServerNotification::TurnCompleted(n) => { assert_eq!(n.turn.id, event_turn_id); + assert_eq!(n.turn.root_turn_id.as_deref(), Some("root-a")); assert_eq!(n.turn.status, TurnStatus::Interrupted); assert_eq!(n.turn.error, None); assert_eq!(n.turn.completed_at, Some(TEST_TURN_COMPLETED_AT)); diff --git a/codex-rs/app-server/src/in_process.rs b/codex-rs/app-server/src/in_process.rs index b467a33ec2..9673442d38 100644 --- a/codex-rs/app-server/src/in_process.rs +++ b/codex-rs/app-server/src/in_process.rs @@ -1033,6 +1033,7 @@ mod tests { thread_id: "thread-1".to_string(), turn: Turn { id: "turn-1".to_string(), + root_turn_id: None, items: Vec::new(), items_view: TurnItemsView::NotLoaded, status: TurnStatus::Completed, diff --git a/codex-rs/app-server/src/message_processor_tracing_tests.rs b/codex-rs/app-server/src/message_processor_tracing_tests.rs index 41d843c743..518df3077e 100644 --- a/codex-rs/app-server/src/message_processor_tracing_tests.rs +++ b/codex-rs/app-server/src/message_processor_tracing_tests.rs @@ -684,6 +684,8 @@ async fn turn_start_jsonrpc_span_parents_core_turn_spans() -> Result<()> { text_elements: Vec::new(), }], turn_trigger: None, + parent_turn_id: None, + root_turn_id: None, tool_output: None, responsesapi_client_metadata: None, additional_context: None, diff --git a/codex-rs/app-server/src/request_processors/daemon_continuation.rs b/codex-rs/app-server/src/request_processors/daemon_continuation.rs index 5c6ea2bb4d..7eef0e2ffc 100644 --- a/codex-rs/app-server/src/request_processors/daemon_continuation.rs +++ b/codex-rs/app-server/src/request_processors/daemon_continuation.rs @@ -103,6 +103,7 @@ impl ThreadRequestProcessor { if let Err(err) = thread .append_rollout_items(&[RolloutItem::EventMsg(EventMsg::TurnAborted( TurnAbortedEvent { + root_turn_id: None, turn_id: Some(saved.turn_id.clone()), reason: TurnAbortReason::Interrupted, error: None, diff --git a/codex-rs/app-server/src/request_processors/thread_processor.rs b/codex-rs/app-server/src/request_processors/thread_processor.rs index 19e5a9c6d0..8bdf6bbed3 100644 --- a/codex-rs/app-server/src/request_processors/thread_processor.rs +++ b/codex-rs/app-server/src/request_processors/thread_processor.rs @@ -5901,6 +5901,7 @@ fn stored_turn_to_api_turn( .collect::, _>>()?; Ok(Turn { id: turn.turn_id, + root_turn_id: turn.root_turn_id, items, items_view, status, diff --git a/codex-rs/app-server/src/request_processors/thread_processor_tests.rs b/codex-rs/app-server/src/request_processors/thread_processor_tests.rs index c4cf0cfc2b..f1bd1bfe92 100644 --- a/codex-rs/app-server/src/request_processors/thread_processor_tests.rs +++ b/codex-rs/app-server/src/request_processors/thread_processor_tests.rs @@ -291,6 +291,7 @@ mod thread_processor_behavior_tests { ))]; let active_turn = Turn { id: "live-turn".to_string(), + root_turn_id: None, items: vec![ThreadItem::UserMessage { id: "live-user-message".to_string(), client_id: None, diff --git a/codex-rs/app-server/src/request_processors/thread_queue_processor.rs b/codex-rs/app-server/src/request_processors/thread_queue_processor.rs index ea6ec7ddab..a2f5b5ad68 100644 --- a/codex-rs/app-server/src/request_processors/thread_queue_processor.rs +++ b/codex-rs/app-server/src/request_processors/thread_queue_processor.rs @@ -205,8 +205,11 @@ impl ThreadQueueRequestProcessor { ) .await .map_err(queue_error)?; - let turn_id = match submission { - StartIfIdleSubmission::Started { turn_id } => turn_id, + let (turn_id, root_turn_id) = match submission { + StartIfIdleSubmission::Started { + turn_id, + root_turn_id, + } => (turn_id, root_turn_id), StartIfIdleSubmission::NotSubmitted { reason: NotSubmittedReason::ServerDraining, } => return Err(crate::error_code::server_draining_error()), @@ -229,6 +232,7 @@ impl ThreadQueueRequestProcessor { Ok(ThreadQueueStartResponse { turn: Turn { id: turn_id, + root_turn_id: Some(root_turn_id), items: vec![], items_view: TurnItemsView::NotLoaded, error: None, diff --git a/codex-rs/app-server/src/request_processors/thread_resume_redaction.rs b/codex-rs/app-server/src/request_processors/thread_resume_redaction.rs index 62b10cf0b9..f35d0341e0 100644 --- a/codex-rs/app-server/src/request_processors/thread_resume_redaction.rs +++ b/codex-rs/app-server/src/request_processors/thread_resume_redaction.rs @@ -236,6 +236,7 @@ mod tests { name: None, turns: vec![Turn { id: "turn-1".to_string(), + root_turn_id: None, items, items_view: TurnItemsView::Full, status: TurnStatus::Completed, diff --git a/codex-rs/app-server/src/request_processors/turn_processor.rs b/codex-rs/app-server/src/request_processors/turn_processor.rs index 605a7b38eb..051408204f 100644 --- a/codex-rs/app-server/src/request_processors/turn_processor.rs +++ b/codex-rs/app-server/src/request_processors/turn_processor.rs @@ -654,10 +654,12 @@ impl TurnRequestProcessor { .with_thread_settings(thread_settings) .on_start(TurnStartOptions { turn_trigger: params.turn_trigger, + parent_turn_id: params.parent_turn_id, + initiating_agent_path: None, + root_turn_id: params.root_turn_id, final_output_json_schema: params.output_schema, service_tier: params.service_tier_for_turn, cyber_access_program: params.cyber_access_program.map(Into::into), - ..Default::default() }) .with_additional_context(additional_context) .with_responses_metadata(params.responsesapi_client_metadata) @@ -669,9 +671,15 @@ impl TurnRequestProcessor { self.track_error_response(&request_id, &error, /*error_type*/ None); error })?; - let (turn_id, started) = match submission { - TurnInputSubmission::Started { turn_id } => (turn_id, true), - TurnInputSubmission::Steered { turn_id } => (turn_id, false), + let (turn_id, root_turn_id, started) = match submission { + TurnInputSubmission::Started { + turn_id, + root_turn_id, + } => (turn_id, root_turn_id, true), + TurnInputSubmission::Steered { + turn_id, + root_turn_id, + } => (turn_id, root_turn_id, false), TurnInputSubmission::NotSubmitted { reason } => { let error = if reason == NotSubmittedReason::ServerDraining { crate::error_code::server_draining_error() @@ -703,6 +711,7 @@ impl TurnRequestProcessor { .await; let turn = Turn { id: turn_id, + root_turn_id: Some(root_turn_id), items: vec![], items_view: TurnItemsView::NotLoaded, error: None, @@ -1409,6 +1418,7 @@ impl TurnRequestProcessor { Turn { id: turn_id, + root_turn_id: None, items, items_view: TurnItemsView::NotLoaded, error: None, diff --git a/codex-rs/app-server/tests/suite/v2/thread_fork.rs b/codex-rs/app-server/tests/suite/v2/thread_fork.rs index 35bfda57be..9ce85c98a0 100644 --- a/codex-rs/app-server/tests/suite/v2/thread_fork.rs +++ b/codex-rs/app-server/tests/suite/v2/thread_fork.rs @@ -1534,6 +1534,7 @@ async fn thread_fork_creates_reference_backed_paginated_thread() -> Result<()> { collaboration_mode_kind: Default::default(), })), RolloutItem::EventMsg(EventMsg::TurnComplete(TurnCompleteEvent { + root_turn_id: None, turn_id: "turn-1".to_string(), last_agent_message: None, error: None, @@ -1858,7 +1859,7 @@ async fn assert_thread_fork_freezes_active_paginated_turn_as_interrupted( &RolloutItem::EventMsg(EventMsg::TurnStarted(TurnStartedEvent { turn_attribution: None, turn_id: "active-turn".to_string(), - root_turn_id: None, + root_turn_id: Some("causal-root".to_string()), trace_id: None, started_at: Some(10), model_context_window: None, @@ -1967,6 +1968,7 @@ async fn assert_thread_fork_freezes_active_paginated_turn_as_interrupted( append_rollout_item_to_path( source_path.as_path(), &RolloutItem::EventMsg(EventMsg::TurnComplete(TurnCompleteEvent { + root_turn_id: None, turn_id: "active-turn".to_string(), last_agent_message: None, error: None, @@ -2034,6 +2036,7 @@ async fn assert_thread_fork_freezes_active_paginated_turn_as_interrupted( .await?; assert_eq!(turns.len(), 1); assert_eq!(turns[0].id, "active-turn"); + assert_eq!(turns[0].root_turn_id.as_deref(), Some("causal-root")); assert_eq!(turns[0].status, TurnStatus::Interrupted); assert_eq!(turns[0].items.len(), 1); assert!(matches!( diff --git a/codex-rs/app-server/tests/suite/v2/thread_queue.rs b/codex-rs/app-server/tests/suite/v2/thread_queue.rs index caaf4f77ee..a27c3b5a1f 100644 --- a/codex-rs/app-server/tests/suite/v2/thread_queue.rs +++ b/codex-rs/app-server/tests/suite/v2/thread_queue.rs @@ -815,6 +815,10 @@ async fn queue_start_without_id_starts_the_head_when_idle() -> Result<()> { .await?; let started: ThreadQueueStartResponse = timeout(READ_TIMEOUT, app.read_response(start_request_id)).await??; + assert_eq!( + started.turn.root_turn_id.as_deref(), + Some(started.turn.id.as_str()) + ); let started_item = loop { let started_item: ItemStartedNotification = timeout(READ_TIMEOUT, app.read_notification("item/started")).await??; diff --git a/codex-rs/app-server/tests/suite/v2/thread_read.rs b/codex-rs/app-server/tests/suite/v2/thread_read.rs index 58505d0d61..6b7d924952 100644 --- a/codex-rs/app-server/tests/suite/v2/thread_read.rs +++ b/codex-rs/app-server/tests/suite/v2/thread_read.rs @@ -215,6 +215,7 @@ async fn thread_read_can_include_turns() -> Result<()> { assert_eq!(thread.turns.len(), 1); let turn = &thread.turns[0]; assert_eq!(turn.status, TurnStatus::Completed); + assert_eq!(turn.root_turn_id, None); assert_eq!(turn.items_view, TurnItemsView::Full); assert_eq!(turn.items.len(), 1, "expected user message item"); match &turn.items[0] { @@ -238,9 +239,13 @@ async fn thread_read_can_include_turns() -> Result<()> { Ok(()) } -/// Preserves a file-backed image across a completed turn, including a cold history read. +/// Preserves a file-backed image and causal root across completion and a cold history read. +#[test_case::test_case(ThreadHistoryMode::Legacy; "legacy")] +#[test_case::test_case(ThreadHistoryMode::Paginated; "paginated")] #[tokio::test] -async fn thread_read_preserves_file_id_from_completed_turn() -> Result<()> { +async fn thread_read_preserves_file_id_and_root_from_completed_turn( + history_mode: ThreadHistoryMode, +) -> Result<()> { let server = create_mock_responses_server_repeating_assistant("Done").await; let codex_home = TempDir::new()?; MockResponsesConfig::new(&server.uri()).write(codex_home.path())?; @@ -252,6 +257,7 @@ async fn thread_read_preserves_file_id_from_completed_turn() -> Result<()> { let start_id = mcp .send_thread_start_request_with_auto_env(ThreadStartParams { model: Some("mock-model".to_string()), + history_mode: Some(history_mode), ..Default::default() }) .await?; @@ -264,15 +270,18 @@ async fn thread_read_preserves_file_id_from_completed_turn() -> Result<()> { detail: None, }; - timeout( + let completed = timeout( DEFAULT_READ_TIMEOUT, mcp.start_turn_and_wait_for_completion(TurnStartParams { thread_id: thread.id.clone(), input: vec![image.clone()], + root_turn_id: Some("causal-root".to_string()), ..Default::default() }), ) .await??; + let expected_root = "causal-root"; + assert_eq!(completed.turn.root_turn_id.as_deref(), Some(expected_root)); let read_id = mcp .send_thread_read_request(ThreadReadParams { @@ -287,6 +296,10 @@ async fn thread_read_preserves_file_id_from_completed_turn() -> Result<()> { panic!("expected completed turn to start with a user message"); }; assert_eq!(content, &vec![image.clone()]); + assert_eq!( + loaded_thread.turns[0].root_turn_id.as_deref(), + Some(expected_root) + ); timeout(DEFAULT_READ_TIMEOUT, mcp.shutdown_gracefully()).await??; drop(mcp); @@ -297,7 +310,7 @@ async fn thread_read_preserves_file_id_from_completed_turn() -> Result<()> { .await?; let read_id = mcp .send_thread_read_request(ThreadReadParams { - thread_id: thread.id, + thread_id: thread.id.clone(), include_turns: true, }) .await?; @@ -308,6 +321,24 @@ async fn thread_read_preserves_file_id_from_completed_turn() -> Result<()> { panic!("expected persisted turn to start with a user message"); }; assert_eq!(content, &vec![image]); + assert_eq!( + restarted_thread.turns[0].root_turn_id.as_deref(), + Some(expected_root) + ); + let page_id = mcp + .send_thread_turns_list_request(ThreadTurnsListParams { + thread_id: thread.id, + cursor: None, + limit: Some(1), + sort_direction: Some(SortDirection::Asc), + items_view: None, + }) + .await?; + let page: ThreadTurnsListResponse = + timeout(DEFAULT_READ_TIMEOUT, mcp.read_response(page_id)).await??; + assert_eq!(page.data.len(), 1); + assert_eq!(page.data[0].id, completed.turn.id); + assert_eq!(page.data[0].root_turn_id.as_deref(), Some(expected_root)); Ok(()) } @@ -1787,6 +1818,7 @@ async fn paginated_history_lists_and_legacy_reads_use_projected_turns_and_items( let expected_turn_1_full = Turn { id: "turn-1".to_string(), + root_turn_id: None, items: vec![ ThreadItem::UserMessage { id: "user-1".to_string(), @@ -1816,6 +1848,7 @@ async fn paginated_history_lists_and_legacy_reads_use_projected_turns_and_items( }; let expected_turn_2_full = Turn { id: "turn-2".to_string(), + root_turn_id: None, items: vec![ThreadItem::UserMessage { id: "user-2".to_string(), client_id: None, @@ -1979,6 +2012,7 @@ async fn paginated_history_lists_and_legacy_reads_use_projected_turns_and_items( first_page.data, vec![Turn { id: "turn-1".to_string(), + root_turn_id: None, items: vec![ ThreadItem::UserMessage { id: "user-1".to_string(), @@ -2016,6 +2050,7 @@ async fn paginated_history_lists_and_legacy_reads_use_projected_turns_and_items( second_page.data, vec![Turn { id: "turn-2".to_string(), + root_turn_id: None, items: Vec::new(), items_view: TurnItemsView::NotLoaded, status: TurnStatus::Interrupted, @@ -2438,6 +2473,7 @@ fn paginated_turn_started(turn_id: &str) -> RolloutItem { fn paginated_turn_completed(turn_id: &str) -> RolloutItem { RolloutItem::EventMsg(EventMsg::TurnComplete(TurnCompleteEvent { + root_turn_id: None, turn_id: turn_id.to_string(), last_agent_message: None, error: None, diff --git a/codex-rs/app-server/tests/suite/v2/thread_resume.rs b/codex-rs/app-server/tests/suite/v2/thread_resume.rs index 6e339c75a5..7fe3bb7a7c 100644 --- a/codex-rs/app-server/tests/suite/v2/thread_resume.rs +++ b/codex-rs/app-server/tests/suite/v2/thread_resume.rs @@ -4317,6 +4317,7 @@ async fn thread_resume_token_usage_replay_can_belong_to_interrupted_turn() -> Re "timestamp": meta_rfc3339, "type": "event_msg", "payload": serde_json::to_value(EventMsg::TurnAborted(TurnAbortedEvent { + root_turn_id: None, turn_id: Some(interrupted_turn_id.to_string()), started_at: None, reason: TurnAbortReason::Interrupted, diff --git a/codex-rs/app-server/tests/suite/v2/thread_timeline.rs b/codex-rs/app-server/tests/suite/v2/thread_timeline.rs index 954f09eaf6..4dd2a6f77c 100644 --- a/codex-rs/app-server/tests/suite/v2/thread_timeline.rs +++ b/codex-rs/app-server/tests/suite/v2/thread_timeline.rs @@ -129,6 +129,7 @@ async fn timeline_pages_mix_items_and_resolve_the_opening_realtime_session() -> }, }), RolloutItem::EventMsg(EventMsg::TurnComplete(TurnCompleteEvent { + root_turn_id: None, turn_id: "turn-1".to_string(), last_agent_message: None, error: None, diff --git a/codex-rs/app-server/tests/suite/v2/turn_start.rs b/codex-rs/app-server/tests/suite/v2/turn_start.rs index 68d02cf2bd..491207ad77 100644 --- a/codex-rs/app-server/tests/suite/v2/turn_start.rs +++ b/codex-rs/app-server/tests/suite/v2/turn_start.rs @@ -583,11 +583,13 @@ async fn turn_start_with_empty_input_runs_model_request() -> Result<()> { }) .await?; assert!(!turn.id.is_empty()); + assert_eq!(turn.root_turn_id.as_deref(), Some(turn.id.as_str())); let started: TurnStartedNotification = timeout(DEFAULT_READ_TIMEOUT, mcp.read_notification("turn/started")).await??; assert_eq!(started.thread_id, thread.id); assert_eq!(started.turn.id, turn.id); + assert_eq!(started.turn.root_turn_id.as_deref(), Some(turn.id.as_str())); assert_eq!(started.turn.status, TurnStatus::InProgress); let completed: TurnCompletedNotification = timeout( @@ -597,6 +599,10 @@ async fn turn_start_with_empty_input_runs_model_request() -> Result<()> { .await??; assert_eq!(completed.thread_id, thread.id); assert_eq!(completed.turn.id, turn.id); + assert_eq!( + completed.turn.root_turn_id.as_deref(), + Some(turn.id.as_str()) + ); assert_eq!(completed.turn.status, TurnStatus::Completed); assert_eq!(completed.turn.items_view, TurnItemsView::Summary); assert!(matches!( @@ -703,16 +709,17 @@ async fn turn_start_steers_active_turn_and_returns_active_turn_id() -> Result<() text_elements: Vec::new(), }], turn_trigger: Some("goal".to_string()), + parent_turn_id: Some("initiating-turn".to_string()), + root_turn_id: Some("causal-root".to_string()), cyber_access_program: Some(CyberAccessProgram::DaybreakBlue), ..Default::default() }, }) .await?; - timeout( - DEFAULT_READ_TIMEOUT, - mcp.read_stream_until_notification_message("turn/started"), - ) - .await??; + let started: TurnStartedNotification = + timeout(DEFAULT_READ_TIMEOUT, mcp.read_notification("turn/started")).await??; + assert_eq!(active_turn.root_turn_id.as_deref(), Some("causal-root")); + assert_eq!(started.turn.root_turn_id.as_deref(), Some("causal-root")); timeout( DEFAULT_READ_TIMEOUT, server.wait_for_request_count(/*count*/ 1), @@ -746,21 +753,25 @@ async fn turn_start_steers_active_turn_and_returns_active_turn_id() -> Result<() text_elements: Vec::new(), }], turn_trigger: Some("user".to_string()), + parent_turn_id: Some("steering-turn".to_string()), + root_turn_id: Some("steering-root".to_string()), cyber_access_program: Some(CyberAccessProgram::Standard), ..Default::default() }, }) .await?; assert_eq!(steered_turn.id, active_turn.id); + assert_eq!(steered_turn.root_turn_id, active_turn.root_turn_id); release_response .send(()) .expect("active response gate should remain open"); - timeout( + let completed: TurnCompletedNotification = timeout( DEFAULT_READ_TIMEOUT, - mcp.read_stream_until_notification_message("turn/completed"), + mcp.read_notification("turn/completed"), ) .await??; + assert_eq!(completed.turn.root_turn_id.as_deref(), Some("causal-root")); let requests = server.requests().await; assert_eq!(requests.len(), 2); @@ -773,6 +784,8 @@ async fn turn_start_steers_active_turn_and_returns_active_turn_id() -> Result<() .context("expected x-codex-turn-metadata")?, )?; assert_eq!(turn_metadata["turn_trigger"].as_str(), Some("goal")); + assert_eq!(turn_metadata["parent_turn_id"], "initiating-turn"); + assert_eq!(turn_metadata["root_turn_id"], "causal-root"); } Ok(()) } @@ -3389,6 +3402,8 @@ async fn turn_start_explicit_local_environment_updates_legacy_cwd_between_turns( text_elements: Vec::new(), }], turn_trigger: None, + parent_turn_id: None, + root_turn_id: None, tool_output: None, responsesapi_client_metadata: None, additional_context: None, @@ -3442,6 +3457,8 @@ async fn turn_start_explicit_local_environment_updates_legacy_cwd_between_turns( text_elements: Vec::new(), }], turn_trigger: None, + parent_turn_id: None, + root_turn_id: None, tool_output: None, responsesapi_client_metadata: None, additional_context: None, diff --git a/codex-rs/core/src/agent/control.rs b/codex-rs/core/src/agent/control.rs index 903f178b17..952632070b 100644 --- a/codex-rs/core/src/agent/control.rs +++ b/codex-rs/core/src/agent/control.rs @@ -142,7 +142,7 @@ impl LocalAgentControl { .start_or_steer_turn(TurnInputRequest::user_input(input).on_start(start_options)) .await { - Ok(TurnInputSubmission::Started { turn_id }) => Ok(turn_id), + Ok(TurnInputSubmission::Started { turn_id, .. }) => Ok(turn_id), Ok(TurnInputSubmission::Steered { .. }) => { // MAv1 exposes an opaque `submission_id` to the model. The legacy // `Op::UserInput` path returned a fresh ID for every steer, while the diff --git a/codex-rs/core/src/agent/control/residency_tests.rs b/codex-rs/core/src/agent/control/residency_tests.rs index b23f02ff71..5b524c8278 100644 --- a/codex-rs/core/src/agent/control/residency_tests.rs +++ b/codex-rs/core/src/agent/control/residency_tests.rs @@ -194,6 +194,7 @@ async fn mark_thread_completed(thread: &CodexThread) { .send_event( turn.as_ref(), EventMsg::TurnComplete(TurnCompleteEvent { + root_turn_id: None, turn_id: turn.sub_id.clone(), started_at: None, last_agent_message: Some("done".to_string()), @@ -214,6 +215,7 @@ async fn mark_thread_interrupted(thread: &CodexThread) { .send_event( turn.as_ref(), EventMsg::TurnAborted(TurnAbortedEvent { + root_turn_id: None, turn_id: Some(turn.sub_id.clone()), started_at: None, reason: TurnAbortReason::Interrupted, diff --git a/codex-rs/core/src/agent/control_tests.rs b/codex-rs/core/src/agent/control_tests.rs index 17404e0acc..efe629928c 100644 --- a/codex-rs/core/src/agent/control_tests.rs +++ b/codex-rs/core/src/agent/control_tests.rs @@ -590,6 +590,7 @@ async fn on_event_updates_status_from_task_complete() { ), ] { let status = agent_status_from_event(&EventMsg::TurnComplete(TurnCompleteEvent { + root_turn_id: None, turn_id: "turn-1".to_string(), started_at: None, last_agent_message: Some("done".to_string()), @@ -617,6 +618,7 @@ async fn on_event_updates_status_from_error() { #[tokio::test] async fn on_event_updates_status_from_turn_aborted() { let status = agent_status_from_event(&EventMsg::TurnAborted(TurnAbortedEvent { + root_turn_id: None, turn_id: Some("turn-1".to_string()), started_at: None, reason: TurnAbortReason::Interrupted, @@ -3948,6 +3950,7 @@ async fn multi_agent_v2_completion_ignores_dead_direct_parent() { .send_event( tester_turn.as_ref(), EventMsg::TurnComplete(TurnCompleteEvent { + root_turn_id: None, turn_id: tester_turn.sub_id.clone(), started_at: None, last_agent_message: Some("done".to_string()), @@ -4030,6 +4033,7 @@ async fn multi_agent_v2_completion_queues_message_for_direct_parent() { .send_event( tester_turn.as_ref(), EventMsg::TurnComplete(TurnCompleteEvent { + root_turn_id: None, turn_id: tester_turn.sub_id.clone(), started_at: None, last_agent_message: Some("done".to_string()), diff --git a/codex-rs/core/src/codex_delegate_tests.rs b/codex-rs/core/src/codex_delegate_tests.rs index 0ca83da485..d4e347c252 100644 --- a/codex-rs/core/src/codex_delegate_tests.rs +++ b/codex-rs/core/src/codex_delegate_tests.rs @@ -51,6 +51,7 @@ async fn forward_events_filters_private_events_before_blocked_send_is_cancelled( .send(Event { id: "full".to_string(), msg: EventMsg::TurnAborted(TurnAbortedEvent { + root_turn_id: None, turn_id: Some("turn-1".to_string()), started_at: None, reason: TurnAbortReason::Interrupted, diff --git a/codex-rs/core/src/codex_thread.rs b/codex-rs/core/src/codex_thread.rs index 7eb186016d..9628c834d3 100644 --- a/codex-rs/core/src/codex_thread.rs +++ b/codex-rs/core/src/codex_thread.rs @@ -425,9 +425,13 @@ impl CodexThread { .submit_turn_input_with_mode(request, TurnInputMode::StartIfIdle) .await? { - TurnInputSubmission::Started { turn_id } => { - Ok(StartIfIdleSubmission::Started { turn_id }) - } + TurnInputSubmission::Started { + turn_id, + root_turn_id, + } => Ok(StartIfIdleSubmission::Started { + turn_id, + root_turn_id, + }), TurnInputSubmission::NotSubmitted { reason } => { Ok(StartIfIdleSubmission::NotSubmitted { reason }) } @@ -489,9 +493,13 @@ impl CodexThread { ) .await? { - TurnInputSubmission::Started { turn_id } => { - Ok(StartIfIdleSubmission::Started { turn_id }) - } + TurnInputSubmission::Started { + turn_id, + root_turn_id, + } => Ok(StartIfIdleSubmission::Started { + turn_id, + root_turn_id, + }), TurnInputSubmission::NotSubmitted { reason } => { Ok(StartIfIdleSubmission::NotSubmitted { reason }) } @@ -554,7 +562,9 @@ impl CodexThread { .submit_turn_input_with_mode(request, TurnInputMode::Steer { expected_turn_id }) .await? { - TurnInputSubmission::Steered { turn_id } => Ok(SteerSubmission::Steered { turn_id }), + TurnInputSubmission::Steered { turn_id, .. } => { + Ok(SteerSubmission::Steered { turn_id }) + } TurnInputSubmission::NotSubmitted { reason } => { Ok(SteerSubmission::NotSubmitted { reason }) } diff --git a/codex-rs/core/src/guardian/review_session_tests.rs b/codex-rs/core/src/guardian/review_session_tests.rs index fe6323b7ae..47fdc5f6ce 100644 --- a/codex-rs/core/src/guardian/review_session_tests.rs +++ b/codex-rs/core/src/guardian/review_session_tests.rs @@ -107,6 +107,7 @@ async fn run_review_preserves_evidence_during_parent_compaction() { let text = serde_json::to_string(&content).unwrap(); reply .send(Ok(TurnInputSubmission::Started { + root_turn_id: id.clone(), turn_id: id.clone(), })) .unwrap(); @@ -179,6 +180,7 @@ fn turn_complete_event( Event { id: turn_id.to_string(), msg: EventMsg::TurnComplete(TurnCompleteEvent { + root_turn_id: None, turn_id: turn_id.to_string(), started_at: None, last_agent_message: last_agent_message.map(str::to_string), @@ -194,6 +196,7 @@ fn turn_aborted_event(turn_id: &str) -> Event { Event { id: turn_id.to_string(), msg: EventMsg::TurnAborted(TurnAbortedEvent { + root_turn_id: None, turn_id: Some(turn_id.to_string()), started_at: None, reason: TurnAbortReason::Interrupted, @@ -728,6 +731,7 @@ async fn run_review_on_reused_session_waits_for_submitted_turn() { }; reply .send(Ok(TurnInputSubmission::Started { + root_turn_id: id.clone(), turn_id: id.clone(), })) .expect("reply to guardian submission"); @@ -791,7 +795,10 @@ async fn run_review_removes_trunk_when_event_stream_is_broken() { panic!("expected turn-input submission"); }; reply - .send(Ok(TurnInputSubmission::Started { turn_id: id })) + .send(Ok(TurnInputSubmission::Started { + root_turn_id: id.clone(), + turn_id: id, + })) .expect("reply to guardian submission"); drop(tx_event); diff --git a/codex-rs/core/src/guardian/tests.rs b/codex-rs/core/src/guardian/tests.rs index 70589be7f3..cb9f819740 100644 --- a/codex-rs/core/src/guardian/tests.rs +++ b/codex-rs/core/src/guardian/tests.rs @@ -2971,6 +2971,7 @@ async fn guardian_reused_trunk_ignores_stale_prior_turn_completion() -> anyhow:: .send_trunk_event_raw_for_test(Event { id: "stale-turn".to_string(), msg: EventMsg::TurnComplete(TurnCompleteEvent { + root_turn_id: None, turn_id: "stale-turn".to_string(), started_at: None, last_agent_message: Some( diff --git a/codex-rs/core/src/realtime_conversation/transcript_tail.rs b/codex-rs/core/src/realtime_conversation/transcript_tail.rs index eb778e4a0b..db8e85da72 100644 --- a/codex-rs/core/src/realtime_conversation/transcript_tail.rs +++ b/codex-rs/core/src/realtime_conversation/transcript_tail.rs @@ -73,6 +73,7 @@ pub(super) async fn record(session: &Session, text: String) -> std::io::Result<( if recording_turn { events.push(EventMsg::TurnComplete(TurnCompleteEvent { turn_id: turn.sub_id.clone(), + root_turn_id: Some(turn.sub_id.clone()), last_agent_message: None, error: None, started_at: Some(now.timestamp()), diff --git a/codex-rs/core/src/realtime_history_tests.rs b/codex-rs/core/src/realtime_history_tests.rs index c6b0b977a6..18aea1636a 100644 --- a/codex-rs/core/src/realtime_history_tests.rs +++ b/codex-rs/core/src/realtime_history_tests.rs @@ -140,6 +140,7 @@ fn interrupted_turn_is_not_associated_with_a_new_voice_session( }, )); let aborted = EventMsg::TurnAborted(TurnAbortedEvent { + root_turn_id: None, turn_id: aborted_turn_id.map(str::to_string), reason: TurnAbortReason::Interrupted, error: None, @@ -175,6 +176,7 @@ fn interrupted_turn_is_not_associated_with_a_new_voice_session( fn interrupted_turn_keeps_its_existing_voice_session_for_late_artifacts() { let mut state = started_state(); state.observe(&EventMsg::TurnAborted(TurnAbortedEvent { + root_turn_id: None, turn_id: Some("turn-1".to_string()), reason: TurnAbortReason::Interrupted, error: None, diff --git a/codex-rs/core/src/session/mod.rs b/codex-rs/core/src/session/mod.rs index 7f0bd90d16..279bacf897 100644 --- a/codex-rs/core/src/session/mod.rs +++ b/codex-rs/core/src/session/mod.rs @@ -2266,12 +2266,7 @@ impl Session { let event = TurnStartedEvent { turn_attribution: (task_kind == TaskKind::Regular).then(|| turn_context.attribution()), turn_id: turn_context.sub_id.clone(), - root_turn_id: Some( - turn_context - .turn_metadata_state - .root_turn_id() - .unwrap_or_else(|| turn_context.sub_id.clone()), - ), + root_turn_id: Some(turn_context.root_turn_id()), trace_id: turn_context.trace_id.clone(), started_at: turn_context.turn_timing_state.started_at_unix_secs().await, model_context_window: turn_context.model_context_window(), diff --git a/codex-rs/core/src/session/rollout_reconstruction_tests.rs b/codex-rs/core/src/session/rollout_reconstruction_tests.rs index ddf567e159..4cbf3518a2 100644 --- a/codex-rs/core/src/session/rollout_reconstruction_tests.rs +++ b/codex-rs/core/src/session/rollout_reconstruction_tests.rs @@ -284,6 +284,7 @@ fn completed_user_turn_rollout( rollout_items.extend(items); rollout_items.push(RolloutItem::EventMsg(EventMsg::TurnComplete( codex_protocol::protocol::TurnCompleteEvent { + root_turn_id: None, turn_id, last_agent_message: None, error: None, @@ -547,6 +548,7 @@ async fn record_initial_history_resumed_hydrates_previous_turn_settings_from_lif RolloutItem::TurnContext(previous_context_item), RolloutItem::EventMsg(EventMsg::TurnComplete( codex_protocol::protocol::TurnCompleteEvent { + root_turn_id: None, turn_id, last_agent_message: None, error: None, @@ -638,6 +640,7 @@ async fn reconstruct_history_rollback_keeps_history_and_metadata_in_sync_for_com RolloutItem::ResponseItem(turn_one_assistant.clone().into()), RolloutItem::EventMsg(EventMsg::TurnComplete( codex_protocol::protocol::TurnCompleteEvent { + root_turn_id: None, turn_id: first_turn_id, started_at: None, last_agent_message: None, @@ -681,6 +684,7 @@ async fn reconstruct_history_rollback_keeps_history_and_metadata_in_sync_for_com RolloutItem::ResponseItem(turn_two_assistant.into()), RolloutItem::EventMsg(EventMsg::TurnComplete( codex_protocol::protocol::TurnCompleteEvent { + root_turn_id: None, turn_id: rolled_back_turn_id, started_at: None, last_agent_message: None, @@ -768,6 +772,7 @@ async fn reconstruct_history_rollback_keeps_history_and_metadata_in_sync_for_inc RolloutItem::ResponseItem(turn_one_assistant.clone().into()), RolloutItem::EventMsg(EventMsg::TurnComplete( codex_protocol::protocol::TurnCompleteEvent { + root_turn_id: None, turn_id: first_turn_id, started_at: None, last_agent_message: None, @@ -873,6 +878,7 @@ async fn reconstruct_history_rollback_skips_non_user_turns_for_history_and_metad RolloutItem::ResponseItem(turn_one_assistant.clone().into()), RolloutItem::EventMsg(EventMsg::TurnComplete( codex_protocol::protocol::TurnCompleteEvent { + root_turn_id: None, turn_id: first_turn_id, started_at: None, last_agent_message: None, @@ -907,6 +913,7 @@ async fn reconstruct_history_rollback_skips_non_user_turns_for_history_and_metad RolloutItem::ResponseItem(turn_two_assistant.into()), RolloutItem::EventMsg(EventMsg::TurnComplete( codex_protocol::protocol::TurnCompleteEvent { + root_turn_id: None, turn_id: second_turn_id, started_at: None, last_agent_message: None, @@ -935,6 +942,7 @@ async fn reconstruct_history_rollback_skips_non_user_turns_for_history_and_metad }), RolloutItem::EventMsg(EventMsg::TurnComplete( codex_protocol::protocol::TurnCompleteEvent { + root_turn_id: None, turn_id: standalone_turn_id, started_at: None, last_agent_message: None, @@ -1017,6 +1025,7 @@ async fn reconstruct_history_rollback_counts_inter_agent_assistant_turns() { RolloutItem::ResponseItem(assistant_message("turn 1 assistant").into()), RolloutItem::EventMsg(EventMsg::TurnComplete( codex_protocol::protocol::TurnCompleteEvent { + root_turn_id: None, turn_id: first_turn_id, started_at: None, last_agent_message: None, @@ -1042,6 +1051,7 @@ async fn reconstruct_history_rollback_counts_inter_agent_assistant_turns() { RolloutItem::ResponseItem(assistant_reply.into()), RolloutItem::EventMsg(EventMsg::TurnComplete( codex_protocol::protocol::TurnCompleteEvent { + root_turn_id: None, turn_id: assistant_turn_id, started_at: None, last_agent_message: None, @@ -1119,6 +1129,7 @@ async fn reconstruct_history_rollback_clears_history_and_metadata_when_exceeding RolloutItem::ResponseItem(assistant_message("only assistant").into()), RolloutItem::EventMsg(EventMsg::TurnComplete( codex_protocol::protocol::TurnCompleteEvent { + root_turn_id: None, turn_id: only_turn_id, started_at: None, last_agent_message: None, @@ -1177,6 +1188,7 @@ async fn record_initial_history_resumed_rollback_skips_only_user_turns() { RolloutItem::TurnContext(previous_context_item), RolloutItem::EventMsg(EventMsg::TurnComplete( codex_protocol::protocol::TurnCompleteEvent { + root_turn_id: None, turn_id: user_turn_id, started_at: None, last_agent_message: None, @@ -1200,6 +1212,7 @@ async fn record_initial_history_resumed_rollback_skips_only_user_turns() { )), RolloutItem::EventMsg(EventMsg::TurnComplete( codex_protocol::protocol::TurnCompleteEvent { + root_turn_id: None, turn_id: standalone_turn_id, started_at: None, last_agent_message: None, @@ -1262,6 +1275,7 @@ async fn record_initial_history_resumed_rollback_drops_incomplete_user_turn_comp RolloutItem::TurnContext(previous_context_item.clone()), RolloutItem::EventMsg(EventMsg::TurnComplete( codex_protocol::protocol::TurnCompleteEvent { + root_turn_id: None, turn_id: previous_turn_id, started_at: None, last_agent_message: None, @@ -1640,6 +1654,7 @@ async fn bounded_replay_matches_full_replay_after_empty_turn_compactions( }); wake_items.push(RolloutItem::EventMsg(EventMsg::TurnAborted( codex_protocol::protocol::TurnAbortedEvent { + root_turn_id: None, turn_id: Some(format!("wake-{window_number}")), reason: TurnAbortReason::Interrupted, error: None, @@ -2095,6 +2110,7 @@ async fn reconstruct_history_legacy_compaction_without_replacement_history_clear RolloutItem::TurnContext(current_context_item), RolloutItem::EventMsg(EventMsg::TurnComplete( codex_protocol::protocol::TurnCompleteEvent { + root_turn_id: None, turn_id: current_turn_id, started_at: None, last_agent_message: None, @@ -2189,6 +2205,7 @@ async fn record_initial_history_resumed_turn_context_after_compaction_reestablis RolloutItem::TurnContext(previous_context_item), RolloutItem::EventMsg(EventMsg::TurnComplete( codex_protocol::protocol::TurnCompleteEvent { + root_turn_id: None, turn_id: previous_turn_id, started_at: None, last_agent_message: None, @@ -2315,6 +2332,7 @@ async fn record_initial_history_resumed_aborted_turn_without_id_clears_active_tu RolloutItem::TurnContext(previous_context_item), RolloutItem::EventMsg(EventMsg::TurnComplete( codex_protocol::protocol::TurnCompleteEvent { + root_turn_id: None, turn_id: previous_turn_id, started_at: None, last_agent_message: None, @@ -2347,6 +2365,7 @@ async fn record_initial_history_resumed_aborted_turn_without_id_clears_active_tu )), RolloutItem::EventMsg(EventMsg::TurnAborted( codex_protocol::protocol::TurnAbortedEvent { + root_turn_id: None, turn_id: None, started_at: None, reason: TurnAbortReason::Interrupted, @@ -2457,6 +2476,7 @@ async fn record_initial_history_resumed_unmatched_abort_preserves_active_turn_fo RolloutItem::TurnContext(previous_context_item), RolloutItem::EventMsg(EventMsg::TurnComplete( codex_protocol::protocol::TurnCompleteEvent { + root_turn_id: None, turn_id: previous_turn_id, started_at: None, last_agent_message: None, @@ -2489,6 +2509,7 @@ async fn record_initial_history_resumed_unmatched_abort_preserves_active_turn_fo )), RolloutItem::EventMsg(EventMsg::TurnAborted( codex_protocol::protocol::TurnAbortedEvent { + root_turn_id: None, turn_id: Some(unmatched_abort_turn_id), started_at: None, reason: TurnAbortReason::Interrupted, @@ -2500,6 +2521,7 @@ async fn record_initial_history_resumed_unmatched_abort_preserves_active_turn_fo RolloutItem::TurnContext(current_context_item.clone()), RolloutItem::EventMsg(EventMsg::TurnComplete( codex_protocol::protocol::TurnCompleteEvent { + root_turn_id: None, turn_id: current_turn_id, started_at: None, last_agent_message: None, @@ -2600,6 +2622,7 @@ async fn record_initial_history_resumed_trailing_incomplete_turn_compaction_clea RolloutItem::TurnContext(previous_context_item), RolloutItem::EventMsg(EventMsg::TurnComplete( codex_protocol::protocol::TurnCompleteEvent { + root_turn_id: None, turn_id: previous_turn_id, started_at: None, last_agent_message: None, @@ -2791,6 +2814,7 @@ async fn record_initial_history_resumed_replaced_incomplete_compacted_turn_clear RolloutItem::TurnContext(previous_context_item), RolloutItem::EventMsg(EventMsg::TurnComplete( codex_protocol::protocol::TurnCompleteEvent { + root_turn_id: None, turn_id: previous_turn_id, started_at: None, last_agent_message: None, diff --git a/codex-rs/core/src/session/tests.rs b/codex-rs/core/src/session/tests.rs index 81e5a2d050..01f1e7d651 100644 --- a/codex-rs/core/src/session/tests.rs +++ b/codex-rs/core/src/session/tests.rs @@ -816,6 +816,7 @@ async fn interrupting_regular_turn_waiting_on_startup_prewarm_emits_turn_aborted .expect("expected turn aborted event") .expect("channel open"); let EventMsg::TurnAborted(TurnAbortedEvent { + root_turn_id, turn_id, reason, error: _, @@ -826,6 +827,7 @@ async fn interrupting_regular_turn_waiting_on_startup_prewarm_emits_turn_aborted else { panic!("expected turn aborted event"); }; + assert_eq!(root_turn_id, Some(tc.root_turn_id())); assert_eq!(turn_id, Some(tc.sub_id.clone())); assert_eq!(reason, TurnAbortReason::Interrupted); assert!(started_at.is_some()); @@ -4360,6 +4362,7 @@ async fn record_initial_history_forked_hydrates_previous_turn_settings() { RolloutItem::TurnContext(previous_context_item.clone()), RolloutItem::EventMsg(EventMsg::TurnComplete( codex_protocol::protocol::TurnCompleteEvent { + root_turn_id: None, turn_id, last_agent_message: None, error: None, @@ -6282,6 +6285,7 @@ async fn compaction_persists_resume_metadata_and_companion_records() { if let Some(turn_id) = last_started_turn_id { items.push(RolloutItem::EventMsg(EventMsg::TurnComplete( TurnCompleteEvent { + root_turn_id: None, turn_id, last_agent_message: None, error: None, diff --git a/codex-rs/core/src/session/turn_context.rs b/codex-rs/core/src/session/turn_context.rs index 0c85aa0d7d..9a57d40291 100644 --- a/codex-rs/core/src/session/turn_context.rs +++ b/codex-rs/core/src/session/turn_context.rs @@ -399,6 +399,13 @@ enum TurnContextBuildMode { } impl TurnContext { + /// Returns the resolved causal root for this admitted turn. + pub(crate) fn root_turn_id(&self) -> String { + self.turn_metadata_state + .root_turn_id() + .unwrap_or_else(|| self.sub_id.clone()) + } + /// Builds a review turn with shared session grants and fresh turn-local state. pub(super) fn for_review( &self, diff --git a/codex-rs/core/src/session/turn_input.rs b/codex-rs/core/src/session/turn_input.rs index c1ce885c7c..84b418a94d 100644 --- a/codex-rs/core/src/session/turn_input.rs +++ b/codex-rs/core/src/session/turn_input.rs @@ -268,8 +268,9 @@ pub(super) async fn handle( } }; // Link this request's trace to the accepted turn, which may have an older trace. - if let Ok(TurnInputSubmission::Started { turn_id } | TurnInputSubmission::Steered { turn_id }) = - &result + if let Ok( + TurnInputSubmission::Started { turn_id, .. } | TurnInputSubmission::Steered { turn_id, .. }, + ) = &result { tracing::Span::current().record("turn.id", turn_id); } @@ -306,7 +307,7 @@ pub(super) async fn handle_recovery( /*expected_previous_turn_id*/ None, ) .await; - if let Ok(TurnInputSubmission::Started { turn_id }) = &result { + if let Ok(TurnInputSubmission::Started { turn_id, .. }) = &result { tracing::Span::current().record("turn.id", turn_id); } result @@ -363,9 +364,12 @@ async fn start_or_steer( ) .await { - Ok(turn_id) => { + Ok((turn_id, root_turn_id)) => { settings.apply_steered(session, submission_id).await?; - Ok(TurnInputSubmission::Steered { turn_id }) + Ok(TurnInputSubmission::Steered { + turn_id, + root_turn_id, + }) } Err(NotSubmittedReason::NoActiveTurn) => { // MAv1 sends explicit input to spawned agents as part of an existing @@ -413,10 +417,11 @@ async fn start_or_steer( .push(pending_turn_input(session, input, &turn_context.sub_id, origin).await); } session - .spawn_task(turn_context, task_input, RegularTask::new()) + .spawn_task(Arc::clone(&turn_context), task_input, RegularTask::new()) .await; Ok(TurnInputSubmission::Started { turn_id: submission_id, + root_turn_id: turn_context.root_turn_id(), }) } Err(reason) => Ok(TurnInputSubmission::NotSubmitted { reason }), @@ -575,10 +580,11 @@ async fn start_if_idle( } } session - .start_task(turn_context, task_input, RegularTask::new()) + .start_task(Arc::clone(&turn_context), task_input, RegularTask::new()) .await; Ok(TurnInputSubmission::Started { turn_id: submission_id, + root_turn_id: turn_context.root_turn_id(), }) } @@ -626,9 +632,12 @@ async fn steer( ) .await { - Ok(turn_id) => { + Ok((turn_id, root_turn_id)) => { settings.apply_steered(session, submission_id).await?; - Ok(TurnInputSubmission::Steered { turn_id }) + Ok(TurnInputSubmission::Steered { + turn_id, + root_turn_id, + }) } Err(reason) => Ok(TurnInputSubmission::NotSubmitted { reason }), } @@ -721,7 +730,7 @@ impl Session { required_final_output_json_schema: Option<&Value>, responsesapi_client_metadata: Option>, origin: UserInputOrigin, - ) -> Result { + ) -> Result<(String, String), NotSubmittedReason> { let mut active = self.active_turn.lock().await; let Some(active_turn) = active.as_mut() else { return Err(NotSubmittedReason::NoActiveTurn); @@ -799,7 +808,10 @@ impl Session { pending_input, ) .await; - Ok(active_turn_id.clone()) + Ok(( + active_turn_id.clone(), + active_task.turn_context.root_turn_id(), + )) } } diff --git a/codex-rs/core/src/session/turn_input_tests.rs b/codex-rs/core/src/session/turn_input_tests.rs index e76b3e2684..bb338c72dd 100644 --- a/codex-rs/core/src/session/turn_input_tests.rs +++ b/codex-rs/core/src/session/turn_input_tests.rs @@ -159,6 +159,7 @@ async fn steering_does_not_wait_for_realtime_history() { assert_eq!( submission, TurnInputSubmission::Steered { + root_turn_id: turn_context.sub_id.clone(), turn_id: turn_context.sub_id.clone() } ); @@ -922,6 +923,7 @@ async fn steer_only_enforces_expected_turn_id() { assert_eq!( submission, TurnInputSubmission::Steered { + root_turn_id: turn_context.sub_id.clone(), turn_id: turn_context.sub_id.clone() } ); diff --git a/codex-rs/core/src/tasks/mod.rs b/codex-rs/core/src/tasks/mod.rs index fc9272e911..44baa9d60d 100644 --- a/codex-rs/core/src/tasks/mod.rs +++ b/codex-rs/core/src/tasks/mod.rs @@ -820,6 +820,7 @@ impl Session { self.emit_turn_abort_lifecycle(reason.clone(), turn_context.extension_data.as_ref()) .await; EventMsg::TurnAborted(TurnAbortedEvent { + root_turn_id: Some(turn_context.root_turn_id()), turn_id: Some(turn_context.sub_id.clone()), reason, error: None, @@ -836,6 +837,7 @@ impl Session { self.emit_turn_stop_lifecycle(turn_context.extension_data.as_ref()) .await; EventMsg::TurnComplete(TurnCompleteEvent { + root_turn_id: Some(turn_context.root_turn_id()), turn_id: turn_context.sub_id.clone(), last_agent_message, error, @@ -1003,6 +1005,7 @@ impl Session { self.emit_turn_abort_lifecycle(reason.clone(), task.turn_context.extension_data.as_ref()) .await; let event = EventMsg::TurnAborted(TurnAbortedEvent { + root_turn_id: Some(task.turn_context.root_turn_id()), turn_id: Some(task.turn_context.sub_id.clone()), reason, error, diff --git a/codex-rs/core/src/tasks/mod_tests.rs b/codex-rs/core/src/tasks/mod_tests.rs index 94c2373519..86a0dbf561 100644 --- a/codex-rs/core/src/tasks/mod_tests.rs +++ b/codex-rs/core/src/tasks/mod_tests.rs @@ -137,7 +137,7 @@ async fn turn_completion_metrics_follow_model_switch(scenario: UsageScenario) { .with_runtime_reader(), ) .expect("in-memory metrics client"); - let (mut session, mut turn_context, _receiver) = make_session_and_context_with_rx().await; + let (mut session, mut turn_context, receiver) = make_session_and_context_with_rx().await; let session_telemetry = session .services .session_telemetry @@ -243,7 +243,21 @@ async fn turn_completion_metrics_follow_model_switch(scenario: UsageScenario) { } else { Ok(None) }; + let expected_root = turn_context.root_turn_id(); session.on_task_finished(turn_context, task_result).await; + let mut terminal_root = None; + while let Ok(event) = receiver.try_recv() { + match event.msg { + codex_protocol::protocol::EventMsg::TurnComplete(event) => { + terminal_root = event.root_turn_id; + } + codex_protocol::protocol::EventMsg::TurnAborted(event) => { + terminal_root = event.root_turn_id; + } + _ => {} + } + } + assert_eq!(terminal_root, Some(expected_root)); let snapshot = metrics.snapshot().expect("runtime metrics snapshot"); let token_usage_metric = find_metric(&snapshot, TURN_TOKEN_USAGE_METRIC); diff --git a/codex-rs/core/src/thread_manager.rs b/codex-rs/core/src/thread_manager.rs index 49d42eccfd..4bd5bff358 100644 --- a/codex-rs/core/src/thread_manager.rs +++ b/codex-rs/core/src/thread_manager.rs @@ -2606,6 +2606,7 @@ struct SnapshotTurnState { ends_mid_turn: bool, active_turn_id: Option, active_turn_started_at: Option, + active_turn_root_id: Option, active_turn_start_index: Option, } @@ -2626,6 +2627,7 @@ fn snapshot_turn_state(history: &InitialHistory) -> SnapshotTurnState { ends_mid_turn: false, active_turn_id: None, active_turn_started_at: None, + active_turn_root_id: None, active_turn_start_index: None, }; } @@ -2633,7 +2635,10 @@ fn snapshot_turn_state(history: &InitialHistory) -> SnapshotTurnState { return SnapshotTurnState { ends_mid_turn: true, active_turn_id, - active_turn_started_at: active_turn_snapshot.and_then(|turn| turn.started_at), + active_turn_started_at: active_turn_snapshot + .as_ref() + .and_then(|turn| turn.started_at), + active_turn_root_id: active_turn_snapshot.and_then(|turn| turn.root_turn_id), active_turn_start_index: builder.active_turn_start_index(), }; } @@ -2646,6 +2651,7 @@ fn snapshot_turn_state(history: &InitialHistory) -> SnapshotTurnState { ends_mid_turn: false, active_turn_id: None, active_turn_started_at: None, + active_turn_root_id: None, active_turn_start_index: None, }; }; @@ -2662,6 +2668,7 @@ fn snapshot_turn_state(history: &InitialHistory) -> SnapshotTurnState { }), active_turn_id: None, active_turn_started_at: None, + active_turn_root_id: None, active_turn_start_index: None, } } @@ -2689,6 +2696,7 @@ fn fork_history_from_snapshot( append_interrupted_boundary( history, snapshot_state.active_turn_id, + snapshot_state.active_turn_root_id, snapshot_state.active_turn_started_at, interrupted_marker, ) @@ -2705,10 +2713,12 @@ fn fork_history_from_snapshot( fn append_interrupted_boundary( history: InitialHistory, turn_id: Option, + root_turn_id: Option, started_at: Option, interrupted_marker: InterruptedTurnHistoryMarker, ) -> InitialHistory { let aborted_event = RolloutItem::EventMsg(EventMsg::TurnAborted(TurnAbortedEvent { + root_turn_id, turn_id, reason: TurnAbortReason::Interrupted, error: None, diff --git a/codex-rs/core/src/thread_manager_tests.rs b/codex-rs/core/src/thread_manager_tests.rs index 13e0b069bc..6d8ae1e327 100644 --- a/codex-rs/core/src/thread_manager_tests.rs +++ b/codex-rs/core/src/thread_manager_tests.rs @@ -718,6 +718,7 @@ fn truncates_before_requested_user_message() { ends_mid_turn: false, active_turn_id: None, active_turn_started_at: None, + active_turn_root_id: None, active_turn_start_index: None, }, ); @@ -744,6 +745,7 @@ fn truncates_before_requested_user_message() { ends_mid_turn: false, active_turn_id: None, active_turn_started_at: None, + active_turn_root_id: None, active_turn_start_index: None, }, ); @@ -769,6 +771,7 @@ fn out_of_range_truncation_drops_only_unfinished_suffix_mid_turn() { ends_mid_turn: true, active_turn_id: None, active_turn_started_at: None, + active_turn_root_id: None, active_turn_start_index: None, }, ); @@ -818,6 +821,7 @@ fn out_of_range_truncation_drops_pre_user_active_turn_prefix() { ends_mid_turn: true, active_turn_id: Some("turn-2".to_string()), active_turn_started_at: None, + active_turn_root_id: None, active_turn_start_index: Some(2), }, ); @@ -863,6 +867,7 @@ async fn ignores_session_prefix_messages_when_truncating() { ends_mid_turn: false, active_turn_id: None, active_turn_started_at: None, + active_turn_root_id: None, active_turn_start_index: None, }, ); @@ -2772,6 +2777,7 @@ fn interrupted_fork_snapshot_appends_interrupt_boundary() { append_interrupted_boundary( committed_history, /*turn_id*/ None, + /*root_turn_id*/ None, /*started_at*/ None, InterruptedTurnHistoryMarker::ContextualUser, ) @@ -2782,6 +2788,7 @@ fn interrupted_fork_snapshot_appends_interrupt_boundary() { RolloutItem::ResponseItem(user_msg("hello").into()), RolloutItem::ResponseItem(contextual_user_interrupted_marker().into()), RolloutItem::EventMsg(EventMsg::TurnAborted(TurnAbortedEvent { + root_turn_id: None, turn_id: None, started_at: None, reason: TurnAbortReason::Interrupted, @@ -2797,6 +2804,7 @@ fn interrupted_fork_snapshot_appends_interrupt_boundary() { append_interrupted_boundary( InitialHistory::New, /*turn_id*/ None, + /*root_turn_id*/ None, /*started_at*/ None, InterruptedTurnHistoryMarker::ContextualUser, ) @@ -2806,6 +2814,7 @@ fn interrupted_fork_snapshot_appends_interrupt_boundary() { serde_json::to_value(vec![ RolloutItem::ResponseItem(contextual_user_interrupted_marker().into()), RolloutItem::EventMsg(EventMsg::TurnAborted(TurnAbortedEvent { + root_turn_id: None, turn_id: None, started_at: None, reason: TurnAbortReason::Interrupted, @@ -2828,6 +2837,7 @@ fn disabled_interrupted_fork_snapshot_appends_only_interrupt_event() { append_interrupted_boundary( committed_history, /*turn_id*/ None, + /*root_turn_id*/ None, /*started_at*/ None, InterruptedTurnHistoryMarker::Disabled, ) @@ -2837,6 +2847,7 @@ fn disabled_interrupted_fork_snapshot_appends_only_interrupt_event() { serde_json::to_value(vec![ RolloutItem::ResponseItem(user_msg("hello").into()), RolloutItem::EventMsg(EventMsg::TurnAborted(TurnAbortedEvent { + root_turn_id: None, turn_id: None, started_at: None, reason: TurnAbortReason::Interrupted, @@ -2852,6 +2863,7 @@ fn disabled_interrupted_fork_snapshot_appends_only_interrupt_event() { append_interrupted_boundary( InitialHistory::New, /*turn_id*/ None, + /*root_turn_id*/ None, /*started_at*/ None, InterruptedTurnHistoryMarker::Disabled, ) @@ -2860,6 +2872,7 @@ fn disabled_interrupted_fork_snapshot_appends_only_interrupt_event() { .expect("serialize disabled interrupted empty fork history"), serde_json::to_value(vec![RolloutItem::EventMsg(EventMsg::TurnAborted( TurnAbortedEvent { + root_turn_id: None, turn_id: None, started_at: None, reason: TurnAbortReason::Interrupted, @@ -2879,6 +2892,7 @@ fn interrupted_snapshot_is_not_mid_turn() { RolloutItem::ResponseItem(assistant_msg("partial").into()), RolloutItem::ResponseItem(contextual_user_interrupted_marker().into()), RolloutItem::EventMsg(EventMsg::TurnAborted(TurnAbortedEvent { + root_turn_id: None, turn_id: Some("turn-1".to_string()), started_at: None, reason: TurnAbortReason::Interrupted, @@ -2894,6 +2908,7 @@ fn interrupted_snapshot_is_not_mid_turn() { ends_mid_turn: false, active_turn_id: None, active_turn_started_at: None, + active_turn_root_id: None, active_turn_start_index: None, }, ); @@ -2951,6 +2966,7 @@ fn completed_legacy_event_history_is_not_mid_turn() { ends_mid_turn: false, active_turn_id: None, active_turn_started_at: None, + active_turn_root_id: None, active_turn_start_index: None, }, ); @@ -2976,6 +2992,7 @@ fn mixed_response_and_legacy_user_event_history_is_mid_turn() { ends_mid_turn: true, active_turn_id: None, active_turn_started_at: None, + active_turn_root_id: None, active_turn_start_index: None, }, ); @@ -3060,6 +3077,7 @@ async fn interrupted_fork_snapshot_does_not_synthesize_turn_id_for_legacy_histor .expect("serialize interrupted marker"); let interrupted_abort_json = serde_json::to_value(RolloutItem::EventMsg( EventMsg::TurnAborted(TurnAbortedEvent { + root_turn_id: None, turn_id: expected_turn_id, started_at: None, reason: TurnAbortReason::Interrupted, @@ -3155,6 +3173,7 @@ async fn interrupted_fork_snapshot_preserves_explicit_turn_id() { ends_mid_turn: true, active_turn_id: Some("turn-explicit".to_string()), active_turn_started_at: None, + active_turn_root_id: None, active_turn_start_index: Some(1), }, ); @@ -3184,6 +3203,7 @@ async fn interrupted_fork_snapshot_preserves_explicit_turn_id() { matches!( item, RolloutItem::EventMsg(EventMsg::TurnAborted(TurnAbortedEvent { + root_turn_id: None, turn_id: Some(turn_id), started_at: None, reason: TurnAbortReason::Interrupted, diff --git a/codex-rs/core/src/thread_rollout_truncation_tests.rs b/codex-rs/core/src/thread_rollout_truncation_tests.rs index 1495a9dfe5..cf034dff79 100644 --- a/codex-rs/core/src/thread_rollout_truncation_tests.rs +++ b/codex-rs/core/src/thread_rollout_truncation_tests.rs @@ -55,6 +55,7 @@ fn turn_started(turn_id: &str) -> RolloutItem { fn turn_completed(turn_id: &str) -> RolloutItem { RolloutItem::EventMsg(EventMsg::TurnComplete(TurnCompleteEvent { + root_turn_id: None, turn_id: turn_id.to_string(), started_at: None, last_agent_message: None, diff --git a/codex-rs/core/src/tools/handlers/multi_agents_tests.rs b/codex-rs/core/src/tools/handlers/multi_agents_tests.rs index bd75eafc9f..79b0f7f50c 100644 --- a/codex-rs/core/src/tools/handlers/multi_agents_tests.rs +++ b/codex-rs/core/src/tools/handlers/multi_agents_tests.rs @@ -1502,6 +1502,7 @@ async fn multi_agent_v2_list_agents_returns_completed_status() { .send_event( child_turn.as_ref(), EventMsg::TurnComplete(TurnCompleteEvent { + root_turn_id: None, turn_id: child_turn.sub_id.clone(), started_at: None, last_agent_message: Some("done".to_string()), @@ -1939,6 +1940,7 @@ async fn multi_agent_v2_followup_task_completion_notifies_parent_on_every_turn() .send_event( first_turn.as_ref(), EventMsg::TurnComplete(TurnCompleteEvent { + root_turn_id: None, turn_id: first_turn.sub_id.clone(), started_at: None, last_agent_message: Some("first done".to_string()), @@ -1981,6 +1983,7 @@ async fn multi_agent_v2_followup_task_completion_notifies_parent_on_every_turn() .send_event( second_turn.as_ref(), EventMsg::TurnComplete(TurnCompleteEvent { + root_turn_id: None, turn_id: second_turn.sub_id.clone(), started_at: None, last_agent_message: Some("second done".to_string()), @@ -2144,6 +2147,7 @@ async fn multi_agent_v2_interrupted_turn_does_not_notify_parent() { .send_event( aborted_turn.as_ref(), EventMsg::TurnAborted(TurnAbortedEvent { + root_turn_id: None, turn_id: Some(aborted_turn.sub_id.clone()), started_at: None, reason: TurnAbortReason::Interrupted, diff --git a/codex-rs/core/tests/suite/abort_tasks.rs b/codex-rs/core/tests/suite/abort_tasks.rs index 797ba476fe..19b39e5c9e 100644 --- a/codex-rs/core/tests/suite/abort_tasks.rs +++ b/codex-rs/core/tests/suite/abort_tasks.rs @@ -111,7 +111,7 @@ async fn root_turn_suspension_preserves_unfinished_turn_history() { }])) .await .expect("start root turn"); - let codex_core::TurnInputSubmission::Started { turn_id } = submitted else { + let codex_core::TurnInputSubmission::Started { turn_id, .. } = submitted else { panic!("expected a started root turn"); }; wait_for_event(&codex, |event| matches!(event, EventMsg::TurnStarted(_))).await; @@ -191,7 +191,8 @@ async fn root_turn_suspension_preserves_unfinished_turn_history() { .await .expect("recover the unfinished turn"), codex_core::StartIfIdleSubmission::Started { - turn_id: turn_id.clone(), + root_turn_id: turn_id.clone(), + turn_id: turn_id.clone() }, ); let completed = wait_for_event(&resumed.codex, |event| { diff --git a/codex-rs/core/tests/suite/compact.rs b/codex-rs/core/tests/suite/compact.rs index 8368404004..99eb604e82 100644 --- a/codex-rs/core/tests/suite/compact.rs +++ b/codex-rs/core/tests/suite/compact.rs @@ -4622,7 +4622,7 @@ async fn paginated_compaction_cold_resume_from_bounded_suffix() -> Result<()> { }, ) .await?; - let codex_core::TurnInputSubmission::Started { turn_id } = test + let codex_core::TurnInputSubmission::Started { turn_id, .. } = test .codex .start_or_steer_turn(TurnInputRequest::user_input(vec![UserInput::Text { text: FUNCTION_CALL_LIMIT_MSG.into(), diff --git a/codex-rs/core/tests/suite/cyber_access_program.rs b/codex-rs/core/tests/suite/cyber_access_program.rs index dbb709aa2b..829ec85c50 100644 --- a/codex-rs/core/tests/suite/cyber_access_program.rs +++ b/codex-rs/core/tests/suite/cyber_access_program.rs @@ -39,7 +39,7 @@ async fn recover_turn_restores_cyber_access_program_without_making_it_sticky() - .await; let mut builder = test_codex().with_auth(CodexAuth::create_dummy_chatgpt_auth_for_testing()); let initial = builder.build_with_streaming_server(&initial_server).await?; - let TurnInputSubmission::Started { turn_id } = initial + let TurnInputSubmission::Started { turn_id, .. } = initial .codex .start_or_steer_turn( TurnInputRequest::user_input(vec![UserInput::Text { @@ -105,7 +105,8 @@ async fn recover_turn_restores_cyber_access_program_without_making_it_sticky() - assert_eq!( submission, StartIfIdleSubmission::Started { - turn_id: turn_id.clone(), + root_turn_id: turn_id.clone(), + turn_id: turn_id.clone() } ); wait_for_event(&test.codex, |event| { @@ -133,6 +134,7 @@ async fn recover_turn_restores_cyber_access_program_without_making_it_sticky() - .await; let TurnInputSubmission::Started { turn_id: next_turn_id, + .. } = test .codex .start_or_steer_turn(TurnInputRequest::user_input(vec![UserInput::Text { diff --git a/codex-rs/core/tests/suite/git_enrichment.rs b/codex-rs/core/tests/suite/git_enrichment.rs index 5286068b10..bb06c8bda5 100644 --- a/codex-rs/core/tests/suite/git_enrichment.rs +++ b/codex-rs/core/tests/suite/git_enrichment.rs @@ -408,7 +408,7 @@ async fn ephemeral_system_thread_prewarm_skips_and_turn_observes_fresh_state( .and_then(|connection| connection.get(2)) .context("system turn follow-up request")? .body_json(); - let codex_core::TurnInputSubmission::Started { turn_id } = submission else { + let codex_core::TurnInputSubmission::Started { turn_id, .. } = submission else { panic!("background input should start a turn"); }; assert_root_turn(&turn, Some(&turn_id))?; diff --git a/codex-rs/core/tests/suite/mcp_auth_elicitation.rs b/codex-rs/core/tests/suite/mcp_auth_elicitation.rs index 80d3c9074c..732162376b 100644 --- a/codex-rs/core/tests/suite/mcp_auth_elicitation.rs +++ b/codex-rs/core/tests/suite/mcp_auth_elicitation.rs @@ -271,7 +271,7 @@ approvals_reviewer = "user" text_elements: Vec::new(), }]); let submitted = test.codex.start_or_steer_turn(request).await?; - let TurnInputSubmission::Started { turn_id } = submitted else { + let TurnInputSubmission::Started { turn_id, .. } = submitted else { anyhow::bail!("expected a new turn, got {submitted:?}"); }; diff --git a/codex-rs/core/tests/suite/pending_input.rs b/codex-rs/core/tests/suite/pending_input.rs index 0df8b4a20b..fee9018175 100644 --- a/codex-rs/core/tests/suite/pending_input.rs +++ b/codex-rs/core/tests/suite/pending_input.rs @@ -97,7 +97,7 @@ async fn idle_response_items_include_pending_mailbox_in_first_request() -> anyho responses::user_message_item("automatic response item"), ))) .await?; - let StartIfIdleSubmission::Started { turn_id } = submission else { + let StartIfIdleSubmission::Started { turn_id, .. } = submission else { panic!("automatic input should start a turn"); }; wait_for_turn_complete(test.codex.as_ref()).await; @@ -152,7 +152,7 @@ async fn standalone_tool_output_starts_instruction_turn() -> anyhow::Result<()> .codex .start_or_steer_turn(TurnInputRequest::new(TurnInput::ResponseItem(output))) .await?; - let TurnInputSubmission::Started { turn_id } = submission else { + let TurnInputSubmission::Started { turn_id, .. } = submission else { panic!("standalone output should start a turn"); }; wait_for_turn_complete(test.codex.as_ref()).await; @@ -1924,7 +1924,7 @@ async fn interrupt_if_no_pending_input_checks_turn_and_queue( .build_with_auto_env(&config_server) .await?; let codex = &test.codex; - let TurnInputSubmission::Started { turn_id } = codex + let TurnInputSubmission::Started { turn_id, .. } = codex .start_or_steer_turn(TurnInputRequest::user_input(vec![UserInput::Text { text: INITIAL_PROMPT.to_string(), text_elements: Vec::new(), diff --git a/codex-rs/core/tests/suite/pending_input_persistence.rs b/codex-rs/core/tests/suite/pending_input_persistence.rs index e84680b572..81a7f71ddc 100644 --- a/codex-rs/core/tests/suite/pending_input_persistence.rs +++ b/codex-rs/core/tests/suite/pending_input_persistence.rs @@ -235,7 +235,7 @@ async fn steered_input_checkpoint_controls_next_request( text_elements: Vec::new(), }])) .await?; - let TurnInputSubmission::Started { turn_id } = first else { + let TurnInputSubmission::Started { turn_id, .. } = first else { panic!("first input should start a turn"); }; wait_for_event(&test.codex, |event| { @@ -259,7 +259,10 @@ async fn steered_input_checkpoint_controls_next_request( }; assert_eq!( test.codex.start_or_steer_turn(input).await?, - TurnInputSubmission::Steered { turn_id } + TurnInputSubmission::Steered { + root_turn_id: turn_id.clone(), + turn_id + } ); // Steering still waits for the existing inference stream to finish. assert!(checkpoint_requests.try_recv().is_err()); diff --git a/codex-rs/core/tests/suite/realtime_conversation.rs b/codex-rs/core/tests/suite/realtime_conversation.rs index cebce3c147..760fb69988 100644 --- a/codex-rs/core/tests/suite/realtime_conversation.rs +++ b/codex-rs/core/tests/suite/realtime_conversation.rs @@ -5751,7 +5751,7 @@ async fn inbound_handoff_request_updates_realtime_state_during_active_turn( text_elements: Vec::new(), }])) .await?; - let TurnInputSubmission::Started { turn_id } = started else { + let TurnInputSubmission::Started { turn_id, .. } = started else { panic!("expected the text input to start a turn"); }; @@ -5867,7 +5867,13 @@ async fn inbound_handoff_request_updates_realtime_state_during_active_turn( text_elements: Vec::new(), }])) .await?; - assert_eq!(steered, TurnInputSubmission::Steered { turn_id }); + assert_eq!( + steered, + TurnInputSubmission::Steered { + root_turn_id: turn_id.clone(), + turn_id + } + ); let _ = second_completed_tx.send(()); second_completion .await diff --git a/codex-rs/core/tests/suite/reasoning_effort_override.rs b/codex-rs/core/tests/suite/reasoning_effort_override.rs index 14a6b0a920..6cce88e2cf 100644 --- a/codex-rs/core/tests/suite/reasoning_effort_override.rs +++ b/codex-rs/core/tests/suite/reasoning_effort_override.rs @@ -265,7 +265,7 @@ async fn reasoning_effort_override_recovery_reuses_trusted_tail_update() -> anyh text_elements: Vec::new(), }])) .await?; - let TurnInputSubmission::Started { turn_id } = submission else { + let TurnInputSubmission::Started { turn_id, .. } = submission else { panic!("expected a new turn"); }; wait_for_event(&test.codex, |event| { @@ -314,7 +314,10 @@ async fn reasoning_effort_override_recovery_reuses_trusted_tail_update() -> anyh cyber_access_program: None, }) .await?, - StartIfIdleSubmission::Started { turn_id }, + StartIfIdleSubmission::Started { + root_turn_id: turn_id.clone(), + turn_id + }, ); wait_for_event(&resumed.codex, |event| { matches!(event, EventMsg::TurnComplete(_)) diff --git a/codex-rs/core/tests/suite/remote_env.rs b/codex-rs/core/tests/suite/remote_env.rs index aa69d0edd9..5f1fa0682d 100644 --- a/codex-rs/core/tests/suite/remote_env.rs +++ b/codex-rs/core/tests/suite/remote_env.rs @@ -2555,7 +2555,7 @@ async fn active_environment_update_wakes_the_old_wait_with_the_new_selection() - ], ) .await; - let TurnInputSubmission::Started { turn_id } = thread + let TurnInputSubmission::Started { turn_id, .. } = thread .start_or_steer_turn(TurnInputRequest::user_input(vec![UserInput::Text { text: "use the selected environment".to_string(), text_elements: Vec::new(), diff --git a/codex-rs/core/tests/suite/remote_env_spawn_tests.rs b/codex-rs/core/tests/suite/remote_env_spawn_tests.rs index fbd1943671..cd07ca7691 100644 --- a/codex-rs/core/tests/suite/remote_env_spawn_tests.rs +++ b/codex-rs/core/tests/suite/remote_env_spawn_tests.rs @@ -157,7 +157,7 @@ pub(crate) async fn pending_subagent_scenario( .await; let mut created = test.thread_manager.subscribe_thread_created(); - let TurnInputSubmission::Started { turn_id } = root + let TurnInputSubmission::Started { turn_id, .. } = root .thread .start_or_steer_turn(TurnInputRequest::user_input(vec![UserInput::Text { text: "Delegate waiting for the shared workspace, and report what the worker finds." diff --git a/codex-rs/core/tests/suite/resume_warning.rs b/codex-rs/core/tests/suite/resume_warning.rs index 14a443f834..599f307c07 100644 --- a/codex-rs/core/tests/suite/resume_warning.rs +++ b/codex-rs/core/tests/suite/resume_warning.rs @@ -80,6 +80,7 @@ fn resume_history( })), RolloutItem::TurnContext(turn_ctx), RolloutItem::EventMsg(EventMsg::TurnComplete(TurnCompleteEvent { + root_turn_id: None, turn_id, last_agent_message: None, error: None, diff --git a/codex-rs/core/tests/suite/settings_commits.rs b/codex-rs/core/tests/suite/settings_commits.rs index ea368e2c03..73c9ae83aa 100644 --- a/codex-rs/core/tests/suite/settings_commits.rs +++ b/codex-rs/core/tests/suite/settings_commits.rs @@ -86,7 +86,7 @@ async fn initial_plugin_ids_use_turn_context_without_extra_settings_checkpoints( .codex .start_turn_if_idle(TurnInputRequest::user_input(Vec::new())) .await?; - let StartIfIdleSubmission::Started { turn_id } = submission else { + let StartIfIdleSubmission::Started { turn_id, .. } = submission else { panic!("expected an accepted first turn, got {submission:?}"); }; wait_for_event( @@ -220,7 +220,7 @@ async fn settings_notifications_keep_their_commit_across_postcommit_work( .with_thread_settings(thread_settings), ) .await?; - let TurnInputSubmission::Started { turn_id } = result else { + let TurnInputSubmission::Started { turn_id, .. } = result else { panic!("expected a new turn, got {result:?}"); }; Ok(turn_id) diff --git a/codex-rs/core/tests/suite/settings_constraints.rs b/codex-rs/core/tests/suite/settings_constraints.rs index e85d9a2351..3f4c32bf28 100644 --- a/codex-rs/core/tests/suite/settings_constraints.rs +++ b/codex-rs/core/tests/suite/settings_constraints.rs @@ -86,7 +86,7 @@ impl SettingsOperation { .with_thread_settings(thread_settings), ) .await?; - let TurnInputSubmission::Started { turn_id } = result else { + let TurnInputSubmission::Started { turn_id, .. } = result else { anyhow::bail!("expected a new turn, got {result:?}"); }; turn_id diff --git a/codex-rs/core/tests/suite/skills_extension/yielded_skill_tests.rs b/codex-rs/core/tests/suite/skills_extension/yielded_skill_tests.rs index 034c77c49a..dd071818db 100644 --- a/codex-rs/core/tests/suite/skills_extension/yielded_skill_tests.rs +++ b/codex-rs/core/tests/suite/skills_extension/yielded_skill_tests.rs @@ -90,7 +90,10 @@ async fn yielded_skill_read_keeps_originating_turn_metadata() -> Result<()> { text_elements: Vec::new(), }]); let submitted = test.codex.start_or_steer_turn(request).await?; - let TurnInputSubmission::Started { turn_id: turn_a } = submitted else { + let TurnInputSubmission::Started { + turn_id: turn_a, .. + } = submitted + else { anyhow::bail!("expected turn A to start, got {submitted:?}"); }; wait_for_event(&test.codex, |event| { @@ -135,7 +138,10 @@ async fn yielded_skill_read_keeps_originating_turn_metadata() -> Result<()> { text_elements: Vec::new(), }])) .await?; - let TurnInputSubmission::Started { turn_id: turn_b } = submitted else { + let TurnInputSubmission::Started { + turn_id: turn_b, .. + } = submitted + else { anyhow::bail!("expected turn B to start, got {submitted:?}"); }; wait_for_event(&test.codex, |event| { diff --git a/codex-rs/core/tests/suite/turn_input_submission.rs b/codex-rs/core/tests/suite/turn_input_submission.rs index 4686dba102..fcb4ef0ed5 100644 --- a/codex-rs/core/tests/suite/turn_input_submission.rs +++ b/codex-rs/core/tests/suite/turn_input_submission.rs @@ -87,7 +87,8 @@ async fn turn_extension_data_is_captured_for_automatic_turns() -> anyhow::Result }) .await? .thread; - let TurnInputSubmission::Started { turn_id } = submit_user_message(&thread, "start").await? + let TurnInputSubmission::Started { turn_id, .. } = + submit_user_message(&thread, "start").await? else { anyhow::bail!("first input must start a turn"); }; @@ -106,6 +107,7 @@ async fn turn_extension_data_is_captured_for_automatic_turns() -> anyhow::Result )) .await?, TurnInputSubmission::Steered { + root_turn_id: turn_id.clone(), turn_id: turn_id.clone() } ); @@ -635,7 +637,8 @@ async fn recover_turn_if_idle_preserves_id_and_resumes_plan_mode() { assert_eq!( submission, StartIfIdleSubmission::Started { - turn_id: turn_id.to_string(), + root_turn_id: turn_id.to_string(), + turn_id: turn_id.to_string() } ); assert_eq!( @@ -752,6 +755,7 @@ async fn recovery_preserves_durable_turn_attribution( ); let TurnInputSubmission::Started { turn_id: previous_turn_id, + .. } = submit_user_message(&test.codex, "establish the initial context baseline").await? else { panic!("expected the initial turn"); @@ -801,14 +805,14 @@ async fn recovery_preserves_durable_turn_attribution( ..Default::default() }); let turn_id = if matches!(pause, RecoveryPause::AfterLateCompletion) { - let TurnInputSubmission::Started { turn_id } = + let TurnInputSubmission::Started { turn_id, .. } = test.codex.start_or_steer_turn(request).await? else { panic!("expected a new turn while the previous stop hook is pending"); }; turn_id } else { - let StartIfIdleSubmission::Started { turn_id } = + let StartIfIdleSubmission::Started { turn_id, .. } = test.codex.start_turn_if_idle(request).await? else { panic!("expected a new turn"); @@ -887,6 +891,7 @@ async fn recovery_preserves_durable_turn_attribution( }) .await?, StartIfIdleSubmission::Started { + root_turn_id: root.to_owned(), turn_id: turn_id.clone() }, ); @@ -930,10 +935,15 @@ async fn recovery_preserves_durable_turn_attribution( ); } test.codex.submit(Op::Interrupt).await?; - wait_for_event(&test.codex, |event| { - matches!(event, EventMsg::TurnAborted(_)) + let aborted = wait_for_event_match(&test.codex, |event| match event { + EventMsg::TurnAborted(event) => Some(event.clone()), + _ => None, }) .await; + assert_eq!( + (aborted.turn_id.as_deref(), aborted.root_turn_id.as_deref()), + (Some(turn_id.as_str()), Some(root)), + ); if trigger != Some("automation") { return Ok(()); } @@ -943,6 +953,7 @@ async fn recovery_preserves_durable_turn_attribution( let response = responses::mount_sse_once(&next_server, responses::sse_completed("new")).await; let TurnInputSubmission::Started { turn_id: next_turn_id, + .. } = test .codex .start_or_steer_turn( @@ -994,6 +1005,7 @@ async fn continue_turn_if_idle_starts_new_turn_with_internal_input() { responses::mount_sse_once(&server, responses::sse_completed("original")).await; let TurnInputSubmission::Started { turn_id: previous_turn_id, + .. } = test .codex .start_or_steer_turn(TurnInputRequest::user_input(vec![UserInput::Text { @@ -1030,7 +1042,7 @@ async fn continue_turn_if_idle_starts_new_turn_with_internal_input() { ) .await .unwrap(); - let TurnInputSubmission::Started { turn_id } = submission else { + let TurnInputSubmission::Started { turn_id, .. } = submission else { panic!("continuation did not start") }; wait_for_event(&test.codex, |event| { @@ -1166,12 +1178,20 @@ async fn turn_input_submission_reports_started_and_steered_for_concurrent_submis let (started_turn_id, steered_turn_id, started_message) = match (&first_submission, &second_submission) { ( - TurnInputSubmission::Started { turn_id: started }, - TurnInputSubmission::Steered { turn_id: steered }, + TurnInputSubmission::Started { + turn_id: started, .. + }, + TurnInputSubmission::Steered { + turn_id: steered, .. + }, ) => (started, steered, "first message"), ( - TurnInputSubmission::Steered { turn_id: steered }, - TurnInputSubmission::Started { turn_id: started }, + TurnInputSubmission::Steered { + turn_id: steered, .. + }, + TurnInputSubmission::Started { + turn_id: started, .. + }, ) => (started, steered, "second message"), _ => panic!( "concurrent messages must start exactly one turn and steer the other: \ @@ -1231,7 +1251,7 @@ async fn turn_input_submission_applies_thread_settings_only_after_accepted_input let started = submit_user_message(codex, "start turn") .await .expect("first message should start a turn"); - let TurnInputSubmission::Started { turn_id } = started else { + let TurnInputSubmission::Started { turn_id, .. } = started else { panic!("first message should start a turn"); }; timeout( @@ -1256,7 +1276,13 @@ async fn turn_input_submission_applies_thread_settings_only_after_accepted_input ) .await .expect("persistent settings should not reject a steer"); - assert_eq!(steered, TurnInputSubmission::Steered { turn_id }); + assert_eq!( + steered, + TurnInputSubmission::Steered { + root_turn_id: turn_id.clone(), + turn_id + } + ); assert_eq!( codex.config_snapshot().await.approval_policy, AskForApproval::Never @@ -1353,7 +1379,7 @@ async fn start_or_steer_turn_requires_matching_active_output_schema() { ) .await .expect("first message should start a turn"); - let TurnInputSubmission::Started { turn_id } = started else { + let TurnInputSubmission::Started { turn_id, .. } = started else { panic!("first message should start a turn"); }; timeout( @@ -1397,7 +1423,13 @@ async fn start_or_steer_turn_requires_matching_active_output_schema() { ) .await .expect("matching schema should steer"); - assert_eq!(steered, TurnInputSubmission::Steered { turn_id }); + assert_eq!( + steered, + TurnInputSubmission::Steered { + root_turn_id: turn_id.clone(), + turn_id + } + ); release_response .send(()) @@ -1438,7 +1470,7 @@ async fn sampling_is_ready_for_daemon_recovery( builder = builder.with_exec_server_url(&remote.websocket_url); } let test = builder.build_with_streaming_server(&server).await?; - let StartIfIdleSubmission::Started { turn_id } = test + let StartIfIdleSubmission::Started { turn_id, .. } = test .codex .start_turn_if_idle(TurnInputRequest::user_input(input)) .await? @@ -1510,7 +1542,7 @@ async fn daemon_recovery_includes_local_environment_that_finished_starting() -> ), ) .await?; - let StartIfIdleSubmission::Started { turn_id } = started else { + let StartIfIdleSubmission::Started { turn_id, .. } = started else { anyhow::bail!("turn should start"); }; diff --git a/codex-rs/core/tests/suite/turn_phase_trace.rs b/codex-rs/core/tests/suite/turn_phase_trace.rs index 3614c9f34c..c242df1490 100644 --- a/codex-rs/core/tests/suite/turn_phase_trace.rs +++ b/codex-rs/core/tests/suite/turn_phase_trace.rs @@ -163,6 +163,7 @@ async fn steer_joins_existing_turn_without_extending_sampling( ) .await?, TurnInputSubmission::Steered { + root_turn_id: call.turn_id.clone(), turn_id: call.turn_id.clone() } ); @@ -223,6 +224,7 @@ async fn steer_joins_existing_turn_without_extending_sampling( }) .await?, StartIfIdleSubmission::Started { + root_turn_id: call.turn_id.clone(), turn_id: call.turn_id.clone() } ); diff --git a/codex-rs/exec/src/event_processor_with_human_output_tests.rs b/codex-rs/exec/src/event_processor_with_human_output_tests.rs index eea78a58b3..594cd5b157 100644 --- a/codex-rs/exec/src/event_processor_with_human_output_tests.rs +++ b/codex-rs/exec/src/event_processor_with_human_output_tests.rs @@ -320,6 +320,7 @@ fn turn_completed_recovers_final_message_from_turn_items() { thread_id: "thread-1".to_string(), turn: Turn { id: "turn-1".to_string(), + root_turn_id: None, items_view: codex_app_server_protocol::TurnItemsView::Full, items: vec![ThreadItem::AgentMessage { id: "msg-1".to_string(), @@ -370,6 +371,7 @@ fn turn_completed_overwrites_stale_final_message_from_turn_items() { thread_id: "thread-1".to_string(), turn: Turn { id: "turn-1".to_string(), + root_turn_id: None, items_view: codex_app_server_protocol::TurnItemsView::Full, items: vec![ThreadItem::AgentMessage { id: "msg-1".to_string(), @@ -421,6 +423,7 @@ fn turn_completed_preserves_streamed_final_message_when_turn_items_are_empty() { thread_id: "thread-1".to_string(), turn: Turn { id: "turn-1".to_string(), + root_turn_id: None, items_view: codex_app_server_protocol::TurnItemsView::Full, items: Vec::new(), status: TurnStatus::Completed, @@ -465,6 +468,7 @@ fn turn_failed_clears_stale_final_message() { thread_id: "thread-1".to_string(), turn: Turn { id: "turn-1".to_string(), + root_turn_id: None, items_view: codex_app_server_protocol::TurnItemsView::Full, items: Vec::new(), status: TurnStatus::Failed, @@ -510,6 +514,7 @@ fn turn_interrupted_clears_stale_final_message() { thread_id: "thread-1".to_string(), turn: Turn { id: "turn-1".to_string(), + root_turn_id: None, items_view: codex_app_server_protocol::TurnItemsView::Full, items: Vec::new(), status: TurnStatus::Interrupted, diff --git a/codex-rs/exec/src/event_processor_with_jsonl_output_tests.rs b/codex-rs/exec/src/event_processor_with_jsonl_output_tests.rs index 5109848a6e..9082f912ce 100644 --- a/codex-rs/exec/src/event_processor_with_jsonl_output_tests.rs +++ b/codex-rs/exec/src/event_processor_with_jsonl_output_tests.rs @@ -35,6 +35,7 @@ fn failed_turn_does_not_overwrite_output_last_message_file() { thread_id: "thread-1".to_string(), turn: codex_app_server_protocol::Turn { id: "turn-1".to_string(), + root_turn_id: None, items_view: codex_app_server_protocol::TurnItemsView::Full, items: Vec::new(), status: TurnStatus::Failed, diff --git a/codex-rs/exec/src/lib.rs b/codex-rs/exec/src/lib.rs index 90733404ad..8bf9262480 100644 --- a/codex-rs/exec/src/lib.rs +++ b/codex-rs/exec/src/lib.rs @@ -1233,6 +1233,8 @@ async fn run_exec_session(args: ExecRunArgs) -> anyhow::Result<()> { disabled_plugin_ids: None, thread_id: primary_thread_id_for_span.clone(), turn_trigger: Some("exec".to_string()), + parent_turn_id: None, + root_turn_id: None, client_user_message_id: None, input: items.into_iter().map(Into::into).collect(), tool_output: None, diff --git a/codex-rs/exec/src/lib_tests.rs b/codex-rs/exec/src/lib_tests.rs index fb79e7b839..895cd7eef7 100644 --- a/codex-rs/exec/src/lib_tests.rs +++ b/codex-rs/exec/src/lib_tests.rs @@ -385,6 +385,7 @@ fn turn_items_for_thread_returns_matching_turn_items() { turns: vec![ codex_app_server_protocol::Turn { id: "turn-1".to_string(), + root_turn_id: None, items_view: codex_app_server_protocol::TurnItemsView::Full, items: vec![AppServerThreadItem::AgentMessage { id: "msg-1".to_string(), @@ -402,6 +403,7 @@ fn turn_items_for_thread_returns_matching_turn_items() { }, codex_app_server_protocol::Turn { id: "turn-2".to_string(), + root_turn_id: None, items_view: codex_app_server_protocol::TurnItemsView::Full, items: vec![AppServerThreadItem::Plan { id: "plan-1".to_string(), @@ -437,6 +439,7 @@ fn should_backfill_turn_completed_items_backfills_persisted_summaries_only() { thread_id: "thread-1".to_string(), turn: codex_app_server_protocol::Turn { id: "turn-1".to_string(), + root_turn_id: None, items_view: codex_app_server_protocol::TurnItemsView::Summary, items: Vec::new(), status: codex_app_server_protocol::TurnStatus::Completed, diff --git a/codex-rs/exec/tests/event_processor_with_json_output.rs b/codex-rs/exec/tests/event_processor_with_json_output.rs index 45f849c4f6..c1cc894749 100644 --- a/codex-rs/exec/tests/event_processor_with_json_output.rs +++ b/codex-rs/exec/tests/event_processor_with_json_output.rs @@ -145,6 +145,7 @@ fn turn_started_emits_turn_started_event() { thread_id: "thread-1".to_string(), turn: Turn { id: "turn-1".to_string(), + root_turn_id: None, items_view: codex_app_server_protocol::TurnItemsView::Full, items: Vec::new(), status: TurnStatus::InProgress, @@ -1197,6 +1198,7 @@ fn plan_update_emits_started_then_updated_then_completed() { thread_id: "thread-1".to_string(), turn: Turn { id: "turn-1".to_string(), + root_turn_id: None, items_view: codex_app_server_protocol::TurnItemsView::Full, items: Vec::new(), status: TurnStatus::Completed, @@ -1257,6 +1259,7 @@ fn plan_update_after_completion_starts_new_todo_list_with_new_id() { thread_id: "thread-1".to_string(), turn: Turn { id: "turn-1".to_string(), + root_turn_id: None, items_view: codex_app_server_protocol::TurnItemsView::Full, items: Vec::new(), status: TurnStatus::Completed, @@ -1342,6 +1345,7 @@ fn token_usage_update_is_emitted_on_turn_completion() { thread_id: "thread-1".to_string(), turn: Turn { id: "turn-1".to_string(), + root_turn_id: None, items_view: codex_app_server_protocol::TurnItemsView::Full, items: Vec::new(), status: TurnStatus::Completed, @@ -1378,6 +1382,7 @@ fn turn_completion_recovers_final_message_from_turn_items() { thread_id: "thread-1".to_string(), turn: Turn { id: "turn-1".to_string(), + root_turn_id: None, items_view: codex_app_server_protocol::TurnItemsView::Full, items: vec![ThreadItem::AgentMessage { id: "msg-1".to_string(), @@ -1457,6 +1462,7 @@ fn turn_completion_reconciles_started_items_from_turn_items() { thread_id: "thread-1".to_string(), turn: Turn { id: "turn-1".to_string(), + root_turn_id: None, items_view: codex_app_server_protocol::TurnItemsView::Full, items: vec![ThreadItem::CommandExecution { model_context: None, @@ -1531,6 +1537,7 @@ fn turn_completion_overwrites_stale_final_message_from_turn_items() { thread_id: "thread-1".to_string(), turn: Turn { id: "turn-1".to_string(), + root_turn_id: None, items_view: codex_app_server_protocol::TurnItemsView::Full, items: vec![ThreadItem::AgentMessage { id: "msg-1".to_string(), @@ -1585,6 +1592,7 @@ fn turn_completion_preserves_streamed_final_message_when_turn_items_are_empty() thread_id: "thread-1".to_string(), turn: Turn { id: "turn-1".to_string(), + root_turn_id: None, items_view: codex_app_server_protocol::TurnItemsView::Full, items: Vec::new(), status: TurnStatus::Completed, @@ -1636,6 +1644,7 @@ fn failed_turn_clears_stale_final_message() { thread_id: "thread-1".to_string(), turn: Turn { id: "turn-1".to_string(), + root_turn_id: None, items_view: codex_app_server_protocol::TurnItemsView::Full, items: Vec::new(), status: TurnStatus::Failed, @@ -1665,6 +1674,7 @@ fn turn_completion_falls_back_to_final_plan_text() { thread_id: "thread-1".to_string(), turn: Turn { id: "turn-1".to_string(), + root_turn_id: None, items_view: codex_app_server_protocol::TurnItemsView::Full, items: vec![ThreadItem::Plan { id: "plan-1".to_string(), @@ -1721,6 +1731,7 @@ fn turn_failure_prefers_structured_error_message() { thread_id: "thread-1".to_string(), turn: Turn { id: "turn-1".to_string(), + root_turn_id: None, items_view: codex_app_server_protocol::TurnItemsView::Full, items: Vec::new(), status: TurnStatus::Failed, diff --git a/codex-rs/ext/agent/src/lib.rs b/codex-rs/ext/agent/src/lib.rs index e6b747522e..9bc77c64c9 100644 --- a/codex-rs/ext/agent/src/lib.rs +++ b/codex-rs/ext/agent/src/lib.rs @@ -85,7 +85,7 @@ impl AgentRunner { ) .await? { - StartIfIdleSubmission::Started { turn_id } => turn_id, + StartIfIdleSubmission::Started { turn_id, .. } => turn_id, StartIfIdleSubmission::NotSubmitted { reason } => { return Err(CodexErr::InvalidRequest(format!( "agent prompt was not submitted: {reason:?}" diff --git a/codex-rs/ext/goal/src/runtime.rs b/codex-rs/ext/goal/src/runtime.rs index 7d826ac238..3e35f98072 100644 --- a/codex-rs/ext/goal/src/runtime.rs +++ b/codex-rs/ext/goal/src/runtime.rs @@ -485,7 +485,7 @@ impl GoalRuntimeHandle { ) .await { - Ok(StartIfIdleSubmission::Started { turn_id }) => { + Ok(StartIfIdleSubmission::Started { turn_id, .. }) => { // Turn-stop evaluation takes the same permit, so even a fast response // cannot finish before this host-admitted continuation is identified. self.inner.accounting_state.mark_goal_continuation(turn_id); diff --git a/codex-rs/ext/guardian-reviewer/src/execution.rs b/codex-rs/ext/guardian-reviewer/src/execution.rs index eacbb7a451..fabc89b77f 100644 --- a/codex-rs/ext/guardian-reviewer/src/execution.rs +++ b/codex-rs/ext/guardian-reviewer/src/execution.rs @@ -43,7 +43,7 @@ pub async fn start_review_turn( match crate::run_before_review_deadline(deadline, external_cancel, runtime.submit_turn(request)) .await? { - Ok(TurnInputSubmission::Started { turn_id }) => Ok(turn_id), + Ok(TurnInputSubmission::Started { turn_id, .. }) => Ok(turn_id), result => Err(GuardianReviewSessionOutcome::SessionFailed { error: match result { Ok(submission) => anyhow!("guardian review input was not started: {submission:?}"), diff --git a/codex-rs/ext/queue/tests/queue_service.rs b/codex-rs/ext/queue/tests/queue_service.rs index 0e8ffa84a8..305b8ed6ad 100644 --- a/codex-rs/ext/queue/tests/queue_service.rs +++ b/codex-rs/ext/queue/tests/queue_service.rs @@ -393,7 +393,7 @@ async fn starting_a_selected_item_preserves_the_remaining_queue() -> anyhow::Res assert!(matches!( submission, - StartIfIdleSubmission::Started { turn_id } if !turn_id.is_empty() + StartIfIdleSubmission::Started { turn_id, .. } if !turn_id.is_empty() )); assert_eq!(vec![first], service.list(thread_id).await?); wait_for_event_match(test.codex.as_ref(), |event| match event { diff --git a/codex-rs/external-agent-migration/src/sessions/export.rs b/codex-rs/external-agent-migration/src/sessions/export.rs index fbe2e37003..f50ee959ba 100644 --- a/codex-rs/external-agent-migration/src/sessions/export.rs +++ b/codex-rs/external-agent-migration/src/sessions/export.rs @@ -207,6 +207,7 @@ fn turn_complete_item( completed_at: Option, ) -> RolloutItem { RolloutItem::EventMsg(EventMsg::TurnComplete(TurnCompleteEvent { + root_turn_id: None, turn_id, last_agent_message: None, error: None, diff --git a/codex-rs/protocol/src/protocol.rs b/codex-rs/protocol/src/protocol.rs index 6e6b64817a..d84f30f60a 100644 --- a/codex-rs/protocol/src/protocol.rs +++ b/codex-rs/protocol/src/protocol.rs @@ -2130,6 +2130,10 @@ pub struct ContextCompactedEvent; #[derive(Debug, Clone, Deserialize, Serialize, JsonSchema, TS)] pub struct TurnCompleteEvent { + /// Resolved causal root for this turn; absent on older or synthetic events. + #[serde(default, skip_serializing_if = "Option::is_none")] + #[ts(optional)] + pub root_turn_id: Option, pub turn_id: String, pub last_agent_message: Option, /// Terminal error details when the turn completed unsuccessfully. @@ -4225,6 +4229,10 @@ pub struct Chunk { #[derive(Debug, Clone, Deserialize, Serialize, JsonSchema, TS)] pub struct TurnAbortedEvent { + /// Resolved causal root for this turn; absent on older or synthetic events. + #[serde(default, skip_serializing_if = "Option::is_none")] + #[ts(optional)] + pub root_turn_id: Option, pub turn_id: Option, pub reason: TurnAbortReason, /// Optional error describing why the turn was interrupted. @@ -6103,9 +6111,12 @@ mod tests { match event { EventMsg::TurnAborted(TurnAbortedEvent { - turn_id, reason, .. + turn_id, + root_turn_id, + reason, + .. }) => { - assert_eq!(turn_id, None); + assert_eq!((turn_id, root_turn_id), (None, None)); assert_eq!(reason, TurnAbortReason::Interrupted); } _ => panic!("expected turn_aborted event"), diff --git a/codex-rs/protocol/src/turn_input.rs b/codex-rs/protocol/src/turn_input.rs index c145e0543d..3069a5f6ff 100644 --- a/codex-rs/protocol/src/turn_input.rs +++ b/codex-rs/protocol/src/turn_input.rs @@ -208,16 +208,23 @@ pub struct TurnStartOptions { /// /// Started and Steered only mean Core accepted the input for turn processing. They /// do not wait for user-prompt hooks, updating the in-memory model context, -/// rollout persistence, or sampling. +/// rollout persistence, or sampling. The returned root is the accepted turn's +/// resolved causal root, including when steering preserves an existing turn. #[derive(Clone, Debug, Eq, PartialEq)] pub enum TurnInputSubmission { /// Core started a turn. Persistent thread settings and start options were applied. - Started { turn_id: String }, + Started { + turn_id: String, + root_turn_id: String, + }, /// Core steered an active turn. Persistent thread settings were applied for /// subsequent turns. No new turn was created, so lineage metadata was not /// recorded. If the request included `final_output_json_schema`, the active /// turn already used the same schema. - Steered { turn_id: String }, + Steered { + turn_id: String, + root_turn_id: String, + }, /// Core rejected the input without applying settings or start options. NotSubmitted { reason: NotSubmittedReason }, } @@ -226,7 +233,10 @@ pub enum TurnInputSubmission { #[derive(Clone, Debug, Eq, PartialEq)] pub enum StartIfIdleSubmission { /// Core started a turn. Persistent thread settings and start options were applied. - Started { turn_id: String }, + Started { + turn_id: String, + root_turn_id: String, + }, /// Core rejected the input without applying settings or start options. NotSubmitted { reason: NotSubmittedReason }, } diff --git a/codex-rs/rollout/src/persistence_metrics_tests.rs b/codex-rs/rollout/src/persistence_metrics_tests.rs index 48b32f712c..ceebe75a3c 100644 --- a/codex-rs/rollout/src/persistence_metrics_tests.rs +++ b/codex-rs/rollout/src/persistence_metrics_tests.rs @@ -61,6 +61,7 @@ fn turn_started(turn_id: &str) -> RolloutItem { fn turn_complete(turn_id: &str) -> RolloutItem { RolloutItem::EventMsg(EventMsg::TurnComplete(TurnCompleteEvent { + root_turn_id: None, turn_id: turn_id.to_string(), started_at: None, last_agent_message: None, @@ -73,6 +74,7 @@ fn turn_complete(turn_id: &str) -> RolloutItem { fn turn_aborted(turn_id: &str) -> RolloutItem { RolloutItem::EventMsg(EventMsg::TurnAborted(TurnAbortedEvent { + root_turn_id: None, turn_id: Some(turn_id.to_string()), started_at: None, reason: TurnAbortReason::Interrupted, diff --git a/codex-rs/state/src/migrations_tests.rs b/codex-rs/state/src/migrations_tests.rs index 4f07d1c11b..d8e14b752b 100644 --- a/codex-rs/state/src/migrations_tests.rs +++ b/codex-rs/state/src/migrations_tests.rs @@ -614,6 +614,15 @@ async fn realtime_items_preserve_older_thread_history_writers() { .await .expect("existing turn-scoped item should be inserted"); + sqlx::query("INSERT INTO thread_turns (thread_id, turn_id, rollout_ordinal, status) VALUES ('thread-1', 'turn-1', 0, 'completed')") + .execute(&pool) + .await + .expect("insert an existing turn before migration"); + sqlx::query("INSERT INTO thread_history_projection_state (thread_id, next_rollout_byte_offset, next_rollout_ordinal) VALUES ('thread-1', 42, 3)") + .execute(&pool) + .await + .expect("insert an existing projection checkpoint"); + THREAD_HISTORY_MIGRATOR .run(&pool) .await @@ -632,12 +641,13 @@ async fn realtime_items_preserve_older_thread_history_writers() { .execute(&pool) .await .expect("thread-scoped realtime item should be inserted separately"); - sqlx::query( - "INSERT INTO thread_history_projection_state (thread_id, next_rollout_byte_offset, next_rollout_ordinal) VALUES ('thread-1', 0, 0)", + let checkpoint = sqlx::query_as::<_, (i64, i64)>( + "SELECT next_rollout_byte_offset, next_rollout_ordinal FROM thread_history_projection_state WHERE thread_id = 'thread-1'", ) - .execute(&pool) + .fetch_one(&pool) .await - .expect("thread projection checkpoint should be inserted"); + .expect("existing projection checkpoint survives migration"); + assert_eq!(checkpoint, (42, 3)); let older_pool = sqlite .open_thread_history_db(&older_migrator, /*telemetry_override*/ None) @@ -649,6 +659,17 @@ async fn realtime_items_preserve_older_thread_history_writers() { .execute(&older_pool) .await .expect("older binaries should continue writing ordinary turn-scoped items"); + sqlx::query("INSERT INTO thread_turns (thread_id, turn_id, rollout_ordinal, status) VALUES ('thread-1', 'turn-2', 4, 'completed')") + .execute(&older_pool) + .await + .expect("older writers can still insert turns without roots"); + let roots = sqlx::query_scalar::<_, Option>( + "SELECT root_turn_id FROM thread_turns ORDER BY rollout_ordinal", + ) + .fetch_all(&older_pool) + .await + .expect("old turns and older writers leave causal roots unknown"); + assert_eq!(roots, vec![None, None]); let ordinary_items = sqlx::query_as::<_, (String, String)>( "SELECT item_id, turn_id FROM thread_items WHERE thread_id = ? ORDER BY rollout_ordinal", ) diff --git a/codex-rs/state/thread_history_migrations/0008_thread_turn_root.sql b/codex-rs/state/thread_history_migrations/0008_thread_turn_root.sql new file mode 100644 index 0000000000..55304755c4 --- /dev/null +++ b/codex-rs/state/thread_history_migrations/0008_thread_turn_root.sql @@ -0,0 +1 @@ +ALTER TABLE thread_turns ADD COLUMN root_turn_id TEXT; diff --git a/codex-rs/thread-store/src/local/mod.rs b/codex-rs/thread-store/src/local/mod.rs index e8dc915728..983a3637b9 100644 --- a/codex-rs/thread-store/src/local/mod.rs +++ b/codex-rs/thread-store/src/local/mod.rs @@ -1210,6 +1210,7 @@ mod tests { }, )), RolloutItem::EventMsg(EventMsg::TurnComplete(TurnCompleteEvent { + root_turn_id: None, turn_id: "turn-1".to_string(), started_at: None, last_agent_message: None, diff --git a/codex-rs/thread-store/src/local/model_context_tests.rs b/codex-rs/thread-store/src/local/model_context_tests.rs index 6b1fad47f8..fe7bdc46c7 100644 --- a/codex-rs/thread-store/src/local/model_context_tests.rs +++ b/codex-rs/thread-store/src/local/model_context_tests.rs @@ -629,6 +629,7 @@ fn turn_started(turn_id: &str) -> RolloutItem { fn turn_complete(turn_id: &str) -> RolloutItem { RolloutItem::EventMsg(EventMsg::TurnComplete(TurnCompleteEvent { + root_turn_id: None, turn_id: turn_id.to_string(), last_agent_message: None, error: None, diff --git a/codex-rs/thread-store/src/local/revert_thread_tests.rs b/codex-rs/thread-store/src/local/revert_thread_tests.rs index 827bf8c107..974d58c93e 100644 --- a/codex-rs/thread-store/src/local/revert_thread_tests.rs +++ b/codex-rs/thread-store/src/local/revert_thread_tests.rs @@ -333,6 +333,7 @@ fn turn_started(turn_id: &str) -> RolloutItem { fn turn_completed(turn_id: &str) -> RolloutItem { RolloutItem::EventMsg(EventMsg::TurnComplete(TurnCompleteEvent { + root_turn_id: None, turn_id: turn_id.to_string(), last_agent_message: None, error: None, diff --git a/codex-rs/thread-store/src/local/rollout_migration/canonicalizer.rs b/codex-rs/thread-store/src/local/rollout_migration/canonicalizer.rs index 37c353fa08..6a8ce712ea 100644 --- a/codex-rs/thread-store/src/local/rollout_migration/canonicalizer.rs +++ b/codex-rs/thread-store/src/local/rollout_migration/canonicalizer.rs @@ -375,6 +375,7 @@ impl LegacyRolloutCanonicalizer { writer, timestamp, RolloutItem::EventMsg(EventMsg::TurnComplete(TurnCompleteEvent { + root_turn_id: None, turn_id, last_agent_message: None, error: None, diff --git a/codex-rs/thread-store/src/local/rollout_migration_tests.rs b/codex-rs/thread-store/src/local/rollout_migration_tests.rs index 589acf7508..4ce943a61e 100644 --- a/codex-rs/thread-store/src/local/rollout_migration_tests.rs +++ b/codex-rs/thread-store/src/local/rollout_migration_tests.rs @@ -256,6 +256,7 @@ fn compacted(replacement_history: Vec) -> RolloutItem { fn completed(turn_id: &str) -> RolloutItem { RolloutItem::EventMsg(EventMsg::TurnComplete(TurnCompleteEvent { + root_turn_id: None, turn_id: turn_id.to_string(), last_agent_message: None, error: None, diff --git a/codex-rs/thread-store/src/local/thread_history.rs b/codex-rs/thread-store/src/local/thread_history.rs index aca9fdc835..ee59619a13 100644 --- a/codex-rs/thread-store/src/local/thread_history.rs +++ b/codex-rs/thread-store/src/local/thread_history.rs @@ -316,6 +316,7 @@ async fn apply_change_set( INSERT INTO thread_turns ( thread_id, turn_id, + root_turn_id, rollout_ordinal, rollout_byte_offset, rollout_end_ordinal, @@ -325,8 +326,9 @@ INSERT INTO thread_turns ( started_at, completed_at, duration_ms -) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) +) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) ON CONFLICT(thread_id, turn_id) DO UPDATE SET + root_turn_id = COALESCE(thread_turns.root_turn_id, excluded.root_turn_id), rollout_end_ordinal = excluded.rollout_end_ordinal, rollout_end_byte_offset = excluded.rollout_end_byte_offset, status = excluded.status, @@ -340,6 +342,7 @@ WHERE thread_turns.rollout_end_ordinal IS NULL ) .bind(thread_id) .bind(turn_id.as_str()) + .bind(turn.root_turn_id) .bind(rollout_ordinal) .bind(rollout_byte_offset) .bind(terminal_ordinal) diff --git a/codex-rs/thread-store/src/local/thread_history/read.rs b/codex-rs/thread-store/src/local/thread_history/read.rs index 49c326c1a4..bbfe61fac2 100644 --- a/codex-rs/thread-store/src/local/thread_history/read.rs +++ b/codex-rs/thread-store/src/local/thread_history/read.rs @@ -52,6 +52,7 @@ pub(super) struct RolloutHistoryPosition { pub(super) struct StoredTurnRow { pub position: RolloutHistoryPosition, pub turn_id: String, + pub root_turn_id: Option, pub status: StoredTurnStatus, pub error: Option, pub started_at: Option, @@ -141,6 +142,7 @@ pub(in crate::local) async fn list_turns( }; turns.push(StoredTurn { turn_id: turn.turn_id, + root_turn_id: turn.root_turn_id, items, items_view: params.items_view, status: turn.status, @@ -312,6 +314,7 @@ pub(super) fn stored_turn_row(row: sqlx::sqlite::SqliteRow) -> ThreadStoreResult rollout_ordinal: row.try_get("rollout_ordinal")?, }, turn_id: row.try_get("turn_id")?, + root_turn_id: row.try_get("root_turn_id")?, status, error, started_at: row.try_get("started_at")?, diff --git a/codex-rs/thread-store/src/local/thread_history/read_tests.rs b/codex-rs/thread-store/src/local/thread_history/read_tests.rs index dccd8752e1..fb8ca3ee0c 100644 --- a/codex-rs/thread-store/src/local/thread_history/read_tests.rs +++ b/codex-rs/thread-store/src/local/thread_history/read_tests.rs @@ -68,6 +68,11 @@ async fn list_turns_pages_projected_rows_and_applies_item_views() { ) .await; } + sqlx::query("UPDATE thread_turns SET root_turn_id = 'root-1' WHERE thread_id = ? AND turn_id IN ('turn-1', 'turn-3')") + .bind(thread_id.to_string()) + .execute(db) + .await + .expect("record known causal roots"); for (turn_id, item_id, ordinal) in [ ("turn-1", "user-1", 11), ("turn-1", "middle-1", 12), @@ -87,6 +92,14 @@ async fn list_turns_pages_projected_rows_and_applies_item_views() { .await .expect("first turns page"); assert_eq!(turn_ids(&first_page), vec!["turn-1", "turn-2"]); + assert_eq!( + first_page + .turns + .iter() + .map(|turn| turn.root_turn_id.as_deref()) + .collect::>(), + vec![Some("root-1"), None], + ); assert_eq!( first_page.turns[0].items, vec![ @@ -113,6 +126,7 @@ async fn list_turns_pages_projected_rows_and_applies_item_views() { .await .expect("second turns page"); assert_eq!(turn_ids(&second_page), vec!["turn-3"]); + assert_eq!(second_page.turns[0].root_turn_id.as_deref(), Some("root-1")); assert_eq!(second_page.turns[0].items, Vec::new()); assert_eq!(second_page.turns[0].status, StoredTurnStatus::InProgress); let backwards_page = store @@ -1357,6 +1371,8 @@ async fn lineage_reads_nested_forks() { for (thread_id, turn_id, ordinal, status, first_user_item_id) in [ (root_id, "root", 1, "completed", None), (root_id, "shared", 2, "completed", Some("before-fork")), + (root_id, "child", 4, "completed", None), + (middle_id, "child", 3, "completed", None), (middle_id, "shared", 5, "interrupted", None), (middle_id, "middle", 6, "completed", None), (child_id, "child", 8, "completed", None), @@ -1373,6 +1389,11 @@ async fn lineage_reads_nested_forks() { ) .await; } + sqlx::query("UPDATE thread_turns SET root_turn_id = 'causal-root' WHERE thread_id = ? AND turn_id = 'shared'") + .bind(middle_id.to_string()) + .execute(db) + .await + .expect("record terminal turn root"); insert_item( db, root_id, @@ -1401,6 +1422,7 @@ async fn lineage_reads_nested_forks() { .await .expect("first nested descending page"); assert_eq!(turn_ids(&first_descending_page), vec!["child", "middle"]); + assert_eq!(first_descending_page.turns[0].root_turn_id, None); let second_descending_page = store .list_turns(turn_params( child_id, @@ -1412,6 +1434,10 @@ async fn lineage_reads_nested_forks() { .await .expect("second nested descending page"); assert_eq!(turn_ids(&second_descending_page), vec!["shared", "root"]); + assert_eq!( + second_descending_page.turns[0].root_turn_id.as_deref(), + Some("causal-root") + ); assert_eq!( second_descending_page.turns[0].status, StoredTurnStatus::Interrupted @@ -1467,6 +1493,10 @@ async fn lineage_reads_nested_forks() { .await .expect("navigate to effective occurrence turn"); assert_eq!(turn_ids(&occurrence_turn), vec!["shared"]); + assert_eq!( + occurrence_turn.turns[0].root_turn_id.as_deref(), + Some("causal-root") + ); } async fn store_with_mode(history_mode: ThreadHistoryMode) -> (TempDir, LocalThreadStore, ThreadId) { diff --git a/codex-rs/thread-store/src/local/thread_history/segment_paging.rs b/codex-rs/thread-store/src/local/thread_history/segment_paging.rs index e16a6dc48f..a87542bf89 100644 --- a/codex-rs/thread-store/src/local/thread_history/segment_paging.rs +++ b/codex-rs/thread-store/src/local/thread_history/segment_paging.rs @@ -60,12 +60,14 @@ pub(super) async fn page_turn_rows( if remaining == 0 { break; } - let mut query = - QueryBuilder::::new(if matches!(items_view, StoredTurnItemsView::Summary) { - r#" -WITH page_turns AS ( -SELECT + let mut query = QueryBuilder::::new(""); + if matches!(items_view, StoredTurnItemsView::Summary) { + query.push("WITH page_turns AS ("); + } + query.push( + r#"SELECT turn_id, + root_turn_id, rollout_ordinal, status, error_json, @@ -76,23 +78,8 @@ SELECT final_agent_item_id FROM thread_turns WHERE thread_id = - "# - } else { - r#" -SELECT - turn_id, - rollout_ordinal, - status, - error_json, - started_at, - completed_at, - duration_ms, - first_user_item_id, - final_agent_item_id -FROM thread_turns -WHERE thread_id = - "# - }); + "#, + ); query.push_bind(segment.rollout_id().to_string()); push_segment_range(&mut query, segment)?; for newer_segment in &lineage.segments()[segment_index + 1..] { diff --git a/codex-rs/thread-store/src/local/thread_history_materialization_tests.rs b/codex-rs/thread-store/src/local/thread_history_materialization_tests.rs index 8b691b6a2c..c711043c99 100644 --- a/codex-rs/thread-store/src/local/thread_history_materialization_tests.rs +++ b/codex-rs/thread-store/src/local/thread_history_materialization_tests.rs @@ -314,7 +314,7 @@ async fn paginated_live_append_materializes_turn_items_and_state() { .append_items(AppendThreadItemsParams { thread_id, items: vec![ - turn_started("turn-1"), + turn_started_with_root("turn-1", "root-1"), completed_item( thread_id, "turn-1", @@ -370,6 +370,7 @@ async fn paginated_live_append_materializes_turn_items_and_state() { Option, Option, Option, + Option, ), >( r#" @@ -383,7 +384,8 @@ SELECT completed_at, duration_ms, first_user_item_id, - final_agent_item_id + final_agent_item_id, + root_turn_id FROM thread_turns WHERE thread_id = ? AND turn_id = ? "#, @@ -406,6 +408,7 @@ WHERE thread_id = ? AND turn_id = ? Some(10_000), Some("user-1".to_string()), Some("agent-1".to_string()), + Some("root-1".to_string()), ) ); @@ -1691,7 +1694,10 @@ async fn terminal_turn_does_not_change_after_later_records() { store .append_items(AppendThreadItemsParams { thread_id, - items: vec![turn_started("turn-1"), turn_completed("turn-1")], + items: vec![ + turn_started_with_root("turn-1", "root-1"), + turn_completed("turn-1"), + ], }) .await .expect("append terminal turn"); @@ -1699,7 +1705,7 @@ async fn terminal_turn_does_not_change_after_later_records() { .append_items(AppendThreadItemsParams { thread_id, items: vec![ - turn_started("turn-1"), + turn_started_with_root("turn-1", "wrong-root"), completed_item( thread_id, "turn-1", @@ -1736,6 +1742,7 @@ async fn terminal_turn_does_not_change_after_later_records() { Option, String, Option, + Option, ), >( r#" @@ -1745,7 +1752,8 @@ SELECT rollout_end_ordinal, rollout_end_byte_offset, status, - first_user_item_id + first_user_item_id, + root_turn_id FROM thread_turns WHERE thread_id = ? AND turn_id = ? "#, @@ -1764,6 +1772,7 @@ WHERE thread_id = ? AND turn_id = ? Some(turn_end_byte_offset), "completed".to_string(), None, + Some("root-1".to_string()), ) ); } @@ -2842,8 +2851,17 @@ fn turn_started(turn_id: &str) -> RolloutItem { })) } +fn turn_started_with_root(turn_id: &str, root_turn_id: &str) -> RolloutItem { + let mut item = turn_started(turn_id); + if let RolloutItem::EventMsg(EventMsg::TurnStarted(event)) = &mut item { + event.root_turn_id = Some(root_turn_id.to_string()); + } + item +} + fn turn_completed(turn_id: &str) -> RolloutItem { RolloutItem::EventMsg(EventMsg::TurnComplete(TurnCompleteEvent { + root_turn_id: None, turn_id: turn_id.to_string(), last_agent_message: None, error: None, diff --git a/codex-rs/thread-store/src/types.rs b/codex-rs/thread-store/src/types.rs index 7cc8a70b21..1dd5b4e760 100644 --- a/codex-rs/thread-store/src/types.rs +++ b/codex-rs/thread-store/src/types.rs @@ -452,6 +452,8 @@ pub struct ListTurnsParams { pub struct StoredTurn { /// Turn id. pub turn_id: String, + /// Causal root recorded for this turn. Older projected turns may not have one. + pub root_turn_id: Option, /// Projected app-server item snapshots associated with this turn, according to `items_view`. pub items: Vec, /// Amount of item detail included in `items`. diff --git a/codex-rs/tui/src/app/activity_groups_tests.rs b/codex-rs/tui/src/app/activity_groups_tests.rs index aa6ca11567..4e5ae718ce 100644 --- a/codex-rs/tui/src/app/activity_groups_tests.rs +++ b/codex-rs/tui/src/app/activity_groups_tests.rs @@ -44,6 +44,7 @@ fn reasoning(id: &str) -> ThreadItem { fn turn(items: Vec) -> Turn { Turn { id: "turn".to_owned(), + root_turn_id: None, items, items_view: TurnItemsView::Full, status: TurnStatus::Completed, diff --git a/codex-rs/tui/src/app/agents_overview_tests.rs b/codex-rs/tui/src/app/agents_overview_tests.rs index 7ed35541cc..787b4b81eb 100644 --- a/codex-rs/tui/src/app/agents_overview_tests.rs +++ b/codex-rs/tui/src/app/agents_overview_tests.rs @@ -2357,6 +2357,7 @@ async fn resume_picker_round_trip_preserves_each_threads_input() -> Result<()> { thread_id: target.thread_id.to_string(), turn: codex_app_server_protocol::Turn { id: "turn-with-follow-up".to_string(), + root_turn_id: None, items_view: codex_app_server_protocol::TurnItemsView::Full, items: Vec::new(), status: codex_app_server_protocol::TurnStatus::InProgress, diff --git a/codex-rs/tui/src/app/composer_hints_tests.rs b/codex-rs/tui/src/app/composer_hints_tests.rs index 75e44b906c..8c5ff521e2 100644 --- a/codex-rs/tui/src/app/composer_hints_tests.rs +++ b/codex-rs/tui/src/app/composer_hints_tests.rs @@ -47,6 +47,7 @@ async fn usage_notice_preserves_composer_geometry_on_recovery() -> Result<()> { thread_id: ThreadId::new().to_string(), turn: Turn { id: "turn".into(), + root_turn_id: None, items_view: TurnItemsView::Full, items: Vec::new(), status: TurnStatus::InProgress, diff --git a/codex-rs/tui/src/app/history_completion_tests.rs b/codex-rs/tui/src/app/history_completion_tests.rs index 273b9fa776..d82b71bb71 100644 --- a/codex-rs/tui/src/app/history_completion_tests.rs +++ b/codex-rs/tui/src/app/history_completion_tests.rs @@ -7,6 +7,7 @@ use pretty_assertions::assert_eq; fn turn(id: &str, status: TurnStatus, item_ids: &[&str]) -> Turn { Turn { id: id.to_string(), + root_turn_id: None, items: item_ids .iter() .map(|id| ThreadItem::UserMessage { diff --git a/codex-rs/tui/src/app/history_pagination_tests.rs b/codex-rs/tui/src/app/history_pagination_tests.rs index c3cbb00ef0..e64fa5bc2a 100644 --- a/codex-rs/tui/src/app/history_pagination_tests.rs +++ b/codex-rs/tui/src/app/history_pagination_tests.rs @@ -11,6 +11,7 @@ use pretty_assertions::assert_eq; fn turn(id: &str, status: TurnStatus, item_ids: &[&str]) -> Turn { Turn { id: id.to_string(), + root_turn_id: None, items: item_ids .iter() .map(|id| ThreadItem::UserMessage { diff --git a/codex-rs/tui/src/app/owned_transcript_follow_tests.rs b/codex-rs/tui/src/app/owned_transcript_follow_tests.rs index 6f05c021e0..552bee01b6 100644 --- a/codex-rs/tui/src/app/owned_transcript_follow_tests.rs +++ b/codex-rs/tui/src/app/owned_transcript_follow_tests.rs @@ -29,6 +29,7 @@ async fn follow_control_click_preserves_draft_caret_and_composer_geometry() -> R thread_id: ThreadId::new().to_string(), turn: codex_app_server_protocol::Turn { id: "turn".into(), + root_turn_id: None, items_view: codex_app_server_protocol::TurnItemsView::Full, items: Vec::new(), status: codex_app_server_protocol::TurnStatus::InProgress, diff --git a/codex-rs/tui/src/app/owned_transcript_input_tests.rs b/codex-rs/tui/src/app/owned_transcript_input_tests.rs index ee1dbf71f0..4c4119b344 100644 --- a/codex-rs/tui/src/app/owned_transcript_input_tests.rs +++ b/codex-rs/tui/src/app/owned_transcript_input_tests.rs @@ -79,6 +79,7 @@ async fn configured_ctrl_space_submit_wins_over_transcript_selection() -> Result thread_id: thread_id.to_string(), turn: Turn { id: "turn".into(), + root_turn_id: None, items_view: TurnItemsView::Full, items: Vec::new(), status: TurnStatus::InProgress, @@ -185,6 +186,7 @@ fn complete_plan_turn(app: &mut App) { let thread_id = ThreadId::new().to_string(); let turn = Turn { id: "plan-turn".into(), + root_turn_id: None, items_view: TurnItemsView::Full, items: Vec::new(), status: TurnStatus::InProgress, diff --git a/codex-rs/tui/src/app/owned_transcript_tests.rs b/codex-rs/tui/src/app/owned_transcript_tests.rs index 39febe959d..026fe11eac 100644 --- a/codex-rs/tui/src/app/owned_transcript_tests.rs +++ b/codex-rs/tui/src/app/owned_transcript_tests.rs @@ -598,6 +598,7 @@ async fn owned_details_escape_interrupts_work_without_starting_backtrack() -> Re thread_id: thread_id.to_string(), turn: codex_app_server_protocol::Turn { id: "active-turn".to_string(), + root_turn_id: None, items_view: codex_app_server_protocol::TurnItemsView::Full, items: Vec::new(), status: codex_app_server_protocol::TurnStatus::InProgress, diff --git a/codex-rs/tui/src/app/pending_interactive_replay.rs b/codex-rs/tui/src/app/pending_interactive_replay.rs index 11c39a90e3..cdbc8512fa 100644 --- a/codex-rs/tui/src/app/pending_interactive_replay.rs +++ b/codex-rs/tui/src/app/pending_interactive_replay.rs @@ -675,6 +675,7 @@ mod tests { thread_id: "thread-1".to_string(), turn: Turn { id: turn_id.to_string(), + root_turn_id: None, items_view: codex_app_server_protocol::TurnItemsView::Full, items: Vec::new(), status: TurnStatus::Completed, diff --git a/codex-rs/tui/src/app/recap_tests.rs b/codex-rs/tui/src/app/recap_tests.rs index 33fe586b14..437cb66bb8 100644 --- a/codex-rs/tui/src/app/recap_tests.rs +++ b/codex-rs/tui/src/app/recap_tests.rs @@ -45,6 +45,7 @@ use uuid::Uuid; fn turn(status: TurnStatus) -> Turn { Turn { id: "turn".to_string(), + root_turn_id: None, items: Vec::new(), items_view: Default::default(), status, diff --git a/codex-rs/tui/src/app/safety_buffering_tests.rs b/codex-rs/tui/src/app/safety_buffering_tests.rs index 4586e7ab21..2e4bba6120 100644 --- a/codex-rs/tui/src/app/safety_buffering_tests.rs +++ b/codex-rs/tui/src/app/safety_buffering_tests.rs @@ -4,6 +4,7 @@ use codex_app_server_protocol::TurnItemsView; fn turn(id: &str, status: TurnStatus) -> Turn { Turn { id: id.to_string(), + root_turn_id: None, items: Vec::new(), items_view: TurnItemsView::Full, status, diff --git a/codex-rs/tui/src/app/tests.rs b/codex-rs/tui/src/app/tests.rs index 8ed3f84c85..73bc892cc5 100644 --- a/codex-rs/tui/src/app/tests.rs +++ b/codex-rs/tui/src/app/tests.rs @@ -7224,6 +7224,7 @@ async fn resizing_empty_transcript_schedules_settled_size_recheck() { fn test_turn(turn_id: &str, status: TurnStatus, items: Vec) -> Turn { Turn { id: turn_id.to_string(), + root_turn_id: None, items_view: codex_app_server_protocol::TurnItemsView::Full, items, status, @@ -8426,6 +8427,7 @@ async fn prompt_edit_reverts_earlier_and_first_visible_prompts_in_place() -> Res completed_at_ms: 0, })), RolloutItem::EventMsg(EventMsg::TurnComplete(TurnCompleteEvent { + root_turn_id: None, turn_id: turn_id.to_string(), last_agent_message: None, error: None, @@ -8812,6 +8814,7 @@ async fn replay_thread_snapshot_replays_turn_history_in_order() { turns: vec![ Turn { id: "turn-1".to_string(), + root_turn_id: None, items_view: codex_app_server_protocol::TurnItemsView::Full, items: vec![ThreadItem::UserMessage { id: "user-1".to_string(), @@ -8829,6 +8832,7 @@ async fn replay_thread_snapshot_replays_turn_history_in_order() { }, Turn { id: "turn-2".to_string(), + root_turn_id: None, items_view: codex_app_server_protocol::TurnItemsView::Full, items: vec![ ThreadItem::UserMessage { diff --git a/codex-rs/tui/src/app/tests/buffered_replay.rs b/codex-rs/tui/src/app/tests/buffered_replay.rs index 708efcacb6..47ea84e91d 100644 --- a/codex-rs/tui/src/app/tests/buffered_replay.rs +++ b/codex-rs/tui/src/app/tests/buffered_replay.rs @@ -304,6 +304,7 @@ fn evicted_voice_delegation_marker_still_suppresses_private_replay() { let mut resumed = ThreadEventStore::new(/*capacity*/ 1); resumed.set_turns(vec![Turn { id: "voice-turn".into(), + root_turn_id: None, items: vec![voice_request], items_view: codex_app_server_protocol::TurnItemsView::Summary, status: TurnStatus::InProgress, @@ -345,6 +346,7 @@ fn saved_voice_turn_suppresses_reasoning_without_hiding_typed_reasoning() { }; let turn = |id: &str, items| Turn { id: id.into(), + root_turn_id: None, items, items_view: codex_app_server_protocol::TurnItemsView::Full, status: TurnStatus::Completed, @@ -390,6 +392,7 @@ fn snapshot_keeps_typed_output_before_voice_handoff_in_the_same_turn() { let mut store = ThreadEventStore::new(/*capacity*/ 8); store.set_turns(vec![Turn { id: "shared".into(), + root_turn_id: None, items: vec![typed.clone(), marker.clone(), private.clone()], items_view: codex_app_server_protocol::TurnItemsView::Full, status: TurnStatus::InProgress, diff --git a/codex-rs/tui/src/app/tests/history_hydration_tests.rs b/codex-rs/tui/src/app/tests/history_hydration_tests.rs index bd976a3dd5..5a65adb334 100644 --- a/codex-rs/tui/src/app/tests/history_hydration_tests.rs +++ b/codex-rs/tui/src/app/tests/history_hydration_tests.rs @@ -80,6 +80,7 @@ async fn history_fixture( })); } events.push(EventMsg::TurnComplete(TurnCompleteEvent { + root_turn_id: None, turn_id, last_agent_message: None, error: None, diff --git a/codex-rs/tui/src/app/tests/pagination_completion_tests.rs b/codex-rs/tui/src/app/tests/pagination_completion_tests.rs index 5698e5d2eb..7cfc88a950 100644 --- a/codex-rs/tui/src/app/tests/pagination_completion_tests.rs +++ b/codex-rs/tui/src/app/tests/pagination_completion_tests.rs @@ -95,6 +95,7 @@ pub(super) async fn completed_history_app( }) })); events.push(EventMsg::TurnComplete(TurnCompleteEvent { + root_turn_id: None, turn_id, last_agent_message: Some(format!("{name} answer")), error: None, diff --git a/codex-rs/tui/src/app/tests/realtime_requests.rs b/codex-rs/tui/src/app/tests/realtime_requests.rs index 632e6bd4a5..cb8c448549 100644 --- a/codex-rs/tui/src/app/tests/realtime_requests.rs +++ b/codex-rs/tui/src/app/tests/realtime_requests.rs @@ -299,6 +299,7 @@ async fn switching_agent_threads_preserves_backend_voice_and_routes_pending_spee thread_id: source.to_string(), turn: Turn { id: turn_id.into(), + root_turn_id: None, items: vec![answer.clone()], items_view: TurnItemsView::Summary, status: TurnStatus::Completed, @@ -665,6 +666,7 @@ async fn replay_reconciles_only_matching_voice_captions_one_for_one() { .insert(source, records); let voice = Turn { id: "voice-turn".into(), + root_turn_id: None, items: vec![ test_user_message( "voice-user", @@ -929,6 +931,7 @@ async fn unrendered_buffered_items_do_not_consume_retained_captions() { thread_id: source.to_string(), turn: Turn { id: turn_id.into(), + root_turn_id: None, items, items_view: TurnItemsView::Summary, status, @@ -1212,6 +1215,7 @@ async fn rejected_realtime_speech_restores_the_delegated_final_answer() -> Resul thread_id: thread_id.to_string(), turn: Turn { id: "rejected-turn".to_string(), + root_turn_id: None, items: vec![answer], items_view: TurnItemsView::Summary, status: TurnStatus::Completed, @@ -1311,6 +1315,7 @@ async fn switching_threads_retains_undelivered_voice_answer_after_replay_evictio thread_id: original.to_string(), turn: Turn { id: "switched-turn".to_string(), + root_turn_id: None, items: vec![answer], items_view: TurnItemsView::Summary, status: TurnStatus::Completed, @@ -1391,6 +1396,7 @@ async fn switching_threads_retains_undelivered_voice_answer_after_replay_evictio session: Some(test_thread_session(original, app.config.cwd.to_path_buf())), turns: vec![Turn { id: "replayed-turn".to_string(), + root_turn_id: None, items: vec![replayed_item], items_view: TurnItemsView::Summary, status: TurnStatus::Completed, @@ -1593,6 +1599,7 @@ async fn delegated_final_speech_reaches_app_server_once_and_stale_speech_is_reje thread_id: thread_id.to_string(), turn: Turn { id: turn_id.to_string(), + root_turn_id: None, items: vec![answer], items_view: TurnItemsView::Summary, status: TurnStatus::Completed, @@ -1670,6 +1677,7 @@ async fn delegated_final_speech_reaches_app_server_once_and_stale_speech_is_reje thread_id: thread_id.to_string(), turn: Turn { id: second_turn.to_string(), + root_turn_id: None, items: vec![second_answer], items_view: TurnItemsView::Summary, status: TurnStatus::Completed, diff --git a/codex-rs/tui/src/app/thread_event_buffer_tests.rs b/codex-rs/tui/src/app/thread_event_buffer_tests.rs index bfb61b5184..ec7e1e066b 100644 --- a/codex-rs/tui/src/app/thread_event_buffer_tests.rs +++ b/codex-rs/tui/src/app/thread_event_buffer_tests.rs @@ -18,6 +18,7 @@ fn turn_started_notification(thread_id: ThreadId, turn_id: &str) -> ServerNotifi thread_id: thread_id.to_string(), turn: Turn { id: turn_id.to_string(), + root_turn_id: None, items_view: TurnItemsView::Full, items: Vec::new(), status: TurnStatus::InProgress, diff --git a/codex-rs/tui/src/app/thread_events.rs b/codex-rs/tui/src/app/thread_events.rs index 1972b8047c..d7ef858246 100644 --- a/codex-rs/tui/src/app/thread_events.rs +++ b/codex-rs/tui/src/app/thread_events.rs @@ -689,6 +689,7 @@ mod tests { fn test_turn(turn_id: &str, status: TurnStatus, items: Vec) -> Turn { Turn { id: turn_id.to_string(), + root_turn_id: None, items_view: codex_app_server_protocol::TurnItemsView::Full, items, status, diff --git a/codex-rs/tui/src/app/thread_title_tests.rs b/codex-rs/tui/src/app/thread_title_tests.rs index e9b10fbb85..ca73ee8d30 100644 --- a/codex-rs/tui/src/app/thread_title_tests.rs +++ b/codex-rs/tui/src/app/thread_title_tests.rs @@ -269,6 +269,7 @@ async fn check_thread_title_generation(scenario: TitleScenario) -> color_eyre::R .turns .push(Turn { id: "existing-turn".to_string(), + root_turn_id: None, items: vec![title_user_message("user-message", "Fix the login timeout")], items_view: Default::default(), status: TurnStatus::Completed, diff --git a/codex-rs/tui/src/app/transcript_export_tests.rs b/codex-rs/tui/src/app/transcript_export_tests.rs index a0b3a2e9c6..21ee6e4c76 100644 --- a/codex-rs/tui/src/app/transcript_export_tests.rs +++ b/codex-rs/tui/src/app/transcript_export_tests.rs @@ -83,6 +83,7 @@ fn transcript_export_excludes_hidden_review_prompts_and_nested_duplicates() { let duplicate_two = user("duplicate-two", "duplicate review prompt"); let turn = |id: &str, items: Vec, status| Turn { id: id.to_string(), + root_turn_id: None, items, items_view: TurnItemsView::Full, status, diff --git a/codex-rs/tui/src/app_backtrack.rs b/codex-rs/tui/src/app_backtrack.rs index 762cdb0fa6..f55b75c1bb 100644 --- a/codex-rs/tui/src/app_backtrack.rs +++ b/codex-rs/tui/src/app_backtrack.rs @@ -729,6 +729,7 @@ mod tests { fn turn(turn_id: &str, status: TurnStatus, user_messages: usize) -> Turn { Turn { id: turn_id.to_string(), + root_turn_id: None, items: (0..user_messages) .map(|index| ThreadItem::UserMessage { id: format!("user-{index}"), diff --git a/codex-rs/tui/src/app_server_session.rs b/codex-rs/tui/src/app_server_session.rs index 475b8a0773..6d15c852f7 100644 --- a/codex-rs/tui/src/app_server_session.rs +++ b/codex-rs/tui/src/app_server_session.rs @@ -1439,6 +1439,8 @@ impl AppServerSession { disabled_plugin_ids: None, thread_id: thread_id.to_string(), turn_trigger: Some("user".to_string()), + parent_turn_id: None, + root_turn_id: None, client_user_message_id: Some(client_user_message_id), input: items, tool_output: None, @@ -4118,6 +4120,7 @@ mod tests { name: None, turns: vec![Turn { id: "turn-1".to_string(), + root_turn_id: None, items_view: codex_app_server_protocol::TurnItemsView::Full, items: vec![ codex_app_server_protocol::ThreadItem::UserMessage { diff --git a/codex-rs/tui/src/chatwidget/realtime_tests.rs b/codex-rs/tui/src/chatwidget/realtime_tests.rs index 2bb89b585a..78c53630df 100644 --- a/codex-rs/tui/src/chatwidget/realtime_tests.rs +++ b/codex-rs/tui/src/chatwidget/realtime_tests.rs @@ -126,6 +126,7 @@ fn finish_turn( thread_id: thread_id.to_string(), turn: Turn { id: turn_id.to_string(), + root_turn_id: None, items, items_view: TurnItemsView::Summary, status, diff --git a/codex-rs/tui/src/chatwidget/realtime_tests/caption_replay.rs b/codex-rs/tui/src/chatwidget/realtime_tests/caption_replay.rs index fe1bf60b6c..c5b234de6b 100644 --- a/codex-rs/tui/src/chatwidget/realtime_tests/caption_replay.rs +++ b/codex-rs/tui/src/chatwidget/realtime_tests/caption_replay.rs @@ -10,6 +10,7 @@ async fn replay_preserves_typed_updates_before_voice_steers_the_turn() { chat.replay_thread_turns( vec![Turn { id: "typed-then-voice".into(), + root_turn_id: None, items: vec![ user_item("Typed question"), agent_item( @@ -79,6 +80,7 @@ async fn in_progress_voice_replay_restores_the_late_reasoning_guard() { chat.replay_thread_turns( vec![Turn { id: "saved-voice-turn".into(), + root_turn_id: None, items: vec![voice_request.clone()], items_view: TurnItemsView::Full, status: TurnStatus::InProgress, diff --git a/codex-rs/tui/src/chatwidget/replay.rs b/codex-rs/tui/src/chatwidget/replay.rs index ccb5b77514..1907577c56 100644 --- a/codex-rs/tui/src/chatwidget/replay.rs +++ b/codex-rs/tui/src/chatwidget/replay.rs @@ -126,6 +126,7 @@ impl ChatWidget { } let Turn { id: turn_id, + root_turn_id, items_view: _, items, status, @@ -224,6 +225,7 @@ impl ChatWidget { thread_id: self.thread_id.map(|id| id.to_string()).unwrap_or_default(), turn: Turn { id: turn_id, + root_turn_id, items_view: codex_app_server_protocol::TurnItemsView::NotLoaded, items: Vec::new(), status, diff --git a/codex-rs/tui/src/chatwidget/tests/app_server.rs b/codex-rs/tui/src/chatwidget/tests/app_server.rs index c1530e035d..8a4f864aaa 100644 --- a/codex-rs/tui/src/chatwidget/tests/app_server.rs +++ b/codex-rs/tui/src/chatwidget/tests/app_server.rs @@ -162,6 +162,7 @@ fn start_safety_buffering_test_turn( thread_id: thread_id.to_string(), turn: AppServerTurn { id: turn_id.to_string(), + root_turn_id: None, items_view: codex_app_server_protocol::TurnItemsView::Full, items: Vec::new(), status: AppServerTurnStatus::InProgress, @@ -874,6 +875,7 @@ async fn live_app_server_turn_completed_clears_working_status_after_answer_item( thread_id: "thread-1".to_string(), turn: AppServerTurn { id: "turn-1".to_string(), + root_turn_id: None, items_view: codex_app_server_protocol::TurnItemsView::Full, items: Vec::new(), status: AppServerTurnStatus::InProgress, @@ -921,6 +923,7 @@ async fn live_app_server_turn_completed_clears_working_status_after_answer_item( thread_id: "thread-1".to_string(), turn: AppServerTurn { id: "turn-1".to_string(), + root_turn_id: None, items_view: codex_app_server_protocol::TurnItemsView::Summary, items: vec![item], status: AppServerTurnStatus::Completed, @@ -958,6 +961,7 @@ async fn live_app_server_turn_started_sets_feedback_turn_id() { thread_id: "thread-1".to_string(), turn: AppServerTurn { id: "turn-1".to_string(), + root_turn_id: None, items_view: codex_app_server_protocol::TurnItemsView::Full, items: Vec::new(), status: AppServerTurnStatus::InProgress, @@ -1538,6 +1542,7 @@ async fn live_app_server_failed_turn_does_not_duplicate_error_history() { thread_id: "thread-1".to_string(), turn: AppServerTurn { id: "turn-1".to_string(), + root_turn_id: None, items_view: codex_app_server_protocol::TurnItemsView::Full, items: Vec::new(), status: AppServerTurnStatus::InProgress, @@ -1573,6 +1578,7 @@ async fn live_app_server_failed_turn_does_not_duplicate_error_history() { thread_id: "thread-1".to_string(), turn: AppServerTurn { id: "turn-1".to_string(), + root_turn_id: None, items_view: codex_app_server_protocol::TurnItemsView::Full, items: Vec::new(), status: AppServerTurnStatus::Failed, @@ -1705,6 +1711,7 @@ async fn live_app_server_stream_recovery_restores_previous_status_header() { thread_id: "thread-1".to_string(), turn: AppServerTurn { id: "turn-1".to_string(), + root_turn_id: None, items_view: codex_app_server_protocol::TurnItemsView::Full, items: Vec::new(), status: AppServerTurnStatus::InProgress, @@ -1782,6 +1789,7 @@ async fn live_app_server_server_overloaded_error_renders_error() { thread_id: "thread-1".to_string(), turn: AppServerTurn { id: "turn-1".to_string(), + root_turn_id: None, items_view: codex_app_server_protocol::TurnItemsView::Full, items: Vec::new(), status: AppServerTurnStatus::InProgress, @@ -1825,6 +1833,7 @@ async fn live_app_server_cyber_policy_error_renders_dedicated_notice() { thread_id: "thread-1".to_string(), turn: AppServerTurn { id: "turn-1".to_string(), + root_turn_id: None, items_view: codex_app_server_protocol::TurnItemsView::Full, items: Vec::new(), status: AppServerTurnStatus::InProgress, diff --git a/codex-rs/tui/src/chatwidget/tests/helpers.rs b/codex-rs/tui/src/chatwidget/tests/helpers.rs index 5d0a24a46e..2ccf46ce42 100644 --- a/codex-rs/tui/src/chatwidget/tests/helpers.rs +++ b/codex-rs/tui/src/chatwidget/tests/helpers.rs @@ -1131,6 +1131,7 @@ pub(super) fn app_server_turn( ) -> AppServerTurn { AppServerTurn { id: turn_id.to_string(), + root_turn_id: None, items_view: codex_app_server_protocol::TurnItemsView::Full, items: Vec::new(), status, diff --git a/codex-rs/tui/src/chatwidget/tests/history_replay.rs b/codex-rs/tui/src/chatwidget/tests/history_replay.rs index 25dd196a46..23c08f2271 100644 --- a/codex-rs/tui/src/chatwidget/tests/history_replay.rs +++ b/codex-rs/tui/src/chatwidget/tests/history_replay.rs @@ -1140,6 +1140,7 @@ async fn replayed_retryable_app_server_error_keeps_turn_running() { thread_id: "thread-1".to_string(), turn: AppServerTurn { id: "turn-1".to_string(), + root_turn_id: None, items_view: codex_app_server_protocol::TurnItemsView::Full, items: Vec::new(), status: AppServerTurnStatus::InProgress, @@ -1475,6 +1476,7 @@ async fn live_reasoning_summary_is_not_rendered_twice_when_item_completes() { thread_id: "thread-1".to_string(), turn: AppServerTurn { id: "turn-1".to_string(), + root_turn_id: None, items_view: codex_app_server_protocol::TurnItemsView::Full, items: Vec::new(), status: AppServerTurnStatus::InProgress, @@ -1534,6 +1536,7 @@ async fn live_reasoning_summary_drops_empty_parts_without_losing_content() { thread_id: "thread-1".to_string(), turn: AppServerTurn { id: "turn-1".to_string(), + root_turn_id: None, items_view: codex_app_server_protocol::TurnItemsView::Full, items: Vec::new(), status: AppServerTurnStatus::InProgress, diff --git a/codex-rs/tui/src/chatwidget/tests/plan_mode.rs b/codex-rs/tui/src/chatwidget/tests/plan_mode.rs index 735f0df413..2b3257073c 100644 --- a/codex-rs/tui/src/chatwidget/tests/plan_mode.rs +++ b/codex-rs/tui/src/chatwidget/tests/plan_mode.rs @@ -810,6 +810,7 @@ async fn plan_implementation_popup_skips_replayed_turn_complete() { chat.replay_thread_turns( vec![AppServerTurn { id: "turn-1".to_string(), + root_turn_id: None, items_view: codex_app_server_protocol::TurnItemsView::Full, items: vec![AppServerThreadItem::AgentMessage { id: "msg-plan".to_string(), @@ -850,6 +851,7 @@ async fn plan_implementation_popup_shows_once_when_replay_precedes_live_turn_com chat.replay_thread_turns( vec![AppServerTurn { id: "turn-1".to_string(), + root_turn_id: None, items_view: codex_app_server_protocol::TurnItemsView::Full, items: vec![AppServerThreadItem::AgentMessage { id: "msg-plan-replay".to_string(), @@ -1159,6 +1161,7 @@ async fn submit_user_message_queues_while_compaction_turn_is_running() { thread_id: thread_id.to_string(), turn: AppServerTurn { id: "turn-1".to_string(), + root_turn_id: None, items_view: codex_app_server_protocol::TurnItemsView::Full, items: Vec::new(), status: AppServerTurnStatus::InProgress, @@ -1204,6 +1207,7 @@ async fn submit_user_message_queues_while_compaction_turn_is_running() { thread_id: thread_id.to_string(), turn: AppServerTurn { id: "turn-1".to_string(), + root_turn_id: None, items_view: codex_app_server_protocol::TurnItemsView::Full, items: Vec::new(), status: AppServerTurnStatus::Completed, diff --git a/codex-rs/tui/src/chatwidget/tests/review_mode.rs b/codex-rs/tui/src/chatwidget/tests/review_mode.rs index 914974aaee..dd8214d013 100644 --- a/codex-rs/tui/src/chatwidget/tests/review_mode.rs +++ b/codex-rs/tui/src/chatwidget/tests/review_mode.rs @@ -1298,6 +1298,7 @@ async fn interrupted_turn_after_goal_budget_limited_uses_budget_message_snapshot thread_id: "thread-1".to_string(), turn: codex_app_server_protocol::Turn { id: "turn-1".to_string(), + root_turn_id: None, items_view: codex_app_server_protocol::TurnItemsView::Full, items: Vec::new(), status: codex_app_server_protocol::TurnStatus::InProgress, @@ -1335,6 +1336,7 @@ async fn interrupted_turn_after_goal_budget_limited_uses_budget_message_snapshot thread_id: "thread-1".to_string(), turn: codex_app_server_protocol::Turn { id: "turn-1".to_string(), + root_turn_id: None, items_view: codex_app_server_protocol::TurnItemsView::Full, items: Vec::new(), status: codex_app_server_protocol::TurnStatus::Interrupted, diff --git a/codex-rs/tui/src/chatwidget/thread_usage_tests.rs b/codex-rs/tui/src/chatwidget/thread_usage_tests.rs index 625818ecf8..64aeca360a 100644 --- a/codex-rs/tui/src/chatwidget/thread_usage_tests.rs +++ b/codex-rs/tui/src/chatwidget/thread_usage_tests.rs @@ -274,6 +274,7 @@ async fn replayed_turn_completions_do_not_start_live_billing_refreshes() { chat.replay_thread_turns( vec![Turn { id: "replayed-turn".to_string(), + root_turn_id: None, items: Vec::new(), items_view: TurnItemsView::NotLoaded, status: status.clone(), diff --git a/codex-rs/tui/src/resume_picker.rs b/codex-rs/tui/src/resume_picker.rs index 4d5bf6cb83..40b6d74402 100644 --- a/codex-rs/tui/src/resume_picker.rs +++ b/codex-rs/tui/src/resume_picker.rs @@ -6747,6 +6747,7 @@ session_picker_view = "dense" name: None, turns: vec![codex_app_server_protocol::Turn { id: String::from("turn-1"), + root_turn_id: None, items_view: codex_app_server_protocol::TurnItemsView::Full, items: vec![ ThreadItem::UserMessage { @@ -6834,6 +6835,7 @@ session_picker_view = "dense" name: None, turns: vec![codex_app_server_protocol::Turn { id: String::from("turn-1"), + root_turn_id: None, items_view: codex_app_server_protocol::TurnItemsView::Full, items: vec![ThreadItem::Reasoning { id: String::from("reasoning-1"), @@ -6912,6 +6914,7 @@ session_picker_view = "dense" name: None, turns: vec![codex_app_server_protocol::Turn { id: String::from("turn-1"), + root_turn_id: None, items_view: codex_app_server_protocol::TurnItemsView::Full, items: vec![ThreadItem::Reasoning { id: String::from("reasoning-1"), diff --git a/codex-rs/tui/src/temporary_structured_request_tests.rs b/codex-rs/tui/src/temporary_structured_request_tests.rs index 88c24a40b1..e86668e5ad 100644 --- a/codex-rs/tui/src/temporary_structured_request_tests.rs +++ b/codex-rs/tui/src/temporary_structured_request_tests.rs @@ -43,6 +43,7 @@ fn turn_completed_notification(turn_id: &str, status: TurnStatus) -> ServerNotif thread_id: "thread-1".to_string(), turn: Turn { id: turn_id.to_string(), + root_turn_id: None, items: Vec::new(), items_view: Default::default(), status, diff --git a/codex-rs/tui/src/thread_transcript/computer_groups_tests.rs b/codex-rs/tui/src/thread_transcript/computer_groups_tests.rs index 7bb259621e..6e24c27ef5 100644 --- a/codex-rs/tui/src/thread_transcript/computer_groups_tests.rs +++ b/codex-rs/tui/src/thread_transcript/computer_groups_tests.rs @@ -23,6 +23,7 @@ fn computer(id: &str) -> ThreadItem { fn turn(id: &str, items: Vec) -> Turn { Turn { id: id.to_string(), + root_turn_id: None, items, items_view: TurnItemsView::Full, status: TurnStatus::Completed, diff --git a/codex-rs/tui/src/transcript_view/mutations_tests.rs b/codex-rs/tui/src/transcript_view/mutations_tests.rs index ad0d244789..25edcdf7b0 100644 --- a/codex-rs/tui/src/transcript_view/mutations_tests.rs +++ b/codex-rs/tui/src/transcript_view/mutations_tests.rs @@ -378,6 +378,7 @@ fn folding_a_reasoning_only_page_retains_its_find_and_copy_revision() { }; let current = Turn { id: "turn".to_owned(), + root_turn_id: None, items: vec![call, reasoning], items_view: TurnItemsView::Full, status: TurnStatus::Completed, diff --git a/sdk/python/src/openai_codex/generated/v2_all.py b/sdk/python/src/openai_codex/generated/v2_all.py index 4a5cd1f191..de694cbfed 100644 --- a/sdk/python/src/openai_codex/generated/v2_all.py +++ b/sdk/python/src/openai_codex/generated/v2_all.py @@ -11672,6 +11672,13 @@ class Turn(BaseModel): description="Describes how much of `items` has been loaded for this turn.", ), ] = "full" + root_turn_id: Annotated[ + str | None, + Field( + alias="rootTurnId", + description="ID of the first turn in the chain of work that led to this turn. Pass this as `rootTurnId` when starting work on behalf of this turn. May be null in older history or a `review/start` response.", + ), + ] = None started_at: Annotated[ int | None, Field(alias="startedAt", description="Unix timestamp (in seconds) when the turn started."), @@ -12555,12 +12562,26 @@ class TurnStartParams(BaseModel): description="Optional JSON Schema used to constrain the final assistant message for this turn.", ), ] = None + parent_turn_id: Annotated[ + str | None, + Field( + alias="parentTurnId", + description="ID of the turn that caused this new turn to start.\n\nSet this when starting work on behalf of another turn, such as delegated work in a different thread. Leave unset for work started directly by the user. Ignored when this request adds input to an active turn.", + ), + ] = None personality: Annotated[ Personality | None, Field( description="@deprecated `friendly` and `pragmatic` no longer select a style. Changing this does not rewrite the thread's existing instructions." ), ] = None + root_turn_id: Annotated[ + str | None, + Field( + alias="rootTurnId", + description="ID of the first turn in the chain of work that led to this new turn.\n\nWhen setting `parentTurnId`, set this to the parent turn's `rootTurnId` when known. This keeps descendant work attributed to the original turn. If omitted, the new turn becomes its own root. Ignored when this request adds input to an active turn.", + ), + ] = None sandbox_policy: Annotated[ SandboxPolicy | None, Field(