pub mod executor;
pub mod guard;
pub mod map;
pub mod store;

use serde::{Deserialize, Serialize};

#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum PassageState {
    Init,
    Running,
    Paused,
    Completed,
    Failed,
}

#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct PassageRun {
    pub id: String,
    pub state: PassageState,
    pub steps_completed: usize,
    pub evidence: Vec<String>,
}

impl PassageRun {
    pub fn new(id: impl Into<String>) -> Self {
        Self {
            id: id.into(),
            state: PassageState::Init,
            steps_completed: 0,
            evidence: Vec::new(),
        }
    }
}
