The minted setup and, on Gemini Enterprise, the header source.
Forwards a realtimeInput, a clientContent of user turns or a toolResponse that passes its checks, as JSON
re-serialized from what was checked (so a duplicate key or another parser difference cannot carry an unchecked
value through). Drops anything else, under a label (see the class notes).
A client text frame after the first.
The resumption handle a server frame carries, else null. Text and binary frames alike (Google sends its JSON in
binary frames); a frame without the bytes sessionResumptionUpdate is never parsed. A handle counts only when
Google marks it resumable, as the browser client does.
The frame's bytes.
Whether it came as a binary frame (not needed: both kinds hold the same JSON).
The connection's one opening frame: the minted setup, with the browser's resumption handle on a resume and without video output when the browser asked for audio only.
What the first frame asked for, as ReadOpenIntent read it and the relay granted it.
Reads the browser's setup (the connection's first frame): its resumption handle and whether it asks for audio
only. Nothing else in it is read. null when the frame is not a lone, well-formed setup message.
The browser's first text frame.
The upstream handshake's headers for this connection: the header source's, or none.
The Gemini Live frame policy for one relayed session: it writes the setup, filters what the browser sends after it, and finds the resumption handles Google sends (see the module notes).
Drop labels (counted by the relay, never payload):
oversize,invalid,empty,multi-key,setup,contextUpdate,unknown, and<type>.<reason>for arealtimeInput,clientContentortoolResponsethat fails its checks (invalid,unknown,duplicate,media-type;system,model,roleandpartfor turns).