Skip to main content

SessionStore

Struct SessionStore 

Source
pub struct SessionStore { /* private fields */ }

Implementations§

Source§

impl SessionStore

Source

pub fn open(path: &Path) -> Result<Self>

Source

pub fn open_in_memory() -> Result<Self>

Source

pub fn create_session(&mut self, new: NewSession) -> Result<Session>

Source

pub fn get_session(&self, id: &str) -> Result<Option<Session>>

Source

pub fn find_latest_session(&self, cwd: &str) -> Result<Option<Session>>

Source

pub fn find_client_session( &self, cwd: &str, key: &str, ) -> Result<Option<Session>>

Source

pub fn recent_sessions(&self, cwd: &str, limit: usize) -> Result<Vec<Session>>

Source

pub fn first_user_prompt(&self, session_id: &str) -> Result<Option<String>>

Source

pub fn rebind_client_session_key( &mut self, cwd: &str, key: &str, target_session_id: &str, ) -> Result<()>

Source

pub fn append_item( &mut self, session_id: &str, role: Role, blocks: Vec<ContentBlock>, ) -> Result<ConversationItem>

Source

pub fn append_assistant_item( &mut self, session_id: &str, blocks: Vec<ContentBlock>, usage: Option<Usage>, ) -> Result<ConversationItem>

Source

pub fn append_turn_interrupted( &mut self, session_id: &str, ) -> Result<ConversationItem>

Source

pub fn replace_branch_with_summary( &mut self, session_id: &str, summary: &str, ) -> Result<ConversationItem>

Source

pub fn get_item(&self, id: &str) -> Result<Option<ConversationItem>>

Source

pub fn active_branch(&self, session_id: &str) -> Result<Vec<ConversationItem>>

Source

pub fn rewind(&mut self, session_id: &str, item_id: &str) -> Result<()>

Source

pub fn user_checkpoints( &self, session_id: &str, ) -> Result<Vec<ConversationItem>>

Source

pub fn count_items(&self, session_id: &str) -> Result<usize>

Source

pub fn update_model_selection( &self, session_id: &str, provider_type: &str, model: &str, model_profile: &str, effort: Option<&str>, ) -> Result<()>

Source

pub fn clear_session(&self, session_id: &str) -> Result<()>

Source

pub fn record_input_history(&self, text: &str) -> Result<()>

Source

pub fn recent_input_history(&self, limit: usize) -> Result<Vec<String>>

Source

pub fn prune_input_history(&self, maximum: usize) -> Result<()>

Source

pub fn record_file_snapshots( &self, session_id: &str, turn_item_id: &str, snapshots: &[FileSnapshot], ) -> Result<()>

Source

pub fn snapshots_from_turn( &self, session_id: &str, item_id: &str, ) -> Result<Vec<FileSnapshot>>

Snapshots taken from item_id’s turn onwards, newest first so a restore replays them in reverse order.

Rewinding to a checkpoint means continuing from that message again, so the work done in response to it is discarded too, which is why its own turn is included rather than only later ones.

Source

pub fn delete_snapshots_from_turn( &self, session_id: &str, item_id: &str, ) -> Result<()>

Source

pub fn session_request_usage(&self, session_id: &str) -> Result<Vec<Usage>>

Usage of every request the session ever made, one entry per request, including requests on branches a rewind left behind: all of them were paid for. Kept per request because tiered prices depend on how large that individual request was.

Source

pub fn cached_prices( &self, key: &str, ttl: Duration, ) -> Result<Option<(Schedule, String)>>

Cached model prices, ignored once older than ttl so a price change is picked up without making every /status hit the network. The whole schedule is stored, tiers included, so a cache hit prices large requests the same way a fresh lookup would.

Source

pub fn cache_prices( &self, key: &str, source: &str, schedule: &Schedule, ) -> Result<()>

Source

pub fn set_provider_state( &self, session_id: &str, key: &str, value: &Value, ) -> Result<()>

Source

pub fn provider_state( &self, session_id: &str, key: &str, ) -> Result<Option<Value>>

Source

pub fn record_shell_history( &self, cwd: &str, client_session_key: Option<&str>, command: &str, exit_code: Option<i32>, started_at: i64, duration_ms: Option<i64>, pipe_status: Option<&str>, ) -> Result<()>

Source

pub fn recent_shell_history( &self, cwd: &str, client_session_key: Option<&str>, limit: usize, ) -> Result<Vec<ShellHistoryItem>>

Source

pub fn prune_shell_history(&self, maximum: usize) -> Result<()>

Source

pub fn shell_history_count(&self) -> Result<usize>

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<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

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

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> MaybeSend for T
where T: Send,

Source§

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

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Sized + 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: Sized + 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> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

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

Source§

type Error = !

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<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

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