The agent the co-agent will voice (drives steps 2–3).
The explicit co-agent choice, when supplied (step 1).
The user the metadata reads run as.
The request-scoped metadata provider.
The resolved co-agent's id (canonical casing from the metadata cache).
Resolves the co-agent (the Realtime-type agent that voices the target agent) via the metadata-driven co-agent resolution chain — first match wins:
explicitCoAgentID. A per-call override; an invalid candidate throws (the caller asked for something specific, so there is no silent fallback).DefaultCoAgentID. An invalid reference logs and falls through (stale metadata must degrade, never break live calls).AIAgentCoAgentrow of Type'CoAgent'whoseTargetAgentTypeIDis the target's type (IsDefaultfirst, then lowestSequence). Same tolerant semantics as step 2.Every candidate from steps 1–3 must exist, be
Active, and be of the REALTIME_AGENT_TYPE_NAME type.