stasis-rs 0.9.1

Durable AI orchestration framework with runtime jobs, lineage, and memory integration
use chrono::{DateTime, Utc};
use serde::{Deserialize, Serialize};

#[derive(Clone, Debug, Eq, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "snake_case")]
pub enum DurableWaitStatus {
    Pending,
    Signaled,
    TimedOut,
    Cancelled,
}

#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct DurableWaitRecord {
    pub wait_id: String,
    pub job_id: String,
    pub signal_type: String,
    pub correlation_key: String,
    pub status: DurableWaitStatus,
    pub deadline_at: Option<DateTime<Utc>>,
    pub created_at: DateTime<Utc>,
    pub updated_at: DateTime<Utc>,
    pub signal_payload: Option<String>,
    pub consumed_signal_ids: Vec<String>,
}

#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct DurableSignalRecord {
    pub signal_id: String,
    pub signal_type: String,
    pub correlation_key: String,
    pub payload_json: String,
    pub created_at: DateTime<Utc>,
}