bctx-conductor 0.1.11

bctx-conductor — Spiral Cycle agent runtime, SignalGraph, PassageRun
Documentation
use super::PassageRun;
use anyhow::Result;
use std::path::PathBuf;

pub struct PassageStore {
    path: PathBuf,
}

impl PassageStore {
    pub fn new(base: PathBuf) -> Self {
        Self {
            path: base.join("passages.json"),
        }
    }

    pub fn save(&self, runs: &[PassageRun]) -> Result<()> {
        if let Some(p) = self.path.parent() {
            std::fs::create_dir_all(p)?;
        }
        std::fs::write(&self.path, serde_json::to_string_pretty(runs)?)?;
        Ok(())
    }

    pub fn load(&self) -> Result<Vec<PassageRun>> {
        if !self.path.exists() {
            return Ok(Vec::new());
        }
        Ok(serde_json::from_str(&std::fs::read_to_string(&self.path)?)?)
    }
}