| |
|
|
| use std::sync::Arc; |
|
|
| use crate::agents_md::LoadedAgentsMd; |
| use crate::config::TokenBudgetConfig; |
| use crate::environment_selection::TurnEnvironmentSnapshot; |
| use crate::session::step_settings::ResolvedStepSettings; |
| use crate::session::turn_context::TurnContext; |
| use crate::tools::router::ToolRouter; |
| use codex_exec_server::ExecutorCapabilityDiscoverySnapshot; |
| use codex_exec_server::ResolvedSelectedCapabilityRoot; |
| use codex_mcp::McpBinding; |
| use codex_otel::SessionTelemetry; |
| use codex_protocol::items::ModelInvocationContext; |
| use codex_protocol::protocol::TurnContextItem; |
|
|
| |
| pub(crate) struct StepContext { |
| pub(crate) turn: Arc<TurnContext>, |
| |
| pub(crate) settings: Arc<ResolvedStepSettings>, |
| |
| pub(crate) token_budget: Option<TokenBudgetConfig>, |
| |
| pub(crate) session_telemetry: SessionTelemetry, |
| pub(crate) environments: TurnEnvironmentSnapshot, |
| |
| pub(crate) selected_capability_roots: Vec<ResolvedSelectedCapabilityRoot>, |
| |
| pub(crate) executor_capability_discovery: Option<Arc<ExecutorCapabilityDiscoverySnapshot>>, |
| |
| pub(crate) mcp: Arc<McpBinding>, |
| |
| pub(crate) tool_router: Arc<ToolRouter>, |
| |
| pub(crate) loaded_agents_md: Option<Arc<LoadedAgentsMd>>, |
| } |
|
|
| impl StepContext { |
| |
| pub(crate) fn to_turn_context_item(&self) -> TurnContextItem { |
| let mut item = self.turn.to_turn_context_item(); |
| item.summary = self.settings.reasoning_summary; |
| item |
| } |
|
|
| pub(crate) fn model_context(&self) -> ModelInvocationContext { |
| ModelInvocationContext { |
| model_slug: self.settings.model_info.slug.clone(), |
| reasoning_effort: self |
| .settings |
| .effective_reasoning_effort() |
| .map(|effort| effort.to_string()), |
| } |
| } |
| } |
|
|