pub mod audit;
pub mod capability;
pub mod guard;
#[derive(Debug, Clone, PartialEq, Eq)]
pub enum ShellStance {
Allow,
Track,
Sandbox,
Deny,
}
#[derive(Debug, Clone)]
pub struct AgentPolicy {
pub shell_stance: ShellStance,
pub token_ceiling: u64,
pub cost_ceiling_usd: f64,
pub allowed_skills: Vec<String>,
}
impl AgentPolicy {
pub fn permissive() -> Self {
Self {
shell_stance: ShellStance::Allow,
token_ceiling: 1_000_000,
cost_ceiling_usd: 100.0,
allowed_skills: Vec::new(),
}
}
pub fn restrictive() -> Self {
Self {
shell_stance: ShellStance::Sandbox,
token_ceiling: 10_000,
cost_ceiling_usd: 1.0,
allowed_skills: vec!["sieve".into(), "compass".into()],
}
}
}