Files
loki/docs/testing/plans/11-sub-agent-spawning.md
2026-04-15 12:56:00 -06:00

2.1 KiB

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