use std::ffi::OsStr;
use super::{program_basename, DirectoryAccess, Profile};
pub const AI_AGENTS: &[&str] = &["opencode", "claude"];
pub fn is_ai_agent(program: &OsStr) -> bool {
AI_AGENTS
.iter()
.any(|name| program_basename(program) == OsStr::new(name))
}
pub struct AiAgent;
impl Profile for AiAgent {
fn redaction(&self) -> bool {
true
}
fn directory_access(&self) -> DirectoryAccess {
DirectoryAccess::AllowAny
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn matches_agents_by_basename() {
assert!(is_ai_agent(OsStr::new("claude")));
assert!(is_ai_agent(OsStr::new("/usr/local/bin/opencode")));
assert!(!is_ai_agent(OsStr::new("npm")));
assert!(!is_ai_agent(OsStr::new("claude-helper")));
}
}