diff --git a/codex-rs/core/src/agent/control.rs b/codex-rs/core/src/agent/control.rs index f8bcfab326..a46fb0df01 100644 --- a/codex-rs/core/src/agent/control.rs +++ b/codex-rs/core/src/agent/control.rs @@ -454,7 +454,7 @@ impl AgentControl { }; reservation.commit(agent_metadata); state.notify_thread_created(new_thread.thread_id); - self.send_input(new_thread.thread_id, items).await?; + self.send_input(new_thread.thread_id, items.into()).await?; Ok(new_thread.thread_id) } @@ -963,7 +963,7 @@ impl AgentControl { .join("\n") } - pub(crate) async fn list_agents( + pub(crate) async fn list_agents_by_path( &self, current_session_source: &SessionSource, path_prefix: Option<&str>, diff --git a/codex-rs/core/src/tasks/mod.rs b/codex-rs/core/src/tasks/mod.rs index 930982c863..42f7b77863 100644 --- a/codex-rs/core/src/tasks/mod.rs +++ b/codex-rs/core/src/tasks/mod.rs @@ -30,6 +30,7 @@ use crate::hook_runtime::record_additional_contexts; use crate::hook_runtime::record_pending_input; use crate::models_manager::manager::ModelsManager; use crate::protocol::EventMsg; +use crate::protocol::TokenUsage; use crate::protocol::TurnAbortReason; use crate::protocol::TurnAbortedEvent; use crate::protocol::TurnCompleteEvent; diff --git a/codex-rs/core/src/tools/handlers/multi_agents/list_agents.rs b/codex-rs/core/src/tools/handlers/multi_agents/list_agents.rs index 43af1844ec..db52733129 100644 --- a/codex-rs/core/src/tools/handlers/multi_agents/list_agents.rs +++ b/codex-rs/core/src/tools/handlers/multi_agents/list_agents.rs @@ -1,5 +1,6 @@ use super::*; use crate::agent::AgentListing; +use crate::agent::agent_resolver::resolve_agent_target; pub(crate) struct Handler; diff --git a/codex-rs/core/src/tools/handlers/multi_agents/wait.rs b/codex-rs/core/src/tools/handlers/multi_agents/wait.rs index 7a9c998b3e..a8e728659b 100644 --- a/codex-rs/core/src/tools/handlers/multi_agents/wait.rs +++ b/codex-rs/core/src/tools/handlers/multi_agents/wait.rs @@ -1,4 +1,5 @@ use super::*; +use crate::agent::agent_resolver::resolve_agent_targets; use crate::agent::status::is_final; use crate::error::CodexErr; use futures::FutureExt; diff --git a/codex-rs/core/src/tools/handlers/multi_agents_v2/list_agents.rs b/codex-rs/core/src/tools/handlers/multi_agents_v2/list_agents.rs index e18547db92..bca926791a 100644 --- a/codex-rs/core/src/tools/handlers/multi_agents_v2/list_agents.rs +++ b/codex-rs/core/src/tools/handlers/multi_agents_v2/list_agents.rs @@ -31,7 +31,7 @@ impl ToolHandler for Handler { let agents = session .services .agent_control - .list_agents(&turn.session_source, args.path_prefix.as_deref()) + .list_agents_by_path(&turn.session_source, args.path_prefix.as_deref()) .await .map_err(collab_spawn_error)?; diff --git a/codex-rs/core/src/tools/handlers/multi_agents_v2/spawn.rs b/codex-rs/core/src/tools/handlers/multi_agents_v2/spawn.rs index ffe128b43e..462a172c33 100644 --- a/codex-rs/core/src/tools/handlers/multi_agents_v2/spawn.rs +++ b/codex-rs/core/src/tools/handlers/multi_agents_v2/spawn.rs @@ -5,6 +5,7 @@ use crate::agent::next_thread_spawn_depth; use crate::agent::role::DEFAULT_ROLE_NAME; use crate::agent::role::apply_role_to_config; use codex_protocol::AgentPath; +use codex_protocol::protocol::AgentSpawnMode; use codex_protocol::protocol::InterAgentCommunication; use codex_protocol::protocol::Op; @@ -170,6 +171,11 @@ impl ToolHandler for Handler { prompt, model: effective_model, reasoning_effort: effective_reasoning_effort, + spawn_mode: if args.fork_context { + AgentSpawnMode::Fork + } else { + AgentSpawnMode::Spawn + }, status, } .into(),