vv-agent 0.4.1

VectorVein agent runtime, SDK, CLI, tools, and workspace backends
Documentation
use super::super::errors::SkillValidationError;

pub const DEFAULT_VALIDATION_MODE: &str = "strict";
pub const VALIDATION_MODES: [&str; 3] = ["strict", "relaxed", "minimal"];

#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum ValidationMode {
    Strict,
    Relaxed,
    Minimal,
}

impl ValidationMode {
    pub fn as_str(self) -> &'static str {
        match self {
            Self::Strict => "strict",
            Self::Relaxed => "relaxed",
            Self::Minimal => "minimal",
        }
    }
}

pub fn normalize_validation_mode(
    validation_mode: Option<&str>,
) -> Result<ValidationMode, SkillValidationError> {
    match validation_mode
        .unwrap_or(DEFAULT_VALIDATION_MODE)
        .trim()
        .to_ascii_lowercase()
        .as_str()
    {
        "strict" => Ok(ValidationMode::Strict),
        "relaxed" => Ok(ValidationMode::Relaxed),
        "minimal" => Ok(ValidationMode::Minimal),
        other => Err(SkillValidationError::new(format!(
            "Unsupported validation mode '{other}'. Expected one of [strict, relaxed, minimal]."
        ))),
    }
}