#[non_exhaustive]pub enum LiveEvent {
Show 26 variants
Audio(Bytes),
Media(InlineMedia),
TextDelta(String),
TextComplete(String),
InputTranscript {
text: String,
is_final: bool,
},
OutputTranscript {
text: String,
is_final: bool,
},
Thought(String),
VadStart,
VadEnd,
Extraction {
name: String,
value: Value,
},
ExtractionError {
name: String,
error: String,
},
StatePromotion {
extractor: String,
field: String,
state_key: String,
accepted: bool,
reason: String,
value: Value,
},
PhaseTransition {
from: String,
to: String,
reason: String,
},
ToolExecution {
name: String,
args: Value,
result: Value,
},
ToolCancelled {
ids: Vec<String>,
},
TurnComplete,
Interrupted,
FillerCue {
tool: String,
elapsed_ms: u64,
},
VerbatimChecked {
step: String,
similarity: f64,
passed: bool,
},
Reprompted {
silence_ms: u64,
},
Connected,
Disconnected {
reason: Option<String>,
},
Error(String),
GoAway {
time_left: Duration,
},
Telemetry(Value),
TurnMetrics {
turn: u32,
latency_ms: u32,
prompt_tokens: u32,
response_tokens: u32,
},
}Expand description
Semantic events emitted by the Live session processor.
The L1 equivalent of L0’s SessionEvent.
L0 events are wire-level; LiveEvents are semantic (extractions completed,
phases transitioned, tools executed).
Subscribe via LiveHandle::events().
Multiple independent subscribers supported. Zero-cost when no subscribers
exist (broadcast::send with 0 receivers is a no-op).
Variants (Non-exhaustive)§
This enum is marked as non-exhaustive
Audio(Bytes)
Raw PCM audio from model. Uses Bytes (refcounted) — clone is
a pointer increment (~2ns), not a deep copy.
Media(InlineMedia)
Non-audio media from the model: Gemini 3.8 Live Avatar video
(video/mp4), synchronized with Audio.
TextDelta(String)
Incremental text token from model.
TextComplete(String)
Complete text response (all deltas concatenated).
InputTranscript
User speech transcription.
Fields
OutputTranscript
Model speech transcription.
Fields
Thought(String)
Model reasoning/thinking content.
VadStart
Voice activity detected — user started speaking.
VadEnd
Voice activity ended — user stopped speaking.
Extraction
Extraction completed. Emitted for both the top-level result AND each flattened key (e.g., “order.items”, “order.phase”).
Fields
ExtractionError
Extraction failed.
Fields
StatePromotion
A raw extraction field was considered for promotion into authoritative state.
Fields
PhaseTransition
Phase machine transitioned.
Fields
ToolExecution
Tool dispatched and result obtained.
Fields
ToolCancelled
Tool calls cancelled — either by the server (a ToolCallCancelled
wire event) or locally when a user barge-in interrupted an in-flight
inline tool. No response is sent for a cancelled call, and a cancelled
call never advances the governed flow.
TurnComplete
Model completed a conversational turn.
Interrupted
Model output interrupted by user speech.
FillerCue
A tool call in a stage with a filler timing has run longer than the stage allows: play an earcon or a holding line now.
VerbatimChecked
A verbatim stage’s required text was compared with what the model said this turn.
Fields
Reprompted
The user stayed silent past the active stage’s reprompt timing, and the model was asked to repeat its question.
Connected
Session connected to Gemini.
Disconnected
Session disconnected.
Error(String)
Unrecoverable error.
GoAway
Server requesting session wind-down.
Telemetry(Value)
Aggregated session telemetry snapshot.
TurnMetrics
Per-turn latency and token metrics.
Trait Implementations§
Auto Trait Implementations§
impl !Freeze for LiveEvent
impl RefUnwindSafe for LiveEvent
impl Send for LiveEvent
impl Sync for LiveEvent
impl Unpin for LiveEvent
impl UnwindSafe for LiveEvent
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<S> FromSample<S> for S
impl<S> FromSample<S> for S
fn from_sample_(s: S) -> S
§impl<T> FutureExt for T
impl<T> FutureExt for T
§fn with_context(self, otel_cx: Context) -> WithContext<Self>
fn with_context(self, otel_cx: Context) -> WithContext<Self>
§fn with_current_context(self) -> WithContext<Self>
fn with_current_context(self) -> WithContext<Self>
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a tonic::Request§impl<L> LayerExt<L> for L
impl<L> LayerExt<L> for L
§fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>where
L: Layer<S>,
fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>where
L: Layer<S>,
Layered].