mod manager;
mod policy;
mod rule;
#[cfg(test)]
mod tests;
use serde::{Deserialize, Serialize};
pub use manager::{MatchingRules, PermissionManager};
pub use policy::PermissionPolicy;
pub use rule::PermissionRule;
pub trait PermissionChecker: Send + Sync {
fn expose_to_model(&self, _tool_name: &str) -> bool {
true
}
fn check(&self, tool_name: &str, args: &serde_json::Value) -> PermissionDecision;
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
#[serde(rename_all = "snake_case")]
pub enum PermissionDecision {
Allow,
Deny,
Ask,
}