rdsh 0.9.2

Rust port/shim for dsh: fast launcher, token saver, zero behavior breakage via passthrough
use serde_json::{json, Map, Value};

pub fn catalog() -> Value {
    let adapters: Vec<_> = ["dsh", "codex", "claude", "kimi"]
        .into_iter()
        .map(|id| {
            let dsh = id == "dsh";
            let operations: Map<String, Value> = [
                ("start", "session/new"),
                ("resume", "session/resume"),
                ("send", "session/prompt"),
                ("interrupt", "session/cancel"),
                (
                    "stop",
                    "cancel input, session/close and EOF, scoped kernel termination, descendant verification",
                ),
                ("usage", "session/update:usage_update"),
            ]
            .into_iter()
            .map(|(name, method)| {
                (
                    name.to_owned(),
                    json!({
                        "status": if dsh { "requires_version_and_protocol_check" } else { "unsupported" },
                        "method": if dsh { Some(method) } else { None },
                    }),
                )
            })
            .collect();
            json!({
                "id": id,
                "protocol": if dsh { Some("acp-stdio-v1") } else { None },
                "verified_versions": if dsh { vec!["0.2.0-rc.2"] } else { vec![] },
                "verification": if dsh {
                    "versioned wire fixtures and isolated DSH ACP lifecycle smoke"
                } else {
                    "no implementation or verified CLI version"
                },
                "operations": operations,
            })
        })
        .collect();
    json!({ "adapters": adapters })
}

pub fn cmd_adapter_catalog() -> anyhow::Result<()> {
    println!("{}", serde_json::to_string_pretty(&catalog())?);
    Ok(())
}