agent-shield 1.0.1

Security scanner for AI agent extensions — offline-first, multi-framework, SARIF output
Documentation
use once_cell::sync::Lazy;
use regex::Regex;

static INSTALL_PATTERN: Lazy<Regex> = Lazy::new(|| {
    Regex::new(r"(?:pip3?|uv\s+pip)\s+install|npm\s+(?:install|i\b)|(?:yarn|pnpm)\s+add")
        .expect("static regex pattern is valid")
});

pub(crate) fn is_runtime_install_command(command: &str) -> bool {
    INSTALL_PATTERN.is_match(command)
}

#[cfg(test)]
mod tests {
    use super::*;

    #[test]
    fn classifies_runtime_install_commands() {
        assert!(is_runtime_install_command("npm install lodash"));
        assert!(is_runtime_install_command("uv pip install requests"));
        assert!(!is_runtime_install_command("npm run build"));
    }
}