Skip to main content

StreamingSession

Struct StreamingSession 

Source
pub struct StreamingSession { /* private fields */ }
Expand description

A live streaming session connected to an agent subprocess.

stdin is piped for sending NDJSON messages, stdout is piped for reading NDJSON events. The session owns the child process.

Implementations§

Source§

impl StreamingSession

Source

pub async fn send(&mut self, message: &str) -> Result<()>

Send a raw NDJSON line to the agent’s stdin.

The message should be a single JSON object (no trailing newline needed).

Source

pub async fn send_user_message(&mut self, content: &str) -> Result<()>

Send a user message to the agent.

Formats the content as a {"type":"user_message","content":"..."} NDJSON line.

§Mid-turn semantics

The effect of calling this while the agent is still producing a response on the current turn is provider-specific. Check ProviderCapability::features.streaming_input.semantics at runtime to branch on behavior. The possible values are:

  • "queue" — buffered and delivered at the next turn boundary; the current turn runs to completion. This is Claude’s behavior, which is the only provider currently exposing a StreamingSession.
  • "interrupt" — cancels the current turn and starts a new one with the new input.
  • "between-turns-only" — mid-turn sends are an error or no-op; wait for the current turn to finish before sending.

See the module-level documentation for the full matrix.

Source

pub async fn next_event(&mut self) -> Result<Option<Event>>

Read the next unified event from the agent’s stdout.

Lines are parsed as Claude’s native stream-json schema and then converted into the unified Event enum. Events that don’t map to a user-visible unified event (e.g. thinking blocks) are skipped transparently, as are blank and unparseable lines.

A unified Result event is returned at the end of each agent turn; callers can use it as a turn boundary. Ok(None) is returned only when the subprocess closes its stdout (EOF).

Source

pub fn close_input(&mut self)

Close the stdin pipe, signaling no more input to the agent.

Source

pub async fn wait(self) -> Result<()>

Wait for the agent process to exit.

Consumes the session. Returns an error if the process exits with a non-zero status.

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.

Source§

impl<T> Instrument for T

Source§

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

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

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> PolicyExt for T
where T: ?Sized,

Source§

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

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

impl<T> WithSubscriber for T

Source§

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

fn with_current_subscriber(self) -> WithDispatch<Self>

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