diff --git a/codex-rs/app-server/src/codex_message_processor.rs b/codex-rs/app-server/src/codex_message_processor.rs index e03ca44a83..8dc8d4eae3 100644 --- a/codex-rs/app-server/src/codex_message_processor.rs +++ b/codex-rs/app-server/src/codex_message_processor.rs @@ -21,7 +21,6 @@ use codex_app_server_protocol::AppsListParams; use codex_app_server_protocol::AppsListResponse; use codex_app_server_protocol::ArchiveConversationParams; use codex_app_server_protocol::ArchiveConversationResponse; -use codex_app_server_protocol::AskForApproval; use codex_app_server_protocol::AuthMode; use codex_app_server_protocol::AuthStatusChangeNotification; use codex_app_server_protocol::CancelLoginAccountParams; @@ -451,8 +450,15 @@ impl CodexMessageProcessor { // Map v2 input items to core input items. let items: Vec = input.into_iter().map(V2UserInput::into_core).collect(); - let collaboration_mode = - collaboration_mode.map(|mode| self.normalize_turn_start_collaboration_mode(mode)); + let collaboration_mode = collaboration_mode + .map(|mode| self.normalize_turn_start_collaboration_mode(mode)) + .or_else(|| { + Some(config_snapshot.collaboration_mode.with_updates( + model.clone(), + effort.map(Some), + None, + )) + }); Op::UserTurn { items, @@ -464,9 +470,8 @@ impl CodexMessageProcessor { .map(|p| p.to_core()) .unwrap_or(config_snapshot.sandbox_policy), model: model.unwrap_or(config_snapshot.model), - effort, - // TODO: need to add to config_snapshot - summary: summary.unwrap_or_default(), + effort: effort.or(config_snapshot.reasoning_effort), + summary: summary.unwrap_or(config_snapshot.reasoning_summary), final_output_json_schema: output_schema, collaboration_mode, personality, diff --git a/codex-rs/core/src/codex.rs b/codex-rs/core/src/codex.rs index 5d0c8c239f..61871e77a4 100644 --- a/codex-rs/core/src/codex.rs +++ b/codex-rs/core/src/codex.rs @@ -651,7 +651,9 @@ impl SessionConfiguration { approval_policy: self.approval_policy.value(), sandbox_policy: self.sandbox_policy.get().clone(), cwd: self.cwd.clone(), + collaboration_mode: self.collaboration_mode.clone(), reasoning_effort: self.collaboration_mode.reasoning_effort(), + reasoning_summary: self.model_reasoning_summary, personality: self.personality, session_source: self.session_source.clone(), } diff --git a/codex-rs/core/src/codex_thread.rs b/codex-rs/core/src/codex_thread.rs index 0c0bbe0e0d..ab8a7cdbb5 100644 --- a/codex-rs/core/src/codex_thread.rs +++ b/codex-rs/core/src/codex_thread.rs @@ -5,7 +5,9 @@ use crate::error::Result as CodexResult; use crate::protocol::Event; use crate::protocol::Op; use crate::protocol::Submission; +use codex_protocol::config_types::CollaborationMode; use codex_protocol::config_types::Personality; +use codex_protocol::config_types::ReasoningSummary; use codex_protocol::openai_models::ReasoningEffort; use codex_protocol::protocol::AskForApproval; use codex_protocol::protocol::SandboxPolicy; @@ -23,7 +25,9 @@ pub struct ThreadConfigSnapshot { pub approval_policy: AskForApproval, pub sandbox_policy: SandboxPolicy, pub cwd: PathBuf, + pub collaboration_mode: CollaborationMode, pub reasoning_effort: Option, + pub reasoning_summary: ReasoningSummary, pub personality: Option, pub session_source: SessionSource, }