From 35bc6e3d0161bc322d7b36de1a150509ef9764bc Mon Sep 17 00:00:00 2001 From: Andrey Mishchenko Date: Sun, 26 Apr 2026 17:18:09 -0700 Subject: [PATCH] Delete unused ResponseItem::Message.end_turn (#19605) This field is unused. Delete it. --- .../schema/json/ClientRequest.json | 8 +---- .../codex_app_server_protocol.schemas.json | 8 +---- .../codex_app_server_protocol.v2.schemas.json | 8 +---- .../RawResponseItemCompletedNotification.json | 8 +---- .../schema/json/v2/ThreadResumeParams.json | 8 +---- .../schema/typescript/ResponseItem.ts | 2 +- .../src/protocol/thread_history.rs | 1 - .../app-server/tests/suite/v2/compaction.rs | 1 - .../tests/suite/v2/thread_inject_items.rs | 2 -- .../tests/suite/v2/thread_resume.rs | 2 -- codex-rs/codex-api/tests/clients.rs | 1 - codex-rs/core/src/agent/control_tests.rs | 3 -- codex-rs/core/src/arc_monitor_tests.rs | 7 ---- codex-rs/core/src/codex_thread.rs | 1 - codex-rs/core/src/compact.rs | 2 -- codex-rs/core/src/compact_tests.rs | 35 ------------------- codex-rs/core/src/context/fragment.rs | 1 - .../core/src/context_manager/history_tests.rs | 24 ------------- codex-rs/core/src/context_manager/updates.rs | 1 - codex-rs/core/src/event_mapping_tests.rs | 12 ------- codex-rs/core/src/guardian/tests.rs | 20 ----------- codex-rs/core/src/memories/phase1.rs | 3 -- codex-rs/core/src/memories/phase1_tests.rs | 4 --- codex-rs/core/src/realtime_context_tests.rs | 1 - codex-rs/core/src/session/mod.rs | 1 - .../session/rollout_reconstruction_tests.rs | 3 -- codex-rs/core/src/session/tests.rs | 13 ------- .../core/src/session/tests/guardian_tests.rs | 2 -- .../core/src/stream_events_utils_tests.rs | 1 - codex-rs/core/src/tasks/mod.rs | 1 - codex-rs/core/src/tasks/review.rs | 2 -- codex-rs/core/src/thread_manager_tests.rs | 2 -- .../src/thread_rollout_truncation_tests.rs | 2 -- .../src/tools/handlers/multi_agents_tests.rs | 1 - codex-rs/core/src/turn_timing_tests.rs | 2 -- codex-rs/core/tests/common/responses.rs | 1 - codex-rs/core/tests/responses_headers.rs | 3 -- codex-rs/core/tests/suite/client.rs | 6 ---- .../core/tests/suite/client_websockets.rs | 2 -- codex-rs/core/tests/suite/compact.rs | 3 -- codex-rs/core/tests/suite/compact_remote.rs | 3 -- codex-rs/core/tests/suite/image_rollout.rs | 2 -- .../core/tests/suite/prompt_debug_tests.rs | 1 - .../core/tests/suite/realtime_conversation.rs | 2 -- codex-rs/core/tests/suite/review.rs | 2 -- codex-rs/protocol/src/items.rs | 1 - codex-rs/protocol/src/models.rs | 5 --- codex-rs/protocol/src/protocol.rs | 1 - codex-rs/rollout/src/tests.rs | 1 - codex-rs/state/src/extract.rs | 1 - codex-rs/tui/src/app/side.rs | 1 - 51 files changed, 6 insertions(+), 222 deletions(-) diff --git a/codex-rs/app-server-protocol/schema/json/ClientRequest.json b/codex-rs/app-server-protocol/schema/json/ClientRequest.json index f34ee2897..cf665f4a5 100644 --- a/codex-rs/app-server-protocol/schema/json/ClientRequest.json +++ b/codex-rs/app-server-protocol/schema/json/ClientRequest.json @@ -2292,12 +2292,6 @@ }, "type": "array" }, - "end_turn": { - "type": [ - "boolean", - "null" - ] - }, "id": { "type": [ "string", @@ -6130,4 +6124,4 @@ } ], "title": "ClientRequest" -} \ No newline at end of file +} 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 2fc1be346..47c6680ad 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 @@ -12739,12 +12739,6 @@ }, "type": "array" }, - "end_turn": { - "type": [ - "boolean", - "null" - ] - }, "id": { "type": [ "string", @@ -17758,4 +17752,4 @@ }, "title": "CodexAppServerProtocol", "type": "object" -} \ No newline at end of file +} 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 87e133a07..455d9f16f 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 @@ -9413,12 +9413,6 @@ }, "type": "array" }, - "end_turn": { - "type": [ - "boolean", - "null" - ] - }, "id": { "type": [ "string", @@ -15643,4 +15637,4 @@ }, "title": "CodexAppServerProtocolV2", "type": "object" -} \ No newline at end of file +} diff --git a/codex-rs/app-server-protocol/schema/json/v2/RawResponseItemCompletedNotification.json b/codex-rs/app-server-protocol/schema/json/v2/RawResponseItemCompletedNotification.json index 956e3b250..34e4086c5 100644 --- a/codex-rs/app-server-protocol/schema/json/v2/RawResponseItemCompletedNotification.json +++ b/codex-rs/app-server-protocol/schema/json/v2/RawResponseItemCompletedNotification.json @@ -345,12 +345,6 @@ }, "type": "array" }, - "end_turn": { - "type": [ - "boolean", - "null" - ] - }, "id": { "type": [ "string", @@ -928,4 +922,4 @@ ], "title": "RawResponseItemCompletedNotification", "type": "object" -} \ No newline at end of file +} diff --git a/codex-rs/app-server-protocol/schema/json/v2/ThreadResumeParams.json b/codex-rs/app-server-protocol/schema/json/v2/ThreadResumeParams.json index 40ff83aeb..872a3eb32 100644 --- a/codex-rs/app-server-protocol/schema/json/v2/ThreadResumeParams.json +++ b/codex-rs/app-server-protocol/schema/json/v2/ThreadResumeParams.json @@ -756,12 +756,6 @@ }, "type": "array" }, - "end_turn": { - "type": [ - "boolean", - "null" - ] - }, "id": { "type": [ "string", @@ -1458,4 +1452,4 @@ ], "title": "ThreadResumeParams", "type": "object" -} \ No newline at end of file +} diff --git a/codex-rs/app-server-protocol/schema/typescript/ResponseItem.ts b/codex-rs/app-server-protocol/schema/typescript/ResponseItem.ts index 04b8bdcda..eed78b1fc 100644 --- a/codex-rs/app-server-protocol/schema/typescript/ResponseItem.ts +++ b/codex-rs/app-server-protocol/schema/typescript/ResponseItem.ts @@ -11,7 +11,7 @@ import type { ReasoningItemContent } from "./ReasoningItemContent"; import type { ReasoningItemReasoningSummary } from "./ReasoningItemReasoningSummary"; import type { WebSearchAction } from "./WebSearchAction"; -export type ResponseItem = { "type": "message", role: string, content: Array, end_turn?: boolean, phase?: MessagePhase, } | { "type": "reasoning", summary: Array, content?: Array, encrypted_content: string | null, } | { "type": "local_shell_call", +export type ResponseItem = { "type": "message", role: string, content: Array, phase?: MessagePhase, } | { "type": "reasoning", summary: Array, content?: Array, encrypted_content: string | null, } | { "type": "local_shell_call", /** * Set when using the Responses API. */ 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 c6090dbe1..019c9fa83 100644 --- a/codex-rs/app-server-protocol/src/protocol/thread_history.rs +++ b/codex-rs/app-server-protocol/src/protocol/thread_history.rs @@ -3096,7 +3096,6 @@ mod tests { content: vec![codex_protocol::models::ContentItem::InputText { text: "plain text".into(), }], - end_turn: None, phase: None, }), RolloutItem::EventMsg(EventMsg::TurnComplete(TurnCompleteEvent { diff --git a/codex-rs/app-server/tests/suite/v2/compaction.rs b/codex-rs/app-server/tests/suite/v2/compaction.rs index 44b5dd6dc..6db031b27 100644 --- a/codex-rs/app-server/tests/suite/v2/compaction.rs +++ b/codex-rs/app-server/tests/suite/v2/compaction.rs @@ -134,7 +134,6 @@ async fn auto_compaction_remote_emits_started_and_completed_items() -> Result<() content: vec![ContentItem::OutputText { text: "REMOTE_COMPACT_SUMMARY".to_string(), }], - end_turn: None, phase: None, }, ResponseItem::Compaction { diff --git a/codex-rs/app-server/tests/suite/v2/thread_inject_items.rs b/codex-rs/app-server/tests/suite/v2/thread_inject_items.rs index 56fd188c4..5a45e81e1 100644 --- a/codex-rs/app-server/tests/suite/v2/thread_inject_items.rs +++ b/codex-rs/app-server/tests/suite/v2/thread_inject_items.rs @@ -59,7 +59,6 @@ async fn thread_inject_items_adds_raw_response_items_to_thread_history() -> Resu content: vec![ContentItem::OutputText { text: injected_text.to_string(), }], - end_turn: None, phase: None, }; @@ -195,7 +194,6 @@ async fn thread_inject_items_adds_raw_response_items_after_a_turn() -> Result<() content: vec![ContentItem::OutputText { text: "Injected after first turn".to_string(), }], - end_turn: None, phase: None, }; let injected_value = serde_json::to_value(&injected_item)?; 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 9b44ae4fe..5044fcd11 100644 --- a/codex-rs/app-server/tests/suite/v2/thread_resume.rs +++ b/codex-rs/app-server/tests/suite/v2/thread_resume.rs @@ -1660,7 +1660,6 @@ async fn thread_resume_rejects_history_when_thread_is_running() -> Result<()> { content: vec![ContentItem::InputText { text: "history override".to_string(), }], - end_turn: None, phase: None, }]), ..Default::default() @@ -2616,7 +2615,6 @@ async fn thread_resume_supports_history_and_overrides() -> Result<()> { content: vec![ContentItem::InputText { text: history_text.to_string(), }], - end_turn: None, phase: None, }]; diff --git a/codex-rs/codex-api/tests/clients.rs b/codex-rs/codex-api/tests/clients.rs index 46f562759..218a99f9b 100644 --- a/codex-rs/codex-api/tests/clients.rs +++ b/codex-rs/codex-api/tests/clients.rs @@ -423,7 +423,6 @@ async fn azure_default_store_attaches_ids_and_headers() -> Result<()> { id: Some("msg_1".into()), role: "user".into(), content: vec![ContentItem::InputText { text: "hi".into() }], - end_turn: None, phase: None, }], tools: Vec::new(), diff --git a/codex-rs/core/src/agent/control_tests.rs b/codex-rs/core/src/agent/control_tests.rs index 6018c3747..daa86718f 100644 --- a/codex-rs/core/src/agent/control_tests.rs +++ b/codex-rs/core/src/agent/control_tests.rs @@ -66,7 +66,6 @@ fn assistant_message(text: &str, phase: Option) -> ResponseItem { content: vec![ContentItem::OutputText { text: text.to_string(), }], - end_turn: None, phase, } } @@ -519,7 +518,6 @@ async fn append_message_records_assistant_message() { content: vec![ContentItem::InputText { text: message.to_string(), }], - end_turn: None, phase: None, }, ) @@ -678,7 +676,6 @@ async fn spawn_agent_can_fork_parent_thread_history_with_sanitized_items() { content: vec![ContentItem::InputText { text: "parent seed context".to_string(), }], - end_turn: None, phase: None, }, assistant_message("parent final answer", Some(MessagePhase::FinalAnswer)), diff --git a/codex-rs/core/src/arc_monitor_tests.rs b/codex-rs/core/src/arc_monitor_tests.rs index 1cb29ce08..4c2429cf5 100644 --- a/codex-rs/core/src/arc_monitor_tests.rs +++ b/codex-rs/core/src/arc_monitor_tests.rs @@ -65,7 +65,6 @@ async fn build_arc_monitor_request_includes_relevant_history_and_null_policies() content: vec![ContentItem::InputText { text: "first request".to_string(), }], - end_turn: None, phase: None, }], &turn_context, @@ -94,7 +93,6 @@ async fn build_arc_monitor_request_includes_relevant_history_and_null_policies() content: vec![ContentItem::OutputText { text: "commentary".to_string(), }], - end_turn: None, phase: Some(MessagePhase::Commentary), }], &turn_context, @@ -108,7 +106,6 @@ async fn build_arc_monitor_request_includes_relevant_history_and_null_policies() content: vec![ContentItem::OutputText { text: "final response".to_string(), }], - end_turn: None, phase: Some(MessagePhase::FinalAnswer), }], &turn_context, @@ -122,7 +119,6 @@ async fn build_arc_monitor_request_includes_relevant_history_and_null_policies() content: vec![ContentItem::InputText { text: "latest request".to_string(), }], - end_turn: None, phase: None, }], &turn_context, @@ -277,7 +273,6 @@ async fn monitor_action_posts_expected_arc_request() { content: vec![ContentItem::InputText { text: "please run the tool".to_string(), }], - end_turn: None, phase: None, }], &turn_context, @@ -358,7 +353,6 @@ async fn monitor_action_uses_env_url_and_token_overrides() { content: vec![ContentItem::InputText { text: "please run the tool".to_string(), }], - end_turn: None, phase: None, }], &turn_context, @@ -428,7 +422,6 @@ async fn monitor_action_rejects_legacy_response_fields() { content: vec![ContentItem::InputText { text: "please run the tool".to_string(), }], - end_turn: None, phase: None, }], &turn_context, diff --git a/codex-rs/core/src/codex_thread.rs b/codex-rs/core/src/codex_thread.rs index a32cda4a1..7454b9865 100644 --- a/codex-rs/core/src/codex_thread.rs +++ b/codex-rs/core/src/codex_thread.rs @@ -278,7 +278,6 @@ impl CodexThread { id: None, role: "user".to_string(), content: vec![ContentItem::InputText { text: message }], - end_turn: None, phase: None, }; let pending_item = match pending_message_input_item(&message) { diff --git a/codex-rs/core/src/compact.rs b/codex-rs/core/src/compact.rs index 4ae9e9fcd..e9218ae7f 100644 --- a/codex-rs/core/src/compact.rs +++ b/codex-rs/core/src/compact.rs @@ -509,7 +509,6 @@ fn build_compacted_history_with_limit( content: vec![ContentItem::InputText { text: message.clone(), }], - end_turn: None, phase: None, }); } @@ -524,7 +523,6 @@ fn build_compacted_history_with_limit( id: None, role: "user".to_string(), content: vec![ContentItem::InputText { text: summary_text }], - end_turn: None, phase: None, }); diff --git a/codex-rs/core/src/compact_tests.rs b/codex-rs/core/src/compact_tests.rs index fbdfdb051..8fdb7fb4b 100644 --- a/codex-rs/core/src/compact_tests.rs +++ b/codex-rs/core/src/compact_tests.rs @@ -63,7 +63,6 @@ fn collect_user_messages_extracts_user_text_only() { content: vec![ContentItem::OutputText { text: "ignored".to_string(), }], - end_turn: None, phase: None, }, ResponseItem::Message { @@ -72,7 +71,6 @@ fn collect_user_messages_extracts_user_text_only() { content: vec![ContentItem::InputText { text: "first".to_string(), }], - end_turn: None, phase: None, }, ResponseItem::Other, @@ -97,7 +95,6 @@ do things "# .to_string(), }], - end_turn: None, phase: None, }, ResponseItem::Message { @@ -106,7 +103,6 @@ do things content: vec![ContentItem::InputText { text: "cwd=/tmp".to_string(), }], - end_turn: None, phase: None, }, ResponseItem::Message { @@ -115,7 +111,6 @@ do things content: vec![ContentItem::InputText { text: "real user message".to_string(), }], - end_turn: None, phase: None, }, ]; @@ -223,7 +218,6 @@ async fn process_compacted_history_replaces_developer_messages() { content: vec![ContentItem::InputText { text: "stale permissions".to_string(), }], - end_turn: None, phase: None, }, ResponseItem::Message { @@ -232,7 +226,6 @@ async fn process_compacted_history_replaces_developer_messages() { content: vec![ContentItem::InputText { text: "summary".to_string(), }], - end_turn: None, phase: None, }, ResponseItem::Message { @@ -241,7 +234,6 @@ async fn process_compacted_history_replaces_developer_messages() { content: vec![ContentItem::InputText { text: "stale personality".to_string(), }], - end_turn: None, phase: None, }, ]; @@ -256,7 +248,6 @@ async fn process_compacted_history_replaces_developer_messages() { content: vec![ContentItem::InputText { text: "summary".to_string(), }], - end_turn: None, phase: None, }); assert_eq!(refreshed, expected); @@ -270,7 +261,6 @@ async fn process_compacted_history_reinjects_full_initial_context() { content: vec![ContentItem::InputText { text: "summary".to_string(), }], - end_turn: None, phase: None, }]; let (refreshed, mut expected) = process_compacted_history_with_test_session( @@ -284,7 +274,6 @@ async fn process_compacted_history_reinjects_full_initial_context() { content: vec![ContentItem::InputText { text: "summary".to_string(), }], - end_turn: None, phase: None, }); assert_eq!(refreshed, expected); @@ -304,7 +293,6 @@ keep me updated "# .to_string(), }], - end_turn: None, phase: None, }, ResponseItem::Message { @@ -317,7 +305,6 @@ keep me updated "# .to_string(), }], - end_turn: None, phase: None, }, ResponseItem::Message { @@ -330,7 +317,6 @@ keep me updated "# .to_string(), }], - end_turn: None, phase: None, }, ResponseItem::Message { @@ -339,7 +325,6 @@ keep me updated content: vec![ContentItem::InputText { text: "summary".to_string(), }], - end_turn: None, phase: None, }, ResponseItem::Message { @@ -348,7 +333,6 @@ keep me updated content: vec![ContentItem::InputText { text: "stale developer instructions".to_string(), }], - end_turn: None, phase: None, }, ]; @@ -363,7 +347,6 @@ keep me updated content: vec![ContentItem::InputText { text: "summary".to_string(), }], - end_turn: None, phase: None, }); assert_eq!(refreshed, expected); @@ -378,7 +361,6 @@ async fn process_compacted_history_inserts_context_before_last_real_user_message content: vec![ContentItem::InputText { text: "older user".to_string(), }], - end_turn: None, phase: None, }, ResponseItem::Message { @@ -387,7 +369,6 @@ async fn process_compacted_history_inserts_context_before_last_real_user_message content: vec![ContentItem::InputText { text: format!("{SUMMARY_PREFIX}\nsummary text"), }], - end_turn: None, phase: None, }, ResponseItem::Message { @@ -396,7 +377,6 @@ async fn process_compacted_history_inserts_context_before_last_real_user_message content: vec![ContentItem::InputText { text: "latest user".to_string(), }], - end_turn: None, phase: None, }, ]; @@ -413,7 +393,6 @@ async fn process_compacted_history_inserts_context_before_last_real_user_message content: vec![ContentItem::InputText { text: "older user".to_string(), }], - end_turn: None, phase: None, }, ResponseItem::Message { @@ -422,7 +401,6 @@ async fn process_compacted_history_inserts_context_before_last_real_user_message content: vec![ContentItem::InputText { text: format!("{SUMMARY_PREFIX}\nsummary text"), }], - end_turn: None, phase: None, }, ]; @@ -433,7 +411,6 @@ async fn process_compacted_history_inserts_context_before_last_real_user_message content: vec![ContentItem::InputText { text: "latest user".to_string(), }], - end_turn: None, phase: None, }); assert_eq!(refreshed, expected); @@ -447,7 +424,6 @@ async fn process_compacted_history_reinjects_model_switch_message() { content: vec![ContentItem::InputText { text: "summary".to_string(), }], - end_turn: None, phase: None, }]; let previous_turn_settings = PreviousTurnSettings { @@ -477,7 +453,6 @@ async fn process_compacted_history_reinjects_model_switch_message() { content: vec![ContentItem::InputText { text: "summary".to_string(), }], - end_turn: None, phase: None, }); assert_eq!(refreshed, expected); @@ -492,7 +467,6 @@ fn insert_initial_context_before_last_real_user_or_summary_keeps_summary_last() content: vec![ContentItem::InputText { text: "older user".to_string(), }], - end_turn: None, phase: None, }, ResponseItem::Message { @@ -501,7 +475,6 @@ fn insert_initial_context_before_last_real_user_or_summary_keeps_summary_last() content: vec![ContentItem::InputText { text: "latest user".to_string(), }], - end_turn: None, phase: None, }, ResponseItem::Message { @@ -510,7 +483,6 @@ fn insert_initial_context_before_last_real_user_or_summary_keeps_summary_last() content: vec![ContentItem::InputText { text: format!("{SUMMARY_PREFIX}\nsummary text"), }], - end_turn: None, phase: None, }, ]; @@ -520,7 +492,6 @@ fn insert_initial_context_before_last_real_user_or_summary_keeps_summary_last() content: vec![ContentItem::InputText { text: "fresh permissions".to_string(), }], - end_turn: None, phase: None, }]; @@ -533,7 +504,6 @@ fn insert_initial_context_before_last_real_user_or_summary_keeps_summary_last() content: vec![ContentItem::InputText { text: "older user".to_string(), }], - end_turn: None, phase: None, }, ResponseItem::Message { @@ -542,7 +512,6 @@ fn insert_initial_context_before_last_real_user_or_summary_keeps_summary_last() content: vec![ContentItem::InputText { text: "fresh permissions".to_string(), }], - end_turn: None, phase: None, }, ResponseItem::Message { @@ -551,7 +520,6 @@ fn insert_initial_context_before_last_real_user_or_summary_keeps_summary_last() content: vec![ContentItem::InputText { text: "latest user".to_string(), }], - end_turn: None, phase: None, }, ResponseItem::Message { @@ -560,7 +528,6 @@ fn insert_initial_context_before_last_real_user_or_summary_keeps_summary_last() content: vec![ContentItem::InputText { text: format!("{SUMMARY_PREFIX}\nsummary text"), }], - end_turn: None, phase: None, }, ]; @@ -578,7 +545,6 @@ fn insert_initial_context_before_last_real_user_or_summary_keeps_compaction_last content: vec![ContentItem::InputText { text: "fresh permissions".to_string(), }], - end_turn: None, phase: None, }]; @@ -591,7 +557,6 @@ fn insert_initial_context_before_last_real_user_or_summary_keeps_compaction_last content: vec![ContentItem::InputText { text: "fresh permissions".to_string(), }], - end_turn: None, phase: None, }, ResponseItem::Compaction { diff --git a/codex-rs/core/src/context/fragment.rs b/codex-rs/core/src/context/fragment.rs index 34f4a7c36..1cc8f6d9b 100644 --- a/codex-rs/core/src/context/fragment.rs +++ b/codex-rs/core/src/context/fragment.rs @@ -81,7 +81,6 @@ pub trait ContextualUserFragment { content: vec![ContentItem::InputText { text: self.render(), }], - end_turn: None, phase: None, } } diff --git a/codex-rs/core/src/context_manager/history_tests.rs b/codex-rs/core/src/context_manager/history_tests.rs index bd8e77fd2..f5c30af57 100644 --- a/codex-rs/core/src/context_manager/history_tests.rs +++ b/codex-rs/core/src/context_manager/history_tests.rs @@ -41,7 +41,6 @@ fn assistant_msg(text: &str) -> ResponseItem { content: vec![ContentItem::OutputText { text: text.to_string(), }], - end_turn: None, phase: None, } } @@ -60,7 +59,6 @@ fn inter_agent_assistant_msg(text: &str) -> ResponseItem { content: vec![ContentItem::OutputText { text: serde_json::to_string(&communication).unwrap(), }], - end_turn: None, phase: None, } } @@ -80,7 +78,6 @@ fn user_msg(text: &str) -> ResponseItem { content: vec![ContentItem::OutputText { text: text.to_string(), }], - end_turn: None, phase: None, } } @@ -92,7 +89,6 @@ fn user_input_text_msg(text: &str) -> ResponseItem { content: vec![ContentItem::InputText { text: text.to_string(), }], - end_turn: None, phase: None, } } @@ -104,7 +100,6 @@ fn developer_msg(text: &str) -> ResponseItem { content: vec![ContentItem::InputText { text: text.to_string(), }], - end_turn: None, phase: None, } } @@ -119,7 +114,6 @@ fn developer_msg_with_fragments(texts: &[&str]) -> ResponseItem { text: (*text).to_string(), }) .collect(), - end_turn: None, phase: None, } } @@ -200,7 +194,6 @@ fn filters_non_api_messages() { content: vec![ContentItem::OutputText { text: "ignored".to_string(), }], - end_turn: None, phase: None, }; let reasoning = reasoning_msg("thinking..."); @@ -231,7 +224,6 @@ fn filters_non_api_messages() { content: vec![ContentItem::OutputText { text: "hi".to_string() }], - end_turn: None, phase: None, }, ResponseItem::Message { @@ -240,7 +232,6 @@ fn filters_non_api_messages() { content: vec![ContentItem::OutputText { text: "hello".to_string() }], - end_turn: None, phase: None, } ] @@ -390,7 +381,6 @@ fn for_prompt_strips_images_when_model_does_not_support_images() { text: "caption".to_string(), }, ], - end_turn: None, phase: None, }, ResponseItem::FunctionCall { @@ -453,7 +443,6 @@ fn for_prompt_strips_images_when_model_does_not_support_images() { text: "caption".to_string(), }, ], - end_turn: None, phase: None, }, ResponseItem::FunctionCall { @@ -512,7 +501,6 @@ fn for_prompt_strips_images_when_model_does_not_support_images() { detail: Some(DEFAULT_IMAGE_DETAIL), }, ], - end_turn: None, phase: None, }]); let preserved = with_images.for_prompt(&modalities); @@ -540,7 +528,6 @@ fn for_prompt_preserves_image_generation_calls_when_images_are_supported() { content: vec![ContentItem::InputText { text: "hi".to_string(), }], - end_turn: None, phase: None, }, ]); @@ -560,7 +547,6 @@ fn for_prompt_preserves_image_generation_calls_when_images_are_supported() { content: vec![ContentItem::InputText { text: "hi".to_string(), }], - end_turn: None, phase: None, } ] @@ -576,7 +562,6 @@ fn for_prompt_clears_image_generation_result_when_images_are_unsupported() { content: vec![ContentItem::InputText { text: "generate a lobster".to_string(), }], - end_turn: None, phase: None, }, ResponseItem::ImageGenerationCall { @@ -596,7 +581,6 @@ fn for_prompt_clears_image_generation_result_when_images_are_unsupported() { content: vec![ContentItem::InputText { text: "generate a lobster".to_string(), }], - end_turn: None, phase: None, }, ResponseItem::ImageGenerationCall { @@ -758,7 +742,6 @@ fn replace_last_turn_images_does_not_touch_user_images() { image_url: "data:image/png;base64,AAA".to_string(), detail: Some(DEFAULT_IMAGE_DETAIL), }], - end_turn: None, phase: None, }]; let mut history = create_history_with_items(items.clone()); @@ -1690,7 +1673,6 @@ fn image_data_url_payload_does_not_dominate_message_estimate() { detail: Some(DEFAULT_IMAGE_DETAIL), }, ], - end_turn: None, phase: None, }; let text_only_item = ResponseItem::Message { @@ -1699,7 +1681,6 @@ fn image_data_url_payload_does_not_dominate_message_estimate() { content: vec![ContentItem::InputText { text: "Here is the screenshot".to_string(), }], - end_turn: None, phase: None, }; @@ -1773,7 +1754,6 @@ fn non_base64_image_urls_are_unchanged() { image_url: "https://example.com/foo.png".to_string(), detail: Some(DEFAULT_IMAGE_DETAIL), }], - end_turn: None, phase: None, }; let function_output_item = ResponseItem::FunctionCallOutput { @@ -1805,7 +1785,6 @@ fn data_url_without_base64_marker_is_unchanged() { image_url: "data:image/svg+xml,".to_string(), detail: Some(DEFAULT_IMAGE_DETAIL), }], - end_turn: None, phase: None, }; @@ -1846,7 +1825,6 @@ fn mixed_case_data_url_markers_are_adjusted() { image_url, detail: Some(DEFAULT_IMAGE_DETAIL), }], - end_turn: None, phase: None, }; @@ -1879,7 +1857,6 @@ fn multiple_inline_images_apply_multiple_fixed_costs() { detail: Some(DEFAULT_IMAGE_DETAIL), }, ], - end_turn: None, phase: None, }; @@ -1962,7 +1939,6 @@ fn text_only_items_unchanged() { content: vec![ContentItem::OutputText { text: "Hello world, this is a response.".to_string(), }], - end_turn: None, phase: None, }; diff --git a/codex-rs/core/src/context_manager/updates.rs b/codex-rs/core/src/context_manager/updates.rs index 4277f0b7e..1bc2cb089 100644 --- a/codex-rs/core/src/context_manager/updates.rs +++ b/codex-rs/core/src/context_manager/updates.rs @@ -197,7 +197,6 @@ fn build_text_message(role: &str, text_sections: Vec) -> Option\ntest_text\n".to_string(), }], - end_turn: None, phase: None, }, ResponseItem::Message { @@ -197,7 +192,6 @@ fn skips_user_instructions_and_env() { content: vec![ContentItem::InputText { text: "test_text".to_string(), }], - end_turn: None, phase: None, }, ResponseItem::Message { @@ -206,7 +200,6 @@ fn skips_user_instructions_and_env() { content: vec![ContentItem::InputText { text: "# AGENTS.md instructions for test_directory\n\n\ntest_text\n".to_string(), }], - end_turn: None, phase: None, }, ResponseItem::Message { @@ -216,7 +209,6 @@ fn skips_user_instructions_and_env() { text: "\ndemo\nskills/demo/SKILL.md\nbody\n" .to_string(), }], - end_turn: None, phase: None, }, ResponseItem::Message { @@ -225,7 +217,6 @@ fn skips_user_instructions_and_env() { content: vec![ContentItem::InputText { text: "echo 42".to_string(), }], - end_turn: None, phase: None, }, ResponseItem::Message { @@ -241,7 +232,6 @@ fn skips_user_instructions_and_env() { .to_string(), }, ], - end_turn: None, phase: None, }, ]; @@ -292,7 +282,6 @@ fn parses_hook_prompt_and_hides_other_contextual_fragments() { .to_string(), }, ], - end_turn: None, phase: None, }; @@ -321,7 +310,6 @@ fn parses_agent_message() { content: vec![ContentItem::OutputText { text: "Hello from Codex".to_string(), }], - end_turn: None, phase: None, }; diff --git a/codex-rs/core/src/guardian/tests.rs b/codex-rs/core/src/guardian/tests.rs index 641e24c01..7b0f7904b 100644 --- a/codex-rs/core/src/guardian/tests.rs +++ b/codex-rs/core/src/guardian/tests.rs @@ -176,7 +176,6 @@ async fn seed_guardian_parent_history(session: &Arc, turn: &Arc, turn: &Arc anyh content: vec![ContentItem::InputText { text: "Please also push the second docs fix.".to_string(), }], - end_turn: None, phase: None, }, ResponseItem::Message { @@ -352,7 +349,6 @@ async fn build_guardian_prompt_delta_mode_preserves_original_numbering() -> anyh content: vec![ContentItem::OutputText { text: "I need approval for the second push.".to_string(), }], - end_turn: None, phase: None, }, ], @@ -476,7 +472,6 @@ async fn build_guardian_prompt_stale_delta_version_falls_back_to_full_prompt() - content: vec![ContentItem::InputText { text: "Compacted retained user request.".to_string(), }], - end_turn: None, phase: None, }, ResponseItem::Message { @@ -485,7 +480,6 @@ async fn build_guardian_prompt_stale_delta_version_falls_back_to_full_prompt() - content: vec![ContentItem::OutputText { text: "Compacted summary of earlier guardian context.".to_string(), }], - end_turn: None, phase: None, }, ], @@ -501,7 +495,6 @@ async fn build_guardian_prompt_stale_delta_version_falls_back_to_full_prompt() - content: vec![ContentItem::InputText { text: "Please push after the compaction.".to_string(), }], - end_turn: None, phase: None, }, ResponseItem::Message { @@ -510,7 +503,6 @@ async fn build_guardian_prompt_stale_delta_version_falls_back_to_full_prompt() - content: vec![ContentItem::OutputText { text: "I need approval for the post-compaction push.".to_string(), }], - end_turn: None, phase: None, }, ], @@ -559,7 +551,6 @@ fn collect_guardian_transcript_entries_skips_contextual_user_messages() { content: vec![ContentItem::InputText { text: "\n/tmp\n".to_string(), }], - end_turn: None, phase: None, }, ResponseItem::Message { @@ -568,7 +559,6 @@ fn collect_guardian_transcript_entries_skips_contextual_user_messages() { content: vec![ContentItem::OutputText { text: "hello".to_string(), }], - end_turn: None, phase: None, }, ]; @@ -594,7 +584,6 @@ fn collect_guardian_transcript_entries_includes_recent_tool_calls_and_output() { content: vec![ContentItem::InputText { text: "check the repo".to_string(), }], - end_turn: None, phase: None, }, ResponseItem::FunctionCall { @@ -616,7 +605,6 @@ fn collect_guardian_transcript_entries_includes_recent_tool_calls_and_output() { content: vec![ContentItem::OutputText { text: "I need to push a fix".to_string(), }], - end_turn: None, phase: None, }, ]; @@ -1357,7 +1345,6 @@ async fn guardian_reuses_prompt_cache_key_and_appends_prior_reviews() -> anyhow: content: vec![ContentItem::InputText { text: "Please push the second docs fix too.".to_string(), }], - end_turn: None, phase: None, }, ResponseItem::Message { @@ -1366,7 +1353,6 @@ async fn guardian_reuses_prompt_cache_key_and_appends_prior_reviews() -> anyhow: content: vec![ContentItem::OutputText { text: "I need approval for the second docs fix.".to_string(), }], - end_turn: None, phase: None, }, ], @@ -1403,7 +1389,6 @@ async fn guardian_reuses_prompt_cache_key_and_appends_prior_reviews() -> anyhow: content: vec![ContentItem::InputText { text: "Please push the third docs fix too.".to_string(), }], - end_turn: None, phase: None, }, ResponseItem::Message { @@ -1412,7 +1397,6 @@ async fn guardian_reuses_prompt_cache_key_and_appends_prior_reviews() -> anyhow: content: vec![ContentItem::OutputText { text: "I need approval for the third docs fix.".to_string(), }], - end_turn: None, phase: None, }, ], @@ -1790,7 +1774,6 @@ async fn guardian_parallel_reviews_fork_from_last_committed_trunk_history() -> a content: vec![ContentItem::InputText { text: "Please inspect pending changes before pushing.".to_string(), }], - end_turn: None, phase: None, }, ResponseItem::Message { @@ -1799,7 +1782,6 @@ async fn guardian_parallel_reviews_fork_from_last_committed_trunk_history() -> a content: vec![ContentItem::OutputText { text: "I need approval to run git diff.".to_string(), }], - end_turn: None, phase: None, }, ], @@ -1859,7 +1841,6 @@ async fn guardian_parallel_reviews_fork_from_last_committed_trunk_history() -> a content: vec![ContentItem::InputText { text: "Now inspect whether pushing is safe.".to_string(), }], - end_turn: None, phase: None, }, ResponseItem::Message { @@ -1868,7 +1849,6 @@ async fn guardian_parallel_reviews_fork_from_last_committed_trunk_history() -> a content: vec![ContentItem::OutputText { text: "I need approval to push after the diff check.".to_string(), }], - end_turn: None, phase: None, }, ], diff --git a/codex-rs/core/src/memories/phase1.rs b/codex-rs/core/src/memories/phase1.rs index b9f93d47f..8fed735c4 100644 --- a/codex-rs/core/src/memories/phase1.rs +++ b/codex-rs/core/src/memories/phase1.rs @@ -332,7 +332,6 @@ mod job { &rollout_contents, )?, }], - end_turn: None, phase: None, }], tools: Vec::new(), @@ -491,7 +490,6 @@ mod job { id, role, content, - end_turn, phase, } = item else { @@ -519,7 +517,6 @@ mod job { id: id.clone(), role: role.clone(), content, - end_turn: *end_turn, phase: phase.clone(), }) } diff --git a/codex-rs/core/src/memories/phase1_tests.rs b/codex-rs/core/src/memories/phase1_tests.rs index 89bde1a87..18a46d174 100644 --- a/codex-rs/core/src/memories/phase1_tests.rs +++ b/codex-rs/core/src/memories/phase1_tests.rs @@ -24,7 +24,6 @@ fn serializes_memory_rollout_with_agents_removed_but_environment_kept() { text: "\n/tmp\n".to_string(), }, ], - end_turn: None, phase: None, }; let skill_message = ResponseItem::Message { @@ -34,7 +33,6 @@ fn serializes_memory_rollout_with_agents_removed_but_environment_kept() { text: "\ndemo\nskills/demo/SKILL.md\nbody\n" .to_string(), }], - end_turn: None, phase: None, }; let subagent_message = ResponseItem::Message { @@ -44,7 +42,6 @@ fn serializes_memory_rollout_with_agents_removed_but_environment_kept() { text: "{\"agent_id\":\"a\",\"status\":\"completed\"}" .to_string(), }], - end_turn: None, phase: None, }; @@ -66,7 +63,6 @@ fn serializes_memory_rollout_with_agents_removed_but_environment_kept() { text: "\n/tmp\n" .to_string(), }], - end_turn: None, phase: None, }, subagent_message, diff --git a/codex-rs/core/src/realtime_context_tests.rs b/codex-rs/core/src/realtime_context_tests.rs index dcd9d340c..9c1eb3af4 100644 --- a/codex-rs/core/src/realtime_context_tests.rs +++ b/codex-rs/core/src/realtime_context_tests.rs @@ -70,7 +70,6 @@ fn message(role: &str, content: ContentItem) -> ResponseItem { id: None, role: role.to_string(), content: vec![content], - end_turn: None, phase: None, } } diff --git a/codex-rs/core/src/session/mod.rs b/codex-rs/core/src/session/mod.rs index d3f365cc2..598d9d7dc 100644 --- a/codex-rs/core/src/session/mod.rs +++ b/codex-rs/core/src/session/mod.rs @@ -2364,7 +2364,6 @@ impl Session { content: vec![ContentItem::InputText { text: format!("Warning: {}", message.into()), }], - end_turn: None, phase: None, }; diff --git a/codex-rs/core/src/session/rollout_reconstruction_tests.rs b/codex-rs/core/src/session/rollout_reconstruction_tests.rs index 89345e2d3..5cfcc3805 100644 --- a/codex-rs/core/src/session/rollout_reconstruction_tests.rs +++ b/codex-rs/core/src/session/rollout_reconstruction_tests.rs @@ -19,7 +19,6 @@ fn user_message(text: &str) -> ResponseItem { content: vec![ContentItem::InputText { text: text.to_string(), }], - end_turn: None, phase: None, } } @@ -31,7 +30,6 @@ fn assistant_message(text: &str) -> ResponseItem { content: vec![ContentItem::OutputText { text: text.to_string(), }], - end_turn: None, phase: None, } } @@ -50,7 +48,6 @@ fn inter_agent_assistant_message(text: &str) -> ResponseItem { content: vec![ContentItem::OutputText { text: serde_json::to_string(&communication).unwrap(), }], - end_turn: None, phase: None, } } diff --git a/codex-rs/core/src/session/tests.rs b/codex-rs/core/src/session/tests.rs index 286ed0695..dc33dea18 100644 --- a/codex-rs/core/src/session/tests.rs +++ b/codex-rs/core/src/session/tests.rs @@ -175,7 +175,6 @@ fn user_message(text: &str) -> ResponseItem { content: vec![ContentItem::InputText { text: text.to_string(), }], - end_turn: None, phase: None, } } @@ -187,7 +186,6 @@ fn assistant_message(text: &str) -> ResponseItem { content: vec![ContentItem::OutputText { text: text.to_string(), }], - end_turn: None, phase: None, } } @@ -247,7 +245,6 @@ fn skill_message(text: &str) -> ResponseItem { content: vec![ContentItem::InputText { text: text.to_string(), }], - end_turn: None, phase: None, } } @@ -1270,7 +1267,6 @@ async fn reconstruct_history_uses_replacement_history_verbatim() { content: vec![ContentItem::InputText { text: "summary".to_string(), }], - end_turn: None, phase: None, }; let replacement_history = vec![ @@ -1281,7 +1277,6 @@ async fn reconstruct_history_uses_replacement_history_verbatim() { content: vec![ContentItem::InputText { text: "stale developer instructions".to_string(), }], - end_turn: None, phase: None, }, ]; @@ -5731,7 +5726,6 @@ async fn record_context_updates_and_set_reference_context_item_reinjects_full_co content: vec![ContentItem::InputText { text: format!("{}\nsummary", crate::compact::SUMMARY_PREFIX), }], - end_turn: None, phase: None, }; session @@ -6268,7 +6262,6 @@ async fn task_finish_emits_turn_item_lifecycle_for_leftover_pending_user_input() content: vec![ContentItem::InputText { text: "late pending input".to_string(), }], - end_turn: None, phase: None, }; assert!( @@ -7463,7 +7456,6 @@ async fn sample_rollout( content: vec![ContentItem::InputText { text: "first user".to_string(), }], - end_turn: None, phase: None, }; live_history.record_items( @@ -7478,7 +7470,6 @@ async fn sample_rollout( content: vec![ContentItem::OutputText { text: "assistant reply one".to_string(), }], - end_turn: None, phase: None, }; live_history.record_items( @@ -7505,7 +7496,6 @@ async fn sample_rollout( content: vec![ContentItem::InputText { text: "second user".to_string(), }], - end_turn: None, phase: None, }; live_history.record_items( @@ -7520,7 +7510,6 @@ async fn sample_rollout( content: vec![ContentItem::OutputText { text: "assistant reply two".to_string(), }], - end_turn: None, phase: None, }; live_history.record_items( @@ -7547,7 +7536,6 @@ async fn sample_rollout( content: vec![ContentItem::InputText { text: "third user".to_string(), }], - end_turn: None, phase: None, }; live_history.record_items( @@ -7562,7 +7550,6 @@ async fn sample_rollout( content: vec![ContentItem::OutputText { text: "assistant reply three".to_string(), }], - end_turn: None, phase: None, }; live_history.record_items( diff --git a/codex-rs/core/src/session/tests/guardian_tests.rs b/codex-rs/core/src/session/tests/guardian_tests.rs index ed6c6b60e..080ba79bd 100644 --- a/codex-rs/core/src/session/tests/guardian_tests.rs +++ b/codex-rs/core/src/session/tests/guardian_tests.rs @@ -552,7 +552,6 @@ async fn process_compacted_history_preserves_separate_guardian_developer_message content: vec![ContentItem::InputText { text: "stale developer message".to_string(), }], - end_turn: None, phase: None, }, ResponseItem::Message { @@ -561,7 +560,6 @@ async fn process_compacted_history_preserves_separate_guardian_developer_message content: vec![ContentItem::InputText { text: "summary".to_string(), }], - end_turn: None, phase: None, }, ], diff --git a/codex-rs/core/src/stream_events_utils_tests.rs b/codex-rs/core/src/stream_events_utils_tests.rs index 7a82a25da..2012e05aa 100644 --- a/codex-rs/core/src/stream_events_utils_tests.rs +++ b/codex-rs/core/src/stream_events_utils_tests.rs @@ -28,7 +28,6 @@ fn assistant_output_text_with_phase(text: &str, phase: Option) -> content: vec![ContentItem::OutputText { text: text.to_string(), }], - end_turn: Some(true), phase, } } diff --git a/codex-rs/core/src/tasks/mod.rs b/codex-rs/core/src/tasks/mod.rs index fd9aaf2e3..2541f59f0 100644 --- a/codex-rs/core/src/tasks/mod.rs +++ b/codex-rs/core/src/tasks/mod.rs @@ -104,7 +104,6 @@ pub(crate) fn interrupted_turn_history_marker( content: vec![ContentItem::InputText { text: marker.render(), }], - end_turn: None, phase: None, }) } diff --git a/codex-rs/core/src/tasks/review.rs b/codex-rs/core/src/tasks/review.rs index c844f6ce2..2f81b9275 100644 --- a/codex-rs/core/src/tasks/review.rs +++ b/codex-rs/core/src/tasks/review.rs @@ -249,7 +249,6 @@ pub(crate) async fn exit_review_mode( id: Some(REVIEW_USER_MESSAGE_ID.to_string()), role: "user".to_string(), content: vec![ContentItem::InputText { text: user_message }], - end_turn: None, phase: None, }], ) @@ -270,7 +269,6 @@ pub(crate) async fn exit_review_mode( content: vec![ContentItem::OutputText { text: assistant_message, }], - end_turn: None, phase: None, }, ) diff --git a/codex-rs/core/src/thread_manager_tests.rs b/codex-rs/core/src/thread_manager_tests.rs index 2eafd36ff..ef4420d1e 100644 --- a/codex-rs/core/src/thread_manager_tests.rs +++ b/codex-rs/core/src/thread_manager_tests.rs @@ -30,7 +30,6 @@ fn user_msg(text: &str) -> ResponseItem { content: vec![ContentItem::OutputText { text: text.to_string(), }], - end_turn: None, phase: None, } } @@ -41,7 +40,6 @@ fn assistant_msg(text: &str) -> ResponseItem { content: vec![ContentItem::OutputText { text: text.to_string(), }], - end_turn: None, phase: None, } } diff --git a/codex-rs/core/src/thread_rollout_truncation_tests.rs b/codex-rs/core/src/thread_rollout_truncation_tests.rs index ccedc7546..df370a054 100644 --- a/codex-rs/core/src/thread_rollout_truncation_tests.rs +++ b/codex-rs/core/src/thread_rollout_truncation_tests.rs @@ -14,7 +14,6 @@ fn user_msg(text: &str) -> ResponseItem { content: vec![ContentItem::OutputText { text: text.to_string(), }], - end_turn: None, phase: None, } } @@ -26,7 +25,6 @@ fn assistant_msg(text: &str) -> ResponseItem { content: vec![ContentItem::OutputText { text: text.to_string(), }], - end_turn: None, phase: 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 ee1da9b00..e9c9406ae 100644 --- a/codex-rs/core/src/tools/handlers/multi_agents_tests.rs +++ b/codex-rs/core/src/tools/handlers/multi_agents_tests.rs @@ -2503,7 +2503,6 @@ async fn resume_agent_restores_closed_agent_and_accepts_send_input() { content: vec![ContentItem::InputText { text: "materialized".to_string(), }], - end_turn: None, phase: None, })]), AuthManager::from_auth_for_testing(CodexAuth::from_api_key("dummy")), diff --git a/codex-rs/core/src/turn_timing_tests.rs b/codex-rs/core/src/turn_timing_tests.rs index 934b6ed30..ffa366e59 100644 --- a/codex-rs/core/src/turn_timing_tests.rs +++ b/codex-rs/core/src/turn_timing_tests.rs @@ -102,7 +102,6 @@ fn response_item_records_turn_ttft_for_first_output_signals() { content: vec![ContentItem::OutputText { text: "hello".to_string(), }], - end_turn: None, phase: None, })); } @@ -115,7 +114,6 @@ fn response_item_records_turn_ttft_ignores_empty_non_output_items() { content: vec![ContentItem::OutputText { text: String::new(), }], - end_turn: None, phase: None, })); assert!(!response_item_records_turn_ttft( diff --git a/codex-rs/core/tests/common/responses.rs b/codex-rs/core/tests/common/responses.rs index 2dcfd5203..93472e72b 100644 --- a/codex-rs/core/tests/common/responses.rs +++ b/codex-rs/core/tests/common/responses.rs @@ -686,7 +686,6 @@ pub fn user_message_item(text: &str) -> ResponseItem { content: vec![ContentItem::InputText { text: text.to_string(), }], - end_turn: None, phase: None, } } diff --git a/codex-rs/core/tests/responses_headers.rs b/codex-rs/core/tests/responses_headers.rs index 2cdcaf448..f94b5edde 100644 --- a/codex-rs/core/tests/responses_headers.rs +++ b/codex-rs/core/tests/responses_headers.rs @@ -118,7 +118,6 @@ async fn responses_stream_includes_subagent_header_on_review() { content: vec![ContentItem::InputText { text: "hello".into(), }], - end_turn: None, phase: None, }]; @@ -245,7 +244,6 @@ async fn responses_stream_includes_subagent_header_on_other() { content: vec![ContentItem::InputText { text: "hello".into(), }], - end_turn: None, phase: None, }]; @@ -361,7 +359,6 @@ async fn responses_respects_model_info_overrides_from_config() { content: vec![ContentItem::InputText { text: "hello".into(), }], - end_turn: None, phase: None, }]; diff --git a/codex-rs/core/tests/suite/client.rs b/codex-rs/core/tests/suite/client.rs index 67751161d..13cdf3867 100644 --- a/codex-rs/core/tests/suite/client.rs +++ b/codex-rs/core/tests/suite/client.rs @@ -290,7 +290,6 @@ async fn resume_includes_initial_messages_and_sends_prior_items() { content: vec![codex_protocol::models::ContentItem::InputText { text: "resumed user message".to_string(), }], - end_turn: None, phase: None, }; let prior_user_json = serde_json::to_value(&prior_user).unwrap(); @@ -312,7 +311,6 @@ async fn resume_includes_initial_messages_and_sends_prior_items() { content: vec![codex_protocol::models::ContentItem::OutputText { text: "resumed system instruction".to_string(), }], - end_turn: None, phase: None, }; let prior_system_json = serde_json::to_value(&prior_system).unwrap(); @@ -334,7 +332,6 @@ async fn resume_includes_initial_messages_and_sends_prior_items() { content: vec![codex_protocol::models::ContentItem::OutputText { text: "resumed assistant message".to_string(), }], - end_turn: None, phase: Some(MessagePhase::Commentary), }; let prior_item_json = serde_json::to_value(&prior_item).unwrap(); @@ -517,7 +514,6 @@ async fn resume_replays_legacy_js_repl_image_rollout_shapes() { image_url: legacy_image_url.to_string(), detail: Some(DEFAULT_IMAGE_DETAIL), }], - end_turn: None, phase: None, }), }, @@ -903,7 +899,6 @@ async fn send_provider_auth_request(server: &MockServer, auth: ModelProviderAuth content: vec![ContentItem::InputText { text: "hello".to_string(), }], - end_turn: None, phase: None, }); @@ -2318,7 +2313,6 @@ async fn azure_responses_request_includes_store_and_reasoning_ids() { content: vec![ContentItem::OutputText { text: "message".into(), }], - end_turn: None, phase: None, }); prompt.input.push(ResponseItem::WebSearchCall { diff --git a/codex-rs/core/tests/suite/client_websockets.rs b/codex-rs/core/tests/suite/client_websockets.rs index 7e2d116c1..5e6bf0788 100755 --- a/codex-rs/core/tests/suite/client_websockets.rs +++ b/codex-rs/core/tests/suite/client_websockets.rs @@ -1700,7 +1700,6 @@ fn message_item(text: &str) -> ResponseItem { id: None, role: "user".into(), content: vec![ContentItem::InputText { text: text.into() }], - end_turn: None, phase: None, } } @@ -1710,7 +1709,6 @@ fn assistant_message_item(id: &str, text: &str) -> ResponseItem { id: Some(id.to_string()), role: "assistant".into(), content: vec![ContentItem::OutputText { text: text.into() }], - end_turn: None, phase: None, } } diff --git a/codex-rs/core/tests/suite/compact.rs b/codex-rs/core/tests/suite/compact.rs index 60c962a4d..ce9dfdf28 100644 --- a/codex-rs/core/tests/suite/compact.rs +++ b/codex-rs/core/tests/suite/compact.rs @@ -1615,7 +1615,6 @@ async fn auto_compact_runs_after_resume_when_token_usage_is_over_limit() { content: vec![codex_protocol::models::ContentItem::OutputText { text: remote_summary.to_string(), }], - end_turn: None, phase: None, }, codex_protocol::models::ResponseItem::Compaction { @@ -2861,7 +2860,6 @@ async fn auto_compact_counts_encrypted_reasoning_before_last_user() { content: vec![codex_protocol::models::ContentItem::OutputText { text: "REMOTE_COMPACT_SUMMARY".to_string(), }], - end_turn: None, phase: None, }, codex_protocol::models::ResponseItem::Compaction { @@ -2985,7 +2983,6 @@ async fn auto_compact_runs_when_reasoning_header_clears_between_turns() { content: vec![codex_protocol::models::ContentItem::OutputText { text: "REMOTE_COMPACT_SUMMARY".to_string(), }], - end_turn: None, phase: None, }, codex_protocol::models::ResponseItem::Compaction { diff --git a/codex-rs/core/tests/suite/compact_remote.rs b/codex-rs/core/tests/suite/compact_remote.rs index a8a2e44f8..b70cc6f38 100644 --- a/codex-rs/core/tests/suite/compact_remote.rs +++ b/codex-rs/core/tests/suite/compact_remote.rs @@ -1181,7 +1181,6 @@ async fn remote_compact_persists_replacement_history_in_rollout() -> Result<()> content: vec![ContentItem::OutputText { text: "COMPACTED_ASSISTANT_NOTE".to_string(), }], - end_turn: None, phase: None, }, ]; @@ -1320,7 +1319,6 @@ async fn remote_compact_and_resume_refresh_stale_developer_instructions() -> Res content: vec![ContentItem::InputText { text: stale_developer_message.to_string(), }], - end_turn: None, phase: None, }, ResponseItem::Compaction { @@ -1458,7 +1456,6 @@ async fn remote_compact_refreshes_stale_developer_instructions_without_resume() content: vec![ContentItem::InputText { text: stale_developer_message.to_string(), }], - end_turn: None, phase: None, }, ResponseItem::Compaction { diff --git a/codex-rs/core/tests/suite/image_rollout.rs b/codex-rs/core/tests/suite/image_rollout.rs index eb9751720..18ebe0fb0 100644 --- a/codex-rs/core/tests/suite/image_rollout.rs +++ b/codex-rs/core/tests/suite/image_rollout.rs @@ -164,7 +164,6 @@ async fn copy_paste_local_image_persists_rollout_request_shape() -> anyhow::Resu text: "pasted image".to_string(), }, ], - end_turn: None, phase: None, }; @@ -253,7 +252,6 @@ async fn drag_drop_image_persists_rollout_request_shape() -> anyhow::Result<()> text: "dropped image".to_string(), }, ], - end_turn: None, phase: None, }; diff --git a/codex-rs/core/tests/suite/prompt_debug_tests.rs b/codex-rs/core/tests/suite/prompt_debug_tests.rs index 1221560bb..4fee43826 100644 --- a/codex-rs/core/tests/suite/prompt_debug_tests.rs +++ b/codex-rs/core/tests/suite/prompt_debug_tests.rs @@ -38,7 +38,6 @@ async fn build_prompt_input_includes_context_and_user_message() -> Result<()> { content: vec![ContentItem::InputText { text: "hello from debug prompt".to_string(), }], - end_turn: None, phase: None, }; assert_eq!(input.last(), Some(&expected_user_message)); diff --git a/codex-rs/core/tests/suite/realtime_conversation.rs b/codex-rs/core/tests/suite/realtime_conversation.rs index c7d5097a3..b4a7e5739 100644 --- a/codex-rs/core/tests/suite/realtime_conversation.rs +++ b/codex-rs/core/tests/suite/realtime_conversation.rs @@ -1605,7 +1605,6 @@ async fn conversation_startup_context_current_thread_selects_many_turns_by_budge id: None, role: "user".to_string(), content: vec![ContentItem::InputText { text: user_turn }], - end_turn: None, phase: None, }), RolloutItem::ResponseItem(ResponseItem::Message { @@ -1614,7 +1613,6 @@ async fn conversation_startup_context_current_thread_selects_many_turns_by_budge content: vec![ContentItem::OutputText { text: assistant_turn, }], - end_turn: None, phase: None, }), ] diff --git a/codex-rs/core/tests/suite/review.rs b/codex-rs/core/tests/suite/review.rs index c375dbbd0..e3b462a1c 100644 --- a/codex-rs/core/tests/suite/review.rs +++ b/codex-rs/core/tests/suite/review.rs @@ -538,7 +538,6 @@ async fn review_input_isolated_from_parent_history() { content: vec![codex_protocol::models::ContentItem::InputText { text: "parent: earlier user message".to_string(), }], - end_turn: None, phase: None, }; let user_json = serde_json::to_value(&user).unwrap(); @@ -558,7 +557,6 @@ async fn review_input_isolated_from_parent_history() { content: vec![codex_protocol::models::ContentItem::OutputText { text: "parent: assistant reply".to_string(), }], - end_turn: None, phase: None, }; let assistant_json = serde_json::to_value(&assistant).unwrap(); diff --git a/codex-rs/protocol/src/items.rs b/codex-rs/protocol/src/items.rs index 601858dd5..687958857 100644 --- a/codex-rs/protocol/src/items.rs +++ b/codex-rs/protocol/src/items.rs @@ -266,7 +266,6 @@ pub fn build_hook_prompt_message(fragments: &[HookPromptFragment]) -> Option, role: String, content: Vec, - // Do not use directly, no available consistently across all providers. - #[serde(default, skip_serializing_if = "Option::is_none")] - #[ts(optional)] - end_turn: Option, // Optional output-message phase (for example: "commentary", "final_answer"). // Availability varies by provider/model, so downstream consumers must // preserve fallback behavior when this is absent. @@ -1114,7 +1110,6 @@ impl From for ResponseItem { role, content, id: None, - end_turn: None, phase: None, }, ResponseInputItem::FunctionCallOutput { call_id, output } => { diff --git a/codex-rs/protocol/src/protocol.rs b/codex-rs/protocol/src/protocol.rs index c3254e92a..1e84e1806 100644 --- a/codex-rs/protocol/src/protocol.rs +++ b/codex-rs/protocol/src/protocol.rs @@ -2867,7 +2867,6 @@ impl From for ResponseItem { content: vec![ContentItem::OutputText { text: value.message, }], - end_turn: None, phase: None, } } diff --git a/codex-rs/rollout/src/tests.rs b/codex-rs/rollout/src/tests.rs index 5769a3d57..fba8a9827 100644 --- a/codex-rs/rollout/src/tests.rs +++ b/codex-rs/rollout/src/tests.rs @@ -1179,7 +1179,6 @@ async fn test_updated_at_uses_file_mtime() -> Result<()> { content: vec![ContentItem::OutputText { text: format!("reply-{idx}"), }], - end_turn: None, phase: None, }), }; diff --git a/codex-rs/state/src/extract.rs b/codex-rs/state/src/extract.rs index f0fe3c693..a4a0ab0f6 100644 --- a/codex-rs/state/src/extract.rs +++ b/codex-rs/state/src/extract.rs @@ -177,7 +177,6 @@ mod tests { content: vec![ContentItem::InputText { text: "hello from response item".to_string(), }], - end_turn: None, phase: None, }); diff --git a/codex-rs/tui/src/app/side.rs b/codex-rs/tui/src/app/side.rs index 4ca3785eb..59f3d7199 100644 --- a/codex-rs/tui/src/app/side.rs +++ b/codex-rs/tui/src/app/side.rs @@ -440,7 +440,6 @@ impl App { content: vec![ContentItem::InputText { text: SIDE_BOUNDARY_PROMPT.to_string(), }], - end_turn: None, phase: None, } }