claw10-domain 0.2.3

Domain models and types for Claw10 OS
Documentation
use chrono::{DateTime, Utc};
use serde::{Deserialize, Serialize};
use strum::{Display, EnumString};
use uuid::Uuid;

#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, Display, EnumString)]
pub enum LifecycleMode {
    Ephemeral,
    Persistent,
}

#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, Display, EnumString)]
pub enum AgentState {
    Draft,
    Validating,
    Rejected,
    Ready,
    Active,
    Hibernating,
    Paused,
    Degraded,
    Quarantined,
    Completing,
    PreservingTrace,
    Terminating,
    Terminated,
    Migrating,
}

#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, Display, EnumString)]
pub enum PersistentPattern {
    AlwaysOn,
    Scheduled,
    Campaign,
}

#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct RuntimeLease {
    pub worker_id: String,
    pub acquired_at: DateTime<Utc>,
    pub expires_at: DateTime<Utc>,
    pub renewal_interval_seconds: u64,
}

#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Checkpoint {
    pub id: CheckpointId,
    pub agent_id: String,
    pub state_snapshot: serde_json::Value,
    pub created_at: DateTime<Utc>,
    pub reason: CheckpointReason,
}

#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct CheckpointId(pub Uuid);

#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub enum CheckpointReason {
    StateTransition,
    ToolSideEffect,
    PreHibernation,
    PreMigration,
    PreUpgrade,
    Periodic,
}

#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Subscription {
    pub event_type: String,
    pub filter: Option<serde_json::Value>,
}

#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Schedule {
    pub cron: String,
    pub timezone: String,
    pub action: ScheduleAction,
}

#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
pub enum ScheduleAction {
    Wake,
    Review,
    Checkpoint,
    PolicyRenewal,
    CredentialRotation,
}