carryctx 0.3.2

Local-first memory for coding agents — resume tasks, checkpoints, and context across windows, sessions, and worktrees.
use serde::{Deserialize, Serialize};
use std::collections::HashMap;

#[derive(Debug, Serialize, Deserialize, Clone)]
pub struct PresetManifest {
    pub name: String,
    pub version: String,
    pub description: String,
    #[serde(default)]
    pub author: String,
    #[serde(default)]
    pub permissions: PresetPermissions,
}

#[derive(Debug, Serialize, Deserialize, Clone, Default)]
pub struct PresetPermissions {
    #[serde(default)]
    pub requires_network: bool,
    #[serde(default)]
    pub requires_filesystem: bool,
    #[serde(default)]
    pub requires_env: Vec<String>,
}

#[derive(Debug, Serialize, Deserialize, Clone)]
pub struct PresetLockfile {
    pub version: u32,
    #[serde(default)]
    pub presets: HashMap<String, PresetLockEntry>,
}

impl Default for PresetLockfile {
    fn default() -> Self {
        Self {
            version: 1,
            presets: HashMap::new(),
        }
    }
}

#[derive(Debug, Serialize, Deserialize, Clone)]
pub struct PresetLockEntry {
    pub version: String,
    pub source: String,
    pub integrity: String,
    pub permissions_granted: PresetPermissions,
}