vv_agent/skills/validator/
mode.rs1use 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}