kaish_kernel/validator/mod.rs
1//! Pre-execution validation for kaish scripts.
2//!
3//! The validator runs after parsing but before execution to catch errors early.
4//! It validates:
5//!
6//! - **Command existence**: Are commands defined (builtin, user-defined, MCP)?
7//! - **Argument schemas**: Required params present? Known flags? Type compatibility?
8//! - **Semantic constraints**: Regex compiles? seq increment != 0? count > 0?
9//! - **Variable bindings**: Warn on possibly undefined variables
10//! - **Control flow**: break/continue outside loop? return outside function?
11//!
12//! # Example
13//!
14//! ```ignore
15//! use kaish_kernel::validator::Validator;
16//! use kaish_kernel::parser::parse;
17//!
18//! let program = parse("nonexistent_cmd arg")?;
19//! let validator = Validator::new(®istry, &user_tools);
20//! let issues = validator.validate(&program);
21//!
22//! for issue in &issues {
23//! println!("{}", issue.format(source));
24//! }
25//! ```
26
27mod issue;
28mod scope_tracker;
29mod walker;
30
31pub use issue::{IssueCode, Severity, Span, ValidationIssue};
32pub use scope_tracker::ScopeTracker;
33pub use walker::{build_tool_args_for_validation, Validator};