pub trait CheckpointStore: Send + Sync {
Show 13 methods
// Required methods
fn load<'a>(
&'a self,
session_id: &'a str,
) -> BoxFuture<'a, Result<Option<Checkpoint>>>;
fn delete_sessions<'a>(
&'a self,
session_ids: &'a [String],
) -> BoxFuture<'a, Result<bool>>;
fn save<'a>(
&'a self,
checkpoint: &'a Checkpoint,
transcript_delta: &'a [Value],
execution: Option<&'a ExecutionRecord>,
) -> BoxFuture<'a, Result<()>>;
fn save_with_events<'a>(
&'a self,
checkpoint: &'a Checkpoint,
transcript_delta: &'a [Value],
execution: Option<&'a ExecutionRecord>,
events: &'a [TimestampedEvent],
) -> BoxFuture<'a, Result<Vec<JournalEvent>>>;
fn append_event<'a>(
&'a self,
session_id: &'a str,
recorded_at_ms: i64,
event: &'a Event,
) -> BoxFuture<'a, Result<JournalEvent>>;
fn event_page<'a>(
&'a self,
session_id: &'a str,
request: EventPageRequest,
) -> BoxFuture<'a, Result<EventPage>>;
fn load_state<'a>(
&'a self,
scope: &'a str,
key: &'a str,
) -> BoxFuture<'a, Result<Option<Value>>>;
fn save_state<'a>(
&'a self,
scope: &'a str,
key: &'a str,
value: &'a Value,
) -> BoxFuture<'a, Result<()>>;
// Provided methods
fn list_sessions_page(
&self,
_request: SessionPageRequest,
) -> BoxFuture<'_, Result<SessionPage>> { ... }
fn transcript_page<'a>(
&'a self,
_session_id: &'a str,
_request: TranscriptPageRequest,
) -> BoxFuture<'a, Result<TranscriptPage>> { ... }
fn execution_page<'a>(
&'a self,
_session_id: &'a str,
_request: ExecutionPageRequest,
) -> BoxFuture<'a, Result<ExecutionPage>> { ... }
fn recent_executions(
&self,
_limit: usize,
) -> BoxFuture<'_, Result<Vec<ExecutionRecord>>> { ... }
fn fork<'a>(
&'a self,
_parent_session_id: &'a str,
_parent_sequence: u64,
_checkpoint: &'a Checkpoint,
) -> BoxFuture<'a, Result<SessionSummary>> { ... }
}Expand description
Stores durable session checkpoints and middleware state.
Atomic operations must not expose a partially committed logical update. Power-loss durability depends on the backend’s storage guarantees. Optional catalog, transcript, execution-history, and fork methods return explicit unsupported errors unless implemented; compacted context is not a transcript journal.
Required Methods§
Sourcefn load<'a>(
&'a self,
session_id: &'a str,
) -> BoxFuture<'a, Result<Option<Checkpoint>>>
fn load<'a>( &'a self, session_id: &'a str, ) -> BoxFuture<'a, Result<Option<Checkpoint>>>
Loads the latest checkpoint for a session.
Sourcefn delete_sessions<'a>(
&'a self,
session_ids: &'a [String],
) -> BoxFuture<'a, Result<bool>>
fn delete_sessions<'a>( &'a self, session_ids: &'a [String], ) -> BoxFuture<'a, Result<bool>>
Atomically deletes the selected sessions, their descendants, and session-scoped state.
Returns false without deleting anything when any selected session is absent.
Sourcefn save<'a>(
&'a self,
checkpoint: &'a Checkpoint,
transcript_delta: &'a [Value],
execution: Option<&'a ExecutionRecord>,
) -> BoxFuture<'a, Result<()>>
fn save<'a>( &'a self, checkpoint: &'a Checkpoint, transcript_delta: &'a [Value], execution: Option<&'a ExecutionRecord>, ) -> BoxFuture<'a, Result<()>>
Atomically replaces the checkpoint, appends transcript items, and records a finished turn.
Sourcefn save_with_events<'a>(
&'a self,
checkpoint: &'a Checkpoint,
transcript_delta: &'a [Value],
execution: Option<&'a ExecutionRecord>,
events: &'a [TimestampedEvent],
) -> BoxFuture<'a, Result<Vec<JournalEvent>>>
fn save_with_events<'a>( &'a self, checkpoint: &'a Checkpoint, transcript_delta: &'a [Value], execution: Option<&'a ExecutionRecord>, events: &'a [TimestampedEvent], ) -> BoxFuture<'a, Result<Vec<JournalEvent>>>
Atomically saves one checkpoint and appends its normalized event batch.
The checkpoint, transcript delta, optional execution record, and journal events form one commit boundary. Return the durably assigned event sequences only after that commit succeeds.
Sourcefn append_event<'a>(
&'a self,
session_id: &'a str,
recorded_at_ms: i64,
event: &'a Event,
) -> BoxFuture<'a, Result<JournalEvent>>
fn append_event<'a>( &'a self, session_id: &'a str, recorded_at_ms: i64, event: &'a Event, ) -> BoxFuture<'a, Result<JournalEvent>>
Assigns a session-local sequence and appends one normalized event atomically.
Sourcefn event_page<'a>(
&'a self,
session_id: &'a str,
request: EventPageRequest,
) -> BoxFuture<'a, Result<EventPage>>
fn event_page<'a>( &'a self, session_id: &'a str, request: EventPageRequest, ) -> BoxFuture<'a, Result<EventPage>>
Loads one newest-first page of normalized session events.
Provided Methods§
Sourcefn list_sessions_page(
&self,
_request: SessionPageRequest,
) -> BoxFuture<'_, Result<SessionPage>>
fn list_sessions_page( &self, _request: SessionPageRequest, ) -> BoxFuture<'_, Result<SessionPage>>
Lists one page of the most recently updated sessions, newest first.
Sourcefn transcript_page<'a>(
&'a self,
_session_id: &'a str,
_request: TranscriptPageRequest,
) -> BoxFuture<'a, Result<TranscriptPage>>
fn transcript_page<'a>( &'a self, _session_id: &'a str, _request: TranscriptPageRequest, ) -> BoxFuture<'a, Result<TranscriptPage>>
Loads one newest-first page of append-only transcript deltas.
Sourcefn execution_page<'a>(
&'a self,
_session_id: &'a str,
_request: ExecutionPageRequest,
) -> BoxFuture<'a, Result<ExecutionPage>>
fn execution_page<'a>( &'a self, _session_id: &'a str, _request: ExecutionPageRequest, ) -> BoxFuture<'a, Result<ExecutionPage>>
Loads one newest-first page of terminal user-turn records.
Sourcefn recent_executions(
&self,
_limit: usize,
) -> BoxFuture<'_, Result<Vec<ExecutionRecord>>>
fn recent_executions( &self, _limit: usize, ) -> BoxFuture<'_, Result<Vec<ExecutionRecord>>>
Loads the most recently started terminal user turns across all sessions.
Sourcefn fork<'a>(
&'a self,
_parent_session_id: &'a str,
_parent_sequence: u64,
_checkpoint: &'a Checkpoint,
) -> BoxFuture<'a, Result<SessionSummary>>
fn fork<'a>( &'a self, _parent_session_id: &'a str, _parent_sequence: u64, _checkpoint: &'a Checkpoint, ) -> BoxFuture<'a, Result<SessionSummary>>
Creates a child session at an exact durable parent sequence.
Dyn Compatibility§
This trait is dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".