Base Agents¶
base
¶
Base agent classes — DataAgent, DomainAgent, CoordinatorAgent.
DataAgent extends ADK BaseAgent for deterministic CRUD (no LLM).
DomainAgent and CoordinatorAgent wrap ADK LlmAgent with scoped
sub-agents and tools, preserving the Ninja Stack delegation hierarchy.
DataAgent
¶
Bases: BaseAgent
Deterministic agent that owns a single entity.
Extends ADK BaseAgent — performs CRUD operations via its scoped
tool set without LLM calls (unless reasoning_level is explicitly raised).
execute
¶
execute(
tool_name: str,
trace: TraceContext | None = None,
**kwargs: Any,
) -> Any
Execute a tool by name. Raises KeyError if not in scope.
Source code in libs/ninja-agents/src/ninja_agents/base.py
DomainAgent
¶
DomainAgent(
domain: DomainSchema,
data_agents: list[DataAgent],
config: AgentConfig | None = None,
)
LLM-powered agent that owns a domain (group of entities).
Wraps an ADK LlmAgent whose sub_agents are the domain's
DataAgent instances. Provides convenience methods for synchronous
delegation and execution that work without an LLM call (useful for
testing and deterministic paths).
Source code in libs/ninja-agents/src/ninja_agents/base.py
delegate
¶
delegate(
entity_name: str,
tool_name: str,
trace: TraceContext | None = None,
**kwargs: Any,
) -> Any
Delegate a tool call to a DataAgent. Raises KeyError if
the entity is not in this domain.
Source code in libs/ninja-agents/src/ninja_agents/base.py
execute
¶
execute(
request: str, trace: TraceContext | None = None
) -> dict[str, Any]
Process a domain-level request (stub — full impl uses LLM).
Source code in libs/ninja-agents/src/ninja_agents/base.py
CoordinatorAgent
¶
CoordinatorAgent(
domain_agents: list[DomainAgent],
config: AgentConfig | None = None,
)
Top-level routing agent that delegates to DomainAgents.
Wraps an ADK LlmAgent whose sub_agents are the underlying
DomainAgent.agent instances. Uses LLM for intent classification
and result synthesis.
Source code in libs/ninja-agents/src/ninja_agents/base.py
route
¶
route(
request: str,
target_domains: list[str],
trace: TraceContext | None = None,
) -> dict[str, Any]
Route a request to specific domains and collect results.
For parallel execution use Orchestrator.fan_out() instead.
Source code in libs/ninja-agents/src/ninja_agents/base.py
create_domain_agent
¶
create_domain_agent(
domain: DomainSchema, data_agents: list[DataAgent]
) -> LlmAgent
Factory: create a bare ADK LlmAgent for a domain.
Source code in libs/ninja-agents/src/ninja_agents/base.py
create_coordinator_agent
¶
create_coordinator_agent(
domain_agents: list[DomainAgent],
) -> LlmAgent
Factory: create a bare ADK LlmAgent coordinator.