Skip to main content

Module validator

Module validator 

Source
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(&registry, &user_tools);
let issues = validator.validate(&program);

for issue in &issues {
    println!("{}", issue.format(source));
}

Structs§

ScopeTracker
Tracks variable bindings across nested scopes.
Span
Source location span.
ValidationIssue
A validation issue found in the script.
Validator
AST validator that checks for issues before execution.

Enums§

IssueCode
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.