diff --git a/codex-rs/app-server/README.md b/codex-rs/app-server/README.md index 9d0a509c4c..89a4a3560e 100644 --- a/codex-rs/app-server/README.md +++ b/codex-rs/app-server/README.md @@ -831,7 +831,7 @@ Use `thread/backgroundTerminals/clean` to terminate all running background termi ### Example: Steer an active turn Use `turn/steer` to append additional user input to the currently active regular turn. This does -not emit `turn/started` and does not accept turn context overrides. +not emit `turn/started` and does not accept thread settings overrides. ```json { "method": "turn/steer", "id": 32, "params": { diff --git a/codex-rs/app-server/src/request_processors.rs b/codex-rs/app-server/src/request_processors.rs index d5853b56c5..4e77831e5b 100644 --- a/codex-rs/app-server/src/request_processors.rs +++ b/codex-rs/app-server/src/request_processors.rs @@ -258,7 +258,7 @@ use codex_config::ConfigLayerStack; use codex_config::loader::project_trust_key; use codex_config::types::McpServerTransportConfig; use codex_core::CodexThread; -use codex_core::CodexThreadTurnContextOverrides; +use codex_core::CodexThreadSettingsOverrides; use codex_core::ExternalGoalPreviousStatus; use codex_core::ExternalGoalSet; use codex_core::ForkSnapshot; 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 a84e658b82..eb8d0ca8b2 100644 --- a/codex-rs/app-server/src/request_processors/turn_processor.rs +++ b/codex-rs/app-server/src/request_processors/turn_processor.rs @@ -460,7 +460,7 @@ impl TurnRequestProcessor { warning.contains("Configured value for `permission_profile` is disallowed") }) { return Err(invalid_request(format!( - "invalid turn context override: {warning}" + "invalid thread settings override: {warning}" ))); } ( @@ -482,7 +482,7 @@ impl TurnRequestProcessor { // still queued together with the input below to preserve submission order. if has_any_overrides { thread - .validate_turn_context_overrides(CodexThreadTurnContextOverrides { + .validate_thread_settings_overrides(CodexThreadSettingsOverrides { cwd: cwd.clone(), workspace_roots: runtime_workspace_roots.clone(), approval_policy, @@ -500,10 +500,12 @@ impl TurnRequestProcessor { personality, }) .await - .map_err(|err| invalid_request(format!("invalid turn context override: {err}")))?; + .map_err(|err| { + invalid_request(format!("invalid thread settings override: {err}")) + })?; } - let turn_context = codex_protocol::protocol::TurnContextOverrides { + let thread_settings = codex_protocol::protocol::ThreadSettingsOverrides { cwd, workspace_roots: runtime_workspace_roots, profile_workspace_roots, @@ -527,7 +529,7 @@ impl TurnRequestProcessor { environments: environment_selections, final_output_json_schema: params.output_schema, responsesapi_client_metadata: params.responsesapi_client_metadata, - turn_context, + thread_settings, }; let turn_id = self .submit_core_op(&request_id, thread.as_ref(), turn_op) 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 844d9ab1bb..01e535a5a4 100644 --- a/codex-rs/app-server/tests/suite/v2/turn_start.rs +++ b/codex-rs/app-server/tests/suite/v2/turn_start.rs @@ -904,7 +904,11 @@ async fn turn_start_rejects_invalid_permission_selection_before_starting_turn() .await??; assert_eq!(err.error.code, INVALID_REQUEST_ERROR_CODE); - assert!(err.error.message.contains("invalid turn context override")); + assert!( + err.error + .message + .contains("invalid thread settings override") + ); assert!( err.error.message.contains("allowed set [ReadOnly]"), "unexpected error message: {}", diff --git a/codex-rs/core/src/agent/control_tests.rs b/codex-rs/core/src/agent/control_tests.rs index abf9fd9b87..3ced8630ea 100644 --- a/codex-rs/core/src/agent/control_tests.rs +++ b/codex-rs/core/src/agent/control_tests.rs @@ -442,7 +442,7 @@ async fn send_input_submits_user_message() { }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }, ); let captured = harness @@ -590,7 +590,7 @@ async fn spawn_agent_creates_thread_and_sends_prompt() { }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }, ); let captured = harness @@ -739,7 +739,7 @@ async fn spawn_agent_can_fork_parent_thread_history_with_sanitized_items() { }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }, ); let captured = harness diff --git a/codex-rs/core/src/codex_delegate.rs b/codex-rs/core/src/codex_delegate.rs index d7c6abdd70..4ed6b2368c 100644 --- a/codex-rs/core/src/codex_delegate.rs +++ b/codex-rs/core/src/codex_delegate.rs @@ -192,7 +192,7 @@ pub(crate) async fn run_codex_thread_one_shot( items: input, final_output_json_schema, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await?; diff --git a/codex-rs/core/src/codex_thread.rs b/codex-rs/core/src/codex_thread.rs index d54f134b0e..b0067a50b1 100644 --- a/codex-rs/core/src/codex_thread.rs +++ b/codex-rs/core/src/codex_thread.rs @@ -80,9 +80,9 @@ impl ThreadConfigSnapshot { } } -/// Turn context overrides that app-server validates before starting a turn. +/// Thread settings overrides that app-server validates before starting a turn. #[derive(Clone, Default)] -pub struct CodexThreadTurnContextOverrides { +pub struct CodexThreadSettingsOverrides { pub cwd: Option, pub workspace_roots: Option>, pub profile_workspace_roots: Option>, @@ -255,32 +255,32 @@ impl CodexThread { .await } - /// Validate persistent turn context overrides without committing them. - pub async fn validate_turn_context_overrides( + /// Validate persistent thread settings overrides without committing them. + pub async fn validate_thread_settings_overrides( &self, - overrides: CodexThreadTurnContextOverrides, + overrides: CodexThreadSettingsOverrides, ) -> ConstraintResult<()> { - let updates = self.turn_context_settings_update(overrides).await; + let updates = self.thread_settings_update(overrides).await; self.codex.session.validate_settings(&updates).await } - /// Apply persistent turn context overrides directly. + /// Apply persistent thread settings overrides directly. /// /// This bypasses the submission queue; callers that need ordering relative - /// to turns should use the queued turn-context op. - pub async fn update_turn_context_overrides( + /// to turns should use the queued thread-settings op. + pub async fn update_thread_settings_overrides( &self, - overrides: CodexThreadTurnContextOverrides, + overrides: CodexThreadSettingsOverrides, ) -> ConstraintResult<()> { - let updates = self.turn_context_settings_update(overrides).await; + let updates = self.thread_settings_update(overrides).await; self.codex.session.update_settings(updates).await } - async fn turn_context_settings_update( + async fn thread_settings_update( &self, - overrides: CodexThreadTurnContextOverrides, + overrides: CodexThreadSettingsOverrides, ) -> SessionSettingsUpdate { - let CodexThreadTurnContextOverrides { + let CodexThreadSettingsOverrides { cwd, workspace_roots, profile_workspace_roots, diff --git a/codex-rs/core/src/guardian/review_session.rs b/codex-rs/core/src/guardian/review_session.rs index 4527aa27fa..389373c8de 100644 --- a/codex-rs/core/src/guardian/review_session.rs +++ b/codex-rs/core/src/guardian/review_session.rs @@ -711,7 +711,7 @@ async fn run_review_on_session( environments: None, final_output_json_schema: Some(params.schema.clone()), responsesapi_client_metadata: None, - turn_context: codex_protocol::protocol::TurnContextOverrides { + thread_settings: codex_protocol::protocol::ThreadSettingsOverrides { #[allow(deprecated)] cwd: Some(params.parent_turn.cwd.to_path_buf()), approval_policy: Some(AskForApproval::Never), diff --git a/codex-rs/core/src/lib.rs b/codex-rs/core/src/lib.rs index 325d65745f..b18932e65f 100644 --- a/codex-rs/core/src/lib.rs +++ b/codex-rs/core/src/lib.rs @@ -20,7 +20,7 @@ mod compact_remote; mod compact_remote_v2; mod config_lock; pub use codex_thread::CodexThread; -pub use codex_thread::CodexThreadTurnContextOverrides; +pub use codex_thread::CodexThreadSettingsOverrides; pub use codex_thread::ThreadConfigSnapshot; pub use session::turn_context::TurnContext; mod agent; diff --git a/codex-rs/core/src/session/handlers.rs b/codex-rs/core/src/session/handlers.rs index e2f850d13f..f53b5dad8e 100644 --- a/codex-rs/core/src/session/handlers.rs +++ b/codex-rs/core/src/session/handlers.rs @@ -42,8 +42,8 @@ use codex_protocol::protocol::ReviewRequest; use codex_protocol::protocol::RolloutItem; use codex_protocol::protocol::ThreadMemoryMode; use codex_protocol::protocol::ThreadRolledBackEvent; +use codex_protocol::protocol::ThreadSettingsOverrides; use codex_protocol::protocol::TurnAbortReason; -use codex_protocol::protocol::TurnContextOverrides; use codex_protocol::protocol::WarningEvent; use codex_protocol::request_permissions::RequestPermissionsResponse; use codex_protocol::request_user_input::RequestUserInputResponse; @@ -103,12 +103,12 @@ pub(super) async fn user_input_or_turn_inner( environments, final_output_json_schema, responsesapi_client_metadata, - turn_context, + thread_settings, } => { - let mut updates = if turn_context == TurnContextOverrides::default() { + let mut updates = if thread_settings == ThreadSettingsOverrides::default() { SessionSettingsUpdate::default() } else { - turn_context_settings_update(sess, turn_context).await + thread_settings_update(sess, thread_settings).await }; updates.final_output_json_schema = Some(final_output_json_schema); updates.environments = environments; @@ -170,11 +170,11 @@ pub(super) async fn user_input_or_turn_inner( } } -async fn turn_context_settings_update( +async fn thread_settings_update( sess: &Session, - turn_context: TurnContextOverrides, + thread_settings: ThreadSettingsOverrides, ) -> SessionSettingsUpdate { - let TurnContextOverrides { + let ThreadSettingsOverrides { cwd, workspace_roots, profile_workspace_roots, @@ -190,7 +190,7 @@ async fn turn_context_settings_update( service_tier, collaboration_mode, personality, - } = turn_context; + } = thread_settings; let collaboration_mode = if let Some(collaboration_mode) = collaboration_mode { collaboration_mode } else { diff --git a/codex-rs/core/src/session/mod.rs b/codex-rs/core/src/session/mod.rs index 9a78242222..5af22abb71 100644 --- a/codex-rs/core/src/session/mod.rs +++ b/codex-rs/core/src/session/mod.rs @@ -1096,7 +1096,7 @@ impl Session { }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }, /*mirror_user_text_to_realtime*/ None, ) diff --git a/codex-rs/core/src/session/tests.rs b/codex-rs/core/src/session/tests.rs index 1bb975c2a0..d0e961cf8b 100644 --- a/codex-rs/core/src/session/tests.rs +++ b/codex-rs/core/src/session/tests.rs @@ -118,12 +118,12 @@ use codex_protocol::protocol::SkillScope; use codex_protocol::protocol::Submission; use codex_protocol::protocol::ThreadGoalStatus; use codex_protocol::protocol::ThreadRolledBackEvent; +use codex_protocol::protocol::ThreadSettingsOverrides; use codex_protocol::protocol::TokenCountEvent; use codex_protocol::protocol::TokenUsage; use codex_protocol::protocol::TokenUsageInfo; use codex_protocol::protocol::TurnAbortedEvent; use codex_protocol::protocol::TurnCompleteEvent; -use codex_protocol::protocol::TurnContextOverrides; use codex_protocol::protocol::TurnStartedEvent; use codex_protocol::protocol::UserMessageEvent; use codex_protocol::protocol::W3cTraceContext; @@ -2221,7 +2221,7 @@ async fn fork_startup_context_then_first_turn_diff_snapshot() -> anyhow::Result< }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await?; wait_for_event(&initial.codex, |ev| matches!(ev, EventMsg::TurnComplete(_))).await; @@ -2267,7 +2267,7 @@ async fn fork_startup_context_then_first_turn_diff_snapshot() -> anyhow::Result< }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: TurnContextOverrides { + thread_settings: ThreadSettingsOverrides { approval_policy: Some(AskForApproval::Never), collaboration_mode: Some(collaboration_mode), ..Default::default() @@ -5199,7 +5199,7 @@ fn op_kind_for_input_and_context_ops() { items: vec![], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), } .kind(), "user_input" @@ -5222,7 +5222,7 @@ async fn user_turn_updates_approvals_reviewer() { environments: None, final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: codex_protocol::protocol::TurnContextOverrides { + thread_settings: codex_protocol::protocol::ThreadSettingsOverrides { cwd: Some(config.cwd.to_path_buf()), approval_policy: Some(config.permissions.approval_policy.value()), approvals_reviewer: Some(codex_config::types::ApprovalsReviewer::AutoReview), @@ -8289,7 +8289,7 @@ async fn active_goal_continuation_runs_again_after_no_tool_turn() -> anyhow::Res }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await?; @@ -8394,7 +8394,7 @@ async fn pending_request_user_input_does_not_spawn_extra_goal_continuation() -> }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await?; @@ -8819,7 +8819,7 @@ async fn completed_goal_accounts_current_turn_tokens_before_tool_response() -> a }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await?; 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 c0c0016907..27b12dbe4e 100644 --- a/codex-rs/core/src/tools/handlers/multi_agents_tests.rs +++ b/codex-rs/core/src/tools/handlers/multi_agents_tests.rs @@ -2470,7 +2470,7 @@ async fn send_input_accepts_structured_items() { ], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }; let captured = manager .captured_ops() diff --git a/codex-rs/core/tests/common/test_codex.rs b/codex-rs/core/tests/common/test_codex.rs index 21815694fb..559dfb07a0 100644 --- a/codex-rs/core/tests/common/test_codex.rs +++ b/codex-rs/core/tests/common/test_codex.rs @@ -769,7 +769,7 @@ impl TestCodex { environments, final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: codex_protocol::protocol::TurnContextOverrides { + thread_settings: codex_protocol::protocol::ThreadSettingsOverrides { cwd: Some(self.config.cwd.to_path_buf()), approval_policy: Some(approval_policy), sandbox_policy: Some(sandbox_policy), diff --git a/codex-rs/core/tests/suite/abort_tasks.rs b/codex-rs/core/tests/suite/abort_tasks.rs index fd2c06aef3..c41502a9dc 100644 --- a/codex-rs/core/tests/suite/abort_tasks.rs +++ b/codex-rs/core/tests/suite/abort_tasks.rs @@ -53,7 +53,7 @@ async fn interrupt_long_running_tool_emits_turn_aborted() { }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await .unwrap(); @@ -110,7 +110,7 @@ async fn interrupt_tool_records_history_entries() { }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await .unwrap(); @@ -131,7 +131,7 @@ async fn interrupt_tool_records_history_entries() { }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await .unwrap(); @@ -214,7 +214,7 @@ async fn interrupt_persists_turn_aborted_marker_in_next_request() { }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await .unwrap(); @@ -235,7 +235,7 @@ async fn interrupt_persists_turn_aborted_marker_in_next_request() { }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await .unwrap(); diff --git a/codex-rs/core/tests/suite/apply_patch_cli.rs b/codex-rs/core/tests/suite/apply_patch_cli.rs index 7715ec595c..24fa3cea59 100644 --- a/codex-rs/core/tests/suite/apply_patch_cli.rs +++ b/codex-rs/core/tests/suite/apply_patch_cli.rs @@ -92,7 +92,7 @@ async fn submit_without_wait_with_turn_permissions( environments: None, final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: codex_protocol::protocol::TurnContextOverrides { + thread_settings: codex_protocol::protocol::ThreadSettingsOverrides { cwd: Some(harness.cwd().to_path_buf()), approval_policy: Some(AskForApproval::Never), sandbox_policy: Some(sandbox_policy), diff --git a/codex-rs/core/tests/suite/approvals.rs b/codex-rs/core/tests/suite/approvals.rs index b4c71e922a..f08262eb6f 100644 --- a/codex-rs/core/tests/suite/approvals.rs +++ b/codex-rs/core/tests/suite/approvals.rs @@ -652,7 +652,7 @@ async fn submit_turn( environments: None, final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: codex_protocol::protocol::TurnContextOverrides { + thread_settings: codex_protocol::protocol::ThreadSettingsOverrides { cwd: Some(test.cwd.path().to_path_buf()), approval_policy: Some(approval_policy), approvals_reviewer: Some(ApprovalsReviewer::User), @@ -2591,7 +2591,7 @@ async fn matched_prefix_rule_runs_unsandboxed_under_zsh_fork() -> Result<()> { environments: None, final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: codex_protocol::protocol::TurnContextOverrides { + thread_settings: codex_protocol::protocol::ThreadSettingsOverrides { cwd: Some(test.cwd.path().to_path_buf()), approval_policy: Some(approval_policy), approvals_reviewer: Some(ApprovalsReviewer::User), diff --git a/codex-rs/core/tests/suite/client.rs b/codex-rs/core/tests/suite/client.rs index 4ca224a0c3..f6731a0ea4 100644 --- a/codex-rs/core/tests/suite/client.rs +++ b/codex-rs/core/tests/suite/client.rs @@ -392,7 +392,7 @@ async fn resume_includes_initial_messages_and_sends_prior_items() { }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await .unwrap(); @@ -758,7 +758,7 @@ async fn includes_session_id_thread_id_and_model_headers_in_request() { }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await .unwrap(); @@ -969,7 +969,7 @@ async fn includes_base_instructions_override_in_request() { }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await .unwrap(); @@ -1026,7 +1026,7 @@ async fn chatgpt_auth_sends_correct_request() { }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await .unwrap(); @@ -1150,7 +1150,7 @@ async fn prefers_apikey_when_config_prefers_apikey_even_with_chatgpt_tokens() { }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await .unwrap(); @@ -1189,7 +1189,7 @@ async fn includes_user_instructions_message_in_request() { }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await .unwrap(); @@ -1277,7 +1277,7 @@ async fn includes_apps_guidance_as_developer_message_for_chatgpt_auth() { }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await .unwrap(); @@ -1340,7 +1340,7 @@ async fn omits_apps_guidance_for_api_key_auth_even_when_feature_enabled() { }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await .unwrap(); @@ -1399,7 +1399,7 @@ async fn omits_apps_guidance_when_configured_off() { }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await .unwrap(); @@ -1441,7 +1441,7 @@ async fn omits_environment_context_when_configured_off() { }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await .unwrap(); @@ -1498,7 +1498,7 @@ async fn skills_append_to_developer_message() { }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await .unwrap(); @@ -1581,7 +1581,7 @@ async fn skills_use_aliases_in_developer_message_under_budget_pressure() { }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await .unwrap(); @@ -1642,7 +1642,7 @@ async fn includes_configured_effort_in_request() -> anyhow::Result<()> { }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await .unwrap(); @@ -1684,7 +1684,7 @@ async fn includes_no_effort_in_request() -> anyhow::Result<()> { }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await .unwrap(); @@ -1727,7 +1727,7 @@ async fn includes_default_reasoning_effort_in_request_when_defined_by_model_info }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await .unwrap(); @@ -1778,7 +1778,7 @@ async fn user_turn_collaboration_mode_overrides_model_and_effort() -> anyhow::Re environments: None, final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: codex_protocol::protocol::TurnContextOverrides { + thread_settings: codex_protocol::protocol::ThreadSettingsOverrides { cwd: Some(config.cwd.to_path_buf()), approval_policy: Some(config.permissions.approval_policy.value()), sandbox_policy: Some(config.legacy_sandbox_policy()), @@ -1834,7 +1834,7 @@ async fn configured_reasoning_summary_is_sent() -> anyhow::Result<()> { }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await .unwrap(); @@ -1899,7 +1899,7 @@ async fn user_turn_explicit_reasoning_summary_overrides_model_catalog_default() environments: None, final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: codex_protocol::protocol::TurnContextOverrides { + thread_settings: codex_protocol::protocol::ThreadSettingsOverrides { cwd: Some(config.cwd.to_path_buf()), approval_policy: Some(config.permissions.approval_policy.value()), sandbox_policy: Some(config.legacy_sandbox_policy()), @@ -1959,7 +1959,7 @@ async fn reasoning_summary_is_omitted_when_disabled() -> anyhow::Result<()> { }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await .unwrap(); @@ -2018,7 +2018,7 @@ async fn reasoning_summary_none_overrides_model_catalog_default() -> anyhow::Res }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await .unwrap(); @@ -2057,7 +2057,7 @@ async fn includes_default_verbosity_in_request() -> anyhow::Result<()> { }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await .unwrap(); @@ -2105,7 +2105,7 @@ async fn configured_verbosity_not_sent_for_models_without_support() -> anyhow::R }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await .unwrap(); @@ -2152,7 +2152,7 @@ async fn configured_verbosity_is_sent() -> anyhow::Result<()> { }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await .unwrap(); @@ -2204,7 +2204,7 @@ async fn includes_developer_instructions_message_in_request() { }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await .unwrap(); @@ -2500,7 +2500,7 @@ async fn token_count_includes_rate_limits_snapshot() { }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await .unwrap(); @@ -2639,7 +2639,7 @@ async fn usage_limit_error_emits_rate_limit_event() -> anyhow::Result<()> { }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await .expect("submission should succeed while emitting usage limit error events"); @@ -2716,7 +2716,7 @@ async fn context_window_error_sets_total_tokens_to_model_window() -> anyhow::Res }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await?; @@ -2731,7 +2731,7 @@ async fn context_window_error_sets_total_tokens_to_model_window() -> anyhow::Res }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await?; @@ -2816,7 +2816,7 @@ async fn incomplete_response_emits_content_filter_error_message() -> anyhow::Res }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await?; @@ -2927,7 +2927,7 @@ async fn azure_overrides_assign_properties_used_for_responses_url() { }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await .unwrap(); @@ -3016,7 +3016,7 @@ async fn env_var_overrides_loaded_auth() { }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await .unwrap(); @@ -3073,7 +3073,7 @@ async fn history_dedupes_streamed_and_final_messages_across_turns() { }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await .unwrap(); @@ -3089,7 +3089,7 @@ async fn history_dedupes_streamed_and_final_messages_across_turns() { }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await .unwrap(); @@ -3105,7 +3105,7 @@ async fn history_dedupes_streamed_and_final_messages_across_turns() { }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await .unwrap(); diff --git a/codex-rs/core/tests/suite/client_websockets.rs b/codex-rs/core/tests/suite/client_websockets.rs index 3ae5be3e90..feee9d4227 100755 --- a/codex-rs/core/tests/suite/client_websockets.rs +++ b/codex-rs/core/tests/suite/client_websockets.rs @@ -1208,7 +1208,7 @@ async fn responses_websocket_usage_limit_error_emits_rate_limit_event() { }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await .expect("submission should succeed while emitting usage limit error events"); @@ -1297,7 +1297,7 @@ async fn responses_websocket_invalid_request_error_with_status_is_forwarded() { }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await .expect("submission should succeed while emitting invalid request events"); diff --git a/codex-rs/core/tests/suite/code_mode.rs b/codex-rs/core/tests/suite/code_mode.rs index 61f99c50c3..0c92767cd0 100644 --- a/codex-rs/core/tests/suite/code_mode.rs +++ b/codex-rs/core/tests/suite/code_mode.rs @@ -2596,7 +2596,7 @@ text( environments: None, final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: codex_protocol::protocol::TurnContextOverrides { + thread_settings: codex_protocol::protocol::ThreadSettingsOverrides { cwd: Some(cwd), approval_policy: Some(AskForApproval::Never), sandbox_policy: Some(sandbox_policy), diff --git a/codex-rs/core/tests/suite/collaboration_instructions.rs b/codex-rs/core/tests/suite/collaboration_instructions.rs index 11ba27fb5b..38a0e7992f 100644 --- a/codex-rs/core/tests/suite/collaboration_instructions.rs +++ b/codex-rs/core/tests/suite/collaboration_instructions.rs @@ -86,7 +86,7 @@ async fn no_collaboration_instructions_by_default() -> Result<()> { }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await?; wait_for_event(&test.codex, |ev| matches!(ev, EventMsg::TurnComplete(_))).await; @@ -124,7 +124,7 @@ async fn user_input_includes_collaboration_instructions_after_override() -> Resu let collab_text = "collab instructions"; let collaboration_mode = collab_mode_with_instructions(Some(collab_text)); test.codex - .update_turn_context_overrides(codex_core::CodexThreadTurnContextOverrides { + .update_thread_settings_overrides(codex_core::CodexThreadSettingsOverrides { collaboration_mode: Some(collaboration_mode), ..Default::default() }) @@ -139,7 +139,7 @@ async fn user_input_includes_collaboration_instructions_after_override() -> Resu }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await?; wait_for_event(&test.codex, |ev| matches!(ev, EventMsg::TurnComplete(_))).await; @@ -176,7 +176,7 @@ async fn collaboration_instructions_added_on_user_turn() -> Result<()> { environments: None, final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: codex_protocol::protocol::TurnContextOverrides { + thread_settings: codex_protocol::protocol::ThreadSettingsOverrides { cwd: Some(test.config.cwd.to_path_buf()), approval_policy: Some(test.config.permissions.approval_policy.value()), sandbox_policy: Some(test.config.legacy_sandbox_policy()), @@ -226,7 +226,7 @@ async fn collaboration_instructions_omitted_when_disabled() -> Result<()> { environments: None, final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: codex_protocol::protocol::TurnContextOverrides { + thread_settings: codex_protocol::protocol::ThreadSettingsOverrides { cwd: Some(test.config.cwd.to_path_buf()), approval_policy: Some(test.config.permissions.approval_policy.value()), sandbox_policy: Some(test.config.legacy_sandbox_policy()), @@ -268,7 +268,7 @@ async fn override_then_next_turn_uses_updated_collaboration_instructions() -> Re let collaboration_mode = collab_mode_with_instructions(Some(collab_text)); test.codex - .update_turn_context_overrides(codex_core::CodexThreadTurnContextOverrides { + .update_thread_settings_overrides(codex_core::CodexThreadSettingsOverrides { collaboration_mode: Some(collaboration_mode), ..Default::default() }) @@ -283,7 +283,7 @@ async fn override_then_next_turn_uses_updated_collaboration_instructions() -> Re }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await?; wait_for_event(&test.codex, |ev| matches!(ev, EventMsg::TurnComplete(_))).await; @@ -314,7 +314,7 @@ async fn user_turn_overrides_collaboration_instructions_after_override() -> Resu let turn_mode = collab_mode_with_instructions(Some(turn_text)); test.codex - .update_turn_context_overrides(codex_core::CodexThreadTurnContextOverrides { + .update_thread_settings_overrides(codex_core::CodexThreadSettingsOverrides { collaboration_mode: Some(base_mode), ..Default::default() }) @@ -329,7 +329,7 @@ async fn user_turn_overrides_collaboration_instructions_after_override() -> Resu environments: None, final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: codex_protocol::protocol::TurnContextOverrides { + thread_settings: codex_protocol::protocol::ThreadSettingsOverrides { cwd: Some(test.config.cwd.to_path_buf()), approval_policy: Some(test.config.permissions.approval_policy.value()), sandbox_policy: Some(test.config.legacy_sandbox_policy()), @@ -376,7 +376,7 @@ async fn collaboration_mode_update_emits_new_instruction_message() -> Result<()> let second_text = "second instructions"; test.codex - .update_turn_context_overrides(codex_core::CodexThreadTurnContextOverrides { + .update_thread_settings_overrides(codex_core::CodexThreadSettingsOverrides { collaboration_mode: Some(collab_mode_with_instructions(Some(first_text))), ..Default::default() }) @@ -391,13 +391,13 @@ async fn collaboration_mode_update_emits_new_instruction_message() -> Result<()> }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await?; wait_for_event(&test.codex, |ev| matches!(ev, EventMsg::TurnComplete(_))).await; test.codex - .update_turn_context_overrides(codex_core::CodexThreadTurnContextOverrides { + .update_thread_settings_overrides(codex_core::CodexThreadSettingsOverrides { collaboration_mode: Some(collab_mode_with_instructions(Some(second_text))), ..Default::default() }) @@ -412,7 +412,7 @@ async fn collaboration_mode_update_emits_new_instruction_message() -> Result<()> }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await?; wait_for_event(&test.codex, |ev| matches!(ev, EventMsg::TurnComplete(_))).await; @@ -447,7 +447,7 @@ async fn collaboration_mode_update_noop_does_not_append() -> Result<()> { let collab_text = "same instructions"; test.codex - .update_turn_context_overrides(codex_core::CodexThreadTurnContextOverrides { + .update_thread_settings_overrides(codex_core::CodexThreadSettingsOverrides { collaboration_mode: Some(collab_mode_with_instructions(Some(collab_text))), ..Default::default() }) @@ -462,13 +462,13 @@ async fn collaboration_mode_update_noop_does_not_append() -> Result<()> { }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await?; wait_for_event(&test.codex, |ev| matches!(ev, EventMsg::TurnComplete(_))).await; test.codex - .update_turn_context_overrides(codex_core::CodexThreadTurnContextOverrides { + .update_thread_settings_overrides(codex_core::CodexThreadSettingsOverrides { collaboration_mode: Some(collab_mode_with_instructions(Some(collab_text))), ..Default::default() }) @@ -483,7 +483,7 @@ async fn collaboration_mode_update_noop_does_not_append() -> Result<()> { }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await?; wait_for_event(&test.codex, |ev| matches!(ev, EventMsg::TurnComplete(_))).await; @@ -517,7 +517,7 @@ async fn collaboration_mode_update_emits_new_instruction_message_when_mode_chang let plan_text = "plan mode instructions"; test.codex - .update_turn_context_overrides(codex_core::CodexThreadTurnContextOverrides { + .update_thread_settings_overrides(codex_core::CodexThreadSettingsOverrides { collaboration_mode: Some(collab_mode_with_mode_and_instructions( ModeKind::Default, Some(default_text), @@ -535,13 +535,13 @@ async fn collaboration_mode_update_emits_new_instruction_message_when_mode_chang }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await?; wait_for_event(&test.codex, |ev| matches!(ev, EventMsg::TurnComplete(_))).await; test.codex - .update_turn_context_overrides(codex_core::CodexThreadTurnContextOverrides { + .update_thread_settings_overrides(codex_core::CodexThreadSettingsOverrides { collaboration_mode: Some(collab_mode_with_mode_and_instructions( ModeKind::Plan, Some(plan_text), @@ -559,7 +559,7 @@ async fn collaboration_mode_update_emits_new_instruction_message_when_mode_chang }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await?; wait_for_event(&test.codex, |ev| matches!(ev, EventMsg::TurnComplete(_))).await; @@ -594,7 +594,7 @@ async fn collaboration_mode_update_noop_does_not_append_when_mode_is_unchanged() let collab_text = "mode-stable instructions"; test.codex - .update_turn_context_overrides(codex_core::CodexThreadTurnContextOverrides { + .update_thread_settings_overrides(codex_core::CodexThreadSettingsOverrides { collaboration_mode: Some(collab_mode_with_mode_and_instructions( ModeKind::Default, Some(collab_text), @@ -612,13 +612,13 @@ async fn collaboration_mode_update_noop_does_not_append_when_mode_is_unchanged() }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await?; wait_for_event(&test.codex, |ev| matches!(ev, EventMsg::TurnComplete(_))).await; test.codex - .update_turn_context_overrides(codex_core::CodexThreadTurnContextOverrides { + .update_thread_settings_overrides(codex_core::CodexThreadSettingsOverrides { collaboration_mode: Some(collab_mode_with_mode_and_instructions( ModeKind::Default, Some(collab_text), @@ -636,7 +636,7 @@ async fn collaboration_mode_update_noop_does_not_append_when_mode_is_unchanged() }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await?; wait_for_event(&test.codex, |ev| matches!(ev, EventMsg::TurnComplete(_))).await; @@ -677,7 +677,7 @@ async fn resume_replays_collaboration_instructions() -> Result<()> { let collab_text = "resume instructions"; initial .codex - .update_turn_context_overrides(codex_core::CodexThreadTurnContextOverrides { + .update_thread_settings_overrides(codex_core::CodexThreadSettingsOverrides { collaboration_mode: Some(collab_mode_with_instructions(Some(collab_text))), ..Default::default() }) @@ -693,7 +693,7 @@ async fn resume_replays_collaboration_instructions() -> Result<()> { }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await?; wait_for_event(&initial.codex, |ev| matches!(ev, EventMsg::TurnComplete(_))).await; @@ -709,7 +709,7 @@ async fn resume_replays_collaboration_instructions() -> Result<()> { }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await?; wait_for_event(&resumed.codex, |ev| matches!(ev, EventMsg::TurnComplete(_))).await; @@ -737,7 +737,7 @@ async fn empty_collaboration_instructions_are_ignored() -> Result<()> { let current_model = test.session_configured.model.clone(); test.codex - .update_turn_context_overrides(codex_core::CodexThreadTurnContextOverrides { + .update_thread_settings_overrides(codex_core::CodexThreadSettingsOverrides { collaboration_mode: Some(CollaborationMode { mode: ModeKind::Default, settings: Settings { @@ -759,7 +759,7 @@ async fn empty_collaboration_instructions_are_ignored() -> Result<()> { }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await?; wait_for_event(&test.codex, |ev| matches!(ev, EventMsg::TurnComplete(_))).await; diff --git a/codex-rs/core/tests/suite/compact.rs b/codex-rs/core/tests/suite/compact.rs index 17f743d095..45363b07fa 100644 --- a/codex-rs/core/tests/suite/compact.rs +++ b/codex-rs/core/tests/suite/compact.rs @@ -96,7 +96,7 @@ fn disabled_permission_user_turn(text: impl Into, cwd: PathBuf, model: S environments: None, final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: codex_protocol::protocol::TurnContextOverrides { + thread_settings: codex_protocol::protocol::ThreadSettingsOverrides { cwd: Some(cwd), approval_policy: Some(AskForApproval::Never), sandbox_policy: Some(sandbox_policy), @@ -391,7 +391,7 @@ async fn summarize_context_three_requests_and_instructions() { }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await .unwrap(); @@ -416,7 +416,7 @@ async fn summarize_context_three_requests_and_instructions() { }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await .unwrap(); @@ -593,7 +593,7 @@ async fn manual_pre_compact_block_decision_does_not_block_compaction() { }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await .expect("submit first user turn"); @@ -666,7 +666,7 @@ async fn compact_hooks_respect_matchers_and_post_runs_after_compaction() { }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await .expect("submit first user turn"); @@ -736,7 +736,7 @@ async fn manual_compact_uses_custom_prompt() { }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await .expect("submit first user turn"); @@ -883,7 +883,7 @@ async fn manual_compact_emits_context_compaction_items() { }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await .unwrap(); @@ -1049,7 +1049,7 @@ async fn multiple_auto_compact_per_task_runs_after_token_limit_hit() { }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await .expect("submit user input"); @@ -1521,7 +1521,7 @@ async fn auto_compact_runs_after_token_limit_hit() { }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await .unwrap(); @@ -1537,7 +1537,7 @@ async fn auto_compact_runs_after_token_limit_hit() { }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await .unwrap(); @@ -1553,7 +1553,7 @@ async fn auto_compact_runs_after_token_limit_hit() { }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await .unwrap(); @@ -1724,7 +1724,7 @@ async fn auto_compact_emits_context_compaction_items() { }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await .unwrap(); @@ -1805,7 +1805,7 @@ async fn auto_compact_starts_after_turn_started() { }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await .unwrap(); @@ -1820,7 +1820,7 @@ async fn auto_compact_starts_after_turn_started() { }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await .unwrap(); @@ -1835,7 +1835,7 @@ async fn auto_compact_starts_after_turn_started() { }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await .unwrap(); @@ -2269,7 +2269,7 @@ async fn auto_compact_persists_rollout_entries() { }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await .unwrap(); @@ -2284,7 +2284,7 @@ async fn auto_compact_persists_rollout_entries() { }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await .unwrap(); @@ -2299,7 +2299,7 @@ async fn auto_compact_persists_rollout_entries() { }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await .unwrap(); @@ -2388,7 +2388,7 @@ async fn manual_compact_retries_after_context_window_error() { }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await .unwrap(); @@ -2492,7 +2492,7 @@ async fn manual_compact_non_context_failure_retries_then_emits_task_error() { }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await .expect("submit user input"); @@ -2587,7 +2587,7 @@ async fn manual_compact_twice_preserves_latest_user_messages() { }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await .unwrap(); @@ -2605,7 +2605,7 @@ async fn manual_compact_twice_preserves_latest_user_messages() { }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await .unwrap(); @@ -2623,7 +2623,7 @@ async fn manual_compact_twice_preserves_latest_user_messages() { }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await .unwrap(); @@ -2787,7 +2787,7 @@ async fn auto_compact_allows_multiple_attempts_when_interleaved_with_other_turn_ }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await .unwrap(); @@ -2892,7 +2892,7 @@ async fn snapshot_request_shape_mid_turn_continuation_compaction() { }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await .unwrap(); @@ -3092,7 +3092,7 @@ async fn auto_compact_counts_encrypted_reasoning_before_last_user() { }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await .unwrap(); @@ -3211,7 +3211,7 @@ async fn auto_compact_runs_when_reasoning_header_clears_between_turns() { }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await .unwrap(); @@ -3273,14 +3273,14 @@ async fn snapshot_request_shape_pre_turn_compaction_including_incoming_user_mess }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await .expect("submit user input"); wait_for_event(&codex, |ev| matches!(ev, EventMsg::TurnComplete(_))).await; } codex - .update_turn_context_overrides(codex_core::CodexThreadTurnContextOverrides { + .update_thread_settings_overrides(codex_core::CodexThreadSettingsOverrides { cwd: Some(PathBuf::from(PRETURN_CONTEXT_DIFF_CWD)), ..Default::default() }) @@ -3303,7 +3303,7 @@ async fn snapshot_request_shape_pre_turn_compaction_including_incoming_user_mess ], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await .expect("submit user input"); @@ -3492,7 +3492,7 @@ async fn snapshot_request_shape_pre_turn_compaction_context_window_exceeded() { }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await .expect("submit first user"); @@ -3507,7 +3507,7 @@ async fn snapshot_request_shape_pre_turn_compaction_context_window_exceeded() { }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await .expect("submit second user"); @@ -3580,7 +3580,7 @@ async fn snapshot_request_shape_manual_compact_without_previous_user_messages() }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await .expect("submit follow-up user input"); diff --git a/codex-rs/core/tests/suite/compact_remote.rs b/codex-rs/core/tests/suite/compact_remote.rs index a0c2f0b50f..d365f87cd7 100644 --- a/codex-rs/core/tests/suite/compact_remote.rs +++ b/codex-rs/core/tests/suite/compact_remote.rs @@ -326,7 +326,7 @@ async fn remote_compact_replaces_history_for_followups() -> Result<()> { }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await?; wait_for_turn_complete(&codex).await; @@ -343,7 +343,7 @@ async fn remote_compact_replaces_history_for_followups() -> Result<()> { }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await?; wait_for_turn_complete(&codex).await; @@ -518,7 +518,7 @@ async fn assert_remote_manual_compact_request_parity( }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await?; wait_for_turn_complete(&codex).await; @@ -538,7 +538,7 @@ async fn assert_remote_manual_compact_request_parity( ], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await?; wait_for_turn_complete(&codex).await; @@ -552,7 +552,7 @@ async fn assert_remote_manual_compact_request_parity( }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await?; wait_for_turn_complete(&codex).await; @@ -572,7 +572,7 @@ async fn assert_remote_manual_compact_request_parity( ], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await?; wait_for_turn_complete(&codex).await; @@ -586,7 +586,7 @@ async fn assert_remote_manual_compact_request_parity( }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await?; wait_for_turn_complete(&codex).await; @@ -754,7 +754,7 @@ async fn remote_compact_v2_reuses_compaction_trigger_for_followups() -> Result<( }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await?; wait_for_turn_complete(&codex).await; @@ -771,7 +771,7 @@ async fn remote_compact_v2_reuses_compaction_trigger_for_followups() -> Result<( }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await?; wait_for_turn_complete(&codex).await; @@ -865,7 +865,7 @@ async fn remote_compact_v2_accepts_additional_output_items_before_compaction() - }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await?; wait_for_turn_complete(&codex).await; @@ -882,7 +882,7 @@ async fn remote_compact_v2_accepts_additional_output_items_before_compaction() - }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await?; wait_for_turn_complete(&codex).await; @@ -973,7 +973,7 @@ async fn remote_compact_filters_deferred_dynamic_tools() -> Result<()> { }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await?; wait_for_turn_complete(&codex).await; @@ -1045,7 +1045,7 @@ async fn remote_compact_runs_automatically() -> Result<()> { }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await?; @@ -1126,7 +1126,7 @@ async fn remote_compact_trims_function_call_history_to_fit_context_window() -> R }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await?; wait_for_event(&codex, |event| matches!(event, EventMsg::TurnComplete(_))).await; @@ -1140,7 +1140,7 @@ async fn remote_compact_trims_function_call_history_to_fit_context_window() -> R }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await?; wait_for_event(&codex, |event| matches!(event, EventMsg::TurnComplete(_))).await; @@ -1258,7 +1258,7 @@ async fn auto_remote_compact_trims_function_call_history_to_fit_context_window() }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await?; wait_for_event(&codex, |event| matches!(event, EventMsg::TurnComplete(_))).await; @@ -1272,7 +1272,7 @@ async fn auto_remote_compact_trims_function_call_history_to_fit_context_window() }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await?; wait_for_event(&codex, |event| matches!(event, EventMsg::TurnComplete(_))).await; @@ -1292,7 +1292,7 @@ async fn auto_remote_compact_trims_function_call_history_to_fit_context_window() }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await?; wait_for_event(&codex, |event| matches!(event, EventMsg::TurnComplete(_))).await; @@ -1392,7 +1392,7 @@ async fn auto_remote_compact_failure_stops_agent_loop() -> Result<()> { }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await?; wait_for_event(&codex, |event| matches!(event, EventMsg::TurnComplete(_))).await; @@ -1406,7 +1406,7 @@ async fn auto_remote_compact_failure_stops_agent_loop() -> Result<()> { }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await?; @@ -1500,7 +1500,7 @@ async fn remote_compact_trim_estimate_uses_session_base_instructions() -> Result }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await?; wait_for_event(&baseline_codex, |event| { @@ -1517,7 +1517,7 @@ async fn remote_compact_trim_estimate_uses_session_base_instructions() -> Result }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await?; wait_for_event(&baseline_codex, |event| { @@ -1608,7 +1608,7 @@ async fn remote_compact_trim_estimate_uses_session_base_instructions() -> Result }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await?; wait_for_event(&override_codex, |event| { @@ -1625,7 +1625,7 @@ async fn remote_compact_trim_estimate_uses_session_base_instructions() -> Result }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await?; wait_for_event(&override_codex, |event| { @@ -1696,7 +1696,7 @@ async fn remote_manual_compact_emits_context_compaction_items() -> Result<()> { }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await?; wait_for_event(&codex, |event| matches!(event, EventMsg::TurnComplete(_))).await; @@ -1777,7 +1777,7 @@ async fn remote_manual_compact_failure_emits_task_error_event() -> Result<()> { }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await?; wait_for_event(&codex, |event| matches!(event, EventMsg::TurnComplete(_))).await; @@ -1861,7 +1861,7 @@ async fn remote_compact_persists_replacement_history_in_rollout() -> Result<()> }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await?; wait_for_event(&codex, |ev| matches!(ev, EventMsg::TurnComplete(_))).await; @@ -2004,7 +2004,7 @@ async fn remote_compact_and_resume_refresh_stale_developer_instructions() -> Res }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await?; wait_for_event(&initial.codex, |ev| matches!(ev, EventMsg::TurnComplete(_))).await; @@ -2022,7 +2022,7 @@ async fn remote_compact_and_resume_refresh_stale_developer_instructions() -> Res }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await?; wait_for_event(&initial.codex, |ev| matches!(ev, EventMsg::TurnComplete(_))).await; @@ -2047,7 +2047,7 @@ async fn remote_compact_and_resume_refresh_stale_developer_instructions() -> Res }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await?; wait_for_event(&resumed.codex, |ev| matches!(ev, EventMsg::TurnComplete(_))).await; @@ -2143,7 +2143,7 @@ async fn remote_compact_refreshes_stale_developer_instructions_without_resume() }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await?; wait_for_event(&test.codex, |ev| matches!(ev, EventMsg::TurnComplete(_))).await; @@ -2160,7 +2160,7 @@ async fn remote_compact_refreshes_stale_developer_instructions_without_resume() }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await?; wait_for_event(&test.codex, |ev| matches!(ev, EventMsg::TurnComplete(_))).await; @@ -2232,7 +2232,7 @@ async fn snapshot_request_shape_remote_pre_turn_compaction_restates_realtime_sta }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await?; wait_for_event(&test.codex, |ev| matches!(ev, EventMsg::TurnComplete(_))).await; @@ -2246,7 +2246,7 @@ async fn snapshot_request_shape_remote_pre_turn_compaction_restates_realtime_sta }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await?; wait_for_event(&test.codex, |ev| matches!(ev, EventMsg::TurnComplete(_))).await; @@ -2313,7 +2313,7 @@ async fn remote_request_uses_custom_experimental_realtime_start_instructions() - }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await?; wait_for_event(&test.codex, |ev| matches!(ev, EventMsg::TurnComplete(_))).await; @@ -2374,7 +2374,7 @@ async fn snapshot_request_shape_remote_pre_turn_compaction_restates_realtime_end }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await?; wait_for_event(&test.codex, |ev| matches!(ev, EventMsg::TurnComplete(_))).await; @@ -2390,7 +2390,7 @@ async fn snapshot_request_shape_remote_pre_turn_compaction_restates_realtime_end }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await?; wait_for_event(&test.codex, |ev| matches!(ev, EventMsg::TurnComplete(_))).await; @@ -2465,7 +2465,7 @@ async fn snapshot_request_shape_remote_manual_compact_restates_realtime_start() }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await?; wait_for_event(&test.codex, |ev| matches!(ev, EventMsg::TurnComplete(_))).await; @@ -2482,7 +2482,7 @@ async fn snapshot_request_shape_remote_manual_compact_restates_realtime_start() }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await?; wait_for_event(&test.codex, |ev| matches!(ev, EventMsg::TurnComplete(_))).await; @@ -2565,7 +2565,7 @@ async fn snapshot_request_shape_remote_mid_turn_compaction_does_not_restate_real }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await?; wait_for_event(&test.codex, |ev| matches!(ev, EventMsg::TurnComplete(_))).await; @@ -2581,7 +2581,7 @@ async fn snapshot_request_shape_remote_mid_turn_compaction_does_not_restate_real }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await?; wait_for_event(&test.codex, |ev| matches!(ev, EventMsg::TurnComplete(_))).await; @@ -2672,7 +2672,7 @@ async fn snapshot_request_shape_remote_compact_resume_restates_realtime_end() -> }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await?; wait_for_event(&initial.codex, |ev| matches!(ev, EventMsg::TurnComplete(_))).await; @@ -2702,7 +2702,7 @@ async fn snapshot_request_shape_remote_compact_resume_restates_realtime_end() -> }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await?; wait_for_event(&resumed.codex, |ev| matches!(ev, EventMsg::TurnComplete(_))).await; @@ -2774,7 +2774,7 @@ async fn snapshot_request_shape_remote_pre_turn_compaction_including_incoming_us for user in ["USER_ONE", "USER_TWO", "USER_THREE"] { if user == "USER_THREE" { codex - .update_turn_context_overrides(codex_core::CodexThreadTurnContextOverrides { + .update_thread_settings_overrides(codex_core::CodexThreadSettingsOverrides { cwd: Some(PathBuf::from(PRETURN_CONTEXT_DIFF_CWD)), ..Default::default() }) @@ -2789,7 +2789,7 @@ async fn snapshot_request_shape_remote_pre_turn_compaction_including_incoming_us }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await?; wait_for_event(&codex, |ev| matches!(ev, EventMsg::TurnComplete(_))).await; @@ -2876,13 +2876,13 @@ async fn snapshot_request_shape_remote_pre_turn_compaction_strips_incoming_model }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await?; wait_for_event(&codex, |ev| matches!(ev, EventMsg::TurnComplete(_))).await; codex - .update_turn_context_overrides(codex_core::CodexThreadTurnContextOverrides { + .update_thread_settings_overrides(codex_core::CodexThreadSettingsOverrides { model: Some(next_model.to_string()), ..Default::default() }) @@ -2896,7 +2896,7 @@ async fn snapshot_request_shape_remote_pre_turn_compaction_strips_incoming_model }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await?; wait_for_event(&codex, |ev| matches!(ev, EventMsg::TurnComplete(_))).await; @@ -3015,7 +3015,7 @@ async fn snapshot_request_shape_remote_pre_turn_compaction_context_window_exceed }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await?; wait_for_event(&codex, |ev| matches!(ev, EventMsg::TurnComplete(_))).await; @@ -3029,7 +3029,7 @@ async fn snapshot_request_shape_remote_pre_turn_compaction_context_window_exceed }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await?; let error_message = wait_for_event_match(&codex, |event| match event { @@ -3114,7 +3114,7 @@ async fn snapshot_request_shape_remote_mid_turn_continuation_compaction() -> Res }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await?; wait_for_event(&codex, |ev| matches!(ev, EventMsg::TurnComplete(_))).await; @@ -3192,7 +3192,7 @@ async fn snapshot_request_shape_remote_mid_turn_compaction_summary_only_reinject }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await?; wait_for_event(&codex, |ev| matches!(ev, EventMsg::TurnComplete(_))).await; @@ -3278,7 +3278,7 @@ async fn snapshot_request_shape_remote_mid_turn_compaction_multi_summary_reinjec }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await?; wait_for_event(&codex, |ev| matches!(ev, EventMsg::TurnComplete(_))).await; @@ -3295,7 +3295,7 @@ async fn snapshot_request_shape_remote_mid_turn_compaction_multi_summary_reinjec }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await?; wait_for_event(&codex, |ev| matches!(ev, EventMsg::TurnComplete(_))).await; @@ -3377,7 +3377,7 @@ async fn snapshot_request_shape_remote_manual_compact_without_previous_user_mess }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await?; wait_for_event(&codex, |ev| matches!(ev, EventMsg::TurnComplete(_))).await; diff --git a/codex-rs/core/tests/suite/compact_remote_parity.rs b/codex-rs/core/tests/suite/compact_remote_parity.rs index c465480558..ccbd427b1f 100644 --- a/codex-rs/core/tests/suite/compact_remote_parity.rs +++ b/codex-rs/core/tests/suite/compact_remote_parity.rs @@ -606,7 +606,7 @@ async fn submit_user_input(codex: &codex_core::CodexThread, items: Vec Resu } #[tokio::test(flavor = "multi_thread", worker_threads = 2)] -/// Scenario: rolling back a turn that introduced persistent pre-turn context +/// Scenario: rolling back a turn that introduced persistent thread settings /// diffs should trim those context updates so the next request includes them /// only once. async fn snapshot_rollback_followup_turn_trims_context_updates() -> Result<()> { @@ -549,7 +549,7 @@ async fn snapshot_rollback_followup_turn_trims_context_updates() -> Result<()> { let override_cwd = config.cwd.join(PRETURN_CONTEXT_DIFF_CWD); std::fs::create_dir_all(&override_cwd)?; conversation - .update_turn_context_overrides(codex_core::CodexThreadTurnContextOverrides { + .update_thread_settings_overrides(codex_core::CodexThreadSettingsOverrides { cwd: Some(override_cwd.to_path_buf()), collaboration_mode: Some(CollaborationMode { mode: ModeKind::Default, @@ -781,7 +781,7 @@ async fn user_turn(conversation: &Arc, text: &str) { }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await .expect("submit user turn"); diff --git a/codex-rs/core/tests/suite/exec_policy.rs b/codex-rs/core/tests/suite/exec_policy.rs index cf90e275e4..f1e01c22ce 100644 --- a/codex-rs/core/tests/suite/exec_policy.rs +++ b/codex-rs/core/tests/suite/exec_policy.rs @@ -54,7 +54,7 @@ async fn submit_user_turn( environments: None, final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: codex_protocol::protocol::TurnContextOverrides { + thread_settings: codex_protocol::protocol::ThreadSettingsOverrides { cwd: Some(test.cwd_path().to_path_buf()), approval_policy: Some(approval_policy), sandbox_policy: Some(sandbox_policy), @@ -141,7 +141,7 @@ async fn execpolicy_blocks_shell_invocation() -> Result<()> { environments: None, final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: codex_protocol::protocol::TurnContextOverrides { + thread_settings: codex_protocol::protocol::ThreadSettingsOverrides { cwd: Some(test.cwd_path().to_path_buf()), approval_policy: Some(AskForApproval::Never), sandbox_policy: Some(sandbox_policy), diff --git a/codex-rs/core/tests/suite/fork_thread.rs b/codex-rs/core/tests/suite/fork_thread.rs index 75256ae786..68a167f790 100644 --- a/codex-rs/core/tests/suite/fork_thread.rs +++ b/codex-rs/core/tests/suite/fork_thread.rs @@ -57,7 +57,7 @@ async fn fork_thread_twice_drops_to_first_message() { }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await .unwrap(); @@ -181,7 +181,7 @@ async fn fork_thread_from_history_does_not_require_source_rollout_path() { }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await .unwrap(); diff --git a/codex-rs/core/tests/suite/hooks.rs b/codex-rs/core/tests/suite/hooks.rs index 8eda28354e..d7549e0e0e 100644 --- a/codex-rs/core/tests/suite/hooks.rs +++ b/codex-rs/core/tests/suite/hooks.rs @@ -1440,7 +1440,7 @@ async fn blocked_queued_prompt_does_not_strand_earlier_accepted_prompt() -> Resu }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await?; @@ -1459,7 +1459,7 @@ async fn blocked_queued_prompt_does_not_strand_earlier_accepted_prompt() -> Resu }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await?; } diff --git a/codex-rs/core/tests/suite/image_rollout.rs b/codex-rs/core/tests/suite/image_rollout.rs index c763c7b94d..085ca96f37 100644 --- a/codex-rs/core/tests/suite/image_rollout.rs +++ b/codex-rs/core/tests/suite/image_rollout.rs @@ -127,7 +127,7 @@ async fn copy_paste_local_image_persists_rollout_request_shape() -> anyhow::Resu environments: None, final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: codex_protocol::protocol::TurnContextOverrides { + thread_settings: codex_protocol::protocol::ThreadSettingsOverrides { cwd: Some(cwd.path().to_path_buf()), approval_policy: Some(AskForApproval::Never), sandbox_policy: Some(sandbox_policy), @@ -223,7 +223,7 @@ async fn drag_drop_image_persists_rollout_request_shape() -> anyhow::Result<()> environments: None, final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: codex_protocol::protocol::TurnContextOverrides { + thread_settings: codex_protocol::protocol::ThreadSettingsOverrides { cwd: Some(cwd.path().to_path_buf()), approval_policy: Some(AskForApproval::Never), sandbox_policy: Some(sandbox_policy), diff --git a/codex-rs/core/tests/suite/items.rs b/codex-rs/core/tests/suite/items.rs index 8b51c771c1..82e01e2451 100644 --- a/codex-rs/core/tests/suite/items.rs +++ b/codex-rs/core/tests/suite/items.rs @@ -58,7 +58,7 @@ fn disabled_plan_turn( environments: None, final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: codex_protocol::protocol::TurnContextOverrides { + thread_settings: codex_protocol::protocol::ThreadSettingsOverrides { cwd: Some(cwd), approval_policy: Some(AskForApproval::Never), sandbox_policy: Some(sandbox_policy), @@ -119,7 +119,7 @@ async fn user_message_item_is_emitted() -> anyhow::Result<()> { items: vec![expected_input.clone()], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await?; @@ -178,7 +178,7 @@ async fn assistant_message_item_is_emitted() -> anyhow::Result<()> { }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await?; @@ -239,7 +239,7 @@ async fn reasoning_item_is_emitted() -> anyhow::Result<()> { }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await?; @@ -301,7 +301,7 @@ async fn web_search_item_is_emitted() -> anyhow::Result<()> { }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await?; @@ -381,7 +381,7 @@ async fn image_generation_call_event_is_emitted() -> anyhow::Result<()> { }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await?; @@ -468,7 +468,7 @@ async fn image_generation_call_event_is_emitted_when_image_save_fails() -> anyho }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await?; @@ -524,7 +524,7 @@ async fn agent_message_content_delta_has_item_metadata() -> anyhow::Result<()> { }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await?; @@ -1108,7 +1108,7 @@ async fn reasoning_content_delta_has_item_metadata() -> anyhow::Result<()> { }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await?; @@ -1163,7 +1163,7 @@ async fn reasoning_raw_content_delta_respects_flag() -> anyhow::Result<()> { }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await?; diff --git a/codex-rs/core/tests/suite/json_result.rs b/codex-rs/core/tests/suite/json_result.rs index 6f93287386..e81d7aa82a 100644 --- a/codex-rs/core/tests/suite/json_result.rs +++ b/codex-rs/core/tests/suite/json_result.rs @@ -83,7 +83,7 @@ async fn codex_returns_json_result(model: String) -> anyhow::Result<()> { environments: None, final_output_json_schema: Some(serde_json::from_str(SCHEMA)?), responsesapi_client_metadata: None, - turn_context: codex_protocol::protocol::TurnContextOverrides { + thread_settings: codex_protocol::protocol::ThreadSettingsOverrides { cwd: Some(cwd.path().to_path_buf()), approval_policy: Some(AskForApproval::Never), sandbox_policy: Some(sandbox_policy), diff --git a/codex-rs/core/tests/suite/mcp_turn_metadata.rs b/codex-rs/core/tests/suite/mcp_turn_metadata.rs index df3ac8259b..16e6cbe37d 100644 --- a/codex-rs/core/tests/suite/mcp_turn_metadata.rs +++ b/codex-rs/core/tests/suite/mcp_turn_metadata.rs @@ -76,7 +76,7 @@ async fn submit_user_turn( environments: None, final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: codex_protocol::protocol::TurnContextOverrides { + thread_settings: codex_protocol::protocol::ThreadSettingsOverrides { cwd: Some(test.cwd.path().to_path_buf()), approval_policy: Some(approval_policy), sandbox_policy: Some(sandbox_policy), diff --git a/codex-rs/core/tests/suite/model_overrides.rs b/codex-rs/core/tests/suite/model_overrides.rs index a8d46dd32b..7f484d094e 100644 --- a/codex-rs/core/tests/suite/model_overrides.rs +++ b/codex-rs/core/tests/suite/model_overrides.rs @@ -25,7 +25,7 @@ async fn turn_context_update_does_not_persist_when_config_exists() { let config_path = test.home.path().join(CONFIG_TOML); codex - .update_turn_context_overrides(codex_core::CodexThreadTurnContextOverrides { + .update_thread_settings_overrides(codex_core::CodexThreadSettingsOverrides { model: Some("o3".to_string()), effort: Some(Some(ReasoningEffort::High)), ..Default::default() @@ -55,7 +55,7 @@ async fn turn_context_update_does_not_create_config_file() { ); codex - .update_turn_context_overrides(codex_core::CodexThreadTurnContextOverrides { + .update_thread_settings_overrides(codex_core::CodexThreadSettingsOverrides { model: Some("o3".to_string()), effort: Some(Some(ReasoningEffort::Medium)), ..Default::default() diff --git a/codex-rs/core/tests/suite/model_switching.rs b/codex-rs/core/tests/suite/model_switching.rs index 40cad40204..1c84d90332 100644 --- a/codex-rs/core/tests/suite/model_switching.rs +++ b/codex-rs/core/tests/suite/model_switching.rs @@ -47,7 +47,7 @@ fn read_only_user_turn(test: &TestCodex, items: Vec, model: String) - environments: None, final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: codex_protocol::protocol::TurnContextOverrides { + thread_settings: codex_protocol::protocol::ThreadSettingsOverrides { cwd: Some(test.cwd_path().to_path_buf()), approval_policy: Some(AskForApproval::Never), sandbox_policy: Some(sandbox_policy), @@ -162,7 +162,7 @@ async fn model_change_appends_model_instructions_developer_message() -> Result<( wait_for_event(&test.codex, |ev| matches!(ev, EventMsg::TurnComplete(_))).await; test.codex - .update_turn_context_overrides(codex_core::CodexThreadTurnContextOverrides { + .update_thread_settings_overrides(codex_core::CodexThreadSettingsOverrides { model: Some(next_model.to_string()), ..Default::default() }) @@ -232,7 +232,7 @@ async fn model_and_personality_change_only_appends_model_instructions() -> Resul wait_for_event(&test.codex, |ev| matches!(ev, EventMsg::TurnComplete(_))).await; test.codex - .update_turn_context_overrides(codex_core::CodexThreadTurnContextOverrides { + .update_thread_settings_overrides(codex_core::CodexThreadSettingsOverrides { model: Some(next_model.to_string()), personality: Some(Personality::Pragmatic), ..Default::default() @@ -970,7 +970,7 @@ async fn model_switch_to_smaller_model_updates_token_context_window() -> Result< wait_for_event(&test.codex, |ev| matches!(ev, EventMsg::TurnComplete(_))).await; test.codex - .update_turn_context_overrides(codex_core::CodexThreadTurnContextOverrides { + .update_thread_settings_overrides(codex_core::CodexThreadSettingsOverrides { model: Some(smaller_model_slug.to_string()), ..Default::default() }) diff --git a/codex-rs/core/tests/suite/model_visible_layout.rs b/codex-rs/core/tests/suite/model_visible_layout.rs index adef99ce02..2288b6870d 100644 --- a/codex-rs/core/tests/suite/model_visible_layout.rs +++ b/codex-rs/core/tests/suite/model_visible_layout.rs @@ -125,7 +125,7 @@ async fn snapshot_model_visible_layout_turn_overrides() -> Result<()> { environments: None, final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: codex_protocol::protocol::TurnContextOverrides { + thread_settings: codex_protocol::protocol::ThreadSettingsOverrides { cwd: Some(first_turn_cwd), approval_policy: Some(AskForApproval::Never), sandbox_policy: Some(first_sandbox_policy), @@ -160,7 +160,7 @@ async fn snapshot_model_visible_layout_turn_overrides() -> Result<()> { environments: None, final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: codex_protocol::protocol::TurnContextOverrides { + thread_settings: codex_protocol::protocol::ThreadSettingsOverrides { cwd: Some(preturn_context_diff_cwd), approval_policy: Some(AskForApproval::OnRequest), sandbox_policy: Some(second_sandbox_policy), @@ -249,7 +249,7 @@ async fn snapshot_model_visible_layout_cwd_change_does_not_refresh_agents() -> R environments: None, final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: codex_protocol::protocol::TurnContextOverrides { + thread_settings: codex_protocol::protocol::ThreadSettingsOverrides { cwd: Some(cwd_one.clone()), approval_policy: Some(AskForApproval::Never), sandbox_policy: Some(first_sandbox_policy), @@ -282,7 +282,7 @@ async fn snapshot_model_visible_layout_cwd_change_does_not_refresh_agents() -> R environments: None, final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: codex_protocol::protocol::TurnContextOverrides { + thread_settings: codex_protocol::protocol::ThreadSettingsOverrides { cwd: Some(cwd_two), approval_policy: Some(AskForApproval::Never), sandbox_policy: Some(second_sandbox_policy), @@ -365,7 +365,7 @@ async fn snapshot_model_visible_layout_resume_with_personality_change() -> Resul }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await?; wait_for_event(&codex, |event| matches!(event, EventMsg::TurnComplete(_))).await; @@ -406,7 +406,7 @@ async fn snapshot_model_visible_layout_resume_with_personality_change() -> Resul environments: None, final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: codex_protocol::protocol::TurnContextOverrides { + thread_settings: codex_protocol::protocol::ThreadSettingsOverrides { cwd: Some(resume_override_cwd), approval_policy: Some(AskForApproval::Never), sandbox_policy: Some(sandbox_policy), @@ -479,7 +479,7 @@ async fn snapshot_model_visible_layout_resume_override_matches_rollout_model() - }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await?; wait_for_event(&codex, |event| matches!(event, EventMsg::TurnComplete(_))).await; @@ -503,7 +503,7 @@ async fn snapshot_model_visible_layout_resume_override_matches_rollout_model() - fs::create_dir_all(&resume_override_cwd)?; resumed .codex - .update_turn_context_overrides(codex_core::CodexThreadTurnContextOverrides { + .update_thread_settings_overrides(codex_core::CodexThreadSettingsOverrides { cwd: Some(resume_override_cwd), model: Some("gpt-5.2".to_string()), ..Default::default() @@ -519,7 +519,7 @@ async fn snapshot_model_visible_layout_resume_override_matches_rollout_model() - }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await?; wait_for_event(&resumed.codex, |event| { diff --git a/codex-rs/core/tests/suite/models_cache_ttl.rs b/codex-rs/core/tests/suite/models_cache_ttl.rs index 7cf1d52e62..3b729738df 100644 --- a/codex-rs/core/tests/suite/models_cache_ttl.rs +++ b/codex-rs/core/tests/suite/models_cache_ttl.rs @@ -100,7 +100,7 @@ async fn renews_cache_ttl_on_matching_models_etag() -> Result<()> { environments: None, final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: codex_protocol::protocol::TurnContextOverrides { + thread_settings: codex_protocol::protocol::ThreadSettingsOverrides { cwd: Some(test.cwd_path().to_path_buf()), approval_policy: Some(codex_protocol::protocol::AskForApproval::Never), sandbox_policy: Some(sandbox_policy), diff --git a/codex-rs/core/tests/suite/models_etag_responses.rs b/codex-rs/core/tests/suite/models_etag_responses.rs index ece66cc496..49f34d8644 100644 --- a/codex-rs/core/tests/suite/models_etag_responses.rs +++ b/codex-rs/core/tests/suite/models_etag_responses.rs @@ -112,7 +112,7 @@ async fn refresh_models_on_models_etag_mismatch_and_avoid_duplicate_models_fetch environments: None, final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: codex_protocol::protocol::TurnContextOverrides { + thread_settings: codex_protocol::protocol::ThreadSettingsOverrides { cwd: Some(cwd_path), approval_policy: Some(AskForApproval::Never), sandbox_policy: Some(sandbox_policy), diff --git a/codex-rs/core/tests/suite/otel.rs b/codex-rs/core/tests/suite/otel.rs index 31477f0d3a..9d2df4e60e 100644 --- a/codex-rs/core/tests/suite/otel.rs +++ b/codex-rs/core/tests/suite/otel.rs @@ -122,7 +122,7 @@ async fn responses_api_emits_api_request_event() { }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await .unwrap(); @@ -168,7 +168,7 @@ async fn process_sse_emits_tracing_for_output_item() { }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await .unwrap(); @@ -214,7 +214,7 @@ async fn process_sse_emits_failed_event_on_parse_error() { }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await .unwrap(); @@ -261,7 +261,7 @@ async fn process_sse_records_failed_event_when_stream_closes_without_completed() }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await .unwrap(); @@ -328,7 +328,7 @@ async fn process_sse_failed_event_records_response_error_message() { }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await .unwrap(); @@ -393,7 +393,7 @@ async fn process_sse_failed_event_logs_parse_error() { }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await .unwrap(); @@ -445,7 +445,7 @@ async fn process_sse_failed_event_logs_missing_error() { }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await .unwrap(); @@ -506,7 +506,7 @@ async fn process_sse_failed_event_logs_response_completed_parse_error() { }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await .unwrap(); @@ -561,7 +561,7 @@ async fn process_sse_emits_completed_telemetry() { }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await .unwrap(); @@ -640,7 +640,7 @@ async fn turn_and_completed_response_spans_record_token_usage() { }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await .unwrap(); @@ -728,7 +728,7 @@ async fn handle_responses_span_records_response_kind_and_tool_name() { }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await .unwrap(); @@ -822,7 +822,7 @@ async fn record_responses_sets_span_fields_for_response_events() { }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await .unwrap(); @@ -911,7 +911,7 @@ async fn handle_response_item_records_tool_result_for_custom_tool_call() { }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await .unwrap(); @@ -987,7 +987,7 @@ async fn handle_response_item_records_tool_result_for_function_call() { }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await .unwrap(); @@ -1064,7 +1064,7 @@ async fn handle_response_item_records_tool_result_for_shell_command_call() { }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await .unwrap(); @@ -1173,7 +1173,7 @@ async fn handle_shell_command_autoapprove_from_config_records_tool_decision() { }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await .unwrap(); @@ -1228,7 +1228,7 @@ async fn handle_shell_command_user_approved_records_tool_decision() { }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await .unwrap(); @@ -1298,7 +1298,7 @@ async fn handle_shell_command_user_approved_for_session_records_tool_decision() }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await .unwrap(); @@ -1368,7 +1368,7 @@ async fn handle_sandbox_error_user_approves_retry_records_tool_decision() { }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await .unwrap(); @@ -1438,7 +1438,7 @@ async fn handle_shell_command_user_denies_records_tool_decision() { }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await .unwrap(); @@ -1508,7 +1508,7 @@ async fn handle_sandbox_error_user_approves_for_session_records_tool_decision() }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await .unwrap(); @@ -1579,7 +1579,7 @@ async fn handle_sandbox_error_user_denies_records_tool_decision() { }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await .unwrap(); diff --git a/codex-rs/core/tests/suite/override_updates.rs b/codex-rs/core/tests/suite/override_updates.rs index b3cec800ab..07c10c9c5f 100644 --- a/codex-rs/core/tests/suite/override_updates.rs +++ b/codex-rs/core/tests/suite/override_updates.rs @@ -34,7 +34,7 @@ async fn turn_context_update_without_user_turn_does_not_record_permissions_updat let test = builder.build(&server).await?; test.codex - .update_turn_context_overrides(codex_core::CodexThreadTurnContextOverrides { + .update_thread_settings_overrides(codex_core::CodexThreadSettingsOverrides { approval_policy: Some(AskForApproval::Never), ..Default::default() }) @@ -61,7 +61,7 @@ async fn turn_context_update_without_user_turn_does_not_record_environment_updat let new_cwd = TempDir::new()?; test.codex - .update_turn_context_overrides(codex_core::CodexThreadTurnContextOverrides { + .update_thread_settings_overrides(codex_core::CodexThreadSettingsOverrides { cwd: Some(new_cwd.path().to_path_buf()), ..Default::default() }) @@ -90,7 +90,7 @@ async fn turn_context_update_without_user_turn_does_not_record_collaboration_upd let collaboration_mode = collab_mode_with_instructions(Some(collab_text)); test.codex - .update_turn_context_overrides(codex_core::CodexThreadTurnContextOverrides { + .update_thread_settings_overrides(codex_core::CodexThreadSettingsOverrides { collaboration_mode: Some(collaboration_mode), ..Default::default() }) diff --git a/codex-rs/core/tests/suite/pending_input.rs b/codex-rs/core/tests/suite/pending_input.rs index 0ecc9c784b..b057b86171 100644 --- a/codex-rs/core/tests/suite/pending_input.rs +++ b/codex-rs/core/tests/suite/pending_input.rs @@ -103,7 +103,7 @@ async fn submit_user_input(codex: &CodexThread, text: &str) { }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await .unwrap_or_else(|err| panic!("submit user input: {err}")); @@ -121,7 +121,7 @@ async fn submit_danger_full_access_user_turn(test: &TestCodex, text: &str) { environments: None, final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: codex_protocol::protocol::TurnContextOverrides { + thread_settings: codex_protocol::protocol::ThreadSettingsOverrides { cwd: Some(test.config.cwd.to_path_buf()), approval_policy: Some(AskForApproval::Never), sandbox_policy: Some(sandbox_policy), @@ -291,7 +291,7 @@ async fn injected_user_input_triggers_follow_up_request_with_deltas() { }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await .unwrap(); @@ -310,7 +310,7 @@ async fn injected_user_input_triggers_follow_up_request_with_deltas() { }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await .unwrap(); diff --git a/codex-rs/core/tests/suite/permissions_messages.rs b/codex-rs/core/tests/suite/permissions_messages.rs index 94b983be51..e6b6dc7599 100644 --- a/codex-rs/core/tests/suite/permissions_messages.rs +++ b/codex-rs/core/tests/suite/permissions_messages.rs @@ -58,7 +58,7 @@ async fn permissions_message_sent_once_on_start() -> Result<()> { }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await?; wait_for_event(&test.codex, |ev| matches!(ev, EventMsg::TurnComplete(_))).await; @@ -98,13 +98,13 @@ async fn permissions_message_added_on_override_change() -> Result<()> { }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await?; wait_for_event(&test.codex, |ev| matches!(ev, EventMsg::TurnComplete(_))).await; test.codex - .update_turn_context_overrides(codex_core::CodexThreadTurnContextOverrides { + .update_thread_settings_overrides(codex_core::CodexThreadSettingsOverrides { approval_policy: Some(AskForApproval::Never), ..Default::default() }) @@ -119,7 +119,7 @@ async fn permissions_message_added_on_override_change() -> Result<()> { }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await?; wait_for_event(&test.codex, |ev| matches!(ev, EventMsg::TurnComplete(_))).await; @@ -165,7 +165,7 @@ async fn permissions_message_not_added_when_no_change() -> Result<()> { }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await?; wait_for_event(&test.codex, |ev| matches!(ev, EventMsg::TurnComplete(_))).await; @@ -179,7 +179,7 @@ async fn permissions_message_not_added_when_no_change() -> Result<()> { }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await?; wait_for_event(&test.codex, |ev| matches!(ev, EventMsg::TurnComplete(_))).await; @@ -225,13 +225,13 @@ async fn permissions_message_omitted_when_disabled() -> Result<()> { }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await?; wait_for_event(&test.codex, |ev| matches!(ev, EventMsg::TurnComplete(_))).await; test.codex - .update_turn_context_overrides(codex_core::CodexThreadTurnContextOverrides { + .update_thread_settings_overrides(codex_core::CodexThreadSettingsOverrides { approval_policy: Some(AskForApproval::Never), ..Default::default() }) @@ -246,7 +246,7 @@ async fn permissions_message_omitted_when_disabled() -> Result<()> { }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await?; wait_for_event(&test.codex, |ev| matches!(ev, EventMsg::TurnComplete(_))).await; @@ -305,14 +305,14 @@ async fn resume_replays_permissions_messages() -> Result<()> { }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await?; wait_for_event(&initial.codex, |ev| matches!(ev, EventMsg::TurnComplete(_))).await; initial .codex - .update_turn_context_overrides(codex_core::CodexThreadTurnContextOverrides { + .update_thread_settings_overrides(codex_core::CodexThreadSettingsOverrides { approval_policy: Some(AskForApproval::Never), ..Default::default() }) @@ -328,7 +328,7 @@ async fn resume_replays_permissions_messages() -> Result<()> { }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await?; wait_for_event(&initial.codex, |ev| matches!(ev, EventMsg::TurnComplete(_))).await; @@ -344,7 +344,7 @@ async fn resume_replays_permissions_messages() -> Result<()> { }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await?; wait_for_event(&resumed.codex, |ev| matches!(ev, EventMsg::TurnComplete(_))).await; @@ -404,14 +404,14 @@ async fn resume_and_fork_append_permissions_messages() -> Result<()> { }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await?; wait_for_event(&initial.codex, |ev| matches!(ev, EventMsg::TurnComplete(_))).await; initial .codex - .update_turn_context_overrides(codex_core::CodexThreadTurnContextOverrides { + .update_thread_settings_overrides(codex_core::CodexThreadSettingsOverrides { approval_policy: Some(AskForApproval::Never), ..Default::default() }) @@ -427,7 +427,7 @@ async fn resume_and_fork_append_permissions_messages() -> Result<()> { }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await?; wait_for_event(&initial.codex, |ev| matches!(ev, EventMsg::TurnComplete(_))).await; @@ -449,7 +449,7 @@ async fn resume_and_fork_append_permissions_messages() -> Result<()> { }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await?; wait_for_event(&resumed.codex, |ev| matches!(ev, EventMsg::TurnComplete(_))).await; @@ -485,7 +485,7 @@ async fn resume_and_fork_append_permissions_messages() -> Result<()> { }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await?; wait_for_event(&forked.thread, |ev| matches!(ev, EventMsg::TurnComplete(_))).await; @@ -546,7 +546,7 @@ async fn permissions_message_includes_writable_roots() -> Result<()> { }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await?; wait_for_event(&test.codex, |ev| matches!(ev, EventMsg::TurnComplete(_))).await; diff --git a/codex-rs/core/tests/suite/personality.rs b/codex-rs/core/tests/suite/personality.rs index 187334f352..66797a8866 100644 --- a/codex-rs/core/tests/suite/personality.rs +++ b/codex-rs/core/tests/suite/personality.rs @@ -68,7 +68,7 @@ fn read_only_text_turn_with_personality( environments: None, final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: codex_protocol::protocol::TurnContextOverrides { + thread_settings: codex_protocol::protocol::ThreadSettingsOverrides { cwd: Some(test.cwd_path().to_path_buf()), approval_policy: Some(approval_policy), sandbox_policy: Some(sandbox_policy), @@ -334,7 +334,7 @@ async fn user_turn_personality_some_adds_update_message() -> anyhow::Result<()> wait_for_event(&test.codex, |ev| matches!(ev, EventMsg::TurnComplete(_))).await; test.codex - .update_turn_context_overrides(codex_core::CodexThreadTurnContextOverrides { + .update_thread_settings_overrides(codex_core::CodexThreadSettingsOverrides { personality: Some(Personality::Friendly), ..Default::default() }) @@ -408,7 +408,7 @@ async fn user_turn_personality_same_value_does_not_add_update_message() -> anyho wait_for_event(&test.codex, |ev| matches!(ev, EventMsg::TurnComplete(_))).await; test.codex - .update_turn_context_overrides(codex_core::CodexThreadTurnContextOverrides { + .update_thread_settings_overrides(codex_core::CodexThreadSettingsOverrides { personality: Some(Personality::Pragmatic), ..Default::default() }) @@ -495,7 +495,7 @@ async fn user_turn_personality_skips_if_feature_disabled() -> anyhow::Result<()> wait_for_event(&test.codex, |ev| matches!(ev, EventMsg::TurnComplete(_))).await; test.codex - .update_turn_context_overrides(codex_core::CodexThreadTurnContextOverrides { + .update_thread_settings_overrides(codex_core::CodexThreadSettingsOverrides { personality: Some(Personality::Pragmatic), ..Default::default() }) @@ -734,7 +734,7 @@ async fn user_turn_personality_remote_model_template_includes_update_message() - wait_for_event(&test.codex, |ev| matches!(ev, EventMsg::TurnComplete(_))).await; test.codex - .update_turn_context_overrides(codex_core::CodexThreadTurnContextOverrides { + .update_thread_settings_overrides(codex_core::CodexThreadSettingsOverrides { personality: Some(Personality::Friendly), ..Default::default() }) diff --git a/codex-rs/core/tests/suite/plugins.rs b/codex-rs/core/tests/suite/plugins.rs index f2b9cfeba9..45fdf3df07 100644 --- a/codex-rs/core/tests/suite/plugins.rs +++ b/codex-rs/core/tests/suite/plugins.rs @@ -227,7 +227,7 @@ async fn capability_sections_render_in_developer_message_in_order() -> Result<() }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await?; @@ -306,7 +306,7 @@ async fn explicit_plugin_mentions_inject_plugin_guidance() -> Result<()> { }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await?; wait_for_event(&codex, |ev| matches!(ev, EventMsg::TurnComplete(_))).await; @@ -388,7 +388,7 @@ async fn explicit_plugin_mentions_track_plugin_used_analytics() -> Result<()> { }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await?; wait_for_event(&codex, |ev| matches!(ev, EventMsg::TurnComplete(_))).await; diff --git a/codex-rs/core/tests/suite/prompt_caching.rs b/codex-rs/core/tests/suite/prompt_caching.rs index 608bcb74b1..cfbe7a8922 100644 --- a/codex-rs/core/tests/suite/prompt_caching.rs +++ b/codex-rs/core/tests/suite/prompt_caching.rs @@ -153,7 +153,7 @@ async fn prompt_tools_are_consistent_across_requests() -> anyhow::Result<()> { }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await?; wait_for_event(&codex, |ev| matches!(ev, EventMsg::TurnComplete(_))).await; @@ -167,7 +167,7 @@ async fn prompt_tools_are_consistent_across_requests() -> anyhow::Result<()> { }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await?; wait_for_event(&codex, |ev| matches!(ev, EventMsg::TurnComplete(_))).await; @@ -251,7 +251,7 @@ async fn gpt_5_tools_without_apply_patch_append_apply_patch_instructions() -> an }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await?; @@ -265,7 +265,7 @@ async fn gpt_5_tools_without_apply_patch_append_apply_patch_instructions() -> an }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await?; @@ -330,7 +330,7 @@ async fn prefixes_context_and_instructions_once_and_consistently_across_requests }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await?; wait_for_event(&codex, |ev| matches!(ev, EventMsg::TurnComplete(_))).await; @@ -344,7 +344,7 @@ async fn prefixes_context_and_instructions_once_and_consistently_across_requests }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await?; wait_for_event(&codex, |ev| matches!(ev, EventMsg::TurnComplete(_))).await; @@ -427,7 +427,7 @@ async fn overrides_turn_context_but_keeps_cached_prefix_and_key_constant() -> an }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await?; wait_for_event(&codex, |ev| matches!(ev, EventMsg::TurnComplete(_))).await; @@ -443,7 +443,7 @@ async fn overrides_turn_context_but_keeps_cached_prefix_and_key_constant() -> an .to_legacy_sandbox_policy(config.cwd.as_path()) .expect("workspace profile should have legacy projection"); codex - .update_turn_context_overrides(codex_core::CodexThreadTurnContextOverrides { + .update_thread_settings_overrides(codex_core::CodexThreadSettingsOverrides { approval_policy: Some(AskForApproval::Never), sandbox_policy: Some(sandbox_policy), permission_profile: Some(permission_profile), @@ -463,7 +463,7 @@ async fn overrides_turn_context_but_keeps_cached_prefix_and_key_constant() -> an }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await?; wait_for_event(&codex, |ev| matches!(ev, EventMsg::TurnComplete(_))).await; @@ -487,7 +487,7 @@ async fn overrides_turn_context_but_keeps_cached_prefix_and_key_constant() -> an }); let expected_permissions_msg = body1["input"][0].clone(); let body1_input = body1["input"].as_array().expect("input array"); - // After overriding the turn context, emit one updated permissions message. + // After overriding thread settings, emit one updated permissions message. let expected_permissions_msg_2 = body2["input"][body1_input.len()].clone(); assert_ne!( expected_permissions_msg_2, expected_permissions_msg, @@ -524,7 +524,7 @@ async fn override_before_first_turn_emits_environment_context() -> anyhow::Resul }; codex - .update_turn_context_overrides(codex_core::CodexThreadTurnContextOverrides { + .update_thread_settings_overrides(codex_core::CodexThreadSettingsOverrides { approval_policy: Some(AskForApproval::Never), model: Some("gpt-5.4".to_string()), effort: Some(Some(ReasoningEffort::Low)), @@ -542,7 +542,7 @@ async fn override_before_first_turn_emits_environment_context() -> anyhow::Resul }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await?; @@ -696,7 +696,7 @@ async fn per_turn_overrides_keep_cached_prefix_and_key_constant() -> anyhow::Res }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await?; wait_for_event(&codex, |ev| matches!(ev, EventMsg::TurnComplete(_))).await; @@ -721,7 +721,7 @@ async fn per_turn_overrides_keep_cached_prefix_and_key_constant() -> anyhow::Res environments: None, final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: codex_protocol::protocol::TurnContextOverrides { + thread_settings: codex_protocol::protocol::ThreadSettingsOverrides { cwd: Some(new_cwd.path().to_path_buf()), approval_policy: Some(AskForApproval::Never), sandbox_policy: Some(sandbox_policy), @@ -841,7 +841,7 @@ async fn send_user_turn_with_no_changes_does_not_send_environment_context() -> a environments: None, final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: codex_protocol::protocol::TurnContextOverrides { + thread_settings: codex_protocol::protocol::ThreadSettingsOverrides { cwd: Some(default_cwd.to_path_buf()), approval_policy: Some(default_approval_policy), sandbox_policy: Some(default_sandbox_policy.clone()), @@ -869,7 +869,7 @@ async fn send_user_turn_with_no_changes_does_not_send_environment_context() -> a environments: None, final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: codex_protocol::protocol::TurnContextOverrides { + thread_settings: codex_protocol::protocol::ThreadSettingsOverrides { cwd: Some(default_cwd.to_path_buf()), approval_policy: Some(default_approval_policy), sandbox_policy: Some(default_sandbox_policy.clone()), @@ -980,7 +980,7 @@ async fn send_user_turn_with_changes_sends_environment_context() -> anyhow::Resu environments: None, final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: codex_protocol::protocol::TurnContextOverrides { + thread_settings: codex_protocol::protocol::ThreadSettingsOverrides { cwd: Some(default_cwd.to_path_buf()), approval_policy: Some(default_approval_policy), sandbox_policy: Some(default_sandbox_policy.clone()), @@ -1010,7 +1010,7 @@ async fn send_user_turn_with_changes_sends_environment_context() -> anyhow::Resu environments: None, final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: codex_protocol::protocol::TurnContextOverrides { + thread_settings: codex_protocol::protocol::ThreadSettingsOverrides { cwd: Some(default_cwd.to_path_buf()), approval_policy: Some(AskForApproval::Never), sandbox_policy: Some(sandbox_policy), diff --git a/codex-rs/core/tests/suite/quota_exceeded.rs b/codex-rs/core/tests/suite/quota_exceeded.rs index d93fc6c956..413855f641 100644 --- a/codex-rs/core/tests/suite/quota_exceeded.rs +++ b/codex-rs/core/tests/suite/quota_exceeded.rs @@ -48,7 +48,7 @@ async fn quota_exceeded_emits_single_error_event() -> Result<()> { }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await .unwrap(); diff --git a/codex-rs/core/tests/suite/realtime_conversation.rs b/codex-rs/core/tests/suite/realtime_conversation.rs index 39ae60f411..232d2380b0 100644 --- a/codex-rs/core/tests/suite/realtime_conversation.rs +++ b/codex-rs/core/tests/suite/realtime_conversation.rs @@ -2168,7 +2168,7 @@ async fn conversation_user_text_turn_is_sent_to_realtime_when_active() -> Result }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await?; @@ -2303,7 +2303,7 @@ async fn conversation_user_text_turn_is_capped_when_mirrored_to_realtime() -> Re }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await?; @@ -3499,7 +3499,7 @@ async fn inbound_handoff_request_steers_active_turn() -> Result<()> { }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await?; diff --git a/codex-rs/core/tests/suite/remote_env.rs b/codex-rs/core/tests/suite/remote_env.rs index 37f381946b..873796ff6c 100644 --- a/codex-rs/core/tests/suite/remote_env.rs +++ b/codex-rs/core/tests/suite/remote_env.rs @@ -75,7 +75,7 @@ async fn submit_turn_with_approval_and_environments( environments: Some(environments), final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: codex_protocol::protocol::TurnContextOverrides { + thread_settings: codex_protocol::protocol::ThreadSettingsOverrides { cwd: Some(test.cwd.path().to_path_buf()), approval_policy: Some(AskForApproval::OnRequest), approvals_reviewer: Some(ApprovalsReviewer::User), diff --git a/codex-rs/core/tests/suite/remote_models.rs b/codex-rs/core/tests/suite/remote_models.rs index 8ec5c51e49..442746e317 100644 --- a/codex-rs/core/tests/suite/remote_models.rs +++ b/codex-rs/core/tests/suite/remote_models.rs @@ -162,7 +162,7 @@ async fn remote_models_config_context_window_override_clamps_to_max_context_wind environments: None, final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: codex_protocol::protocol::TurnContextOverrides { + thread_settings: codex_protocol::protocol::ThreadSettingsOverrides { cwd: Some(cwd.path().to_path_buf()), approval_policy: Some(config.permissions.approval_policy.value()), sandbox_policy: Some(config.legacy_sandbox_policy()), @@ -244,7 +244,7 @@ async fn remote_models_config_override_above_max_uses_max_context_window() -> Re environments: None, final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: codex_protocol::protocol::TurnContextOverrides { + thread_settings: codex_protocol::protocol::ThreadSettingsOverrides { cwd: Some(cwd.path().to_path_buf()), approval_policy: Some(config.permissions.approval_policy.value()), sandbox_policy: Some(config.legacy_sandbox_policy()), @@ -325,7 +325,7 @@ async fn remote_models_use_context_window_when_config_override_is_absent() -> Re environments: None, final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: codex_protocol::protocol::TurnContextOverrides { + thread_settings: codex_protocol::protocol::ThreadSettingsOverrides { cwd: Some(cwd.path().to_path_buf()), approval_policy: Some(config.permissions.approval_policy.value()), sandbox_policy: Some(config.legacy_sandbox_policy()), @@ -419,7 +419,7 @@ async fn remote_models_long_model_slug_is_sent_with_high_reasoning() -> Result<( environments: None, final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: codex_protocol::protocol::TurnContextOverrides { + thread_settings: codex_protocol::protocol::ThreadSettingsOverrides { cwd: Some(cwd.path().to_path_buf()), approval_policy: Some(config.permissions.approval_policy.value()), sandbox_policy: Some(config.legacy_sandbox_policy()), @@ -484,7 +484,7 @@ async fn namespaced_model_slug_uses_catalog_metadata_without_fallback_warning() environments: None, final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: codex_protocol::protocol::TurnContextOverrides { + thread_settings: codex_protocol::protocol::ThreadSettingsOverrides { cwd: Some(cwd.path().to_path_buf()), approval_policy: Some(config.permissions.approval_policy.value()), sandbox_policy: Some(config.legacy_sandbox_policy()), @@ -615,7 +615,7 @@ async fn remote_models_remote_model_uses_unified_exec() -> Result<()> { assert_eq!(model_info.shell_type, ConfigShellToolType::UnifiedExec); codex - .update_turn_context_overrides(codex_core::CodexThreadTurnContextOverrides { + .update_thread_settings_overrides(codex_core::CodexThreadSettingsOverrides { model: Some(REMOTE_MODEL_SLUG.to_string()), ..Default::default() }) @@ -652,7 +652,7 @@ async fn remote_models_remote_model_uses_unified_exec() -> Result<()> { environments: None, final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: codex_protocol::protocol::TurnContextOverrides { + thread_settings: codex_protocol::protocol::ThreadSettingsOverrides { cwd: Some(cwd_path), approval_policy: Some(AskForApproval::Never), sandbox_policy: Some(sandbox_policy), @@ -862,7 +862,7 @@ async fn remote_models_apply_remote_base_instructions() -> Result<()> { wait_for_model_available(&models_manager, model).await; codex - .update_turn_context_overrides(codex_core::CodexThreadTurnContextOverrides { + .update_thread_settings_overrides(codex_core::CodexThreadSettingsOverrides { model: Some(model.to_string()), ..Default::default() }) @@ -880,7 +880,7 @@ async fn remote_models_apply_remote_base_instructions() -> Result<()> { environments: None, final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: codex_protocol::protocol::TurnContextOverrides { + thread_settings: codex_protocol::protocol::ThreadSettingsOverrides { cwd: Some(cwd_path), approval_policy: Some(AskForApproval::Never), sandbox_policy: Some(sandbox_policy), diff --git a/codex-rs/core/tests/suite/request_compression.rs b/codex-rs/core/tests/suite/request_compression.rs index f86b7ffafb..2d66389d53 100644 --- a/codex-rs/core/tests/suite/request_compression.rs +++ b/codex-rs/core/tests/suite/request_compression.rs @@ -47,7 +47,7 @@ async fn request_body_is_zstd_compressed_for_codex_backend_when_enabled() -> any }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await?; @@ -97,7 +97,7 @@ async fn request_body_is_not_compressed_for_api_key_auth_even_when_enabled() -> }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await?; diff --git a/codex-rs/core/tests/suite/request_permissions.rs b/codex-rs/core/tests/suite/request_permissions.rs index a7f475940b..90e28c8a0c 100644 --- a/codex-rs/core/tests/suite/request_permissions.rs +++ b/codex-rs/core/tests/suite/request_permissions.rs @@ -196,7 +196,7 @@ async fn submit_turn( environments: None, final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: codex_protocol::protocol::TurnContextOverrides { + thread_settings: codex_protocol::protocol::ThreadSettingsOverrides { cwd: Some(test.cwd.path().to_path_buf()), approval_policy: Some(approval_policy), approvals_reviewer: Some(ApprovalsReviewer::User), diff --git a/codex-rs/core/tests/suite/request_permissions_tool.rs b/codex-rs/core/tests/suite/request_permissions_tool.rs index 2b47890135..84e101e73a 100644 --- a/codex-rs/core/tests/suite/request_permissions_tool.rs +++ b/codex-rs/core/tests/suite/request_permissions_tool.rs @@ -150,7 +150,7 @@ async fn submit_turn( environments: None, final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: codex_protocol::protocol::TurnContextOverrides { + thread_settings: codex_protocol::protocol::ThreadSettingsOverrides { cwd: Some(test.cwd.path().to_path_buf()), approval_policy: Some(approval_policy), approvals_reviewer, diff --git a/codex-rs/core/tests/suite/request_user_input.rs b/codex-rs/core/tests/suite/request_user_input.rs index 91a8cd16f9..e0ec684797 100644 --- a/codex-rs/core/tests/suite/request_user_input.rs +++ b/codex-rs/core/tests/suite/request_user_input.rs @@ -144,7 +144,7 @@ async fn request_user_input_round_trip_for_mode(mode: ModeKind) -> anyhow::Resul environments: None, final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: codex_protocol::protocol::TurnContextOverrides { + thread_settings: codex_protocol::protocol::ThreadSettingsOverrides { cwd: Some(cwd.path().to_path_buf()), approval_policy: Some(AskForApproval::Never), sandbox_policy: Some(sandbox_policy), @@ -287,7 +287,7 @@ async fn request_user_input_interrupt_emits_deferred_token_count() -> anyhow::Re environments: None, final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: codex_protocol::protocol::TurnContextOverrides { + thread_settings: codex_protocol::protocol::ThreadSettingsOverrides { cwd: Some(cwd.path().to_path_buf()), approval_policy: Some(AskForApproval::Never), sandbox_policy: Some(sandbox_policy), @@ -391,7 +391,7 @@ where environments: None, final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: codex_protocol::protocol::TurnContextOverrides { + thread_settings: codex_protocol::protocol::ThreadSettingsOverrides { cwd: Some(cwd.path().to_path_buf()), approval_policy: Some(AskForApproval::Never), sandbox_policy: Some(sandbox_policy), diff --git a/codex-rs/core/tests/suite/responses_api_proxy_headers.rs b/codex-rs/core/tests/suite/responses_api_proxy_headers.rs index 9f5b649dad..f396a825a1 100644 --- a/codex-rs/core/tests/suite/responses_api_proxy_headers.rs +++ b/codex-rs/core/tests/suite/responses_api_proxy_headers.rs @@ -138,7 +138,7 @@ async fn submit_turn_with_timeout(test: &TestCodex, prompt: &str) -> Result<()> environments: None, final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: codex_protocol::protocol::TurnContextOverrides { + thread_settings: codex_protocol::protocol::ThreadSettingsOverrides { cwd: Some(cwd), approval_policy: Some(AskForApproval::OnRequest), sandbox_policy: Some(sandbox_policy), diff --git a/codex-rs/core/tests/suite/resume.rs b/codex-rs/core/tests/suite/resume.rs index fc5a82d5b8..9458865bc4 100644 --- a/codex-rs/core/tests/suite/resume.rs +++ b/codex-rs/core/tests/suite/resume.rs @@ -93,7 +93,7 @@ async fn resume_includes_initial_messages_from_rollout_events() -> Result<()> { }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await?; @@ -179,7 +179,7 @@ async fn resume_includes_initial_messages_from_reasoning_events() -> Result<()> }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await?; @@ -269,7 +269,7 @@ async fn resume_switches_models_preserves_base_instructions() -> Result<()> { }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await?; wait_for_event(&codex, |event| matches!(event, EventMsg::TurnComplete(_))).await; @@ -312,7 +312,7 @@ async fn resume_switches_models_preserves_base_instructions() -> Result<()> { }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await?; wait_for_event(&resumed.codex, |event| { @@ -330,7 +330,7 @@ async fn resume_switches_models_preserves_base_instructions() -> Result<()> { }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await?; wait_for_event(&resumed.codex, |event| { @@ -403,7 +403,7 @@ async fn resume_model_switch_is_not_duplicated_after_pre_turn_override() -> Resu }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await?; wait_for_event(&codex, |event| matches!(event, EventMsg::TurnComplete(_))).await; @@ -425,7 +425,7 @@ async fn resume_model_switch_is_not_duplicated_after_pre_turn_override() -> Resu let resumed = resume_builder.resume(&server, home, rollout_path).await?; resumed .codex - .update_turn_context_overrides(codex_core::CodexThreadTurnContextOverrides { + .update_thread_settings_overrides(codex_core::CodexThreadSettingsOverrides { model: Some("gpt-5.4".to_string()), ..Default::default() }) @@ -440,7 +440,7 @@ async fn resume_model_switch_is_not_duplicated_after_pre_turn_override() -> Resu }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await?; wait_for_event(&resumed.codex, |event| { diff --git a/codex-rs/core/tests/suite/review.rs b/codex-rs/core/tests/suite/review.rs index 55e1d1dc61..22999e29ef 100644 --- a/codex-rs/core/tests/suite/review.rs +++ b/codex-rs/core/tests/suite/review.rs @@ -684,7 +684,7 @@ async fn review_history_surfaces_in_parent_session() { }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await .unwrap(); @@ -790,7 +790,7 @@ async fn review_uses_overridden_cwd_for_base_branch_merge_base() { .await; codex - .update_turn_context_overrides(codex_core::CodexThreadTurnContextOverrides { + .update_thread_settings_overrides(codex_core::CodexThreadSettingsOverrides { cwd: Some(repo_path.to_path_buf()), ..Default::default() }) diff --git a/codex-rs/core/tests/suite/rmcp_client.rs b/codex-rs/core/tests/suite/rmcp_client.rs index 56b00d0c87..7c811a88e0 100644 --- a/codex-rs/core/tests/suite/rmcp_client.rs +++ b/codex-rs/core/tests/suite/rmcp_client.rs @@ -113,7 +113,7 @@ fn read_only_user_turn_with_model( environments: None, final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: codex_protocol::protocol::TurnContextOverrides { + thread_settings: codex_protocol::protocol::ThreadSettingsOverrides { cwd: Some(cwd), approval_policy: Some(AskForApproval::Never), sandbox_policy: Some(sandbox_policy), diff --git a/codex-rs/core/tests/suite/safety_check_downgrade.rs b/codex-rs/core/tests/suite/safety_check_downgrade.rs index db782654a0..ab985ce0f7 100644 --- a/codex-rs/core/tests/suite/safety_check_downgrade.rs +++ b/codex-rs/core/tests/suite/safety_check_downgrade.rs @@ -45,7 +45,7 @@ fn disabled_text_turn(test: &TestCodex, text: &str) -> Op { environments: None, final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: codex_protocol::protocol::TurnContextOverrides { + thread_settings: codex_protocol::protocol::ThreadSettingsOverrides { cwd: Some(test.cwd_path().to_path_buf()), approval_policy: Some(AskForApproval::Never), sandbox_policy: Some(sandbox_policy), diff --git a/codex-rs/core/tests/suite/search_tool.rs b/codex-rs/core/tests/suite/search_tool.rs index 6c0d3ce17b..5b86c6ee7d 100644 --- a/codex-rs/core/tests/suite/search_tool.rs +++ b/codex-rs/core/tests/suite/search_tool.rs @@ -494,7 +494,7 @@ async fn tool_search_returns_deferred_tools_without_follow_up_tool_injection() - }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await?; @@ -805,7 +805,7 @@ async fn tool_search_returns_deferred_dynamic_tool_and_routes_follow_up_call() - }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await?; @@ -1113,7 +1113,7 @@ async fn tool_search_surfaced_mcp_tool_errors_are_returned_to_model() -> Result< }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await?; @@ -1433,7 +1433,7 @@ async fn tool_search_matches_dynamic_tools_by_name_description_namespace_and_sch }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await?; diff --git a/codex-rs/core/tests/suite/shell_snapshot.rs b/codex-rs/core/tests/suite/shell_snapshot.rs index 17b29ca331..14241ffafb 100644 --- a/codex-rs/core/tests/suite/shell_snapshot.rs +++ b/codex-rs/core/tests/suite/shell_snapshot.rs @@ -167,7 +167,7 @@ async fn run_snapshot_command_with_options( environments: None, final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: codex_protocol::protocol::TurnContextOverrides { + thread_settings: codex_protocol::protocol::ThreadSettingsOverrides { cwd: Some(cwd), approval_policy: Some(AskForApproval::Never), sandbox_policy: Some(sandbox_policy), @@ -267,7 +267,7 @@ async fn run_shell_command_snapshot_with_options( environments: None, final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: codex_protocol::protocol::TurnContextOverrides { + thread_settings: codex_protocol::protocol::ThreadSettingsOverrides { cwd: Some(cwd), approval_policy: Some(AskForApproval::Never), sandbox_policy: Some(sandbox_policy), @@ -347,7 +347,7 @@ async fn run_tool_turn_on_harness( environments: None, final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: codex_protocol::protocol::TurnContextOverrides { + thread_settings: codex_protocol::protocol::ThreadSettingsOverrides { cwd: Some(cwd), approval_policy: Some(AskForApproval::Never), sandbox_policy: Some(sandbox_policy), @@ -590,7 +590,7 @@ async fn shell_command_snapshot_still_intercepts_apply_patch() -> Result<()> { environments: None, final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: codex_protocol::protocol::TurnContextOverrides { + thread_settings: codex_protocol::protocol::ThreadSettingsOverrides { cwd: Some(cwd.clone()), approval_policy: Some(AskForApproval::Never), sandbox_policy: Some(sandbox_policy), diff --git a/codex-rs/core/tests/suite/skill_approval.rs b/codex-rs/core/tests/suite/skill_approval.rs index 66747a1f05..ad8ad6a91a 100644 --- a/codex-rs/core/tests/suite/skill_approval.rs +++ b/codex-rs/core/tests/suite/skill_approval.rs @@ -54,7 +54,7 @@ async fn submit_turn_with_policies( environments: None, final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: codex_protocol::protocol::TurnContextOverrides { + thread_settings: codex_protocol::protocol::ThreadSettingsOverrides { cwd: Some(test.cwd_path().to_path_buf()), approval_policy: Some(approval_policy), sandbox_policy: Some(sandbox_policy), diff --git a/codex-rs/core/tests/suite/skills.rs b/codex-rs/core/tests/suite/skills.rs index e984ecd9a6..9173f60c4a 100644 --- a/codex-rs/core/tests/suite/skills.rs +++ b/codex-rs/core/tests/suite/skills.rs @@ -88,7 +88,7 @@ async fn user_turn_includes_skill_instructions() -> Result<()> { environments: None, final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: codex_protocol::protocol::TurnContextOverrides { + thread_settings: codex_protocol::protocol::ThreadSettingsOverrides { cwd: Some(test.config.cwd.to_path_buf()), approval_policy: Some(AskForApproval::Never), sandbox_policy: Some(sandbox_policy), diff --git a/codex-rs/core/tests/suite/sqlite_state.rs b/codex-rs/core/tests/suite/sqlite_state.rs index 932fce8377..f576e55a3d 100644 --- a/codex-rs/core/tests/suite/sqlite_state.rs +++ b/codex-rs/core/tests/suite/sqlite_state.rs @@ -413,7 +413,7 @@ async fn mcp_call_marks_thread_memory_mode_polluted_when_configured() -> Result< environments: None, final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: codex_protocol::protocol::TurnContextOverrides { + thread_settings: codex_protocol::protocol::ThreadSettingsOverrides { cwd: Some(cwd), approval_policy: Some(AskForApproval::Never), sandbox_policy: Some(sandbox_policy), diff --git a/codex-rs/core/tests/suite/stream_error_allows_next_turn.rs b/codex-rs/core/tests/suite/stream_error_allows_next_turn.rs index 673fc63526..5709cdd12b 100644 --- a/codex-rs/core/tests/suite/stream_error_allows_next_turn.rs +++ b/codex-rs/core/tests/suite/stream_error_allows_next_turn.rs @@ -101,7 +101,7 @@ async fn continue_after_stream_error() { }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await .unwrap(); @@ -123,7 +123,7 @@ async fn continue_after_stream_error() { }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await .unwrap(); diff --git a/codex-rs/core/tests/suite/stream_no_completed.rs b/codex-rs/core/tests/suite/stream_no_completed.rs index 841851562c..40763960f4 100644 --- a/codex-rs/core/tests/suite/stream_no_completed.rs +++ b/codex-rs/core/tests/suite/stream_no_completed.rs @@ -83,7 +83,7 @@ async fn retries_on_early_close() { }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await .unwrap(); diff --git a/codex-rs/core/tests/suite/tool_harness.rs b/codex-rs/core/tests/suite/tool_harness.rs index fe543efff9..2227e5b34e 100644 --- a/codex-rs/core/tests/suite/tool_harness.rs +++ b/codex-rs/core/tests/suite/tool_harness.rs @@ -110,7 +110,7 @@ async fn shell_command_tool_executes_command_and_streams_output() -> anyhow::Res environments: None, final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: codex_protocol::protocol::TurnContextOverrides { + thread_settings: codex_protocol::protocol::ThreadSettingsOverrides { cwd: Some(cwd_path), approval_policy: Some(AskForApproval::Never), sandbox_policy: Some(sandbox_policy), @@ -191,7 +191,7 @@ async fn update_plan_tool_emits_plan_update_event() -> anyhow::Result<()> { environments: None, final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: codex_protocol::protocol::TurnContextOverrides { + thread_settings: codex_protocol::protocol::ThreadSettingsOverrides { cwd: Some(cwd_path), approval_policy: Some(AskForApproval::Never), sandbox_policy: Some(sandbox_policy), @@ -282,7 +282,7 @@ async fn update_plan_tool_rejects_malformed_payload() -> anyhow::Result<()> { environments: None, final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: codex_protocol::protocol::TurnContextOverrides { + thread_settings: codex_protocol::protocol::ThreadSettingsOverrides { cwd: Some(cwd_path), approval_policy: Some(AskForApproval::Never), sandbox_policy: Some(sandbox_policy), @@ -383,7 +383,7 @@ async fn apply_patch_tool_executes_and_emits_patch_events() -> anyhow::Result<() environments: None, final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: codex_protocol::protocol::TurnContextOverrides { + thread_settings: codex_protocol::protocol::ThreadSettingsOverrides { cwd: Some(cwd_path), approval_policy: Some(AskForApproval::Never), sandbox_policy: Some(sandbox_policy), @@ -521,7 +521,7 @@ async fn apply_patch_reports_parse_diagnostics() -> anyhow::Result<()> { environments: None, final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: codex_protocol::protocol::TurnContextOverrides { + thread_settings: codex_protocol::protocol::ThreadSettingsOverrides { cwd: Some(cwd_path), approval_policy: Some(AskForApproval::Never), sandbox_policy: Some(sandbox_policy), diff --git a/codex-rs/core/tests/suite/tool_parallelism.rs b/codex-rs/core/tests/suite/tool_parallelism.rs index 6d3c85caf2..6663991e02 100644 --- a/codex-rs/core/tests/suite/tool_parallelism.rs +++ b/codex-rs/core/tests/suite/tool_parallelism.rs @@ -45,7 +45,7 @@ async fn run_turn(test: &TestCodex, prompt: &str) -> anyhow::Result<()> { environments: None, final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: codex_protocol::protocol::TurnContextOverrides { + thread_settings: codex_protocol::protocol::ThreadSettingsOverrides { cwd: Some(test.cwd.path().to_path_buf()), approval_policy: Some(AskForApproval::Never), sandbox_policy: Some(sandbox_policy), @@ -371,7 +371,7 @@ async fn shell_tools_start_before_response_completed_when_stream_delayed() -> an environments: None, final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: codex_protocol::protocol::TurnContextOverrides { + thread_settings: codex_protocol::protocol::ThreadSettingsOverrides { cwd: Some(test.cwd.path().to_path_buf()), approval_policy: Some(AskForApproval::Never), sandbox_policy: Some(sandbox_policy), diff --git a/codex-rs/core/tests/suite/truncation.rs b/codex-rs/core/tests/suite/truncation.rs index 75352f9ebf..be9267934d 100644 --- a/codex-rs/core/tests/suite/truncation.rs +++ b/codex-rs/core/tests/suite/truncation.rs @@ -523,7 +523,7 @@ async fn mcp_image_output_preserves_image_and_no_text_summary() -> Result<()> { environments: None, final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: codex_protocol::protocol::TurnContextOverrides { + thread_settings: codex_protocol::protocol::ThreadSettingsOverrides { cwd: Some(fixture.cwd.path().to_path_buf()), approval_policy: Some(AskForApproval::Never), sandbox_policy: Some(sandbox_policy), diff --git a/codex-rs/core/tests/suite/unified_exec.rs b/codex-rs/core/tests/suite/unified_exec.rs index f619c24ed4..077d8dcf08 100644 --- a/codex-rs/core/tests/suite/unified_exec.rs +++ b/codex-rs/core/tests/suite/unified_exec.rs @@ -198,7 +198,7 @@ async fn submit_unified_exec_turn( environments: None, final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: codex_protocol::protocol::TurnContextOverrides { + thread_settings: codex_protocol::protocol::ThreadSettingsOverrides { cwd: Some(test.config.cwd.to_path_buf()), approval_policy: Some(AskForApproval::Never), sandbox_policy: Some(sandbox_policy), @@ -286,7 +286,7 @@ async fn unified_exec_intercepts_apply_patch_exec_command() -> Result<()> { environments: None, final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: codex_protocol::protocol::TurnContextOverrides { + thread_settings: codex_protocol::protocol::ThreadSettingsOverrides { cwd: Some(cwd), approval_policy: Some(AskForApproval::Never), sandbox_policy: Some(SandboxPolicy::DangerFullAccess), @@ -2132,7 +2132,7 @@ async fn unified_exec_keeps_long_running_session_after_turn_end() -> Result<()> environments: None, final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: codex_protocol::protocol::TurnContextOverrides { + thread_settings: codex_protocol::protocol::ThreadSettingsOverrides { cwd: Some(cwd.path().to_path_buf()), approval_policy: Some(AskForApproval::Never), sandbox_policy: Some(SandboxPolicy::DangerFullAccess), @@ -2231,7 +2231,7 @@ async fn unified_exec_interrupt_preserves_long_running_session() -> Result<()> { environments: None, final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: codex_protocol::protocol::TurnContextOverrides { + thread_settings: codex_protocol::protocol::ThreadSettingsOverrides { cwd: Some(cwd.path().to_path_buf()), approval_policy: Some(AskForApproval::Never), sandbox_policy: Some(SandboxPolicy::DangerFullAccess), @@ -2709,7 +2709,7 @@ async fn unified_exec_runs_under_sandbox() -> Result<()> { environments: None, final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: codex_protocol::protocol::TurnContextOverrides { + thread_settings: codex_protocol::protocol::ThreadSettingsOverrides { cwd: Some(cwd.path().to_path_buf()), approval_policy: Some(AskForApproval::Never), sandbox_policy: Some(SandboxPolicy::new_read_only_policy()), @@ -2828,7 +2828,7 @@ async fn unified_exec_enforces_glob_deny_read_policy() -> Result<()> { environments: None, final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: codex_protocol::protocol::TurnContextOverrides { + thread_settings: codex_protocol::protocol::ThreadSettingsOverrides { cwd: Some(cwd.path().to_path_buf()), approval_policy: Some(AskForApproval::Never), sandbox_policy: Some(read_only_policy), @@ -2962,7 +2962,7 @@ async fn unified_exec_python_prompt_under_seatbelt() -> Result<()> { environments: None, final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: codex_protocol::protocol::TurnContextOverrides { + thread_settings: codex_protocol::protocol::ThreadSettingsOverrides { cwd: Some(cwd.path().to_path_buf()), approval_policy: Some(AskForApproval::Never), sandbox_policy: Some(SandboxPolicy::new_read_only_policy()), diff --git a/codex-rs/core/tests/suite/user_notification.rs b/codex-rs/core/tests/suite/user_notification.rs index 7e0210fc77..343afd8d53 100644 --- a/codex-rs/core/tests/suite/user_notification.rs +++ b/codex-rs/core/tests/suite/user_notification.rs @@ -64,7 +64,7 @@ mv "${tmp_path}" "${payload_path}""#, }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await?; wait_for_event(&codex, |ev| matches!(ev, EventMsg::TurnComplete(_))).await; diff --git a/codex-rs/core/tests/suite/user_shell_cmd.rs b/codex-rs/core/tests/suite/user_shell_cmd.rs index 0d4eed826c..536ee7b495 100644 --- a/codex-rs/core/tests/suite/user_shell_cmd.rs +++ b/codex-rs/core/tests/suite/user_shell_cmd.rs @@ -182,7 +182,7 @@ async fn user_shell_command_does_not_replace_active_turn() -> anyhow::Result<()> environments: None, final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: codex_protocol::protocol::TurnContextOverrides { + thread_settings: codex_protocol::protocol::ThreadSettingsOverrides { cwd: Some(cwd), approval_policy: Some(AskForApproval::Never), sandbox_policy: Some(sandbox_policy), diff --git a/codex-rs/core/tests/suite/view_image.rs b/codex-rs/core/tests/suite/view_image.rs index 688450cb6c..e631e537c6 100644 --- a/codex-rs/core/tests/suite/view_image.rs +++ b/codex-rs/core/tests/suite/view_image.rs @@ -77,7 +77,7 @@ fn disabled_user_turn(test: &TestCodex, items: Vec, model: String) -> environments: None, final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: codex_protocol::protocol::TurnContextOverrides { + thread_settings: codex_protocol::protocol::ThreadSettingsOverrides { cwd: Some(test.config.cwd.to_path_buf()), approval_policy: Some(AskForApproval::Never), sandbox_policy: Some(sandbox_policy), diff --git a/codex-rs/core/tests/suite/websocket_fallback.rs b/codex-rs/core/tests/suite/websocket_fallback.rs index 843e3b2e60..32a6e30caf 100644 --- a/codex-rs/core/tests/suite/websocket_fallback.rs +++ b/codex-rs/core/tests/suite/websocket_fallback.rs @@ -160,7 +160,7 @@ async fn websocket_fallback_hides_first_websocket_retry_stream_error() -> Result environments: None, final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: codex_protocol::protocol::TurnContextOverrides { + thread_settings: codex_protocol::protocol::ThreadSettingsOverrides { cwd: Some(cwd.path().to_path_buf()), approval_policy: Some(AskForApproval::Never), sandbox_policy: Some(sandbox_policy), diff --git a/codex-rs/core/tests/suite/window_headers.rs b/codex-rs/core/tests/suite/window_headers.rs index f823d9db7e..76fcacf7a9 100644 --- a/codex-rs/core/tests/suite/window_headers.rs +++ b/codex-rs/core/tests/suite/window_headers.rs @@ -112,7 +112,7 @@ async fn submit_user_turn(codex: &Arc, text: &str) -> Result<()> { }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await?; wait_for_event(codex, |event| matches!(event, EventMsg::TurnComplete(_))).await; diff --git a/codex-rs/mcp-server/src/codex_tool_runner.rs b/codex-rs/mcp-server/src/codex_tool_runner.rs index a38fbf6b55..1898bebeeb 100644 --- a/codex-rs/mcp-server/src/codex_tool_runner.rs +++ b/codex-rs/mcp-server/src/codex_tool_runner.rs @@ -116,7 +116,7 @@ pub async fn run_codex_tool_session( }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }, trace: None, }; @@ -166,7 +166,7 @@ pub async fn run_codex_tool_session_reply( }], final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await { diff --git a/codex-rs/memories/write/src/runtime.rs b/codex-rs/memories/write/src/runtime.rs index 0bd301709b..b1ffb2d215 100644 --- a/codex-rs/memories/write/src/runtime.rs +++ b/codex-rs/memories/write/src/runtime.rs @@ -261,7 +261,7 @@ impl MemoryStartupContext { environments: None, final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await { diff --git a/codex-rs/memories/write/src/startup_tests.rs b/codex-rs/memories/write/src/startup_tests.rs index f5a75ed10e..204bd06497 100644 --- a/codex-rs/memories/write/src/startup_tests.rs +++ b/codex-rs/memories/write/src/startup_tests.rs @@ -243,7 +243,7 @@ async fn memories_startup_phase1_uses_live_thread_service_tier() -> anyhow::Resu assert_eq!(test.config.service_tier, None); test.codex - .update_turn_context_overrides(codex_core::CodexThreadTurnContextOverrides { + .update_thread_settings_overrides(codex_core::CodexThreadSettingsOverrides { service_tier: Some(Some(ServiceTier::Fast.request_value().to_string())), ..Default::default() }) diff --git a/codex-rs/protocol/src/protocol.rs b/codex-rs/protocol/src/protocol.rs index 6a4c539385..73fa77b14a 100644 --- a/codex-rs/protocol/src/protocol.rs +++ b/codex-rs/protocol/src/protocol.rs @@ -396,9 +396,9 @@ pub struct ConversationTextParams { pub text: String, } -/// Persistent turn-context overrides that can be applied before user input. +/// Persistent thread-settings overrides that can be applied before user input. #[derive(Debug, Clone, Default, Deserialize, Serialize, PartialEq, JsonSchema)] -pub struct TurnContextOverrides { +pub struct ThreadSettingsOverrides { /// Updated `cwd` for sandbox/tool calls. #[serde(skip_serializing_if = "Option::is_none")] pub cwd: Option, @@ -499,7 +499,7 @@ pub enum Op { /// Request the list of voices supported by realtime conversation streams. RealtimeConversationListVoices, - /// User input, optionally with turn-context overrides applied first. + /// User input, optionally with thread-settings overrides applied first. UserInput { /// User input items, see `InputItem` items: Vec, @@ -513,9 +513,9 @@ pub enum Op { #[serde(default, skip_serializing_if = "Option::is_none")] responsesapi_client_metadata: Option>, - /// Persistent turn-context overrides to apply before the input. + /// Persistent thread-settings overrides to apply before the input. #[serde(default, flatten)] - turn_context: TurnContextOverrides, + thread_settings: ThreadSettingsOverrides, }, /// Inter-agent communication that should be recorded as assistant history @@ -644,7 +644,7 @@ impl From> for Op { items: value, final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: TurnContextOverrides::default(), + thread_settings: ThreadSettingsOverrides::default(), } } } @@ -4884,7 +4884,7 @@ mod tests { items: Vec::new(), final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }; let json_op = serde_json::to_value(op)?; @@ -4904,7 +4904,7 @@ mod tests { items: Vec::new(), final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), } ); @@ -4926,7 +4926,7 @@ mod tests { items: Vec::new(), final_output_json_schema: Some(schema.clone()), responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }; let json_op = serde_json::to_value(op)?; @@ -4952,7 +4952,7 @@ mod tests { "fiber_run_id".to_string(), "fiber-123".to_string(), )])), - turn_context: Default::default(), + thread_settings: Default::default(), }; let json_op = serde_json::to_value(&op)?; diff --git a/codex-rs/thread-manager-sample/src/main.rs b/codex-rs/thread-manager-sample/src/main.rs index 14564de778..8593b8a477 100644 --- a/codex-rs/thread-manager-sample/src/main.rs +++ b/codex-rs/thread-manager-sample/src/main.rs @@ -293,7 +293,7 @@ async fn run_turn(thread: &CodexThread, thread_id: &str, prompt: String) -> anyh environments: None, final_output_json_schema: None, responsesapi_client_metadata: None, - turn_context: Default::default(), + thread_settings: Default::default(), }) .await .context("submit user input")?;