bodhi-realtime-agent / GeminiLiveTransport
Class: GeminiLiveTransport
Defined in: transport/gemini-live-transport.ts:90
WebSocket transport layer for the Gemini Live API.
Wraps the @google/genai SDK's live.connect() to manage the bidirectional audio stream. Handles connection setup, message routing, tool declaration conversion (Zod → JSON Schema), and session resumption.
Implements LLMTransport for provider-agnostic usage. The constructor callback pattern is preserved for backward compatibility alongside the LLMTransport callback properties.
Implements
Constructors
Constructor
new GeminiLiveTransport(
config,callbacks):GeminiLiveTransport
Defined in: transport/gemini-live-transport.ts:137
Parameters
config
callbacks
Returns
GeminiLiveTransport
Properties
audioFormat
readonlyaudioFormat:AudioFormatSpec
Defined in: transport/gemini-live-transport.ts:112
Implementation of
capabilities
readonlycapabilities:TransportCapabilities
Defined in: transport/gemini-live-transport.ts:102
Static capabilities — read before connecting, used for orchestrator branching.
Implementation of
onAudioOutput()?
optionalonAudioOutput: (base64Data) =>void
Defined in: transport/gemini-live-transport.ts:122
Parameters
base64Data
string
Returns
void
Implementation of
onClose()?
optionalonClose: (code?,reason?) =>void
Defined in: transport/gemini-live-transport.ts:131
Parameters
code?
number
reason?
string
Returns
void
Implementation of
onError()?
optionalonError: (error) =>void
Defined in: transport/gemini-live-transport.ts:130
Parameters
error
Returns
void
Implementation of
onGoAway()?
optionalonGoAway: (timeLeft) =>void
Defined in: transport/gemini-live-transport.ts:133
Parameters
timeLeft
string
Returns
void
Implementation of
onGroundingMetadata()?
optionalonGroundingMetadata: (metadata) =>void
Defined in: transport/gemini-live-transport.ts:135
Parameters
metadata
Record<string, unknown>
Returns
void
Implementation of
LLMTransport.onGroundingMetadata
onInputTranscription()?
optionalonInputTranscription: (text) =>void
Defined in: transport/gemini-live-transport.ts:127
Parameters
text
string
Returns
void
Implementation of
LLMTransport.onInputTranscription
onInterrupted()?
optionalonInterrupted: () =>void
Defined in: transport/gemini-live-transport.ts:126
Returns
void
Implementation of
onModelTurnStart()?
optionalonModelTurnStart: () =>void
Defined in: transport/gemini-live-transport.ts:132
Fires when the model begins any response (audio, tool call, etc.). Used by VoiceSession to trigger STT provider commit.
Returns
void
Implementation of
onOutputTranscription()?
optionalonOutputTranscription: (text) =>void
Defined in: transport/gemini-live-transport.ts:128
Parameters
text
string
Returns
void
Implementation of
LLMTransport.onOutputTranscription
onResumptionUpdate()?
optionalonResumptionUpdate: (handle,resumable) =>void
Defined in: transport/gemini-live-transport.ts:134
Parameters
handle
string
resumable
boolean
Returns
void
Implementation of
LLMTransport.onResumptionUpdate
onSessionReady()?
optionalonSessionReady: (sessionId) =>void
Defined in: transport/gemini-live-transport.ts:129
Parameters
sessionId
string
Returns
void
Implementation of
onToolCall()?
optionalonToolCall: (calls) =>void
Defined in: transport/gemini-live-transport.ts:123
Parameters
calls
Returns
void
Implementation of
onToolCallCancel()?
optionalonToolCallCancel: (ids) =>void
Defined in: transport/gemini-live-transport.ts:124
Parameters
ids
string[]
Returns
void
Implementation of
onTurnComplete()?
optionalonTurnComplete: () =>void
Defined in: transport/gemini-live-transport.ts:125
Returns
void
Implementation of
Accessors
isConnected
Get Signature
get isConnected():
boolean
Defined in: transport/gemini-live-transport.ts:319
Returns
boolean
Implementation of
Methods
clearAudio()
clearAudio():
void
Defined in: transport/gemini-live-transport.ts:363
No-op for V1 — server VAD only.
Returns
void
Implementation of
commitAudio()
commitAudio():
void
Defined in: transport/gemini-live-transport.ts:360
No-op for V1 — server VAD only.
Returns
void
Implementation of
connect()
connect(
transportConfig?):Promise<void>
Defined in: transport/gemini-live-transport.ts:150
Establish a WebSocket connection to the Gemini Live API. Resolves only after Gemini sends setupComplete, so callers can safely send content immediately after awaiting this method.
Also satisfies LLMTransport.connect(config) — if config is provided, it is applied before connecting.
Parameters
transportConfig?
Returns
Promise<void>
Implementation of
disconnect()
disconnect():
Promise<void>
Defined in: transport/gemini-live-transport.ts:266
Returns
Promise<void>
Implementation of
reconnect()
reconnect(
stateOrHandle?):Promise<void>
Defined in: transport/gemini-live-transport.ts:238
Disconnect and reconnect, optionally with a new resumption handle or ReconnectState. Accepts either a string handle (legacy API) or ReconnectState (LLMTransport API).
Parameters
stateOrHandle?
string | ReconnectState
Returns
Promise<void>
Implementation of
sendAudio()
sendAudio(
base64Data):void
Defined in: transport/gemini-live-transport.ts:279
Send base64-encoded PCM audio to Gemini as realtime input.
Parameters
base64Data
string
Returns
void
Implementation of
sendClientContent()
sendClientContent(
turns,turnComplete):void
Defined in: transport/gemini-live-transport.ts:296
Send text-based conversation turns to Gemini (legacy API, used for context replay).
Parameters
turns
object[]
turnComplete
boolean = true
Returns
void
sendContent()
sendContent(
turns,turnComplete):void
Defined in: transport/gemini-live-transport.ts:326
Send provider-neutral content turns to Gemini. Converts ContentTurn to Gemini format.
Parameters
turns
turnComplete
boolean = true
Returns
void
Implementation of
sendFile()
sendFile(
base64Data,mimeType):void
Defined in: transport/gemini-live-transport.ts:336
Send a file/image to Gemini as inline data.
Parameters
base64Data
string
mimeType
string
Returns
void
Implementation of
sendToolResponse()
sendToolResponse(
responses,_scheduling?):void
Defined in: transport/gemini-live-transport.ts:287
Send tool execution results back to Gemini (legacy API).
Parameters
responses
object[]
_scheduling?
"SILENT" | "WHEN_IDLE" | "INTERRUPT"
Returns
void
sendToolResult()
sendToolResult(
result):void
Defined in: transport/gemini-live-transport.ts:345
Send a tool result back to Gemini (LLMTransport API).
Parameters
result
Returns
void
Implementation of
transferSession()
transferSession(
config,state?):Promise<void>
Defined in: transport/gemini-live-transport.ts:387
Transfer session: update config → reconnect → replay conversation history.
Parameters
config
state?
Returns
Promise<void>
Implementation of
triggerGeneration()
triggerGeneration(
_instructions?):void
Defined in: transport/gemini-live-transport.ts:355
No-op for Gemini — generation is automatic after tool results and content injection.
Parameters
_instructions?
string
Returns
void
Implementation of
LLMTransport.triggerGeneration
updateGoogleSearch()
updateGoogleSearch(
enabled):void
Defined in: transport/gemini-live-transport.ts:315
Update Google Search grounding flag (applied on next reconnect).
Parameters
enabled
boolean
Returns
void
updateSession()
updateSession(
config):void
Defined in: transport/gemini-live-transport.ts:366
Update session configuration (applied on next reconnect for Gemini).
Parameters
config
Returns
void
Implementation of
updateSystemInstruction()
updateSystemInstruction(
instruction):void
Defined in: transport/gemini-live-transport.ts:310
Update the system instruction (applied on next reconnect).
Parameters
instruction
string
Returns
void
updateTools()
updateTools(
tools):void
Defined in: transport/gemini-live-transport.ts:305
Update the tool declarations (applied on next reconnect).
Parameters
tools
Returns
void