Expand description
Pre-execution validation for kaish scripts.
The validator runs after parsing but before execution to catch errors early. It validates:
- Command existence: Are commands defined (builtin, user-defined, MCP)?
- Argument schemas: Required params present? Known flags? Type compatibility?
- Semantic constraints: Regex compiles? seq increment != 0? count > 0?
- Variable bindings: Warn on possibly undefined variables
- Control flow: break/continue outside loop? return outside function?
§Example
ⓘ
use kaish_kernel::validator::Validator;
use kaish_kernel::parser::parse;
let program = parse("nonexistent_cmd arg")?;
let validator = Validator::new(®istry, &user_tools);
let issues = validator.validate(&program);
for issue in &issues {
println!("{}", issue.format(source));
}Structs§
- Scope
Tracker - Tracks variable bindings across nested scopes.
- Span
- Source location span.
- Validation
Issue - A validation issue found in the script.
- Validator
- AST validator that checks for issues before execution.
Enums§
- Issue
Code - Categorizes validation issues for filtering and tooling.
- Severity
- Severity level for validation issues.
Functions§
- build_
tool_ args_ for_ validation - Build ToolArgs from AST Args for validation purposes.