use std::sync::Arc;
use agent_contracts::tool::DiscoveredTool;
use crate::r#impl::ToolRuntimeServices;
use super::executor::SpawnSubagentExecutor;
use super::spec::SpawnSubagentToolSpec;
pub(crate) fn discover_spawn_subagent(services: ToolRuntimeServices) -> DiscoveredTool {
let spec = Arc::new(SpawnSubagentToolSpec::with_subagent_roles(
services.subagent_roles.clone(),
));
let executor = SpawnSubagentExecutor::new(Arc::clone(&spec), services);
DiscoveredTool {
spec,
executor: Arc::new(executor),
}
}