ai-agent 0.13.4

Idiomatic agent sdk inspired by the claude code source leak
Documentation
use serde::{Deserialize, Serialize};

static DENIALS: std::sync::RwLock<Vec<AutoModeDenial>> = std::sync::RwLock::new(Vec::new());
const MAX_DENIALS: usize = 20;

#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct AutoModeDenial {
    pub tool_name: String,
    pub display: String,
    pub reason: String,
    pub timestamp: u64,
}

pub fn record_auto_mode_denial(denial: AutoModeDenial) {
    let mut denials = DENIALS.write().unwrap();
    denials.insert(0, denial);
    if denials.len() > MAX_DENIALS {
        denials.truncate(MAX_DENIALS);
    }
}

pub fn get_auto_mode_denials() -> Vec<AutoModeDenial> {
    DENIALS.read().unwrap().clone()
}

pub fn clear_auto_mode_denials() {
    DENIALS.write().unwrap().clear();
}