The agent as the tile shows it.
Whether the tile keeps the agent's last frame on show while the video is out of frames: from the start of a resume until new frames come, AGENT_VIDEO_RESUME_HOLD_MS pass, or the call fails or ends.
The agent's turn, as the orb shows it.
ReadonlyStallHow long without a frame the tile waits before showing the placeholder.
What the tile's chip says the agent is doing, or null before the call's state is known.
The agent's name, shown on the tile.
Whether the call is resuming on a new connection, now and on every change (the session's Resuming$): a resume's
start holds the agent's last frame (HoldLastFrame).
The call's state, now and on every change (the session's ConnectionState$): the orb follows the agent's turn, and
an error or the call's end stops holding the last frame.
The agent's video, now and on every change (the session's AgentVideo$).
mj-realtime-avatar-surface: the Avatar channel's surface. The agent's video (an avatar) in a media tile, with the agent's name and the "AI-generated video" label the tile shows while it plays an avatar, and a chip that says what the agent is doing. A ring frames the tile while the agent speaks, following its voice where the call overlay meters it. Until the video's first frame, and after AGENT_VIDEO_STALL_MS without one, the call's orb takes its place, following the agent's turn. While the call resumes on a new connection, the last frame holds instead, until new frames come, AGENT_VIDEO_RESUME_HOLD_MS pass, or the call fails or ends.