liminal-cli 0.3.1

The liminal command: serve the network, maintain its stores, or serve its discovery MCP over stdio
Documentation
use super::tool_entries;
use serde_json::json;

#[test]
fn plan_tools_declare_complete_closed_input_shapes() {
    let entries = tool_entries();
    assert_eq!(entries[0]["name"], "plan_set");
    assert_eq!(
        entries[0]["inputSchema"]["required"],
        json!(["service", "steps"])
    );
    assert_eq!(
        entries[0]["inputSchema"]["properties"]["steps"]["items"]["required"],
        json!(["title"])
    );
    assert_eq!(entries[1]["name"], "plan_step");
    assert_eq!(
        entries[1]["inputSchema"]["required"],
        json!(["service", "step", "status"])
    );
    assert_eq!(
        entries[1]["inputSchema"]["properties"]["status"]["enum"],
        json!(["todo", "doing", "done", "blocked"])
    );
    assert!(
        entries
            .iter()
            .all(|entry| entry["inputSchema"]["additionalProperties"] == false)
    );
}

#[test]
fn construction_tools_keep_contracts_required_and_identity_at_the_server() {
    let entries = tool_entries();
    assert_eq!(
        entries[2]["inputSchema"]["required"],
        json!(["name", "purpose", "subjects", "contracts"])
    );
    assert_eq!(
        entries[3]["inputSchema"]["required"],
        json!(["service", "agent"])
    );
    assert!(
        entries
            .iter()
            .all(|entry| entry["inputSchema"]["properties"].get("holder").is_none())
    );
}