#[non_exhaustive]pub enum LiveEvent {
Show 22 variants
Audio(Bytes),
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,
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.
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.
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<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> 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].