Merge branch 'etraut/next-turn-state-input-op-consolidation' into etraut/next-turn-state-remove-override-context

# Conflicts:
#	codex-rs/core/src/codex_thread.rs
#	codex-rs/core/src/session/tests.rs
#	codex-rs/protocol/src/protocol.rs
This commit is contained in:
Eric Traut
2026-05-18 15:29:58 -07:00
78 changed files with 414 additions and 408 deletions
+1 -1
View File
@@ -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": {
@@ -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;
@@ -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)
@@ -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: {}",
+3 -3
View File
@@ -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
+1 -1
View File
@@ -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?;
+14 -14
View File
@@ -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<PathBuf>,
pub workspace_roots: Option<Vec<AbsolutePathBuf>>,
pub profile_workspace_roots: Option<Vec<AbsolutePathBuf>>,
@@ -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,
+1 -1
View File
@@ -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),
+1 -1
View File
@@ -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;
+8 -8
View File
@@ -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 {
+1 -1
View File
@@ -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,
)
+8 -8
View File
@@ -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?;
@@ -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()
+1 -1
View File
@@ -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),
+5 -5
View File
@@ -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();
+1 -1
View File
@@ -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),
+2 -2
View File
@@ -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),
+34 -34
View File
@@ -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();
@@ -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");
+1 -1
View File
@@ -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),
@@ -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;
+33 -33
View File
@@ -96,7 +96,7 @@ fn disabled_permission_user_turn(text: impl Into<String>, 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");
+55 -55
View File
@@ -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;
@@ -606,7 +606,7 @@ async fn submit_user_input(codex: &codex_core::CodexThread, items: Vec<UserInput
items,
final_output_json_schema: None,
responsesapi_client_metadata: None,
turn_context: Default::default(),
thread_settings: Default::default(),
})
.await?;
wait_for_turn_complete(codex).await;
@@ -508,7 +508,7 @@ async fn snapshot_rollback_past_compaction_replays_append_only_history() -> 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<CodexThread>, text: &str) {
}],
final_output_json_schema: None,
responsesapi_client_metadata: None,
turn_context: Default::default(),
thread_settings: Default::default(),
})
.await
.expect("submit user turn");
+2 -2
View File
@@ -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),
+2 -2
View File
@@ -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();
+2 -2
View File
@@ -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?;
}
+2 -2
View File
@@ -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),
+10 -10
View File
@@ -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?;
+1 -1
View File
@@ -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),
@@ -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),
+2 -2
View File
@@ -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()
+4 -4
View File
@@ -47,7 +47,7 @@ fn read_only_user_turn(test: &TestCodex, items: Vec<UserInput>, 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()
})
@@ -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| {
@@ -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),
@@ -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),
+22 -22
View File
@@ -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();
@@ -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()
})
+4 -4
View File
@@ -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();
@@ -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;
+5 -5
View File
@@ -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()
})
+3 -3
View File
@@ -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;
+18 -18
View File
@@ -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),
+1 -1
View File
@@ -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();
@@ -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?;
+1 -1
View File
@@ -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),
+9 -9
View File
@@ -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),
@@ -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?;
@@ -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),
@@ -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,
@@ -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),
@@ -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),
+8 -8
View File
@@ -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| {
+2 -2
View File
@@ -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()
})
+1 -1
View File
@@ -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),
@@ -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),
+4 -4
View File
@@ -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?;
+4 -4
View File
@@ -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),
+1 -1
View File
@@ -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),
+1 -1
View File
@@ -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),
+1 -1
View File
@@ -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),
@@ -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();
@@ -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();
+5 -5
View File
@@ -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),
@@ -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),
+1 -1
View File
@@ -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),
+7 -7
View File
@@ -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()),
@@ -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;
+1 -1
View File
@@ -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),
+1 -1
View File
@@ -77,7 +77,7 @@ fn disabled_user_turn(test: &TestCodex, items: Vec<UserInput>, 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),
@@ -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),
+1 -1
View File
@@ -112,7 +112,7 @@ async fn submit_user_turn(codex: &Arc<CodexThread>, 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;
+2 -2
View File
@@ -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
{
+1 -1
View File
@@ -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
{
+1 -1
View File
@@ -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()
})
+10 -10
View File
@@ -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<PathBuf>,
@@ -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<UserInput>,
@@ -513,9 +513,9 @@ pub enum Op {
#[serde(default, skip_serializing_if = "Option::is_none")]
responsesapi_client_metadata: Option<HashMap<String, String>>,
/// 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<Vec<UserInput>> 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)?;
+1 -1
View File
@@ -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")?;