liminal-cli 0.3.0

The liminal command: serve the network, maintain its stores, or serve its discovery MCP over stdio
Documentation
//! An unserved call's refusal crosses the wire and the MCP result in both eras.

use super::*;

#[path = "call_refused_e2e.rs"]
mod refused;

fn unserved_call(modern: bool) -> Result<(), Box<dyn Error>> {
    let persistence = test_persistence::directory()?;
    let server = RunningServer::start(persistence.path())?;
    let dir = tempfile::tempdir()?;
    let ticket = Ticket::start(dir.path(), server.address, 5_000)?;
    let mut host = Host::open(ticket, modern)?;
    let input = json!({ "kind": "query", "items": [{ "id": "1", "text": "unserved" }] });
    let answer = host.tool("call", &json!({ "subject": SUBJECT, "input": input }))?;
    let (stderr, code) = host.ticket.close()?;
    assert_eq!(code, 0, "{stderr}");
    assert_eq!(answer["isError"], true, "{answer}");
    assert_ne!(answer["structuredContent"], input);
    assert_eq!(answer["structuredContent"]["subject"], SUBJECT);
    let words = answer["structuredContent"]["error"]
        .as_str()
        .ok_or("no refusal words")?;
    assert!(words.contains("no_server"), "{answer}");
    assert!(words.contains(SUBJECT), "{answer}");
    Ok(())
}

#[test]
fn modern_call_surfaces_no_server_as_an_mcp_error() -> Result<(), Box<dyn Error>> {
    unserved_call(true)
}

#[test]
fn legacy_call_surfaces_no_server_as_an_mcp_error() -> Result<(), Box<dyn Error>> {
    unserved_call(false)
}