LiveSessionBuilder

Struct LiveSessionBuilder 

Source
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

Source

pub fn new(config: SessionConfig) -> LiveSessionBuilder

Create a new builder with the given session config.

Source

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.

Source

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.

Source

pub fn flow_monitor(self, monitor: FlowMonitor) -> LiveSessionBuilder

Attach a governed-flow monitor (built from a Flow + Mode).

Source

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.

Source

pub fn greeting(self, prompt: impl Into<String>) -> LiveSessionBuilder

Set a greeting prompt sent on connect to trigger the model to speak first.

Source

pub fn dispatcher(self, dispatcher: ToolDispatcher) -> LiveSessionBuilder

Set the tool dispatcher for auto-dispatch of tool calls.

Source

pub fn callbacks(self, callbacks: EventCallbacks) -> LiveSessionBuilder

Set the event callbacks.

Source

pub fn extractor(self, extractor: Arc<dyn TurnExtractor>) -> LiveSessionBuilder

Add a turn extractor that runs between turns.

Source

pub fn computed(self, registry: ComputedRegistry) -> LiveSessionBuilder

Set the computed variable registry for derived state.

Source

pub fn phase_machine(self, machine: PhaseMachine) -> LiveSessionBuilder

Set the phase machine for declarative conversation phase management.

Source

pub fn watchers(self, registry: WatcherRegistry) -> LiveSessionBuilder

Set the watcher registry for state change watchers.

Source

pub fn temporal(self, registry: TemporalRegistry) -> LiveSessionBuilder

Set the temporal pattern registry.

Source

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.

Source

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.

Source

pub fn steering_mode(self, mode: SteeringMode) -> LiveSessionBuilder

Set the steering mode for how the phase machine delivers instructions.

Source

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.
Source

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.

Source

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.

Source

pub fn persistence( self, backend: Arc<dyn SessionPersistence>, ) -> LiveSessionBuilder

Set a session persistence backend for surviving process restarts.

Source

pub fn session_id(self, id: impl Into<String>) -> LiveSessionBuilder

Set the session ID for persistence.

Source

pub fn tool_advisory(self, enabled: bool) -> LiveSessionBuilder

Enable or disable tool availability advisory on phase transitions.

Source

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.

Source

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:

  1. into_plan — pure derivation/validation of the resolved startup configuration (SessionPlan); no I/O, no spawning.
  2. Connect the L0 transport using the plan’s resolved SessionConfig.
  3. build_runtime — assemble the runtime wiring (channels, shared state, dispatcher, control plane) from the plan + connected session.
  4. spawn_lanes — spawn the telemetry/event/tool lanes and return the assembled LiveHandle.

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<S> FromSample<S> for S

§

fn from_sample_(s: S) -> S

§

impl<T> FutureExt for T

§

fn with_context(self, otel_cx: Context) -> WithContext<Self>

Attaches the provided Context to this type, returning a WithContext wrapper. Read more
§

fn with_current_context(self) -> WithContext<Self>

Attaches the current Context to this type, returning a WithContext wrapper. Read more
§

impl<T> FutureExt for T

§

fn with_context(self, otel_cx: Context) -> WithContext<Self>

Attaches the provided Context to this type, returning a WithContext wrapper. Read more
§

fn with_current_context(self) -> WithContext<Self>

Attaches the current Context to this type, returning a WithContext wrapper. Read more
§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts 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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts 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

§

fn into_request(self) -> Request<T>

Wrap the input message T in a tonic::Request
§

impl<L> LayerExt<L> for L

§

fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>
where L: Layer<S>,

Applies the layer to a service and wraps it in [Layered].
§

impl<T> Pointable for T

§

const ALIGN: usize

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
§

impl<T> PolicyExt for T
where T: ?Sized,

§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns [Action::Follow] only if self and other return Action::Follow. Read more
§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns [Action::Follow] if either self or other returns Action::Follow. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
§

impl<T, U> ToSample<U> for T
where U: FromSample<T>,

§

fn to_sample_(self) -> U

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

§

impl<S, T> Duplex<S> for T
where T: FromSample<S> + ToSample<S>,

§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,