diff --git a/codex-rs/core/src/agent/agent_resolver.rs b/codex-rs/core/src/agent/agent_resolver.rs index adb3f23ac6b0..eb806da3ae3e 100644 --- a/codex-rs/core/src/agent/agent_resolver.rs +++ b/codex-rs/core/src/agent/agent_resolver.rs @@ -1,6 +1,6 @@ -use crate::codex::Session; -use crate::codex::TurnContext; use crate::function_tool::FunctionCallError; +use crate::session::session::Session; +use crate::session::turn_context::TurnContext; use codex_protocol::ThreadId; use std::sync::Arc; diff --git a/codex-rs/core/src/agent/control.rs b/codex-rs/core/src/agent/control.rs index 509a578f5c93..984b92e7bb01 100644 --- a/codex-rs/core/src/agent/control.rs +++ b/codex-rs/core/src/agent/control.rs @@ -4,11 +4,11 @@ use crate::agent::registry::AgentRegistry; use crate::agent::role::DEFAULT_ROLE_NAME; use crate::agent::role::resolve_role_config; use crate::agent::status::is_final; -use crate::codex::emit_subagent_session_started; use crate::codex_thread::ThreadConfigSnapshot; use crate::find_archived_thread_path_by_id_str; use crate::find_thread_path_by_id_str; use crate::rollout::RolloutRecorder; +use crate::session::emit_subagent_session_started; use crate::session_prefix::format_subagent_context_line; use crate::session_prefix::format_subagent_notification_message; use crate::shell_snapshot::ShellSnapshot; @@ -267,7 +267,7 @@ impl AgentControl { parent_thread_id = %parent_thread_id, "skipping subagent thread analytics: failed to load parent thread metadata" ); - crate::codex::AppServerClientMetadata { + crate::session::session::AppServerClientMetadata { client_name: None, client_version: None, } diff --git a/codex-rs/core/src/apply_patch.rs b/codex-rs/core/src/apply_patch.rs index 1bce68a988e4..c05a459049bf 100644 --- a/codex-rs/core/src/apply_patch.rs +++ b/codex-rs/core/src/apply_patch.rs @@ -1,7 +1,7 @@ -use crate::codex::TurnContext; use crate::function_tool::FunctionCallError; use crate::safety::SafetyCheck; use crate::safety::assess_patch_safety; +use crate::session::turn_context::TurnContext; use crate::tools::sandboxing::ExecApprovalRequirement; use codex_apply_patch::ApplyPatchAction; use codex_apply_patch::ApplyPatchFileChange; diff --git a/codex-rs/core/src/arc_monitor.rs b/codex-rs/core/src/arc_monitor.rs index 13f33f6c900d..ecd7f3966628 100644 --- a/codex-rs/core/src/arc_monitor.rs +++ b/codex-rs/core/src/arc_monitor.rs @@ -5,10 +5,10 @@ use serde::Deserialize; use serde::Serialize; use tracing::warn; -use crate::codex::Session; -use crate::codex::TurnContext; use crate::compact::content_items_to_text; use crate::event_mapping::is_contextual_user_message_content; +use crate::session::session::Session; +use crate::session::turn_context::TurnContext; use codex_login::CodexAuth; use codex_login::default_client::build_reqwest_client; use codex_protocol::models::MessagePhase; diff --git a/codex-rs/core/src/arc_monitor_tests.rs b/codex-rs/core/src/arc_monitor_tests.rs index a7ba23997383..6a345e31e361 100644 --- a/codex-rs/core/src/arc_monitor_tests.rs +++ b/codex-rs/core/src/arc_monitor_tests.rs @@ -13,7 +13,7 @@ use wiremock::matchers::method; use wiremock::matchers::path; use super::*; -use crate::codex::make_session_and_context; +use crate::session::tests::make_session_and_context; use codex_protocol::models::ContentItem; use codex_protocol::models::LocalShellAction; use codex_protocol::models::LocalShellExecAction; diff --git a/codex-rs/core/src/codex_delegate.rs b/codex-rs/core/src/codex_delegate.rs index 9cd58e044fd4..5d67223b33be 100644 --- a/codex-rs/core/src/codex_delegate.rs +++ b/codex-rs/core/src/codex_delegate.rs @@ -30,13 +30,6 @@ use tokio::sync::oneshot; use tokio::time::timeout; use tokio_util::sync::CancellationToken; -use crate::codex::Codex; -use crate::codex::CodexSpawnArgs; -use crate::codex::CodexSpawnOk; -use crate::codex::SUBMISSION_CHANNEL_CAPACITY; -use crate::codex::Session; -use crate::codex::TurnContext; -use crate::codex::emit_subagent_session_started; use crate::config::Config; use crate::guardian::GuardianApprovalRequest; use crate::guardian::new_guardian_review_id; @@ -48,13 +41,20 @@ use crate::mcp_tool_call::MCP_TOOL_APPROVAL_DECLINE_SYNTHETIC; use crate::mcp_tool_call::build_guardian_mcp_tool_review_request; use crate::mcp_tool_call::is_mcp_tool_approval_question_id; use crate::mcp_tool_call::lookup_mcp_tool_metadata; +use crate::session::Codex; +use crate::session::CodexSpawnArgs; +use crate::session::CodexSpawnOk; +use crate::session::SUBMISSION_CHANNEL_CAPACITY; +use crate::session::emit_subagent_session_started; +use crate::session::session::Session; +use crate::session::turn_context::TurnContext; use codex_login::AuthManager; use codex_models_manager::manager::ModelsManager; use codex_protocol::error::CodexErr; use codex_protocol::protocol::InitialHistory; #[cfg(test)] -use crate::codex::completed_session_loop_termination; +use crate::session::completed_session_loop_termination; /// Start an interactive sub-Codex thread and return IO channels. /// diff --git a/codex-rs/core/src/codex_delegate_tests.rs b/codex-rs/core/src/codex_delegate_tests.rs index beee114a96fd..d26460a255f1 100644 --- a/codex-rs/core/src/codex_delegate_tests.rs +++ b/codex-rs/core/src/codex_delegate_tests.rs @@ -37,7 +37,7 @@ async fn forward_events_cancelled_while_send_blocked_shuts_down_delegate() { let (tx_events, rx_events) = bounded(1); let (tx_sub, rx_sub) = bounded(SUBMISSION_CHANNEL_CAPACITY); let (_agent_status_tx, agent_status) = watch::channel(AgentStatus::PendingInit); - let (session, ctx, _rx_evt) = crate::codex::make_session_and_context_with_rx().await; + let (session, ctx, _rx_evt) = crate::session::tests::make_session_and_context_with_rx().await; let codex = Arc::new(Codex { tx_sub, rx_event: rx_events, @@ -114,7 +114,7 @@ async fn forward_ops_preserves_submission_trace_context() { let (tx_sub, rx_sub) = bounded(SUBMISSION_CHANNEL_CAPACITY); let (_tx_events, rx_events) = bounded(SUBMISSION_CHANNEL_CAPACITY); let (_agent_status_tx, agent_status) = watch::channel(AgentStatus::PendingInit); - let (session, _ctx, _rx_evt) = crate::codex::make_session_and_context_with_rx().await; + let (session, _ctx, _rx_evt) = crate::session::tests::make_session_and_context_with_rx().await; let codex = Arc::new(Codex { tx_sub, rx_event: rx_events, @@ -156,7 +156,7 @@ async fn forward_ops_preserves_submission_trace_context() { #[tokio::test] async fn handle_request_permissions_uses_tool_call_id_for_round_trip() { let (parent_session, parent_ctx, rx_events) = - crate::codex::make_session_and_context_with_rx().await; + crate::session::tests::make_session_and_context_with_rx().await; *parent_session.active_turn.lock().await = Some(crate::state::ActiveTurn::default()); let (tx_sub, rx_sub) = bounded(SUBMISSION_CHANNEL_CAPACITY); @@ -244,7 +244,7 @@ async fn handle_request_permissions_uses_tool_call_id_for_round_trip() { #[tokio::test] async fn handle_exec_approval_uses_call_id_for_guardian_review_and_approval_id_for_reply() { let (parent_session, parent_ctx, rx_events) = - crate::codex::make_session_and_context_with_rx().await; + crate::session::tests::make_session_and_context_with_rx().await; let mut parent_ctx = Arc::try_unwrap(parent_ctx).expect("single turn context ref"); let mut config = (*parent_ctx.config).clone(); config.approvals_reviewer = ApprovalsReviewer::GuardianSubagent; @@ -356,7 +356,7 @@ async fn handle_exec_approval_uses_call_id_for_guardian_review_and_approval_id_f #[tokio::test] async fn delegated_mcp_guardian_abort_returns_synthetic_decline_answer() { let (parent_session, parent_ctx, _rx_events) = - crate::codex::make_session_and_context_with_rx().await; + crate::session::tests::make_session_and_context_with_rx().await; let mut parent_ctx = Arc::try_unwrap(parent_ctx).expect("single turn context ref"); let mut config = (*parent_ctx.config).clone(); config.approvals_reviewer = ApprovalsReviewer::GuardianSubagent; diff --git a/codex-rs/core/src/codex_thread.rs b/codex-rs/core/src/codex_thread.rs index 3642d078c130..6513f09d07fc 100644 --- a/codex-rs/core/src/codex_thread.rs +++ b/codex-rs/core/src/codex_thread.rs @@ -1,8 +1,8 @@ use crate::agent::AgentStatus; -use crate::codex::Codex; -use crate::codex::SteerInputError; use crate::config::ConstraintResult; use crate::file_watcher::WatchRegistration; +use crate::session::Codex; +use crate::session::SteerInputError; use codex_features::Feature; use codex_protocol::config_types::ApprovalsReviewer; use codex_protocol::config_types::Personality; diff --git a/codex-rs/core/src/compact.rs b/codex-rs/core/src/compact.rs index ec3798efb2b3..c997e92bcfde 100644 --- a/codex-rs/core/src/compact.rs +++ b/codex-rs/core/src/compact.rs @@ -5,10 +5,10 @@ use crate::Prompt; use crate::client::ModelClientSession; use crate::client_common::ResponseEvent; #[cfg(test)] -use crate::codex::PreviousTurnSettings; -use crate::codex::Session; -use crate::codex::TurnContext; -use crate::codex::get_last_assistant_message_from_turn; +use crate::session::PreviousTurnSettings; +use crate::session::session::Session; +use crate::session::turn::get_last_assistant_message_from_turn; +use crate::session::turn_context::TurnContext; use crate::util::backoff; use codex_analytics::CodexCompactionEvent; use codex_analytics::CompactionImplementation; diff --git a/codex-rs/core/src/compact_remote.rs b/codex-rs/core/src/compact_remote.rs index 3e8e1e3a3960..e56812eca305 100644 --- a/codex-rs/core/src/compact_remote.rs +++ b/codex-rs/core/src/compact_remote.rs @@ -2,9 +2,6 @@ use std::collections::HashSet; use std::sync::Arc; use crate::Prompt; -use crate::codex::Session; -use crate::codex::TurnContext; -use crate::codex::built_tools; use crate::compact::CompactionAnalyticsAttempt; use crate::compact::InitialContextInjection; use crate::compact::compaction_status_from_result; @@ -13,6 +10,9 @@ use crate::context_manager::ContextManager; use crate::context_manager::TotalTokenUsageBreakdown; use crate::context_manager::estimate_response_item_model_visible_bytes; use crate::context_manager::is_codex_generated_item; +use crate::session::session::Session; +use crate::session::turn::built_tools; +use crate::session::turn_context::TurnContext; use codex_analytics::CompactionImplementation; use codex_analytics::CompactionPhase; use codex_analytics::CompactionReason; diff --git a/codex-rs/core/src/compact_tests.rs b/codex-rs/core/src/compact_tests.rs index f7a8d1dfff95..6c482defa142 100644 --- a/codex-rs/core/src/compact_tests.rs +++ b/codex-rs/core/src/compact_tests.rs @@ -7,7 +7,7 @@ async fn process_compacted_history_with_test_session( compacted_history: Vec, previous_turn_settings: Option<&PreviousTurnSettings>, ) -> (Vec, Vec) { - let (session, turn_context) = crate::codex::make_session_and_context().await; + let (session, turn_context) = crate::session::tests::make_session_and_context().await; session .set_previous_turn_settings(previous_turn_settings.cloned()) .await; diff --git a/codex-rs/core/src/connectors.rs b/codex-rs/core/src/connectors.rs index 103ce251fca6..97a46e6143f7 100644 --- a/codex-rs/core/src/connectors.rs +++ b/codex-rs/core/src/connectors.rs @@ -21,12 +21,12 @@ use serde::Deserialize; use serde::de::DeserializeOwned; use tracing::warn; -use crate::codex::INITIAL_SUBMIT_ID; use crate::config::Config; use crate::config_loader::AppsRequirementsToml; use crate::mcp::McpManager; use crate::plugins::PluginsManager; use crate::plugins::list_tool_suggest_discoverable_plugins; +use crate::session::INITIAL_SUBMIT_ID; use codex_config::types::AppToolApproval; use codex_config::types::AppsConfigToml; use codex_config::types::ToolSuggestDiscoverableType; diff --git a/codex-rs/core/src/context_manager/history.rs b/codex-rs/core/src/context_manager/history.rs index 05174007735e..db2c6b58b163 100644 --- a/codex-rs/core/src/context_manager/history.rs +++ b/codex-rs/core/src/context_manager/history.rs @@ -1,8 +1,8 @@ -use crate::codex::TurnContext; use crate::context_manager::normalize; use crate::event_mapping::has_non_contextual_dev_message_content; use crate::event_mapping::is_contextual_dev_message_content; use crate::event_mapping::is_contextual_user_message_content; +use crate::session::turn_context::TurnContext; use base64::Engine; use base64::engine::general_purpose::STANDARD as BASE64_STANDARD; use codex_protocol::models::BaseInstructions; diff --git a/codex-rs/core/src/context_manager/updates.rs b/codex-rs/core/src/context_manager/updates.rs index e92aad3d77c5..5ced481530ea 100644 --- a/codex-rs/core/src/context_manager/updates.rs +++ b/codex-rs/core/src/context_manager/updates.rs @@ -1,6 +1,6 @@ -use crate::codex::PreviousTurnSettings; -use crate::codex::TurnContext; use crate::environment_context::EnvironmentContext; +use crate::session::PreviousTurnSettings; +use crate::session::turn_context::TurnContext; use crate::shell::Shell; use codex_execpolicy::Policy; use codex_features::Feature; diff --git a/codex-rs/core/src/environment_context.rs b/codex-rs/core/src/environment_context.rs index df4e49cf4e1e..44929b89473e 100644 --- a/codex-rs/core/src/environment_context.rs +++ b/codex-rs/core/src/environment_context.rs @@ -1,5 +1,5 @@ -use crate::codex::TurnContext; use crate::contextual_user_message::ENVIRONMENT_CONTEXT_FRAGMENT; +use crate::session::turn_context::TurnContext; use crate::shell::Shell; use codex_protocol::models::ResponseItem; use codex_protocol::protocol::TurnContextItem; diff --git a/codex-rs/core/src/guardian/prompt.rs b/codex-rs/core/src/guardian/prompt.rs index 761a5ec2fcc8..687b3e13a7fc 100644 --- a/codex-rs/core/src/guardian/prompt.rs +++ b/codex-rs/core/src/guardian/prompt.rs @@ -4,9 +4,9 @@ use codex_protocol::models::ResponseItem; use codex_protocol::user_input::UserInput; use serde_json::Value; -use crate::codex::Session; use crate::compact::content_items_to_text; use crate::event_mapping::is_contextual_user_message_content; +use crate::session::session::Session; use codex_utils_output_truncation::approx_bytes_for_tokens; use codex_utils_output_truncation::approx_token_count; use codex_utils_output_truncation::approx_tokens_from_byte_count; diff --git a/codex-rs/core/src/guardian/review.rs b/codex-rs/core/src/guardian/review.rs index 18107f73775a..d46a4d62f45f 100644 --- a/codex-rs/core/src/guardian/review.rs +++ b/codex-rs/core/src/guardian/review.rs @@ -13,8 +13,8 @@ use codex_protocol::protocol::SubAgentSource; use codex_protocol::protocol::WarningEvent; use tokio_util::sync::CancellationToken; -use crate::codex::Session; -use crate::codex::TurnContext; +use crate::session::session::Session; +use crate::session::turn_context::TurnContext; use super::GUARDIAN_REVIEWER_NAME; use super::GuardianApprovalRequest; diff --git a/codex-rs/core/src/guardian/review_session.rs b/codex-rs/core/src/guardian/review_session.rs index f1c6e1e054a2..3721dc8dfe53 100644 --- a/codex-rs/core/src/guardian/review_session.rs +++ b/codex-rs/core/src/guardian/review_session.rs @@ -22,9 +22,6 @@ use tokio::sync::Mutex; use tokio_util::sync::CancellationToken; use tracing::warn; -use crate::codex::Codex; -use crate::codex::Session; -use crate::codex::TurnContext; use crate::codex_delegate::run_codex_thread_interactive; use crate::config::Config; use crate::config::Constrained; @@ -32,6 +29,9 @@ use crate::config::ManagedFeatures; use crate::config::NetworkProxySpec; use crate::config::Permissions; use crate::rollout::recorder::RolloutRecorder; +use crate::session::Codex; +use crate::session::session::Session; +use crate::session::turn_context::TurnContext; use codex_config::types::McpServerConfig; use codex_features::Feature; use codex_model_provider_info::ModelProviderInfo; diff --git a/codex-rs/core/src/guardian/tests.rs b/codex-rs/core/src/guardian/tests.rs index 58ca0bd04994..19007e9d3294 100644 --- a/codex-rs/core/src/guardian/tests.rs +++ b/codex-rs/core/src/guardian/tests.rs @@ -1,6 +1,4 @@ use super::*; -use crate::codex::Session; -use crate::codex::TurnContext; use crate::config::Config; use crate::config::ConfigOverrides; use crate::config::Constrained; @@ -14,6 +12,8 @@ use crate::config_loader::NetworkDomainPermissionToml; use crate::config_loader::NetworkDomainPermissionsToml; use crate::config_loader::RequirementSource; use crate::config_loader::Sourced; +use crate::session::session::Session; +use crate::session::turn_context::TurnContext; use crate::test_support; use codex_config::config_toml::ConfigToml; use codex_exec_server::LOCAL_FS; @@ -71,7 +71,7 @@ async fn guardian_test_session_and_turn( async fn guardian_test_session_and_turn_with_base_url( base_url: &str, ) -> (Arc, Arc) { - let (mut session, mut turn) = crate::codex::make_session_and_context().await; + let (mut session, mut turn) = crate::session::tests::make_session_and_context().await; session.conversation_id = fixed_guardian_parent_session_id(); let mut config = (*turn.config).clone(); config.model_provider.base_url = Some(format!("{base_url}/v1")); @@ -687,7 +687,7 @@ fn guardian_request_turn_id_prefers_network_access_owner_turn() { #[tokio::test] async fn cancelled_guardian_review_emits_terminal_abort_without_warning() { - let (session, turn, rx) = crate::codex::make_session_and_context_with_rx().await; + let (session, turn, rx) = crate::session::tests::make_session_and_context_with_rx().await; let cancel_token = CancellationToken::new(); cancel_token.cancel(); @@ -739,7 +739,7 @@ fn guardian_timeout_message_distinguishes_timeout_from_policy_denial() { #[tokio::test] async fn routes_approval_to_guardian_requires_auto_only_review_policy() { - let (_session, mut turn) = crate::codex::make_session_and_context().await; + let (_session, mut turn) = crate::session::tests::make_session_and_context().await; let mut config = (*turn.config).clone(); config.approvals_reviewer = ApprovalsReviewer::User; turn.config = Arc::new(config.clone()); @@ -876,7 +876,7 @@ async fn guardian_review_request_layout_matches_model_visible_request_snapshot() ) .await; - let (mut session, mut turn) = crate::codex::make_session_and_context().await; + let (mut session, mut turn) = crate::session::tests::make_session_and_context().await; session.conversation_id = fixed_guardian_parent_session_id(); let temp_cwd = TempDir::new()?; let mut config = (*turn.config).clone(); @@ -943,7 +943,7 @@ async fn guardian_review_request_layout_matches_model_visible_request_snapshot() #[tokio::test] async fn build_guardian_prompt_items_includes_parent_session_id() -> anyhow::Result<()> { - let (session, _) = crate::codex::make_session_and_context().await; + let (session, _) = crate::session::tests::make_session_and_context().await; let prompt = build_guardian_prompt_items( &session, /*retry_reason*/ None, @@ -1246,7 +1246,8 @@ async fn guardian_review_surfaces_responses_api_errors_in_rejection_reason() -> ) .await; - let (mut session, mut turn, rx) = crate::codex::make_session_and_context_with_rx().await; + let (mut session, mut turn, rx) = + crate::session::tests::make_session_and_context_with_rx().await; let mut config = (*turn.config).clone(); config.model_provider.base_url = Some(format!("{}/v1", server.uri())); config.user_instructions = None; diff --git a/codex-rs/core/src/hook_runtime.rs b/codex-rs/core/src/hook_runtime.rs index bca5246952ef..342fca91e828 100644 --- a/codex-rs/core/src/hook_runtime.rs +++ b/codex-rs/core/src/hook_runtime.rs @@ -31,9 +31,9 @@ use codex_protocol::protocol::HookStartedEvent; use codex_protocol::user_input::UserInput; use serde_json::Value; -use crate::codex::Session; -use crate::codex::TurnContext; use crate::event_mapping::parse_turn_item; +use crate::session::session::Session; +use crate::session::turn_context::TurnContext; use crate::tools::sandboxing::PermissionRequestPayload; pub(crate) struct HookRuntimeOutcome { @@ -483,7 +483,7 @@ mod tests { use super::additional_context_messages; use super::hook_run_analytics_payload; use super::hook_run_metric_tags; - use crate::codex::make_session_and_context; + use crate::session::tests::make_session_and_context; use codex_protocol::protocol::HookCompletedEvent; use codex_protocol::protocol::HookRunSummary; use codex_utils_absolute_path::test_support::PathBufExt; diff --git a/codex-rs/core/src/lib.rs b/codex-rs/core/src/lib.rs index 50777ad157a2..c41a4986763f 100644 --- a/codex-rs/core/src/lib.rs +++ b/codex-rs/core/src/lib.rs @@ -11,11 +11,11 @@ mod apps; mod arc_monitor; mod client; mod client_common; -pub(crate) mod codex; mod realtime_context; mod realtime_conversation; mod realtime_prompt; -pub use codex::SteerInputError; +pub(crate) mod session; +pub use session::SteerInputError; mod codex_thread; mod compact_remote; pub use codex_thread::CodexThread; diff --git a/codex-rs/core/src/mcp_openai_file.rs b/codex-rs/core/src/mcp_openai_file.rs index 720576747d6e..d6e6d1f9c072 100644 --- a/codex-rs/core/src/mcp_openai_file.rs +++ b/codex-rs/core/src/mcp_openai_file.rs @@ -10,8 +10,8 @@ //! Model-visible schema masking is owned by `codex-mcp` alongside MCP tool //! inventory, so this module only handles the execution-time argument rewrite. -use crate::codex::Session; -use crate::codex::TurnContext; +use crate::session::session::Session; +use crate::session::turn_context::TurnContext; use codex_api::upload_local_file; use codex_login::CodexAuth; use codex_model_provider::BearerAuthProvider; @@ -142,7 +142,7 @@ async fn build_uploaded_local_argument_value( #[cfg(test)] mod tests { use super::*; - use crate::codex::make_session_and_context; + use crate::session::tests::make_session_and_context; use codex_utils_absolute_path::AbsolutePathBuf; use pretty_assertions::assert_eq; use std::sync::Arc; diff --git a/codex-rs/core/src/mcp_skill_dependencies.rs b/codex-rs/core/src/mcp_skill_dependencies.rs index c12fe28cb286..c711d1a1585a 100644 --- a/codex-rs/core/src/mcp_skill_dependencies.rs +++ b/codex-rs/core/src/mcp_skill_dependencies.rs @@ -16,8 +16,8 @@ use tokio_util::sync::CancellationToken; use tracing::warn; use crate::SkillMetadata; -use crate::codex::Session; -use crate::codex::TurnContext; +use crate::session::session::Session; +use crate::session::turn_context::TurnContext; use crate::skills::model::SkillToolDependency; use codex_mcp::McpOAuthLoginSupport; use codex_mcp::mcp_permission_prompt_is_auto_approved; diff --git a/codex-rs/core/src/mcp_tool_call.rs b/codex-rs/core/src/mcp_tool_call.rs index b707d51890f0..87e574910dd6 100644 --- a/codex-rs/core/src/mcp_tool_call.rs +++ b/codex-rs/core/src/mcp_tool_call.rs @@ -12,8 +12,6 @@ use tracing::error; use crate::arc_monitor::ArcMonitorOutcome; use crate::arc_monitor::monitor_action; -use crate::codex::Session; -use crate::codex::TurnContext; use crate::config::Config; use crate::config::edit::ConfigEdit; use crate::config::edit::ConfigEditsBuilder; @@ -30,6 +28,8 @@ use crate::guardian::routes_approval_to_guardian; use crate::mcp_openai_file::rewrite_mcp_tool_arguments_for_openai_files; use crate::mcp_tool_approval_templates::RenderedMcpToolApprovalParam; use crate::mcp_tool_approval_templates::render_mcp_tool_approval_template; +use crate::session::session::Session; +use crate::session::turn_context::TurnContext; use codex_analytics::AppInvocation; use codex_analytics::InvocationType; use codex_analytics::build_track_events_context; diff --git a/codex-rs/core/src/mcp_tool_call_tests.rs b/codex-rs/core/src/mcp_tool_call_tests.rs index 68d2cbcb4bb2..1893ef054caf 100644 --- a/codex-rs/core/src/mcp_tool_call_tests.rs +++ b/codex-rs/core/src/mcp_tool_call_tests.rs @@ -1,7 +1,7 @@ use super::*; -use crate::codex::make_session_and_context; -use crate::codex::make_session_and_context_with_rx; use crate::config::ConfigBuilder; +use crate::session::tests::make_session_and_context; +use crate::session::tests::make_session_and_context_with_rx; use crate::state::ActiveTurn; use codex_config::CONFIG_TOML_FILE; use codex_config::config_toml::ConfigToml; diff --git a/codex-rs/core/src/memories/phase1.rs b/codex-rs/core/src/memories/phase1.rs index c005f4da4e27..9d46374f682e 100644 --- a/codex-rs/core/src/memories/phase1.rs +++ b/codex-rs/core/src/memories/phase1.rs @@ -1,7 +1,5 @@ use crate::Prompt; use crate::RolloutRecorder; -use crate::codex::Session; -use crate::codex::TurnContext; use crate::config::Config; use crate::contextual_user_message::is_memory_excluded_contextual_user_fragment; use crate::memories::metrics; @@ -10,6 +8,8 @@ use crate::memories::phase_one::PRUNE_BATCH_SIZE; use crate::memories::prompts::build_stage_one_input_message; use crate::rollout::INTERACTIVE_SESSION_SOURCES; use crate::rollout::policy::should_persist_response_item_for_memories; +use crate::session::session::Session; +use crate::session::turn_context::TurnContext; use codex_api::ResponseEvent; use codex_config::types::MemoriesConfig; use codex_otel::SessionTelemetry; diff --git a/codex-rs/core/src/memories/phase2.rs b/codex-rs/core/src/memories/phase2.rs index 44dc442f5813..cbdb09cb8146 100644 --- a/codex-rs/core/src/memories/phase2.rs +++ b/codex-rs/core/src/memories/phase2.rs @@ -1,7 +1,5 @@ use crate::agent::AgentStatus; use crate::agent::status::is_final as is_final_agent_status; -use crate::codex::Session; -use crate::codex::emit_subagent_session_started; use crate::config::Config; use crate::memories::extensions::PendingExtensionResourceRemoval; use crate::memories::extensions::find_old_extension_resources; @@ -13,6 +11,8 @@ use crate::memories::prompts::build_consolidation_prompt; use crate::memories::storage::rebuild_raw_memories_file_from_memories; use crate::memories::storage::rollout_summary_file_stem; use crate::memories::storage::sync_rollout_summaries_from_memories; +use crate::session::emit_subagent_session_started; +use crate::session::session::Session; use codex_config::Constrained; use codex_features::Feature; use codex_protocol::ThreadId; diff --git a/codex-rs/core/src/memories/start.rs b/codex-rs/core/src/memories/start.rs index f9d6802be96a..2cfaf9a87501 100644 --- a/codex-rs/core/src/memories/start.rs +++ b/codex-rs/core/src/memories/start.rs @@ -1,7 +1,7 @@ -use crate::codex::Session; use crate::config::Config; use crate::memories::phase1; use crate::memories::phase2; +use crate::session::session::Session; use codex_features::Feature; use codex_protocol::protocol::SessionSource; use std::sync::Arc; diff --git a/codex-rs/core/src/memories/tests.rs b/codex-rs/core/src/memories/tests.rs index 0ef5dbdf57ed..b991cab3db85 100644 --- a/codex-rs/core/src/memories/tests.rs +++ b/codex-rs/core/src/memories/tests.rs @@ -416,14 +416,14 @@ task_outcome: success mod phase2 { use crate::ThreadManager; use crate::agent::AgentControl; - use crate::codex::Session; - use crate::codex::make_session_and_context; use crate::config::Config; use crate::config::test_config; use crate::memories::memory_root; use crate::memories::phase2; use crate::memories::raw_memories_file; use crate::memories::rollout_summaries_dir; + use crate::session::session::Session; + use crate::session::tests::make_session_and_context; use chrono::Duration as ChronoDuration; use chrono::Utc; use codex_config::Constrained; diff --git a/codex-rs/core/src/prompt_debug.rs b/codex-rs/core/src/prompt_debug.rs index fb6448152320..9717163df2db 100644 --- a/codex-rs/core/src/prompt_debug.rs +++ b/codex-rs/core/src/prompt_debug.rs @@ -12,10 +12,10 @@ use codex_protocol::protocol::SessionSource; use codex_protocol::user_input::UserInput; use tokio_util::sync::CancellationToken; -use crate::codex::Session; -use crate::codex::build_prompt; -use crate::codex::built_tools; use crate::config::Config; +use crate::session::session::Session; +use crate::session::turn::build_prompt; +use crate::session::turn::built_tools; use crate::thread_manager::ThreadManager; /// Build the model-visible `input` list for a single debug turn. diff --git a/codex-rs/core/src/realtime_context.rs b/codex-rs/core/src/realtime_context.rs index 129a7de64295..3f1880ba2533 100644 --- a/codex-rs/core/src/realtime_context.rs +++ b/codex-rs/core/src/realtime_context.rs @@ -1,6 +1,6 @@ -use crate::codex::Session; use crate::compact::content_items_to_text; use crate::event_mapping::is_contextual_user_message_content; +use crate::session::session::Session; use chrono::Utc; use codex_exec_server::LOCAL_FS; use codex_git_utils::resolve_root_git_project_for_trust; diff --git a/codex-rs/core/src/realtime_conversation.rs b/codex-rs/core/src/realtime_conversation.rs index 234dd78f389c..0d1dc17c85bb 100644 --- a/codex-rs/core/src/realtime_conversation.rs +++ b/codex-rs/core/src/realtime_conversation.rs @@ -1,7 +1,7 @@ use crate::client::ModelClient; -use crate::codex::Session; use crate::realtime_context::build_realtime_startup_context; use crate::realtime_prompt::prepare_realtime_backend_prompt; +use crate::session::session::Session; use anyhow::Context; use async_channel::Receiver; use async_channel::RecvError; diff --git a/codex-rs/core/src/codex/handlers.rs b/codex-rs/core/src/session/handlers.rs similarity index 99% rename from codex-rs/core/src/codex/handlers.rs rename to codex-rs/core/src/session/handlers.rs index 7e0ba45dadd0..72cfc5782253 100644 --- a/codex-rs/core/src/codex/handlers.rs +++ b/codex-rs/core/src/session/handlers.rs @@ -9,11 +9,10 @@ use tracing::Instrument; use tracing::debug_span; use tracing::info_span; -use crate::codex::Session; -use crate::codex::SessionSettingsUpdate; -use crate::codex::SteerInputError; +use crate::session::SteerInputError; +use crate::session::session::Session; +use crate::session::session::SessionSettingsUpdate; -use crate::codex::spawn_review_thread; use crate::config::Config; use crate::config_loader::CloudRequirementsLoader; use crate::config_loader::LoaderOverrides; @@ -22,6 +21,7 @@ use crate::realtime_context::REALTIME_TURN_TOKEN_BUDGET; use crate::realtime_context::truncate_realtime_text_to_token_budget; use crate::realtime_conversation::REALTIME_USER_TEXT_PREFIX; use crate::realtime_conversation::prefix_realtime_v2_text; +use crate::session::spawn_review_thread; use codex_exec_server::LOCAL_FS; use codex_features::Feature; use codex_utils_absolute_path::AbsolutePathBuf; diff --git a/codex-rs/core/src/codex/mcp.rs b/codex-rs/core/src/session/mcp.rs similarity index 100% rename from codex-rs/core/src/codex/mcp.rs rename to codex-rs/core/src/session/mcp.rs diff --git a/codex-rs/core/src/codex.rs b/codex-rs/core/src/session/mod.rs similarity index 99% rename from codex-rs/core/src/codex.rs rename to codex-rs/core/src/session/mod.rs index 1b81af7058d1..fd2623f07b1e 100644 --- a/codex-rs/core/src/codex.rs +++ b/codex-rs/core/src/session/mod.rs @@ -166,30 +166,27 @@ mod handlers; mod mcp; mod review; mod rollout_reconstruction; -mod session; -mod turn; -mod turn_context; +#[allow(clippy::module_inception)] +pub(crate) mod session; +pub(crate) mod turn; +pub(crate) mod turn_context; #[cfg(test)] use self::handlers::submission_dispatch_span; use self::handlers::submission_loop; use self::review::spawn_review_thread; -pub(crate) use self::session::AppServerClientMetadata; -pub(crate) use self::session::Session; -pub(crate) use self::session::SessionConfiguration; -pub(crate) use self::session::SessionSettingsUpdate; +use self::session::AppServerClientMetadata; +use self::session::Session; +use self::session::SessionConfiguration; +use self::session::SessionSettingsUpdate; #[cfg(test)] use self::turn::AssistantMessageStreamParsers; -pub(crate) use self::turn::build_prompt; -pub(crate) use self::turn::built_tools; #[cfg(test)] use self::turn::collect_explicit_app_ids_from_skill_items; #[cfg(test)] use self::turn::filter_connectors_for_input; -pub(crate) use self::turn::get_last_assistant_message_from_turn; use self::turn::realtime_text_for_event; -pub(crate) use self::turn::run_turn; -pub(crate) use self::turn_context::TurnContext; -pub(crate) use self::turn_context::TurnSkillsContext; +use self::turn_context::TurnContext; +use self::turn_context::TurnSkillsContext; #[cfg(test)] mod rollout_reconstruction_tests; @@ -3092,15 +3089,6 @@ fn errors_to_info(errors: &[SkillError]) -> Vec { } use crate::memories::prompts::build_memory_tool_developer_instructions; -#[cfg(test)] -pub(crate) use tests::make_session_and_context; -#[cfg(test)] -pub(crate) use tests::make_session_and_context_with_dynamic_tools_and_rx; -#[cfg(test)] -pub(crate) use tests::make_session_and_context_with_rx; -#[cfg(test)] -pub(crate) use tests::make_session_configuration_for_tests; #[cfg(test)] -#[path = "codex_tests.rs"] -mod tests; +pub(crate) mod tests; diff --git a/codex-rs/core/src/codex/review.rs b/codex-rs/core/src/session/review.rs similarity index 100% rename from codex-rs/core/src/codex/review.rs rename to codex-rs/core/src/session/review.rs diff --git a/codex-rs/core/src/codex/rollout_reconstruction.rs b/codex-rs/core/src/session/rollout_reconstruction.rs similarity index 100% rename from codex-rs/core/src/codex/rollout_reconstruction.rs rename to codex-rs/core/src/session/rollout_reconstruction.rs diff --git a/codex-rs/core/src/codex/rollout_reconstruction_tests.rs b/codex-rs/core/src/session/rollout_reconstruction_tests.rs similarity index 99% rename from codex-rs/core/src/codex/rollout_reconstruction_tests.rs rename to codex-rs/core/src/session/rollout_reconstruction_tests.rs index 432cfa7a4073..3dca7f0ce6d6 100644 --- a/codex-rs/core/src/codex/rollout_reconstruction_tests.rs +++ b/codex-rs/core/src/session/rollout_reconstruction_tests.rs @@ -1,5 +1,6 @@ use super::*; +use super::tests::make_session_and_context; use codex_protocol::AgentPath; use codex_protocol::ThreadId; use codex_protocol::models::ContentItem; diff --git a/codex-rs/core/src/codex/session.rs b/codex-rs/core/src/session/session.rs similarity index 100% rename from codex-rs/core/src/codex/session.rs rename to codex-rs/core/src/session/session.rs diff --git a/codex-rs/core/src/snapshots/codex_core__codex_tests__fork_startup_context_then_first_turn_diff.snap b/codex-rs/core/src/session/snapshots/codex_core__codex_tests__fork_startup_context_then_first_turn_diff.snap similarity index 90% rename from codex-rs/core/src/snapshots/codex_core__codex_tests__fork_startup_context_then_first_turn_diff.snap rename to codex-rs/core/src/session/snapshots/codex_core__codex_tests__fork_startup_context_then_first_turn_diff.snap index d55f29a2a7bb..f9a808f65e43 100644 --- a/codex-rs/core/src/snapshots/codex_core__codex_tests__fork_startup_context_then_first_turn_diff.snap +++ b/codex-rs/core/src/session/snapshots/codex_core__codex_tests__fork_startup_context_then_first_turn_diff.snap @@ -1,6 +1,6 @@ --- -source: core/src/codex_tests.rs -assertion_line: 1254 +source: core/src/session/tests.rs +assertion_line: 1619 expression: snapshot --- Scenario: First request after fork when startup preserves the parent baseline, the fork changes approval policy, and the first forked turn enters plan mode. diff --git a/codex-rs/core/src/codex_tests.rs b/codex-rs/core/src/session/tests.rs similarity index 99% rename from codex-rs/core/src/codex_tests.rs rename to codex-rs/core/src/session/tests.rs index 2a05ccca0378..d2e0d5dcb303 100644 --- a/codex-rs/core/src/codex_tests.rs +++ b/codex-rs/core/src/session/tests.rs @@ -120,7 +120,6 @@ use std::path::PathBuf; use std::sync::Arc; use std::time::Duration as StdDuration; -#[path = "codex_tests_guardian.rs"] mod guardian_tests; struct InstructionsTestCase { @@ -870,7 +869,7 @@ async fn user_shell_commands_do_not_inherit_managed_network_proxy() -> anyhow::R #[tokio::test] async fn get_base_instructions_no_user_content() { let prompt_with_apply_patch_instructions = - include_str!("../prompt_with_apply_patch_instructions.md"); + include_str!("../../prompt_with_apply_patch_instructions.md"); let models_response = bundled_models_response() .unwrap_or_else(|err| panic!("bundled models.json should parse: {err}")); let model_info_for_slug = |slug: &str, config: &Config| { diff --git a/codex-rs/core/src/codex_tests_guardian.rs b/codex-rs/core/src/session/tests/guardian_tests.rs similarity index 100% rename from codex-rs/core/src/codex_tests_guardian.rs rename to codex-rs/core/src/session/tests/guardian_tests.rs diff --git a/codex-rs/core/src/codex/turn.rs b/codex-rs/core/src/session/turn.rs similarity index 99% rename from codex-rs/core/src/codex/turn.rs rename to codex-rs/core/src/session/turn.rs index 5749bda84fa9..ae7088c60372 100644 --- a/codex-rs/core/src/codex/turn.rs +++ b/codex-rs/core/src/session/turn.rs @@ -8,9 +8,6 @@ use crate::build_skill_injections; use crate::client::ModelClientSession; use crate::client_common::Prompt; use crate::client_common::ResponseEvent; -use crate::codex::PreviousTurnSettings; -use crate::codex::Session; -use crate::codex::TurnContext; use crate::collect_env_var_dependencies; use crate::collect_explicit_skill_mentions; use crate::compact::InitialContextInjection; @@ -40,6 +37,9 @@ use crate::mentions::collect_tool_mentions_from_messages; use crate::parse_turn_item; use crate::plugins::build_plugin_injections; use crate::resolve_skill_dependencies_for_turn; +use crate::session::PreviousTurnSettings; +use crate::session::session::Session; +use crate::session::turn_context::TurnContext; use crate::stream_events_utils::HandleOutputCtx; use crate::stream_events_utils::handle_non_tool_response_item; use crate::stream_events_utils::handle_output_item_done; diff --git a/codex-rs/core/src/codex/turn_context.rs b/codex-rs/core/src/session/turn_context.rs similarity index 100% rename from codex-rs/core/src/codex/turn_context.rs rename to codex-rs/core/src/session/turn_context.rs diff --git a/codex-rs/core/src/session_startup_prewarm.rs b/codex-rs/core/src/session_startup_prewarm.rs index acd9232c09f8..71afdba6f98a 100644 --- a/codex-rs/core/src/session_startup_prewarm.rs +++ b/codex-rs/core/src/session_startup_prewarm.rs @@ -9,10 +9,10 @@ use tracing::info; use tracing::warn; use crate::client::ModelClientSession; -use crate::codex::INITIAL_SUBMIT_ID; -use crate::codex::Session; -use crate::codex::build_prompt; -use crate::codex::built_tools; +use crate::session::INITIAL_SUBMIT_ID; +use crate::session::session::Session; +use crate::session::turn::build_prompt; +use crate::session::turn::built_tools; use codex_otel::STARTUP_PREWARM_AGE_AT_FIRST_TURN_METRIC; use codex_otel::STARTUP_PREWARM_DURATION_METRIC; use codex_otel::SessionTelemetry; diff --git a/codex-rs/core/src/skills.rs b/codex-rs/core/src/skills.rs index ed2fa20ab2e1..84c0af5f3eb9 100644 --- a/codex-rs/core/src/skills.rs +++ b/codex-rs/core/src/skills.rs @@ -3,9 +3,9 @@ use std::collections::HashSet; use std::env; use std::sync::Arc; -use crate::codex::Session; -use crate::codex::TurnContext; use crate::config::Config; +use crate::session::session::Session; +use crate::session::turn_context::TurnContext; use codex_analytics::InvocationType; use codex_analytics::SkillInvocation; use codex_analytics::build_track_events_context; diff --git a/codex-rs/core/src/state/session.rs b/codex-rs/core/src/state/session.rs index 42ed15e87ae7..bf6e06d8a93b 100644 --- a/codex-rs/core/src/state/session.rs +++ b/codex-rs/core/src/state/session.rs @@ -7,9 +7,9 @@ use std::collections::HashMap; use std::collections::HashSet; use crate::agent_identity::RegisteredAgentTask; -use crate::codex::PreviousTurnSettings; -use crate::codex::SessionConfiguration; use crate::context_manager::ContextManager; +use crate::session::PreviousTurnSettings; +use crate::session::session::SessionConfiguration; use crate::session_startup_prewarm::SessionStartupPrewarmHandle; use codex_protocol::protocol::RateLimitSnapshot; use codex_protocol::protocol::TokenUsage; diff --git a/codex-rs/core/src/state/session_tests.rs b/codex-rs/core/src/state/session_tests.rs index 6816c8731dab..f9c64d0eb20f 100644 --- a/codex-rs/core/src/state/session_tests.rs +++ b/codex-rs/core/src/state/session_tests.rs @@ -1,6 +1,6 @@ use super::*; use crate::agent_identity::RegisteredAgentTask; -use crate::codex::make_session_configuration_for_tests; +use crate::session::tests::make_session_configuration_for_tests; use codex_protocol::protocol::CreditsSnapshot; use codex_protocol::protocol::RateLimitWindow; use pretty_assertions::assert_eq; diff --git a/codex-rs/core/src/state/turn.rs b/codex-rs/core/src/state/turn.rs index 214fd8be150d..18a68600b83a 100644 --- a/codex-rs/core/src/state/turn.rs +++ b/codex-rs/core/src/state/turn.rs @@ -17,7 +17,7 @@ use codex_rmcp_client::ElicitationResponse; use rmcp::model::RequestId; use tokio::sync::oneshot; -use crate::codex::TurnContext; +use crate::session::turn_context::TurnContext; use crate::tasks::AnySessionTask; use codex_protocol::models::PermissionProfile; use codex_protocol::protocol::ReviewDecision; diff --git a/codex-rs/core/src/stream_events_utils.rs b/codex-rs/core/src/stream_events_utils.rs index 3838d6ed0168..c6cc79bc495f 100644 --- a/codex-rs/core/src/stream_events_utils.rs +++ b/codex-rs/core/src/stream_events_utils.rs @@ -8,12 +8,12 @@ use codex_protocol::items::TurnItem; use codex_utils_stream_parser::strip_citations; use tokio_util::sync::CancellationToken; -use crate::codex::Session; -use crate::codex::TurnContext; use crate::function_tool::FunctionCallError; use crate::memories::citations::get_thread_id_from_citations; use crate::memories::citations::parse_memory_citation; use crate::parse_turn_item; +use crate::session::session::Session; +use crate::session::turn_context::TurnContext; use crate::tools::parallel::ToolCallRuntime; use crate::tools::router::ToolRouter; use codex_protocol::error::CodexErr; diff --git a/codex-rs/core/src/stream_events_utils_tests.rs b/codex-rs/core/src/stream_events_utils_tests.rs index 2634a8874204..7a82a25dad0d 100644 --- a/codex-rs/core/src/stream_events_utils_tests.rs +++ b/codex-rs/core/src/stream_events_utils_tests.rs @@ -4,7 +4,7 @@ use super::image_generation_artifact_path; use super::last_assistant_message_from_item; use super::response_item_may_include_external_context; use super::save_image_generation_result; -use crate::codex::make_session_and_context; +use crate::session::tests::make_session_and_context; use codex_protocol::error::CodexErr; use codex_protocol::items::TurnItem; use codex_protocol::models::ContentItem; diff --git a/codex-rs/core/src/tasks/compact.rs b/codex-rs/core/src/tasks/compact.rs index aac6d2cb802a..86b2e24c7b0d 100644 --- a/codex-rs/core/src/tasks/compact.rs +++ b/codex-rs/core/src/tasks/compact.rs @@ -2,7 +2,7 @@ use std::sync::Arc; use super::SessionTask; use super::SessionTaskContext; -use crate::codex::TurnContext; +use crate::session::turn_context::TurnContext; use crate::state::TaskKind; use codex_protocol::user_input::UserInput; use tokio_util::sync::CancellationToken; diff --git a/codex-rs/core/src/tasks/ghost_snapshot.rs b/codex-rs/core/src/tasks/ghost_snapshot.rs index a9cf19cb4d64..b9125d104321 100644 --- a/codex-rs/core/src/tasks/ghost_snapshot.rs +++ b/codex-rs/core/src/tasks/ghost_snapshot.rs @@ -1,4 +1,4 @@ -use crate::codex::TurnContext; +use crate::session::turn_context::TurnContext; use crate::state::TaskKind; use crate::tasks::SessionTask; use crate::tasks::SessionTaskContext; diff --git a/codex-rs/core/src/tasks/mod.rs b/codex-rs/core/src/tasks/mod.rs index f17017316e53..2064a5a5d5fb 100644 --- a/codex-rs/core/src/tasks/mod.rs +++ b/codex-rs/core/src/tasks/mod.rs @@ -19,14 +19,14 @@ use tracing::info_span; use tracing::trace; use tracing::warn; -use crate::codex::Session; -use crate::codex::TurnContext; use crate::contextual_user_message::TURN_ABORTED_CLOSE_TAG; use crate::contextual_user_message::TURN_ABORTED_OPEN_TAG; use crate::hook_runtime::PendingInputHookDisposition; use crate::hook_runtime::inspect_pending_input; use crate::hook_runtime::record_additional_contexts; use crate::hook_runtime::record_pending_input; +use crate::session::session::Session; +use crate::session::turn_context::TurnContext; use crate::state::ActiveTurn; use crate::state::RunningTask; use crate::state::TaskKind; diff --git a/codex-rs/core/src/tasks/regular.rs b/codex-rs/core/src/tasks/regular.rs index 2a26dbccad3e..d64b83f01b93 100644 --- a/codex-rs/core/src/tasks/regular.rs +++ b/codex-rs/core/src/tasks/regular.rs @@ -2,8 +2,8 @@ use std::sync::Arc; use tokio_util::sync::CancellationToken; -use crate::codex::TurnContext; -use crate::codex::run_turn; +use crate::session::turn::run_turn; +use crate::session::turn_context::TurnContext; use crate::session_startup_prewarm::SessionStartupPrewarmResolution; use crate::state::TaskKind; use codex_protocol::protocol::EventMsg; diff --git a/codex-rs/core/src/tasks/review.rs b/codex-rs/core/src/tasks/review.rs index a1cc071108c0..c844f6ce231e 100644 --- a/codex-rs/core/src/tasks/review.rs +++ b/codex-rs/core/src/tasks/review.rs @@ -17,12 +17,12 @@ use codex_protocol::protocol::SubAgentSource; use codex_utils_template::Template; use tokio_util::sync::CancellationToken; -use crate::codex::Session; -use crate::codex::TurnContext; use crate::codex_delegate::run_codex_thread_one_shot; use crate::config::Constrained; use crate::review_format::format_review_findings_block; use crate::review_format::render_review_output_text; +use crate::session::session::Session; +use crate::session::turn_context::TurnContext; use crate::state::TaskKind; use codex_features::Feature; use codex_protocol::user_input::UserInput; diff --git a/codex-rs/core/src/tasks/undo.rs b/codex-rs/core/src/tasks/undo.rs index dd6553009243..bb5f50362b64 100644 --- a/codex-rs/core/src/tasks/undo.rs +++ b/codex-rs/core/src/tasks/undo.rs @@ -1,6 +1,6 @@ use std::sync::Arc; -use crate::codex::TurnContext; +use crate::session::turn_context::TurnContext; use crate::state::TaskKind; use crate::tasks::SessionTask; use crate::tasks::SessionTaskContext; diff --git a/codex-rs/core/src/tasks/user_shell.rs b/codex-rs/core/src/tasks/user_shell.rs index 8b108eee0662..7942d8d28ae2 100644 --- a/codex-rs/core/src/tasks/user_shell.rs +++ b/codex-rs/core/src/tasks/user_shell.rs @@ -8,12 +8,12 @@ use tokio_util::sync::CancellationToken; use tracing::error; use uuid::Uuid; -use crate::codex::TurnContext; use crate::exec::ExecCapturePolicy; use crate::exec::StdoutStream; use crate::exec::execute_exec_request; use crate::exec_env::create_env; use crate::sandboxing::ExecRequest; +use crate::session::turn_context::TurnContext; use crate::state::TaskKind; use crate::tools::format_exec_output_str; use crate::tools::runtimes::maybe_wrap_shell_lc_with_snapshot; @@ -32,7 +32,7 @@ use codex_shell_command::parse_command::parse_command; use super::SessionTask; use super::SessionTaskContext; -use crate::codex::Session; +use crate::session::session::Session; use codex_protocol::models::ResponseInputItem; use codex_protocol::models::ResponseItem; use codex_protocol::permissions::FileSystemSandboxPolicy; diff --git a/codex-rs/core/src/thread_manager.rs b/codex-rs/core/src/thread_manager.rs index b8ad75b49e1e..03bf768ac50f 100644 --- a/codex-rs/core/src/thread_manager.rs +++ b/codex-rs/core/src/thread_manager.rs @@ -1,9 +1,5 @@ use crate::SkillsManager; use crate::agent::AgentControl; -use crate::codex::Codex; -use crate::codex::CodexSpawnArgs; -use crate::codex::CodexSpawnOk; -use crate::codex::INITIAL_SUBMIT_ID; use crate::codex_thread::CodexThread; use crate::config::Config; use crate::file_watcher::FileWatcher; @@ -11,6 +7,10 @@ use crate::mcp::McpManager; use crate::plugins::PluginsManager; use crate::rollout::RolloutRecorder; use crate::rollout::truncation; +use crate::session::Codex; +use crate::session::CodexSpawnArgs; +use crate::session::CodexSpawnOk; +use crate::session::INITIAL_SUBMIT_ID; use crate::shell_snapshot::ShellSnapshot; use crate::skills_watcher::SkillsWatcher; use crate::skills_watcher::SkillsWatcherEvent; diff --git a/codex-rs/core/src/thread_manager_tests.rs b/codex-rs/core/src/thread_manager_tests.rs index 06f89fc72824..fe2039e89bc4 100644 --- a/codex-rs/core/src/thread_manager_tests.rs +++ b/codex-rs/core/src/thread_manager_tests.rs @@ -1,7 +1,7 @@ use super::*; -use crate::codex::make_session_and_context; use crate::config::test_config; use crate::rollout::RolloutRecorder; +use crate::session::tests::make_session_and_context; use crate::tasks::interrupted_turn_history_marker; use codex_models_manager::collaboration_mode_presets::CollaborationModesConfig; use codex_models_manager::manager::RefreshStrategy; diff --git a/codex-rs/core/src/thread_rollout_truncation_tests.rs b/codex-rs/core/src/thread_rollout_truncation_tests.rs index d1380b7d45b0..ccedc754679c 100644 --- a/codex-rs/core/src/thread_rollout_truncation_tests.rs +++ b/codex-rs/core/src/thread_rollout_truncation_tests.rs @@ -1,5 +1,5 @@ use super::*; -use crate::codex::make_session_and_context; +use crate::session::tests::make_session_and_context; use codex_protocol::AgentPath; use codex_protocol::models::ContentItem; use codex_protocol::models::ReasoningItemReasoningSummary; diff --git a/codex-rs/core/src/tools/code_mode/execute_handler.rs b/codex-rs/core/src/tools/code_mode/execute_handler.rs index 8eaa85b56485..ac452dc9f2b4 100644 --- a/codex-rs/core/src/tools/code_mode/execute_handler.rs +++ b/codex-rs/core/src/tools/code_mode/execute_handler.rs @@ -15,8 +15,8 @@ pub struct CodeModeExecuteHandler; impl CodeModeExecuteHandler { async fn execute( &self, - session: std::sync::Arc, - turn: std::sync::Arc, + session: std::sync::Arc, + turn: std::sync::Arc, call_id: String, code: String, ) -> Result { diff --git a/codex-rs/core/src/tools/code_mode/mod.rs b/codex-rs/core/src/tools/code_mode/mod.rs index 7d66d56c3973..504983639366 100644 --- a/codex-rs/core/src/tools/code_mode/mod.rs +++ b/codex-rs/core/src/tools/code_mode/mod.rs @@ -15,11 +15,11 @@ use codex_protocol::models::ResponseInputItem; use serde_json::Value as JsonValue; use tokio_util::sync::CancellationToken; -use crate::codex::Session; -use crate::codex::TurnContext; use crate::function_tool::FunctionCallError; use crate::original_image_detail::can_request_original_image_detail; use crate::original_image_detail::sanitize_original_image_detail as sanitize_image_detail_items; +use crate::session::session::Session; +use crate::session::turn_context::TurnContext; use crate::tools::ToolRouter; use crate::tools::context::FunctionToolOutput; use crate::tools::context::SharedTurnDiffTracker; diff --git a/codex-rs/core/src/tools/context.rs b/codex-rs/core/src/tools/context.rs index 60bcbcda2357..a2f3a7f7c691 100644 --- a/codex-rs/core/src/tools/context.rs +++ b/codex-rs/core/src/tools/context.rs @@ -1,6 +1,6 @@ -use crate::codex::Session; -use crate::codex::TurnContext; use crate::original_image_detail::sanitize_original_image_detail; +use crate::session::session::Session; +use crate::session::turn_context::TurnContext; use crate::tools::TELEMETRY_PREVIEW_MAX_BYTES; use crate::tools::TELEMETRY_PREVIEW_MAX_LINES; use crate::tools::TELEMETRY_PREVIEW_TRUNCATION_NOTICE; diff --git a/codex-rs/core/src/tools/events.rs b/codex-rs/core/src/tools/events.rs index 9a6712efcb52..2b215a043d2e 100644 --- a/codex-rs/core/src/tools/events.rs +++ b/codex-rs/core/src/tools/events.rs @@ -1,6 +1,6 @@ -use crate::codex::Session; -use crate::codex::TurnContext; use crate::function_tool::FunctionCallError; +use crate::session::session::Session; +use crate::session::turn_context::TurnContext; use crate::tools::context::SharedTurnDiffTracker; use crate::tools::sandboxing::ToolError; use codex_protocol::error::CodexErr; diff --git a/codex-rs/core/src/tools/handlers/agent_jobs.rs b/codex-rs/core/src/tools/handlers/agent_jobs.rs index e6119a3fc9d2..e3b00960b923 100644 --- a/codex-rs/core/src/tools/handlers/agent_jobs.rs +++ b/codex-rs/core/src/tools/handlers/agent_jobs.rs @@ -1,10 +1,10 @@ use crate::agent::exceeds_thread_spawn_depth_limit; use crate::agent::next_thread_spawn_depth; use crate::agent::status::is_final; -use crate::codex::Session; -use crate::codex::TurnContext; use crate::config::Config; use crate::function_tool::FunctionCallError; +use crate::session::session::Session; +use crate::session::turn_context::TurnContext; use crate::tools::context::FunctionToolOutput; use crate::tools::context::ToolInvocation; use crate::tools::context::ToolPayload; diff --git a/codex-rs/core/src/tools/handlers/apply_patch.rs b/codex-rs/core/src/tools/handlers/apply_patch.rs index 0452b4578f3b..e713c59b4e0c 100644 --- a/codex-rs/core/src/tools/handlers/apply_patch.rs +++ b/codex-rs/core/src/tools/handlers/apply_patch.rs @@ -7,9 +7,9 @@ use std::sync::Arc; use crate::apply_patch; use crate::apply_patch::InternalApplyPatchInvocation; use crate::apply_patch::convert_apply_patch_to_protocol; -use crate::codex::Session; -use crate::codex::TurnContext; use crate::function_tool::FunctionCallError; +use crate::session::session::Session; +use crate::session::turn_context::TurnContext; use crate::tools::context::ApplyPatchToolOutput; use crate::tools::context::FunctionToolOutput; use crate::tools::context::SharedTurnDiffTracker; diff --git a/codex-rs/core/src/tools/handlers/dynamic.rs b/codex-rs/core/src/tools/handlers/dynamic.rs index 742c69a48279..140d586be9e8 100644 --- a/codex-rs/core/src/tools/handlers/dynamic.rs +++ b/codex-rs/core/src/tools/handlers/dynamic.rs @@ -1,6 +1,6 @@ -use crate::codex::Session; -use crate::codex::TurnContext; use crate::function_tool::FunctionCallError; +use crate::session::session::Session; +use crate::session::turn_context::TurnContext; use crate::tools::context::FunctionToolOutput; use crate::tools::context::ToolInvocation; use crate::tools::context::ToolPayload; diff --git a/codex-rs/core/src/tools/handlers/js_repl.rs b/codex-rs/core/src/tools/handlers/js_repl.rs index a492397ad2f4..64e6ea29fe7e 100644 --- a/codex-rs/core/src/tools/handlers/js_repl.rs +++ b/codex-rs/core/src/tools/handlers/js_repl.rs @@ -54,8 +54,8 @@ fn build_js_repl_exec_output( } async fn emit_js_repl_exec_begin( - session: &crate::codex::Session, - turn: &crate::codex::TurnContext, + session: &crate::session::session::Session, + turn: &crate::session::turn_context::TurnContext, call_id: &str, ) { let emitter = ToolEmitter::shell( @@ -69,8 +69,8 @@ async fn emit_js_repl_exec_begin( } async fn emit_js_repl_exec_end( - session: &crate::codex::Session, - turn: &crate::codex::TurnContext, + session: &crate::session::session::Session, + turn: &crate::session::turn_context::TurnContext, call_id: &str, output: &str, error: Option<&str>, diff --git a/codex-rs/core/src/tools/handlers/js_repl_tests.rs b/codex-rs/core/src/tools/handlers/js_repl_tests.rs index 69170dc29d41..0f3274409b92 100644 --- a/codex-rs/core/src/tools/handlers/js_repl_tests.rs +++ b/codex-rs/core/src/tools/handlers/js_repl_tests.rs @@ -1,7 +1,7 @@ use std::time::Duration; use super::parse_freeform_args; -use crate::codex::make_session_and_context_with_rx; +use crate::session::tests::make_session_and_context_with_rx; use codex_protocol::protocol::EventMsg; use codex_protocol::protocol::ExecCommandSource; use pretty_assertions::assert_eq; diff --git a/codex-rs/core/src/tools/handlers/mcp_resource.rs b/codex-rs/core/src/tools/handlers/mcp_resource.rs index d7d0256dda6c..67f44cb6995a 100644 --- a/codex-rs/core/src/tools/handlers/mcp_resource.rs +++ b/codex-rs/core/src/tools/handlers/mcp_resource.rs @@ -17,9 +17,9 @@ use serde::Serialize; use serde::de::DeserializeOwned; use serde_json::Value; -use crate::codex::Session; -use crate::codex::TurnContext; use crate::function_tool::FunctionCallError; +use crate::session::session::Session; +use crate::session::turn_context::TurnContext; use crate::tools::context::FunctionToolOutput; use crate::tools::context::ToolInvocation; use crate::tools::context::ToolPayload; diff --git a/codex-rs/core/src/tools/handlers/mod.rs b/codex-rs/core/src/tools/handlers/mod.rs index 6b48680b8a34..63dd771b0841 100644 --- a/codex-rs/core/src/tools/handlers/mod.rs +++ b/codex-rs/core/src/tools/handlers/mod.rs @@ -28,9 +28,9 @@ use serde::Deserialize; use serde_json::Value; use std::path::Path; -use crate::codex::Session; use crate::function_tool::FunctionCallError; use crate::sandboxing::SandboxPermissions; +use crate::session::session::Session; pub(crate) use crate::tools::code_mode::CodeModeExecuteHandler; pub(crate) use crate::tools::code_mode::CodeModeWaitHandler; pub use apply_patch::ApplyPatchHandler; diff --git a/codex-rs/core/src/tools/handlers/multi_agents.rs b/codex-rs/core/src/tools/handlers/multi_agents.rs index 984e09a968a6..2d70d3e92dd8 100644 --- a/codex-rs/core/src/tools/handlers/multi_agents.rs +++ b/codex-rs/core/src/tools/handlers/multi_agents.rs @@ -7,9 +7,9 @@ use crate::agent::AgentStatus; use crate::agent::exceeds_thread_spawn_depth_limit; -use crate::codex::Session; -use crate::codex::TurnContext; use crate::function_tool::FunctionCallError; +use crate::session::session::Session; +use crate::session::turn_context::TurnContext; use crate::tools::context::ToolInvocation; use crate::tools::context::ToolOutput; use crate::tools::context::ToolPayload; diff --git a/codex-rs/core/src/tools/handlers/multi_agents_common.rs b/codex-rs/core/src/tools/handlers/multi_agents_common.rs index fa9d10b7eb27..396496a353c7 100644 --- a/codex-rs/core/src/tools/handlers/multi_agents_common.rs +++ b/codex-rs/core/src/tools/handlers/multi_agents_common.rs @@ -1,8 +1,8 @@ use crate::agent::AgentStatus; -use crate::codex::Session; -use crate::codex::TurnContext; use crate::config::Config; use crate::function_tool::FunctionCallError; +use crate::session::session::Session; +use crate::session::turn_context::TurnContext; use crate::tools::context::FunctionToolOutput; use crate::tools::context::ToolOutput; use crate::tools::context::ToolPayload; diff --git a/codex-rs/core/src/tools/handlers/multi_agents_tests.rs b/codex-rs/core/src/tools/handlers/multi_agents_tests.rs index 6adb08c2215f..3a525e69eb4c 100644 --- a/codex-rs/core/src/tools/handlers/multi_agents_tests.rs +++ b/codex-rs/core/src/tools/handlers/multi_agents_tests.rs @@ -1,10 +1,10 @@ use super::*; use crate::CodexThread; use crate::ThreadManager; -use crate::codex::make_session_and_context; use crate::config::AgentRoleConfig; use crate::config::DEFAULT_AGENT_MAX_DEPTH; use crate::function_tool::FunctionCallError; +use crate::session::tests::make_session_and_context; use crate::session_prefix::format_subagent_notification_message; use crate::state::TaskKind; use crate::tasks::SessionTask; @@ -60,7 +60,7 @@ use tokio::time::timeout; use tokio_util::sync::CancellationToken; fn invocation( - session: Arc, + session: Arc, turn: Arc, tool_name: &str, payload: ToolPayload, diff --git a/codex-rs/core/src/tools/handlers/plan.rs b/codex-rs/core/src/tools/handlers/plan.rs index fb1c708ada9c..71636229ebf9 100644 --- a/codex-rs/core/src/tools/handlers/plan.rs +++ b/codex-rs/core/src/tools/handlers/plan.rs @@ -1,6 +1,6 @@ -use crate::codex::Session; -use crate::codex::TurnContext; use crate::function_tool::FunctionCallError; +use crate::session::session::Session; +use crate::session::turn_context::TurnContext; use crate::tools::context::ToolInvocation; use crate::tools::context::ToolOutput; use crate::tools::context::ToolPayload; diff --git a/codex-rs/core/src/tools/handlers/request_user_input_tests.rs b/codex-rs/core/src/tools/handlers/request_user_input_tests.rs index 1dac095f1b33..1f9db34b26f5 100644 --- a/codex-rs/core/src/tools/handlers/request_user_input_tests.rs +++ b/codex-rs/core/src/tools/handlers/request_user_input_tests.rs @@ -1,5 +1,5 @@ use super::*; -use crate::codex::make_session_and_context; +use crate::session::tests::make_session_and_context; use crate::tools::context::ToolInvocation; use crate::tools::context::ToolPayload; use crate::turn_diff_tracker::TurnDiffTracker; diff --git a/codex-rs/core/src/tools/handlers/shell.rs b/codex-rs/core/src/tools/handlers/shell.rs index f2224438fbbc..b6bf4bc7adce 100644 --- a/codex-rs/core/src/tools/handlers/shell.rs +++ b/codex-rs/core/src/tools/handlers/shell.rs @@ -4,13 +4,13 @@ use codex_protocol::models::ShellToolCallParams; use serde_json::Value as JsonValue; use std::sync::Arc; -use crate::codex::TurnContext; use crate::exec::ExecCapturePolicy; use crate::exec::ExecParams; use crate::exec_env::create_env; use crate::exec_policy::ExecApprovalRequest; use crate::function_tool::FunctionCallError; use crate::maybe_emit_implicit_skill_invocation; +use crate::session::turn_context::TurnContext; use crate::shell::Shell; use crate::tools::context::FunctionToolOutput; use crate::tools::context::ToolInvocation; @@ -80,7 +80,7 @@ struct RunExecLikeArgs { hook_command: String, additional_permissions: Option, prefix_rule: Option>, - session: Arc, + session: Arc, turn: Arc, tracker: crate::tools::context::SharedTurnDiffTracker, call_id: String, @@ -140,7 +140,7 @@ impl ShellCommandHandler { fn to_exec_params( params: &ShellCommandToolCallParams, - session: &crate::codex::Session, + session: &crate::session::session::Session, turn_context: &TurnContext, thread_id: ThreadId, allow_login_shell: bool, diff --git a/codex-rs/core/src/tools/handlers/shell_tests.rs b/codex-rs/core/src/tools/handlers/shell_tests.rs index e66133f961ad..652b305688d3 100644 --- a/codex-rs/core/src/tools/handlers/shell_tests.rs +++ b/codex-rs/core/src/tools/handlers/shell_tests.rs @@ -6,9 +6,9 @@ use core_test_support::PathBufExt; use core_test_support::test_path_buf; use pretty_assertions::assert_eq; -use crate::codex::make_session_and_context; use crate::exec_env::create_env; use crate::sandboxing::SandboxPermissions; +use crate::session::tests::make_session_and_context; use crate::shell::Shell; use crate::shell::ShellType; use crate::shell_snapshot::ShellSnapshot; diff --git a/codex-rs/core/src/tools/handlers/tool_suggest.rs b/codex-rs/core/src/tools/handlers/tool_suggest.rs index 9975f5131fa7..cc433601bcf1 100644 --- a/codex-rs/core/src/tools/handlers/tool_suggest.rs +++ b/codex-rs/core/src/tools/handlers/tool_suggest.rs @@ -155,8 +155,8 @@ impl ToolHandler for ToolSuggestHandler { } async fn verify_tool_suggestion_completed( - session: &crate::codex::Session, - turn: &crate::codex::TurnContext, + session: &crate::session::session::Session, + turn: &crate::session::turn_context::TurnContext, tool: &DiscoverableTool, auth: Option<&codex_login::CodexAuth>, ) -> bool { @@ -194,8 +194,8 @@ async fn verify_tool_suggestion_completed( } async fn refresh_missing_suggested_connectors( - session: &crate::codex::Session, - turn: &crate::codex::TurnContext, + session: &crate::session::session::Session, + turn: &crate::session::turn_context::TurnContext, auth: Option<&codex_login::CodexAuth>, expected_connector_ids: &[String], tool_id: &str, diff --git a/codex-rs/core/src/tools/handlers/unified_exec_tests.rs b/codex-rs/core/src/tools/handlers/unified_exec_tests.rs index b64181451665..c208ed1f378f 100644 --- a/codex-rs/core/src/tools/handlers/unified_exec_tests.rs +++ b/codex-rs/core/src/tools/handlers/unified_exec_tests.rs @@ -13,7 +13,7 @@ use std::fs; use std::sync::Arc; use tempfile::tempdir; -use crate::codex::make_session_and_context; +use crate::session::tests::make_session_and_context; use crate::tools::context::ExecCommandToolOutput; use crate::tools::context::ToolInvocation; use crate::tools::context::ToolPayload; diff --git a/codex-rs/core/src/tools/js_repl/mod.rs b/codex-rs/core/src/tools/js_repl/mod.rs index 48bfb8ac4127..bdb5707c54c4 100644 --- a/codex-rs/core/src/tools/js_repl/mod.rs +++ b/codex-rs/core/src/tools/js_repl/mod.rs @@ -31,14 +31,14 @@ use tracing::trace; use tracing::warn; use uuid::Uuid; -use crate::codex::Session; -use crate::codex::TurnContext; use crate::exec::ExecCapturePolicy; use crate::exec::ExecExpiration; use crate::exec_env::create_env; use crate::function_tool::FunctionCallError; use crate::original_image_detail::normalize_output_image_detail; use crate::sandboxing::ExecOptions; +use crate::session::session::Session; +use crate::session::turn_context::TurnContext; use crate::tools::ToolRouter; use crate::tools::context::SharedTurnDiffTracker; use codex_sandboxing::SandboxCommand; diff --git a/codex-rs/core/src/tools/js_repl/mod_tests.rs b/codex-rs/core/src/tools/js_repl/mod_tests.rs index 6eb0552e34e6..128fda60dd85 100644 --- a/codex-rs/core/src/tools/js_repl/mod_tests.rs +++ b/codex-rs/core/src/tools/js_repl/mod_tests.rs @@ -1,6 +1,6 @@ use super::*; -use crate::codex::make_session_and_context; -use crate::codex::make_session_and_context_with_dynamic_tools_and_rx; +use crate::session::tests::make_session_and_context; +use crate::session::tests::make_session_and_context_with_dynamic_tools_and_rx; use crate::turn_diff_tracker::TurnDiffTracker; use codex_protocol::dynamic_tools::DynamicToolCallOutputContentItem; use codex_protocol::dynamic_tools::DynamicToolResponse; @@ -22,7 +22,7 @@ use std::fs; use std::path::Path; use tempfile::tempdir; -fn set_danger_full_access(turn: &mut crate::codex::TurnContext) { +fn set_danger_full_access(turn: &mut crate::session::turn_context::TurnContext) { turn.sandbox_policy .set(SandboxPolicy::DangerFullAccess) .expect("test setup should allow updating sandbox policy"); @@ -881,7 +881,7 @@ async fn js_repl_uncaught_exception_returns_exec_error_and_recovers() -> anyhow: return Ok(()); } - let (session, turn) = crate::codex::make_session_and_context().await; + let (session, turn) = crate::session::tests::make_session_and_context().await; let session = Arc::new(session); let turn = Arc::new(turn); let tracker = Arc::new(tokio::sync::Mutex::new(TurnDiffTracker::default())); diff --git a/codex-rs/core/src/tools/network_approval.rs b/codex-rs/core/src/tools/network_approval.rs index 491b1b020e1c..f2f4ebe567d6 100644 --- a/codex-rs/core/src/tools/network_approval.rs +++ b/codex-rs/core/src/tools/network_approval.rs @@ -1,4 +1,3 @@ -use crate::codex::Session; use crate::guardian::GuardianApprovalRequest; use crate::guardian::guardian_rejection_message; use crate::guardian::guardian_timeout_message; @@ -7,6 +6,7 @@ use crate::guardian::review_approval_request; use crate::guardian::routes_approval_to_guardian; use crate::hook_runtime::run_permission_request_hooks; use crate::network_policy_decision::denied_network_policy_message; +use crate::session::session::Session; use crate::tools::sandboxing::PermissionRequestPayload; use crate::tools::sandboxing::ToolError; use codex_hooks::PermissionRequestDecision; @@ -285,7 +285,9 @@ impl NetworkApprovalService { .await; } - async fn active_turn_context(session: &Session) -> Option> { + async fn active_turn_context( + session: &Session, + ) -> Option> { let active_turn = session.active_turn.lock().await; active_turn .as_ref() diff --git a/codex-rs/core/src/tools/orchestrator.rs b/codex-rs/core/src/tools/orchestrator.rs index b96e1a1a7296..c1b960bc8dbb 100644 --- a/codex-rs/core/src/tools/orchestrator.rs +++ b/codex-rs/core/src/tools/orchestrator.rs @@ -107,7 +107,7 @@ impl ToolOrchestrator { tool: &mut T, req: &Rq, tool_ctx: &ToolCtx, - turn_ctx: &crate::codex::TurnContext, + turn_ctx: &crate::session::turn_context::TurnContext, approval_policy: AskForApproval, ) -> Result, ToolError> where diff --git a/codex-rs/core/src/tools/parallel.rs b/codex-rs/core/src/tools/parallel.rs index 2789c9c2f5a1..3852d24d5eba 100644 --- a/codex-rs/core/src/tools/parallel.rs +++ b/codex-rs/core/src/tools/parallel.rs @@ -9,9 +9,9 @@ use tracing::Instrument; use tracing::instrument; use tracing::trace_span; -use crate::codex::Session; -use crate::codex::TurnContext; use crate::function_tool::FunctionCallError; +use crate::session::session::Session; +use crate::session::turn_context::TurnContext; use crate::tools::context::AbortedToolOutput; use crate::tools::context::SharedTurnDiffTracker; use crate::tools::context::ToolPayload; diff --git a/codex-rs/core/src/tools/registry.rs b/codex-rs/core/src/tools/registry.rs index 9c0291940215..0e0b7b36dd19 100644 --- a/codex-rs/core/src/tools/registry.rs +++ b/codex-rs/core/src/tools/registry.rs @@ -3,13 +3,13 @@ use std::sync::Arc; use std::time::Duration; use std::time::Instant; -use crate::codex::TurnContext; use crate::function_tool::FunctionCallError; use crate::hook_runtime::record_additional_contexts; use crate::hook_runtime::run_post_tool_use_hooks; use crate::hook_runtime::run_pre_tool_use_hooks; use crate::memories::usage::emit_metric_for_tool_read; use crate::sandbox_tags::sandbox_tag; +use crate::session::turn_context::TurnContext; use crate::tools::context::FunctionToolOutput; use crate::tools::context::ToolInvocation; use crate::tools::context::ToolOutput; diff --git a/codex-rs/core/src/tools/router.rs b/codex-rs/core/src/tools/router.rs index d57ca5473acf..fa2633bc319c 100644 --- a/codex-rs/core/src/tools/router.rs +++ b/codex-rs/core/src/tools/router.rs @@ -1,7 +1,7 @@ -use crate::codex::Session; -use crate::codex::TurnContext; use crate::function_tool::FunctionCallError; use crate::sandboxing::SandboxPermissions; +use crate::session::session::Session; +use crate::session::turn_context::TurnContext; use crate::tools::context::SharedTurnDiffTracker; use crate::tools::context::ToolInvocation; use crate::tools::context::ToolPayload; diff --git a/codex-rs/core/src/tools/router_tests.rs b/codex-rs/core/src/tools/router_tests.rs index d93796ab645f..1a59f1e1bae3 100644 --- a/codex-rs/core/src/tools/router_tests.rs +++ b/codex-rs/core/src/tools/router_tests.rs @@ -1,8 +1,8 @@ use std::collections::HashSet; use std::sync::Arc; -use crate::codex::make_session_and_context; use crate::function_tool::FunctionCallError; +use crate::session::tests::make_session_and_context; use crate::tools::context::ToolPayload; use crate::turn_diff_tracker::TurnDiffTracker; use codex_protocol::models::ResponseItem; diff --git a/codex-rs/core/src/tools/runtimes/shell/unix_escalation.rs b/codex-rs/core/src/tools/runtimes/shell/unix_escalation.rs index 18813cfc8970..9d3b7c5f27fc 100644 --- a/codex-rs/core/src/tools/runtimes/shell/unix_escalation.rs +++ b/codex-rs/core/src/tools/runtimes/shell/unix_escalation.rs @@ -300,8 +300,8 @@ pub(crate) async fn prepare_unified_exec_zsh_fork( struct CoreShellActionProvider { policy: Arc>, - session: Arc, - turn: Arc, + session: Arc, + turn: Arc, call_id: String, tool_name: GuardianCommandSource, approval_policy: AskForApproval, diff --git a/codex-rs/core/src/tools/runtimes/shell/unix_escalation_tests.rs b/codex-rs/core/src/tools/runtimes/shell/unix_escalation_tests.rs index 66439e461760..877f967559df 100644 --- a/codex-rs/core/src/tools/runtimes/shell/unix_escalation_tests.rs +++ b/codex-rs/core/src/tools/runtimes/shell/unix_escalation_tests.rs @@ -6,9 +6,9 @@ use super::evaluate_intercepted_exec_policy; use super::extract_shell_script; use super::join_program_and_argv; use super::map_exec_result; -use crate::codex::make_session_and_context; use crate::config::Constrained; use crate::sandboxing::SandboxPermissions; +use crate::session::tests::make_session_and_context; use anyhow::Context; use codex_execpolicy::Decision; use codex_execpolicy::Evaluation; diff --git a/codex-rs/core/src/tools/sandboxing.rs b/codex-rs/core/src/tools/sandboxing.rs index d85298734dc6..87bef4617c31 100644 --- a/codex-rs/core/src/tools/sandboxing.rs +++ b/codex-rs/core/src/tools/sandboxing.rs @@ -4,10 +4,10 @@ //! `ApprovalCtx`, `Approvable`) together with the sandbox orchestration traits //! and helpers (`Sandboxable`, `ToolRuntime`, `SandboxAttempt`, etc.). -use crate::codex::Session; -use crate::codex::TurnContext; use crate::sandboxing::ExecOptions; use crate::sandboxing::SandboxPermissions; +use crate::session::session::Session; +use crate::session::turn_context::TurnContext; use crate::state::SessionServices; use crate::tools::network_approval::NetworkApprovalSpec; use codex_network_proxy::NetworkProxy; diff --git a/codex-rs/core/src/turn_timing.rs b/codex-rs/core/src/turn_timing.rs index a3653560cd5b..8236ae53b72c 100644 --- a/codex-rs/core/src/turn_timing.rs +++ b/codex-rs/core/src/turn_timing.rs @@ -10,7 +10,7 @@ use codex_protocol::models::ResponseItem; use tokio::sync::Mutex; use crate::ResponseEvent; -use crate::codex::TurnContext; +use crate::session::turn_context::TurnContext; use crate::stream_events_utils::raw_assistant_output_text_from_item; pub(crate) async fn record_turn_ttft_metric(turn_context: &TurnContext, event: &ResponseEvent) { diff --git a/codex-rs/core/src/unified_exec/async_watcher.rs b/codex-rs/core/src/unified_exec/async_watcher.rs index 448446d2ca90..6b112f9eccd0 100644 --- a/codex-rs/core/src/unified_exec/async_watcher.rs +++ b/codex-rs/core/src/unified_exec/async_watcher.rs @@ -8,9 +8,9 @@ use tokio::time::Sleep; use super::UnifiedExecContext; use super::process::UnifiedExecProcess; -use crate::codex::Session; -use crate::codex::TurnContext; use crate::exec::MAX_EXEC_OUTPUT_DELTAS_PER_CALL; +use crate::session::session::Session; +use crate::session::turn_context::TurnContext; use crate::tools::events::ToolEmitter; use crate::tools::events::ToolEventCtx; use crate::tools::events::ToolEventFailure; diff --git a/codex-rs/core/src/unified_exec/mod.rs b/codex-rs/core/src/unified_exec/mod.rs index 4285ef2e51e7..01c8914bc24c 100644 --- a/codex-rs/core/src/unified_exec/mod.rs +++ b/codex-rs/core/src/unified_exec/mod.rs @@ -34,9 +34,9 @@ use rand::Rng; use rand::rng; use tokio::sync::Mutex; -use crate::codex::Session; -use crate::codex::TurnContext; use crate::sandboxing::SandboxPermissions; +use crate::session::session::Session; +use crate::session::turn_context::TurnContext; mod async_watcher; mod errors; diff --git a/codex-rs/core/src/unified_exec/mod_tests.rs b/codex-rs/core/src/unified_exec/mod_tests.rs index 2cc280e1e47e..9877b2cb9fcd 100644 --- a/codex-rs/core/src/unified_exec/mod_tests.rs +++ b/codex-rs/core/src/unified_exec/mod_tests.rs @@ -1,11 +1,11 @@ use super::head_tail_buffer::HeadTailBuffer; use super::*; -use crate::codex::Session; -use crate::codex::TurnContext; -use crate::codex::make_session_and_context; use crate::exec::ExecCapturePolicy; use crate::exec::ExecExpiration; use crate::sandboxing::ExecRequest; +use crate::session::session::Session; +use crate::session::tests::make_session_and_context; +use crate::session::turn_context::TurnContext; use crate::tools::context::ExecCommandToolOutput; use crate::unified_exec::WriteStdinRequest; use crate::unified_exec::process::OutputHandles; diff --git a/codex-rs/core/src/user_shell_command.rs b/codex-rs/core/src/user_shell_command.rs index 1678dae3e2bf..e244be0d2acb 100644 --- a/codex-rs/core/src/user_shell_command.rs +++ b/codex-rs/core/src/user_shell_command.rs @@ -3,8 +3,8 @@ use std::time::Duration; use codex_protocol::exec_output::ExecToolCallOutput; use codex_protocol::models::ResponseItem; -use crate::codex::TurnContext; use crate::contextual_user_message::USER_SHELL_COMMAND_FRAGMENT; +use crate::session::turn_context::TurnContext; use crate::tools::format_exec_output_str; fn format_duration_line(duration: Duration) -> String { diff --git a/codex-rs/core/src/user_shell_command_tests.rs b/codex-rs/core/src/user_shell_command_tests.rs index f635aeecfb91..7e68ca5fee51 100644 --- a/codex-rs/core/src/user_shell_command_tests.rs +++ b/codex-rs/core/src/user_shell_command_tests.rs @@ -1,5 +1,5 @@ use super::*; -use crate::codex::make_session_and_context; +use crate::session::tests::make_session_and_context; use codex_protocol::exec_output::StreamOutput; use codex_protocol::models::ContentItem; use pretty_assertions::assert_eq;