pub struct LiveSessionBuilder { /* private fields */ }Expand description
Builder for a callback-driven Live session.
Combines SessionConfig, EventCallbacks, tool dispatching, extractors,
computed state, phase machines, watchers, and temporal patterns into a
single connection setup. Call connect() to establish
the WebSocket connection and start the three-lane event processor.
For ergonomic usage, prefer the L2 Live builder from gemini-adk-fluent-rs
which wraps this with a fluent API.
Implementations§
Source§impl LiveSessionBuilder
impl LiveSessionBuilder
Sourcepub fn new(config: SessionConfig) -> LiveSessionBuilder
pub fn new(config: SessionConfig) -> LiveSessionBuilder
Create a new builder with the given session config.
Sourcepub fn redaction(self, redactor: TranscriptRedactor) -> LiveSessionBuilder
pub fn redaction(self, redactor: TranscriptRedactor) -> LiveSessionBuilder
Install transcript redaction — see
redaction::TranscriptRedactor.
Applied at the event router, before callbacks, the transcript buffer, extraction, or persistence see the text. An inactive redactor (no rules enabled) is dropped rather than installed.
Sourcepub fn middleware(self, layer: Arc<dyn Middleware>) -> LiveSessionBuilder
pub fn middleware(self, layer: Arc<dyn Middleware>) -> LiveSessionBuilder
Add a middleware layer.
Layers run around tool dispatch in the control lane: before_tool
(a returned error vetoes the call), after_tool, and on_tool_error.
Multiple calls accumulate in order.
Sourcepub fn flow_monitor(self, monitor: FlowMonitor) -> LiveSessionBuilder
pub fn flow_monitor(self, monitor: FlowMonitor) -> LiveSessionBuilder
Attach a governed-flow monitor (built from a Flow + Mode).
Sourcepub fn state(self, state: State) -> LiveSessionBuilder
pub fn state(self, state: State) -> LiveSessionBuilder
Provide a pre-created State to use for this session.
If not set, a new State is created at connect time. Use this when the State needs to be shared with tools or other components before the session connects.
Sourcepub fn greeting(self, prompt: impl Into<String>) -> LiveSessionBuilder
pub fn greeting(self, prompt: impl Into<String>) -> LiveSessionBuilder
Set a greeting prompt sent on connect to trigger the model to speak first.
Sourcepub fn dispatcher(self, dispatcher: ToolDispatcher) -> LiveSessionBuilder
pub fn dispatcher(self, dispatcher: ToolDispatcher) -> LiveSessionBuilder
Set the tool dispatcher for auto-dispatch of tool calls.
Sourcepub fn callbacks(self, callbacks: EventCallbacks) -> LiveSessionBuilder
pub fn callbacks(self, callbacks: EventCallbacks) -> LiveSessionBuilder
Set the event callbacks.
Sourcepub fn extractor(self, extractor: Arc<dyn TurnExtractor>) -> LiveSessionBuilder
pub fn extractor(self, extractor: Arc<dyn TurnExtractor>) -> LiveSessionBuilder
Add a turn extractor that runs between turns.
Sourcepub fn computed(self, registry: ComputedRegistry) -> LiveSessionBuilder
pub fn computed(self, registry: ComputedRegistry) -> LiveSessionBuilder
Set the computed variable registry for derived state.
Sourcepub fn phase_machine(self, machine: PhaseMachine) -> LiveSessionBuilder
pub fn phase_machine(self, machine: PhaseMachine) -> LiveSessionBuilder
Set the phase machine for declarative conversation phase management.
Sourcepub fn watchers(self, registry: WatcherRegistry) -> LiveSessionBuilder
pub fn watchers(self, registry: WatcherRegistry) -> LiveSessionBuilder
Set the watcher registry for state change watchers.
Sourcepub fn temporal(self, registry: TemporalRegistry) -> LiveSessionBuilder
pub fn temporal(self, registry: TemporalRegistry) -> LiveSessionBuilder
Set the temporal pattern registry.
Sourcepub fn tool_execution_mode(
self,
tool_name: impl Into<String>,
mode: ToolExecutionMode,
) -> LiveSessionBuilder
pub fn tool_execution_mode( self, tool_name: impl Into<String>, mode: ToolExecutionMode, ) -> LiveSessionBuilder
Set the execution mode for a named tool.
Tools default to ToolExecutionMode::Standard. Set to
ToolExecutionMode::Background for zero-dead-air execution.
Sourcepub fn soft_turn_timeout(self, timeout: Duration) -> LiveSessionBuilder
pub fn soft_turn_timeout(self, timeout: Duration) -> LiveSessionBuilder
Enable soft turn detection for proactive silence awareness.
When proactiveAudio is enabled, the model may choose not to respond.
This sets a timeout after VAD end — if the model stays silent, a
lightweight “soft turn” fires to keep state updated without forcing
the model to speak.
Sourcepub fn steering_mode(self, mode: SteeringMode) -> LiveSessionBuilder
pub fn steering_mode(self, mode: SteeringMode) -> LiveSessionBuilder
Set the steering mode for how the phase machine delivers instructions.
Sourcepub fn context_delivery(self, mode: ContextDelivery) -> LiveSessionBuilder
pub fn context_delivery(self, mode: ContextDelivery) -> LiveSessionBuilder
Set the context delivery timing.
Immediate(default): send batched context during TurnComplete.Deferred: queue context and flush with next user send.
Sourcepub fn delivery(self, delivery: DeliveryConfig) -> LiveSessionBuilder
pub fn delivery(self, delivery: DeliveryConfig) -> LiveSessionBuilder
Set the fast-lane delivery (backpressure) policy per event class.
Defaults to all-Lossless, which
preserves the historical send().await routing behavior. Opt classes
into LossyDropNewest to
keep the router from stalling when a fast-lane consumer falls behind.
Sourcepub fn repair(self, config: RepairConfig) -> LiveSessionBuilder
pub fn repair(self, config: RepairConfig) -> LiveSessionBuilder
Enable the conversation repair protocol.
Tracks need fulfillment per phase and nudges the model when the conversation stalls on gathering required information.
Sourcepub fn persistence(
self,
backend: Arc<dyn SessionPersistence>,
) -> LiveSessionBuilder
pub fn persistence( self, backend: Arc<dyn SessionPersistence>, ) -> LiveSessionBuilder
Set a session persistence backend for surviving process restarts.
Sourcepub fn session_id(self, id: impl Into<String>) -> LiveSessionBuilder
pub fn session_id(self, id: impl Into<String>) -> LiveSessionBuilder
Set the session ID for persistence.
Sourcepub fn tool_advisory(self, enabled: bool) -> LiveSessionBuilder
pub fn tool_advisory(self, enabled: bool) -> LiveSessionBuilder
Enable or disable tool availability advisory on phase transitions.
Sourcepub fn telemetry_interval(self, interval: Duration) -> LiveSessionBuilder
pub fn telemetry_interval(self, interval: Duration) -> LiveSessionBuilder
Set the periodic telemetry emission interval.
When set, the processor periodically emits LiveEvent::Telemetry
and LiveEvent::TurnMetrics to the event stream.
Sourcepub async fn connect(self) -> Result<LiveHandle, AgentError>
pub async fn connect(self) -> Result<LiveHandle, AgentError>
Connect to Gemini and start the three-lane event processor.
This is a thin orchestrator over three explicit, behavior-preserving stages:
into_plan— pure derivation/validation of the resolved startup configuration (SessionPlan); no I/O, no spawning.- Connect the L0 transport using the plan’s resolved
SessionConfig. build_runtime— assemble the runtime wiring (channels, shared state, dispatcher, control plane) from the plan + connected session.spawn_lanes— spawn the telemetry/event/tool lanes and return the assembledLiveHandle.
Auto Trait Implementations§
impl Freeze for LiveSessionBuilder
impl !RefUnwindSafe for LiveSessionBuilder
impl Send for LiveSessionBuilder
impl Sync for LiveSessionBuilder
impl Unpin for LiveSessionBuilder
impl !UnwindSafe for LiveSessionBuilder
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
§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> 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].