Back to Agent Zero

call_subordinate.py DOX

tools/call_subordinate.py.dox.md

2.103.9 KB
Original Source

call_subordinate.py DOX

Purpose

  • Own the call_subordinate.py agent tool.
  • This module delegates work to a subordinate Agent Zero profile and returns its result.
  • Keep this file-level DOX profile synchronized with call_subordinate.py because this directory is intentionally flat.

Ownership

  • call_subordinate.py owns the runtime implementation.
  • call_subordinate.py.dox.md owns durable notes about responsibilities, contracts, side effects, and verification for that implementation.
  • Classes:
  • Delegation (Tool)
    • async execute(self, message=..., reset=..., context_id=..., **kwargs)
    • get_log_object(self)
  • Top-level functions:
  • _subordinate_profile_labels(agent: Agent) -> dict[str, str]
  • _validate_subordinate_profile(agent: Agent, profile: str) -> str
  • get_or_create_subordinate(...) -> Agent
  • run_subordinate(...) -> str

Runtime Contracts

  • Tool modules must define helpers.tool.Tool subclasses and return helpers.tool.Response from execute(...).
  • Update this file whenever tool arguments, output shape, break_loop behavior, intervention handling, prompt instructions, or side effects change.
  • Delegation is a Tool.
  • Delegation defines execute(...).
  • Observed side-effect areas: filesystem writes, settings/state persistence.
  • profile/agent_profile values are validated against available profile keys before use; unknown profiles raise RepairableException so the agent can retry with a real profile.
  • Direct and parallel calls use the same creation, continuation, message, history, and persistence functions in this module.
  • Every fresh child is Agent(parent.number + 1, ...) in its own persisted child-chat context, so sibling A1 agents can each create their own A2 descendants without sharing streaming state.
  • reset=true creates a fresh child. reset=false continues the caller's default child or the exact child named by context_id.
  • Child context IDs are accepted only when their persisted parent context, parent agent number, and child depth match the caller.
  • Supplying a different profile for an existing child without creating a fresh child raises RepairableException instead of silently changing its profile.
  • Active parallel children cannot be continued concurrently; await or cancel their job first.
  • Child contexts inherit the caller's project and selected chat-model override, are saved before execution and again on exit, and remain reusable after model/API failures.
  • The direct tool result includes context_id; parallel job snapshots expose the same stable child ID separately from their per-invocation job ID.
  • Existing same-context linear subordinates remain reusable for saved-chat compatibility, but new children use child contexts and a private per-parent registry.
  • Imported dependency areas include: agent, extensions.python.hist_add_tool_result, helpers, helpers.errors, helpers.tool.

Key Concepts

  • Important called helpers/classes observed in the source: AgentContext.all, projects.get_context_project_name, projects.activate_project, subagents.get_available_agents_dict, RepairableException, initialize_agent, message_queue.log_user_message, persist_chat.save_tmp_chat, UserMessage, subordinate.monologue, and subordinate.history.new_topic.
  • Keep request/response, tool, or helper semantics documented here at the same time as source changes.

Work Guidance

  • Keep tool output concise, model-readable, and safe for history persistence.
  • Coordinate argument or behavior changes with prompt tool instructions and skill guidance.
  • Respect intervention flow for long-running, external, or user-visible operations.

Verification

  • Run targeted tool and prompt-contract tests for changed behavior; smoke-test agent execution when no focused test exists.
  • Related tests observed by source search:
    • tests/test_default_prompt_budget.py
    • tests/test_subagent_profiles.py
    • tests/test_parallel_tool.py

Child DOX Index

No child DOX files.