Skip to main content

starweaver_session/
resume.rs

1//! Resume snapshots assembled from durable session state.
2
3use serde::{Deserialize, Serialize};
4use starweaver_context::{AgentCheckpoint, ResumableState};
5use starweaver_stream::AgentStreamRecord;
6
7use crate::{
8    approval::{ApprovalRecord, DeferredToolRecord},
9    records::{EnvironmentStateRef, RunRecord, SessionRecord, StreamCursorRef},
10};
11
12/// Resume package loaded from a durable session store.
13#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
14pub struct SessionResumeSnapshot {
15    /// Session record.
16    pub session: SessionRecord,
17    /// Run record.
18    pub run: RunRecord,
19    /// Exported context state.
20    pub state: ResumableState,
21    /// Latest environment state reference.
22    #[serde(default, skip_serializing_if = "Option::is_none")]
23    pub environment_state: Option<EnvironmentStateRef>,
24    /// Latest checkpoint for the requested run.
25    #[serde(default, skip_serializing_if = "Option::is_none")]
26    pub latest_checkpoint: Option<AgentCheckpoint>,
27    /// Replayable stream records after the checkpoint cursor.
28    #[serde(default, skip_serializing_if = "Vec::is_empty")]
29    pub stream_records: Vec<AgentStreamRecord>,
30    /// Pending approval records.
31    #[serde(default, skip_serializing_if = "Vec::is_empty")]
32    pub approvals: Vec<ApprovalRecord>,
33    /// Pending deferred tool records.
34    #[serde(default, skip_serializing_if = "Vec::is_empty")]
35    pub deferred_tools: Vec<DeferredToolRecord>,
36    /// Latest stream cursor references.
37    #[serde(default, skip_serializing_if = "Vec::is_empty")]
38    pub stream_cursors: Vec<StreamCursorRef>,
39}