use chrono::{DateTime, Utc};
use serde::{Deserialize, Serialize};
use crate::hitl::YieldRequest;
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
#[serde(rename_all = "snake_case")]
#[non_exhaustive]
pub enum CheckpointStatus {
Complete,
Running,
Yielded,
Failed,
Interrupted,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct CheckpointMeta {
pub checkpoint_id: String,
pub thread_id: String,
pub next_node: String,
pub graph_version: Option<String>,
pub state_schema_version: Option<String>,
pub status: CheckpointStatus,
pub created_at: DateTime<Utc>,
pub yield_request: Option<YieldRequest>,
pub claimed_interrupt: Option<String>,
pub resolved_interrupt: Option<String>,
}
#[derive(Debug, Clone)]
#[non_exhaustive]
pub enum RetentionPolicy {
KeepAll,
KeepLast(usize),
OlderThan(std::time::Duration),
}
#[derive(Debug, Clone, Default)]
#[non_exhaustive]
pub enum CrashRecoveryPolicy {
#[default]
ResetToPending,
FailFast,
SkipAndContinue,
}