//! Command evaluation specs: per-tool logic for deciding allow/ask/deny.
//!
//! This module contains the `CommandSpec` trait and two categories of implementation:
//!
//! - **`simple`** — A data-driven spec for flat command lists (allow/ask/deny with no
//! subcommand awareness).
//! - **`tools`** — Subcommand-aware evaluators for specific CLI tools (git, cargo, kubectl, gh),
//! each with config-driven classification, env-gated auto-allow, and redirection escalation.
/// Data-driven spec for flat allow/ask/deny command lists.
/// Subcommand-aware evaluators for specific CLI tools.
use crate;
/// Trait for command evaluation specs.
///
/// Each implementation knows how to evaluate a specific command (or family of commands)
/// and returns a `RuleMatch` with the decision and reason.