Skip to main content

Session

Struct Session 

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

A multi-turn conversation handle.

Owns an Arc<Claude> so it can be moved between tasks and live inside long-running actors. Tracks session_id, cumulative cost, turn count, and per-turn result history.

Implementations§

Source§

impl Session

Source

pub fn new(claude: Arc<Claude>) -> Self

Start a fresh session. The first turn will discover a session id from its result; subsequent turns reuse it via --resume.

Source

pub fn resume(claude: Arc<Claude>, session_id: impl Into<String>) -> Self

Reattach to an existing session by id. The next turn immediately passes --resume <id>. Cost and turn counters start at zero since no history is available.

Source

pub async fn send(&mut self, prompt: impl Into<String>) -> Result<QueryResult>

Send a plain-prompt turn. Equivalent to execute(QueryCommand::new(prompt)).

Source

pub async fn execute(&mut self, cmd: QueryCommand) -> Result<QueryResult>

Send a turn with a fully-configured QueryCommand.

Any session-related flags on cmd (--resume, --continue, --session-id, --fork-session) are overridden with this session’s current id, so they can’t conflict.

Source

pub async fn stream<F>( &mut self, prompt: impl Into<String>, handler: F, ) -> Result<()>
where F: FnMut(StreamEvent),

Stream a plain-prompt turn, dispatching each NDJSON event to handler. The session’s id is captured from the first event that carries one, so subsequent turns can resume, and the id persists even if the stream errors partway through.

Source

pub async fn stream_execute<F>( &mut self, cmd: QueryCommand, handler: F, ) -> Result<()>
where F: FnMut(StreamEvent),

Stream a turn with a fully-configured QueryCommand, with the same session-id capture semantics as Session::stream.

The command’s output format is forced to stream-json and any session-related flags are overridden as in Session::execute.

Source

pub fn id(&self) -> Option<&str>

Current session id, if one has been established.

Source

pub fn total_cost_usd(&self) -> f64

Cumulative cost in USD across all turns in this session.

Source

pub fn total_turns(&self) -> u32

Cumulative turn count across all turns in this session.

Source

pub fn history(&self) -> &[QueryResult]

Full per-turn result history.

Source

pub fn last_result(&self) -> Option<&QueryResult>

Result of the most recent turn, if any.

Trait Implementations§

Source§

impl Clone for Session

Source§

fn clone(&self) -> Session

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for Session

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. 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> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
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