60 lines
2.1 KiB
Markdown
60 lines
2.1 KiB
Markdown
# Test Plan: Sub-Agent Spawning
|
|
|
|
## Feature description
|
|
|
|
Agents with can_spawn_agents=true can spawn child agents that run
|
|
in parallel as background tokio tasks. Children communicate results
|
|
back to the parent via collect/check. Escalation allows children
|
|
to request user input through the parent.
|
|
|
|
## Behaviors to test
|
|
|
|
### Spawn
|
|
- [ ] agent__spawn creates child agent in background
|
|
- [ ] Child gets own RequestContext with incremented depth
|
|
- [ ] Child gets own session, model, functions
|
|
- [ ] Child gets shared root_escalation_queue
|
|
- [ ] Child gets inbox for teammate messaging
|
|
- [ ] Child MCP servers acquired if configured
|
|
- [ ] Max concurrent agents enforced
|
|
- [ ] Max depth enforced
|
|
- [ ] Agent not found → error
|
|
- [ ] can_spawn_agents=false → no spawn tools available
|
|
|
|
### Collect/Check
|
|
- [ ] agent__check returns PENDING or result
|
|
- [ ] agent__collect blocks until done, returns output
|
|
- [ ] Output summarization when exceeds threshold
|
|
- [ ] Summarization uses configured model
|
|
|
|
### Task queue
|
|
- [ ] agent__task_create creates tasks with dependencies
|
|
- [ ] agent__task_complete marks done, unblocks dependents
|
|
- [ ] Auto-dispatch spawns agent for unblocked tasks
|
|
- [ ] agent__task_list shows all tasks with status
|
|
|
|
### Escalation
|
|
- [ ] Child calls user__ask → escalation created
|
|
- [ ] Parent sees pending_escalations notification
|
|
- [ ] agent__reply_escalation unblocks child
|
|
- [ ] Escalation timeout → fallback message
|
|
|
|
### Teammate messaging
|
|
- [ ] agent__send_message delivers to sibling inbox
|
|
- [ ] agent__check_inbox drains messages
|
|
|
|
### Child agent lifecycle
|
|
- [ ] run_child_agent loops: create input → call completions → process results
|
|
- [ ] Child uses before/after_chat_completion
|
|
- [ ] Child tool calls evaluated via eval_tool_calls
|
|
- [ ] Child exits cleanly, supervisor cancels on completion
|
|
|
|
## Context switching scenarios
|
|
- [ ] Parent spawns child with MCP → child MCP works independently
|
|
- [ ] Parent exits agent → all children cancelled
|
|
- [ ] Multiple children share escalation queue correctly
|
|
|
|
## Old code reference
|
|
- `src/function/supervisor.rs` — all handler functions
|
|
- `src/supervisor/` — Supervisor, EscalationQueue, Inbox, TaskQueue
|