pub struct SessionStore { /* private fields */ }Expand description
Session store for SRBN persistence
Implementations§
Source§impl SessionStore
impl SessionStore
Sourcepub fn new() -> Result<SessionStore, Error>
pub fn new() -> Result<SessionStore, Error>
Create a new session store with default path
Sourcepub fn open(path: &PathBuf) -> Result<SessionStore, Error>
pub fn open(path: &PathBuf) -> Result<SessionStore, Error>
Open a session store at the given path
Sourcepub fn open_read_only(path: &Path) -> Result<SessionStore, Error>
pub fn open_read_only(path: &Path) -> Result<SessionStore, Error>
Open a session store in read-only mode for concurrent dashboard reads.
Uses AccessMode::ReadOnly so the dashboard can read alongside the
agent’s write lock. Does not call init_schema() (a write op).
The database file must already exist.
Sourcepub fn default_db_path() -> Result<PathBuf, Error>
pub fn default_db_path() -> Result<PathBuf, Error>
Get the default database path (~/.local/share/perspt/perspt.db or similar)
Sourcepub fn create_session(&self, session: &SessionRecord) -> Result<(), Error>
pub fn create_session(&self, session: &SessionRecord) -> Result<(), Error>
Create a new session
Sourcepub fn update_merkle_root(
&self,
session_id: &str,
merkle_root: &[u8],
) -> Result<(), Error>
pub fn update_merkle_root( &self, session_id: &str, merkle_root: &[u8], ) -> Result<(), Error>
Update session merkle root
Sourcepub fn record_node_state(&self, record: &NodeStateRecord) -> Result<(), Error>
pub fn record_node_state(&self, record: &NodeStateRecord) -> Result<(), Error>
Record node state
Sourcepub fn record_energy(&self, record: &EnergyRecord) -> Result<(), Error>
pub fn record_energy(&self, record: &EnergyRecord) -> Result<(), Error>
Record energy measurement
Sourcepub fn get_session(
&self,
session_id: &str,
) -> Result<Option<SessionRecord>, Error>
pub fn get_session( &self, session_id: &str, ) -> Result<Option<SessionRecord>, Error>
Get session by ID
Sourcepub fn get_session_dir(&self, session_id: &str) -> Result<PathBuf, Error>
pub fn get_session_dir(&self, session_id: &str) -> Result<PathBuf, Error>
Get the directory for session artifacts (~/.local/share/perspt/sessions/<id>)
Sourcepub fn create_session_dir(&self, session_id: &str) -> Result<PathBuf, Error>
pub fn create_session_dir(&self, session_id: &str) -> Result<PathBuf, Error>
Ensure a session directory exists and return the path
Sourcepub fn get_energy_history(
&self,
session_id: &str,
node_id: &str,
) -> Result<Vec<EnergyRecord>, Error>
pub fn get_energy_history( &self, session_id: &str, node_id: &str, ) -> Result<Vec<EnergyRecord>, Error>
Get energy history for a node (query)
Sourcepub fn get_session_energy_history(
&self,
session_id: &str,
) -> Result<Vec<EnergyRecord>, Error>
pub fn get_session_energy_history( &self, session_id: &str, ) -> Result<Vec<EnergyRecord>, Error>
Get all energy history for a session (all nodes)
Sourcepub fn list_recent_sessions(
&self,
limit: usize,
) -> Result<Vec<SessionRecord>, Error>
pub fn list_recent_sessions( &self, limit: usize, ) -> Result<Vec<SessionRecord>, Error>
List recent sessions (newest first)
Sourcepub fn list_sessions_paginated(
&self,
limit: usize,
offset: usize,
) -> Result<Vec<SessionRecord>, Error>
pub fn list_sessions_paginated( &self, limit: usize, offset: usize, ) -> Result<Vec<SessionRecord>, Error>
List sessions with pagination (most recent first).
Sourcepub fn count_sessions(&self) -> Result<usize, Error>
pub fn count_sessions(&self) -> Result<usize, Error>
Count total number of sessions.
Sourcepub fn get_node_states(
&self,
session_id: &str,
) -> Result<Vec<NodeStateRecord>, Error>
pub fn get_node_states( &self, session_id: &str, ) -> Result<Vec<NodeStateRecord>, Error>
Get all node states for a session
Sourcepub fn update_session_status(
&self,
session_id: &str,
status: &str,
) -> Result<(), Error>
pub fn update_session_status( &self, session_id: &str, status: &str, ) -> Result<(), Error>
Update session status
Sourcepub fn record_llm_request(&self, record: &LlmRequestRecord) -> Result<(), Error>
pub fn record_llm_request(&self, record: &LlmRequestRecord) -> Result<(), Error>
Record an LLM request/response
Sourcepub fn get_llm_requests(
&self,
session_id: &str,
) -> Result<Vec<LlmRequestRecord>, Error>
pub fn get_llm_requests( &self, session_id: &str, ) -> Result<Vec<LlmRequestRecord>, Error>
Get LLM requests for a session
Sourcepub fn get_global_llm_summary(&self) -> Result<(i64, i64, i64, i64), Error>
pub fn get_global_llm_summary(&self) -> Result<(i64, i64, i64, i64), Error>
Aggregate LLM statistics across all sessions: (count, sum_tokens_in, sum_tokens_out, sum_latency_ms)
Sourcepub fn record_structural_digest(
&self,
record: &StructuralDigestRecord,
) -> Result<(), Error>
pub fn record_structural_digest( &self, record: &StructuralDigestRecord, ) -> Result<(), Error>
Record a structural digest
Sourcepub fn get_structural_digests(
&self,
session_id: &str,
node_id: &str,
) -> Result<Vec<StructuralDigestRecord>, Error>
pub fn get_structural_digests( &self, session_id: &str, node_id: &str, ) -> Result<Vec<StructuralDigestRecord>, Error>
Get structural digests for a session and node
Sourcepub fn record_context_provenance(
&self,
record: &ContextProvenanceRecord,
) -> Result<(), Error>
pub fn record_context_provenance( &self, record: &ContextProvenanceRecord, ) -> Result<(), Error>
Record context provenance for a node
Sourcepub fn get_context_provenance(
&self,
session_id: &str,
node_id: &str,
) -> Result<Option<ContextProvenanceRecord>, Error>
pub fn get_context_provenance( &self, session_id: &str, node_id: &str, ) -> Result<Option<ContextProvenanceRecord>, Error>
Get context provenance for a session and node
Sourcepub fn record_escalation_report(
&self,
record: &EscalationReportRecord,
) -> Result<(), Error>
pub fn record_escalation_report( &self, record: &EscalationReportRecord, ) -> Result<(), Error>
Record an escalation report
Sourcepub fn get_escalation_reports(
&self,
session_id: &str,
) -> Result<Vec<EscalationReportRecord>, Error>
pub fn get_escalation_reports( &self, session_id: &str, ) -> Result<Vec<EscalationReportRecord>, Error>
Get escalation reports for a session
Sourcepub fn record_rewrite(&self, record: &RewriteRecordRow) -> Result<(), Error>
pub fn record_rewrite(&self, record: &RewriteRecordRow) -> Result<(), Error>
Record a local graph rewrite
Sourcepub fn get_rewrite_records(
&self,
session_id: &str,
) -> Result<Vec<RewriteRecordRow>, Error>
pub fn get_rewrite_records( &self, session_id: &str, ) -> Result<Vec<RewriteRecordRow>, Error>
Get rewrite records for a session
Sourcepub fn record_sheaf_validation(
&self,
record: &SheafValidationRow,
) -> Result<(), Error>
pub fn record_sheaf_validation( &self, record: &SheafValidationRow, ) -> Result<(), Error>
Record a sheaf validation result
Sourcepub fn get_sheaf_validations(
&self,
session_id: &str,
node_id: &str,
) -> Result<Vec<SheafValidationRow>, Error>
pub fn get_sheaf_validations( &self, session_id: &str, node_id: &str, ) -> Result<Vec<SheafValidationRow>, Error>
Get sheaf validation results for a session and node
Sourcepub fn get_all_sheaf_validations(
&self,
session_id: &str,
) -> Result<Vec<SheafValidationRow>, Error>
pub fn get_all_sheaf_validations( &self, session_id: &str, ) -> Result<Vec<SheafValidationRow>, Error>
Get all sheaf validations for a session (all nodes).
Sourcepub fn record_provisional_branch(
&self,
record: &ProvisionalBranchRow,
) -> Result<(), Error>
pub fn record_provisional_branch( &self, record: &ProvisionalBranchRow, ) -> Result<(), Error>
Record a new provisional branch
Sourcepub fn update_branch_state(
&self,
branch_id: &str,
new_state: &str,
) -> Result<(), Error>
pub fn update_branch_state( &self, branch_id: &str, new_state: &str, ) -> Result<(), Error>
Update a provisional branch state
Sourcepub fn get_provisional_branches(
&self,
session_id: &str,
) -> Result<Vec<ProvisionalBranchRow>, Error>
pub fn get_provisional_branches( &self, session_id: &str, ) -> Result<Vec<ProvisionalBranchRow>, Error>
Get all provisional branches for a session
Sourcepub fn get_live_branches_for_parent(
&self,
session_id: &str,
parent_node_id: &str,
) -> Result<Vec<ProvisionalBranchRow>, Error>
pub fn get_live_branches_for_parent( &self, session_id: &str, parent_node_id: &str, ) -> Result<Vec<ProvisionalBranchRow>, Error>
Get live (active/sealed) provisional branches depending on a parent node
Sourcepub fn flush_branches_for_parent(
&self,
session_id: &str,
parent_node_id: &str,
) -> Result<Vec<String>, Error>
pub fn flush_branches_for_parent( &self, session_id: &str, parent_node_id: &str, ) -> Result<Vec<String>, Error>
Mark all live branches for a parent as flushed
Sourcepub fn record_branch_lineage(
&self,
record: &BranchLineageRow,
) -> Result<(), Error>
pub fn record_branch_lineage( &self, record: &BranchLineageRow, ) -> Result<(), Error>
Record a branch lineage edge
Sourcepub fn get_child_branches(
&self,
parent_branch_id: &str,
) -> Result<Vec<String>, Error>
pub fn get_child_branches( &self, parent_branch_id: &str, ) -> Result<Vec<String>, Error>
Get child branch IDs for a parent branch
Sourcepub fn record_interface_seal(
&self,
record: &InterfaceSealRow,
) -> Result<(), Error>
pub fn record_interface_seal( &self, record: &InterfaceSealRow, ) -> Result<(), Error>
Record an interface seal
Sourcepub fn get_interface_seals(
&self,
session_id: &str,
node_id: &str,
) -> Result<Vec<InterfaceSealRow>, Error>
pub fn get_interface_seals( &self, session_id: &str, node_id: &str, ) -> Result<Vec<InterfaceSealRow>, Error>
Get all interface seals for a node
Sourcepub fn has_interface_seals(
&self,
session_id: &str,
node_id: &str,
) -> Result<bool, Error>
pub fn has_interface_seals( &self, session_id: &str, node_id: &str, ) -> Result<bool, Error>
Check whether a node has any interface seals
Sourcepub fn record_branch_flush(&self, record: &BranchFlushRow) -> Result<(), Error>
pub fn record_branch_flush(&self, record: &BranchFlushRow) -> Result<(), Error>
Record a branch flush decision
Sourcepub fn get_branch_flushes(
&self,
session_id: &str,
) -> Result<Vec<BranchFlushRow>, Error>
pub fn get_branch_flushes( &self, session_id: &str, ) -> Result<Vec<BranchFlushRow>, Error>
Get all branch flush records for a session
Sourcepub fn get_latest_node_states(
&self,
session_id: &str,
) -> Result<Vec<NodeStateRecord>, Error>
pub fn get_latest_node_states( &self, session_id: &str, ) -> Result<Vec<NodeStateRecord>, Error>
Get the latest node state snapshot per node for a session (for resume reconstruction).
Returns at most one record per node_id, picking the most recently created row.
Sourcepub fn record_task_graph_edge(
&self,
record: &TaskGraphEdgeRow,
) -> Result<(), Error>
pub fn record_task_graph_edge( &self, record: &TaskGraphEdgeRow, ) -> Result<(), Error>
Record a task graph edge (parent→child dependency)
Sourcepub fn get_task_graph_edges(
&self,
session_id: &str,
) -> Result<Vec<TaskGraphEdgeRow>, Error>
pub fn get_task_graph_edges( &self, session_id: &str, ) -> Result<Vec<TaskGraphEdgeRow>, Error>
Get all task graph edges for a session
Sourcepub fn record_review_outcome(
&self,
record: &ReviewOutcomeRow,
) -> Result<(), Error>
pub fn record_review_outcome( &self, record: &ReviewOutcomeRow, ) -> Result<(), Error>
Record a review outcome (approval, rejection, edit request)
Sourcepub fn get_review_outcomes(
&self,
session_id: &str,
node_id: &str,
) -> Result<Vec<ReviewOutcomeRow>, Error>
pub fn get_review_outcomes( &self, session_id: &str, node_id: &str, ) -> Result<Vec<ReviewOutcomeRow>, Error>
Get all review outcomes for a node
Sourcepub fn get_latest_review_outcome(
&self,
session_id: &str,
node_id: &str,
) -> Result<Option<ReviewOutcomeRow>, Error>
pub fn get_latest_review_outcome( &self, session_id: &str, node_id: &str, ) -> Result<Option<ReviewOutcomeRow>, Error>
Get the most recent review outcome for a node
Sourcepub fn get_all_review_outcomes(
&self,
session_id: &str,
) -> Result<Vec<ReviewOutcomeRow>, Error>
pub fn get_all_review_outcomes( &self, session_id: &str, ) -> Result<Vec<ReviewOutcomeRow>, Error>
Get all review outcomes for a session (across all nodes).
Sourcepub fn record_verification_result(
&self,
record: &VerificationResultRow,
) -> Result<(), Error>
pub fn record_verification_result( &self, record: &VerificationResultRow, ) -> Result<(), Error>
Record a verification result snapshot for a node
Sourcepub fn get_verification_result(
&self,
session_id: &str,
node_id: &str,
) -> Result<Option<VerificationResultRow>, Error>
pub fn get_verification_result( &self, session_id: &str, node_id: &str, ) -> Result<Option<VerificationResultRow>, Error>
Get the latest verification result for a node
Sourcepub fn get_all_verification_results(
&self,
session_id: &str,
) -> Result<Vec<VerificationResultRow>, Error>
pub fn get_all_verification_results( &self, session_id: &str, ) -> Result<Vec<VerificationResultRow>, Error>
Get all verification results for a session (for status display)
Sourcepub fn record_artifact_bundle(
&self,
record: &ArtifactBundleRow,
) -> Result<(), Error>
pub fn record_artifact_bundle( &self, record: &ArtifactBundleRow, ) -> Result<(), Error>
Record an artifact bundle snapshot for a node
Sourcepub fn get_artifact_bundle(
&self,
session_id: &str,
node_id: &str,
) -> Result<Option<ArtifactBundleRow>, Error>
pub fn get_artifact_bundle( &self, session_id: &str, node_id: &str, ) -> Result<Option<ArtifactBundleRow>, Error>
Get the latest artifact bundle for a node
Source§impl SessionStore
impl SessionStore
Sourcepub fn record_feature_charter(
&self,
row: &FeatureCharterRow,
) -> Result<(), Error>
pub fn record_feature_charter( &self, row: &FeatureCharterRow, ) -> Result<(), Error>
Record a feature charter for a session.
Sourcepub fn get_feature_charter(
&self,
session_id: &str,
) -> Result<Option<FeatureCharterRow>, Error>
pub fn get_feature_charter( &self, session_id: &str, ) -> Result<Option<FeatureCharterRow>, Error>
Get the feature charter for a session.
Sourcepub fn record_plan_revision(&self, row: &PlanRevisionRow) -> Result<(), Error>
pub fn record_plan_revision(&self, row: &PlanRevisionRow) -> Result<(), Error>
Record a plan revision.
Sourcepub fn get_active_plan_revision(
&self,
session_id: &str,
) -> Result<Option<PlanRevisionRow>, Error>
pub fn get_active_plan_revision( &self, session_id: &str, ) -> Result<Option<PlanRevisionRow>, Error>
Get the active plan revision for a session.
Sourcepub fn get_plan_revisions(
&self,
session_id: &str,
) -> Result<Vec<PlanRevisionRow>, Error>
pub fn get_plan_revisions( &self, session_id: &str, ) -> Result<Vec<PlanRevisionRow>, Error>
Get all plan revisions for a session, ordered by sequence.
Sourcepub fn supersede_plan_revision(&self, revision_id: &str) -> Result<(), Error>
pub fn supersede_plan_revision(&self, revision_id: &str) -> Result<(), Error>
Supersede a plan revision (set status to ‘superseded’).
Sourcepub fn record_repair_footprint(
&self,
row: &RepairFootprintRow,
) -> Result<(), Error>
pub fn record_repair_footprint( &self, row: &RepairFootprintRow, ) -> Result<(), Error>
Record a repair footprint.
Sourcepub fn get_repair_footprints(
&self,
session_id: &str,
node_id: &str,
) -> Result<Vec<RepairFootprintRow>, Error>
pub fn get_repair_footprints( &self, session_id: &str, node_id: &str, ) -> Result<Vec<RepairFootprintRow>, Error>
Get repair footprints for a node, ordered by attempt.
Sourcepub fn get_all_repair_footprints(
&self,
session_id: &str,
) -> Result<Vec<RepairFootprintRow>, Error>
pub fn get_all_repair_footprints( &self, session_id: &str, ) -> Result<Vec<RepairFootprintRow>, Error>
Get all repair footprints for a session (all nodes).
Sourcepub fn resolve_repair_footprint(&self, footprint_id: &str) -> Result<(), Error>
pub fn resolve_repair_footprint(&self, footprint_id: &str) -> Result<(), Error>
Mark a repair footprint as resolved.
Sourcepub fn upsert_budget_envelope(
&self,
row: &BudgetEnvelopeRow,
) -> Result<(), Error>
pub fn upsert_budget_envelope( &self, row: &BudgetEnvelopeRow, ) -> Result<(), Error>
Record or update a budget envelope for a session.
Sourcepub fn get_budget_envelope(
&self,
session_id: &str,
) -> Result<Option<BudgetEnvelopeRow>, Error>
pub fn get_budget_envelope( &self, session_id: &str, ) -> Result<Option<BudgetEnvelopeRow>, Error>
Get the budget envelope for a session.
Source§impl SessionStore
impl SessionStore
Sourcepub fn record_step(&self, record: &SrbnStepRecord) -> Result<(), Error>
pub fn record_step(&self, record: &SrbnStepRecord) -> Result<(), Error>
Record an orchestration step transition.
Sourcepub fn get_step_timeline(
&self,
session_id: &str,
node_id: &str,
) -> Result<Vec<SrbnStepRecord>, Error>
pub fn get_step_timeline( &self, session_id: &str, node_id: &str, ) -> Result<Vec<SrbnStepRecord>, Error>
Retrieve the step timeline for a given node in chronological order.
Sourcepub fn get_session_steps(
&self,
session_id: &str,
) -> Result<Vec<SrbnStepRecord>, Error>
pub fn get_session_steps( &self, session_id: &str, ) -> Result<Vec<SrbnStepRecord>, Error>
Retrieve all step records for a session, ordered by id.
Sourcepub fn record_correction_attempt(
&self,
record: &CorrectionAttemptRow,
) -> Result<(), Error>
pub fn record_correction_attempt( &self, record: &CorrectionAttemptRow, ) -> Result<(), Error>
Record a correction attempt within a convergence loop.
Sourcepub fn get_correction_attempts(
&self,
session_id: &str,
node_id: &str,
) -> Result<Vec<CorrectionAttemptRow>, Error>
pub fn get_correction_attempts( &self, session_id: &str, node_id: &str, ) -> Result<Vec<CorrectionAttemptRow>, Error>
Retrieve all correction attempts for a node, ordered by attempt number.
Sourcepub fn get_session_correction_attempts(
&self,
session_id: &str,
) -> Result<Vec<CorrectionAttemptRow>, Error>
pub fn get_session_correction_attempts( &self, session_id: &str, ) -> Result<Vec<CorrectionAttemptRow>, Error>
Retrieve all correction attempts for a session, ordered by node then attempt.
Auto Trait Implementations§
impl !Freeze for SessionStore
impl RefUnwindSafe for SessionStore
impl Send for SessionStore
impl Sync for SessionStore
impl Unpin for SessionStore
impl UnsafeUnpin for SessionStore
impl UnwindSafe for SessionStore
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
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more