liminal-cli 0.3.1

The liminal command: serve the network, maintain its stores, or serve its discovery MCP over stdio
Documentation
//! Capability contracts use the real ticket child and a Lys-gated exchange.

use super::channel_test_support::{TestResult, require, run};
use serde_json::json;

#[test]
fn agt001_initialize_advertises_the_exact_channel_capability() -> TestResult {
    run(|_, host| {
        let initialized = host.initialize()?;
        require(
            initialized["result"]["capabilities"]
                == json!({"tools":{},"logging":{},
            "experimental":{"claude/channel":{}}}),
            "initialize must advertise experimental claude/channel alongside tools and logging",
        )
    })
}

#[test]
fn agt001_discovery_also_advertises_the_channel_capability() -> TestResult {
    run(|_, host| {
        let discovered = host.request(
            "server/discover",
            &json!({"_meta":{
            "io.modelcontextprotocol/protocolVersion":"2026-07-28",
            "io.modelcontextprotocol/clientCapabilities":{}}}),
        )?;
        require(
            discovered["result"]["capabilities"]["experimental"] == json!({"claude/channel":{}}),
            "discovery must advertise the same exact channel capability",
        )
    })
}