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) -> Self
pub fn new(config: SessionConfig) -> Self
Create a new builder with the given session config.
Sourcepub fn redaction(self, redactor: TranscriptRedactor) -> Self
pub fn redaction(self, redactor: TranscriptRedactor) -> Self
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>) -> Self
pub fn middleware(self, layer: Arc<dyn Middleware>) -> Self
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) -> Self
pub fn flow_monitor(self, monitor: FlowMonitor) -> Self
Attach a governed-flow monitor (built from a Flow + Mode).
Sourcepub fn state(self, state: State) -> Self
pub fn state(self, state: State) -> Self
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>) -> Self
pub fn greeting(self, prompt: impl Into<String>) -> Self
Set a greeting prompt sent on connect to trigger the model to speak first.
Sourcepub fn dispatcher(self, dispatcher: ToolDispatcher) -> Self
pub fn dispatcher(self, dispatcher: ToolDispatcher) -> Self
Set the tool dispatcher for auto-dispatch of tool calls.
Sourcepub fn callbacks(self, callbacks: EventCallbacks) -> Self
pub fn callbacks(self, callbacks: EventCallbacks) -> Self
Set the event callbacks.
Sourcepub fn extractor(self, extractor: Arc<dyn TurnExtractor>) -> Self
pub fn extractor(self, extractor: Arc<dyn TurnExtractor>) -> Self
Add a turn extractor that runs between turns.
Sourcepub fn computed(self, registry: ComputedRegistry) -> Self
pub fn computed(self, registry: ComputedRegistry) -> Self
Set the computed variable registry for derived state.
Sourcepub fn phase_machine(self, machine: PhaseMachine) -> Self
pub fn phase_machine(self, machine: PhaseMachine) -> Self
Set the phase machine for declarative conversation phase management.
Sourcepub fn watchers(self, registry: WatcherRegistry) -> Self
pub fn watchers(self, registry: WatcherRegistry) -> Self
Set the watcher registry for state change watchers.
Sourcepub fn temporal(self, registry: TemporalRegistry) -> Self
pub fn temporal(self, registry: TemporalRegistry) -> Self
Set the temporal pattern registry.
Sourcepub fn tool_execution_mode(
self,
tool_name: impl Into<String>,
mode: ToolExecutionMode,
) -> Self
pub fn tool_execution_mode( self, tool_name: impl Into<String>, mode: ToolExecutionMode, ) -> Self
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) -> Self
pub fn soft_turn_timeout(self, timeout: Duration) -> Self
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) -> Self
pub fn steering_mode(self, mode: SteeringMode) -> Self
Set the steering mode for how the phase machine delivers instructions.
Sourcepub fn context_delivery(self, mode: ContextDelivery) -> Self
pub fn context_delivery(self, mode: ContextDelivery) -> Self
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) -> Self
pub fn delivery(self, delivery: DeliveryConfig) -> Self
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) -> Self
pub fn repair(self, config: RepairConfig) -> Self
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>) -> Self
pub fn persistence(self, backend: Arc<dyn SessionPersistence>) -> Self
Set a session persistence backend for surviving process restarts.
Sourcepub fn session_id(self, id: impl Into<String>) -> Self
pub fn session_id(self, id: impl Into<String>) -> Self
Set the session ID for persistence.
Sourcepub fn tool_advisory(self, enabled: bool) -> Self
pub fn tool_advisory(self, enabled: bool) -> Self
Enable or disable tool availability advisory on phase transitions.
Sourcepub fn telemetry_interval(self, interval: Duration) -> Self
pub fn telemetry_interval(self, interval: Duration) -> Self
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<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].