bodhi-realtime-agent / OpenAIRealtimeTransport
Class: OpenAIRealtimeTransport
Defined in: transport/openai-realtime-transport.ts:72
LLMTransport implementation for the OpenAI Realtime API.
Uses the openai SDK's WebSocket transport (OpenAIRealtimeWS) for bidirectional audio streaming with function calling support.
Key differences from Gemini:
- In-place session updates (no reconnect for agent transfers)
- Streamed function call arguments (accumulated before dispatch)
- Client-managed interruption (truncate + cancel)
- 24kHz audio (vs Gemini's 16kHz)
- Explicit
response.createrequired after tool results
Implements
Constructors
Constructor
new OpenAIRealtimeTransport(
config):OpenAIRealtimeTransport
Defined in: transport/openai-realtime-transport.ts:141
Parameters
config
Returns
OpenAIRealtimeTransport
Properties
audioFormat
readonlyaudioFormat:AudioFormatSpec
Defined in: transport/openai-realtime-transport.ts:84
Implementation of
capabilities
readonlycapabilities:TransportCapabilities
Defined in: transport/openai-realtime-transport.ts:73
Static capabilities — read before connecting, used for orchestrator branching.
Implementation of
onAudioOutput()?
optionalonAudioOutput: (base64Data) =>void
Defined in: transport/openai-realtime-transport.ts:93
Parameters
base64Data
string
Returns
void
Implementation of
onClose()?
optionalonClose: (code?,reason?) =>void
Defined in: transport/openai-realtime-transport.ts:102
Parameters
code?
number
reason?
string
Returns
void
Implementation of
onError()?
optionalonError: (error) =>void
Defined in: transport/openai-realtime-transport.ts:101
Parameters
error
Returns
void
Implementation of
onGoAway()?
optionalonGoAway: (timeLeft) =>void
Defined in: transport/openai-realtime-transport.ts:104
Parameters
timeLeft
string
Returns
void
Implementation of
onGroundingMetadata()?
optionalonGroundingMetadata: (metadata) =>void
Defined in: transport/openai-realtime-transport.ts:106
Parameters
metadata
Record<string, unknown>
Returns
void
Implementation of
LLMTransport.onGroundingMetadata
onInputTranscription()?
optionalonInputTranscription: (text) =>void
Defined in: transport/openai-realtime-transport.ts:98
Parameters
text
string
Returns
void
Implementation of
LLMTransport.onInputTranscription
onInterrupted()?
optionalonInterrupted: () =>void
Defined in: transport/openai-realtime-transport.ts:97
Returns
void
Implementation of
onModelTurnStart()?
optionalonModelTurnStart: () =>void
Defined in: transport/openai-realtime-transport.ts:103
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/openai-realtime-transport.ts:99
Parameters
text
string
Returns
void
Implementation of
LLMTransport.onOutputTranscription
onRealtimeLLMUsage()?
optionalonRealtimeLLMUsage: (usage) =>void
Defined in: transport/openai-realtime-transport.ts:110
Optional: fires when the provider reports token or duration usage for billing/observability.
Parameters
usage
Returns
void
Implementation of
LLMTransport.onRealtimeLLMUsage
onResumptionUpdate()?
optionalonResumptionUpdate: (handle,resumable) =>void
Defined in: transport/openai-realtime-transport.ts:105
Parameters
handle
string
resumable
boolean
Returns
void
Implementation of
LLMTransport.onResumptionUpdate
onSessionReady()?
optionalonSessionReady: (sessionId) =>void
Defined in: transport/openai-realtime-transport.ts:100
Parameters
sessionId
string
Returns
void
Implementation of
onSpeechStarted()?
optionalonSpeechStarted: () =>void
Defined in: transport/openai-realtime-transport.ts:109
Fires when the transport detects user speech via VAD. Used for TTS-level barge-in when the LLM is idle but TTS is still playing. OpenAI: wired to input_audio_buffer.speech_started. Gemini: may require custom VAD signal — needs empirical testing.
Returns
void
Implementation of
onTextDone()?
optionalonTextDone: () =>void
Defined in: transport/openai-realtime-transport.ts:108
Fires when the model's text response is complete for this turn. Signals that all text for the current response has been delivered. Ordering contract: fires after all onTextOutput, before onTurnComplete.
Returns
void
Implementation of
onTextOutput()?
optionalonTextOutput: (text) =>void
Defined in: transport/openai-realtime-transport.ts:107
Fires when the model produces text output (text-mode responses). Only active when responseModality is 'text' (i.e., external TTS in use).
Parameters
text
string
Incremental text chunk (may be partial word/sentence)
Returns
void
Implementation of
onToolCall()?
optionalonToolCall: (calls) =>void
Defined in: transport/openai-realtime-transport.ts:94
Parameters
calls
Returns
void
Implementation of
onToolCallCancel()?
optionalonToolCallCancel: (ids) =>void
Defined in: transport/openai-realtime-transport.ts:95
Parameters
ids
string[]
Returns
void
Implementation of
onTurnComplete()?
optionalonTurnComplete: () =>void
Defined in: transport/openai-realtime-transport.ts:96
Returns
void
Implementation of
Accessors
isConnected
Get Signature
get isConnected():
boolean
Defined in: transport/openai-realtime-transport.ts:147
Returns
boolean
Implementation of
Methods
clearAudio()
clearAudio():
void
Defined in: transport/openai-realtime-transport.ts:265
Returns
void
Implementation of
commitAudio()
commitAudio():
void
Defined in: transport/openai-realtime-transport.ts:260
Returns
void
Implementation of
connect()
connect(
transportConfig?):Promise<void>
Defined in: transport/openai-realtime-transport.ts:153
Parameters
transportConfig?
Returns
Promise<void>
Implementation of
disconnect()
disconnect():
Promise<void>
Defined in: transport/openai-realtime-transport.ts:202
Returns
Promise<void>
Implementation of
reconnect()
reconnect(
state?):Promise<void>
Defined in: transport/openai-realtime-transport.ts:221
Parameters
state?
Returns
Promise<void>
Implementation of
sendAudio()
sendAudio(
base64Data):void
Defined in: transport/openai-realtime-transport.ts:255
Parameters
base64Data
string
Returns
void
Implementation of
sendContent()
sendContent(
turns,turnComplete?):void
Defined in: transport/openai-realtime-transport.ts:351
Parameters
turns
turnComplete?
boolean = true
Returns
void
Implementation of
sendFile()
sendFile(
base64Data,mimeType):void
Defined in: transport/openai-realtime-transport.ts:383
Parameters
base64Data
string
mimeType
string
Returns
void
Implementation of
sendToolResult()
sendToolResult(
result):void
Defined in: transport/openai-realtime-transport.ts:405
Parameters
result
Returns
void
Implementation of
transferSession()
transferSession(
config,state?):Promise<void>
Defined in: transport/openai-realtime-transport.ts:302
Parameters
config
state?
Returns
Promise<void>
Implementation of
triggerGeneration()
triggerGeneration(
instructions?):void
Defined in: transport/openai-realtime-transport.ts:442
Parameters
instructions?
string
Returns
void
Implementation of
LLMTransport.triggerGeneration
updateSession()
updateSession(
config):void
Defined in: transport/openai-realtime-transport.ts:272
Parameters
config
Returns
void