pidgin-cli 0.2.1

CLI for the Pidgin agent handoff protocol
use std::path::PathBuf;

pub fn run(host: PathBuf) {
    let config_dir = host.join(".pidgin");
    let checks = vec![
        (
            "WORKFLOW_REGISTRY.yaml",
            config_dir.join("WORKFLOW_REGISTRY.yaml"),
        ),
        (
            "ACTION_REGISTRY.yaml",
            config_dir.join("ACTION_REGISTRY.yaml"),
        ),
        ("SAFETY_RULES.yaml", config_dir.join("SAFETY_RULES.yaml")),
        (
            "REFERENCE_ALIASES.yaml",
            config_dir.join("REFERENCE_ALIASES.yaml"),
        ),
    ];

    let mut all_ok = true;
    for (name, path) in &checks {
        if path.exists() {
            println!("  OK  {}", name);
        } else {
            eprintln!("  MISS  {}", name);
            all_ok = false;
        }
    }

    for (name, path) in &checks {
        if path.exists() {
            match std::fs::read_to_string(path) {
                Ok(content) => {
                    if serde_yaml::from_str::<serde_yaml::Value>(&content).is_ok() {
                        println!("  OK  {} (valid YAML)", name);
                    } else {
                        eprintln!("  INVALID  {} (malformed YAML)", name);
                        all_ok = false;
                    }
                }
                Err(e) => {
                    eprintln!("  ERR  {}: {}", name, e);
                    all_ok = false;
                }
            }
        }
    }

    if all_ok {
        println!("All checks passed");
    } else {
        std::process::exit(4);
    }
}