vtcode_core/exec_policy/mod.rs
1//! Execution Policy Module
2//!
3//! Provides types and managers for controlling command execution authorization,
4//! inspired by OpenAI Codex's execution policy patterns.
5//!
6//! # Architecture
7//!
8//! - `approval`: Approval requirement types (ExecApprovalRequirement, AskForApproval)
9//! - `policy`: Policy definitions and rule matching (Policy, PrefixRule, Decision)
10//! - `parser`: Policy file parsing (TOML, JSON, simple formats)
11//! - `manager`: The central ExecPolicyManager coordinating all components
12//!
13//! # Example
14//!
15//! ```rust,ignore
16//! use vtcode_core::exec_policy::{ExecPolicyManager, Decision};
17//!
18//! let manager = ExecPolicyManager::with_defaults(workspace_root);
19//! manager.add_prefix_rule(&["cargo".to_string()], Decision::Allow).await?;
20//!
21//! let result = manager.check_approval(&["cargo", "build"]).await;
22//! ```
23
24mod approval;
25pub mod command_validation;
26mod manager;
27mod parser;
28mod policy;
29
30pub use approval::{
31 AskForApproval, ExecApprovalRequirement, ExecPolicyAmendment, RejectConfig,
32 default_exec_approval_requirement,
33};
34pub use manager::{ExecPolicyConfig, ExecPolicyManager, SharedExecPolicyManager};
35pub use parser::{PolicyFile, PolicyParser, PolicyRule};
36pub use policy::{Decision, Policy, PolicyEvaluation, PrefixRule, RuleMatch};