Display name of the agent (caption avatar / meta line).
Re-emitted from a WORKING delegation card's ✕ cancel affordance (the call's ID).
Whether developer affordances on delegation cards are revealed (gear-gated).
Set of item indices whose long text has been expanded by the user.
Re-emitted from a delegation card's "View" artifact chip (focuses the artifact's surface tab).
Re-emitted from a delegation card's dev "Open run" link (the delegated run's ID).
Whether to render caption bubbles (toggled by the controls' captions button).
Shared live-session state, owned by the overlay shell.
Display name of the signed-in user for their turns — consistent with the main chat's sender names, and ready for multi-user sessions where "You" stops meaning anything. Hosts bind the current user's name; the default keeps old hosts working.
Prepares text for markdown rendering, restoring structure (headings, horizontal rules, bullet items) if newlines were stripped by single-line input paste or speech-to-text.
Returns whether the caption item at the specified index is expanded.
Returns true when the caption text is considered a "long blob" (>280 chars or >4 lines) that warrants height clamping and an expand/collapse toggle.
A callback method that is invoked immediately after the default change detector has completed one change-check cycle for a component's view.
A callback method that performs custom clean-up, invoked immediately before a directive, pipe, or service instance is destroyed.
A callback method that is invoked immediately after the default change detector has checked the directive's data-bound properties for the first time, and before any of the view or content children have been checked. It is invoked only once when the directive is instantiated.
True when the live narration note should render under THIS delegation item.
Toggles expanded/collapsed state for the caption item at the given index.
Optionalevent: Event
The unified, chronological live thread for the call overlay: caption bubbles interleaved with delegation cards exactly where they happened.
PURELY PRESENTATIONAL over RealtimeSessionState — the overlay shell owns the state object (which merges the service streams once) and passes it here AND to the activity rail, so there is exactly one copy of the per-CallID merge logic.
Also renders the EPHEMERAL narration "live note": indented, muted, italic text under the ACTIVE working card (latest narration only — replaced, never accumulated).