feat: Implemented initial scaffolding for built-in sub-agent spawning tool call operations

This commit is contained in:
2026-02-17 11:48:31 -07:00
parent af933bbb29
commit 44c03ccf4f
5 changed files with 598 additions and 0 deletions
+16
View File
@@ -1,3 +1,4 @@
pub(crate) mod supervisor;
pub(crate) mod todo;
use crate::{
@@ -28,6 +29,7 @@ use std::{
process::{Command, Stdio},
};
use strum_macros::AsRefStr;
use supervisor::SUPERVISOR_FUNCTION_PREFIX;
use todo::TODO_FUNCTION_PREFIX;
#[derive(Embed)]
@@ -269,6 +271,11 @@ impl Functions {
self.declarations.extend(todo::todo_function_declarations());
}
pub fn append_supervisor_functions(&mut self) {
self.declarations
.extend(supervisor::supervisor_function_declarations());
}
pub fn clear_mcp_meta_functions(&mut self) {
self.declarations.retain(|d| {
!d.name.starts_with(MCP_INVOKE_META_FUNCTION_NAME_PREFIX)
@@ -886,6 +893,15 @@ impl ToolCall {
json!({"tool_call_error": error_msg})
})
}
_ if cmd_name.starts_with(SUPERVISOR_FUNCTION_PREFIX) => {
supervisor::handle_supervisor_tool(config, &cmd_name, &json_data).unwrap_or_else(
|e| {
let error_msg = format!("Supervisor tool failed: {e}");
eprintln!("{}", warning_text(&format!("⚠️ {error_msg} ⚠️")));
json!({"tool_call_error": error_msg})
},
)
}
_ => match run_llm_function(cmd_name, cmd_args, envs, agent_name) {
Ok(Some(contents)) => serde_json::from_str(&contents)
.ok()