symfonic.agent.subagents.registry¶
registry ¶
In-process AgentStore backed by child SymfonicAgent instances.
SubAgentRegistry ¶
Concrete AgentStore that runs registered child agents in-process.
Satisfies the AgentStore protocol (list / read / run). The
run method inherits the parent's tenant scope into the child and
threads the (already incremented) agent depth so the child's own
delegation guard can enforce max_agent_depth for nested delegation.
Registration is the last point at which a child can be refused, so it
is where the block-edit lockdown lands for children the parent did not
build. Every child passes through here -- specs the parent constructed
and pre-built SubAgent(agent=...) instances alike -- which makes it
the one place the guarantee covers every construction path.
Source code in src/symfonic/agent/subagents/registry.py
run
async
¶
run(name: str, agent_input: Any, *, parent_scope: Any = None, agent_depth: int = 1, run_id: str | None = None, parent_run_id: str | None = None) -> Any
Run child name on agent_input; returns its AgentResponse.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
name
|
str
|
Registered sub-agent name. |
required |
agent_input
|
Any
|
The delegated task (coerced to |
required |
parent_scope
|
Any
|
Tenant scope inherited from the parent run. |
None
|
agent_depth
|
int
|
Depth to stamp on the child run (parent depth + 1). |
1
|
run_id
|
str | None
|
The id the child runs under. Minted here when the caller
names none, so the value is known rather than left for the
child to invent privately -- |
None
|
parent_run_id
|
str | None
|
v9.12.0 (issue #64) the run delegating this task.
Recorded as the child's lineage; never passed as the child's
own |
None
|
Raises:
| Type | Description |
|---|---|
StorageError
|
If |