modelsdev 0.11.4

A fast TUI and CLI for browsing AI models, benchmarks, and coding agents
use anyhow::{Context, Result};
use std::path::Path;

use super::data::AgentsFile;

const EMBEDDED_AGENTS: &str = include_str!("../../data/agents.json");

pub fn load_agents() -> Result<AgentsFile> {
    serde_json::from_str(EMBEDDED_AGENTS).context("Failed to parse embedded agents.json")
}

/// Load agents from custom file path (for future override support)
#[allow(dead_code)]
pub fn load_agents_from_file(path: &Path) -> Result<AgentsFile> {
    let content = std::fs::read_to_string(path)
        .with_context(|| format!("Failed to read agents file: {}", path.display()))?;
    serde_json::from_str(&content).context("Failed to parse agents.json")
}

#[cfg(test)]
mod tests {
    use super::*;

    #[test]
    fn test_load_embedded_agents() {
        let agents = load_agents().expect("Should load embedded agents");
        assert!(agents.schema_version >= 1);
        assert!(!agents.agents.is_empty());
        assert!(agents.agents.contains_key("claude-code"));
        assert!(agents.agents.contains_key("cursor"));
    }
}