diff --git a/codex-rs/core/src/session/handlers.rs b/codex-rs/core/src/session/handlers.rs index d9c5f76c9b..7dd900e0f6 100644 --- a/codex-rs/core/src/session/handlers.rs +++ b/codex-rs/core/src/session/handlers.rs @@ -97,55 +97,11 @@ pub async fn user_input_or_turn(sess: &Arc, sub_id: String, op: Op) { } pub async fn update_turn_context(sess: &Arc, sub_id: String, op: Op) { - let Op::TurnContext { - turn_context: - TurnContextOverrides { - cwd, - approval_policy, - approvals_reviewer, - sandbox_policy, - permission_profile, - active_permission_profile, - windows_sandbox_level, - model, - effort, - summary, - service_tier, - collaboration_mode, - personality, - }, - } = op - else { + let Op::TurnContext { turn_context } = op else { unreachable!(); }; - let collaboration_mode = if let Some(collaboration_mode) = collaboration_mode { - Some(collaboration_mode) - } else { - let state = sess.state.lock().await; - Some( - state - .session_configuration - .collaboration_mode - .with_updates(model, effort, /*developer_instructions*/ None), - ) - }; - let msg = match sess - .update_settings(SessionSettingsUpdate { - cwd, - approval_policy, - approvals_reviewer, - sandbox_policy, - permission_profile, - active_permission_profile, - windows_sandbox_level, - collaboration_mode, - reasoning_summary: summary, - service_tier, - personality, - ..Default::default() - }) - .await - { + let updates = turn_context_settings_update(sess, turn_context).await; + let msg = match sess.update_settings(updates).await { Ok(()) => turn_context_applied_event(sess).await, Err(err) => EventMsg::Error(ErrorEvent { message: format!("invalid turn context override: {err}"), @@ -155,6 +111,51 @@ pub async fn update_turn_context(sess: &Arc, sub_id: String, op: Op) { sess.send_event_raw(Event { id: sub_id, msg }).await; } +async fn turn_context_settings_update( + sess: &Session, + turn_context: TurnContextOverrides, +) -> SessionSettingsUpdate { + let TurnContextOverrides { + cwd, + approval_policy, + approvals_reviewer, + sandbox_policy, + permission_profile, + active_permission_profile, + windows_sandbox_level, + model, + effort, + summary, + service_tier, + collaboration_mode, + personality, + } = turn_context; + let collaboration_mode = match collaboration_mode { + Some(collaboration_mode) => collaboration_mode, + None => { + let state = sess.state.lock().await; + state + .session_configuration + .collaboration_mode + .with_updates(model, effort, /*developer_instructions*/ None) + } + }; + SessionSettingsUpdate { + cwd, + approval_policy, + approvals_reviewer, + sandbox_policy, + permission_profile, + active_permission_profile, + windows_sandbox_level, + collaboration_mode: Some(collaboration_mode), + reasoning_summary: summary, + service_tier, + personality, + ..Default::default() + } +} + async fn turn_context_applied_event(sess: &Session) -> EventMsg { let snapshot = { let state = sess.state.lock().await; @@ -239,56 +240,12 @@ pub(super) async fn user_input_or_turn_inner( items, responsesapi_client_metadata, environments, - turn_context: - TurnContextOverrides { - cwd, - approval_policy, - approvals_reviewer, - sandbox_policy, - permission_profile, - active_permission_profile, - windows_sandbox_level, - model, - effort, - summary, - service_tier, - collaboration_mode, - personality, - }, + turn_context, } => { - let collaboration_mode = if let Some(collab_mode) = collaboration_mode { - Some(collab_mode) - } else { - let state = sess.state.lock().await; - Some( - state - .session_configuration - .collaboration_mode - .with_updates(model, effort, /*developer_instructions*/ None), - ) - }; - ( - items, - SessionSettingsUpdate { - cwd, - approval_policy, - approvals_reviewer, - sandbox_policy, - permission_profile, - active_permission_profile, - windows_sandbox_level, - collaboration_mode, - reasoning_summary: summary, - service_tier, - final_output_json_schema: Some(final_output_json_schema), - environments, - personality, - app_server_client_name: None, - app_server_client_version: None, - }, - responsesapi_client_metadata, - true, - ) + let mut updates = turn_context_settings_update(sess, turn_context).await; + updates.final_output_json_schema = Some(final_output_json_schema); + updates.environments = environments; + (items, updates, responsesapi_client_metadata, true) } Op::UserInput { items, diff --git a/codex-rs/core/tests/suite/collaboration_instructions.rs b/codex-rs/core/tests/suite/collaboration_instructions.rs index 9347658405..9c3527c54e 100644 --- a/codex-rs/core/tests/suite/collaboration_instructions.rs +++ b/codex-rs/core/tests/suite/collaboration_instructions.rs @@ -124,19 +124,8 @@ async fn user_input_includes_collaboration_instructions_after_override() -> Resu let collaboration_mode = collab_mode_with_instructions(Some(collab_text)); test.codex .update_turn_context_overrides(codex_core::CodexThreadTurnContextOverrides { - cwd: None, - approval_policy: None, - approvals_reviewer: None, - sandbox_policy: None, - permission_profile: None, - active_permission_profile: None, - windows_sandbox_level: None, - model: None, - effort: None, - summary: None, - service_tier: None, collaboration_mode: Some(collaboration_mode), - personality: None, + ..Default::default() }) .await?; @@ -282,19 +271,8 @@ async fn override_then_next_turn_uses_updated_collaboration_instructions() -> Re test.codex .update_turn_context_overrides(codex_core::CodexThreadTurnContextOverrides { - cwd: None, - approval_policy: None, - approvals_reviewer: None, - sandbox_policy: None, - permission_profile: None, - active_permission_profile: None, - windows_sandbox_level: None, - model: None, - effort: None, - summary: None, - service_tier: None, collaboration_mode: Some(collaboration_mode), - personality: None, + ..Default::default() }) .await?; @@ -338,19 +316,8 @@ async fn user_turn_overrides_collaboration_instructions_after_override() -> Resu test.codex .update_turn_context_overrides(codex_core::CodexThreadTurnContextOverrides { - cwd: None, - approval_policy: None, - approvals_reviewer: None, - sandbox_policy: None, - permission_profile: None, - active_permission_profile: None, - windows_sandbox_level: None, - model: None, - effort: None, - summary: None, - service_tier: None, collaboration_mode: Some(base_mode), - personality: None, + ..Default::default() }) .await?; @@ -413,19 +380,8 @@ async fn collaboration_mode_update_emits_new_instruction_message() -> Result<()> test.codex .update_turn_context_overrides(codex_core::CodexThreadTurnContextOverrides { - cwd: None, - approval_policy: None, - approvals_reviewer: None, - sandbox_policy: None, - permission_profile: None, - active_permission_profile: None, - windows_sandbox_level: None, - model: None, - effort: None, - summary: None, - service_tier: None, collaboration_mode: Some(collab_mode_with_instructions(Some(first_text))), - personality: None, + ..Default::default() }) .await?; @@ -444,19 +400,8 @@ async fn collaboration_mode_update_emits_new_instruction_message() -> Result<()> test.codex .update_turn_context_overrides(codex_core::CodexThreadTurnContextOverrides { - cwd: None, - approval_policy: None, - approvals_reviewer: None, - sandbox_policy: None, - permission_profile: None, - active_permission_profile: None, - windows_sandbox_level: None, - model: None, - effort: None, - summary: None, - service_tier: None, collaboration_mode: Some(collab_mode_with_instructions(Some(second_text))), - personality: None, + ..Default::default() }) .await?; @@ -504,19 +449,8 @@ async fn collaboration_mode_update_noop_does_not_append() -> Result<()> { test.codex .update_turn_context_overrides(codex_core::CodexThreadTurnContextOverrides { - cwd: None, - approval_policy: None, - approvals_reviewer: None, - sandbox_policy: None, - permission_profile: None, - active_permission_profile: None, - windows_sandbox_level: None, - model: None, - effort: None, - summary: None, - service_tier: None, collaboration_mode: Some(collab_mode_with_instructions(Some(collab_text))), - personality: None, + ..Default::default() }) .await?; @@ -535,19 +469,8 @@ async fn collaboration_mode_update_noop_does_not_append() -> Result<()> { test.codex .update_turn_context_overrides(codex_core::CodexThreadTurnContextOverrides { - cwd: None, - approval_policy: None, - approvals_reviewer: None, - sandbox_policy: None, - permission_profile: None, - active_permission_profile: None, - windows_sandbox_level: None, - model: None, - effort: None, - summary: None, - service_tier: None, collaboration_mode: Some(collab_mode_with_instructions(Some(collab_text))), - personality: None, + ..Default::default() }) .await?; @@ -594,22 +517,11 @@ async fn collaboration_mode_update_emits_new_instruction_message_when_mode_chang test.codex .update_turn_context_overrides(codex_core::CodexThreadTurnContextOverrides { - cwd: None, - approval_policy: None, - approvals_reviewer: None, - sandbox_policy: None, - permission_profile: None, - active_permission_profile: None, - windows_sandbox_level: None, - model: None, - effort: None, - summary: None, - service_tier: None, collaboration_mode: Some(collab_mode_with_mode_and_instructions( ModeKind::Default, Some(default_text), )), - personality: None, + ..Default::default() }) .await?; @@ -628,22 +540,11 @@ async fn collaboration_mode_update_emits_new_instruction_message_when_mode_chang test.codex .update_turn_context_overrides(codex_core::CodexThreadTurnContextOverrides { - cwd: None, - approval_policy: None, - approvals_reviewer: None, - sandbox_policy: None, - permission_profile: None, - active_permission_profile: None, - windows_sandbox_level: None, - model: None, - effort: None, - summary: None, - service_tier: None, collaboration_mode: Some(collab_mode_with_mode_and_instructions( ModeKind::Plan, Some(plan_text), )), - personality: None, + ..Default::default() }) .await?; @@ -691,22 +592,11 @@ async fn collaboration_mode_update_noop_does_not_append_when_mode_is_unchanged() test.codex .update_turn_context_overrides(codex_core::CodexThreadTurnContextOverrides { - cwd: None, - approval_policy: None, - approvals_reviewer: None, - sandbox_policy: None, - permission_profile: None, - active_permission_profile: None, - windows_sandbox_level: None, - model: None, - effort: None, - summary: None, - service_tier: None, collaboration_mode: Some(collab_mode_with_mode_and_instructions( ModeKind::Default, Some(collab_text), )), - personality: None, + ..Default::default() }) .await?; @@ -725,22 +615,11 @@ async fn collaboration_mode_update_noop_does_not_append_when_mode_is_unchanged() test.codex .update_turn_context_overrides(codex_core::CodexThreadTurnContextOverrides { - cwd: None, - approval_policy: None, - approvals_reviewer: None, - sandbox_policy: None, - permission_profile: None, - active_permission_profile: None, - windows_sandbox_level: None, - model: None, - effort: None, - summary: None, - service_tier: None, collaboration_mode: Some(collab_mode_with_mode_and_instructions( ModeKind::Default, Some(collab_text), )), - personality: None, + ..Default::default() }) .await?; @@ -794,19 +673,8 @@ async fn resume_replays_collaboration_instructions() -> Result<()> { initial .codex .update_turn_context_overrides(codex_core::CodexThreadTurnContextOverrides { - cwd: None, - approval_policy: None, - approvals_reviewer: None, - sandbox_policy: None, - permission_profile: None, - active_permission_profile: None, - windows_sandbox_level: None, - model: None, - effort: None, - summary: None, - service_tier: None, collaboration_mode: Some(collab_mode_with_instructions(Some(collab_text))), - personality: None, + ..Default::default() }) .await?; @@ -863,17 +731,6 @@ async fn empty_collaboration_instructions_are_ignored() -> Result<()> { test.codex .update_turn_context_overrides(codex_core::CodexThreadTurnContextOverrides { - cwd: None, - approval_policy: None, - approvals_reviewer: None, - sandbox_policy: None, - permission_profile: None, - active_permission_profile: None, - windows_sandbox_level: None, - model: None, - effort: None, - summary: None, - service_tier: None, collaboration_mode: Some(CollaborationMode { mode: ModeKind::Default, settings: Settings { @@ -882,7 +739,7 @@ async fn empty_collaboration_instructions_are_ignored() -> Result<()> { developer_instructions: Some("".to_string()), }, }), - personality: None, + ..Default::default() }) .await?; diff --git a/codex-rs/core/tests/suite/compact.rs b/codex-rs/core/tests/suite/compact.rs index 0859a122ff..72dbce67a9 100644 --- a/codex-rs/core/tests/suite/compact.rs +++ b/codex-rs/core/tests/suite/compact.rs @@ -3250,18 +3250,7 @@ async fn snapshot_request_shape_pre_turn_compaction_including_incoming_user_mess codex .update_turn_context_overrides(codex_core::CodexThreadTurnContextOverrides { cwd: Some(PathBuf::from(PRETURN_CONTEXT_DIFF_CWD)), - approval_policy: None, - approvals_reviewer: None, - sandbox_policy: None, - permission_profile: None, - active_permission_profile: None, - windows_sandbox_level: None, - model: None, - effort: None, - summary: None, - service_tier: None, - collaboration_mode: None, - personality: None, + ..Default::default() }) .await .expect("override turn context"); diff --git a/codex-rs/core/tests/suite/compact_remote.rs b/codex-rs/core/tests/suite/compact_remote.rs index 6e5a67da76..dd61dde7d5 100644 --- a/codex-rs/core/tests/suite/compact_remote.rs +++ b/codex-rs/core/tests/suite/compact_remote.rs @@ -2731,18 +2731,7 @@ async fn snapshot_request_shape_remote_pre_turn_compaction_including_incoming_us codex .update_turn_context_overrides(codex_core::CodexThreadTurnContextOverrides { cwd: Some(PathBuf::from(PRETURN_CONTEXT_DIFF_CWD)), - approval_policy: None, - approvals_reviewer: None, - sandbox_policy: None, - permission_profile: None, - active_permission_profile: None, - windows_sandbox_level: None, - model: None, - effort: None, - summary: None, - service_tier: None, - collaboration_mode: None, - personality: None, + ..Default::default() }) .await?; } @@ -2847,19 +2836,8 @@ async fn snapshot_request_shape_remote_pre_turn_compaction_strips_incoming_model codex .update_turn_context_overrides(codex_core::CodexThreadTurnContextOverrides { - cwd: None, - approval_policy: None, - approvals_reviewer: None, - sandbox_policy: None, - permission_profile: None, - active_permission_profile: None, - windows_sandbox_level: None, model: Some(next_model.to_string()), - effort: None, - summary: None, - service_tier: None, - collaboration_mode: None, - personality: None, + ..Default::default() }) .await?; codex diff --git a/codex-rs/core/tests/suite/compact_resume_fork.rs b/codex-rs/core/tests/suite/compact_resume_fork.rs index d55b911eed..00f9e63b9c 100644 --- a/codex-rs/core/tests/suite/compact_resume_fork.rs +++ b/codex-rs/core/tests/suite/compact_resume_fork.rs @@ -550,16 +550,6 @@ async fn snapshot_rollback_followup_turn_trims_context_updates() -> Result<()> { conversation .update_turn_context_overrides(codex_core::CodexThreadTurnContextOverrides { cwd: Some(override_cwd.to_path_buf()), - approval_policy: None, - approvals_reviewer: None, - sandbox_policy: None, - permission_profile: None, - active_permission_profile: None, - windows_sandbox_level: None, - model: None, - effort: None, - summary: None, - service_tier: None, collaboration_mode: Some(CollaborationMode { mode: ModeKind::Default, settings: Settings { @@ -568,7 +558,7 @@ async fn snapshot_rollback_followup_turn_trims_context_updates() -> Result<()> { developer_instructions: Some(ROLLED_BACK_DEV_INSTRUCTIONS.to_string()), }, }), - personality: None, + ..Default::default() }) .await?; diff --git a/codex-rs/core/tests/suite/model_overrides.rs b/codex-rs/core/tests/suite/model_overrides.rs index e904654b4b..a8d46dd32b 100644 --- a/codex-rs/core/tests/suite/model_overrides.rs +++ b/codex-rs/core/tests/suite/model_overrides.rs @@ -26,19 +26,9 @@ async fn turn_context_update_does_not_persist_when_config_exists() { codex .update_turn_context_overrides(codex_core::CodexThreadTurnContextOverrides { - cwd: None, - approval_policy: None, - approvals_reviewer: None, - sandbox_policy: None, - permission_profile: None, - active_permission_profile: None, - windows_sandbox_level: None, model: Some("o3".to_string()), effort: Some(Some(ReasoningEffort::High)), - summary: None, - service_tier: None, - collaboration_mode: None, - personality: None, + ..Default::default() }) .await .expect("submit override"); @@ -66,19 +56,9 @@ async fn turn_context_update_does_not_create_config_file() { codex .update_turn_context_overrides(codex_core::CodexThreadTurnContextOverrides { - cwd: None, - approval_policy: None, - approvals_reviewer: None, - sandbox_policy: None, - permission_profile: None, - active_permission_profile: None, - windows_sandbox_level: None, model: Some("o3".to_string()), effort: Some(Some(ReasoningEffort::Medium)), - summary: None, - service_tier: None, - collaboration_mode: None, - personality: None, + ..Default::default() }) .await .expect("submit override"); diff --git a/codex-rs/core/tests/suite/model_switching.rs b/codex-rs/core/tests/suite/model_switching.rs index ca66f9d6f6..14f744d4f8 100644 --- a/codex-rs/core/tests/suite/model_switching.rs +++ b/codex-rs/core/tests/suite/model_switching.rs @@ -158,19 +158,8 @@ async fn model_change_appends_model_instructions_developer_message() -> Result<( test.codex .update_turn_context_overrides(codex_core::CodexThreadTurnContextOverrides { - cwd: None, - approval_policy: None, - approvals_reviewer: None, - sandbox_policy: None, - permission_profile: None, - active_permission_profile: None, - windows_sandbox_level: None, model: Some(next_model.to_string()), - effort: None, - summary: None, - service_tier: None, - collaboration_mode: None, - personality: None, + ..Default::default() }) .await?; @@ -239,19 +228,9 @@ async fn model_and_personality_change_only_appends_model_instructions() -> Resul test.codex .update_turn_context_overrides(codex_core::CodexThreadTurnContextOverrides { - cwd: None, - approval_policy: None, - approvals_reviewer: None, - sandbox_policy: None, - permission_profile: None, - active_permission_profile: None, - windows_sandbox_level: None, model: Some(next_model.to_string()), - effort: None, - summary: None, - service_tier: None, - collaboration_mode: None, personality: Some(Personality::Pragmatic), + ..Default::default() }) .await?; @@ -986,19 +965,8 @@ async fn model_switch_to_smaller_model_updates_token_context_window() -> Result< test.codex .update_turn_context_overrides(codex_core::CodexThreadTurnContextOverrides { - cwd: None, - approval_policy: None, - approvals_reviewer: None, - sandbox_policy: None, - permission_profile: None, - active_permission_profile: None, - windows_sandbox_level: None, model: Some(smaller_model_slug.to_string()), - effort: None, - summary: None, - service_tier: None, - collaboration_mode: None, - personality: None, + ..Default::default() }) .await?; diff --git a/codex-rs/core/tests/suite/model_visible_layout.rs b/codex-rs/core/tests/suite/model_visible_layout.rs index ba4aa606d7..2f6bb87e8f 100644 --- a/codex-rs/core/tests/suite/model_visible_layout.rs +++ b/codex-rs/core/tests/suite/model_visible_layout.rs @@ -476,18 +476,8 @@ async fn snapshot_model_visible_layout_resume_override_matches_rollout_model() - .codex .update_turn_context_overrides(codex_core::CodexThreadTurnContextOverrides { cwd: Some(resume_override_cwd), - approval_policy: None, - approvals_reviewer: None, - sandbox_policy: None, - permission_profile: None, - active_permission_profile: None, - windows_sandbox_level: None, model: Some("gpt-5.2".to_string()), - effort: None, - summary: None, - service_tier: None, - collaboration_mode: None, - personality: None, + ..Default::default() }) .await?; resumed diff --git a/codex-rs/core/tests/suite/override_updates.rs b/codex-rs/core/tests/suite/override_updates.rs index bc92b178af..b3cec800ab 100644 --- a/codex-rs/core/tests/suite/override_updates.rs +++ b/codex-rs/core/tests/suite/override_updates.rs @@ -35,19 +35,8 @@ async fn turn_context_update_without_user_turn_does_not_record_permissions_updat test.codex .update_turn_context_overrides(codex_core::CodexThreadTurnContextOverrides { - cwd: None, approval_policy: Some(AskForApproval::Never), - approvals_reviewer: None, - sandbox_policy: None, - permission_profile: None, - active_permission_profile: None, - windows_sandbox_level: None, - model: None, - effort: None, - summary: None, - service_tier: None, - collaboration_mode: None, - personality: None, + ..Default::default() }) .await?; @@ -74,18 +63,7 @@ async fn turn_context_update_without_user_turn_does_not_record_environment_updat test.codex .update_turn_context_overrides(codex_core::CodexThreadTurnContextOverrides { cwd: Some(new_cwd.path().to_path_buf()), - approval_policy: None, - approvals_reviewer: None, - sandbox_policy: None, - permission_profile: None, - active_permission_profile: None, - windows_sandbox_level: None, - model: None, - effort: None, - summary: None, - service_tier: None, - collaboration_mode: None, - personality: None, + ..Default::default() }) .await?; @@ -113,19 +91,8 @@ async fn turn_context_update_without_user_turn_does_not_record_collaboration_upd test.codex .update_turn_context_overrides(codex_core::CodexThreadTurnContextOverrides { - cwd: None, - approval_policy: None, - approvals_reviewer: None, - sandbox_policy: None, - permission_profile: None, - active_permission_profile: None, - windows_sandbox_level: None, - model: None, - effort: None, - summary: None, - service_tier: None, collaboration_mode: Some(collaboration_mode), - personality: None, + ..Default::default() }) .await?; diff --git a/codex-rs/core/tests/suite/permissions_messages.rs b/codex-rs/core/tests/suite/permissions_messages.rs index b899c74b93..eb6d663cac 100644 --- a/codex-rs/core/tests/suite/permissions_messages.rs +++ b/codex-rs/core/tests/suite/permissions_messages.rs @@ -103,19 +103,8 @@ async fn permissions_message_added_on_override_change() -> Result<()> { test.codex .update_turn_context_overrides(codex_core::CodexThreadTurnContextOverrides { - cwd: None, approval_policy: Some(AskForApproval::Never), - approvals_reviewer: None, - sandbox_policy: None, - permission_profile: None, - active_permission_profile: None, - windows_sandbox_level: None, - model: None, - effort: None, - summary: None, - service_tier: None, - collaboration_mode: None, - personality: None, + ..Default::default() }) .await?; @@ -237,19 +226,8 @@ async fn permissions_message_omitted_when_disabled() -> Result<()> { test.codex .update_turn_context_overrides(codex_core::CodexThreadTurnContextOverrides { - cwd: None, approval_policy: Some(AskForApproval::Never), - approvals_reviewer: None, - sandbox_policy: None, - permission_profile: None, - active_permission_profile: None, - windows_sandbox_level: None, - model: None, - effort: None, - summary: None, - service_tier: None, - collaboration_mode: None, - personality: None, + ..Default::default() }) .await?; @@ -327,19 +305,8 @@ async fn resume_replays_permissions_messages() -> Result<()> { initial .codex .update_turn_context_overrides(codex_core::CodexThreadTurnContextOverrides { - cwd: None, approval_policy: Some(AskForApproval::Never), - approvals_reviewer: None, - sandbox_policy: None, - permission_profile: None, - active_permission_profile: None, - windows_sandbox_level: None, - model: None, - effort: None, - summary: None, - service_tier: None, - collaboration_mode: None, - personality: None, + ..Default::default() }) .await?; @@ -434,19 +401,8 @@ async fn resume_and_fork_append_permissions_messages() -> Result<()> { initial .codex .update_turn_context_overrides(codex_core::CodexThreadTurnContextOverrides { - cwd: None, approval_policy: Some(AskForApproval::Never), - approvals_reviewer: None, - sandbox_policy: None, - permission_profile: None, - active_permission_profile: None, - windows_sandbox_level: None, - model: None, - effort: None, - summary: None, - service_tier: None, - collaboration_mode: None, - personality: None, + ..Default::default() }) .await?; diff --git a/codex-rs/core/tests/suite/personality.rs b/codex-rs/core/tests/suite/personality.rs index 63be7bfd7d..ed904f817e 100644 --- a/codex-rs/core/tests/suite/personality.rs +++ b/codex-rs/core/tests/suite/personality.rs @@ -329,19 +329,8 @@ async fn user_turn_personality_some_adds_update_message() -> anyhow::Result<()> test.codex .update_turn_context_overrides(codex_core::CodexThreadTurnContextOverrides { - cwd: None, - approval_policy: None, - approvals_reviewer: None, - sandbox_policy: None, - permission_profile: None, - active_permission_profile: None, - windows_sandbox_level: None, - model: None, - effort: None, - summary: None, - service_tier: None, - collaboration_mode: None, personality: Some(Personality::Friendly), + ..Default::default() }) .await?; @@ -414,19 +403,8 @@ async fn user_turn_personality_same_value_does_not_add_update_message() -> anyho test.codex .update_turn_context_overrides(codex_core::CodexThreadTurnContextOverrides { - cwd: None, - approval_policy: None, - approvals_reviewer: None, - sandbox_policy: None, - permission_profile: None, - active_permission_profile: None, - windows_sandbox_level: None, - model: None, - effort: None, - summary: None, - service_tier: None, - collaboration_mode: None, personality: Some(Personality::Pragmatic), + ..Default::default() }) .await?; @@ -512,19 +490,8 @@ async fn user_turn_personality_skips_if_feature_disabled() -> anyhow::Result<()> test.codex .update_turn_context_overrides(codex_core::CodexThreadTurnContextOverrides { - cwd: None, - approval_policy: None, - approvals_reviewer: None, - sandbox_policy: None, - permission_profile: None, - active_permission_profile: None, - windows_sandbox_level: None, - model: None, - effort: None, - summary: None, - service_tier: None, - collaboration_mode: None, personality: Some(Personality::Pragmatic), + ..Default::default() }) .await?; @@ -762,19 +729,8 @@ async fn user_turn_personality_remote_model_template_includes_update_message() - test.codex .update_turn_context_overrides(codex_core::CodexThreadTurnContextOverrides { - cwd: None, - approval_policy: None, - approvals_reviewer: None, - sandbox_policy: None, - permission_profile: None, - active_permission_profile: None, - windows_sandbox_level: None, - model: None, - effort: None, - summary: None, - service_tier: None, - collaboration_mode: None, personality: Some(Personality::Friendly), + ..Default::default() }) .await?; diff --git a/codex-rs/core/tests/suite/prompt_caching.rs b/codex-rs/core/tests/suite/prompt_caching.rs index 5df5d7452d..288b989df4 100644 --- a/codex-rs/core/tests/suite/prompt_caching.rs +++ b/codex-rs/core/tests/suite/prompt_caching.rs @@ -441,19 +441,12 @@ async fn overrides_turn_context_but_keeps_cached_prefix_and_key_constant() -> an .expect("workspace profile should have legacy projection"); codex .update_turn_context_overrides(codex_core::CodexThreadTurnContextOverrides { - cwd: None, approval_policy: Some(AskForApproval::Never), - approvals_reviewer: None, sandbox_policy: Some(sandbox_policy), permission_profile: Some(permission_profile), - active_permission_profile: None, - windows_sandbox_level: None, - model: None, effort: Some(Some(ReasoningEffort::High)), summary: Some(ReasoningSummary::Detailed), - service_tier: None, - collaboration_mode: None, - personality: None, + ..Default::default() }) .await?; @@ -528,19 +521,11 @@ async fn override_before_first_turn_emits_environment_context() -> anyhow::Resul codex .update_turn_context_overrides(codex_core::CodexThreadTurnContextOverrides { - cwd: None, approval_policy: Some(AskForApproval::Never), - approvals_reviewer: None, - sandbox_policy: None, - permission_profile: None, - active_permission_profile: None, - windows_sandbox_level: None, model: Some("gpt-5.4".to_string()), effort: Some(Some(ReasoningEffort::Low)), - summary: None, - service_tier: None, collaboration_mode: Some(collaboration_mode), - personality: None, + ..Default::default() }) .await?; diff --git a/codex-rs/core/tests/suite/remote_models.rs b/codex-rs/core/tests/suite/remote_models.rs index 2fd536d310..f88814abdd 100644 --- a/codex-rs/core/tests/suite/remote_models.rs +++ b/codex-rs/core/tests/suite/remote_models.rs @@ -595,19 +595,8 @@ async fn remote_models_remote_model_uses_unified_exec() -> Result<()> { codex .update_turn_context_overrides(codex_core::CodexThreadTurnContextOverrides { - cwd: None, - approval_policy: None, - approvals_reviewer: None, - sandbox_policy: None, - permission_profile: None, - active_permission_profile: None, - windows_sandbox_level: None, model: Some(REMOTE_MODEL_SLUG.to_string()), - effort: None, - summary: None, - service_tier: None, - collaboration_mode: None, - personality: None, + ..Default::default() }) .await?; @@ -847,19 +836,8 @@ async fn remote_models_apply_remote_base_instructions() -> Result<()> { codex .update_turn_context_overrides(codex_core::CodexThreadTurnContextOverrides { - cwd: None, - approval_policy: None, - approvals_reviewer: None, - sandbox_policy: None, - permission_profile: None, - active_permission_profile: None, - windows_sandbox_level: None, model: Some(model.to_string()), - effort: None, - summary: None, - service_tier: None, - collaboration_mode: None, - personality: None, + ..Default::default() }) .await?; diff --git a/codex-rs/core/tests/suite/resume.rs b/codex-rs/core/tests/suite/resume.rs index 55c8175353..e6815aa027 100644 --- a/codex-rs/core/tests/suite/resume.rs +++ b/codex-rs/core/tests/suite/resume.rs @@ -420,19 +420,8 @@ async fn resume_model_switch_is_not_duplicated_after_pre_turn_override() -> Resu resumed .codex .update_turn_context_overrides(codex_core::CodexThreadTurnContextOverrides { - cwd: None, - approval_policy: None, - approvals_reviewer: None, - sandbox_policy: None, - permission_profile: None, - active_permission_profile: None, - windows_sandbox_level: None, model: Some("gpt-5.4".to_string()), - effort: None, - summary: None, - service_tier: None, - collaboration_mode: None, - personality: None, + ..Default::default() }) .await?; resumed diff --git a/codex-rs/core/tests/suite/review.rs b/codex-rs/core/tests/suite/review.rs index 825b029e98..70eaf7335c 100644 --- a/codex-rs/core/tests/suite/review.rs +++ b/codex-rs/core/tests/suite/review.rs @@ -830,18 +830,7 @@ async fn review_uses_overridden_cwd_for_base_branch_merge_base() { codex .update_turn_context_overrides(codex_core::CodexThreadTurnContextOverrides { cwd: Some(repo_path.to_path_buf()), - approval_policy: None, - approvals_reviewer: None, - sandbox_policy: None, - permission_profile: None, - active_permission_profile: None, - windows_sandbox_level: None, - model: None, - effort: None, - summary: None, - service_tier: None, - collaboration_mode: None, - personality: None, + ..Default::default() }) .await .unwrap(); diff --git a/codex-rs/memories/write/src/startup_tests.rs b/codex-rs/memories/write/src/startup_tests.rs index cd48b6a1d7..f5a75ed10e 100644 --- a/codex-rs/memories/write/src/startup_tests.rs +++ b/codex-rs/memories/write/src/startup_tests.rs @@ -244,19 +244,8 @@ async fn memories_startup_phase1_uses_live_thread_service_tier() -> anyhow::Resu test.codex .update_turn_context_overrides(codex_core::CodexThreadTurnContextOverrides { - cwd: None, - approval_policy: None, - approvals_reviewer: None, - sandbox_policy: None, - permission_profile: None, - active_permission_profile: None, - windows_sandbox_level: None, - model: None, - effort: None, - summary: None, service_tier: Some(Some(ServiceTier::Fast.request_value().to_string())), - collaboration_mode: None, - personality: None, + ..Default::default() }) .await?;