starweaver_session/
resume.rs1use 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#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
14pub struct SessionResumeSnapshot {
15 pub session: SessionRecord,
17 pub run: RunRecord,
19 pub state: ResumableState,
21 #[serde(default, skip_serializing_if = "Option::is_none")]
23 pub environment_state: Option<EnvironmentStateRef>,
24 #[serde(default, skip_serializing_if = "Option::is_none")]
26 pub latest_checkpoint: Option<AgentCheckpoint>,
27 #[serde(default, skip_serializing_if = "Vec::is_empty")]
29 pub stream_records: Vec<AgentStreamRecord>,
30 #[serde(default, skip_serializing_if = "Vec::is_empty")]
32 pub approvals: Vec<ApprovalRecord>,
33 #[serde(default, skip_serializing_if = "Vec::is_empty")]
35 pub deferred_tools: Vec<DeferredToolRecord>,
36 #[serde(default, skip_serializing_if = "Vec::is_empty")]
38 pub stream_cursors: Vec<StreamCursorRef>,
39}