pub struct Store { /* private fields */ }Expand description
SQLite-backed store for checkpoint blobs, runtime session state, and Lashlang artifacts.
This is the first-party local implementation of the runtime store traits.
Internally it holds a single cloneable [SqliteConnection] (a
tokio-rusqlite handle to one database thread).
Implementations§
Source§impl Store
impl Store
pub async fn put_blob(&self, content: &[u8]) -> BlobRef
pub async fn put_artifact_blob( &self, descriptor: BlobArtifactDescriptor, content: &[u8], ) -> BlobRef
pub async fn get_blob(&self, blob_ref: &BlobRef) -> Option<Vec<u8>>
pub async fn put_typed_blob<T: Serialize>(&self, value: &T) -> BlobRef
pub async fn put_typed_artifact_blob<T: Serialize>( &self, descriptor: BlobArtifactDescriptor, value: &T, ) -> BlobRef
pub async fn get_typed_blob<T: DeserializeOwned>( &self, blob_ref: &BlobRef, ) -> Option<T>
pub async fn put_checkpoint( &self, checkpoint: &HydratedSessionCheckpoint, ) -> StoredSessionCheckpoint
pub async fn get_checkpoint( &self, blob_ref: &BlobRef, ) -> Option<HydratedSessionCheckpoint>
pub async fn append_usage_deltas(&self, entries: &[TokenLedgerEntry])
pub async fn load_usage_deltas(&self) -> Vec<TokenLedgerEntry>
Source§impl Store
impl Store
pub async fn replace_session_graph(&self, graph: &SessionGraph)
pub async fn append_session_graph_nodes(&self, nodes: &[SessionNodeRecord])
pub async fn load_session_graph(&self) -> SessionGraph
pub async fn gc_unreachable(&self) -> GcReport
Source§impl Store
impl Store
pub async fn open(path: &Path) -> Result<Self>
pub async fn open_with_options( path: &Path, options: StoreOptions, ) -> Result<Self>
Sourcepub async fn open_readonly(path: &Path) -> Result<Self>
pub async fn open_readonly(path: &Path) -> Result<Self>
Open the local database read-only. Used by export/resume call sites that must never mutate the source.
pub async fn load_picker_info(&self) -> Option<SessionPickerInfo>
pub async fn memory() -> Result<Self>
pub async fn memory_with_options(options: StoreOptions) -> Result<Self>
pub async fn save_session_head_meta(&self, meta: SessionHeadMeta)
pub async fn load_session_head_meta(&self) -> Option<SessionHeadMeta>
pub async fn save_session_head(&self, head: SessionHead)
pub async fn load_session_head(&self) -> Option<SessionHead>
pub async fn head_copy_from_store(&self, source: &Store)
pub async fn save_session_meta(&self, meta: SessionMeta)
pub async fn load_session_meta(&self) -> Option<SessionMeta>
Trait Implementations§
Source§impl AttachmentManifest for Store
impl AttachmentManifest for Store
fn record_intent(&self, intent: AttachmentIntent) -> Result<(), StoreError>
Source§fn commit_refs(
&self,
session_id: &str,
attachment_ids: &[AttachmentId],
) -> Result<(), StoreError>
fn commit_refs( &self, session_id: &str, attachment_ids: &[AttachmentId], ) -> Result<(), StoreError>
Mark a set of attachment ids as committed (i.e. now referenced
by a durable session-graph commit). Backends that store
commits and manifest in the same database stamp this inside
the commit transaction; the trait-level method is the
out-of-band entry point for hosts that want to commit an id
outside the normal turn-commit flow.
Source§fn list_uncommitted(
&self,
older_than_epoch_ms: u64,
) -> Result<Vec<AttachmentManifestEntry>, StoreError>
fn list_uncommitted( &self, older_than_epoch_ms: u64, ) -> Result<Vec<AttachmentManifestEntry>, StoreError>
Return manifest entries whose intent has aged past
older_than_epoch_ms without ever being committed. Hosts run
this periodically to find orphans left by crashes between
record_intent and the next turn commit.Source§fn forget(&self, attachment_id: &AttachmentId) -> Result<(), StoreError>
fn forget(&self, attachment_id: &AttachmentId) -> Result<(), StoreError>
Remove a manifest row entirely. Called by the GC coordinator
after the corresponding bytes have been removed from the
backing
AttachmentStore.Source§impl LashlangArtifactStore for Store
impl LashlangArtifactStore for Store
Source§fn durability_tier(&self) -> DurabilityTier
fn durability_tier(&self) -> DurabilityTier
Durability tier this artifact store provides; defaults to
DurabilityTier::Inline.fn put_module_artifact<'life0, 'life1, 'async_trait>(
&'life0 self,
artifact: &'life1 ModuleArtifact,
) -> Pin<Box<dyn Future<Output = Result<(), ArtifactStoreError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn get_module_artifact<'life0, 'life1, 'async_trait>(
&'life0 self,
module_ref: &'life1 ModuleRef,
) -> Pin<Box<dyn Future<Output = Result<Option<Arc<ModuleArtifact>>, ArtifactStoreError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn put_artifact_bytes<'life0, 'life1, 'life2, 'life3, 'async_trait>(
&'life0 self,
artifact_ref: &'life1 str,
descriptor: &'life2 str,
bytes: &'life3 [u8],
) -> Pin<Box<dyn Future<Output = Result<(), ArtifactStoreError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
fn get_artifact_bytes<'life0, 'life1, 'async_trait>(
&'life0 self,
artifact_ref: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<Option<Vec<u8>>, ArtifactStoreError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Source§impl ProcessExecutionEnvStore for Store
impl ProcessExecutionEnvStore for Store
fn durability_tier(&self) -> DurabilityTier
fn put_process_execution_env<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
env_ref: &'life1 ProcessExecutionEnvRef,
bytes: &'life2 [u8],
) -> Pin<Box<dyn Future<Output = Result<(), PluginError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn get_process_execution_env<'life0, 'life1, 'async_trait>(
&'life0 self,
env_ref: &'life1 ProcessExecutionEnvRef,
) -> Pin<Box<dyn Future<Output = Result<Option<Vec<u8>>, PluginError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Source§impl QueuedWorkStore for Store
impl QueuedWorkStore for Store
Source§fn enqueue_queued_work<'life0, 'async_trait>(
&'life0 self,
batch: QueuedWorkBatchDraft,
) -> Pin<Box<dyn Future<Output = Result<QueuedWorkBatch, StoreError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn enqueue_queued_work<'life0, 'async_trait>(
&'life0 self,
batch: QueuedWorkBatchDraft,
) -> Pin<Box<dyn Future<Output = Result<QueuedWorkBatch, StoreError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Persist a queued-work batch for later claiming.
Source§fn claim_leading_ready_session_command<'life0, 'life1, 'life2, 'life3, 'async_trait>(
&'life0 self,
session_id: &'life1 str,
session_execution_lease: &'life2 SessionExecutionLeaseFence,
owner: &'life3 LeaseOwnerIdentity,
lease_ttl_ms: u64,
) -> Pin<Box<dyn Future<Output = Result<Option<QueuedWorkClaim>, StoreError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
fn claim_leading_ready_session_command<'life0, 'life1, 'life2, 'life3, 'async_trait>(
&'life0 self,
session_id: &'life1 str,
session_execution_lease: &'life2 SessionExecutionLeaseFence,
owner: &'life3 LeaseOwnerIdentity,
lease_ttl_ms: u64,
) -> Pin<Box<dyn Future<Output = Result<Option<QueuedWorkClaim>, StoreError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
Claim a leading ready session-command batch for
owner_id. Read moreSource§fn claim_ready_queued_work<'life0, 'life1, 'life2, 'life3, 'async_trait>(
&'life0 self,
session_id: &'life1 str,
session_execution_lease: &'life2 SessionExecutionLeaseFence,
owner: &'life3 LeaseOwnerIdentity,
boundary: QueuedWorkClaimBoundary,
lease_ttl_ms: u64,
max_batches: usize,
) -> Pin<Box<dyn Future<Output = Result<Option<QueuedWorkClaim>, StoreError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
fn claim_ready_queued_work<'life0, 'life1, 'life2, 'life3, 'async_trait>(
&'life0 self,
session_id: &'life1 str,
session_execution_lease: &'life2 SessionExecutionLeaseFence,
owner: &'life3 LeaseOwnerIdentity,
boundary: QueuedWorkClaimBoundary,
lease_ttl_ms: u64,
max_batches: usize,
) -> Pin<Box<dyn Future<Output = Result<Option<QueuedWorkClaim>, StoreError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
Claim the next ready turn-work group for
owner_id. Read moreSource§fn renew_queued_work_claim<'life0, 'life1, 'async_trait>(
&'life0 self,
claim: &'life1 QueuedWorkClaim,
lease_ttl_ms: u64,
) -> Pin<Box<dyn Future<Output = Result<QueuedWorkClaim, StoreError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn renew_queued_work_claim<'life0, 'life1, 'async_trait>(
&'life0 self,
claim: &'life1 QueuedWorkClaim,
lease_ttl_ms: u64,
) -> Pin<Box<dyn Future<Output = Result<QueuedWorkClaim, StoreError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Extend the lease on a held queued-work claim.
Source§fn abandon_queued_work_claim<'life0, 'life1, 'async_trait>(
&'life0 self,
claim: &'life1 QueuedWorkClaim,
) -> Pin<Box<dyn Future<Output = Result<(), StoreError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn abandon_queued_work_claim<'life0, 'life1, 'async_trait>(
&'life0 self,
claim: &'life1 QueuedWorkClaim,
) -> Pin<Box<dyn Future<Output = Result<(), StoreError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Release a held queued-work claim without completing it.
Source§fn cancel_queued_work_batch<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
session_id: &'life1 str,
batch_id: &'life2 str,
) -> Pin<Box<dyn Future<Output = Result<Option<QueuedWorkBatch>, StoreError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn cancel_queued_work_batch<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
session_id: &'life1 str,
batch_id: &'life2 str,
) -> Pin<Box<dyn Future<Output = Result<Option<QueuedWorkBatch>, StoreError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Remove an unclaimed queued-work batch from durable ingress. Read more
Source§fn list_queued_work<'life0, 'life1, 'async_trait>(
&'life0 self,
session_id: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<Vec<QueuedWorkBatch>, StoreError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn list_queued_work<'life0, 'life1, 'async_trait>(
&'life0 self,
session_id: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<Vec<QueuedWorkBatch>, StoreError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
List all queued-work batches for a session, including batches held by a
live claim.
Source§fn list_pending_queued_work<'life0, 'life1, 'async_trait>(
&'life0 self,
session_id: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<Vec<QueuedWorkBatch>, StoreError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn list_pending_queued_work<'life0, 'life1, 'async_trait>(
&'life0 self,
session_id: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<Vec<QueuedWorkBatch>, StoreError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
List queued-work batches that are still pending presentation/editing. Read more
Source§fn claim_ready_queued_work_by_batch_ids<'life0, 'life1, 'life2, 'life3, 'life4, 'async_trait>(
&'life0 self,
session_id: &'life1 str,
session_execution_lease: &'life2 SessionExecutionLeaseFence,
owner: &'life3 LeaseOwnerIdentity,
boundary: QueuedWorkClaimBoundary,
lease_ttl_ms: u64,
batch_ids: &'life4 [String],
) -> Pin<Box<dyn Future<Output = Result<Option<QueuedWorkClaim>, StoreError>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
'life4: 'async_trait,
Self: 'async_trait,
fn claim_ready_queued_work_by_batch_ids<'life0, 'life1, 'life2, 'life3, 'life4, 'async_trait>(
&'life0 self,
session_id: &'life1 str,
session_execution_lease: &'life2 SessionExecutionLeaseFence,
owner: &'life3 LeaseOwnerIdentity,
boundary: QueuedWorkClaimBoundary,
lease_ttl_ms: u64,
batch_ids: &'life4 [String],
) -> Pin<Box<dyn Future<Output = Result<Option<QueuedWorkClaim>, StoreError>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
'life4: 'async_trait,
Self: 'async_trait,
Claim a specific ready batch set selected from the durable queue. Read more
Source§impl SessionCommitStore for Store
impl SessionCommitStore for Store
Source§fn durability_tier(&self) -> DurabilityTier
fn durability_tier(&self) -> DurabilityTier
Durability tier this session store provides; defaults to
DurabilityTier::Inline.fn load_session<'life0, 'async_trait>(
&'life0 self,
scope: SessionReadScope,
) -> Pin<Box<dyn Future<Output = Result<Option<PersistedSessionRead>, StoreError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn load_node<'life0, 'life1, 'async_trait>(
&'life0 self,
node_id: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<Option<SessionNodeRecord>, StoreError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn commit_runtime_state<'life0, 'async_trait>(
&'life0 self,
commit: RuntimeCommit,
) -> Pin<Box<dyn Future<Output = Result<RuntimeCommitResult, StoreError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn save_session_meta<'life0, 'async_trait>(
&'life0 self,
meta: SessionMeta,
) -> Pin<Box<dyn Future<Output = Result<(), StoreError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn load_session_meta<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<Option<SessionMeta>, StoreError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Source§impl SessionExecutionLeaseStore for Store
impl SessionExecutionLeaseStore for Store
Source§fn try_claim_session_execution_lease<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
session_id: &'life1 str,
owner: &'life2 LeaseOwnerIdentity,
lease_ttl_ms: u64,
) -> Pin<Box<dyn Future<Output = Result<SessionExecutionLeaseClaimOutcome, StoreError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn try_claim_session_execution_lease<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
session_id: &'life1 str,
owner: &'life2 LeaseOwnerIdentity,
lease_ttl_ms: u64,
) -> Pin<Box<dyn Future<Output = Result<SessionExecutionLeaseClaimOutcome, StoreError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Try to claim the durable single-writer execution lane for
session_id. Read moreSource§fn reclaim_session_execution_lease<'life0, 'life1, 'life2, 'life3, 'async_trait>(
&'life0 self,
session_id: &'life1 str,
owner: &'life2 LeaseOwnerIdentity,
observed_holder: &'life3 SessionExecutionLeaseFence,
lease_ttl_ms: u64,
) -> Pin<Box<dyn Future<Output = Result<SessionExecutionLeaseClaimOutcome, StoreError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
fn reclaim_session_execution_lease<'life0, 'life1, 'life2, 'life3, 'async_trait>(
&'life0 self,
session_id: &'life1 str,
owner: &'life2 LeaseOwnerIdentity,
observed_holder: &'life3 SessionExecutionLeaseFence,
lease_ttl_ms: u64,
) -> Pin<Box<dyn Future<Output = Result<SessionExecutionLeaseClaimOutcome, StoreError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
Reclaim an unexpired session execution lease whose observed holder is
definitely dead according to persisted local-process liveness metadata. Read more
Source§fn renew_session_execution_lease<'life0, 'life1, 'async_trait>(
&'life0 self,
fence: &'life1 SessionExecutionLeaseFence,
lease_ttl_ms: u64,
) -> Pin<Box<dyn Future<Output = Result<SessionExecutionLease, StoreError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn renew_session_execution_lease<'life0, 'life1, 'async_trait>(
&'life0 self,
fence: &'life1 SessionExecutionLeaseFence,
lease_ttl_ms: u64,
) -> Pin<Box<dyn Future<Output = Result<SessionExecutionLease, StoreError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Extend a live session execution lease owned by the caller. Read more
Source§fn release_session_execution_lease<'life0, 'life1, 'async_trait>(
&'life0 self,
completion: &'life1 SessionExecutionLeaseCompletion,
) -> Pin<Box<dyn Future<Output = Result<(), StoreError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn release_session_execution_lease<'life0, 'life1, 'async_trait>(
&'life0 self,
completion: &'life1 SessionExecutionLeaseCompletion,
) -> Pin<Box<dyn Future<Output = Result<(), StoreError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Release a session execution lease fenced by its completion token. Read more
Source§impl StoreMaintenance for Store
impl StoreMaintenance for Store
Source§fn tombstone_nodes<'life0, 'life1, 'async_trait>(
&'life0 self,
ids: &'life1 [String],
) -> Pin<Box<dyn Future<Output = Result<(), StoreError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn tombstone_nodes<'life0, 'life1, 'async_trait>(
&'life0 self,
ids: &'life1 [String],
) -> Pin<Box<dyn Future<Output = Result<(), StoreError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Mark graph nodes as tombstoned so reads exclude them until
vacuum physically removes them.Source§fn vacuum<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<VacuumReport, StoreError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn vacuum<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<VacuumReport, StoreError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Physically delete tombstoned graph-node rows and prune terminal
pending-turn-input evidence rows. See
VacuumReport.Source§fn gc_unreachable<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<GcReport, StoreError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn gc_unreachable<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<GcReport, StoreError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Delete blobs no longer reachable from any retained root.
Source§impl TurnInputStore for Store
impl TurnInputStore for Store
Source§fn enqueue_pending_turn_input<'life0, 'async_trait>(
&'life0 self,
draft: PendingTurnInputDraft,
) -> Pin<Box<dyn Future<Output = Result<PendingTurnInput, StoreError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn enqueue_pending_turn_input<'life0, 'async_trait>(
&'life0 self,
draft: PendingTurnInputDraft,
) -> Pin<Box<dyn Future<Output = Result<PendingTurnInput, StoreError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Persist model-visible user input into the pending turn-input lifecycle.
Source§fn list_pending_turn_inputs<'life0, 'life1, 'async_trait>(
&'life0 self,
session_id: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<Vec<PendingTurnInput>, StoreError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn list_pending_turn_inputs<'life0, 'life1, 'async_trait>(
&'life0 self,
session_id: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<Vec<PendingTurnInput>, StoreError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
List pending user inputs for UI reconciliation and queue preview. Read more
Source§fn cancel_pending_turn_inputs<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
session_id: &'life1 str,
targets: &'life2 [PendingTurnInputCancelTarget],
) -> Pin<Box<dyn Future<Output = Result<Vec<PendingTurnInputCancelResult>, StoreError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn cancel_pending_turn_inputs<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
session_id: &'life1 str,
targets: &'life2 [PendingTurnInputCancelTarget],
) -> Pin<Box<dyn Future<Output = Result<Vec<PendingTurnInputCancelResult>, StoreError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Atomically cancel a list of pending user inputs by input id or source key.
Source§fn cancel_pending_turn_input_suffix<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
session_id: &'life1 str,
anchor: &'life2 PendingTurnInputCancelTarget,
) -> Pin<Box<dyn Future<Output = Result<PendingTurnInputSuffixCancelOutcome, StoreError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn cancel_pending_turn_input_suffix<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
session_id: &'life1 str,
anchor: &'life2 PendingTurnInputCancelTarget,
) -> Pin<Box<dyn Future<Output = Result<PendingTurnInputSuffixCancelOutcome, StoreError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Atomically cancel the same-session runtime-admission suffix from an anchor.
Source§fn claim_active_turn_inputs<'life0, 'life1, 'life2, 'life3, 'life4, 'async_trait>(
&'life0 self,
session_id: &'life1 str,
session_execution_lease: &'life2 SessionExecutionLeaseFence,
owner: &'life3 LeaseOwnerIdentity,
turn_id: &'life4 str,
checkpoint: CheckpointKind,
lease_ttl_ms: u64,
max_inputs: usize,
) -> Pin<Box<dyn Future<Output = Result<Option<TurnInputClaim>, StoreError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
'life4: 'async_trait,
fn claim_active_turn_inputs<'life0, 'life1, 'life2, 'life3, 'life4, 'async_trait>(
&'life0 self,
session_id: &'life1 str,
session_execution_lease: &'life2 SessionExecutionLeaseFence,
owner: &'life3 LeaseOwnerIdentity,
turn_id: &'life4 str,
checkpoint: CheckpointKind,
lease_ttl_ms: u64,
max_inputs: usize,
) -> Pin<Box<dyn Future<Output = Result<Option<TurnInputClaim>, StoreError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
'life4: 'async_trait,
Claim active-turn input at a checkpoint for the live turn id.
Source§fn claim_next_turn_inputs<'life0, 'life1, 'life2, 'life3, 'async_trait>(
&'life0 self,
session_id: &'life1 str,
session_execution_lease: &'life2 SessionExecutionLeaseFence,
owner: &'life3 LeaseOwnerIdentity,
lease_ttl_ms: u64,
max_inputs: usize,
) -> Pin<Box<dyn Future<Output = Result<Option<TurnInputClaim>, StoreError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
fn claim_next_turn_inputs<'life0, 'life1, 'life2, 'life3, 'async_trait>(
&'life0 self,
session_id: &'life1 str,
session_execution_lease: &'life2 SessionExecutionLeaseFence,
owner: &'life3 LeaseOwnerIdentity,
lease_ttl_ms: u64,
max_inputs: usize,
) -> Pin<Box<dyn Future<Output = Result<Option<TurnInputClaim>, StoreError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
Claim queued next-turn input at idle.
Source§fn abandon_turn_input_claim<'life0, 'life1, 'async_trait>(
&'life0 self,
claim: &'life1 TurnInputClaim,
) -> Pin<Box<dyn Future<Output = Result<(), StoreError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn abandon_turn_input_claim<'life0, 'life1, 'async_trait>(
&'life0 self,
claim: &'life1 TurnInputClaim,
) -> Pin<Box<dyn Future<Output = Result<(), StoreError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Abandon a held pending-turn-input claim so it can be reclaimed.
Source§fn cancel_pending_turn_input<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
session_id: &'life1 str,
input_id: &'life2 str,
) -> Pin<Box<dyn Future<Output = Result<PendingTurnInputCancelOutcome, StoreError>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Self: 'async_trait,
fn cancel_pending_turn_input<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
session_id: &'life1 str,
input_id: &'life2 str,
) -> Pin<Box<dyn Future<Output = Result<PendingTurnInputCancelOutcome, StoreError>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Self: 'async_trait,
Cancel an unclaimed pending user input by id. Read more
Auto Trait Implementations§
impl !Freeze for Store
impl RefUnwindSafe for Store
impl Send for Store
impl Sync for Store
impl Unpin for Store
impl UnsafeUnpin for Store
impl UnwindSafe for Store
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more