Member Junction
    Preparing search index...

    Browser WebRTC client driver for the OpenAI Live Realtime API (gpt-live-1).

    Implements the browser-direct WebRTC topology specified in Section 5 of the OpenAI Live plan:

    1. Exchanges SDP offer for answer with an application server SDP broker (POST /v1/live/sessions), keeping the project API key and session configuration on the trusted server.
    2. Creates the 'oai-events' data channel before createOffer().
    3. Waits for non-trickle ICE (iceGatheringState === 'complete').
    4. The HTTP SDP exchange starts the session — never sends session.start on the data channel.
    5. Media rides WebRTC tracks: session.input_audio.append and session.output_audio.delta are forbidden on the data channel.
    6. Omits audio.format entirely (SDP negotiates codecs).
    7. Accounts for OpenAI Live's 15-second WebRTC session pre-bill.

    Registered under 'openai-live' and 'OpenAILiveRealtime'.

    Hierarchy (View Summary)

    Index

    Constructors

    Properties

    dataChannel: IRealtimeDataChannel = null
    inputAudioMeter: IRealtimeAudioMeter = null

    Meter over the USER's microphone, when the driver attached one.

    outputAudioMeter: IRealtimeAudioMeter = null

    Meter over the AGENT's audio output, when the driver attached one.

    sessionConfig: JSONObject = null
    ASSISTANT_SAFETY_BACKSTOP_MS: 3000
    MAX_OUTBOUND_QUEUE_SIZE: 100
    PLAYBACK_DRAIN_SILENCE_MS: 200
    PLAYBACK_DRAIN_SILENCE_THRESHOLD: 0.01
    PLAYBACK_DRAIN_TRANSCRIPT_GAP_MS: 300
    PREBILL_DURATION_SECONDS: 15

    Accessors

    • get IsAudioPlaying(): boolean

      true while model audio is AUDIBLY playing in the browser. Distinct from IsBusy — audio plays at realtime while generation finishes early, so the model can be "idle" while speech is still coming out of the speaker. Hosts must gate narration on BOTH, or queued utterances come out late and stale.

      Returns boolean

    • get IsBusy(): boolean

      true while a model response is in flight (generation started and not yet done). Distinct from IsAudioPlaying: generation runs ahead of playback. Hosts use this to gate interim narration so it never interrupts a reply.

      Returns boolean

    Methods

    • Registers the (single) interruption handler.

      True barge-in only: fires ONLY when USER INPUT CUT OFF ACTIVE MODEL OUTPUT — a model response in flight or audio audibly playing when the user took the floor. A user simply taking their normal turn while the model is idle is NOT an interruption, and drivers must not report it as one (e.g. a raw "speech started" frame must be gated on whether a response is actually active or audio is playing).

      On interruption, drivers must also flush locally-owned playback and report IsAudioPlaying === false promptly (driver obligation #3). Hosts typically use this hook to abort in-flight delegated work so a stale result is never narrated into a conversation that has moved on.

      Parameters

      • handler: () => void

      Returns void

    • Registers the (single) remote-VIDEO handler — the model/avatar's video track for a VIDEO session (a talking-head the host renders, e.g. as the agent's tile). Invoked once the provider publishes its video track.

      Optional capability: audio-only drivers (the default) never emit — registering is always safe, but hosts must not assume a video track arrives. Video-capable drivers (BaseRealtimeModel.SupportsVideo) call emitRemoteVideo when the track is live.

      Parameters

      • handler: (stream: MediaStream) => void

        Invoked with the remote video MediaStream when it becomes available.

      Returns void

    • Registers the (single) usage handler.

      Emissions carry token deltas for the response/turn that just completed (see RealtimeClientUsage — deltas preferred; cumulative-only providers must convert in the driver). Hosts accumulate and relay/persist on their own cadence (e.g. the voice session service debounces a RelayRealtimeUsage mutation onto the co-agent prompt run).

      Optional capability: drivers whose provider exposes no usage telemetry simply never emit — registering a handler is always safe, but hosts must not assume emissions arrive. See RealtimeClientUsage for per-driver availability.

      Parameters

      Returns void

    • Injects user text into the live session and requests a model response. SendText implies barge-in and must NOT synthesize a user transcript (obligation #4).

      Parameters

      • text: string

      Returns void

    • Delivers a completed tool execution result back to the model. OpenAI Live remote reasoning plane requires response.item.create followed by response.create. Client delegation plane uses session.commentary.append with the delegation_id.

      Parameters

      • callID: string
      • outputJson: string

      Returns void