vetto 0.2.15

Daemon-less sandbox + security layer for AI coding agents (Landlock/Seatbelt, TUI statusline, post-session audit reports)
Documentation
use anyhow::{bail, Result};
use std::path::Path;

use super::types::{
    AdapterStatus, RepairReceipt, RescueContext, SessionRef, SessionView, SnapshotReceipt,
};

pub trait RescueAdapter: Send + Sync {
    fn id(&self) -> &'static str;

    fn detect(&self, context: &RescueContext) -> Result<AdapterStatus>;

    fn discover_sessions(&self, context: &RescueContext) -> Result<Vec<SessionRef>>;

    fn diagnose(&self, context: &RescueContext, session: &SessionRef) -> Result<SessionView>;

    fn snapshot(
        &self,
        context: &RescueContext,
        session: &SessionRef,
        destination: &Path,
    ) -> Result<SnapshotReceipt>;

    fn repair(
        &self,
        context: &RescueContext,
        session: &SessionRef,
        backup_dir: &Path,
    ) -> Result<RepairReceipt> {
        let _ = (context, session, backup_dir);
        bail!("repair is not supported by adapter {}", self.id());
    }
}