Skip to main content

vv_agent/skills/validator/
mode.rs

1use super::super::errors::SkillValidationError;
2
3pub const DEFAULT_VALIDATION_MODE: &str = "strict";
4pub const VALIDATION_MODES: [&str; 3] = ["strict", "relaxed", "minimal"];
5
6#[derive(Debug, Clone, Copy, PartialEq, Eq)]
7pub enum ValidationMode {
8    Strict,
9    Relaxed,
10    Minimal,
11}
12
13impl ValidationMode {
14    pub fn as_str(self) -> &'static str {
15        match self {
16            Self::Strict => "strict",
17            Self::Relaxed => "relaxed",
18            Self::Minimal => "minimal",
19        }
20    }
21}
22
23pub fn normalize_validation_mode(
24    validation_mode: Option<&str>,
25) -> Result<ValidationMode, SkillValidationError> {
26    match validation_mode
27        .unwrap_or(DEFAULT_VALIDATION_MODE)
28        .trim()
29        .to_ascii_lowercase()
30        .as_str()
31    {
32        "strict" => Ok(ValidationMode::Strict),
33        "relaxed" => Ok(ValidationMode::Relaxed),
34        "minimal" => Ok(ValidationMode::Minimal),
35        other => Err(SkillValidationError::new(format!(
36            "Unsupported validation mode '{other}'. Expected one of [strict, relaxed, minimal]."
37        ))),
38    }
39}