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