liminal-cli 0.3.5

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

fn harness(extra: &str) -> anyhow::Result<Harness> {
    Ok(toml::from_str(&format!(
        "id='codex'\nprogram='/bin/true'\nargs=[]\n{extra}"
    ))?)
}

#[test]
fn every_bound_is_positive_and_defaults_are_explicit() -> anyhow::Result<()> {
    let configured = harness("")?;
    configured.validate()?;
    assert_eq!(configured.prompt_queue, 32);
    assert_eq!(configured.content_bytes, 65536);
    assert_eq!(configured.pending_permissions, 1024);
    for field in [
        "prompt_queue",
        "content_bytes",
        "acp_frame_bytes",
        "pending_permissions",
        "write_queue",
        "read_queue",
        "stream_queue",
        "issuer_response_bytes",
    ] {
        assert!(harness(&format!("{field}=0"))?.validate().is_err());
    }
    Ok(())
}

#[test]
fn no_configuration_can_add_an_approval_policy() {
    for field in [
        "auto_approve=true",
        "permission_policy='approve'",
        "permission='allow-once'",
        "permission='deny'",
        "id='cdx'",
    ] {
        assert!(harness(field).is_err());
    }
}

#[test]
fn relative_workspaces_and_empty_resume_ids_are_refused() -> anyhow::Result<()> {
    assert!(harness("cwd='relative'")?.validate().is_err());
    assert!(harness("session='' ")?.validate().is_err());
    Ok(())
}

#[test]
fn a_listen_table_cannot_silently_widen_or_override_the_host() -> anyhow::Result<()> {
    for text in [
        "subjects=['other.inbox']",
        "subjects=['agents.a.inbox','agents.a.inbox']",
        "listen_bound=0",
        "content_bytes=0",
    ] {
        let table: toml::Value = toml::from_str(text)?;
        assert!(super::config::validate_listen(Some(&table), "a", 65536).is_err());
    }
    let table: toml::Value = toml::from_str("subjects=['agents.a.inbox']")?;
    super::config::validate_listen(Some(&table), "a", 65536)?;
    Ok(())
}

/// The docs site's hosted-agent seat example loads as written.
#[test]
fn the_published_agent_seat_example_loads() -> anyhow::Result<()> {
    let examples: serde_json::Value =
        serde_json::from_str(include_str!("../../../../docs/site/_data/examples.json"))?;
    let code = examples["agent-seat-config"]["code"]
        .as_str()
        .ok_or_else(|| anyhow::anyhow!("examples.json has no agent-seat-config"))?;
    let dir = tempfile::tempdir()?;
    let path = dir.path().join("agent-seat.toml");
    std::fs::write(&path, code)?;
    super::config::Seat::load(&path)?;
    Ok(())
}