Resolves who an inbound caller is.
Resolves the co-agent for a target agent (defaults to the shared chain).
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).AIAgentCoAgent row of Type 'CoAgent' whose TargetAgentTypeID is the
target's type (IsDefault first, then lowest Sequence). 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.
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).
OptionalCostEstimated carrier cost per minute for computing CostEstimate on Interaction.
OptionalInteractionManages Interaction, InteractionEvent, and InteractionLink rows.
The outbound policy a transfer destination is checked against.
Opens a raw IRealtimeSession for the agent named in ctx. Bind this onto a bridge's
session-factory seam (e.g. LiveKitAgentRoomCoordinator.Instance.SetSessionFactory(CreateBridgeRealtimeSession)).
The bridge session context (agent id/name + user + provider).
The live realtime session to hand to AIBridgeEngine.StartBridgeSession.
OptionalTransferThe validated transfer directory (telephony.transferTargets); empty means the agent cannot transfer.
The collaborators the starter uses (production defaults are wired by each carrier service).