Skip to content

bodhi-realtime-agent / TransportCapabilities

Interface: TransportCapabilities ​

Defined in: src/types/transport.ts:19

Static capabilities — orchestrator branches on these, never on provider names.

Properties ​

automaticPreambles? ​

optional automaticPreambles?: boolean

Defined in: src/types/transport.ts:53

Model emits short spoken preambles automatically before tool calls / during reasoning. Doc-only signal for behaviour gating (suppress duplicate app-side announcements). Optional — undefined means false.


bufferedUncancellableAudio? ​

optional bufferedUncancellableAudio?: boolean

Defined in: src/types/transport.ts:97

True when the transport streams response audio the framework cannot stop on the wire: generation runs faster than realtime and is buffered client-side, and cancelResponse() cannot cancel it — instead it suppresses the current response's remaining outbound audio. When true, the framework (a) drives barge-in itself via client VAD (the provider's own VAD is the only other interrupt and is unreliable mid-stream) and (b) relies on cancelResponse() to stop the trailing audio. A transport that sets this MUST implement cancelResponse to suppress its current-turn audio. Gemini Live → true; OpenAI/Qwen → false (cancelResponse cancels generation). Optional — undefined means false.


contextCompression ​

contextCompression: boolean

Defined in: src/types/transport.ts:31

Supports server-side context compression (Gemini: yes, OpenAI: no).


explicitGenerationTrigger? ​

optional explicitGenerationTrigger?: boolean

Defined in: src/types/transport.ts:46

triggerGeneration() starts a model response by itself (a response.create on OpenAI/Qwen). Unset or false: the provider generates on its own after content or tool results, and the call is a no-op (Gemini). The reconnector's content-less nudge counts as eliciting only when this is true or elicitResponse exists.


frameworkOwnsInterrupt? ​

optional frameworkOwnsInterrupt?: boolean

Defined in: src/types/transport.ts:81

True if this transport's interrupt actuation is framework-owned: cancelResponse() is the wire path the framework uses to stop generation, and the provider does not auto-cancel from server-VAD events. Required for greetingInterruptGraceMs > 0 to be honoured (otherwise the provider auto-cancel defeats the grace). Optional — undefined means false.


greetingInterruptGraceMs? ​

optional greetingInterruptGraceMs?: number

Defined in: src/types/transport.ts:74

Recommended grace window (ms) at session-first-audio during which user-driven interrupts are suppressed and outbound mic frames are dropped. Allows browser AEC to converge before the framework lets echo-triggered events count as barge-in. Defaults: OpenAI Realtime → 1000 (runtime-computed iff frameworkOwnsInterrupt is true), Gemini Live → 0, unknown → 0. Optional — undefined means 0.


groundingMetadata ​

groundingMetadata: boolean

Defined in: src/types/transport.ts:33

Provides grounding metadata with search citations (Gemini: yes, OpenAI: no).


inPlaceSessionUpdate ​

inPlaceSessionUpdate: boolean

Defined in: src/types/transport.ts:27

Supports in-place session update without reconnection (OpenAI: yes, Gemini: no).


messageTruncation ​

messageTruncation: boolean

Defined in: src/types/transport.ts:21

Can truncate server-side message at audio playback position (OpenAI: yes, Gemini: no).


parallelToolCalls? ​

optional parallelToolCalls?: boolean

Defined in: src/types/transport.ts:41

Model can emit multiple function_call items in a single response. Optional — undefined means false. Doc-only signal; the transport's batched-tool-call dispatch is on for everyone (no-op if only one call).


playbackGatedTurnComplete? ​

optional playbackGatedTurnComplete?: boolean

Defined in: src/types/transport.ts:66

onTurnComplete fires only after model audio playback should be done (Gemini Live: yes — turnComplete is delayed until playback; OpenAI Realtime: no — response.done is generation-gated). When false, the native playback-end gate must supply playback-end gating itself. Optional — undefined means false. EVERY transport should set this explicitly; the default exists only so adding the flag does not break compilation of existing custom transports.


providerEvidenceKinds? ​

optional providerEvidenceKinds?: ProviderEvidenceKind[]

Defined in: src/types/transport.ts:86

Provider-evidence kinds this transport's adapter can emit (Phase 1, design-speech-evidence-architecture.md §1). Undeclared kinds make the corresponding SegmentEvidence bit 'not-observable' — stated once here, never inferred per event. Omitted = no provider evidence.


quiescible? ​

optional quiescible?: boolean

Defined in: src/types/transport.ts:58

Transport implements quiesce() / unquiesce() for cross-provider transcription mode (pause without disconnecting). When undefined or false, VoiceSession falls back to a framework-layer audio-output guard during mode flips.


reasoningEffort? ​

optional reasoningEffort?: boolean

Defined in: src/types/transport.ts:49

Model exposes a configurable reasoning-effort dial (e.g. gpt-realtime-2). Optional — undefined means false.


sessionResumption ​

sessionResumption: boolean

Defined in: src/types/transport.ts:29

Supports session resumption on disconnect (Gemini: yes, OpenAI: no).


textResponseModality? ​

optional textResponseModality?: boolean

Defined in: src/types/transport.ts:37

Supports text-only response modality (required for external TTS). Optional — defaults to false. Existing custom transport implementations are unaffected until they want to support TTS.


turnDetection ​

turnDetection: boolean

Defined in: src/types/transport.ts:23

Server-side VAD / end-of-turn detection (V1 requires true).


userTranscription ​

userTranscription: boolean

Defined in: src/types/transport.ts:25

Provides transcriptions of user audio input.

Built with VitePress