Some checks failed
WAI breaking changes and the conformance runner / WAI breaking · does this change touch WAI (push) Successful in 21s
wai-fleet service / does this change touch it (push) Successful in 17s
joule-moq-web browser client / joule-moq-web · does this change touch it (push) Successful in 26s
joule-moq-room room service / joule-moq-room · does this change touch it (push) Successful in 28s
wai-app and Create / wai-app · does this change touch it (push) Successful in 22s
wai-quantum energy-landscape jobs / does this change touch it (push) Successful in 15s
joule-code conformance gate / joule-moq-relay, its own energy on a counter (macos) (push) Successful in 50s
wai-quantum editors / does this change touch it (push) Successful in 31s
wai-quantum for JavaScript / does this change touch it (push) Successful in 29s
wai-app and Create / wai-app · tests, clippy, the line language's verifier (linux) (push) Successful in 40s
wai-audit collector and player integration / does this change touch it (push) Successful in 1m23s
wai-quantum studio and desktop / does this change touch it (push) Successful in 30s
wai-fleet service / service · macos (push) Successful in 59s
wai-quantum for Python / does this change touch it (push) Successful in 31s
wai-quantum docs, course and locales / does this change touch it (push) Successful in 1m27s
wai-quantum views in agent hosts / does this change touch it (push) Successful in 21s
joule-moq-remote host agent / joule-moq-remote · does this change touch it (push) Successful in 2m4s
wai-key-proxy / does this change touch it (push) Successful in 1m55s
WAI operation catalogue / does this change touch it (push) Successful in 1m56s
wai-quantum command line / does this change touch it (push) Successful in 1m40s
wai-ledger service / does this change touch it (push) Successful in 1m50s
wai-quantum contract / does this change touch it (push) Successful in 1m41s
WAI Studio / does this change touch it (push) Successful in 12s
wai-sink-swift native sink package / does this change touch it (push) Successful in 25s
WAI breaking changes and the conformance runner / WAI breaking · wire, record and API against main · linux (push) Successful in 1m43s
wai-sink-android native sink library / does this change touch it (push) Successful in 42s
joule-code conformance gate / Build + round-trip C1-C4 vectors (push) Successful in 2m45s
wai-quantum editors / editors · macos (push) Successful in 2m2s
wai-audit collector and player integration / collector, player integration and the browser end to end · macos (push) Successful in 2m21s
wai-fleet service / service · linux (push) Successful in 3m36s
wai-quantum docs, course and locales / the Studio's words in every locale · linux (push) Successful in 12s
joule-moq-remote host agent / joule-moq-remote, every target (macos) (push) Successful in 52s
joule-moq-remote host agent / joule-moq-remote, every target (linux-arm64) (push) Successful in 2m37s
wai-quantum for Python / python · macos (push) Successful in 2m57s
wai-ledger service / service · macos (push) Successful in 1m16s
wai-quantum editors / editors · linux (push) Successful in 3m46s
wai-audit collector and player integration / collector · linux (push) Successful in 3m39s
wai-quantum docs, course and locales / the course and the command line's languages · linux (push) Successful in 3m23s
wai-quantum for Python / python · linux (push) Successful in 4m26s
repository checks / lockfiles, advisories, tests in CI, workflow hygiene, spec and section references, public text (push) Failing after 6m38s
wai-quantum studio and desktop / desktop app · macos (push) Successful in 5m7s
wai-quantum command line / command line · macos (push) Successful in 2m33s
wai-quantum for JavaScript / javascript · linux (push) Successful in 5m35s
wai-key-proxy / proxy · linux (push) Successful in 1m12s
joule-moq-room room service / joule-moq-room, every target (push) Successful in 7m3s
WAI breaking changes and the conformance runner / WAI breaking and conform · their tests, and the independent verifiers through wai conform · linux (push) Successful in 7m40s
wai-quantum energy-landscape jobs / native against WebAssembly, over many seeds (push) Successful in 7m39s
wai-ledger service / service · linux (push) Successful in 2m5s
wai-quantum contract / the policy is linked, and the deprecations page reads (push) Successful in 7s
wai-app and Create / wai-app · Create, browser end-to-end (macos) (push) Successful in 8m36s
wai-quantum energy-landscape jobs / the same bits · macos (push) Successful in 8m36s
WAI Studio / the catalogue's actions, the unit tests and the core · linux (push) Successful in 1m10s
wai-quantum views in agent hosts / views · a scripted host (push) Successful in 4m26s
wai-quantum views in agent hosts / views · the page and its engine (push) Successful in 6m33s
wai-quantum contract / API compatibility · linux (push) Successful in 4m44s
wai-quantum energy-landscape jobs / the same bits · linux-arm64 (push) Successful in 13m4s
wai-sink-android native sink library / every ABI, the AAR, and the instrumented tests in a headless emulator · macos (push) Successful in 6m46s
wai-quantum energy-landscape jobs / reader, kernels, answers and the stated result · linux, release (push) Successful in 14m11s
wai-quantum energy-landscape jobs / the module under wasm32-wasip2 (wasmtime) (push) Successful in 14m12s
wai-quantum studio and desktop / desktop app · linux (push) Successful in 13m18s
WAI operation catalogue / the catalogue and every door · linux (push) Successful in 10m49s
WAI Studio / Studio in Chromium and Firefox · macos (push) Successful in 11m36s
wai-sink-swift native sink package / libwai slices, desktop tests, simulator tests · macos (push) Successful in 12m10s
joule-moq-web browser client / joule-moq-web · browser end-to-end (macos) (push) Successful in 16m36s
wai-quantum contract / schemas and the committed tool lists · linux (push) Successful in 9m58s
wai-quantum studio and desktop / studio · browser (push) Successful in 16m35s
WAI Studio / Studio in WebKit · linux (push) Successful in 12m22s
wai-quantum docs, course and locales / every command and snippet in the docs · linux (push) Successful in 22m0s
wai release binaries build on Windows / the seven release binaries · windows (push) Successful in 24m31s
joule-code conformance gate / joule-moq-ingest, every target (push) Successful in 28m51s
joule-code conformance gate / joule-moq-relay, every target (push) Successful in 28m59s
wai-sink-android native sink library / the JNI layer and the platform-free half on the host JVM · linux-arm64 (push) Successful in 29m41s
wai-quantum studio and desktop / desktop app · windows (push) Successful in 11m58s
wai-quantum command line / command line · linux (push) Successful in 48m17s
Folds, each the program it folds run as itself, so what it prints and its exit status are the program's for the same arguments: wai audit report|check|verify (audit.create, audit.check, audit.verify) is wai-audit, --owner its WAI_AUDIT_OWNER; wai serve <role> [--config F] [--check] (service.start) starts wai-<role>: relay, room, ingest and key-release from a file, audit, fleet, ledger and quantum-service from their environment; wai quantum run|plan|lint|verify|methods (quantum.run, .inspect, .check, .verify, .list) is wai-quantum with that verb, and no other verb of it is reached. A program is its flag, WAI_<NAME>_BIN, beside wai, or on PATH; one not there is exit 5, program-not-found. report is not an N3 verb, so wai audit report is the operation audit.create. --check on the daemons: wai-relay, wai-room (its keys too) and wai-ingest --config F --check, and wai-key-release serve F --check, read the configuration as each starts from it and start nothing, exit 1 with the reason when it does not read. The proxy is installed as wai-key-release; wai-key-proxy is the same program under its earlier name. wai cmcd encode|decode|verify is wai_telemetry's tool compiled in (cmcd.rs, one module behind both; telemetry joins full). wai receipt create <file>... --from <input>... [--key] signs the operation receipt a toolchain write leaves, for files made elsewhere. wai verify reads every record by its kind: by name, and a JSON record by what it holds (a delivery receipt or claim as receipt_verify answers it, a room session, an audit bundle as wai-audit verify does with --owner/--channel, a sealed playlist by its mr/<blake3>.json as check-playlist does); a file of no kind is exit 2, unknown-record. wai mcp --toolset quantum starts wai-quantum mcp and answers each quantum_* tool with that server's own answer and schemas. wai media score build|render alias wai score. The quantum operations' SDK names are registered labels. Tests, each fold against what it folds: cli_folds (cmcd over the whole corpus, receipt create against wrap's receipt, verify on the claim, JWP, room and audit corpora and a sealed playlist, audit|serve|quantum against stand-ins); wai-audit tests/fold.rs, wai-quantum-cli tests/wai_fold.rs and joule-moq-room tests/cli_serve.rs against the real programs; cli_mcp's quantum toolset; the daemons' --check (config_check.rs, check.rs). ops.json, mcp.json, the registry export and Studio's actions regenerated. Co-Authored-By: Claude Opus 5.5 <[email protected]>
11483 lines
334 KiB
JSON
11483 lines
334 KiB
JSON
{
|
|
"format": "wai.ops/1",
|
|
"toolchain": "0.6.0",
|
|
"envelope": "envelope/1",
|
|
"exit_codes": [
|
|
{
|
|
"exit": 0,
|
|
"meaning": "done; every check held"
|
|
},
|
|
{
|
|
"exit": 1,
|
|
"meaning": "ran, and a check failed"
|
|
},
|
|
{
|
|
"exit": 2,
|
|
"meaning": "usage error or invalid input"
|
|
},
|
|
{
|
|
"exit": 3,
|
|
"meaning": "authentication or permission"
|
|
},
|
|
{
|
|
"exit": 4,
|
|
"meaning": "confirmation required; nothing changed"
|
|
},
|
|
{
|
|
"exit": 5,
|
|
"meaning": "not found (file, target, room, operation)"
|
|
},
|
|
{
|
|
"exit": 6,
|
|
"meaning": "target unavailable; safe to retry"
|
|
},
|
|
{
|
|
"exit": 7,
|
|
"meaning": "internal error"
|
|
}
|
|
],
|
|
"agent_flags": [
|
|
{
|
|
"flag": "--json",
|
|
"summary": "one JSON envelope on stdout: {\"wai\": \"envelope/1\", \"op\", \"ok\", \"data\" | \"error\"}",
|
|
"aliases": []
|
|
},
|
|
{
|
|
"flag": "--dry-run",
|
|
"summary": "write nothing and send nothing; say what would be done (an operation that only reads ignores it)",
|
|
"aliases": []
|
|
},
|
|
{
|
|
"flag": "--yes",
|
|
"summary": "confirm a change that waits for confirmation; off a terminal, without it, exit 4",
|
|
"aliases": [
|
|
{
|
|
"flag": "--confirm",
|
|
"deprecated": {
|
|
"since": "0.3.0",
|
|
"use_instead": "--yes"
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"flag": "--no-input",
|
|
"summary": "never ask: a change that waits for confirmation exits 4 unless --yes is given",
|
|
"aliases": []
|
|
},
|
|
{
|
|
"flag": "--fields",
|
|
"summary": "<a,b.c> with --json: data keeps only these members (each a member or a dotted path; of each item when data is a list); the envelope's own members (wai, op, ok, error, exit, dry_run, plan) are always kept",
|
|
"aliases": []
|
|
}
|
|
],
|
|
"operations": [
|
|
{
|
|
"id": "toolchain.test",
|
|
"summary": "WAI's four steps (name, dispatch, rebuild, receipt) on a picture made here, its receipt checked offline",
|
|
"cli": "wai hello",
|
|
"aliases": [],
|
|
"usage": [
|
|
"wai hello [<dir>] WAI's four steps (name, dispatch, rebuild, receipt) on a sample, written to <dir> (wai-hello)"
|
|
],
|
|
"placement": "local",
|
|
"effect": "writes-project",
|
|
"dry_run": true,
|
|
"confirm": "when-replacing-an-unnamed-file",
|
|
"route": null,
|
|
"doors": {
|
|
"cli": true,
|
|
"mcp": false,
|
|
"http": false
|
|
},
|
|
"toolset": "core",
|
|
"stability": "stable",
|
|
"input": {
|
|
"type": "object",
|
|
"properties": {
|
|
"dir": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "Where the object and its receipts are written (wai-hello).",
|
|
"x-cli": {
|
|
"positional": true
|
|
}
|
|
}
|
|
},
|
|
"required": [],
|
|
"additionalProperties": false
|
|
},
|
|
"output": {
|
|
"type": "object",
|
|
"properties": {
|
|
"text": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"text"
|
|
]
|
|
},
|
|
"stream": null,
|
|
"since": "0.3.0",
|
|
"deprecated": null,
|
|
"receipt": true,
|
|
"needs": {
|
|
"all": [
|
|
"quickstart"
|
|
]
|
|
},
|
|
"names": {
|
|
"cli": "wai toolchain test",
|
|
"mcp": null,
|
|
"c": "wai_toolchain_test",
|
|
"rust": "wai::toolchain::test",
|
|
"sdk": "wai.toolchain.test"
|
|
}
|
|
},
|
|
{
|
|
"id": "project.create",
|
|
"summary": "A new project from one of the examples, written into a new or empty directory; --list names the templates",
|
|
"cli": "wai create",
|
|
"aliases": [],
|
|
"usage": [
|
|
"wai create <dir> --template <name> [--key <name>] | create --list a new project from one of the examples, with",
|
|
" its receipt in <dir>/.wai/receipts/"
|
|
],
|
|
"placement": "local",
|
|
"effect": "writes-project",
|
|
"dry_run": true,
|
|
"confirm": "when-replacing-an-unnamed-file",
|
|
"route": null,
|
|
"doors": {
|
|
"cli": true,
|
|
"mcp": false,
|
|
"http": false
|
|
},
|
|
"toolset": "core",
|
|
"stability": "stable",
|
|
"input": {
|
|
"type": "object",
|
|
"properties": {
|
|
"dir": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "A directory that does not exist or is empty.",
|
|
"x-cli": {
|
|
"positional": true
|
|
}
|
|
},
|
|
"template": {
|
|
"type": "string",
|
|
"description": "The template, one of `wai create --list`.",
|
|
"x-cli": {
|
|
"flag": "--template"
|
|
}
|
|
},
|
|
"list": {
|
|
"type": "boolean",
|
|
"description": "List the templates instead.",
|
|
"x-cli": {
|
|
"flag": "--list"
|
|
}
|
|
},
|
|
"key": {
|
|
"type": "string",
|
|
"description": "The key that signs the operation's receipt: its name in the keystore (wai key list), or a key file; a key made for this run otherwise.",
|
|
"x-cli": {
|
|
"flag": "--key"
|
|
}
|
|
}
|
|
},
|
|
"required": [],
|
|
"additionalProperties": false
|
|
},
|
|
"output": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"required": [
|
|
"template",
|
|
"title",
|
|
"files"
|
|
]
|
|
}
|
|
},
|
|
"stream": null,
|
|
"since": "0.3.0",
|
|
"deprecated": null,
|
|
"receipt": true,
|
|
"needs": null,
|
|
"names": {
|
|
"cli": "wai project create",
|
|
"mcp": null,
|
|
"c": "wai_project_create",
|
|
"rust": "wai::project::create",
|
|
"sdk": "wai.project.create"
|
|
}
|
|
},
|
|
{
|
|
"id": "project.lock",
|
|
"summary": "wai.lock written beside wai.json: everything whose bytes change a result pinned by digest, the same bytes on any host; --check refuses a stale or edited lock",
|
|
"cli": "wai lock",
|
|
"aliases": [],
|
|
"usage": [
|
|
"wai lock [<dir>] [--check] [--root <wai-dir>] [--packer BIN] [--key <name>] write wai.lock and its receipt; --check holds it",
|
|
" to what it pins, exit 1 when it is stale or was edited"
|
|
],
|
|
"placement": "local",
|
|
"effect": "writes-project",
|
|
"dry_run": true,
|
|
"confirm": "never",
|
|
"route": null,
|
|
"doors": {
|
|
"cli": true,
|
|
"mcp": true,
|
|
"http": false
|
|
},
|
|
"toolset": "core",
|
|
"stability": "preview",
|
|
"input": {
|
|
"type": "object",
|
|
"properties": {
|
|
"dir": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "The project's directory (.).",
|
|
"x-cli": {
|
|
"positional": true
|
|
}
|
|
},
|
|
"check": {
|
|
"type": "boolean",
|
|
"description": "Write nothing: hold the file to what it pins.",
|
|
"x-cli": {
|
|
"flag": "--check"
|
|
}
|
|
},
|
|
"root": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "The wai/ directory of a checkout of the standard, for the corpora conform.suites names (found from the current directory otherwise).",
|
|
"x-cli": {
|
|
"flag": "--root"
|
|
}
|
|
},
|
|
"packer": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "wai-pack, for the policy package.policy names ($WAI_PACK_BIN, beside wai, or on PATH otherwise).",
|
|
"x-cli": {
|
|
"flag": "--packer"
|
|
}
|
|
},
|
|
"key": {
|
|
"type": "string",
|
|
"description": "The key that signs the operation's receipt: its name in the keystore (wai key list), or a key file; a key made for this run otherwise.",
|
|
"x-cli": {
|
|
"flag": "--key"
|
|
}
|
|
}
|
|
},
|
|
"required": [],
|
|
"additionalProperties": false
|
|
},
|
|
"output": {
|
|
"type": "object",
|
|
"required": [
|
|
"file",
|
|
"sha256"
|
|
],
|
|
"description": "The lock file and its SHA-256; written, whether it changed, what it pins and what it leaves absent, and its receipt (its file, receipt hash, signer and the project's digest); with --check, each check as wai check reports it"
|
|
},
|
|
"stream": null,
|
|
"since": "0.5.0",
|
|
"deprecated": null,
|
|
"receipt": true,
|
|
"needs": null,
|
|
"names": {
|
|
"cli": "wai project lock",
|
|
"mcp": "project_lock",
|
|
"c": "wai_project_lock",
|
|
"rust": "wai::project::lock",
|
|
"sdk": "wai.project.lock"
|
|
}
|
|
},
|
|
{
|
|
"id": "project.check",
|
|
"summary": "A project validated without building it: wai.json, each file it states, its app, and wai.lock against what it pins, every finding reported; what could not run says not checked",
|
|
"cli": "wai check",
|
|
"aliases": [],
|
|
"usage": [
|
|
"wai check [<dir>] [--root <wai-dir>] [--packer BIN] exit 1 when a check failed, 5 when none failed and one or more could not run"
|
|
],
|
|
"placement": "local",
|
|
"effect": "reads",
|
|
"dry_run": false,
|
|
"confirm": "never",
|
|
"route": null,
|
|
"doors": {
|
|
"cli": true,
|
|
"mcp": true,
|
|
"http": false
|
|
},
|
|
"toolset": "core",
|
|
"stability": "preview",
|
|
"input": {
|
|
"type": "object",
|
|
"properties": {
|
|
"dir": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "The project's directory (.).",
|
|
"x-cli": {
|
|
"positional": true
|
|
}
|
|
},
|
|
"root": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "The wai/ directory of a checkout of the standard, for the corpora conform.suites names (found from the current directory otherwise).",
|
|
"x-cli": {
|
|
"flag": "--root"
|
|
}
|
|
},
|
|
"packer": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "wai-pack, for the policy package.policy names ($WAI_PACK_BIN, beside wai, or on PATH otherwise).",
|
|
"x-cli": {
|
|
"flag": "--packer"
|
|
}
|
|
}
|
|
},
|
|
"required": [],
|
|
"additionalProperties": false
|
|
},
|
|
"output": {
|
|
"type": "object",
|
|
"required": [
|
|
"project",
|
|
"digest",
|
|
"lock",
|
|
"checks",
|
|
"held",
|
|
"failed",
|
|
"not_checked"
|
|
],
|
|
"description": "The project file and its canonical digest, the lock and its digest, and each check with what it found: held, failed or not checked, with a stable code, a hint for what did not hold or did not run, and fix, the command that fixes it where one does (run wai lock for a lock that is stale, was edited or is not there), null otherwise"
|
|
},
|
|
"stream": null,
|
|
"since": "0.5.0",
|
|
"deprecated": null,
|
|
"receipt": false,
|
|
"needs": null,
|
|
"names": {
|
|
"cli": "wai project check",
|
|
"mcp": "project_check",
|
|
"c": "wai_project_check",
|
|
"rust": "wai::project::check",
|
|
"sdk": "wai.project.check"
|
|
}
|
|
},
|
|
{
|
|
"id": "project.build",
|
|
"summary": "dist/ written for a project whose checks hold: the same bytes from the same project and lock, with a build record naming the digests of wai.json and wai.lock",
|
|
"cli": "wai build",
|
|
"aliases": [],
|
|
"usage": [
|
|
"wai build [<dir>] [--key <seed file>] [--packer BIN] [--root <wai-dir>] write dist/ and its receipt; refused, nothing",
|
|
" written, when a check fails or the lock is stale"
|
|
],
|
|
"placement": "local",
|
|
"effect": "writes-project",
|
|
"dry_run": true,
|
|
"confirm": "when-replacing-an-unnamed-file",
|
|
"route": null,
|
|
"doors": {
|
|
"cli": true,
|
|
"mcp": true,
|
|
"http": false
|
|
},
|
|
"toolset": "core",
|
|
"stability": "preview",
|
|
"input": {
|
|
"type": "object",
|
|
"properties": {
|
|
"dir": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "The project's directory (.).",
|
|
"x-cli": {
|
|
"positional": true
|
|
}
|
|
},
|
|
"key": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "The seed file (64 hexadecimal digits) that signs a package's receipt, for a project with package, and the build's receipt (a key made for this run otherwise).",
|
|
"x-cli": {
|
|
"flag": "--key"
|
|
}
|
|
},
|
|
"packer": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "wai-pack, for a project with package ($WAI_PACK_BIN, beside wai, or on PATH otherwise).",
|
|
"x-cli": {
|
|
"flag": "--packer"
|
|
}
|
|
},
|
|
"root": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "The wai/ directory of a checkout of the standard, for the corpora conform.suites names (found from the current directory otherwise).",
|
|
"x-cli": {
|
|
"flag": "--root"
|
|
}
|
|
}
|
|
},
|
|
"required": [],
|
|
"additionalProperties": false
|
|
},
|
|
"output": {
|
|
"type": "object",
|
|
"required": [
|
|
"dir",
|
|
"record",
|
|
"record_only",
|
|
"project_sha256",
|
|
"lock_sha256",
|
|
"files",
|
|
"left_out",
|
|
"not_checked"
|
|
],
|
|
"description": "The tree written and its build record with the record's SHA-256, the digests of the project file and the lock it names, its files (record_only when the project states nothing for wai to build), what the site holds that it left out and why, what could not be checked, and the build's receipt; refused, the checks as wai check reports them, each with its fix"
|
|
},
|
|
"stream": null,
|
|
"since": "0.5.0",
|
|
"deprecated": null,
|
|
"receipt": true,
|
|
"needs": null,
|
|
"names": {
|
|
"cli": "wai project build",
|
|
"mcp": "project_build",
|
|
"c": "wai_project_build",
|
|
"rust": "wai::project::build",
|
|
"sdk": "wai.project.build"
|
|
}
|
|
},
|
|
{
|
|
"id": "dev.start",
|
|
"summary": "A relay, a room service and the room page on one origin on this machine, for development; --check starts, checks every piece and stops",
|
|
"cli": "wai dev",
|
|
"aliases": [],
|
|
"usage": [
|
|
"wai dev [--port P] [--dir D] [--site DIR] [--watch FILE [--watch-ms MS]] [--call] [--remote]",
|
|
" [--show [--audience N]] [--messaging] [--e2ee] [--publishers N] [--check] [--for S] [--web DIR]",
|
|
" [--relay BIN] [--room BIN] [--control] [--impair loss=P%,rtt=MS,jitter=MS]",
|
|
" --port P the origin's port on 127.0.0.1 (8080; 0 picks a free one)",
|
|
" --dir D keys, configuration and logs (.wai/dev)",
|
|
" --site DIR your page: DIR is served at /, the room client beside it at /room/",
|
|
" --publishers N places in the room (4)",
|
|
" --watch FILE a watch room: everyone in it watches FILE together (.wav, .webm, .mp4,",
|
|
" .ogg, .mp3); --watch-ms MS its duration, read from a WAV file's header",
|
|
" --call the room is a call: /room/call.html places one, rings, answers",
|
|
" --remote the room is one host's shared screen; prints the host's invitation",
|
|
" --show the room is a show: hosts on camera, an audience that votes in polls",
|
|
" the room's clock opens and signs (co-performance); --audience N each",
|
|
" viewer's inputs to a poll (1)",
|
|
" --messaging a conversation beside the room, at /msg-api/: /room/messages.html",
|
|
" --e2ee every room end-to-end encrypted",
|
|
" --check start, check every piece through the origin, report, stop",
|
|
" --for S stop after S seconds",
|
|
" --web DIR the room client's files (beside this binary: ../share/wai/web; $WAI_WEB)",
|
|
" --relay BIN wai-relay (beside this binary, then $PATH; $WAI_RELAY_BIN)",
|
|
" --room BIN wai-room (beside this binary, then $PATH; $WAI_ROOM_BIN)",
|
|
" --control JSON control lines on standard input, answered by synthetic participants",
|
|
" (wai-room participant): join, leave, session, test, load, describe, stop;",
|
|
" the end of standard input stops the stack. Implies --json",
|
|
" --impair SPEC the relay also listens for QUIC on loopback, and the synthetic participants",
|
|
" enter over it through a path that drops (loss=P%), delays (rtt=MS) and",
|
|
" spreads (jitter=MS) their datagrams; a page's WebSocket is not impaired",
|
|
" wai-relay and wai-room must be of this wai's toolchain: a stale stack is refused, nothing",
|
|
" started. While it runs, the stack is recorded in DIR/stack.json (wai room test reads it).",
|
|
" WAI Studio is served at /_wai/ when its files are found ($WAI_STUDIO, or share/wai/studio",
|
|
" beside this binary).",
|
|
" A wai.json in the current directory (`wai create` writes one) gives the defaults; a flag",
|
|
" wins over it. Ctrl-C stops everything. With --json and without --check, the first line",
|
|
" is {\"ready\": true, ...}."
|
|
],
|
|
"placement": "local",
|
|
"effect": "runs",
|
|
"dry_run": true,
|
|
"confirm": "when-replacing-an-unnamed-file",
|
|
"route": null,
|
|
"doors": {
|
|
"cli": true,
|
|
"mcp": true,
|
|
"http": false
|
|
},
|
|
"toolset": "dev",
|
|
"stability": "stable",
|
|
"input": {
|
|
"type": "object",
|
|
"properties": {
|
|
"port": {
|
|
"type": "integer",
|
|
"description": "The origin's port on 127.0.0.1 (8080; 0 picks a free one).",
|
|
"x-cli": {
|
|
"flag": "--port"
|
|
}
|
|
},
|
|
"dir": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "Keys, configuration and logs (.wai/dev).",
|
|
"x-cli": {
|
|
"flag": "--dir"
|
|
}
|
|
},
|
|
"site": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "A directory served at /.",
|
|
"x-cli": {
|
|
"flag": "--site"
|
|
}
|
|
},
|
|
"watch": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "A file everyone in a watch room watches together.",
|
|
"x-cli": {
|
|
"flag": "--watch"
|
|
}
|
|
},
|
|
"watch_ms": {
|
|
"type": "integer",
|
|
"description": "The watch file's duration in milliseconds.",
|
|
"x-cli": {
|
|
"flag": "--watch-ms"
|
|
}
|
|
},
|
|
"call": {
|
|
"type": "boolean",
|
|
"description": "The room is a call.",
|
|
"x-cli": {
|
|
"flag": "--call"
|
|
}
|
|
},
|
|
"remote": {
|
|
"type": "boolean",
|
|
"description": "The room is one host's shared screen.",
|
|
"x-cli": {
|
|
"flag": "--remote"
|
|
}
|
|
},
|
|
"show": {
|
|
"type": "boolean",
|
|
"description": "The room is a show: hosts on camera, an audience that votes in polls.",
|
|
"x-cli": {
|
|
"flag": "--show"
|
|
}
|
|
},
|
|
"audience": {
|
|
"type": "integer",
|
|
"description": "With --show, each viewer's inputs to a poll (1).",
|
|
"x-cli": {
|
|
"flag": "--audience"
|
|
}
|
|
},
|
|
"messaging": {
|
|
"type": "boolean",
|
|
"description": "A conversation beside the room.",
|
|
"x-cli": {
|
|
"flag": "--messaging"
|
|
}
|
|
},
|
|
"e2ee": {
|
|
"type": "boolean",
|
|
"description": "Every room end-to-end encrypted.",
|
|
"x-cli": {
|
|
"flag": "--e2ee"
|
|
}
|
|
},
|
|
"publishers": {
|
|
"type": "integer",
|
|
"description": "Places in the room (4).",
|
|
"x-cli": {
|
|
"flag": "--publishers"
|
|
}
|
|
},
|
|
"check": {
|
|
"type": "boolean",
|
|
"description": "Start, check every piece, report and stop.",
|
|
"x-cli": {
|
|
"flag": "--check"
|
|
}
|
|
},
|
|
"for_s": {
|
|
"type": "integer",
|
|
"description": "Stop after this many seconds.",
|
|
"x-cli": {
|
|
"flag": "--for"
|
|
}
|
|
},
|
|
"web": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "The room client's files.",
|
|
"x-cli": {
|
|
"flag": "--web"
|
|
}
|
|
},
|
|
"relay": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "The relay's binary.",
|
|
"x-cli": {
|
|
"flag": "--relay"
|
|
}
|
|
},
|
|
"room": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "The room service's binary.",
|
|
"x-cli": {
|
|
"flag": "--room"
|
|
}
|
|
},
|
|
"control": {
|
|
"type": "boolean",
|
|
"description": "Control lines on standard input, answered by synthetic participants; implies --json.",
|
|
"x-cli": {
|
|
"flag": "--control"
|
|
}
|
|
},
|
|
"impair": {
|
|
"type": "string",
|
|
"description": "The synthetic participants over QUIC through an impaired path: loss=P%,rtt=MS,jitter=MS.",
|
|
"x-cli": {
|
|
"flag": "--impair"
|
|
}
|
|
}
|
|
},
|
|
"required": [],
|
|
"additionalProperties": false
|
|
},
|
|
"output": {
|
|
"type": "object",
|
|
"required": [
|
|
"ready",
|
|
"seconds",
|
|
"steps",
|
|
"checks",
|
|
"origin"
|
|
]
|
|
},
|
|
"stream": {
|
|
"type": "object",
|
|
"required": [
|
|
"ready"
|
|
],
|
|
"properties": {
|
|
"ready": {
|
|
"type": "boolean"
|
|
},
|
|
"origin": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"since": "0.3.0",
|
|
"deprecated": null,
|
|
"receipt": false,
|
|
"needs": null,
|
|
"names": {
|
|
"cli": "wai dev start",
|
|
"mcp": "dev_start",
|
|
"c": "wai_dev_start",
|
|
"rust": "wai::dev::start",
|
|
"sdk": "wai.dev.start"
|
|
}
|
|
},
|
|
{
|
|
"id": "receipt.verify",
|
|
"summary": "Every record under each path checked offline, each by the kind it is: receipt indexes and their receipts, delivery receipts, claims, room sessions, audit bundles, sealed playlists, operation receipts and origin claims, conformance results, fleet report bundles and envelopes",
|
|
"cli": "wai verify",
|
|
"aliases": [],
|
|
"usage": [
|
|
"wai verify <path>... [--conformant [--root <wai-dir>]] [--owner <hex> --channel <name>...] every record under each",
|
|
" path, checked offline by the kind it is, read from its name or, for a JSON record, from what it holds: receipt",
|
|
" indexes (*.wai.receipts), delivery receipts and claims (by their kind), live-room sessions, stream audit bundles",
|
|
" (for the owner --owner or WAI_AUDIT_OWNER names, serving each --channel), WAI media playlists with their manifest",
|
|
" receipt (mr/<hash>.json beside them), the operation receipts (*.wai-receipt.json) and origin claims",
|
|
" (*.wai-origin.json) the toolchain's writes leave, conformance results (*.wai-conform.json), fleet report bundles",
|
|
" (*.wai-fleet.json) and envelopes' pins (*.wai); a file named that is none of these is refused (exit 2): a file an",
|
|
" operation receipt names that has changed, or a receipt of another project, is refused; --conformant admits a",
|
|
" result only for a run that passed against this checkout's corpus, and gives each area the results' suites are in a",
|
|
" verdict"
|
|
],
|
|
"placement": "local",
|
|
"effect": "reads",
|
|
"dry_run": false,
|
|
"confirm": "never",
|
|
"route": null,
|
|
"doors": {
|
|
"cli": true,
|
|
"mcp": true,
|
|
"http": false
|
|
},
|
|
"toolset": "core",
|
|
"stability": "stable",
|
|
"input": {
|
|
"type": "object",
|
|
"properties": {
|
|
"paths": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
},
|
|
"description": "Files or directories holding records: receipt indexes, delivery receipts, claims, room sessions, audit bundles, sealed playlists, operation receipts, origin claims, conformance results, fleet report bundles or envelopes.",
|
|
"x-cli": {
|
|
"positional": true
|
|
}
|
|
},
|
|
"conformant": {
|
|
"type": "boolean",
|
|
"description": "Admit each conformance result only when its run passed, against the corpus of a checkout.",
|
|
"x-cli": {
|
|
"flag": "--conformant"
|
|
}
|
|
},
|
|
"root": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "With --conformant, the wai/ directory of the checkout whose corpus a result names.",
|
|
"x-cli": {
|
|
"flag": "--root"
|
|
}
|
|
},
|
|
"owner": {
|
|
"type": "string",
|
|
"description": "For an audit bundle: the owner's key, 64 hexadecimal digits (WAI_AUDIT_OWNER otherwise).",
|
|
"x-cli": {
|
|
"flag": "--owner"
|
|
}
|
|
},
|
|
"channel": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
},
|
|
"description": "For an audit bundle: a channel its owner serves; repeated.",
|
|
"x-cli": {
|
|
"flag": "--channel"
|
|
}
|
|
}
|
|
},
|
|
"required": [
|
|
"paths"
|
|
],
|
|
"additionalProperties": false
|
|
},
|
|
"output": {
|
|
"type": "object",
|
|
"properties": {
|
|
"text": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"text"
|
|
]
|
|
},
|
|
"stream": null,
|
|
"since": "0.3.0",
|
|
"deprecated": null,
|
|
"receipt": false,
|
|
"needs": {
|
|
"all": [
|
|
"quickstart"
|
|
]
|
|
},
|
|
"names": {
|
|
"cli": "wai receipt verify",
|
|
"mcp": "receipt_verify",
|
|
"c": "wai_receipt_verify",
|
|
"rust": "wai::receipt::verify",
|
|
"sdk": "wai.receipt.verify"
|
|
}
|
|
},
|
|
{
|
|
"id": "receipt.create",
|
|
"summary": "A signed receipt for files made outside the toolchain, as its own writes leave one: their lineage from the project and each file they were made from to each of them, which wai verify reads",
|
|
"cli": "wai receipt create",
|
|
"aliases": [],
|
|
"usage": [
|
|
"wai receipt create <file>... [--from <input>]... [--key <name>] a receipt for the files named: its lineage is the",
|
|
" project (where it runs in one), each --from file read, then each file named, in order, every step its content hash;",
|
|
" kept beside the last file named, or in the project's .wai/receipts/ for files inside a project"
|
|
],
|
|
"placement": "local",
|
|
"effect": "writes-project",
|
|
"dry_run": true,
|
|
"confirm": "never",
|
|
"route": null,
|
|
"doors": {
|
|
"cli": true,
|
|
"mcp": false,
|
|
"http": false
|
|
},
|
|
"toolset": "core",
|
|
"stability": "preview",
|
|
"input": {
|
|
"type": "object",
|
|
"properties": {
|
|
"files": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
},
|
|
"description": "The files the receipt is for, in order; the last is the one it is about.",
|
|
"x-cli": {
|
|
"positional": true
|
|
}
|
|
},
|
|
"from": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
},
|
|
"description": "A file they were made from; repeated, in order.",
|
|
"x-cli": {
|
|
"flag": "--from"
|
|
}
|
|
},
|
|
"key": {
|
|
"type": "string",
|
|
"description": "The key that signs the receipt: its name in the keystore (wai key list), or a key file; a key made for this run otherwise.",
|
|
"x-cli": {
|
|
"flag": "--key"
|
|
}
|
|
}
|
|
},
|
|
"required": [
|
|
"files"
|
|
],
|
|
"additionalProperties": false
|
|
},
|
|
"output": {
|
|
"type": "object",
|
|
"properties": {
|
|
"text": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"text"
|
|
]
|
|
},
|
|
"stream": null,
|
|
"since": "0.6.0",
|
|
"deprecated": null,
|
|
"receipt": true,
|
|
"needs": {
|
|
"all": [
|
|
"quickstart"
|
|
]
|
|
},
|
|
"names": {
|
|
"cli": "wai receipt create",
|
|
"mcp": null,
|
|
"c": "wai_receipt_create",
|
|
"rust": "wai::receipt::create",
|
|
"sdk": "wai.receipt.create"
|
|
}
|
|
},
|
|
{
|
|
"id": "envelope.inspect",
|
|
"summary": "What an envelope holds and whether this build decodes it: media, intent, pin, capability, fallback, the dispatch verdict and the conformance checks",
|
|
"cli": "wai inspect",
|
|
"aliases": [],
|
|
"usage": [
|
|
"wai inspect <in.wai> what a WAI1 or WAI2 envelope holds, and the verdict of SPEC §4's dispatch here"
|
|
],
|
|
"placement": "local",
|
|
"effect": "reads",
|
|
"dry_run": false,
|
|
"confirm": "never",
|
|
"route": null,
|
|
"doors": {
|
|
"cli": true,
|
|
"mcp": true,
|
|
"http": false
|
|
},
|
|
"toolset": "core",
|
|
"stability": "stable",
|
|
"input": {
|
|
"type": "object",
|
|
"properties": {
|
|
"path": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "A .wai envelope.",
|
|
"x-cli": {
|
|
"positional": true
|
|
}
|
|
}
|
|
},
|
|
"required": [
|
|
"path"
|
|
],
|
|
"additionalProperties": false
|
|
},
|
|
"output": {
|
|
"type": "object",
|
|
"properties": {
|
|
"text": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"text"
|
|
]
|
|
},
|
|
"stream": null,
|
|
"since": "0.3.0",
|
|
"deprecated": null,
|
|
"receipt": false,
|
|
"needs": null,
|
|
"names": {
|
|
"cli": "wai envelope inspect",
|
|
"mcp": "envelope_inspect",
|
|
"c": "wai_envelope_inspect",
|
|
"rust": "wai::envelope::inspect",
|
|
"sdk": "wai.envelope.inspect"
|
|
}
|
|
},
|
|
{
|
|
"id": "envelope.wrap",
|
|
"summary": "Carry a registered capability's bytes in an envelope, byte for byte, under SPEC's intent, role and candidate rules",
|
|
"cli": "wai wrap",
|
|
"aliases": [],
|
|
"usage": [
|
|
"wai wrap <capability> <payload> [-o out.wai] [--fallback <cap>] [--intent <intent>]",
|
|
" [--companion <cap> <payload>]... [--key <name>] WAI2: companions bound to the payload; the envelope's receipt beside",
|
|
" it, or in the project's .wai/receipts/"
|
|
],
|
|
"placement": "local",
|
|
"effect": "writes-project",
|
|
"dry_run": true,
|
|
"confirm": "when-replacing-an-unnamed-file",
|
|
"route": null,
|
|
"doors": {
|
|
"cli": true,
|
|
"mcp": true,
|
|
"http": false
|
|
},
|
|
"toolset": "core",
|
|
"stability": "stable",
|
|
"input": {
|
|
"type": "object",
|
|
"properties": {
|
|
"capability": {
|
|
"type": "string",
|
|
"description": "A registered capability (`wai capabilities`).",
|
|
"x-cli": {
|
|
"positional": true
|
|
}
|
|
},
|
|
"payload": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "The bytes to carry.",
|
|
"x-cli": {
|
|
"positional": true
|
|
}
|
|
},
|
|
"out": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "The envelope (out.wai).",
|
|
"x-cli": {
|
|
"flag": "-o"
|
|
}
|
|
},
|
|
"fallback": {
|
|
"type": "string",
|
|
"description": "A WAI1 fallback capability.",
|
|
"x-cli": {
|
|
"flag": "--fallback"
|
|
}
|
|
},
|
|
"intent": {
|
|
"type": "string",
|
|
"description": "The envelope's intent (replicate where SPEC §7 allows it).",
|
|
"x-cli": {
|
|
"flag": "--intent"
|
|
}
|
|
},
|
|
"companion": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
},
|
|
"description": "A companion capability and its payload, bound to the payload.",
|
|
"x-cli": {
|
|
"flag": "--companion"
|
|
}
|
|
},
|
|
"key": {
|
|
"type": "string",
|
|
"description": "The key that signs the operation's receipt: its name in the keystore (wai key list), or a key file; a key made for this run otherwise.",
|
|
"x-cli": {
|
|
"flag": "--key"
|
|
}
|
|
}
|
|
},
|
|
"required": [
|
|
"capability",
|
|
"payload"
|
|
],
|
|
"additionalProperties": false
|
|
},
|
|
"output": {
|
|
"type": "object",
|
|
"properties": {
|
|
"text": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"text"
|
|
]
|
|
},
|
|
"stream": null,
|
|
"since": "0.3.0",
|
|
"deprecated": null,
|
|
"receipt": true,
|
|
"needs": null,
|
|
"names": {
|
|
"cli": "wai envelope wrap",
|
|
"mcp": "envelope_wrap",
|
|
"c": "wai_envelope_wrap",
|
|
"rust": "wai::envelope::wrap",
|
|
"sdk": "wai.envelope.wrap"
|
|
}
|
|
},
|
|
{
|
|
"id": "envelope.unwrap",
|
|
"summary": "An envelope's capability and its checks, and with -o its payload or one component, exactly as wrapped",
|
|
"cli": "wai unwrap",
|
|
"aliases": [],
|
|
"usage": [
|
|
"wai unwrap <in.wai> [-o payload] [--component <i>] [--key <name>] extract any registered capability's bytes; with -o,",
|
|
" the payload's receipt"
|
|
],
|
|
"placement": "local",
|
|
"effect": "writes-project",
|
|
"dry_run": true,
|
|
"confirm": "when-replacing-an-unnamed-file",
|
|
"route": null,
|
|
"doors": {
|
|
"cli": true,
|
|
"mcp": false,
|
|
"http": false
|
|
},
|
|
"toolset": "core",
|
|
"stability": "stable",
|
|
"input": {
|
|
"type": "object",
|
|
"properties": {
|
|
"path": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "A .wai envelope.",
|
|
"x-cli": {
|
|
"positional": true
|
|
}
|
|
},
|
|
"out": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "Where the payload is written.",
|
|
"x-cli": {
|
|
"flag": "-o"
|
|
}
|
|
},
|
|
"component": {
|
|
"type": "integer",
|
|
"description": "A WAI2 component's index.",
|
|
"x-cli": {
|
|
"flag": "--component"
|
|
}
|
|
},
|
|
"key": {
|
|
"type": "string",
|
|
"description": "The key that signs the operation's receipt: its name in the keystore (wai key list), or a key file; a key made for this run otherwise.",
|
|
"x-cli": {
|
|
"flag": "--key"
|
|
}
|
|
}
|
|
},
|
|
"required": [
|
|
"path"
|
|
],
|
|
"additionalProperties": false
|
|
},
|
|
"output": {
|
|
"type": "object",
|
|
"properties": {
|
|
"text": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"text"
|
|
]
|
|
},
|
|
"stream": null,
|
|
"since": "0.3.0",
|
|
"deprecated": null,
|
|
"receipt": true,
|
|
"needs": null,
|
|
"names": {
|
|
"cli": "wai envelope unwrap",
|
|
"mcp": null,
|
|
"c": "wai_envelope_unwrap",
|
|
"rust": "wai::envelope::unwrap",
|
|
"sdk": "wai.envelope.unwrap"
|
|
}
|
|
},
|
|
{
|
|
"id": "media.encode",
|
|
"summary": "Encode a file with a codec this build holds, in an envelope; AVC and HEVC through the device's own encoders, with a signed record",
|
|
"cli": "wai encode",
|
|
"aliases": [],
|
|
"usage": [
|
|
"wai encode <codec> <input> [-o out.wai] [-q quality] codecs: png jpeg avif jxl jxl-lossless opus flac av1 av1-lossless zstd xz",
|
|
" a build with `floor` alone encodes png and zstd; the others need `codecs`",
|
|
" image codecs: .rgb (with .meta holding 'H W') or a PNG/JPEG file; audio: .f32 (raw mono float32)",
|
|
" with .meta holding the sample rate; video: packed RGB frames with .meta 'N H W fps_num fps_den';",
|
|
" text codecs: any file",
|
|
"wai encode avc|hevc <in.y4m> [-o out.wai] [--encoder auto|platform|va|gpu-driver|software] [--library <path>]",
|
|
" [--device <node|ordinal>] [--hardware yes|no] [--kbps <n>] [--size WxH] [--idr-every <frames> |",
|
|
" --idr-plan <plan.txt>] [--es <out>] [--record <out.json> --key <name|seed>] [--meter <counter> [--rounds <n>]]",
|
|
" (a build with `platform_encode`)"
|
|
],
|
|
"placement": "local",
|
|
"effect": "writes-project",
|
|
"dry_run": true,
|
|
"confirm": "when-replacing-an-unnamed-file",
|
|
"route": null,
|
|
"doors": {
|
|
"cli": true,
|
|
"mcp": false,
|
|
"http": false
|
|
},
|
|
"toolset": "core",
|
|
"stability": "stable",
|
|
"input": {
|
|
"type": "object",
|
|
"properties": {
|
|
"codec": {
|
|
"type": "string",
|
|
"description": "png, jpeg, avif, jxl, jxl-lossless, opus, flac, av1, av1-lossless, zstd, xz; or avc, hevc.",
|
|
"x-cli": {
|
|
"positional": true
|
|
}
|
|
},
|
|
"input": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "The file to encode.",
|
|
"x-cli": {
|
|
"positional": true
|
|
}
|
|
},
|
|
"out": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "The envelope (out.wai).",
|
|
"x-cli": {
|
|
"flag": "-o"
|
|
}
|
|
},
|
|
"quality": {
|
|
"type": "integer",
|
|
"description": "Quality, 1 to 100 (75).",
|
|
"x-cli": {
|
|
"flag": "-q"
|
|
}
|
|
}
|
|
},
|
|
"required": [
|
|
"codec",
|
|
"input"
|
|
],
|
|
"additionalProperties": false
|
|
},
|
|
"output": {
|
|
"type": "object",
|
|
"properties": {
|
|
"text": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"text"
|
|
]
|
|
},
|
|
"stream": null,
|
|
"since": "0.3.0",
|
|
"deprecated": null,
|
|
"receipt": true,
|
|
"needs": {
|
|
"any": [
|
|
"floor",
|
|
"codecs",
|
|
"platform_encode"
|
|
]
|
|
},
|
|
"names": {
|
|
"cli": "wai media encode",
|
|
"mcp": null,
|
|
"c": "wai_media_encode",
|
|
"rust": "wai::media::encode",
|
|
"sdk": "wai.media.encode"
|
|
}
|
|
},
|
|
{
|
|
"id": "media.decode",
|
|
"summary": "Decode an envelope through SPEC §4's dispatch to raw samples, with a .meta file beside them",
|
|
"cli": "wai decode",
|
|
"aliases": [],
|
|
"usage": [
|
|
"wai decode <in.wai> -o <output> [--key <name>] a build with `floor` decodes png, flac and zstd; `codecs` the rest;",
|
|
" the samples' receipt beside them, or in the project's .wai/receipts/"
|
|
],
|
|
"placement": "local",
|
|
"effect": "writes-project",
|
|
"dry_run": true,
|
|
"confirm": "when-replacing-an-unnamed-file",
|
|
"route": null,
|
|
"doors": {
|
|
"cli": true,
|
|
"mcp": false,
|
|
"http": false
|
|
},
|
|
"toolset": "core",
|
|
"stability": "stable",
|
|
"input": {
|
|
"type": "object",
|
|
"properties": {
|
|
"path": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "A .wai envelope.",
|
|
"x-cli": {
|
|
"positional": true
|
|
}
|
|
},
|
|
"out": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "The decoded samples.",
|
|
"x-cli": {
|
|
"flag": "-o"
|
|
}
|
|
},
|
|
"key": {
|
|
"type": "string",
|
|
"description": "The key that signs the operation's receipt: its name in the keystore (wai key list), or a key file; a key made for this run otherwise.",
|
|
"x-cli": {
|
|
"flag": "--key"
|
|
}
|
|
}
|
|
},
|
|
"required": [
|
|
"path",
|
|
"out"
|
|
],
|
|
"additionalProperties": false
|
|
},
|
|
"output": {
|
|
"type": "object",
|
|
"properties": {
|
|
"text": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"text"
|
|
]
|
|
},
|
|
"stream": null,
|
|
"since": "0.3.0",
|
|
"deprecated": null,
|
|
"receipt": true,
|
|
"needs": {
|
|
"any": [
|
|
"floor",
|
|
"codecs"
|
|
]
|
|
},
|
|
"names": {
|
|
"cli": "wai media decode",
|
|
"mcp": null,
|
|
"c": "wai_media_decode",
|
|
"rust": "wai::media::decode",
|
|
"sdk": "wai.media.decode"
|
|
}
|
|
},
|
|
{
|
|
"id": "media.generate",
|
|
"summary": "Make a wai.generate.spectral picture natively and print its SHA-256, or write its instruction object",
|
|
"cli": "wai generate",
|
|
"aliases": [],
|
|
"usage": [
|
|
"wai generate --model <json> (--prompt <s> --seed <u32> --steps <n> | --instr <object>) --size WxH -o <out.rgb> [--key <name>]",
|
|
" make a wai.generate.spectral picture (RGB8) and print its SHA-256, with its receipt and its origin claim",
|
|
" (extensions/synthesis.md §3.5); --sizes WxH,... --write-instr <object> writes the instruction object of form v0",
|
|
" (SPEC §5)"
|
|
],
|
|
"placement": "local",
|
|
"effect": "writes-project",
|
|
"dry_run": true,
|
|
"confirm": "when-replacing-an-unnamed-file",
|
|
"route": null,
|
|
"doors": {
|
|
"cli": true,
|
|
"mcp": false,
|
|
"http": false
|
|
},
|
|
"toolset": "core",
|
|
"stability": "stable",
|
|
"input": {
|
|
"type": "object",
|
|
"properties": {
|
|
"model": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "The model file.",
|
|
"x-cli": {
|
|
"flag": "--model"
|
|
}
|
|
},
|
|
"prompt": {
|
|
"type": "string",
|
|
"description": "The prompt.",
|
|
"x-cli": {
|
|
"flag": "--prompt"
|
|
}
|
|
},
|
|
"seed": {
|
|
"type": "integer",
|
|
"description": "The seed.",
|
|
"x-cli": {
|
|
"flag": "--seed"
|
|
}
|
|
},
|
|
"steps": {
|
|
"type": "integer",
|
|
"description": "The steps.",
|
|
"x-cli": {
|
|
"flag": "--steps"
|
|
}
|
|
},
|
|
"instr": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "An instruction object of form v0.",
|
|
"x-cli": {
|
|
"flag": "--instr"
|
|
}
|
|
},
|
|
"size": {
|
|
"type": "string",
|
|
"description": "WxH.",
|
|
"x-cli": {
|
|
"flag": "--size"
|
|
}
|
|
},
|
|
"out": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "The picture, RGB8.",
|
|
"x-cli": {
|
|
"flag": "-o"
|
|
}
|
|
},
|
|
"key": {
|
|
"type": "string",
|
|
"description": "The key that signs the receipt and the origin claim: its name in the keystore (wai key list), or a key file; a key made for this run otherwise.",
|
|
"x-cli": {
|
|
"flag": "--key"
|
|
}
|
|
}
|
|
},
|
|
"required": [
|
|
"model"
|
|
],
|
|
"additionalProperties": false
|
|
},
|
|
"output": {
|
|
"type": "object",
|
|
"description": "The picture's or instruction object's digests, as `wai generate --json` prints them, with its receipt and the picture's origin claim (null where the build writes none)"
|
|
},
|
|
"stream": null,
|
|
"since": "0.3.0",
|
|
"deprecated": null,
|
|
"receipt": true,
|
|
"needs": {
|
|
"all": [
|
|
"generate"
|
|
]
|
|
},
|
|
"names": {
|
|
"cli": "wai media generate",
|
|
"mcp": null,
|
|
"c": "wai_media_generate",
|
|
"rust": "wai::media::generate",
|
|
"sdk": "wai.media.generate"
|
|
}
|
|
},
|
|
{
|
|
"id": "media.inspect",
|
|
"summary": "What a file is, from its bytes alone: the formats they fit with the bytes that say so, its tracks, its protection, and measures where no format is recognised",
|
|
"cli": "wai identify",
|
|
"aliases": [],
|
|
"usage": [
|
|
"wai identify <file> [--json] any file, not only an envelope (extensions/media-identify.md); unknown stays unknown"
|
|
],
|
|
"placement": "local",
|
|
"effect": "reads",
|
|
"dry_run": false,
|
|
"confirm": "never",
|
|
"route": null,
|
|
"doors": {
|
|
"cli": true,
|
|
"mcp": true,
|
|
"http": false
|
|
},
|
|
"toolset": "core",
|
|
"stability": "stable",
|
|
"input": {
|
|
"type": "object",
|
|
"properties": {
|
|
"path": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "Any file.",
|
|
"x-cli": {
|
|
"positional": true
|
|
}
|
|
}
|
|
},
|
|
"required": [
|
|
"path"
|
|
],
|
|
"additionalProperties": false
|
|
},
|
|
"output": {
|
|
"type": "object",
|
|
"required": [
|
|
"format",
|
|
"size",
|
|
"verdict",
|
|
"candidates",
|
|
"probes_accepted",
|
|
"embedded",
|
|
"embedded_capped",
|
|
"measures"
|
|
],
|
|
"description": "The formats the bytes fit, each with the bytes that say so and how far they were followed; what a probe accepted; signatures found inside; and measures that hold whatever the bytes are"
|
|
},
|
|
"stream": null,
|
|
"since": "0.3.0",
|
|
"deprecated": null,
|
|
"receipt": false,
|
|
"needs": {
|
|
"all": [
|
|
"identify"
|
|
]
|
|
},
|
|
"names": {
|
|
"cli": "wai media inspect",
|
|
"mcp": "media_inspect",
|
|
"c": "wai_media_inspect",
|
|
"rust": "wai::media::inspect",
|
|
"sdk": "wai.media.inspect"
|
|
}
|
|
},
|
|
{
|
|
"id": "media.upscale",
|
|
"summary": "Upscale a PNG exactly, by an integer network under a pinned prior, with a signed record a verifier recomputes",
|
|
"cli": "wai upscale run",
|
|
"aliases": [],
|
|
"usage": [
|
|
"wai upscale run <in.png> --prior <p.wsr> [--derivation sr2|sr4] -o <out.png>",
|
|
" [--record <out.json> --envelope <in.wai> --key <name|seed>] [--issued-at <date-time>] [--json]",
|
|
" an 8-bit RGB PNG; --record signs what exact-upscale §7 recomputes from --envelope and the prior"
|
|
],
|
|
"placement": "local",
|
|
"effect": "writes-project",
|
|
"dry_run": true,
|
|
"confirm": "when-replacing-an-unnamed-file",
|
|
"route": null,
|
|
"doors": {
|
|
"cli": true,
|
|
"mcp": false,
|
|
"http": false
|
|
},
|
|
"toolset": "core",
|
|
"stability": "stable",
|
|
"input": {
|
|
"type": "object",
|
|
"properties": {
|
|
"path": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "An 8-bit RGB PNG.",
|
|
"x-cli": {
|
|
"positional": true
|
|
}
|
|
},
|
|
"prior": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "The WSR1 prior.",
|
|
"x-cli": {
|
|
"flag": "--prior"
|
|
}
|
|
},
|
|
"derivation": {
|
|
"type": "string",
|
|
"description": "sr2 (the default) or sr4.",
|
|
"x-cli": {
|
|
"flag": "--derivation"
|
|
}
|
|
},
|
|
"out": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "The picture, a PNG.",
|
|
"x-cli": {
|
|
"flag": "-o"
|
|
}
|
|
},
|
|
"record": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "The signed upscale record.",
|
|
"x-cli": {
|
|
"flag": "--record"
|
|
}
|
|
},
|
|
"envelope": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "The WAI1 of the input, which the record names.",
|
|
"x-cli": {
|
|
"flag": "--envelope"
|
|
}
|
|
},
|
|
"key": {
|
|
"type": "string",
|
|
"description": "The record's signing key: its name in the keystore (wai key list), 64 hexadecimal digits, or a file holding them.",
|
|
"x-cli": {
|
|
"flag": "--key"
|
|
}
|
|
}
|
|
},
|
|
"required": [
|
|
"path",
|
|
"prior",
|
|
"out"
|
|
],
|
|
"additionalProperties": false
|
|
},
|
|
"output": {
|
|
"type": "object",
|
|
"required": [
|
|
"width",
|
|
"height",
|
|
"subpixels",
|
|
"files"
|
|
],
|
|
"description": "What `wai upscale run` or `wai tonemap run` made: the subpixels it would bill, each file it wrote with its digest, and the record's link hash"
|
|
},
|
|
"stream": null,
|
|
"since": "0.3.0",
|
|
"deprecated": null,
|
|
"receipt": true,
|
|
"needs": {
|
|
"all": [
|
|
"exact_upscale"
|
|
]
|
|
},
|
|
"names": {
|
|
"cli": "wai media upscale",
|
|
"mcp": null,
|
|
"c": "wai_media_upscale",
|
|
"rust": "wai::media::upscale",
|
|
"sdk": "wai.media.upscale"
|
|
}
|
|
},
|
|
{
|
|
"id": "upscale.verify",
|
|
"summary": "An upscale record recomputed from its input and its prior, and the picture held to it",
|
|
"cli": "wai upscale verify",
|
|
"aliases": [],
|
|
"usage": [
|
|
"wai upscale verify <record.json> --envelope <in.wai> --prior <p.wsr> [--picture <out.png>]",
|
|
" the record's outcome as JSON (extensions/exact-upscale.md §7, under require-proof); exit 1 when it is refused"
|
|
],
|
|
"placement": "local",
|
|
"effect": "reads",
|
|
"dry_run": false,
|
|
"confirm": "never",
|
|
"route": null,
|
|
"doors": {
|
|
"cli": true,
|
|
"mcp": false,
|
|
"http": false
|
|
},
|
|
"toolset": "core",
|
|
"stability": "stable",
|
|
"input": {
|
|
"type": "object",
|
|
"properties": {
|
|
"record": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "The upscale record.",
|
|
"x-cli": {
|
|
"positional": true
|
|
}
|
|
},
|
|
"envelope": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "The WAI1 of the input, which the record names.",
|
|
"x-cli": {
|
|
"flag": "--envelope"
|
|
}
|
|
},
|
|
"prior": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "The WSR1 prior the record names.",
|
|
"x-cli": {
|
|
"flag": "--prior"
|
|
}
|
|
},
|
|
"picture": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "The picture: its samples are held to the record's output.",
|
|
"x-cli": {
|
|
"flag": "--picture"
|
|
}
|
|
}
|
|
},
|
|
"required": [
|
|
"record",
|
|
"envelope",
|
|
"prior"
|
|
],
|
|
"additionalProperties": false
|
|
},
|
|
"output": {
|
|
"type": "object",
|
|
"required": [
|
|
"outcome"
|
|
],
|
|
"description": "accept, with the record's link hash and the subpixels it states; or refuse, with the reason and where"
|
|
},
|
|
"stream": null,
|
|
"since": "0.3.0",
|
|
"deprecated": null,
|
|
"receipt": false,
|
|
"needs": {
|
|
"all": [
|
|
"exact_upscale"
|
|
]
|
|
},
|
|
"names": {
|
|
"cli": "wai upscale verify",
|
|
"mcp": null,
|
|
"c": "wai_upscale_verify",
|
|
"rust": "wai::upscale::verify",
|
|
"sdk": "wai.upscale.verify"
|
|
}
|
|
},
|
|
{
|
|
"id": "media.tonemap",
|
|
"summary": "Render a still's gain map exactly at the headrooms named, with a signed record a verifier recomputes",
|
|
"cli": "wai tonemap run",
|
|
"aliases": [],
|
|
"usage": [
|
|
"wai tonemap run <in.wai> --headrooms <h,h,...> --out <dir> [--input-class <class>]",
|
|
" [--record <out.json> --key <name|seed>] [--issued-at <date-time>] [--json]",
|
|
" a WAI2 of a PNG base and its gain map; a headroom is in 1/10000 of a stop; each rendition is RGB16"
|
|
],
|
|
"placement": "local",
|
|
"effect": "writes-project",
|
|
"dry_run": true,
|
|
"confirm": "when-replacing-an-unnamed-file",
|
|
"route": null,
|
|
"doors": {
|
|
"cli": true,
|
|
"mcp": false,
|
|
"http": false
|
|
},
|
|
"toolset": "core",
|
|
"stability": "stable",
|
|
"input": {
|
|
"type": "object",
|
|
"properties": {
|
|
"path": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "A WAI2 of a PNG base and its gain map.",
|
|
"x-cli": {
|
|
"positional": true
|
|
}
|
|
},
|
|
"headrooms": {
|
|
"type": "string",
|
|
"description": "The headrooms, in 1/10000 of a stop, joined by commas.",
|
|
"x-cli": {
|
|
"flag": "--headrooms"
|
|
}
|
|
},
|
|
"out": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "The directory the renditions are written in.",
|
|
"x-cli": {
|
|
"flag": "--out"
|
|
}
|
|
},
|
|
"input_class": {
|
|
"type": "string",
|
|
"description": "The input's class (captured).",
|
|
"x-cli": {
|
|
"flag": "--input-class"
|
|
}
|
|
},
|
|
"record": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "The signed rendition record.",
|
|
"x-cli": {
|
|
"flag": "--record"
|
|
}
|
|
},
|
|
"key": {
|
|
"type": "string",
|
|
"description": "The record's signing key: its name in the keystore (wai key list), 64 hexadecimal digits, or a file holding them.",
|
|
"x-cli": {
|
|
"flag": "--key"
|
|
}
|
|
}
|
|
},
|
|
"required": [
|
|
"path",
|
|
"headrooms",
|
|
"out"
|
|
],
|
|
"additionalProperties": false
|
|
},
|
|
"output": {
|
|
"type": "object",
|
|
"required": [
|
|
"width",
|
|
"height",
|
|
"subpixels",
|
|
"files"
|
|
],
|
|
"description": "What `wai upscale run` or `wai tonemap run` made: the subpixels it would bill, each file it wrote with its digest, and the record's link hash"
|
|
},
|
|
"stream": null,
|
|
"since": "0.3.0",
|
|
"deprecated": null,
|
|
"receipt": true,
|
|
"needs": {
|
|
"all": [
|
|
"exact_tonemap"
|
|
]
|
|
},
|
|
"names": {
|
|
"cli": "wai media tonemap",
|
|
"mcp": null,
|
|
"c": "wai_media_tonemap",
|
|
"rust": "wai::media::tonemap",
|
|
"sdk": "wai.media.tonemap"
|
|
}
|
|
},
|
|
{
|
|
"id": "tonemap.verify",
|
|
"summary": "A rendition record recomputed from its envelope, and the renditions held to it",
|
|
"cli": "wai tonemap verify",
|
|
"aliases": [],
|
|
"usage": [
|
|
"wai tonemap verify <record.json> --envelope <in.wai> [--renditions <dir>]",
|
|
" the record's outcome as JSON (extensions/exact-tonemap.md §8, under require-proof); exit 1 when it is refused"
|
|
],
|
|
"placement": "local",
|
|
"effect": "reads",
|
|
"dry_run": false,
|
|
"confirm": "never",
|
|
"route": null,
|
|
"doors": {
|
|
"cli": true,
|
|
"mcp": false,
|
|
"http": false
|
|
},
|
|
"toolset": "core",
|
|
"stability": "stable",
|
|
"input": {
|
|
"type": "object",
|
|
"properties": {
|
|
"record": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "The rendition record.",
|
|
"x-cli": {
|
|
"positional": true
|
|
}
|
|
},
|
|
"envelope": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "The WAI2 the record names.",
|
|
"x-cli": {
|
|
"flag": "--envelope"
|
|
}
|
|
},
|
|
"renditions": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "The directory `wai tonemap run` wrote: each rendition is held to its picture.",
|
|
"x-cli": {
|
|
"flag": "--renditions"
|
|
}
|
|
}
|
|
},
|
|
"required": [
|
|
"record",
|
|
"envelope"
|
|
],
|
|
"additionalProperties": false
|
|
},
|
|
"output": {
|
|
"type": "object",
|
|
"required": [
|
|
"outcome"
|
|
],
|
|
"description": "accept, with the record's link hash and the subpixels it states; or refuse, with the reason and where"
|
|
},
|
|
"stream": null,
|
|
"since": "0.3.0",
|
|
"deprecated": null,
|
|
"receipt": false,
|
|
"needs": {
|
|
"all": [
|
|
"exact_tonemap"
|
|
]
|
|
},
|
|
"names": {
|
|
"cli": "wai tonemap verify",
|
|
"mcp": null,
|
|
"c": "wai_tonemap_verify",
|
|
"rust": "wai::tonemap::verify",
|
|
"sdk": "wai.tonemap.verify"
|
|
}
|
|
},
|
|
{
|
|
"id": "score.build",
|
|
"summary": "A WSCR score from integer note fields",
|
|
"cli": "wai score build",
|
|
"aliases": [
|
|
"wai media score build"
|
|
],
|
|
"usage": [
|
|
"wai score build <notes.json> -o <out.wscr> a WSCR from integer note fields"
|
|
],
|
|
"placement": "local",
|
|
"effect": "writes-project",
|
|
"dry_run": true,
|
|
"confirm": "when-replacing-an-unnamed-file",
|
|
"route": null,
|
|
"doors": {
|
|
"cli": true,
|
|
"mcp": false,
|
|
"http": false
|
|
},
|
|
"toolset": "core",
|
|
"stability": "stable",
|
|
"input": {
|
|
"type": "object",
|
|
"properties": {
|
|
"notes": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "The note fields, JSON.",
|
|
"x-cli": {
|
|
"positional": true
|
|
}
|
|
},
|
|
"out": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "The score.",
|
|
"x-cli": {
|
|
"flag": "-o"
|
|
}
|
|
}
|
|
},
|
|
"required": [
|
|
"notes",
|
|
"out"
|
|
],
|
|
"additionalProperties": false
|
|
},
|
|
"output": {
|
|
"type": "object",
|
|
"description": "The score's digests, as `wai score build|render --json` print them"
|
|
},
|
|
"stream": null,
|
|
"since": "0.3.0",
|
|
"deprecated": null,
|
|
"receipt": false,
|
|
"needs": {
|
|
"all": [
|
|
"score"
|
|
]
|
|
},
|
|
"names": {
|
|
"cli": "wai score build",
|
|
"mcp": null,
|
|
"c": "wai_score_build",
|
|
"rust": "wai::score::build",
|
|
"sdk": "wai.score.build"
|
|
}
|
|
},
|
|
{
|
|
"id": "score.decode",
|
|
"summary": "A score's reference mixdown and its digests (pcm_sha256, mixdown_blake3, score_hash)",
|
|
"cli": "wai score render",
|
|
"aliases": [
|
|
"wai media score render"
|
|
],
|
|
"usage": [
|
|
"wai score render <in.wscr> [--pcm <out.s16>] the reference mixdown and its digests"
|
|
],
|
|
"placement": "local",
|
|
"effect": "writes-project",
|
|
"dry_run": true,
|
|
"confirm": "when-replacing-an-unnamed-file",
|
|
"route": null,
|
|
"doors": {
|
|
"cli": true,
|
|
"mcp": false,
|
|
"http": false
|
|
},
|
|
"toolset": "core",
|
|
"stability": "stable",
|
|
"input": {
|
|
"type": "object",
|
|
"properties": {
|
|
"score": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "A WSCR score.",
|
|
"x-cli": {
|
|
"positional": true
|
|
}
|
|
},
|
|
"pcm": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "Where the mixdown is written.",
|
|
"x-cli": {
|
|
"flag": "--pcm"
|
|
}
|
|
}
|
|
},
|
|
"required": [
|
|
"score"
|
|
],
|
|
"additionalProperties": false
|
|
},
|
|
"output": {
|
|
"type": "object",
|
|
"description": "The score's digests, as `wai score build|render --json` print them"
|
|
},
|
|
"stream": null,
|
|
"since": "0.3.0",
|
|
"deprecated": null,
|
|
"receipt": false,
|
|
"needs": {
|
|
"all": [
|
|
"score"
|
|
]
|
|
},
|
|
"names": {
|
|
"cli": "wai score decode",
|
|
"mcp": null,
|
|
"c": "wai_score_decode",
|
|
"rust": "wai::score::decode",
|
|
"sdk": "wai.score.decode"
|
|
}
|
|
},
|
|
{
|
|
"id": "encoder.list",
|
|
"summary": "What each encoder interface offers on this device, for AVC and HEVC",
|
|
"cli": "wai encoders",
|
|
"aliases": [],
|
|
"usage": [
|
|
"wai encoders [--library <path>] what each encoder interface offers here"
|
|
],
|
|
"placement": "local",
|
|
"effect": "reads",
|
|
"dry_run": false,
|
|
"confirm": "never",
|
|
"route": null,
|
|
"doors": {
|
|
"cli": true,
|
|
"mcp": false,
|
|
"http": false
|
|
},
|
|
"toolset": "core",
|
|
"stability": "preview",
|
|
"input": {
|
|
"type": "object",
|
|
"properties": {
|
|
"library": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "A software encoder library.",
|
|
"x-cli": {
|
|
"flag": "--library"
|
|
}
|
|
}
|
|
},
|
|
"required": [],
|
|
"additionalProperties": false
|
|
},
|
|
"output": {
|
|
"type": "object",
|
|
"properties": {
|
|
"text": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"text"
|
|
]
|
|
},
|
|
"stream": null,
|
|
"since": "0.3.0",
|
|
"deprecated": null,
|
|
"receipt": false,
|
|
"needs": {
|
|
"all": [
|
|
"platform_encode"
|
|
]
|
|
},
|
|
"names": {
|
|
"cli": "wai encoder list",
|
|
"mcp": null,
|
|
"c": "wai_encoder_list",
|
|
"rust": "wai::encoder::list",
|
|
"sdk": "wai.encoder.list"
|
|
}
|
|
},
|
|
{
|
|
"id": "encoder.verify",
|
|
"summary": "A signed encode record checked, against the stream and its source where given",
|
|
"cli": "wai encode-record verify",
|
|
"aliases": [],
|
|
"usage": [
|
|
"wai encode-record verify <record.json> [--stream <es>] [--source <in.y4m>]"
|
|
],
|
|
"placement": "local",
|
|
"effect": "reads",
|
|
"dry_run": false,
|
|
"confirm": "never",
|
|
"route": null,
|
|
"doors": {
|
|
"cli": true,
|
|
"mcp": false,
|
|
"http": false
|
|
},
|
|
"toolset": "core",
|
|
"stability": "preview",
|
|
"input": {
|
|
"type": "object",
|
|
"properties": {
|
|
"record": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "The signed record.",
|
|
"x-cli": {
|
|
"positional": true
|
|
}
|
|
},
|
|
"stream": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "The elementary stream it names.",
|
|
"x-cli": {
|
|
"flag": "--stream"
|
|
}
|
|
},
|
|
"source": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "The source it names.",
|
|
"x-cli": {
|
|
"flag": "--source"
|
|
}
|
|
}
|
|
},
|
|
"required": [
|
|
"record"
|
|
],
|
|
"additionalProperties": false
|
|
},
|
|
"output": {
|
|
"type": "object",
|
|
"properties": {
|
|
"text": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"text"
|
|
]
|
|
},
|
|
"stream": null,
|
|
"since": "0.3.0",
|
|
"deprecated": null,
|
|
"receipt": false,
|
|
"needs": {
|
|
"all": [
|
|
"platform_encode"
|
|
]
|
|
},
|
|
"names": {
|
|
"cli": "wai encoder verify",
|
|
"mcp": null,
|
|
"c": "wai_encoder_verify",
|
|
"rust": "wai::encoder::verify",
|
|
"sdk": "wai.encoder.verify"
|
|
}
|
|
},
|
|
{
|
|
"id": "package.build",
|
|
"summary": "A package packed by the reference packager wai-pack from a policy, a source per component and a supplied floor, with its signed package receipt",
|
|
"cli": "wai package build",
|
|
"aliases": [],
|
|
"usage": [
|
|
"wai package build --policy <policy.toml> --out <dir> --key <seed.hex> [--source <id>=<file>]... [--floor <dir>]",
|
|
" [--signer-id <id>] [--meter none|model:<mW>] [--packer <wai-pack>] [wai-pack pack's other flags]",
|
|
" the reference packager's pack (extensions/packaging.md): the policy's components packed into <dir>, new or empty,",
|
|
" with the package receipt (package.receipt.json); the packer is --packer, $WAI_PACK_BIN, wai-pack beside wai,",
|
|
" or wai-pack on PATH"
|
|
],
|
|
"placement": "local",
|
|
"effect": "writes-project",
|
|
"dry_run": true,
|
|
"confirm": "when-replacing-an-unnamed-file",
|
|
"route": null,
|
|
"doors": {
|
|
"cli": true,
|
|
"mcp": false,
|
|
"http": false
|
|
},
|
|
"toolset": "core",
|
|
"stability": "preview",
|
|
"input": {
|
|
"type": "object",
|
|
"properties": {
|
|
"policy": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "The packaging policy (extensions/packaging.md §3).",
|
|
"x-cli": {
|
|
"flag": "--policy"
|
|
}
|
|
},
|
|
"out": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "A new or empty directory, written with the package.",
|
|
"x-cli": {
|
|
"flag": "--out"
|
|
}
|
|
},
|
|
"key": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "The packager's signing key: a 32-byte seed, in hexadecimal.",
|
|
"x-cli": {
|
|
"flag": "--key"
|
|
}
|
|
},
|
|
"source": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
},
|
|
"description": "A component's source, <id>=<file>; each component's own by default.",
|
|
"x-cli": {
|
|
"flag": "--source"
|
|
}
|
|
},
|
|
"floor": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "A supplied floor's directory (floor/ beside the policy by default).",
|
|
"x-cli": {
|
|
"flag": "--floor"
|
|
}
|
|
},
|
|
"signer_id": {
|
|
"type": "string",
|
|
"description": "The receipt's signer id (the key's did:key by default).",
|
|
"x-cli": {
|
|
"flag": "--signer-id"
|
|
}
|
|
},
|
|
"meter": {
|
|
"type": "string",
|
|
"description": "none, or model:<milliwatts>: the meter of the receipt's figure.",
|
|
"x-cli": {
|
|
"flag": "--meter"
|
|
}
|
|
},
|
|
"packer": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "The packer's binary (wai-pack).",
|
|
"x-cli": {
|
|
"flag": "--packer"
|
|
}
|
|
}
|
|
},
|
|
"required": [
|
|
"policy",
|
|
"out",
|
|
"key"
|
|
],
|
|
"additionalProperties": false
|
|
},
|
|
"output": {
|
|
"type": "object",
|
|
"properties": {
|
|
"text": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"text"
|
|
]
|
|
},
|
|
"stream": null,
|
|
"since": "0.3.0",
|
|
"deprecated": null,
|
|
"receipt": true,
|
|
"needs": null,
|
|
"names": {
|
|
"cli": "wai package build",
|
|
"mcp": null,
|
|
"c": "wai_package_build",
|
|
"rust": "wai::package::build",
|
|
"sdk": "wai.package.build"
|
|
}
|
|
},
|
|
{
|
|
"id": "package.verify",
|
|
"summary": "A package verified by the reference packager wai-pack: every reason it is refused, or its counts and pack digest",
|
|
"cli": "wai package verify",
|
|
"aliases": [],
|
|
"usage": [
|
|
"wai package verify <dir> [--parent <dir>] [--packer <wai-pack>] the reference packager's verify",
|
|
" (extensions/packaging.md §9): the package's receipt, stage indexes, objects and floor; with --parent, a re-pack against",
|
|
" the package its receipt names; exit 1 when refused"
|
|
],
|
|
"placement": "local",
|
|
"effect": "reads",
|
|
"dry_run": false,
|
|
"confirm": "never",
|
|
"route": null,
|
|
"doors": {
|
|
"cli": true,
|
|
"mcp": false,
|
|
"http": false
|
|
},
|
|
"toolset": "core",
|
|
"stability": "preview",
|
|
"input": {
|
|
"type": "object",
|
|
"properties": {
|
|
"dir": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "The package's directory.",
|
|
"x-cli": {
|
|
"positional": true
|
|
}
|
|
},
|
|
"parent": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "The package a re-pack's receipt names.",
|
|
"x-cli": {
|
|
"flag": "--parent"
|
|
}
|
|
},
|
|
"packer": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "The packer's binary (wai-pack).",
|
|
"x-cli": {
|
|
"flag": "--packer"
|
|
}
|
|
}
|
|
},
|
|
"required": [
|
|
"dir"
|
|
],
|
|
"additionalProperties": false
|
|
},
|
|
"output": {
|
|
"type": "object",
|
|
"properties": {
|
|
"text": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"text"
|
|
]
|
|
},
|
|
"stream": null,
|
|
"since": "0.3.0",
|
|
"deprecated": null,
|
|
"receipt": false,
|
|
"needs": null,
|
|
"names": {
|
|
"cli": "wai package verify",
|
|
"mcp": null,
|
|
"c": "wai_package_verify",
|
|
"rust": "wai::package::verify",
|
|
"sdk": "wai.package.verify"
|
|
}
|
|
},
|
|
{
|
|
"id": "registry.list",
|
|
"summary": "Every registered capability with its fidelity, licence class, replicate class and role, and whether this build decodes it",
|
|
"cli": "wai capabilities",
|
|
"aliases": [],
|
|
"usage": [
|
|
"wai capabilities the registered capabilities, their tier, licence, replicate class and role"
|
|
],
|
|
"placement": "local",
|
|
"effect": "reads",
|
|
"dry_run": false,
|
|
"confirm": "never",
|
|
"route": null,
|
|
"doors": {
|
|
"cli": true,
|
|
"mcp": true,
|
|
"http": false
|
|
},
|
|
"toolset": "core",
|
|
"stability": "stable",
|
|
"input": {
|
|
"type": "object",
|
|
"properties": {},
|
|
"required": [],
|
|
"additionalProperties": false
|
|
},
|
|
"output": {
|
|
"type": "object",
|
|
"properties": {
|
|
"text": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"text"
|
|
]
|
|
},
|
|
"stream": null,
|
|
"since": "0.3.0",
|
|
"deprecated": null,
|
|
"receipt": false,
|
|
"needs": null,
|
|
"names": {
|
|
"cli": "wai registry list",
|
|
"mcp": "registry_list",
|
|
"c": "wai_registry_list",
|
|
"rust": "wai::registry::list",
|
|
"sdk": "wai.registry.list"
|
|
}
|
|
},
|
|
{
|
|
"id": "registry.export",
|
|
"summary": "Write, or with --check compare, the registry's machine-readable export and the generated table of REGISTRY.md",
|
|
"cli": "wai registry export",
|
|
"aliases": [],
|
|
"usage": [
|
|
"wai registry export [--root <wai-dir>] [--check] write (or compare) registry/capabilities.json, its",
|
|
" schema, vocab/v2.* and the generated table of REGISTRY.md"
|
|
],
|
|
"placement": "local",
|
|
"effect": "writes-project",
|
|
"dry_run": true,
|
|
"confirm": "when-replacing-an-unnamed-file",
|
|
"route": null,
|
|
"doors": {
|
|
"cli": true,
|
|
"mcp": false,
|
|
"http": false
|
|
},
|
|
"toolset": "maintainer",
|
|
"stability": "stable",
|
|
"input": {
|
|
"type": "object",
|
|
"properties": {
|
|
"root": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "The wai/ directory.",
|
|
"x-cli": {
|
|
"flag": "--root"
|
|
}
|
|
},
|
|
"check": {
|
|
"type": "boolean",
|
|
"description": "Compare, write nothing.",
|
|
"x-cli": {
|
|
"flag": "--check"
|
|
}
|
|
}
|
|
},
|
|
"required": [],
|
|
"additionalProperties": false
|
|
},
|
|
"output": {
|
|
"type": "object",
|
|
"properties": {
|
|
"text": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"text"
|
|
]
|
|
},
|
|
"stream": null,
|
|
"since": "0.3.0",
|
|
"deprecated": null,
|
|
"receipt": false,
|
|
"needs": null,
|
|
"names": {
|
|
"cli": "wai registry export",
|
|
"mcp": null,
|
|
"c": "wai_registry_export",
|
|
"rust": "wai::registry::export",
|
|
"sdk": "wai.registry.export"
|
|
}
|
|
},
|
|
{
|
|
"id": "prior.list",
|
|
"summary": "The listing of a parameter set (wai.prior.set) on stdout, and its pin on stderr",
|
|
"cli": "wai prior-set",
|
|
"aliases": [],
|
|
"usage": [
|
|
"wai prior-set <root> print the listing of a parameter set (wai.prior.set) and its pin"
|
|
],
|
|
"placement": "local",
|
|
"effect": "reads",
|
|
"dry_run": false,
|
|
"confirm": "never",
|
|
"route": null,
|
|
"doors": {
|
|
"cli": true,
|
|
"mcp": false,
|
|
"http": false
|
|
},
|
|
"toolset": "core",
|
|
"stability": "stable",
|
|
"input": {
|
|
"type": "object",
|
|
"properties": {
|
|
"root": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "The parameter set's directory.",
|
|
"x-cli": {
|
|
"positional": true
|
|
}
|
|
}
|
|
},
|
|
"required": [
|
|
"root"
|
|
],
|
|
"additionalProperties": false
|
|
},
|
|
"output": {
|
|
"type": "object",
|
|
"properties": {
|
|
"text": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"text"
|
|
]
|
|
},
|
|
"stream": null,
|
|
"since": "0.3.0",
|
|
"deprecated": null,
|
|
"receipt": false,
|
|
"needs": null,
|
|
"names": {
|
|
"cli": "wai prior list",
|
|
"mcp": null,
|
|
"c": "wai_prior_list",
|
|
"rust": "wai::prior::list",
|
|
"sdk": "wai.prior.list"
|
|
}
|
|
},
|
|
{
|
|
"id": "prior.fetch",
|
|
"summary": "A parameter set fetched by its pin from set roots (http-delivery §8.7), each response held only when its SHA-256 is the digest asked for, and written to --out",
|
|
"cli": "wai prior fetch",
|
|
"aliases": [],
|
|
"usage": [
|
|
"wai prior fetch <sha256> --out PATH [--form F] [--root <https://.../>]... [--hint FILE] [--origin https://HOST] [--max-bytes N]",
|
|
" the set of that SHA-256 asked of each set root in order (the roots given, a location hint's, then the origin's",
|
|
" /.well-known/wai-sets/), a response's bytes held only when their digest is the pin's; a set of the form",
|
|
" wai.prior.set (a listing) is written as a directory of its files, each fetched and checked by its own digest,",
|
|
" anything else as one file. The hint is a WAI multivariant playlist (.m3u8) or a catalog's wai_priors entry",
|
|
" (JSON). Exit 1 when no root holds it, with every request and what came of it; exit 6 when no root answered"
|
|
],
|
|
"placement": "client",
|
|
"effect": "writes-project",
|
|
"dry_run": true,
|
|
"confirm": "when-replacing-an-unnamed-file",
|
|
"route": null,
|
|
"doors": {
|
|
"cli": true,
|
|
"mcp": false,
|
|
"http": false
|
|
},
|
|
"toolset": "core",
|
|
"stability": "preview",
|
|
"input": {
|
|
"type": "object",
|
|
"properties": {
|
|
"sha256": {
|
|
"type": "string",
|
|
"description": "The pin's digest: 64 lowercase hexadecimal digits.",
|
|
"x-cli": {
|
|
"positional": true
|
|
}
|
|
},
|
|
"out": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "Where the set is written: a new or empty directory for a listing, a file otherwise.",
|
|
"x-cli": {
|
|
"flag": "--out"
|
|
}
|
|
},
|
|
"form": {
|
|
"type": "string",
|
|
"description": "The pin's form (wai.prior.set for a listing; a one-file set otherwise).",
|
|
"x-cli": {
|
|
"flag": "--form"
|
|
}
|
|
},
|
|
"root": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
},
|
|
"description": "A set root to ask, https:// with a path ending in /; repeated, in order.",
|
|
"x-cli": {
|
|
"flag": "--root"
|
|
}
|
|
},
|
|
"hint": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "A location hint: a WAI multivariant playlist, or a catalog's wai_priors entry as JSON.",
|
|
"x-cli": {
|
|
"flag": "--hint"
|
|
}
|
|
},
|
|
"origin": {
|
|
"type": "string",
|
|
"description": "An https:// origin whose /.well-known/wai-sets/ is asked last.",
|
|
"x-cli": {
|
|
"flag": "--origin"
|
|
}
|
|
},
|
|
"max_bytes": {
|
|
"type": "integer",
|
|
"description": "The most bytes read of each response (256 MiB).",
|
|
"x-cli": {
|
|
"flag": "--max-bytes"
|
|
}
|
|
}
|
|
},
|
|
"required": [
|
|
"sha256",
|
|
"out"
|
|
],
|
|
"additionalProperties": false
|
|
},
|
|
"output": {
|
|
"type": "object",
|
|
"required": [
|
|
"sha256",
|
|
"form",
|
|
"out",
|
|
"files",
|
|
"attempts"
|
|
],
|
|
"description": "The pin's digest and form, where the set was written, each file of it with its path and SHA-256, its usage statement where it binds one, and every request sent with what came of it (held, or the reason http-delivery §8.7 gives)"
|
|
},
|
|
"stream": null,
|
|
"since": "0.6.0",
|
|
"deprecated": null,
|
|
"receipt": false,
|
|
"needs": {
|
|
"all": [
|
|
"prior_carriage",
|
|
"cli_tls"
|
|
]
|
|
},
|
|
"names": {
|
|
"cli": "wai prior fetch",
|
|
"mcp": null,
|
|
"c": "wai_prior_fetch",
|
|
"rust": "wai::prior::fetch",
|
|
"sdk": "wai.prior.fetch"
|
|
}
|
|
},
|
|
{
|
|
"id": "prior.verify",
|
|
"summary": "Whether a parameter set is the one a pin names: a directory's listing (wai.prior.set), or a file's bytes, and its SHA-256 against the pin's",
|
|
"cli": "wai prior verify",
|
|
"aliases": [],
|
|
"usage": [
|
|
"wai prior verify <path> --sha256 <64 hex> [--form F] a directory read as a set of the form wai.prior.set (its listing,",
|
|
" as wai prior-set prints it) or a file as its bytes, its SHA-256 held to the pin's. Exit 1 when they differ"
|
|
],
|
|
"placement": "local",
|
|
"effect": "reads",
|
|
"dry_run": false,
|
|
"confirm": "never",
|
|
"route": null,
|
|
"doors": {
|
|
"cli": true,
|
|
"mcp": false,
|
|
"http": false
|
|
},
|
|
"toolset": "core",
|
|
"stability": "preview",
|
|
"input": {
|
|
"type": "object",
|
|
"properties": {
|
|
"path": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "The set: a directory (a listing's files), or a file.",
|
|
"x-cli": {
|
|
"positional": true
|
|
}
|
|
},
|
|
"sha256": {
|
|
"type": "string",
|
|
"description": "The pin's digest: 64 lowercase hexadecimal digits.",
|
|
"x-cli": {
|
|
"flag": "--sha256"
|
|
}
|
|
},
|
|
"form": {
|
|
"type": "string",
|
|
"description": "The pin's form: a directory is read as wai.prior.set and refused under another; a file is read as its bytes.",
|
|
"x-cli": {
|
|
"flag": "--form"
|
|
}
|
|
}
|
|
},
|
|
"required": [
|
|
"path",
|
|
"sha256"
|
|
],
|
|
"additionalProperties": false
|
|
},
|
|
"output": {
|
|
"type": "object",
|
|
"required": [
|
|
"path",
|
|
"form",
|
|
"pin",
|
|
"sha256",
|
|
"held"
|
|
],
|
|
"properties": {
|
|
"held": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
"description": "The path checked, the form it was read as (wai.prior.set for a directory, its listing), the pin's digest and the one computed here, and whether they are the same"
|
|
},
|
|
"stream": null,
|
|
"since": "0.6.0",
|
|
"deprecated": null,
|
|
"receipt": false,
|
|
"needs": null,
|
|
"names": {
|
|
"cli": "wai prior verify",
|
|
"mcp": null,
|
|
"c": "wai_prior_verify",
|
|
"rust": "wai::prior::verify",
|
|
"sdk": "wai.prior.verify"
|
|
}
|
|
},
|
|
{
|
|
"id": "stage.encode",
|
|
"summary": "A refinement layer over a base and the layers below it, toward a target",
|
|
"cli": "wai stage refine",
|
|
"aliases": [],
|
|
"usage": [
|
|
"wai stage refine --base <b.wai> [--on <L.wai>]... --toward <file> --q N [--predictor identity|up2|rate:NUM/DEN]",
|
|
" [--span F:C] [--out-dims D0,D1,D2] [--max-symbols N] [--table-per-unit] -o L.wai"
|
|
],
|
|
"placement": "local",
|
|
"effect": "writes-project",
|
|
"dry_run": true,
|
|
"confirm": "when-replacing-an-unnamed-file",
|
|
"route": null,
|
|
"doors": {
|
|
"cli": true,
|
|
"mcp": false,
|
|
"http": false
|
|
},
|
|
"toolset": "core",
|
|
"stability": "preview",
|
|
"input": {
|
|
"type": "object",
|
|
"properties": {
|
|
"base": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "The base envelope.",
|
|
"x-cli": {
|
|
"flag": "--base"
|
|
}
|
|
},
|
|
"toward": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "The samples the layer refines toward (--target, deprecated, is the same).",
|
|
"x-cli": {
|
|
"flag": "--toward",
|
|
"aliases": [
|
|
{
|
|
"flag": "--target",
|
|
"deprecated": {
|
|
"since": "0.5.0",
|
|
"use_instead": "--toward"
|
|
}
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"q": {
|
|
"type": "integer",
|
|
"description": "The quantiser.",
|
|
"x-cli": {
|
|
"flag": "--q"
|
|
}
|
|
},
|
|
"out": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "The layer.",
|
|
"x-cli": {
|
|
"flag": "-o"
|
|
}
|
|
}
|
|
},
|
|
"required": [
|
|
"base",
|
|
"toward",
|
|
"q",
|
|
"out"
|
|
],
|
|
"additionalProperties": false
|
|
},
|
|
"output": {
|
|
"type": "object",
|
|
"properties": {
|
|
"text": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"text"
|
|
]
|
|
},
|
|
"stream": null,
|
|
"since": "0.3.0",
|
|
"deprecated": null,
|
|
"receipt": false,
|
|
"needs": {
|
|
"all": [
|
|
"staged",
|
|
"video_int",
|
|
"audio_int",
|
|
"splat_int"
|
|
]
|
|
},
|
|
"names": {
|
|
"cli": "wai stage encode",
|
|
"mcp": null,
|
|
"c": "wai_stage_encode",
|
|
"rust": "wai::stage::encode",
|
|
"sdk": "wai.stage.encode"
|
|
}
|
|
},
|
|
{
|
|
"id": "stage.decode",
|
|
"summary": "Envelopes taken in order: each layer offered, each base decoded and refined, with each report and the units",
|
|
"cli": "wai stage apply",
|
|
"aliases": [],
|
|
"usage": [
|
|
"wai stage apply <envelope>... each layer offered, a base decoded (SPEC §4) and refined; the reports and units, or a JSON trace"
|
|
],
|
|
"placement": "local",
|
|
"effect": "reads",
|
|
"dry_run": false,
|
|
"confirm": "never",
|
|
"route": null,
|
|
"doors": {
|
|
"cli": true,
|
|
"mcp": false,
|
|
"http": false
|
|
},
|
|
"toolset": "core",
|
|
"stability": "preview",
|
|
"input": {
|
|
"type": "object",
|
|
"properties": {
|
|
"envelopes": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
},
|
|
"description": "The base, then its layers.",
|
|
"x-cli": {
|
|
"positional": true
|
|
}
|
|
}
|
|
},
|
|
"required": [
|
|
"envelopes"
|
|
],
|
|
"additionalProperties": false
|
|
},
|
|
"output": {
|
|
"description": "The trace of every stage reached, as `wai stage apply --json` prints it"
|
|
},
|
|
"stream": null,
|
|
"since": "0.3.0",
|
|
"deprecated": null,
|
|
"receipt": false,
|
|
"needs": {
|
|
"all": [
|
|
"staged",
|
|
"video_int",
|
|
"audio_int",
|
|
"splat_int"
|
|
]
|
|
},
|
|
"names": {
|
|
"cli": "wai stage decode",
|
|
"mcp": null,
|
|
"c": "wai_stage_decode",
|
|
"rust": "wai::stage::decode",
|
|
"sdk": "wai.stage.decode"
|
|
}
|
|
},
|
|
{
|
|
"id": "stage.build",
|
|
"summary": "A wai.video.int_motion base of N frames of RGB8 (WIV1, keyframe 0, zero motion)",
|
|
"cli": "wai stage base",
|
|
"aliases": [],
|
|
"usage": [
|
|
"wai stage base --frames <file> --dims N,H,W --q Q -o base.wai"
|
|
],
|
|
"placement": "local",
|
|
"effect": "writes-project",
|
|
"dry_run": true,
|
|
"confirm": "when-replacing-an-unnamed-file",
|
|
"route": null,
|
|
"doors": {
|
|
"cli": true,
|
|
"mcp": false,
|
|
"http": false
|
|
},
|
|
"toolset": "core",
|
|
"stability": "preview",
|
|
"input": {
|
|
"type": "object",
|
|
"properties": {
|
|
"frames": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "The frames, packed RGB8.",
|
|
"x-cli": {
|
|
"flag": "--frames"
|
|
}
|
|
},
|
|
"dims": {
|
|
"type": "string",
|
|
"description": "N,H,W.",
|
|
"x-cli": {
|
|
"flag": "--dims"
|
|
}
|
|
},
|
|
"q": {
|
|
"type": "integer",
|
|
"description": "The quantiser.",
|
|
"x-cli": {
|
|
"flag": "--q"
|
|
}
|
|
},
|
|
"out": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "The base envelope.",
|
|
"x-cli": {
|
|
"flag": "-o"
|
|
}
|
|
}
|
|
},
|
|
"required": [
|
|
"frames",
|
|
"dims",
|
|
"q",
|
|
"out"
|
|
],
|
|
"additionalProperties": false
|
|
},
|
|
"output": {
|
|
"type": "object",
|
|
"properties": {
|
|
"text": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"text"
|
|
]
|
|
},
|
|
"stream": null,
|
|
"since": "0.3.0",
|
|
"deprecated": null,
|
|
"receipt": false,
|
|
"needs": {
|
|
"all": [
|
|
"staged",
|
|
"video_int",
|
|
"audio_int",
|
|
"splat_int"
|
|
]
|
|
},
|
|
"names": {
|
|
"cli": "wai stage build",
|
|
"mcp": null,
|
|
"c": "wai_stage_build",
|
|
"rust": "wai::stage::build",
|
|
"sdk": "wai.stage.build"
|
|
}
|
|
},
|
|
{
|
|
"id": "stage.inspect",
|
|
"summary": "A refinement layer's refines, its WIR1 header and its declared cost",
|
|
"cli": "wai stage inspect",
|
|
"aliases": [],
|
|
"usage": [
|
|
"wai stage inspect <L.wai>"
|
|
],
|
|
"placement": "local",
|
|
"effect": "reads",
|
|
"dry_run": false,
|
|
"confirm": "never",
|
|
"route": null,
|
|
"doors": {
|
|
"cli": true,
|
|
"mcp": false,
|
|
"http": false
|
|
},
|
|
"toolset": "core",
|
|
"stability": "preview",
|
|
"input": {
|
|
"type": "object",
|
|
"properties": {
|
|
"layer": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "A layer envelope.",
|
|
"x-cli": {
|
|
"positional": true
|
|
}
|
|
}
|
|
},
|
|
"required": [
|
|
"layer"
|
|
],
|
|
"additionalProperties": false
|
|
},
|
|
"output": {
|
|
"type": "object",
|
|
"properties": {
|
|
"text": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"text"
|
|
]
|
|
},
|
|
"stream": null,
|
|
"since": "0.3.0",
|
|
"deprecated": null,
|
|
"receipt": false,
|
|
"needs": {
|
|
"all": [
|
|
"staged",
|
|
"video_int",
|
|
"audio_int",
|
|
"splat_int"
|
|
]
|
|
},
|
|
"names": {
|
|
"cli": "wai stage inspect",
|
|
"mcp": null,
|
|
"c": "wai_stage_inspect",
|
|
"rust": "wai::stage::inspect",
|
|
"sdk": "wai.stage.inspect"
|
|
}
|
|
},
|
|
{
|
|
"id": "stage.wrap",
|
|
"summary": "WAI1 envelopes packed into one WAI2, their manifests verbatim",
|
|
"cli": "wai stage pack",
|
|
"aliases": [],
|
|
"usage": [
|
|
"wai stage pack <base.wai> <L.wai>... -o x.wai"
|
|
],
|
|
"placement": "local",
|
|
"effect": "writes-project",
|
|
"dry_run": true,
|
|
"confirm": "when-replacing-an-unnamed-file",
|
|
"route": null,
|
|
"doors": {
|
|
"cli": true,
|
|
"mcp": false,
|
|
"http": false
|
|
},
|
|
"toolset": "core",
|
|
"stability": "preview",
|
|
"input": {
|
|
"type": "object",
|
|
"properties": {
|
|
"envelopes": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
},
|
|
"description": "The base, then its layers.",
|
|
"x-cli": {
|
|
"positional": true
|
|
}
|
|
},
|
|
"out": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "The WAI2 envelope.",
|
|
"x-cli": {
|
|
"flag": "-o"
|
|
}
|
|
}
|
|
},
|
|
"required": [
|
|
"envelopes",
|
|
"out"
|
|
],
|
|
"additionalProperties": false
|
|
},
|
|
"output": {
|
|
"type": "object",
|
|
"properties": {
|
|
"text": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"text"
|
|
]
|
|
},
|
|
"stream": null,
|
|
"since": "0.3.0",
|
|
"deprecated": null,
|
|
"receipt": false,
|
|
"needs": {
|
|
"all": [
|
|
"staged",
|
|
"video_int",
|
|
"audio_int",
|
|
"splat_int"
|
|
]
|
|
},
|
|
"names": {
|
|
"cli": "wai stage wrap",
|
|
"mcp": null,
|
|
"c": "wai_stage_wrap",
|
|
"rust": "wai::stage::wrap",
|
|
"sdk": "wai.stage.wrap"
|
|
}
|
|
},
|
|
{
|
|
"id": "stage.unwrap",
|
|
"summary": "One component of a WAI2 envelope as its WAI1 envelope",
|
|
"cli": "wai stage explode",
|
|
"aliases": [],
|
|
"usage": [
|
|
"wai stage explode <x.wai> <i> [-o out.wai]"
|
|
],
|
|
"placement": "local",
|
|
"effect": "writes-project",
|
|
"dry_run": true,
|
|
"confirm": "when-replacing-an-unnamed-file",
|
|
"route": null,
|
|
"doors": {
|
|
"cli": true,
|
|
"mcp": false,
|
|
"http": false
|
|
},
|
|
"toolset": "core",
|
|
"stability": "preview",
|
|
"input": {
|
|
"type": "object",
|
|
"properties": {
|
|
"path": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "A WAI2 envelope.",
|
|
"x-cli": {
|
|
"positional": true
|
|
}
|
|
},
|
|
"index": {
|
|
"type": "integer",
|
|
"description": "The component's index.",
|
|
"x-cli": {
|
|
"positional": true
|
|
}
|
|
},
|
|
"out": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "The WAI1 envelope.",
|
|
"x-cli": {
|
|
"flag": "-o"
|
|
}
|
|
}
|
|
},
|
|
"required": [
|
|
"path",
|
|
"index"
|
|
],
|
|
"additionalProperties": false
|
|
},
|
|
"output": {
|
|
"type": "object",
|
|
"properties": {
|
|
"text": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"text"
|
|
]
|
|
},
|
|
"stream": null,
|
|
"since": "0.3.0",
|
|
"deprecated": null,
|
|
"receipt": false,
|
|
"needs": {
|
|
"all": [
|
|
"staged",
|
|
"video_int",
|
|
"audio_int",
|
|
"splat_int"
|
|
]
|
|
},
|
|
"names": {
|
|
"cli": "wai stage unwrap",
|
|
"mcp": null,
|
|
"c": "wai_stage_unwrap",
|
|
"rust": "wai::stage::unwrap",
|
|
"sdk": "wai.stage.unwrap"
|
|
}
|
|
},
|
|
{
|
|
"id": "http.export",
|
|
"summary": "Envelopes named by their content hash, each with its head proof and entity tag, ready for an origin",
|
|
"cli": "wai http publish",
|
|
"aliases": [],
|
|
"usage": [
|
|
"wai http publish <in.wai>... --out <dir>"
|
|
],
|
|
"placement": "local",
|
|
"effect": "writes-project",
|
|
"dry_run": true,
|
|
"confirm": "when-replacing-an-unnamed-file",
|
|
"route": null,
|
|
"doors": {
|
|
"cli": true,
|
|
"mcp": false,
|
|
"http": false
|
|
},
|
|
"toolset": "core",
|
|
"stability": "preview",
|
|
"input": {
|
|
"type": "object",
|
|
"properties": {
|
|
"envelopes": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
},
|
|
"description": "The envelopes.",
|
|
"x-cli": {
|
|
"positional": true
|
|
}
|
|
},
|
|
"out": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "The directory.",
|
|
"x-cli": {
|
|
"flag": "--out"
|
|
}
|
|
}
|
|
},
|
|
"required": [
|
|
"envelopes",
|
|
"out"
|
|
],
|
|
"additionalProperties": false
|
|
},
|
|
"output": {
|
|
"type": "object",
|
|
"properties": {
|
|
"text": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"text"
|
|
]
|
|
},
|
|
"stream": null,
|
|
"since": "0.3.0",
|
|
"deprecated": null,
|
|
"receipt": false,
|
|
"needs": {
|
|
"all": [
|
|
"http"
|
|
]
|
|
},
|
|
"names": {
|
|
"cli": "wai http export",
|
|
"mcp": null,
|
|
"c": "wai_http_export",
|
|
"rust": "wai::http::export",
|
|
"sdk": "wai.http.export"
|
|
}
|
|
},
|
|
{
|
|
"id": "http.inspect",
|
|
"summary": "The codecs parameter a sequence of envelopes advertises: its union and its floor",
|
|
"cli": "wai http codecs",
|
|
"aliases": [],
|
|
"usage": [
|
|
"wai http codecs <in.wai>..."
|
|
],
|
|
"placement": "local",
|
|
"effect": "reads",
|
|
"dry_run": false,
|
|
"confirm": "never",
|
|
"route": null,
|
|
"doors": {
|
|
"cli": true,
|
|
"mcp": false,
|
|
"http": false
|
|
},
|
|
"toolset": "core",
|
|
"stability": "preview",
|
|
"input": {
|
|
"type": "object",
|
|
"properties": {
|
|
"envelopes": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
},
|
|
"description": "The envelopes.",
|
|
"x-cli": {
|
|
"positional": true
|
|
}
|
|
}
|
|
},
|
|
"required": [
|
|
"envelopes"
|
|
],
|
|
"additionalProperties": false
|
|
},
|
|
"output": {
|
|
"type": "object",
|
|
"properties": {
|
|
"text": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"text"
|
|
]
|
|
},
|
|
"stream": null,
|
|
"since": "0.3.0",
|
|
"deprecated": null,
|
|
"receipt": false,
|
|
"needs": {
|
|
"all": [
|
|
"http"
|
|
]
|
|
},
|
|
"names": {
|
|
"cli": "wai http inspect",
|
|
"mcp": null,
|
|
"c": "wai_http_inspect",
|
|
"rust": "wai::http::inspect",
|
|
"sdk": "wai.http.inspect"
|
|
}
|
|
},
|
|
{
|
|
"id": "http.start",
|
|
"summary": "An origin on loopback serving a published directory with http-delivery's headers, ranges and If-Range",
|
|
"cli": "wai http origin",
|
|
"aliases": [],
|
|
"usage": [
|
|
"wai http origin --root <dir> [--port P] [--delay-range FIRST-LAST:MS]"
|
|
],
|
|
"placement": "local",
|
|
"effect": "runs",
|
|
"dry_run": true,
|
|
"confirm": "when-replacing-an-unnamed-file",
|
|
"route": null,
|
|
"doors": {
|
|
"cli": true,
|
|
"mcp": false,
|
|
"http": false
|
|
},
|
|
"toolset": "core",
|
|
"stability": "preview",
|
|
"input": {
|
|
"type": "object",
|
|
"properties": {
|
|
"root": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "The published directory.",
|
|
"x-cli": {
|
|
"flag": "--root"
|
|
}
|
|
},
|
|
"port": {
|
|
"type": "integer",
|
|
"description": "The port on 127.0.0.1.",
|
|
"x-cli": {
|
|
"flag": "--port"
|
|
}
|
|
}
|
|
},
|
|
"required": [
|
|
"root"
|
|
],
|
|
"additionalProperties": false
|
|
},
|
|
"output": {
|
|
"type": "object",
|
|
"properties": {
|
|
"text": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"text"
|
|
]
|
|
},
|
|
"stream": null,
|
|
"since": "0.3.0",
|
|
"deprecated": null,
|
|
"receipt": false,
|
|
"needs": {
|
|
"all": [
|
|
"http"
|
|
]
|
|
},
|
|
"names": {
|
|
"cli": "wai http start",
|
|
"mcp": null,
|
|
"c": "wai_http_start",
|
|
"rust": "wai::http::start",
|
|
"sdk": "wai.http.start"
|
|
}
|
|
},
|
|
{
|
|
"id": "hls.build",
|
|
"summary": "An HLS rendition of published objects",
|
|
"cli": "wai http hls",
|
|
"aliases": [],
|
|
"usage": [
|
|
"wai http hls --objects <list.json> --out <dir> [--master NAME]"
|
|
],
|
|
"placement": "local",
|
|
"effect": "writes-project",
|
|
"dry_run": true,
|
|
"confirm": "when-replacing-an-unnamed-file",
|
|
"route": null,
|
|
"doors": {
|
|
"cli": true,
|
|
"mcp": false,
|
|
"http": false
|
|
},
|
|
"toolset": "core",
|
|
"stability": "preview",
|
|
"input": {
|
|
"type": "object",
|
|
"properties": {
|
|
"objects": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "The objects, JSON.",
|
|
"x-cli": {
|
|
"flag": "--objects"
|
|
}
|
|
},
|
|
"out": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "The directory.",
|
|
"x-cli": {
|
|
"flag": "--out"
|
|
}
|
|
}
|
|
},
|
|
"required": [
|
|
"objects",
|
|
"out"
|
|
],
|
|
"additionalProperties": false
|
|
},
|
|
"output": {
|
|
"type": "object",
|
|
"properties": {
|
|
"text": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"text"
|
|
]
|
|
},
|
|
"stream": null,
|
|
"since": "0.3.0",
|
|
"deprecated": null,
|
|
"receipt": false,
|
|
"needs": {
|
|
"all": [
|
|
"http"
|
|
]
|
|
},
|
|
"names": {
|
|
"cli": "wai hls build",
|
|
"mcp": null,
|
|
"c": "wai_hls_build",
|
|
"rust": "wai::hls::build",
|
|
"sdk": "wai.hls.build"
|
|
}
|
|
},
|
|
{
|
|
"id": "dash.build",
|
|
"summary": "A DASH manifest of published objects",
|
|
"cli": "wai http mpd",
|
|
"aliases": [],
|
|
"usage": [
|
|
"wai http mpd --objects <list.json> --out <wai.mpd> [--period-id ID] [--set-id N]"
|
|
],
|
|
"placement": "local",
|
|
"effect": "writes-project",
|
|
"dry_run": true,
|
|
"confirm": "when-replacing-an-unnamed-file",
|
|
"route": null,
|
|
"doors": {
|
|
"cli": true,
|
|
"mcp": false,
|
|
"http": false
|
|
},
|
|
"toolset": "core",
|
|
"stability": "preview",
|
|
"input": {
|
|
"type": "object",
|
|
"properties": {
|
|
"objects": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "The objects, JSON.",
|
|
"x-cli": {
|
|
"flag": "--objects"
|
|
}
|
|
},
|
|
"out": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "The manifest.",
|
|
"x-cli": {
|
|
"flag": "--out"
|
|
}
|
|
}
|
|
},
|
|
"required": [
|
|
"objects",
|
|
"out"
|
|
],
|
|
"additionalProperties": false
|
|
},
|
|
"output": {
|
|
"type": "object",
|
|
"properties": {
|
|
"text": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"text"
|
|
]
|
|
},
|
|
"stream": null,
|
|
"since": "0.3.0",
|
|
"deprecated": null,
|
|
"receipt": false,
|
|
"needs": {
|
|
"all": [
|
|
"http"
|
|
]
|
|
},
|
|
"names": {
|
|
"cli": "wai dash build",
|
|
"mcp": null,
|
|
"c": "wai_dash_build",
|
|
"rust": "wai::dash::build",
|
|
"sdk": "wai.dash.build"
|
|
}
|
|
},
|
|
{
|
|
"id": "playlist.lock",
|
|
"summary": "A media playlist sealed with a signed manifest receipt",
|
|
"cli": "wai http seal-playlist",
|
|
"aliases": [],
|
|
"usage": [
|
|
"wai http seal-playlist <m3u8> --key <name|seed> [--signer-id ID] [--content-id ID] [--parent <mr.json>] [--out <dir>]"
|
|
],
|
|
"placement": "local",
|
|
"effect": "writes-project",
|
|
"dry_run": true,
|
|
"confirm": "when-replacing-an-unnamed-file",
|
|
"route": null,
|
|
"doors": {
|
|
"cli": true,
|
|
"mcp": false,
|
|
"http": false
|
|
},
|
|
"toolset": "core",
|
|
"stability": "preview",
|
|
"input": {
|
|
"type": "object",
|
|
"properties": {
|
|
"playlist": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "The playlist.",
|
|
"x-cli": {
|
|
"positional": true
|
|
}
|
|
},
|
|
"key": {
|
|
"type": "string",
|
|
"description": "The signing key: its name in the keystore (wai key list), 64 hexadecimal digits, or a file holding them.",
|
|
"x-cli": {
|
|
"flag": "--key"
|
|
}
|
|
}
|
|
},
|
|
"required": [
|
|
"playlist",
|
|
"key"
|
|
],
|
|
"additionalProperties": false
|
|
},
|
|
"output": {
|
|
"type": "object",
|
|
"properties": {
|
|
"text": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"text"
|
|
]
|
|
},
|
|
"stream": null,
|
|
"since": "0.3.0",
|
|
"deprecated": null,
|
|
"receipt": true,
|
|
"needs": {
|
|
"all": [
|
|
"http",
|
|
"video_manifest"
|
|
]
|
|
},
|
|
"names": {
|
|
"cli": "wai playlist lock",
|
|
"mcp": null,
|
|
"c": "wai_playlist_lock",
|
|
"rust": "wai::playlist::lock",
|
|
"sdk": "wai.playlist.lock"
|
|
}
|
|
},
|
|
{
|
|
"id": "playlist.verify",
|
|
"summary": "A media playlist checked against its manifest receipt",
|
|
"cli": "wai http check-playlist",
|
|
"aliases": [],
|
|
"usage": [
|
|
"wai http check-playlist <m3u8> --receipt <mr.json> [--parent <mr.json>] [--classical <m3u8>]"
|
|
],
|
|
"placement": "local",
|
|
"effect": "reads",
|
|
"dry_run": false,
|
|
"confirm": "never",
|
|
"route": null,
|
|
"doors": {
|
|
"cli": true,
|
|
"mcp": false,
|
|
"http": false
|
|
},
|
|
"toolset": "core",
|
|
"stability": "preview",
|
|
"input": {
|
|
"type": "object",
|
|
"properties": {
|
|
"playlist": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "The playlist.",
|
|
"x-cli": {
|
|
"positional": true
|
|
}
|
|
},
|
|
"receipt": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "Its manifest receipt.",
|
|
"x-cli": {
|
|
"flag": "--receipt"
|
|
}
|
|
}
|
|
},
|
|
"required": [
|
|
"playlist",
|
|
"receipt"
|
|
],
|
|
"additionalProperties": false
|
|
},
|
|
"output": {
|
|
"type": "object",
|
|
"properties": {
|
|
"text": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"text"
|
|
]
|
|
},
|
|
"stream": null,
|
|
"since": "0.3.0",
|
|
"deprecated": null,
|
|
"receipt": false,
|
|
"needs": {
|
|
"all": [
|
|
"http",
|
|
"video_manifest"
|
|
]
|
|
},
|
|
"names": {
|
|
"cli": "wai playlist verify",
|
|
"mcp": null,
|
|
"c": "wai_playlist_verify",
|
|
"rust": "wai::playlist::verify",
|
|
"sdk": "wai.playlist.verify"
|
|
}
|
|
},
|
|
{
|
|
"id": "corpus.generate",
|
|
"summary": "The HTTP conformance corpus: generated, verified, or its differential and fuzz cases written",
|
|
"cli": "wai http vectors",
|
|
"aliases": [],
|
|
"usage": [
|
|
"wai http vectors gen|verify <http-conformance dir>",
|
|
"wai http vectors diff|fuzz <dir> --seed S --count N --out F"
|
|
],
|
|
"placement": "local",
|
|
"effect": "writes-project",
|
|
"dry_run": true,
|
|
"confirm": "when-replacing-an-unnamed-file",
|
|
"route": null,
|
|
"doors": {
|
|
"cli": true,
|
|
"mcp": false,
|
|
"http": false
|
|
},
|
|
"toolset": "maintainer",
|
|
"stability": "preview",
|
|
"input": {
|
|
"type": "object",
|
|
"properties": {
|
|
"mode": {
|
|
"type": "string",
|
|
"description": "gen, verify, diff or fuzz.",
|
|
"x-cli": {
|
|
"positional": true
|
|
}
|
|
},
|
|
"dir": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "The corpus directory.",
|
|
"x-cli": {
|
|
"positional": true
|
|
}
|
|
}
|
|
},
|
|
"required": [
|
|
"mode",
|
|
"dir"
|
|
],
|
|
"additionalProperties": false
|
|
},
|
|
"output": {
|
|
"type": "object",
|
|
"properties": {
|
|
"text": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"text"
|
|
]
|
|
},
|
|
"stream": null,
|
|
"since": "0.3.0",
|
|
"deprecated": null,
|
|
"receipt": false,
|
|
"needs": {
|
|
"all": [
|
|
"http"
|
|
]
|
|
},
|
|
"names": {
|
|
"cli": "wai corpus generate",
|
|
"mcp": null,
|
|
"c": "wai_corpus_generate",
|
|
"rust": "wai::corpus::generate",
|
|
"sdk": "wai.corpus.generate"
|
|
}
|
|
},
|
|
{
|
|
"id": "http.load",
|
|
"summary": "An object fetched by the byte-range procedure, repeatedly, and the record of each run",
|
|
"cli": "wai http bench",
|
|
"aliases": [],
|
|
"usage": [
|
|
"wai http bench --url URL --runs N --advertise CAP [--advertise CAP]... --out F"
|
|
],
|
|
"placement": "client",
|
|
"effect": "writes-project",
|
|
"dry_run": true,
|
|
"confirm": "when-replacing-an-unnamed-file",
|
|
"route": null,
|
|
"doors": {
|
|
"cli": true,
|
|
"mcp": false,
|
|
"http": false
|
|
},
|
|
"toolset": "core",
|
|
"stability": "preview",
|
|
"input": {
|
|
"type": "object",
|
|
"properties": {
|
|
"url": {
|
|
"type": "string",
|
|
"description": "The object's URL.",
|
|
"x-cli": {
|
|
"flag": "--url"
|
|
}
|
|
},
|
|
"runs": {
|
|
"type": "integer",
|
|
"description": "How many runs.",
|
|
"x-cli": {
|
|
"flag": "--runs"
|
|
}
|
|
},
|
|
"advertise": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
},
|
|
"description": "A capability this sink advertises.",
|
|
"x-cli": {
|
|
"flag": "--advertise"
|
|
}
|
|
},
|
|
"out": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "The record.",
|
|
"x-cli": {
|
|
"flag": "--out"
|
|
}
|
|
}
|
|
},
|
|
"required": [
|
|
"url",
|
|
"runs",
|
|
"advertise",
|
|
"out"
|
|
],
|
|
"additionalProperties": false
|
|
},
|
|
"output": {
|
|
"type": "object",
|
|
"properties": {
|
|
"text": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"text"
|
|
]
|
|
},
|
|
"stream": null,
|
|
"since": "0.3.0",
|
|
"deprecated": null,
|
|
"receipt": false,
|
|
"needs": {
|
|
"all": [
|
|
"http"
|
|
]
|
|
},
|
|
"names": {
|
|
"cli": "wai http load",
|
|
"mcp": null,
|
|
"c": "wai_http_load",
|
|
"rust": "wai::http::load",
|
|
"sdk": "wai.http.load"
|
|
}
|
|
},
|
|
{
|
|
"id": "receipt.fetch",
|
|
"summary": "An object's receipt index fetched over HTTP and checked, its signers confirmed under the origin's key log where named",
|
|
"cli": "wai http receipts",
|
|
"aliases": [],
|
|
"usage": [
|
|
"wai http receipts --url URL [--advertise CAP]... [--held fetch|none] [--join] [--max-walk N] [--fetch-budget N]",
|
|
" [--deadline-ms MS] [--key-origin https://HOST[:PORT] [--pin-key-log FILE | --test-plaintext-connect HOST:PORT]]"
|
|
],
|
|
"placement": "client",
|
|
"effect": "reads",
|
|
"dry_run": false,
|
|
"confirm": "never",
|
|
"route": null,
|
|
"doors": {
|
|
"cli": true,
|
|
"mcp": false,
|
|
"http": false
|
|
},
|
|
"toolset": "core",
|
|
"stability": "preview",
|
|
"input": {
|
|
"type": "object",
|
|
"properties": {
|
|
"url": {
|
|
"type": "string",
|
|
"description": "The object's URL.",
|
|
"x-cli": {
|
|
"flag": "--url"
|
|
}
|
|
}
|
|
},
|
|
"required": [
|
|
"url"
|
|
],
|
|
"additionalProperties": false
|
|
},
|
|
"output": {
|
|
"type": "object",
|
|
"properties": {
|
|
"text": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"text"
|
|
]
|
|
},
|
|
"stream": null,
|
|
"since": "0.3.0",
|
|
"deprecated": null,
|
|
"receipt": false,
|
|
"needs": {
|
|
"all": [
|
|
"http",
|
|
"receipt_claims"
|
|
]
|
|
},
|
|
"names": {
|
|
"cli": "wai receipt fetch",
|
|
"mcp": null,
|
|
"c": "wai_receipt_fetch",
|
|
"rust": "wai::receipt::fetch",
|
|
"sdk": "wai.receipt.fetch"
|
|
}
|
|
},
|
|
{
|
|
"id": "cmcd.encode",
|
|
"summary": "An observation's CMCD report (delivery-telemetry §5): its mode, the report and, in request mode, its headers, as the corpus's tool writes them",
|
|
"cli": "wai cmcd encode",
|
|
"aliases": [],
|
|
"usage": [
|
|
"wai cmcd encode <observation.json> the CMCD report of one observation (delivery-telemetry §5), as JSON, as",
|
|
" wai_telemetry encode prints it"
|
|
],
|
|
"placement": "local",
|
|
"effect": "reads",
|
|
"dry_run": false,
|
|
"confirm": "never",
|
|
"route": null,
|
|
"doors": {
|
|
"cli": true,
|
|
"mcp": false,
|
|
"http": false
|
|
},
|
|
"toolset": "core",
|
|
"stability": "preview",
|
|
"input": {
|
|
"type": "object",
|
|
"properties": {
|
|
"observation": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "An observation (delivery-telemetry §4), JSON.",
|
|
"x-cli": {
|
|
"positional": true
|
|
}
|
|
}
|
|
},
|
|
"required": [
|
|
"observation"
|
|
],
|
|
"additionalProperties": false
|
|
},
|
|
"output": {
|
|
"type": "object",
|
|
"required": [
|
|
"mode",
|
|
"report",
|
|
"headers"
|
|
],
|
|
"properties": {
|
|
"mode": {
|
|
"enum": [
|
|
"request",
|
|
"event",
|
|
"none"
|
|
]
|
|
}
|
|
},
|
|
"description": "The observation's CMCD report: its mode, the report as a CMCD dictionary (null when none is sent), and in request mode its header form"
|
|
},
|
|
"stream": null,
|
|
"since": "0.6.0",
|
|
"deprecated": null,
|
|
"receipt": false,
|
|
"needs": {
|
|
"all": [
|
|
"telemetry"
|
|
]
|
|
},
|
|
"names": {
|
|
"cli": "wai cmcd encode",
|
|
"mcp": null,
|
|
"c": "wai_cmcd_encode",
|
|
"rust": "wai::cmcd::encode",
|
|
"sdk": "wai.cmcd.encode"
|
|
}
|
|
},
|
|
{
|
|
"id": "cmcd.decode",
|
|
"summary": "A CMCD dictionary read back, each member by its key as JSON, as the corpus's tool reads it",
|
|
"cli": "wai cmcd decode",
|
|
"aliases": [],
|
|
"usage": [
|
|
"wai cmcd decode <dictionary> a CMCD dictionary (RFC 9651) read back, each member as JSON, as wai_telemetry decode",
|
|
" prints it"
|
|
],
|
|
"placement": "local",
|
|
"effect": "reads",
|
|
"dry_run": false,
|
|
"confirm": "never",
|
|
"route": null,
|
|
"doors": {
|
|
"cli": true,
|
|
"mcp": false,
|
|
"http": false
|
|
},
|
|
"toolset": "core",
|
|
"stability": "preview",
|
|
"input": {
|
|
"type": "object",
|
|
"properties": {
|
|
"dictionary": {
|
|
"type": "string",
|
|
"description": "A CMCD dictionary, as a query or a header carries it.",
|
|
"x-cli": {
|
|
"positional": true
|
|
}
|
|
}
|
|
},
|
|
"required": [
|
|
"dictionary"
|
|
],
|
|
"additionalProperties": false
|
|
},
|
|
"output": {
|
|
"type": "object",
|
|
"description": "Each member of the dictionary by its key: an integer, a boolean, {\"string\": ...}, {\"token\": ...} or a list of integers"
|
|
},
|
|
"stream": null,
|
|
"since": "0.6.0",
|
|
"deprecated": null,
|
|
"receipt": false,
|
|
"needs": {
|
|
"all": [
|
|
"telemetry"
|
|
]
|
|
},
|
|
"names": {
|
|
"cli": "wai cmcd decode",
|
|
"mcp": null,
|
|
"c": "wai_cmcd_decode",
|
|
"rust": "wai::cmcd::decode",
|
|
"sdk": "wai.cmcd.decode"
|
|
}
|
|
},
|
|
{
|
|
"id": "cmcd.verify",
|
|
"summary": "The delivery-telemetry corpus checked: every observation read back to its own bytes and every expected file recomputed, byte for byte",
|
|
"cli": "wai cmcd verify",
|
|
"aliases": [],
|
|
"usage": [
|
|
"wai cmcd verify <corpus> telemetry-conformance/ checked as wai_telemetry verify checks it (delivery-telemetry",
|
|
" §9.2): every expected file recomputed, every invalid observation refused; exit 1 on a failure"
|
|
],
|
|
"placement": "local",
|
|
"effect": "reads",
|
|
"dry_run": false,
|
|
"confirm": "never",
|
|
"route": null,
|
|
"doors": {
|
|
"cli": true,
|
|
"mcp": false,
|
|
"http": false
|
|
},
|
|
"toolset": "core",
|
|
"stability": "preview",
|
|
"input": {
|
|
"type": "object",
|
|
"properties": {
|
|
"corpus": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "The corpus's directory (wai/telemetry-conformance).",
|
|
"x-cli": {
|
|
"positional": true
|
|
}
|
|
}
|
|
},
|
|
"required": [
|
|
"corpus"
|
|
],
|
|
"additionalProperties": false
|
|
},
|
|
"output": {
|
|
"type": "object",
|
|
"properties": {
|
|
"text": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"text"
|
|
]
|
|
},
|
|
"stream": null,
|
|
"since": "0.6.0",
|
|
"deprecated": null,
|
|
"receipt": false,
|
|
"needs": {
|
|
"all": [
|
|
"telemetry"
|
|
]
|
|
},
|
|
"names": {
|
|
"cli": "wai cmcd verify",
|
|
"mcp": null,
|
|
"c": "wai_cmcd_verify",
|
|
"rust": "wai::cmcd::verify",
|
|
"sdk": "wai.cmcd.verify"
|
|
}
|
|
},
|
|
{
|
|
"id": "compat.check",
|
|
"summary": "What the working tree breaks against a git ref, by category (wire, record, api); a break passes once the CHANGELOG names it, or in a project once breaking.allow accepts it with a reason",
|
|
"cli": "wai breaking",
|
|
"aliases": [],
|
|
"usage": [
|
|
"wai breaking --against <git-ref> [--category wire|record|api] [--only <surface>,...] [--skip <surface>,...]",
|
|
" [--root <dir>] [--target-dir <dir>] [--all] exit 1 on a break the CHANGELOG does not acknowledge",
|
|
"wai breaking (--against <git-ref> | --baseline <dir>) [--project <dir>] [--category ...] [--only ...] [--skip ...]",
|
|
" in a project (a directory with wai.json): its package's sink classes and the API it names under breaking.api,",
|
|
" against the project at <git-ref> or as published in <dir> (the project, or its package alone); exit 1 on a",
|
|
" break breaking.allow does not accept"
|
|
],
|
|
"placement": "local",
|
|
"effect": "reads",
|
|
"dry_run": false,
|
|
"confirm": "never",
|
|
"route": null,
|
|
"doors": {
|
|
"cli": true,
|
|
"mcp": false,
|
|
"http": false
|
|
},
|
|
"toolset": "core",
|
|
"stability": "stable",
|
|
"input": {
|
|
"type": "object",
|
|
"properties": {
|
|
"against": {
|
|
"type": "string",
|
|
"description": "The git ref to compare with (required outside a project).",
|
|
"x-cli": {
|
|
"flag": "--against"
|
|
}
|
|
},
|
|
"baseline": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "In a project, the directory to compare with instead of a git ref: the project as published, or its package.",
|
|
"x-cli": {
|
|
"flag": "--baseline"
|
|
}
|
|
},
|
|
"project": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "The project to check (a directory with wai.json; the current one when it has one).",
|
|
"x-cli": {
|
|
"flag": "--project"
|
|
}
|
|
},
|
|
"category": {
|
|
"type": "string",
|
|
"description": "wire, record or api: the categories checked, cumulative (api).",
|
|
"x-cli": {
|
|
"flag": "--category"
|
|
}
|
|
},
|
|
"only": {
|
|
"type": "string",
|
|
"description": "Only these surfaces, comma-separated.",
|
|
"x-cli": {
|
|
"flag": "--only"
|
|
}
|
|
},
|
|
"skip": {
|
|
"type": "string",
|
|
"description": "Not these surfaces, comma-separated.",
|
|
"x-cli": {
|
|
"flag": "--skip"
|
|
}
|
|
},
|
|
"root": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "The repository's root (.).",
|
|
"x-cli": {
|
|
"flag": "--root"
|
|
}
|
|
},
|
|
"target_dir": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "Where the Rust API's description is built.",
|
|
"x-cli": {
|
|
"flag": "--target-dir"
|
|
}
|
|
},
|
|
"all": {
|
|
"type": "boolean",
|
|
"description": "List every finding, compatible ones too.",
|
|
"x-cli": {
|
|
"flag": "--all"
|
|
}
|
|
}
|
|
},
|
|
"required": [],
|
|
"additionalProperties": false
|
|
},
|
|
"output": {
|
|
"type": "object",
|
|
"required": [
|
|
"against",
|
|
"findings"
|
|
],
|
|
"description": "Each finding's id, category, what changed and whether the CHANGELOG acknowledges it (in a project, whether breaking.allow accepts it, and its reason); a preview operation's change, which the changelog is owed a line for; and a break no line acknowledges, with why"
|
|
},
|
|
"stream": null,
|
|
"since": "0.3.0",
|
|
"deprecated": null,
|
|
"receipt": false,
|
|
"needs": null,
|
|
"names": {
|
|
"cli": "wai compat check",
|
|
"mcp": null,
|
|
"c": "wai_compat_check",
|
|
"rust": "wai::compat::check",
|
|
"sdk": "wai.compat.check"
|
|
}
|
|
},
|
|
{
|
|
"id": "conformance.run",
|
|
"summary": "WAI's conformance corpus run against another implementation, through a command or an HTTP adapter or, for a relay, the MOQT interop client, or every corpus's independent verifier; each result a signed record wai verify checks",
|
|
"cli": "wai conform",
|
|
"aliases": [],
|
|
"usage": [
|
|
"wai conform <kind> --suite <suite> --impl <command or URL> [--independent] [--key <file>] [--out <file>]",
|
|
" [--root <wai-dir>] [--timeout <seconds>] [--name <text>] [--version <text>] [--python <program>] [--all]",
|
|
" [--level required|all] [--format text|json|junit|html] [--yes] `wai conformance list` names the kinds and",
|
|
" suites; --independent runs the corpus's independent verifier beside the implementation, and both must conform;",
|
|
" a case is required unless its corpus marks it informative, and --level all counts every case",
|
|
"wai conform relay --suite moqt --impl <moqt:// or https:// URL> [--draft 22|18|16] [--tls-disable-verify] [--out <file>]",
|
|
" [--root <wai-dir>] [--timeout <seconds>] [--name <text>] [--version <text>] [--format text|json|junit|html] [--yes]",
|
|
" a relay held to the MOQT interop cases by joule-moq-interop, found beside wai, on PATH or at WAI_MOQ_INTEROP_BIN",
|
|
"wai conform --independent [--suite <area|name>[,...]] [--out <dir>] [--key <file>] [--root <wai-dir>]",
|
|
" [--timeout <seconds>] [--python <program>] [--format text|json|junit|html] [--yes] every corpus's",
|
|
" independent verifier (or those named), a record each in <dir>; a record that exists is replaced only with",
|
|
" --yes (--confirm, deprecated, is the same)"
|
|
],
|
|
"placement": "local",
|
|
"effect": "writes-project",
|
|
"dry_run": true,
|
|
"confirm": "when-replacing-a-file",
|
|
"route": null,
|
|
"doors": {
|
|
"cli": true,
|
|
"mcp": true,
|
|
"http": false
|
|
},
|
|
"toolset": "core",
|
|
"stability": "stable",
|
|
"input": {
|
|
"type": "object",
|
|
"properties": {
|
|
"kind": {
|
|
"type": "string",
|
|
"description": "The kind of implementation (wai conformance list): a decoder, a verifier, an origin, a cache, a packager, a sink, a relay; none with --independent alone.",
|
|
"x-cli": {
|
|
"positional": true
|
|
}
|
|
},
|
|
"suite": {
|
|
"type": "string",
|
|
"description": "The suite (wai conformance list); with --independent alone, areas and independent verifiers, comma-separated.",
|
|
"x-cli": {
|
|
"flag": "--suite"
|
|
}
|
|
},
|
|
"impl": {
|
|
"type": "string",
|
|
"description": "The implementation: a command with {case}/{in}/{out}/{corpus}/{model} placeholders (a cache's: {port} and {origin}), or a URL (a relay's: moqt:// or https://); required with a kind.",
|
|
"x-cli": {
|
|
"flag": "--impl"
|
|
}
|
|
},
|
|
"independent": {
|
|
"type": "boolean",
|
|
"description": "Run the corpus's independent verifier beside the implementation, held to the same cases; without a kind, every independent verifier.",
|
|
"x-cli": {
|
|
"flag": "--independent"
|
|
}
|
|
},
|
|
"key": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "The seed the records are signed with.",
|
|
"x-cli": {
|
|
"flag": "--key"
|
|
}
|
|
},
|
|
"out": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "The record (<suite>.wai-conform.json); with --independent alone, a directory for a record a corpus.",
|
|
"x-cli": {
|
|
"flag": "--out"
|
|
}
|
|
},
|
|
"root": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "The wai/ directory whose corpora are run.",
|
|
"x-cli": {
|
|
"flag": "--root"
|
|
}
|
|
},
|
|
"timeout": {
|
|
"type": "integer",
|
|
"description": "Seconds a case may take (60), or an independent verifier its whole corpus (1800).",
|
|
"x-cli": {
|
|
"flag": "--timeout"
|
|
}
|
|
},
|
|
"name": {
|
|
"type": "string",
|
|
"description": "The implementation's name, for the record.",
|
|
"x-cli": {
|
|
"flag": "--name"
|
|
}
|
|
},
|
|
"version": {
|
|
"type": "string",
|
|
"description": "The implementation's version, for the record.",
|
|
"x-cli": {
|
|
"flag": "--version"
|
|
}
|
|
},
|
|
"python": {
|
|
"type": "string",
|
|
"description": "The Python the independent verifiers run with (python3).",
|
|
"x-cli": {
|
|
"flag": "--python"
|
|
}
|
|
},
|
|
"format": {
|
|
"type": "string",
|
|
"description": "What is printed: text, json (the envelope, as --json), junit (JUnit XML) or html, the last two from the records.",
|
|
"x-cli": {
|
|
"flag": "--format"
|
|
}
|
|
},
|
|
"all": {
|
|
"type": "boolean",
|
|
"description": "List every case, passed ones too.",
|
|
"x-cli": {
|
|
"flag": "--all"
|
|
}
|
|
},
|
|
"level": {
|
|
"type": "string",
|
|
"description": "required (the default: a case the corpus marks informative is reported, not counted) or all (every case counted); for a suite whose corpus marks a case informative.",
|
|
"x-cli": {
|
|
"flag": "--level"
|
|
}
|
|
},
|
|
"draft": {
|
|
"type": "integer",
|
|
"description": "A relay's MOQT draft, 22, 18 (the default) or 16: the one the interop client speaks to it.",
|
|
"x-cli": {
|
|
"flag": "--draft"
|
|
}
|
|
},
|
|
"tls_disable_verify": {
|
|
"type": "boolean",
|
|
"description": "A relay's certificate is not verified (one it made for itself).",
|
|
"x-cli": {
|
|
"flag": "--tls-disable-verify"
|
|
}
|
|
}
|
|
},
|
|
"required": [],
|
|
"additionalProperties": false
|
|
},
|
|
"output": {
|
|
"type": "object",
|
|
"required": [
|
|
"conformant",
|
|
"cases",
|
|
"passed",
|
|
"failed"
|
|
]
|
|
},
|
|
"stream": null,
|
|
"since": "0.3.0",
|
|
"deprecated": null,
|
|
"receipt": true,
|
|
"needs": {
|
|
"all": [
|
|
"quickstart"
|
|
]
|
|
},
|
|
"names": {
|
|
"cli": "wai conformance run",
|
|
"mcp": "conformance_run",
|
|
"c": "wai_conformance_run",
|
|
"rust": "wai::conformance::run",
|
|
"sdk": "wai.conformance.run"
|
|
}
|
|
},
|
|
{
|
|
"id": "conformance.list",
|
|
"summary": "The kinds and suites wai conform runs, each suite's corpus and its cases, and every corpus's independent verifier",
|
|
"cli": "wai conformance list",
|
|
"aliases": [],
|
|
"usage": [
|
|
"wai conformance list [--root <wai-dir>] the kinds and suites, and the independent verifiers (also wai conform --list)"
|
|
],
|
|
"placement": "local",
|
|
"effect": "reads",
|
|
"dry_run": false,
|
|
"confirm": "never",
|
|
"route": null,
|
|
"doors": {
|
|
"cli": true,
|
|
"mcp": true,
|
|
"http": false
|
|
},
|
|
"toolset": "core",
|
|
"stability": "stable",
|
|
"input": {
|
|
"type": "object",
|
|
"properties": {
|
|
"root": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "The wai/ directory whose corpora are listed.",
|
|
"x-cli": {
|
|
"flag": "--root"
|
|
}
|
|
}
|
|
},
|
|
"required": [],
|
|
"additionalProperties": false
|
|
},
|
|
"output": {
|
|
"type": "object",
|
|
"required": [
|
|
"suites"
|
|
]
|
|
},
|
|
"stream": null,
|
|
"since": "0.3.0",
|
|
"deprecated": null,
|
|
"receipt": false,
|
|
"needs": {
|
|
"all": [
|
|
"quickstart"
|
|
]
|
|
},
|
|
"names": {
|
|
"cli": "wai conformance list",
|
|
"mcp": "conformance_list",
|
|
"c": "wai_conformance_list",
|
|
"rust": "wai::conformance::list",
|
|
"sdk": "wai.conformance.list"
|
|
}
|
|
},
|
|
{
|
|
"id": "conformance.generate",
|
|
"summary": "A conformance corpus written by its generator, the tool the conformance workflow verifies it with, or verified by it",
|
|
"cli": "wai conformance gen",
|
|
"aliases": [],
|
|
"usage": [
|
|
"wai conformance gen --suite <corpus>[,...] [--verify] [--root <wai-dir>] [--bin-dir <dir>] each corpus written by",
|
|
" its tool's generator (cargo run in <root>/wai-rs, or the tool built in <dir>); --verify runs its verifier instead;",
|
|
" `wai conformance list` names the corpora"
|
|
],
|
|
"placement": "local",
|
|
"effect": "writes-project",
|
|
"dry_run": true,
|
|
"confirm": "when-replacing-an-unnamed-file",
|
|
"route": null,
|
|
"doors": {
|
|
"cli": true,
|
|
"mcp": false,
|
|
"http": false
|
|
},
|
|
"toolset": "maintainer",
|
|
"stability": "preview",
|
|
"input": {
|
|
"type": "object",
|
|
"properties": {
|
|
"suite": {
|
|
"type": "string",
|
|
"description": "The corpora, comma-separated (wai conformance list).",
|
|
"x-cli": {
|
|
"flag": "--suite"
|
|
}
|
|
},
|
|
"verify": {
|
|
"type": "boolean",
|
|
"description": "Run each tool's verifier, which writes nothing, instead of its generator.",
|
|
"x-cli": {
|
|
"flag": "--verify"
|
|
}
|
|
},
|
|
"root": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "The wai/ directory of the checkout whose corpora are written.",
|
|
"x-cli": {
|
|
"flag": "--root"
|
|
}
|
|
},
|
|
"bin_dir": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "Where the tools are built; without it each is built and run with cargo.",
|
|
"x-cli": {
|
|
"flag": "--bin-dir"
|
|
}
|
|
}
|
|
},
|
|
"required": [
|
|
"suite"
|
|
],
|
|
"additionalProperties": false
|
|
},
|
|
"output": {
|
|
"type": "object",
|
|
"required": [
|
|
"corpora"
|
|
],
|
|
"description": "Each corpus named, its tool, its directory and the command each mode ran with its exit status; passed and failed count the corpora"
|
|
},
|
|
"stream": null,
|
|
"since": "0.5.0",
|
|
"deprecated": null,
|
|
"receipt": false,
|
|
"needs": {
|
|
"all": [
|
|
"quickstart"
|
|
]
|
|
},
|
|
"names": {
|
|
"cli": "wai conformance generate",
|
|
"mcp": null,
|
|
"c": "wai_conformance_generate",
|
|
"rust": "wai::conformance::generate",
|
|
"sdk": "wai.conformance.generate"
|
|
}
|
|
},
|
|
{
|
|
"id": "enrolment.create",
|
|
"summary": "A node's enrolment signed with the organisation key, written to a file and, with --target, given to a fleet service",
|
|
"cli": "wai enrolment create",
|
|
"aliases": [],
|
|
"usage": [
|
|
"wai enrolment create <node-key> --role <role> --key <name|file> [--label L] [--from µs] [--until µs] [--out F]",
|
|
" [--target <name|url>] [--yes] a node's enrolment (WFE1), signed with the organisation key, written to F",
|
|
" (<node>.wfe without --target) and, with --target, given to the fleet service it names (never to the target in",
|
|
" use unless named); changing the service or replacing a file waits for --yes (--confirm, deprecated, is the same)"
|
|
],
|
|
"placement": "client",
|
|
"effect": "writes-target",
|
|
"dry_run": true,
|
|
"confirm": "when-changing-the-target-or-replacing-a-file",
|
|
"route": null,
|
|
"doors": {
|
|
"cli": true,
|
|
"mcp": false,
|
|
"http": false
|
|
},
|
|
"toolset": "core",
|
|
"stability": "preview",
|
|
"input": {
|
|
"type": "object",
|
|
"properties": {
|
|
"node": {
|
|
"type": "string",
|
|
"description": "The node's Ed25519 public key, 64 hexadecimal digits.",
|
|
"x-cli": {
|
|
"positional": true
|
|
}
|
|
},
|
|
"role": {
|
|
"type": "string",
|
|
"description": "relay, compositor, ingest, room, ledger or audit.",
|
|
"x-cli": {
|
|
"flag": "--role"
|
|
}
|
|
},
|
|
"key": {
|
|
"type": "string",
|
|
"description": "The organisation key: its name in the keystore (wai key list), or its file: 32 bytes, or 64 hexadecimal digits.",
|
|
"x-cli": {
|
|
"flag": "--key"
|
|
}
|
|
},
|
|
"label": {
|
|
"type": "string",
|
|
"description": "The node's label, at most 64 bytes.",
|
|
"x-cli": {
|
|
"flag": "--label"
|
|
}
|
|
},
|
|
"from": {
|
|
"type": "integer",
|
|
"description": "The start of the span it holds, microseconds since 1970 (0).",
|
|
"x-cli": {
|
|
"flag": "--from"
|
|
}
|
|
},
|
|
"until": {
|
|
"type": "integer",
|
|
"description": "The end of that span, microseconds since 1970 (none).",
|
|
"x-cli": {
|
|
"flag": "--until"
|
|
}
|
|
},
|
|
"out": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "The enrolment's file (<node>.wfe when no --target is given).",
|
|
"x-cli": {
|
|
"flag": "--out"
|
|
}
|
|
},
|
|
"target": {
|
|
"type": "string",
|
|
"description": "The service it acts on: a target's name (wai target list) or a service's http:// or https:// address.",
|
|
"x-cli": {
|
|
"flag": "--target"
|
|
}
|
|
}
|
|
},
|
|
"required": [
|
|
"node",
|
|
"role",
|
|
"key"
|
|
],
|
|
"additionalProperties": false
|
|
},
|
|
"output": {
|
|
"type": "object",
|
|
"required": [
|
|
"node",
|
|
"role",
|
|
"organisation",
|
|
"digest",
|
|
"enrolment"
|
|
],
|
|
"description": "The enrolment (WFE1, hexadecimal), its digest, and the file and service it went to"
|
|
},
|
|
"stream": null,
|
|
"since": "0.3.0",
|
|
"deprecated": null,
|
|
"receipt": true,
|
|
"needs": {
|
|
"all": [
|
|
"fleet"
|
|
]
|
|
},
|
|
"names": {
|
|
"cli": "wai enrolment create",
|
|
"mcp": null,
|
|
"c": "wai_enrolment_create",
|
|
"rust": "wai::enrolment::create",
|
|
"sdk": "wai.enrolment.create"
|
|
}
|
|
},
|
|
{
|
|
"id": "enrolment.list",
|
|
"summary": "The nodes a fleet service holds enrolled, each with its role, label and how many records it gave",
|
|
"cli": "wai enrolment list",
|
|
"aliases": [],
|
|
"usage": [
|
|
"wai enrolment list [--target <name|url>] the nodes the fleet service holds enrolled (the target in use when none is named)"
|
|
],
|
|
"placement": "client",
|
|
"effect": "reads",
|
|
"dry_run": false,
|
|
"confirm": "never",
|
|
"route": null,
|
|
"doors": {
|
|
"cli": true,
|
|
"mcp": false,
|
|
"http": false
|
|
},
|
|
"toolset": "core",
|
|
"stability": "preview",
|
|
"input": {
|
|
"type": "object",
|
|
"properties": {
|
|
"target": {
|
|
"type": "string",
|
|
"description": "The service it acts on: a target's name (wai target list) or a service's http:// or https:// address.",
|
|
"x-cli": {
|
|
"flag": "--target"
|
|
}
|
|
}
|
|
},
|
|
"required": [],
|
|
"additionalProperties": false
|
|
},
|
|
"output": {
|
|
"type": "object",
|
|
"required": [
|
|
"enrolments"
|
|
],
|
|
"description": "Each node the fleet service holds enrolled: its key, role, label and records"
|
|
},
|
|
"stream": null,
|
|
"since": "0.3.0",
|
|
"deprecated": null,
|
|
"receipt": false,
|
|
"needs": null,
|
|
"names": {
|
|
"cli": "wai enrolment list",
|
|
"mcp": null,
|
|
"c": "wai_enrolment_list",
|
|
"rust": "wai::enrolment::list",
|
|
"sdk": "wai.enrolment.list"
|
|
}
|
|
},
|
|
{
|
|
"id": "report.create",
|
|
"summary": "The fleet report of a period, signed by a fleet service over the enrolments and records it holds",
|
|
"cli": "wai report create",
|
|
"aliases": [],
|
|
"usage": [
|
|
"wai report create [--target <name|url>] --start µs --end µs [--yes] the fleet report of [start, end), signed by the",
|
|
" fleet service (the target in use when none is named); it changes the service, so it waits for --yes (--confirm,",
|
|
" deprecated, is the same)"
|
|
],
|
|
"placement": "client",
|
|
"effect": "writes-target",
|
|
"dry_run": true,
|
|
"confirm": "always",
|
|
"route": null,
|
|
"doors": {
|
|
"cli": true,
|
|
"mcp": false,
|
|
"http": false
|
|
},
|
|
"toolset": "core",
|
|
"stability": "preview",
|
|
"input": {
|
|
"type": "object",
|
|
"properties": {
|
|
"target": {
|
|
"type": "string",
|
|
"description": "The service it acts on: a target's name (wai target list) or a service's http:// or https:// address.",
|
|
"x-cli": {
|
|
"flag": "--target"
|
|
}
|
|
},
|
|
"start": {
|
|
"type": "integer",
|
|
"description": "The period's start, microseconds since 1970.",
|
|
"x-cli": {
|
|
"flag": "--start"
|
|
}
|
|
},
|
|
"end": {
|
|
"type": "integer",
|
|
"description": "The period's end, after its start.",
|
|
"x-cli": {
|
|
"flag": "--end"
|
|
}
|
|
}
|
|
},
|
|
"required": [
|
|
"start",
|
|
"end"
|
|
],
|
|
"additionalProperties": false
|
|
},
|
|
"output": {
|
|
"type": "object",
|
|
"required": [
|
|
"report",
|
|
"outcome"
|
|
],
|
|
"description": "The report's digest and its outcome as extensions/fleet.md §7.3 states it"
|
|
},
|
|
"stream": null,
|
|
"since": "0.3.0",
|
|
"deprecated": null,
|
|
"receipt": true,
|
|
"needs": null,
|
|
"names": {
|
|
"cli": "wai report create",
|
|
"mcp": null,
|
|
"c": "wai_report_create",
|
|
"rust": "wai::report::create",
|
|
"sdk": "wai.report.create"
|
|
}
|
|
},
|
|
{
|
|
"id": "report.export",
|
|
"summary": "A fleet report's bundle fetched from a fleet service, its report recomputed here, then written to a file",
|
|
"cli": "wai report export",
|
|
"aliases": [],
|
|
"usage": [
|
|
"wai report export <digest> [--target <name|url>] [--out F] [--yes] the report's bundle from the fleet service",
|
|
" (the target in use when none is named), recomputed by this build and written to F (<digest>.wai-fleet.json) for",
|
|
" `wai verify`; replacing a file waits for --yes (--confirm, deprecated, is the same)"
|
|
],
|
|
"placement": "client",
|
|
"effect": "writes-project",
|
|
"dry_run": true,
|
|
"confirm": "when-replacing-a-file",
|
|
"route": null,
|
|
"doors": {
|
|
"cli": true,
|
|
"mcp": false,
|
|
"http": false
|
|
},
|
|
"toolset": "core",
|
|
"stability": "preview",
|
|
"input": {
|
|
"type": "object",
|
|
"properties": {
|
|
"digest": {
|
|
"type": "string",
|
|
"description": "The report's digest, 64 hexadecimal digits.",
|
|
"x-cli": {
|
|
"positional": true
|
|
}
|
|
},
|
|
"target": {
|
|
"type": "string",
|
|
"description": "The service it acts on: a target's name (wai target list) or a service's http:// or https:// address.",
|
|
"x-cli": {
|
|
"flag": "--target"
|
|
}
|
|
},
|
|
"out": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "The bundle's file (<digest>.wai-fleet.json).",
|
|
"x-cli": {
|
|
"flag": "--out"
|
|
}
|
|
}
|
|
},
|
|
"required": [
|
|
"digest"
|
|
],
|
|
"additionalProperties": false
|
|
},
|
|
"output": {
|
|
"type": "object",
|
|
"required": [
|
|
"file",
|
|
"outcome"
|
|
],
|
|
"description": "The bundle's file and its outcome, recomputed here"
|
|
},
|
|
"stream": null,
|
|
"since": "0.3.0",
|
|
"deprecated": null,
|
|
"receipt": true,
|
|
"needs": {
|
|
"all": [
|
|
"fleet"
|
|
]
|
|
},
|
|
"names": {
|
|
"cli": "wai report export",
|
|
"mcp": null,
|
|
"c": "wai_report_export",
|
|
"rust": "wai::report::export",
|
|
"sdk": "wai.report.export"
|
|
}
|
|
},
|
|
{
|
|
"id": "route.verify",
|
|
"summary": "A route record checked offline against its request, price book and routing policy, and against its hops' OER/2 receipts where given",
|
|
"cli": "wai route verify",
|
|
"aliases": [],
|
|
"usage": [
|
|
"wai route verify <document.json> a verification document (extensions/route-record.md §7.1): the record's outcome",
|
|
" (§7.3) as JSON, recomputed from the request, the price book and the policy; exit 1 when it is refused"
|
|
],
|
|
"placement": "local",
|
|
"effect": "reads",
|
|
"dry_run": false,
|
|
"confirm": "never",
|
|
"route": null,
|
|
"doors": {
|
|
"cli": true,
|
|
"mcp": false,
|
|
"http": false
|
|
},
|
|
"toolset": "core",
|
|
"stability": "preview",
|
|
"input": {
|
|
"type": "object",
|
|
"properties": {
|
|
"document": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "The verification document: the request, price book, policy and record, and the hops' receipts.",
|
|
"x-cli": {
|
|
"positional": true
|
|
}
|
|
}
|
|
},
|
|
"required": [
|
|
"document"
|
|
],
|
|
"additionalProperties": false
|
|
},
|
|
"output": {
|
|
"type": "object",
|
|
"required": [
|
|
"outcome"
|
|
],
|
|
"description": "The outcome of extensions/route-record.md §7.3: accept with the record's digest, the served and billed hops, the deadline, the order, the decision, the removals and the unmetered hops; or refuse with the reason and where"
|
|
},
|
|
"stream": null,
|
|
"since": "0.3.0",
|
|
"deprecated": null,
|
|
"receipt": false,
|
|
"needs": {
|
|
"all": [
|
|
"route_record"
|
|
]
|
|
},
|
|
"names": {
|
|
"cli": "wai route verify",
|
|
"mcp": null,
|
|
"c": "wai_route_verify",
|
|
"rust": "wai::route::verify",
|
|
"sdk": "wai.route.verify"
|
|
}
|
|
},
|
|
{
|
|
"id": "channel.import",
|
|
"summary": "A linear channel's feeds (an XMLTV schedule, Media RSS catalogues or the JSON form, and a Media Playlist's SCTE-35 date ranges) imported into its signed receipt, its signed lineup and its breaks' cues",
|
|
"cli": "wai channel import",
|
|
"aliases": [],
|
|
"usage": [
|
|
"wai channel import --channel ID (--xmltv F [--mrss F]... | --mrss F... | --feed F) [--playlist F] --key K",
|
|
" [--mrss-owner O]... [--owner O] [--signer-id S] [--id-system N] [--xmltv-channel X] [--start-ms T] [--artwork DIR]",
|
|
" [--window-start T --window-end T] [--parent HEX] [--out-dir D] [--yes] the receipt (channel.json), the lineup",
|
|
" (lineup.wlu) and the cues (cues.json), written to D (.); a refusal's code is its reason; replacing a file waits",
|
|
" for --yes (--confirm, deprecated, is the same)"
|
|
],
|
|
"placement": "local",
|
|
"effect": "writes-project",
|
|
"dry_run": true,
|
|
"confirm": "when-replacing-a-file",
|
|
"route": null,
|
|
"doors": {
|
|
"cli": true,
|
|
"mcp": false,
|
|
"http": false
|
|
},
|
|
"toolset": "core",
|
|
"stability": "preview",
|
|
"input": {
|
|
"type": "object",
|
|
"properties": {
|
|
"channel": {
|
|
"type": "string",
|
|
"description": "The channel id.",
|
|
"x-cli": {
|
|
"flag": "--channel"
|
|
}
|
|
},
|
|
"xmltv": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "An XMLTV document: the schedule.",
|
|
"x-cli": {
|
|
"flag": "--xmltv"
|
|
}
|
|
},
|
|
"mrss": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
},
|
|
"description": "A Media RSS document: a catalogue. Repeated.",
|
|
"x-cli": {
|
|
"flag": "--mrss"
|
|
}
|
|
},
|
|
"mrss_owner": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
},
|
|
"description": "The rights holder of each --mrss document's items, in their order: none, or one each.",
|
|
"x-cli": {
|
|
"flag": "--mrss-owner"
|
|
}
|
|
},
|
|
"feed": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "The JSON form of a schedule, its catalogue and its breaks.",
|
|
"x-cli": {
|
|
"flag": "--feed"
|
|
}
|
|
},
|
|
"playlist": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "The channel's HLS Media Playlist, whose SCTE-35 date ranges are its breaks.",
|
|
"x-cli": {
|
|
"flag": "--playlist"
|
|
}
|
|
},
|
|
"key": {
|
|
"type": "string",
|
|
"description": "The operator's key: its name in the keystore (wai key list), or its file: 32 bytes, or 64 hexadecimal digits.",
|
|
"x-cli": {
|
|
"flag": "--key"
|
|
}
|
|
},
|
|
"owner": {
|
|
"type": "string",
|
|
"description": "The rights holder of every asset no other input gives one.",
|
|
"x-cli": {
|
|
"flag": "--owner"
|
|
}
|
|
},
|
|
"signer_id": {
|
|
"type": "string",
|
|
"description": "The receipt's signer id (the operator key's did:key).",
|
|
"x-cli": {
|
|
"flag": "--signer-id"
|
|
}
|
|
},
|
|
"id_system": {
|
|
"type": "string",
|
|
"description": "The XMLTV episode-num system that names a programme's asset (wai-asset-id).",
|
|
"x-cli": {
|
|
"flag": "--id-system"
|
|
}
|
|
},
|
|
"xmltv_channel": {
|
|
"type": "string",
|
|
"description": "The XMLTV channel id whose programmes are read (the channel id).",
|
|
"x-cli": {
|
|
"flag": "--xmltv-channel"
|
|
}
|
|
},
|
|
"start_ms": {
|
|
"type": "integer",
|
|
"description": "Where a schedule of Media RSS items alone begins, milliseconds since 1970.",
|
|
"x-cli": {
|
|
"flag": "--start-ms"
|
|
}
|
|
},
|
|
"artwork": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "The directory holding the artwork files the feeds' icons and thumbnails name.",
|
|
"x-cli": {
|
|
"flag": "--artwork"
|
|
}
|
|
},
|
|
"window_start": {
|
|
"type": "integer",
|
|
"description": "The receipt's window's start (the schedule's first start).",
|
|
"x-cli": {
|
|
"flag": "--window-start"
|
|
}
|
|
},
|
|
"window_end": {
|
|
"type": "integer",
|
|
"description": "The receipt's window's end (the schedule's last end).",
|
|
"x-cli": {
|
|
"flag": "--window-end"
|
|
}
|
|
},
|
|
"parent": {
|
|
"type": "string",
|
|
"description": "The receipt hash of the window before this one, 64 hexadecimal digits.",
|
|
"x-cli": {
|
|
"flag": "--parent"
|
|
}
|
|
},
|
|
"out_dir": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "Where channel.json, lineup.wlu and cues.json are written (.).",
|
|
"x-cli": {
|
|
"flag": "--out-dir"
|
|
}
|
|
}
|
|
},
|
|
"required": [
|
|
"channel",
|
|
"key"
|
|
],
|
|
"additionalProperties": false
|
|
},
|
|
"output": {
|
|
"type": "object",
|
|
"required": [
|
|
"channel",
|
|
"receipt",
|
|
"receipt_hash",
|
|
"schedule_root",
|
|
"lineup",
|
|
"lineup_digest",
|
|
"cues"
|
|
],
|
|
"description": "The files written (the receipt, the lineup, the cues), the receipt's identity and schedule root, the lineup's digest, and their counts"
|
|
},
|
|
"stream": null,
|
|
"since": "0.3.0",
|
|
"deprecated": null,
|
|
"receipt": true,
|
|
"needs": {
|
|
"all": [
|
|
"channel_lineup"
|
|
]
|
|
},
|
|
"names": {
|
|
"cli": "wai channel import",
|
|
"mcp": null,
|
|
"c": "wai_channel_import",
|
|
"rust": "wai::channel::import",
|
|
"sdk": "wai.channel.import"
|
|
}
|
|
},
|
|
{
|
|
"id": "channel.guide",
|
|
"summary": "A channel's guide, an XMLTV document or a now/next document, rendered from its receipt and its lineup and naming both",
|
|
"cli": "wai channel guide",
|
|
"aliases": [],
|
|
"usage": [
|
|
"wai channel guide --receipt R --lineup L [--from T --to T | --now-next --at T] [--out F] [--yes] the XMLTV guide",
|
|
" of a range (the whole schedule), or the now/next document of an instant, written to F (guide.xml, now-next.json);",
|
|
" replacing a file waits for --yes (--confirm, deprecated, is the same)"
|
|
],
|
|
"placement": "local",
|
|
"effect": "writes-project",
|
|
"dry_run": true,
|
|
"confirm": "when-replacing-a-file",
|
|
"route": null,
|
|
"doors": {
|
|
"cli": true,
|
|
"mcp": false,
|
|
"http": false
|
|
},
|
|
"toolset": "core",
|
|
"stability": "preview",
|
|
"input": {
|
|
"type": "object",
|
|
"properties": {
|
|
"receipt": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "The channel receipt, in its JSON carriage.",
|
|
"x-cli": {
|
|
"flag": "--receipt"
|
|
}
|
|
},
|
|
"lineup": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "The lineup's file.",
|
|
"x-cli": {
|
|
"flag": "--lineup"
|
|
}
|
|
},
|
|
"from": {
|
|
"type": "integer",
|
|
"description": "The range's start, milliseconds since 1970 (the schedule's first start).",
|
|
"x-cli": {
|
|
"flag": "--from"
|
|
}
|
|
},
|
|
"to": {
|
|
"type": "integer",
|
|
"description": "The range's end (the schedule's last end).",
|
|
"x-cli": {
|
|
"flag": "--to"
|
|
}
|
|
},
|
|
"now_next": {
|
|
"type": "boolean",
|
|
"description": "The now/next document of --at instead.",
|
|
"x-cli": {
|
|
"flag": "--now-next"
|
|
}
|
|
},
|
|
"at": {
|
|
"type": "integer",
|
|
"description": "The instant of a now/next document, milliseconds since 1970.",
|
|
"x-cli": {
|
|
"flag": "--at"
|
|
}
|
|
},
|
|
"out": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "The guide's file (guide.xml, or now-next.json).",
|
|
"x-cli": {
|
|
"flag": "--out"
|
|
}
|
|
}
|
|
},
|
|
"required": [
|
|
"receipt",
|
|
"lineup"
|
|
],
|
|
"additionalProperties": false
|
|
},
|
|
"output": {
|
|
"type": "object",
|
|
"required": [
|
|
"file",
|
|
"format",
|
|
"schedule_root",
|
|
"lineup"
|
|
],
|
|
"description": "The guide's file and format (xmltv or now-next), the sources it names, and its range or instant"
|
|
},
|
|
"stream": null,
|
|
"since": "0.3.0",
|
|
"deprecated": null,
|
|
"receipt": false,
|
|
"needs": {
|
|
"all": [
|
|
"channel_lineup"
|
|
]
|
|
},
|
|
"names": {
|
|
"cli": "wai channel guide",
|
|
"mcp": null,
|
|
"c": "wai_channel_guide",
|
|
"rust": "wai::channel::guide",
|
|
"sdk": "wai.channel.guide"
|
|
}
|
|
},
|
|
{
|
|
"id": "channel.verify",
|
|
"summary": "A channel's receipt, its lineup and a guide verified together: the guide recomputed from the two and compared, each programme with whether it aired",
|
|
"cli": "wai channel verify",
|
|
"aliases": [],
|
|
"usage": [
|
|
"wai channel verify --receipt R --lineup L [--guide G] the receipt, the lineup and the guide checked together;",
|
|
" exit 1 with the reason when one does not verify"
|
|
],
|
|
"placement": "local",
|
|
"effect": "reads",
|
|
"dry_run": false,
|
|
"confirm": "never",
|
|
"route": null,
|
|
"doors": {
|
|
"cli": true,
|
|
"mcp": false,
|
|
"http": false
|
|
},
|
|
"toolset": "core",
|
|
"stability": "preview",
|
|
"input": {
|
|
"type": "object",
|
|
"properties": {
|
|
"receipt": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "The channel receipt, in its JSON carriage.",
|
|
"x-cli": {
|
|
"flag": "--receipt"
|
|
}
|
|
},
|
|
"lineup": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "The lineup's file.",
|
|
"x-cli": {
|
|
"flag": "--lineup"
|
|
}
|
|
},
|
|
"guide": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "An XMLTV guide or a now/next document.",
|
|
"x-cli": {
|
|
"flag": "--guide"
|
|
}
|
|
}
|
|
},
|
|
"required": [
|
|
"receipt",
|
|
"lineup"
|
|
],
|
|
"additionalProperties": false
|
|
},
|
|
"output": {
|
|
"type": "object",
|
|
"required": [
|
|
"verdict",
|
|
"part",
|
|
"receipt",
|
|
"lineup",
|
|
"guide",
|
|
"entry"
|
|
],
|
|
"description": "What extensions/channel-lineup.md §8.3 states: the verdict and the part it is about, the receipt's identity, the lineup's digest, and the guide's programmes, each with whether it aired"
|
|
},
|
|
"stream": null,
|
|
"since": "0.3.0",
|
|
"deprecated": null,
|
|
"receipt": false,
|
|
"needs": {
|
|
"all": [
|
|
"channel_lineup"
|
|
]
|
|
},
|
|
"names": {
|
|
"cli": "wai channel verify",
|
|
"mcp": null,
|
|
"c": "wai_channel_verify",
|
|
"rust": "wai::channel::verify",
|
|
"sdk": "wai.channel.verify"
|
|
}
|
|
},
|
|
{
|
|
"id": "audit.create",
|
|
"summary": "A channel's stream-audit report recomputed from a collector's stored sessions and signed with the owner's key, by wai-audit itself",
|
|
"cli": "wai audit report",
|
|
"aliases": [],
|
|
"usage": [
|
|
"wai audit report <data> <channel> <from> <to> [--audit BIN] wai-audit report (extensions/stream-audit.md §11): the",
|
|
" channel's report over <from>..<to> (microseconds since 1970) from the sessions stored under <data>, signed with the",
|
|
" key WAI_AUDIT_KEY names; what it prints and its exit status are wai-audit's. The program is --audit,",
|
|
" $WAI_AUDIT_BIN, wai-audit beside wai, or wai-audit on PATH"
|
|
],
|
|
"placement": "local",
|
|
"effect": "reads",
|
|
"dry_run": false,
|
|
"confirm": "never",
|
|
"route": null,
|
|
"doors": {
|
|
"cli": true,
|
|
"mcp": false,
|
|
"http": false
|
|
},
|
|
"toolset": "core",
|
|
"stability": "preview",
|
|
"input": {
|
|
"type": "object",
|
|
"properties": {
|
|
"data": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "The collector's data directory, where it stored the sessions.",
|
|
"x-cli": {
|
|
"positional": true
|
|
}
|
|
},
|
|
"channel": {
|
|
"type": "string",
|
|
"description": "The channel's name.",
|
|
"x-cli": {
|
|
"positional": true
|
|
}
|
|
},
|
|
"from": {
|
|
"type": "integer",
|
|
"description": "The period's start, microseconds since 1970.",
|
|
"x-cli": {
|
|
"positional": true
|
|
}
|
|
},
|
|
"to": {
|
|
"type": "integer",
|
|
"description": "The period's end, microseconds since 1970.",
|
|
"x-cli": {
|
|
"positional": true
|
|
}
|
|
},
|
|
"audit": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "The collector's program (wai-audit).",
|
|
"x-cli": {
|
|
"flag": "--audit"
|
|
}
|
|
}
|
|
},
|
|
"required": [
|
|
"data",
|
|
"channel",
|
|
"from",
|
|
"to"
|
|
],
|
|
"additionalProperties": false
|
|
},
|
|
"output": {
|
|
"type": "object",
|
|
"description": "The channel's report as wai-audit report prints it: the report over the period with the owner's signature (extensions/stream-audit.md §11), or the collector's error"
|
|
},
|
|
"stream": null,
|
|
"since": "0.6.0",
|
|
"deprecated": null,
|
|
"receipt": false,
|
|
"needs": null,
|
|
"names": {
|
|
"cli": "wai audit create",
|
|
"mcp": null,
|
|
"c": "wai_audit_create",
|
|
"rust": "wai::audit::create",
|
|
"sdk": "wai.audit.create"
|
|
}
|
|
},
|
|
{
|
|
"id": "audit.check",
|
|
"summary": "A served stream-audit report checked against the session bundles it reads, recomputed from them and its signature the owner's, by wai-audit itself",
|
|
"cli": "wai audit check",
|
|
"aliases": [],
|
|
"usage": [
|
|
"wai audit check <served.json> <channel> <bundle>... [--owner <hex>] [--audit BIN] wai-audit check",
|
|
" (extensions/stream-audit.md §11.4): the report recomputed from the bundles given and its signature checked against",
|
|
" the owner's key (--owner, or WAI_AUDIT_OWNER); exit 1 when it is refused; what it prints and its exit status are",
|
|
" wai-audit's. The program is --audit, $WAI_AUDIT_BIN, wai-audit beside wai, or wai-audit on PATH"
|
|
],
|
|
"placement": "local",
|
|
"effect": "reads",
|
|
"dry_run": false,
|
|
"confirm": "never",
|
|
"route": null,
|
|
"doors": {
|
|
"cli": true,
|
|
"mcp": false,
|
|
"http": false
|
|
},
|
|
"toolset": "core",
|
|
"stability": "preview",
|
|
"input": {
|
|
"type": "object",
|
|
"properties": {
|
|
"served": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "The report as the collector served it, JSON.",
|
|
"x-cli": {
|
|
"positional": true
|
|
}
|
|
},
|
|
"channel": {
|
|
"type": "string",
|
|
"description": "The channel's name.",
|
|
"x-cli": {
|
|
"positional": true
|
|
}
|
|
},
|
|
"bundles": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
},
|
|
"description": "The session bundles the report reads.",
|
|
"x-cli": {
|
|
"positional": true
|
|
}
|
|
},
|
|
"owner": {
|
|
"type": "string",
|
|
"description": "The owner's key, 64 hexadecimal digits (WAI_AUDIT_OWNER otherwise).",
|
|
"x-cli": {
|
|
"flag": "--owner"
|
|
}
|
|
},
|
|
"audit": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "The collector's program (wai-audit).",
|
|
"x-cli": {
|
|
"flag": "--audit"
|
|
}
|
|
}
|
|
},
|
|
"required": [
|
|
"served",
|
|
"channel",
|
|
"bundles"
|
|
],
|
|
"additionalProperties": false
|
|
},
|
|
"output": {
|
|
"type": "object",
|
|
"properties": {
|
|
"text": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"text"
|
|
]
|
|
},
|
|
"stream": null,
|
|
"since": "0.6.0",
|
|
"deprecated": null,
|
|
"receipt": false,
|
|
"needs": null,
|
|
"names": {
|
|
"cli": "wai audit check",
|
|
"mcp": null,
|
|
"c": "wai_audit_check",
|
|
"rust": "wai::audit::check",
|
|
"sdk": "wai.audit.check"
|
|
}
|
|
},
|
|
{
|
|
"id": "audit.verify",
|
|
"summary": "A stream-audit session bundle verified for its owner and the channels it serves, its outcome as JSON, by wai-audit itself",
|
|
"cli": "wai audit verify",
|
|
"aliases": [],
|
|
"usage": [
|
|
"wai audit verify <bundle> <channel>... [--owner <hex>] [--audit BIN] wai-audit verify (extensions/stream-audit.md",
|
|
" §9, §10): the bundle's outcome for the owner's key (--owner, or WAI_AUDIT_OWNER) and the channels named; exit 1 when it",
|
|
" is refused; what it prints and its exit status are wai-audit's. wai verify reads a bundle the same way"
|
|
],
|
|
"placement": "local",
|
|
"effect": "reads",
|
|
"dry_run": false,
|
|
"confirm": "never",
|
|
"route": null,
|
|
"doors": {
|
|
"cli": true,
|
|
"mcp": false,
|
|
"http": false
|
|
},
|
|
"toolset": "core",
|
|
"stability": "preview",
|
|
"input": {
|
|
"type": "object",
|
|
"properties": {
|
|
"bundle": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "The session bundle, JSON.",
|
|
"x-cli": {
|
|
"positional": true
|
|
}
|
|
},
|
|
"channels": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
},
|
|
"description": "The channels the owner serves.",
|
|
"x-cli": {
|
|
"positional": true
|
|
}
|
|
},
|
|
"owner": {
|
|
"type": "string",
|
|
"description": "The owner's key, 64 hexadecimal digits (WAI_AUDIT_OWNER otherwise).",
|
|
"x-cli": {
|
|
"flag": "--owner"
|
|
}
|
|
},
|
|
"audit": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "The collector's program (wai-audit).",
|
|
"x-cli": {
|
|
"flag": "--audit"
|
|
}
|
|
}
|
|
},
|
|
"required": [
|
|
"bundle",
|
|
"channels"
|
|
],
|
|
"additionalProperties": false
|
|
},
|
|
"output": {
|
|
"type": "object",
|
|
"required": [
|
|
"outcome"
|
|
],
|
|
"description": "The bundle's outcome as wai-audit verify prints it (extensions/stream-audit.md §10): accept with the session's record, or refuse with the reason and where"
|
|
},
|
|
"stream": null,
|
|
"since": "0.6.0",
|
|
"deprecated": null,
|
|
"receipt": false,
|
|
"needs": null,
|
|
"names": {
|
|
"cli": "wai audit verify",
|
|
"mcp": null,
|
|
"c": "wai_audit_verify",
|
|
"rust": "wai::audit::verify",
|
|
"sdk": "wai.audit.verify"
|
|
}
|
|
},
|
|
{
|
|
"id": "service.start",
|
|
"summary": "A service of the toolchain started on this machine by its own program, wai-<role>, from its configuration; --check holds the configuration to the program and starts nothing",
|
|
"cli": "wai serve",
|
|
"aliases": [],
|
|
"usage": [
|
|
"wai serve <role> [--config <file>] [--check] [--bin <program>] the role's program, run as itself: relay (wai-relay),",
|
|
" room (wai-room), ingest (wai-ingest) and key-release (wai-key-release) from the configuration file --config names;",
|
|
" audit (wai-audit), fleet (wai-fleet), ledger (wai-ledger) and quantum-service (wai-quantum-service) from their",
|
|
" environment, as each program's own documentation states it. --check has the program read the file as it would",
|
|
" start from it, report, and start nothing (exit 1 when it does not hold). What it prints and its exit status are the",
|
|
" program's. The program is --bin, $WAI_<ROLE>_BIN, the program beside wai, or on PATH; one that is not there is exit 5"
|
|
],
|
|
"placement": "local",
|
|
"effect": "runs",
|
|
"dry_run": true,
|
|
"confirm": "when-replacing-an-unnamed-file",
|
|
"route": null,
|
|
"doors": {
|
|
"cli": true,
|
|
"mcp": false,
|
|
"http": false
|
|
},
|
|
"toolset": "core",
|
|
"stability": "preview",
|
|
"input": {
|
|
"type": "object",
|
|
"properties": {
|
|
"role": {
|
|
"type": "string",
|
|
"description": "relay, room, ingest, key-release, audit, fleet, ledger or quantum-service.",
|
|
"x-cli": {
|
|
"positional": true
|
|
}
|
|
},
|
|
"config": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "The role's configuration file (relay, room, ingest and key-release).",
|
|
"x-cli": {
|
|
"flag": "--config"
|
|
}
|
|
},
|
|
"check": {
|
|
"type": "boolean",
|
|
"description": "Have the program read the configuration and report, starting nothing.",
|
|
"x-cli": {
|
|
"flag": "--check"
|
|
}
|
|
},
|
|
"bin": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "The role's program (wai-<role>).",
|
|
"x-cli": {
|
|
"flag": "--bin"
|
|
}
|
|
}
|
|
},
|
|
"required": [
|
|
"role"
|
|
],
|
|
"additionalProperties": false
|
|
},
|
|
"output": {
|
|
"type": "object",
|
|
"properties": {
|
|
"text": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"text"
|
|
]
|
|
},
|
|
"stream": null,
|
|
"since": "0.6.0",
|
|
"deprecated": null,
|
|
"receipt": false,
|
|
"needs": null,
|
|
"names": {
|
|
"cli": "wai service start",
|
|
"mcp": null,
|
|
"c": "wai_service_start",
|
|
"rust": "wai::service::start",
|
|
"sdk": "wai.service.start"
|
|
}
|
|
},
|
|
{
|
|
"id": "quantum.run",
|
|
"summary": "An OpenQASM program run on this machine as the quantum job service plans it, its result signed with this user's key, by wai-quantum itself",
|
|
"cli": "wai quantum run",
|
|
"aliases": [],
|
|
"usage": [
|
|
"wai quantum run [<program.qasm>] [wai-quantum run's options] [--quantum BIN] wai-quantum run: what it prints (with",
|
|
" --json, its JSON) and its exit status are wai-quantum's. The program is --quantum, $WAI_QUANTUM_BIN, wai-quantum beside",
|
|
" wai, or wai-quantum on PATH"
|
|
],
|
|
"placement": "local",
|
|
"effect": "runs",
|
|
"dry_run": true,
|
|
"confirm": "when-replacing-an-unnamed-file",
|
|
"route": null,
|
|
"doors": {
|
|
"cli": true,
|
|
"mcp": true,
|
|
"http": false
|
|
},
|
|
"toolset": "quantum",
|
|
"stability": "preview",
|
|
"input": {
|
|
"type": "object",
|
|
"properties": {
|
|
"program": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "The OpenQASM program; standard input when it is left out.",
|
|
"x-cli": {
|
|
"positional": true
|
|
}
|
|
},
|
|
"quantum": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "The quantum command line (wai-quantum).",
|
|
"x-cli": {
|
|
"flag": "--quantum"
|
|
}
|
|
}
|
|
},
|
|
"required": [],
|
|
"additionalProperties": false
|
|
},
|
|
"output": {
|
|
"description": "What wai-quantum prints for the verb with --json: its own JSON, unchanged"
|
|
},
|
|
"stream": null,
|
|
"since": "0.6.0",
|
|
"deprecated": null,
|
|
"receipt": false,
|
|
"needs": null,
|
|
"names": {
|
|
"cli": "wai quantum run",
|
|
"mcp": "quantum_run",
|
|
"c": "wai_quantum_run",
|
|
"rust": "wai::quantum::run",
|
|
"sdk": "wai.quantum.run"
|
|
}
|
|
},
|
|
{
|
|
"id": "quantum.inspect",
|
|
"summary": "The method an OpenQASM program would run on and why, with the memory and work it would take, without running it, by wai-quantum itself",
|
|
"cli": "wai quantum plan",
|
|
"aliases": [],
|
|
"usage": [
|
|
"wai quantum plan [<program.qasm>] [wai-quantum plan's options] [--quantum BIN] wai-quantum plan: what it prints and",
|
|
" its exit status are wai-quantum's"
|
|
],
|
|
"placement": "local",
|
|
"effect": "reads",
|
|
"dry_run": false,
|
|
"confirm": "never",
|
|
"route": null,
|
|
"doors": {
|
|
"cli": true,
|
|
"mcp": true,
|
|
"http": false
|
|
},
|
|
"toolset": "quantum",
|
|
"stability": "preview",
|
|
"input": {
|
|
"type": "object",
|
|
"properties": {
|
|
"program": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "The OpenQASM program; standard input when it is left out.",
|
|
"x-cli": {
|
|
"positional": true
|
|
}
|
|
},
|
|
"quantum": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "The quantum command line (wai-quantum).",
|
|
"x-cli": {
|
|
"flag": "--quantum"
|
|
}
|
|
}
|
|
},
|
|
"required": [],
|
|
"additionalProperties": false
|
|
},
|
|
"output": {
|
|
"description": "What wai-quantum prints for the verb with --json: its own JSON, unchanged"
|
|
},
|
|
"stream": null,
|
|
"since": "0.6.0",
|
|
"deprecated": null,
|
|
"receipt": false,
|
|
"needs": null,
|
|
"names": {
|
|
"cli": "wai quantum inspect",
|
|
"mcp": "quantum_inspect",
|
|
"c": "wai_quantum_inspect",
|
|
"rust": "wai::quantum::inspect",
|
|
"sdk": "wai.quantum.inspect"
|
|
}
|
|
},
|
|
{
|
|
"id": "quantum.check",
|
|
"summary": "An OpenQASM program read as the engine reads it, each problem with its line, by wai-quantum itself",
|
|
"cli": "wai quantum lint",
|
|
"aliases": [],
|
|
"usage": [
|
|
"wai quantum lint [<program.qasm>] [wai-quantum lint's options] [--quantum BIN] wai-quantum lint: what it prints and",
|
|
" its exit status are wai-quantum's"
|
|
],
|
|
"placement": "local",
|
|
"effect": "reads",
|
|
"dry_run": false,
|
|
"confirm": "never",
|
|
"route": null,
|
|
"doors": {
|
|
"cli": true,
|
|
"mcp": true,
|
|
"http": false
|
|
},
|
|
"toolset": "quantum",
|
|
"stability": "preview",
|
|
"input": {
|
|
"type": "object",
|
|
"properties": {
|
|
"program": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "The OpenQASM program; standard input when it is left out.",
|
|
"x-cli": {
|
|
"positional": true
|
|
}
|
|
},
|
|
"quantum": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "The quantum command line (wai-quantum).",
|
|
"x-cli": {
|
|
"flag": "--quantum"
|
|
}
|
|
}
|
|
},
|
|
"required": [],
|
|
"additionalProperties": false
|
|
},
|
|
"output": {
|
|
"description": "What wai-quantum prints for the verb with --json: its own JSON, unchanged"
|
|
},
|
|
"stream": null,
|
|
"since": "0.6.0",
|
|
"deprecated": null,
|
|
"receipt": false,
|
|
"needs": null,
|
|
"names": {
|
|
"cli": "wai quantum check",
|
|
"mcp": "quantum_check",
|
|
"c": "wai_quantum_check",
|
|
"rust": "wai::quantum::check",
|
|
"sdk": "wai.quantum.check"
|
|
}
|
|
},
|
|
{
|
|
"id": "quantum.verify",
|
|
"summary": "A quantum result's receipt checked: one from a run here, from the job service or from a lab tool, by wai-quantum itself",
|
|
"cli": "wai quantum verify",
|
|
"aliases": [],
|
|
"usage": [
|
|
"wai quantum verify <result.json> [wai-quantum verify's options] [--quantum BIN] wai-quantum verify: what it prints",
|
|
" and its exit status are wai-quantum's"
|
|
],
|
|
"placement": "local",
|
|
"effect": "reads",
|
|
"dry_run": false,
|
|
"confirm": "never",
|
|
"route": null,
|
|
"doors": {
|
|
"cli": true,
|
|
"mcp": true,
|
|
"http": false
|
|
},
|
|
"toolset": "quantum",
|
|
"stability": "preview",
|
|
"input": {
|
|
"type": "object",
|
|
"properties": {
|
|
"result": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "A result with its receipt (run --json, submit --json, the service's), or a lab receipt.",
|
|
"x-cli": {
|
|
"positional": true
|
|
}
|
|
},
|
|
"quantum": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "The quantum command line (wai-quantum).",
|
|
"x-cli": {
|
|
"flag": "--quantum"
|
|
}
|
|
}
|
|
},
|
|
"required": [
|
|
"result"
|
|
],
|
|
"additionalProperties": false
|
|
},
|
|
"output": {
|
|
"description": "What wai-quantum prints for the verb with --json: its own JSON, unchanged"
|
|
},
|
|
"stream": null,
|
|
"since": "0.6.0",
|
|
"deprecated": null,
|
|
"receipt": false,
|
|
"needs": null,
|
|
"names": {
|
|
"cli": "wai quantum verify",
|
|
"mcp": "quantum_verify",
|
|
"c": "wai_quantum_verify",
|
|
"rust": "wai::quantum::verify",
|
|
"sdk": "wai.quantum.verify"
|
|
}
|
|
},
|
|
{
|
|
"id": "quantum.list",
|
|
"summary": "Each simulation method, what it takes and how far it reaches in a job's memory here, by wai-quantum itself",
|
|
"cli": "wai quantum methods",
|
|
"aliases": [],
|
|
"usage": [
|
|
"wai quantum methods [wai-quantum methods' options] [--quantum BIN] wai-quantum methods: what it prints and its exit",
|
|
" status are wai-quantum's"
|
|
],
|
|
"placement": "local",
|
|
"effect": "reads",
|
|
"dry_run": false,
|
|
"confirm": "never",
|
|
"route": null,
|
|
"doors": {
|
|
"cli": true,
|
|
"mcp": true,
|
|
"http": false
|
|
},
|
|
"toolset": "quantum",
|
|
"stability": "preview",
|
|
"input": {
|
|
"type": "object",
|
|
"properties": {
|
|
"quantum": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "The quantum command line (wai-quantum).",
|
|
"x-cli": {
|
|
"flag": "--quantum"
|
|
}
|
|
}
|
|
},
|
|
"required": [],
|
|
"additionalProperties": false
|
|
},
|
|
"output": {
|
|
"description": "What wai-quantum prints for the verb with --json: its own JSON, unchanged"
|
|
},
|
|
"stream": null,
|
|
"since": "0.6.0",
|
|
"deprecated": null,
|
|
"receipt": false,
|
|
"needs": null,
|
|
"names": {
|
|
"cli": "wai quantum list",
|
|
"mcp": "quantum_list",
|
|
"c": "wai_quantum_list",
|
|
"rust": "wai::quantum::list",
|
|
"sdk": "wai.quantum.list"
|
|
}
|
|
},
|
|
{
|
|
"id": "mcp.start",
|
|
"summary": "WAI's operations as tools for a coding agent: a Model Context Protocol server on standard input and output, in toolsets",
|
|
"cli": "wai mcp",
|
|
"aliases": [],
|
|
"usage": [
|
|
"wai mcp [--toolset core,dev,app,quantum] [--read-only] [--project DIR] [--spec-root DIR] [--room-bin BIN] [--relay-bin BIN]",
|
|
" [--quantum-bin BIN] [--target <name|url> [--allow-write]] serves until standard input closes; --dry-run names the",
|
|
" tools it would serve and serves nothing. The quantum toolset's tools are wai-quantum's own, each answered by",
|
|
" wai-quantum mcp on this machine. With --target, the operations of the service's API are tools too, each sent to its",
|
|
" route on that target alone: those that read it, and those that change it where the server may (a target on",
|
|
" this machine, or another with --allow-write; never with --read-only or to a read-only target)"
|
|
],
|
|
"placement": "client",
|
|
"effect": "runs",
|
|
"dry_run": true,
|
|
"confirm": "when-replacing-an-unnamed-file",
|
|
"route": null,
|
|
"doors": {
|
|
"cli": true,
|
|
"mcp": false,
|
|
"http": false
|
|
},
|
|
"toolset": "core",
|
|
"stability": "preview",
|
|
"input": {
|
|
"type": "object",
|
|
"properties": {
|
|
"toolset": {
|
|
"type": "string",
|
|
"description": "The toolsets to offer, comma-separated (core when none is named).",
|
|
"x-cli": {
|
|
"flag": "--toolset"
|
|
}
|
|
},
|
|
"read_only": {
|
|
"type": "boolean",
|
|
"description": "Offer only the tools that read or run a verifier.",
|
|
"x-cli": {
|
|
"flag": "--read-only"
|
|
}
|
|
},
|
|
"project": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "The directory the server may write in (the current one).",
|
|
"x-cli": {
|
|
"flag": "--project"
|
|
}
|
|
},
|
|
"spec_root": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "The wai/ directory whose text and corpora the tools read.",
|
|
"x-cli": {
|
|
"flag": "--spec-root"
|
|
}
|
|
},
|
|
"room_bin": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "The room service the development stack runs.",
|
|
"x-cli": {
|
|
"flag": "--room-bin"
|
|
}
|
|
},
|
|
"relay_bin": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "The relay the development stack runs.",
|
|
"x-cli": {
|
|
"flag": "--relay-bin"
|
|
}
|
|
},
|
|
"quantum_bin": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "The quantum command line whose server answers the quantum toolset (wai-quantum).",
|
|
"x-cli": {
|
|
"flag": "--quantum-bin"
|
|
}
|
|
},
|
|
"target": {
|
|
"type": "string",
|
|
"description": "The service it acts on: a target's name (wai target list) or a service's http:// or https:// address.",
|
|
"x-cli": {
|
|
"flag": "--target"
|
|
}
|
|
},
|
|
"allow_write": {
|
|
"type": "boolean",
|
|
"description": "Offer the tools that change the target where it is on another machine.",
|
|
"x-cli": {
|
|
"flag": "--allow-write"
|
|
}
|
|
}
|
|
},
|
|
"required": [],
|
|
"additionalProperties": false
|
|
},
|
|
"output": {
|
|
"type": "object",
|
|
"properties": {
|
|
"text": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"text"
|
|
]
|
|
},
|
|
"stream": {
|
|
"description": "One JSON-RPC 2.0 message per line, the Model Context Protocol"
|
|
},
|
|
"since": "0.3.0",
|
|
"deprecated": null,
|
|
"receipt": false,
|
|
"needs": {
|
|
"all": [
|
|
"mcp"
|
|
]
|
|
},
|
|
"names": {
|
|
"cli": "wai mcp start",
|
|
"mcp": null,
|
|
"c": "wai_mcp_start",
|
|
"rust": "wai::mcp::start",
|
|
"sdk": "wai.mcp.start"
|
|
}
|
|
},
|
|
{
|
|
"id": "agent.setup",
|
|
"summary": "A project made ready for coding agents: AGENTS.md, an import of it in a CLAUDE.md already there, and wai mcp registered in its MCP configuration",
|
|
"cli": "wai setup-agent",
|
|
"aliases": [],
|
|
"usage": [
|
|
"wai setup-agent [--dir D] [--all] [--only FILE,...] [--toolset core,dev,app] [--command PROGRAM]",
|
|
" a file that exists changes only once confirmed (--yes, or yes at a terminal); --dry-run shows each diff"
|
|
],
|
|
"placement": "local",
|
|
"effect": "writes-project",
|
|
"dry_run": true,
|
|
"confirm": "when-replacing-a-file",
|
|
"route": null,
|
|
"doors": {
|
|
"cli": true,
|
|
"mcp": false,
|
|
"http": false
|
|
},
|
|
"toolset": "core",
|
|
"stability": "preview",
|
|
"input": {
|
|
"type": "object",
|
|
"properties": {
|
|
"dir": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "The project directory (the current one).",
|
|
"x-cli": {
|
|
"flag": "--dir"
|
|
}
|
|
},
|
|
"all": {
|
|
"type": "boolean",
|
|
"description": "Write every agent's configuration file, not only those whose directory is there.",
|
|
"x-cli": {
|
|
"flag": "--all"
|
|
}
|
|
},
|
|
"only": {
|
|
"type": "string",
|
|
"description": "Only these files, comma-separated.",
|
|
"x-cli": {
|
|
"flag": "--only"
|
|
}
|
|
},
|
|
"toolset": {
|
|
"type": "string",
|
|
"description": "The toolsets the registered server offers.",
|
|
"x-cli": {
|
|
"flag": "--toolset"
|
|
}
|
|
},
|
|
"command": {
|
|
"type": "string",
|
|
"description": "The program the registration runs (wai).",
|
|
"x-cli": {
|
|
"flag": "--command"
|
|
}
|
|
}
|
|
},
|
|
"required": [],
|
|
"additionalProperties": false
|
|
},
|
|
"output": {
|
|
"type": "object",
|
|
"required": [
|
|
"project",
|
|
"dry_run",
|
|
"files"
|
|
]
|
|
},
|
|
"stream": null,
|
|
"since": "0.3.0",
|
|
"deprecated": null,
|
|
"receipt": false,
|
|
"needs": null,
|
|
"names": {
|
|
"cli": "wai agent setup",
|
|
"mcp": null,
|
|
"c": "wai_agent_setup",
|
|
"rust": "wai::agent::setup",
|
|
"sdk": "wai.agent.setup"
|
|
}
|
|
},
|
|
{
|
|
"id": "app.guide",
|
|
"summary": "The line language and every WAI widget, as a model writing a WAI app is told them",
|
|
"cli": "wai app guide",
|
|
"aliases": [],
|
|
"usage": [
|
|
"wai app guide what a model writing an app made with Create is told"
|
|
],
|
|
"placement": "local",
|
|
"effect": "reads",
|
|
"dry_run": false,
|
|
"confirm": "never",
|
|
"route": null,
|
|
"doors": {
|
|
"cli": true,
|
|
"mcp": true,
|
|
"http": false
|
|
},
|
|
"toolset": "app",
|
|
"stability": "preview",
|
|
"input": {
|
|
"type": "object",
|
|
"properties": {},
|
|
"required": [],
|
|
"additionalProperties": false
|
|
},
|
|
"output": {
|
|
"type": "object",
|
|
"properties": {
|
|
"text": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"text"
|
|
]
|
|
},
|
|
"stream": null,
|
|
"since": "0.3.0",
|
|
"deprecated": null,
|
|
"receipt": false,
|
|
"needs": {
|
|
"all": [
|
|
"app"
|
|
]
|
|
},
|
|
"names": {
|
|
"cli": "wai app guide",
|
|
"mcp": "app_guide",
|
|
"c": "wai_app_guide",
|
|
"rust": "wai::app::guide",
|
|
"sdk": "wai.app.guide"
|
|
}
|
|
},
|
|
{
|
|
"id": "app.check",
|
|
"summary": "An app program checked against the WAI registry and WAI's rules, every error with its line and reason code; in a project, its room and runtime too",
|
|
"cli": "wai app check",
|
|
"aliases": [],
|
|
"usage": [
|
|
"wai app check [<dir> | <app.oui>] exit 1 when something does not hold, each failure named"
|
|
],
|
|
"placement": "local",
|
|
"effect": "reads",
|
|
"dry_run": false,
|
|
"confirm": "never",
|
|
"route": null,
|
|
"doors": {
|
|
"cli": true,
|
|
"mcp": true,
|
|
"http": false
|
|
},
|
|
"toolset": "app",
|
|
"stability": "preview",
|
|
"input": {
|
|
"type": "object",
|
|
"properties": {
|
|
"program": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "A project directory or a program (.).",
|
|
"x-cli": {
|
|
"positional": true
|
|
}
|
|
}
|
|
},
|
|
"required": [],
|
|
"additionalProperties": false
|
|
},
|
|
"output": {
|
|
"type": "object",
|
|
"required": [
|
|
"program",
|
|
"errors",
|
|
"failures",
|
|
"checked"
|
|
]
|
|
},
|
|
"stream": null,
|
|
"since": "0.3.0",
|
|
"deprecated": null,
|
|
"receipt": false,
|
|
"needs": {
|
|
"all": [
|
|
"app"
|
|
]
|
|
},
|
|
"names": {
|
|
"cli": "wai app check",
|
|
"mcp": "app_check",
|
|
"c": "wai_app_check",
|
|
"rust": "wai::app::check",
|
|
"sdk": "wai.app.check"
|
|
}
|
|
},
|
|
{
|
|
"id": "app.export",
|
|
"summary": "An app made with Create written as a project: the program, wai.json naming its room, the page and its runtime, a README, AGENTS.md and the licence",
|
|
"cli": "wai app export",
|
|
"aliases": [],
|
|
"usage": [
|
|
"wai app export <app.oui> <dir> [--runtime DIR] the same as wai create <dir> --from <app.oui>"
|
|
],
|
|
"placement": "local",
|
|
"effect": "writes-project",
|
|
"dry_run": true,
|
|
"confirm": "when-replacing-an-unnamed-file",
|
|
"route": null,
|
|
"doors": {
|
|
"cli": true,
|
|
"mcp": true,
|
|
"http": false
|
|
},
|
|
"toolset": "app",
|
|
"stability": "preview",
|
|
"input": {
|
|
"type": "object",
|
|
"properties": {
|
|
"program": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "The program made with Create.",
|
|
"x-cli": {
|
|
"positional": true
|
|
}
|
|
},
|
|
"dir": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "A directory that does not exist or is empty.",
|
|
"x-cli": {
|
|
"positional": true
|
|
}
|
|
},
|
|
"runtime": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "A Create runtime ($WAI_APP_RUNTIME, or share/wai/app beside wai).",
|
|
"x-cli": {
|
|
"flag": "--runtime"
|
|
}
|
|
}
|
|
},
|
|
"required": [
|
|
"program",
|
|
"dir"
|
|
],
|
|
"additionalProperties": false
|
|
},
|
|
"output": {
|
|
"type": "object",
|
|
"properties": {
|
|
"text": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"text"
|
|
]
|
|
},
|
|
"stream": null,
|
|
"since": "0.3.0",
|
|
"deprecated": null,
|
|
"receipt": false,
|
|
"needs": {
|
|
"all": [
|
|
"app"
|
|
]
|
|
},
|
|
"names": {
|
|
"cli": "wai app export",
|
|
"mcp": "app_export",
|
|
"c": "wai_app_export",
|
|
"rust": "wai::app::export",
|
|
"sdk": "wai.app.export"
|
|
}
|
|
},
|
|
{
|
|
"id": "app.stream",
|
|
"summary": "A program streamed into the person's open Create page through the bridge wai mcp runs on loopback",
|
|
"cli": null,
|
|
"aliases": [],
|
|
"usage": [
|
|
"wai (wai mcp --toolset app: app_stream)"
|
|
],
|
|
"placement": "local",
|
|
"effect": "runs",
|
|
"dry_run": false,
|
|
"confirm": null,
|
|
"route": null,
|
|
"doors": {
|
|
"cli": false,
|
|
"mcp": true,
|
|
"http": false
|
|
},
|
|
"toolset": "app",
|
|
"stability": "preview",
|
|
"input": {
|
|
"type": "object",
|
|
"properties": {
|
|
"program": {
|
|
"type": "string",
|
|
"description": "The program's text."
|
|
},
|
|
"chunk": {
|
|
"type": "integer",
|
|
"description": "Characters a chunk (24)."
|
|
},
|
|
"pace_ms": {
|
|
"type": "integer",
|
|
"description": "Milliseconds between chunks (30)."
|
|
}
|
|
},
|
|
"required": [
|
|
"program"
|
|
],
|
|
"additionalProperties": false
|
|
},
|
|
"output": {
|
|
"description": "The tool's structured result"
|
|
},
|
|
"stream": null,
|
|
"since": "0.3.0",
|
|
"deprecated": null,
|
|
"receipt": false,
|
|
"needs": {
|
|
"all": [
|
|
"app"
|
|
]
|
|
},
|
|
"names": {
|
|
"cli": null,
|
|
"mcp": "app_stream",
|
|
"c": "wai_app_stream",
|
|
"rust": "wai::app::stream",
|
|
"sdk": "wai.app.stream"
|
|
}
|
|
},
|
|
{
|
|
"id": "registry.show",
|
|
"summary": "One capability's registry entry, whether this build decodes it, its role, and the specification lines that name it",
|
|
"cli": "wai registry show",
|
|
"aliases": [],
|
|
"usage": [
|
|
"wai registry show <capability> [--spec-root <wai-dir>] one capability's registry entry, whether this build decodes it,",
|
|
" its role, and the specification lines that name it, where the specification's text is here (--spec-root,",
|
|
" $WAI_SPEC_ROOT, or the tree this binary was built from)"
|
|
],
|
|
"placement": "local",
|
|
"effect": "reads",
|
|
"dry_run": false,
|
|
"confirm": "never",
|
|
"route": null,
|
|
"doors": {
|
|
"cli": true,
|
|
"mcp": true,
|
|
"http": false
|
|
},
|
|
"toolset": "core",
|
|
"stability": "stable",
|
|
"input": {
|
|
"type": "object",
|
|
"properties": {
|
|
"capability": {
|
|
"type": "string",
|
|
"description": "A capability string, e.g. wai.image.avif.",
|
|
"x-cli": {
|
|
"positional": true
|
|
}
|
|
},
|
|
"spec_root": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "The wai/ directory whose text is read, on the command line (wai mcp has a --spec-root of its own).",
|
|
"x-cli": {
|
|
"flag": "--spec-root"
|
|
}
|
|
}
|
|
},
|
|
"required": [
|
|
"capability"
|
|
],
|
|
"additionalProperties": false
|
|
},
|
|
"output": {
|
|
"description": "The tool's structured result"
|
|
},
|
|
"stream": null,
|
|
"since": "0.3.0",
|
|
"deprecated": null,
|
|
"receipt": false,
|
|
"needs": {
|
|
"all": [
|
|
"mcp"
|
|
]
|
|
},
|
|
"names": {
|
|
"cli": "wai registry show",
|
|
"mcp": "registry_show",
|
|
"c": "wai_registry_show",
|
|
"rust": "wai::registry::show",
|
|
"sdk": "wai.registry.show"
|
|
}
|
|
},
|
|
{
|
|
"id": "docs.search",
|
|
"summary": "Lines of the specification and its extensions holding every word of a query, each with its file, line and section",
|
|
"cli": "wai docs search",
|
|
"aliases": [],
|
|
"usage": [
|
|
"wai docs search <word>... [--limit N] [--spec-root <wai-dir>] the lines of the specification and its extensions that hold",
|
|
" every word, with each one's file, line and section, offline; the text is --spec-root's, $WAI_SPEC_ROOT's, or the",
|
|
" tree this binary was built from"
|
|
],
|
|
"placement": "local",
|
|
"effect": "reads",
|
|
"dry_run": false,
|
|
"confirm": "never",
|
|
"route": null,
|
|
"doors": {
|
|
"cli": true,
|
|
"mcp": true,
|
|
"http": false
|
|
},
|
|
"toolset": "core",
|
|
"stability": "stable",
|
|
"input": {
|
|
"type": "object",
|
|
"properties": {
|
|
"query": {
|
|
"type": "string",
|
|
"description": "Words that must all appear on a line.",
|
|
"x-cli": {
|
|
"positional": true
|
|
}
|
|
},
|
|
"limit": {
|
|
"type": "integer",
|
|
"description": "At most this many hits (20).",
|
|
"x-cli": {
|
|
"flag": "--limit"
|
|
}
|
|
},
|
|
"spec_root": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "The wai/ directory whose text is searched, on the command line (wai mcp has a --spec-root of its own).",
|
|
"x-cli": {
|
|
"flag": "--spec-root"
|
|
}
|
|
}
|
|
},
|
|
"required": [
|
|
"query"
|
|
],
|
|
"additionalProperties": false
|
|
},
|
|
"output": {
|
|
"description": "The tool's structured result"
|
|
},
|
|
"stream": null,
|
|
"since": "0.3.0",
|
|
"deprecated": null,
|
|
"receipt": false,
|
|
"needs": {
|
|
"all": [
|
|
"mcp"
|
|
]
|
|
},
|
|
"names": {
|
|
"cli": "wai docs search",
|
|
"mcp": "docs_search",
|
|
"c": "wai_docs_search",
|
|
"rust": "wai::docs::search",
|
|
"sdk": "wai.docs.search"
|
|
}
|
|
},
|
|
{
|
|
"id": "dev.stop",
|
|
"summary": "The development relay and room service a wai mcp server started, stopped",
|
|
"cli": null,
|
|
"aliases": [],
|
|
"usage": [
|
|
"wai (wai mcp: dev_stop)"
|
|
],
|
|
"placement": "local",
|
|
"effect": "runs",
|
|
"dry_run": false,
|
|
"confirm": null,
|
|
"route": null,
|
|
"doors": {
|
|
"cli": false,
|
|
"mcp": true,
|
|
"http": false
|
|
},
|
|
"toolset": "dev",
|
|
"stability": "stable",
|
|
"input": {
|
|
"type": "object",
|
|
"properties": {},
|
|
"required": [],
|
|
"additionalProperties": false
|
|
},
|
|
"output": {
|
|
"description": "The tool's structured result"
|
|
},
|
|
"stream": null,
|
|
"since": "0.3.0",
|
|
"deprecated": null,
|
|
"receipt": false,
|
|
"needs": null,
|
|
"names": {
|
|
"cli": null,
|
|
"mcp": "dev_stop",
|
|
"c": "wai_dev_stop",
|
|
"rust": "wai::dev::stop",
|
|
"sdk": "wai.dev.stop"
|
|
}
|
|
},
|
|
{
|
|
"id": "room.join",
|
|
"summary": "A test principal enters the development room with its grant, publishes its tracks, and is seen joined by the room's clock",
|
|
"cli": "wai room join",
|
|
"aliases": [],
|
|
"usage": [
|
|
"wai room join --principal NAME [--dir D] [--objects N] on the stack wai dev runs on this machine (D/stack.json; D is",
|
|
" .wai/dev by default): the test principal NAME, its key derived from its name as wai mcp derives it, is granted",
|
|
" the publisher role by the stack's room service, enters the room with a proof of its key, publishes its audio and",
|
|
" video tracks, N objects on each (1) with their receipts, and is seen joined by the room's clock. It stays in the",
|
|
" room until wai room leave. A stale record or stack is refused"
|
|
],
|
|
"placement": "client",
|
|
"effect": "writes-target",
|
|
"dry_run": true,
|
|
"confirm": "always",
|
|
"route": null,
|
|
"doors": {
|
|
"cli": true,
|
|
"mcp": true,
|
|
"http": false
|
|
},
|
|
"toolset": "dev",
|
|
"stability": "stable",
|
|
"input": {
|
|
"type": "object",
|
|
"properties": {
|
|
"target": {
|
|
"type": "string",
|
|
"description": "local: the development room on this machine."
|
|
},
|
|
"principal": {
|
|
"type": "string",
|
|
"description": "A test principal's name; on the command line it is granted the publisher role first, and in wai mcp it is one room_grant granted that role.",
|
|
"x-cli": {
|
|
"flag": "--principal"
|
|
}
|
|
},
|
|
"objects": {
|
|
"type": "integer",
|
|
"description": "Objects on each track (1, at most 64).",
|
|
"x-cli": {
|
|
"flag": "--objects"
|
|
}
|
|
},
|
|
"receipts": {
|
|
"type": "boolean",
|
|
"description": "Each object with its receipt (true); without, the relay drops them."
|
|
},
|
|
"dir": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "The stack's directory, whose stack.json wai dev writes (.wai/dev).",
|
|
"x-cli": {
|
|
"flag": "--dir"
|
|
}
|
|
}
|
|
},
|
|
"required": [
|
|
"principal"
|
|
],
|
|
"additionalProperties": false
|
|
},
|
|
"output": {
|
|
"description": "The tool's structured result"
|
|
},
|
|
"stream": null,
|
|
"since": "0.3.0",
|
|
"deprecated": null,
|
|
"receipt": false,
|
|
"needs": {
|
|
"all": [
|
|
"ed25519"
|
|
]
|
|
},
|
|
"names": {
|
|
"cli": "wai room join",
|
|
"mcp": "room_join",
|
|
"c": "wai_room_join",
|
|
"rust": "wai::room::join",
|
|
"sdk": "wai.room.join"
|
|
}
|
|
},
|
|
{
|
|
"id": "room.leave",
|
|
"summary": "A test principal's session in the development room closed, and its leave seen by the room's clock",
|
|
"cli": "wai room leave",
|
|
"aliases": [],
|
|
"usage": [
|
|
"wai room leave --principal NAME [--dir D] the session of the test principal NAME in the room of the stack wai dev runs",
|
|
" on this machine (D/stack.json) closed, and its leave seen by the room's clock"
|
|
],
|
|
"placement": "client",
|
|
"effect": "writes-target",
|
|
"dry_run": true,
|
|
"confirm": "always",
|
|
"route": null,
|
|
"doors": {
|
|
"cli": true,
|
|
"mcp": true,
|
|
"http": false
|
|
},
|
|
"toolset": "dev",
|
|
"stability": "stable",
|
|
"input": {
|
|
"type": "object",
|
|
"properties": {
|
|
"target": {
|
|
"type": "string",
|
|
"description": "local: the development room on this machine."
|
|
},
|
|
"principal": {
|
|
"type": "string",
|
|
"description": "The test principal's name.",
|
|
"x-cli": {
|
|
"flag": "--principal"
|
|
}
|
|
},
|
|
"dir": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "The stack's directory, whose stack.json wai dev writes (.wai/dev).",
|
|
"x-cli": {
|
|
"flag": "--dir"
|
|
}
|
|
}
|
|
},
|
|
"required": [
|
|
"principal"
|
|
],
|
|
"additionalProperties": false
|
|
},
|
|
"output": {
|
|
"description": "The tool's structured result"
|
|
},
|
|
"stream": null,
|
|
"since": "0.3.0",
|
|
"deprecated": null,
|
|
"receipt": false,
|
|
"needs": {
|
|
"all": [
|
|
"ed25519"
|
|
]
|
|
},
|
|
"names": {
|
|
"cli": "wai room leave",
|
|
"mcp": "room_leave",
|
|
"c": "wai_room_leave",
|
|
"rust": "wai::room::leave",
|
|
"sdk": "wai.room.leave"
|
|
}
|
|
},
|
|
{
|
|
"id": "session.show",
|
|
"summary": "The development room's session as a verifier is given it: descriptor, grants, key-log head and the clock's event chain",
|
|
"cli": "wai session show",
|
|
"aliases": [],
|
|
"usage": [
|
|
"wai session show [--dir D] the room of the stack wai dev runs on this machine (D/stack.json) as a verifier is given",
|
|
" it: its descriptor, grants, key-log head and the clock's event chain, as JSON (wai mcp's receipt_verify takes it)"
|
|
],
|
|
"placement": "client",
|
|
"effect": "reads",
|
|
"dry_run": false,
|
|
"confirm": "never",
|
|
"route": null,
|
|
"doors": {
|
|
"cli": true,
|
|
"mcp": true,
|
|
"http": false
|
|
},
|
|
"toolset": "dev",
|
|
"stability": "stable",
|
|
"input": {
|
|
"type": "object",
|
|
"properties": {
|
|
"target": {
|
|
"type": "string",
|
|
"description": "local: the development room on this machine."
|
|
},
|
|
"dir": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "The stack's directory, whose stack.json wai dev writes (.wai/dev).",
|
|
"x-cli": {
|
|
"flag": "--dir"
|
|
}
|
|
}
|
|
},
|
|
"required": [],
|
|
"additionalProperties": false
|
|
},
|
|
"output": {
|
|
"description": "The tool's structured result"
|
|
},
|
|
"stream": null,
|
|
"since": "0.3.0",
|
|
"deprecated": null,
|
|
"receipt": false,
|
|
"needs": null,
|
|
"names": {
|
|
"cli": "wai session show",
|
|
"mcp": "session_show",
|
|
"c": "wai_session_show",
|
|
"rust": "wai::session::show",
|
|
"sdk": "wai.session.show"
|
|
}
|
|
},
|
|
{
|
|
"id": "room.test",
|
|
"summary": "Synthetic participants on the development stack: a publisher's objects with their receipts received by a viewer, how many, how late, and the path as QUIC measured it",
|
|
"cli": "wai room test",
|
|
"aliases": [],
|
|
"usage": [
|
|
"wai room test [--dir D] [--objects N] [--every-ms MS] [--room BIN] a publisher and a viewer of fresh keys on the",
|
|
" stack wai dev runs on this machine (recorded in D/stack.json; D is .wai/dev by default): the objects",
|
|
" received of those sent (50, one every 20 ms), how late, and over QUIC, when the stack was started with",
|
|
" --impair, the packets QUIC declared lost and its round trip beside the datagrams the impaired path",
|
|
" dropped. A record whose stack is not running, or a stack of another toolchain, is refused as stale.",
|
|
" Exit 1 when an object did not arrive"
|
|
],
|
|
"placement": "client",
|
|
"effect": "runs",
|
|
"dry_run": true,
|
|
"confirm": "when-replacing-an-unnamed-file",
|
|
"route": null,
|
|
"doors": {
|
|
"cli": true,
|
|
"mcp": true,
|
|
"http": false
|
|
},
|
|
"toolset": "dev",
|
|
"stability": "preview",
|
|
"input": {
|
|
"type": "object",
|
|
"properties": {
|
|
"dir": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "The stack's directory, whose stack.json wai dev writes (.wai/dev).",
|
|
"x-cli": {
|
|
"flag": "--dir"
|
|
}
|
|
},
|
|
"objects": {
|
|
"type": "integer",
|
|
"description": "Objects sent (50, at most 1000).",
|
|
"x-cli": {
|
|
"flag": "--objects"
|
|
}
|
|
},
|
|
"every_ms": {
|
|
"type": "integer",
|
|
"description": "Milliseconds between objects (20).",
|
|
"x-cli": {
|
|
"flag": "--every-ms"
|
|
}
|
|
},
|
|
"room": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "The room service's binary, whose participant mode runs them (the stack's).",
|
|
"x-cli": {
|
|
"flag": "--room"
|
|
}
|
|
}
|
|
},
|
|
"required": [],
|
|
"additionalProperties": false
|
|
},
|
|
"output": {
|
|
"description": "The tool's structured result"
|
|
},
|
|
"stream": null,
|
|
"since": "0.5.0",
|
|
"deprecated": null,
|
|
"receipt": false,
|
|
"needs": null,
|
|
"names": {
|
|
"cli": "wai room test",
|
|
"mcp": "room_test",
|
|
"c": "wai_room_test",
|
|
"rust": "wai::room::test",
|
|
"sdk": "wai.room.test"
|
|
}
|
|
},
|
|
{
|
|
"id": "room.load",
|
|
"summary": "Synthetic participants load the development stack: one publisher, many viewers, the deliveries made of those owed and how late; the client half alone",
|
|
"cli": "wai room load",
|
|
"aliases": [],
|
|
"usage": [
|
|
"wai room load [--dir D] [--viewers N] [--objects N] [--every-ms MS] [--room BIN] one publisher and N viewers (8, at",
|
|
" most 64) of fresh keys on the stack wai dev runs on this machine (D/stack.json): the deliveries made of",
|
|
" those owed, how late, how long the viewers took to enter, and the path over QUIC. The client half alone:",
|
|
" nothing measures what the relay spends. A stale record or stack is refused. Exit 1 when a delivery",
|
|
" was not made"
|
|
],
|
|
"placement": "client",
|
|
"effect": "runs",
|
|
"dry_run": true,
|
|
"confirm": "when-replacing-an-unnamed-file",
|
|
"route": null,
|
|
"doors": {
|
|
"cli": true,
|
|
"mcp": true,
|
|
"http": false
|
|
},
|
|
"toolset": "dev",
|
|
"stability": "preview",
|
|
"input": {
|
|
"type": "object",
|
|
"properties": {
|
|
"dir": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "The stack's directory, whose stack.json wai dev writes (.wai/dev).",
|
|
"x-cli": {
|
|
"flag": "--dir"
|
|
}
|
|
},
|
|
"viewers": {
|
|
"type": "integer",
|
|
"description": "Viewers (8, at most 64).",
|
|
"x-cli": {
|
|
"flag": "--viewers"
|
|
}
|
|
},
|
|
"objects": {
|
|
"type": "integer",
|
|
"description": "Objects sent (50, at most 1000).",
|
|
"x-cli": {
|
|
"flag": "--objects"
|
|
}
|
|
},
|
|
"every_ms": {
|
|
"type": "integer",
|
|
"description": "Milliseconds between objects (20).",
|
|
"x-cli": {
|
|
"flag": "--every-ms"
|
|
}
|
|
},
|
|
"room": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "The room service's binary, whose participant mode runs them (the stack's).",
|
|
"x-cli": {
|
|
"flag": "--room"
|
|
}
|
|
}
|
|
},
|
|
"required": [],
|
|
"additionalProperties": false
|
|
},
|
|
"output": {
|
|
"description": "The tool's structured result"
|
|
},
|
|
"stream": null,
|
|
"since": "0.5.0",
|
|
"deprecated": null,
|
|
"receipt": false,
|
|
"needs": null,
|
|
"names": {
|
|
"cli": "wai room load",
|
|
"mcp": "room_load",
|
|
"c": "wai_room_load",
|
|
"rust": "wai::room::load",
|
|
"sdk": "wai.room.load"
|
|
}
|
|
},
|
|
{
|
|
"id": "room.invite",
|
|
"summary": "An invitation to host the development room's remote desktop, signed by the room's authority from the stack's keys",
|
|
"cli": "wai room invite",
|
|
"aliases": [],
|
|
"usage": [
|
|
"wai room invite [--dir D] [--seconds S] [--room BIN] an invitation, in hexadecimal, signed by the authority of the",
|
|
" room wai dev keeps in D (D/room-keys.toml; D is .wai/dev by default) by its room service's invite mode, good for S",
|
|
" seconds (3600, at most 30 days) and bound to the first key that presents it: what the host of a room started with",
|
|
" wai dev --remote enters with. Nothing is sent and nothing written"
|
|
],
|
|
"placement": "local",
|
|
"effect": "reads",
|
|
"dry_run": false,
|
|
"confirm": "never",
|
|
"route": null,
|
|
"doors": {
|
|
"cli": true,
|
|
"mcp": false,
|
|
"http": false
|
|
},
|
|
"toolset": "dev",
|
|
"stability": "preview",
|
|
"input": {
|
|
"type": "object",
|
|
"properties": {
|
|
"dir": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "The stack's directory, which holds its room's keys (.wai/dev).",
|
|
"x-cli": {
|
|
"flag": "--dir"
|
|
}
|
|
},
|
|
"seconds": {
|
|
"type": "integer",
|
|
"description": "How long the invitation holds, in seconds (3600, at most 2592000).",
|
|
"x-cli": {
|
|
"flag": "--seconds"
|
|
}
|
|
},
|
|
"room": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "The room service's binary, whose invite mode signs it (the stack's, else wai-room beside wai or on PATH).",
|
|
"x-cli": {
|
|
"flag": "--room"
|
|
}
|
|
}
|
|
},
|
|
"required": [],
|
|
"additionalProperties": false
|
|
},
|
|
"output": {
|
|
"type": "object",
|
|
"required": [
|
|
"development_only",
|
|
"invitation",
|
|
"valid_s",
|
|
"keys"
|
|
],
|
|
"description": "An invitation to host the development room's remote desktop, in hexadecimal, signed by the room's authority (the keys file named) and good for valid_s seconds, bound to the first key that presents it"
|
|
},
|
|
"stream": null,
|
|
"since": "0.6.0",
|
|
"deprecated": null,
|
|
"receipt": false,
|
|
"needs": null,
|
|
"names": {
|
|
"cli": "wai room invite",
|
|
"mcp": null,
|
|
"c": "wai_room_invite",
|
|
"rust": "wai::room::invite",
|
|
"sdk": "wai.room.invite"
|
|
}
|
|
},
|
|
{
|
|
"id": "log.tail",
|
|
"summary": "A log of the development stack, read from its directory: the relay's, the room service's, the conversation's or the synthetic participants'; --follow reads on as it grows",
|
|
"cli": "wai log tail",
|
|
"aliases": [],
|
|
"usage": [
|
|
"wai log tail [--dir D] [--name relay|room|conversation|participants] [--from BYTE] [--follow] [--for S] the log",
|
|
" wai dev keeps in D (.wai/dev by default; relay by default) from BYTE on, or its last 64 KiB; with --follow it",
|
|
" goes on reading whole lines as the log grows, while the stack recorded there runs (D/stack.json) or for S",
|
|
" seconds, and with --json writes each read as one JSON line"
|
|
],
|
|
"placement": "local",
|
|
"effect": "reads",
|
|
"dry_run": false,
|
|
"confirm": "never",
|
|
"route": null,
|
|
"doors": {
|
|
"cli": true,
|
|
"mcp": false,
|
|
"http": false
|
|
},
|
|
"toolset": "dev",
|
|
"stability": "preview",
|
|
"input": {
|
|
"type": "object",
|
|
"properties": {
|
|
"dir": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "The stack's directory, where wai dev keeps its logs (.wai/dev).",
|
|
"x-cli": {
|
|
"flag": "--dir"
|
|
}
|
|
},
|
|
"name": {
|
|
"type": "string",
|
|
"description": "The log: relay, room, conversation or participants (relay).",
|
|
"x-cli": {
|
|
"flag": "--name"
|
|
}
|
|
},
|
|
"from": {
|
|
"type": "integer",
|
|
"description": "The byte to read from (the last 64 KiB otherwise).",
|
|
"x-cli": {
|
|
"flag": "--from"
|
|
}
|
|
},
|
|
"follow": {
|
|
"type": "boolean",
|
|
"description": "Read on as the log grows, while the stack runs.",
|
|
"x-cli": {
|
|
"flag": "--follow"
|
|
}
|
|
},
|
|
"for": {
|
|
"type": "integer",
|
|
"description": "With --follow, stop after this many seconds.",
|
|
"x-cli": {
|
|
"flag": "--for"
|
|
}
|
|
}
|
|
},
|
|
"required": [],
|
|
"additionalProperties": false
|
|
},
|
|
"output": {
|
|
"type": "object",
|
|
"required": [
|
|
"name",
|
|
"file",
|
|
"from",
|
|
"next",
|
|
"text"
|
|
],
|
|
"properties": {
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"file": {
|
|
"type": "string"
|
|
},
|
|
"from": {
|
|
"type": "integer"
|
|
},
|
|
"next": {
|
|
"type": "integer"
|
|
},
|
|
"text": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"description": "The log's name and file, the text from the byte from to the byte next, and where a later read starts (next)"
|
|
},
|
|
"stream": {
|
|
"type": "object",
|
|
"required": [
|
|
"name",
|
|
"from",
|
|
"next",
|
|
"text"
|
|
],
|
|
"properties": {
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"from": {
|
|
"type": "integer"
|
|
},
|
|
"next": {
|
|
"type": "integer"
|
|
},
|
|
"text": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"description": "What the log gained: whole lines, from the byte from to the byte next"
|
|
},
|
|
"since": "0.6.0",
|
|
"deprecated": null,
|
|
"receipt": false,
|
|
"needs": null,
|
|
"names": {
|
|
"cli": "wai log tail",
|
|
"mcp": null,
|
|
"c": "wai_log_tail",
|
|
"rust": "wai::log::tail",
|
|
"sdk": "wai.log.tail"
|
|
}
|
|
},
|
|
{
|
|
"id": "session.list",
|
|
"summary": "The sessions the development stack's relay has closed, each its signed summary as the relay wrote it; --follow lists each as it closes",
|
|
"cli": "wai session list",
|
|
"aliases": [],
|
|
"usage": [
|
|
"wai session list [--dir D] [--last N] [--follow] [--for S] the signed session summaries the stack's relay wrote in D",
|
|
" (D/sessions.jsonl; D is .wai/dev by default), the last N (50; 0 for all), oldest first; with --follow each new one",
|
|
" as the relay writes it, while the stack recorded there runs (D/stack.json) or for S seconds, and with --json each",
|
|
" as one JSON line"
|
|
],
|
|
"placement": "local",
|
|
"effect": "reads",
|
|
"dry_run": false,
|
|
"confirm": "never",
|
|
"route": null,
|
|
"doors": {
|
|
"cli": true,
|
|
"mcp": false,
|
|
"http": false
|
|
},
|
|
"toolset": "dev",
|
|
"stability": "preview",
|
|
"input": {
|
|
"type": "object",
|
|
"properties": {
|
|
"dir": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "The stack's directory, where its relay writes sessions.jsonl (.wai/dev).",
|
|
"x-cli": {
|
|
"flag": "--dir"
|
|
}
|
|
},
|
|
"last": {
|
|
"type": "integer",
|
|
"description": "How many of the latest to list (50; 0 lists every one).",
|
|
"x-cli": {
|
|
"flag": "--last"
|
|
}
|
|
},
|
|
"follow": {
|
|
"type": "boolean",
|
|
"description": "List each new summary as the relay writes it, while the stack runs.",
|
|
"x-cli": {
|
|
"flag": "--follow"
|
|
}
|
|
},
|
|
"for": {
|
|
"type": "integer",
|
|
"description": "With --follow, stop after this many seconds.",
|
|
"x-cli": {
|
|
"flag": "--for"
|
|
}
|
|
}
|
|
},
|
|
"required": [],
|
|
"additionalProperties": false
|
|
},
|
|
"output": {
|
|
"type": "object",
|
|
"required": [
|
|
"file",
|
|
"sessions",
|
|
"unread"
|
|
],
|
|
"properties": {
|
|
"file": {
|
|
"type": "string"
|
|
},
|
|
"sessions": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"required": [
|
|
"summary",
|
|
"signature"
|
|
]
|
|
}
|
|
},
|
|
"unread": {
|
|
"type": "integer"
|
|
}
|
|
},
|
|
"description": "The relay's signed session summaries (sessions.jsonl), oldest first, each as the relay wrote it, and how many lines did not read as one"
|
|
},
|
|
"stream": {
|
|
"type": "object",
|
|
"required": [
|
|
"summary",
|
|
"signature"
|
|
],
|
|
"description": "One signed session summary, as the relay wrote it"
|
|
},
|
|
"since": "0.6.0",
|
|
"deprecated": null,
|
|
"receipt": false,
|
|
"needs": null,
|
|
"names": {
|
|
"cli": "wai session list",
|
|
"mcp": null,
|
|
"c": "wai_session_list",
|
|
"rust": "wai::session::list",
|
|
"sdk": "wai.session.list"
|
|
}
|
|
},
|
|
{
|
|
"id": "service.show",
|
|
"summary": "The service's health",
|
|
"cli": "wai service show",
|
|
"aliases": [],
|
|
"usage": [
|
|
"wai service show [--target <name|url>] [--query <name>=<value>]... GET / on the room service"
|
|
],
|
|
"placement": "service",
|
|
"effect": "reads",
|
|
"dry_run": false,
|
|
"confirm": "never",
|
|
"route": {
|
|
"service": "wai-room",
|
|
"method": "GET",
|
|
"path": "/"
|
|
},
|
|
"doors": {
|
|
"cli": true,
|
|
"mcp": false,
|
|
"http": true
|
|
},
|
|
"toolset": "core",
|
|
"stability": "preview",
|
|
"input": {
|
|
"$ref": "joule-code/joule-code-rs/crates/joule-moq-room/openapi.json#/paths/~1/get"
|
|
},
|
|
"output": {
|
|
"type": "object",
|
|
"required": [
|
|
"target",
|
|
"request",
|
|
"status",
|
|
"body"
|
|
],
|
|
"description": "The service's answer: the target the request went to (its name, and its address), the request (method and path), the HTTP status, the body (its JSON, or {\"text\": ...}), and where the key it carried came from (WAI_TOKEN, stored, or none), never the key"
|
|
},
|
|
"stream": null,
|
|
"since": "0.3.0",
|
|
"deprecated": null,
|
|
"receipt": false,
|
|
"needs": null,
|
|
"names": {
|
|
"cli": "wai service show",
|
|
"mcp": null,
|
|
"c": "wai_service_show",
|
|
"rust": "wai::service::show",
|
|
"sdk": "wai.service.show"
|
|
}
|
|
},
|
|
{
|
|
"id": "service.check",
|
|
"summary": "The service's health",
|
|
"cli": "wai service check",
|
|
"aliases": [],
|
|
"usage": [
|
|
"wai service check [--target <name|url>] [--query <name>=<value>]... GET /health on the room service"
|
|
],
|
|
"placement": "service",
|
|
"effect": "reads",
|
|
"dry_run": false,
|
|
"confirm": "never",
|
|
"route": {
|
|
"service": "wai-room",
|
|
"method": "GET",
|
|
"path": "/health"
|
|
},
|
|
"doors": {
|
|
"cli": true,
|
|
"mcp": false,
|
|
"http": true
|
|
},
|
|
"toolset": "core",
|
|
"stability": "preview",
|
|
"input": {
|
|
"$ref": "joule-code/joule-code-rs/crates/joule-moq-room/openapi.json#/paths/~1health/get"
|
|
},
|
|
"output": {
|
|
"type": "object",
|
|
"required": [
|
|
"target",
|
|
"request",
|
|
"status",
|
|
"body"
|
|
],
|
|
"description": "The service's answer: the target the request went to (its name, and its address), the request (method and path), the HTTP status, the body (its JSON, or {\"text\": ...}), and where the key it carried came from (WAI_TOKEN, stored, or none), never the key"
|
|
},
|
|
"stream": null,
|
|
"since": "0.3.0",
|
|
"deprecated": null,
|
|
"receipt": false,
|
|
"needs": null,
|
|
"names": {
|
|
"cli": "wai service check",
|
|
"mcp": null,
|
|
"c": "wai_service_check",
|
|
"rust": "wai::service::check",
|
|
"sdk": "wai.service.check"
|
|
}
|
|
},
|
|
{
|
|
"id": "room.show",
|
|
"summary": "The current room",
|
|
"cli": "wai room show",
|
|
"aliases": [],
|
|
"usage": [
|
|
"wai room show [--target <name|url>] [--query <name>=<value>]... GET /room on the room service"
|
|
],
|
|
"placement": "service",
|
|
"effect": "reads",
|
|
"dry_run": false,
|
|
"confirm": "never",
|
|
"route": {
|
|
"service": "wai-room",
|
|
"method": "GET",
|
|
"path": "/room"
|
|
},
|
|
"doors": {
|
|
"cli": true,
|
|
"mcp": false,
|
|
"http": true
|
|
},
|
|
"toolset": "core",
|
|
"stability": "preview",
|
|
"input": {
|
|
"$ref": "joule-code/joule-code-rs/crates/joule-moq-room/openapi.json#/paths/~1room/get"
|
|
},
|
|
"output": {
|
|
"type": "object",
|
|
"required": [
|
|
"target",
|
|
"request",
|
|
"status",
|
|
"body"
|
|
],
|
|
"description": "The service's answer: the target the request went to (its name, and its address), the request (method and path), the HTTP status, the body (its JSON, or {\"text\": ...}), and where the key it carried came from (WAI_TOKEN, stored, or none), never the key"
|
|
},
|
|
"stream": null,
|
|
"since": "0.3.0",
|
|
"deprecated": null,
|
|
"receipt": false,
|
|
"needs": null,
|
|
"names": {
|
|
"cli": "wai room show",
|
|
"mcp": null,
|
|
"c": "wai_room_show",
|
|
"rust": "wai::room::show",
|
|
"sdk": "wai.room.show"
|
|
}
|
|
},
|
|
{
|
|
"id": "room.grant",
|
|
"summary": "A grant for a key",
|
|
"cli": "wai room grant",
|
|
"aliases": [],
|
|
"usage": [
|
|
"wai room grant [--target <name|url>] [--body <json>|@<file>] [--yes] POST /grant on the room service"
|
|
],
|
|
"placement": "service",
|
|
"effect": "writes-target",
|
|
"dry_run": true,
|
|
"confirm": "always",
|
|
"route": {
|
|
"service": "wai-room",
|
|
"method": "POST",
|
|
"path": "/grant"
|
|
},
|
|
"doors": {
|
|
"cli": true,
|
|
"mcp": true,
|
|
"http": true
|
|
},
|
|
"toolset": "dev",
|
|
"stability": "preview",
|
|
"input": {
|
|
"$ref": "joule-code/joule-code-rs/crates/joule-moq-room/openapi.json#/paths/~1grant/post"
|
|
},
|
|
"output": {
|
|
"type": "object",
|
|
"required": [
|
|
"target",
|
|
"request",
|
|
"status",
|
|
"body"
|
|
],
|
|
"description": "The service's answer: the target the request went to (its name, and its address), the request (method and path), the HTTP status, the body (its JSON, or {\"text\": ...}), and where the key it carried came from (WAI_TOKEN, stored, or none), never the key"
|
|
},
|
|
"stream": null,
|
|
"since": "0.3.0",
|
|
"deprecated": null,
|
|
"receipt": false,
|
|
"needs": null,
|
|
"names": {
|
|
"cli": "wai room grant",
|
|
"mcp": "room_grant",
|
|
"c": "wai_room_grant",
|
|
"rust": "wai::room::grant",
|
|
"sdk": "wai.room.grant"
|
|
}
|
|
},
|
|
{
|
|
"id": "admission.show",
|
|
"summary": "The room's admission receipt so far",
|
|
"cli": "wai admission show",
|
|
"aliases": [],
|
|
"usage": [
|
|
"wai admission show [--target <name|url>] [--query <name>=<value>]... GET /age/receipt on the room service"
|
|
],
|
|
"placement": "service",
|
|
"effect": "reads",
|
|
"dry_run": false,
|
|
"confirm": "never",
|
|
"route": {
|
|
"service": "wai-room",
|
|
"method": "GET",
|
|
"path": "/age/receipt"
|
|
},
|
|
"doors": {
|
|
"cli": true,
|
|
"mcp": false,
|
|
"http": true
|
|
},
|
|
"toolset": "core",
|
|
"stability": "preview",
|
|
"input": {
|
|
"$ref": "joule-code/joule-code-rs/crates/joule-moq-room/openapi.json#/paths/~1age~1receipt/get"
|
|
},
|
|
"output": {
|
|
"type": "object",
|
|
"required": [
|
|
"target",
|
|
"request",
|
|
"status",
|
|
"body"
|
|
],
|
|
"description": "The service's answer: the target the request went to (its name, and its address), the request (method and path), the HTTP status, the body (its JSON, or {\"text\": ...}), and where the key it carried came from (WAI_TOKEN, stored, or none), never the key"
|
|
},
|
|
"stream": null,
|
|
"since": "0.3.0",
|
|
"deprecated": null,
|
|
"receipt": false,
|
|
"needs": null,
|
|
"names": {
|
|
"cli": "wai admission show",
|
|
"mcp": null,
|
|
"c": "wai_admission_show",
|
|
"rust": "wai::admission::show",
|
|
"sdk": "wai.admission.show"
|
|
}
|
|
},
|
|
{
|
|
"id": "mls.tail",
|
|
"summary": "The room's log of MLS messages",
|
|
"cli": "wai mls tail",
|
|
"aliases": [],
|
|
"usage": [
|
|
"wai mls tail [--target <name|url>] [--query <name>=<value>]... GET /mls on the room service"
|
|
],
|
|
"placement": "service",
|
|
"effect": "reads",
|
|
"dry_run": false,
|
|
"confirm": "never",
|
|
"route": {
|
|
"service": "wai-room",
|
|
"method": "GET",
|
|
"path": "/mls"
|
|
},
|
|
"doors": {
|
|
"cli": true,
|
|
"mcp": false,
|
|
"http": true
|
|
},
|
|
"toolset": "core",
|
|
"stability": "preview",
|
|
"input": {
|
|
"$ref": "joule-code/joule-code-rs/crates/joule-moq-room/openapi.json#/paths/~1mls/get"
|
|
},
|
|
"output": {
|
|
"type": "object",
|
|
"required": [
|
|
"target",
|
|
"request",
|
|
"status",
|
|
"body"
|
|
],
|
|
"description": "The service's answer: the target the request went to (its name, and its address), the request (method and path), the HTTP status, the body (its JSON, or {\"text\": ...}), and where the key it carried came from (WAI_TOKEN, stored, or none), never the key"
|
|
},
|
|
"stream": null,
|
|
"since": "0.3.0",
|
|
"deprecated": null,
|
|
"receipt": false,
|
|
"needs": null,
|
|
"names": {
|
|
"cli": "wai mls tail",
|
|
"mcp": null,
|
|
"c": "wai_mls_tail",
|
|
"rust": "wai::mls::tail",
|
|
"sdk": "wai.mls.tail"
|
|
}
|
|
},
|
|
{
|
|
"id": "mls.import",
|
|
"summary": "A KeyPackage for a granted principal's Add",
|
|
"cli": "wai mls import",
|
|
"aliases": [],
|
|
"usage": [
|
|
"wai mls import [--target <name|url>] [--body <json>|@<file>] [--yes] POST /mls/key-package on the room service"
|
|
],
|
|
"placement": "service",
|
|
"effect": "writes-target",
|
|
"dry_run": true,
|
|
"confirm": "always",
|
|
"route": {
|
|
"service": "wai-room",
|
|
"method": "POST",
|
|
"path": "/mls/key-package"
|
|
},
|
|
"doors": {
|
|
"cli": true,
|
|
"mcp": false,
|
|
"http": true
|
|
},
|
|
"toolset": "core",
|
|
"stability": "preview",
|
|
"input": {
|
|
"$ref": "joule-code/joule-code-rs/crates/joule-moq-room/openapi.json#/paths/~1mls~1key-package/post"
|
|
},
|
|
"output": {
|
|
"type": "object",
|
|
"required": [
|
|
"target",
|
|
"request",
|
|
"status",
|
|
"body"
|
|
],
|
|
"description": "The service's answer: the target the request went to (its name, and its address), the request (method and path), the HTTP status, the body (its JSON, or {\"text\": ...}), and where the key it carried came from (WAI_TOKEN, stored, or none), never the key"
|
|
},
|
|
"stream": null,
|
|
"since": "0.3.0",
|
|
"deprecated": null,
|
|
"receipt": false,
|
|
"needs": null,
|
|
"names": {
|
|
"cli": "wai mls import",
|
|
"mcp": null,
|
|
"c": "wai_mls_import",
|
|
"rust": "wai::mls::import",
|
|
"sdk": "wai.mls.import"
|
|
}
|
|
},
|
|
{
|
|
"id": "mls.update",
|
|
"summary": "A GroupInfo, or a commit and its Welcome",
|
|
"cli": "wai mls update",
|
|
"aliases": [],
|
|
"usage": [
|
|
"wai mls update [--target <name|url>] [--body <json>|@<file>] [--yes] POST /mls/post on the room service"
|
|
],
|
|
"placement": "service",
|
|
"effect": "writes-target",
|
|
"dry_run": true,
|
|
"confirm": "always",
|
|
"route": {
|
|
"service": "wai-room",
|
|
"method": "POST",
|
|
"path": "/mls/post"
|
|
},
|
|
"doors": {
|
|
"cli": true,
|
|
"mcp": false,
|
|
"http": true
|
|
},
|
|
"toolset": "core",
|
|
"stability": "preview",
|
|
"input": {
|
|
"$ref": "joule-code/joule-code-rs/crates/joule-moq-room/openapi.json#/paths/~1mls~1post/post"
|
|
},
|
|
"output": {
|
|
"type": "object",
|
|
"required": [
|
|
"target",
|
|
"request",
|
|
"status",
|
|
"body"
|
|
],
|
|
"description": "The service's answer: the target the request went to (its name, and its address), the request (method and path), the HTTP status, the body (its JSON, or {\"text\": ...}), and where the key it carried came from (WAI_TOKEN, stored, or none), never the key"
|
|
},
|
|
"stream": null,
|
|
"since": "0.3.0",
|
|
"deprecated": null,
|
|
"receipt": false,
|
|
"needs": null,
|
|
"names": {
|
|
"cli": "wai mls update",
|
|
"mcp": null,
|
|
"c": "wai_mls_update",
|
|
"rust": "wai::mls::update",
|
|
"sdk": "wai.mls.update"
|
|
}
|
|
},
|
|
{
|
|
"id": "performance.list",
|
|
"summary": "The clock's log of objects",
|
|
"cli": "wai performance list",
|
|
"aliases": [],
|
|
"usage": [
|
|
"wai performance list [--target <name|url>] [--query <name>=<value>]... GET /co/objects on the room service"
|
|
],
|
|
"placement": "service",
|
|
"effect": "reads",
|
|
"dry_run": false,
|
|
"confirm": "never",
|
|
"route": {
|
|
"service": "wai-room",
|
|
"method": "GET",
|
|
"path": "/co/objects"
|
|
},
|
|
"doors": {
|
|
"cli": true,
|
|
"mcp": false,
|
|
"http": true
|
|
},
|
|
"toolset": "core",
|
|
"stability": "preview",
|
|
"input": {
|
|
"$ref": "joule-code/joule-code-rs/crates/joule-moq-room/openapi.json#/paths/~1co~1objects/get"
|
|
},
|
|
"output": {
|
|
"type": "object",
|
|
"required": [
|
|
"target",
|
|
"request",
|
|
"status",
|
|
"body"
|
|
],
|
|
"description": "The service's answer: the target the request went to (its name, and its address), the request (method and path), the HTTP status, the body (its JSON, or {\"text\": ...}), and where the key it carried came from (WAI_TOKEN, stored, or none), never the key"
|
|
},
|
|
"stream": null,
|
|
"since": "0.3.0",
|
|
"deprecated": null,
|
|
"receipt": false,
|
|
"needs": null,
|
|
"names": {
|
|
"cli": "wai performance list",
|
|
"mcp": null,
|
|
"c": "wai_performance_list",
|
|
"rust": "wai::performance::list",
|
|
"sdk": "wai.performance.list"
|
|
}
|
|
},
|
|
{
|
|
"id": "performance.show",
|
|
"summary": "The room's co-performance as the clock holds it",
|
|
"cli": "wai performance show",
|
|
"aliases": [],
|
|
"usage": [
|
|
"wai performance show [--target <name|url>] [--query <name>=<value>]... GET /co/state on the room service"
|
|
],
|
|
"placement": "service",
|
|
"effect": "reads",
|
|
"dry_run": false,
|
|
"confirm": "never",
|
|
"route": {
|
|
"service": "wai-room",
|
|
"method": "GET",
|
|
"path": "/co/state"
|
|
},
|
|
"doors": {
|
|
"cli": true,
|
|
"mcp": false,
|
|
"http": true
|
|
},
|
|
"toolset": "core",
|
|
"stability": "preview",
|
|
"input": {
|
|
"$ref": "joule-code/joule-code-rs/crates/joule-moq-room/openapi.json#/paths/~1co~1state/get"
|
|
},
|
|
"output": {
|
|
"type": "object",
|
|
"required": [
|
|
"target",
|
|
"request",
|
|
"status",
|
|
"body"
|
|
],
|
|
"description": "The service's answer: the target the request went to (its name, and its address), the request (method and path), the HTTP status, the body (its JSON, or {\"text\": ...}), and where the key it carried came from (WAI_TOKEN, stored, or none), never the key"
|
|
},
|
|
"stream": null,
|
|
"since": "0.3.0",
|
|
"deprecated": null,
|
|
"receipt": false,
|
|
"needs": null,
|
|
"names": {
|
|
"cli": "wai performance show",
|
|
"mcp": null,
|
|
"c": "wai_performance_show",
|
|
"rust": "wai::performance::show",
|
|
"sdk": "wai.performance.show"
|
|
}
|
|
},
|
|
{
|
|
"id": "schedule.create",
|
|
"summary": "A turn schedule the clock signs",
|
|
"cli": "wai schedule create",
|
|
"aliases": [],
|
|
"usage": [
|
|
"wai schedule create [--target <name|url>] [--body <json>|@<file>] [--yes] POST /co/schedule on the room service"
|
|
],
|
|
"placement": "service",
|
|
"effect": "writes-target",
|
|
"dry_run": true,
|
|
"confirm": "always",
|
|
"route": {
|
|
"service": "wai-room",
|
|
"method": "POST",
|
|
"path": "/co/schedule"
|
|
},
|
|
"doors": {
|
|
"cli": true,
|
|
"mcp": false,
|
|
"http": true
|
|
},
|
|
"toolset": "core",
|
|
"stability": "preview",
|
|
"input": {
|
|
"$ref": "joule-code/joule-code-rs/crates/joule-moq-room/openapi.json#/paths/~1co~1schedule/post"
|
|
},
|
|
"output": {
|
|
"type": "object",
|
|
"required": [
|
|
"target",
|
|
"request",
|
|
"status",
|
|
"body"
|
|
],
|
|
"description": "The service's answer: the target the request went to (its name, and its address), the request (method and path), the HTTP status, the body (its JSON, or {\"text\": ...}), and where the key it carried came from (WAI_TOKEN, stored, or none), never the key"
|
|
},
|
|
"stream": null,
|
|
"since": "0.3.0",
|
|
"deprecated": null,
|
|
"receipt": false,
|
|
"needs": null,
|
|
"names": {
|
|
"cli": "wai schedule create",
|
|
"mcp": null,
|
|
"c": "wai_schedule_create",
|
|
"rust": "wai::schedule::create",
|
|
"sdk": "wai.schedule.create"
|
|
}
|
|
},
|
|
{
|
|
"id": "handover.create",
|
|
"summary": "A handover the clock signs",
|
|
"cli": "wai handover create",
|
|
"aliases": [],
|
|
"usage": [
|
|
"wai handover create [--target <name|url>] [--body <json>|@<file>] [--yes] POST /co/handover on the room service"
|
|
],
|
|
"placement": "service",
|
|
"effect": "writes-target",
|
|
"dry_run": true,
|
|
"confirm": "always",
|
|
"route": {
|
|
"service": "wai-room",
|
|
"method": "POST",
|
|
"path": "/co/handover"
|
|
},
|
|
"doors": {
|
|
"cli": true,
|
|
"mcp": false,
|
|
"http": true
|
|
},
|
|
"toolset": "core",
|
|
"stability": "preview",
|
|
"input": {
|
|
"$ref": "joule-code/joule-code-rs/crates/joule-moq-room/openapi.json#/paths/~1co~1handover/post"
|
|
},
|
|
"output": {
|
|
"type": "object",
|
|
"required": [
|
|
"target",
|
|
"request",
|
|
"status",
|
|
"body"
|
|
],
|
|
"description": "The service's answer: the target the request went to (its name, and its address), the request (method and path), the HTTP status, the body (its JSON, or {\"text\": ...}), and where the key it carried came from (WAI_TOKEN, stored, or none), never the key"
|
|
},
|
|
"stream": null,
|
|
"since": "0.3.0",
|
|
"deprecated": null,
|
|
"receipt": false,
|
|
"needs": null,
|
|
"names": {
|
|
"cli": "wai handover create",
|
|
"mcp": null,
|
|
"c": "wai_handover_create",
|
|
"rust": "wai::handover::create",
|
|
"sdk": "wai.handover.create"
|
|
}
|
|
},
|
|
{
|
|
"id": "window.create",
|
|
"summary": "A selection window the clock signs",
|
|
"cli": "wai window create",
|
|
"aliases": [],
|
|
"usage": [
|
|
"wai window create [--target <name|url>] [--body <json>|@<file>] [--yes] POST /co/window on the room service"
|
|
],
|
|
"placement": "service",
|
|
"effect": "writes-target",
|
|
"dry_run": true,
|
|
"confirm": "always",
|
|
"route": {
|
|
"service": "wai-room",
|
|
"method": "POST",
|
|
"path": "/co/window"
|
|
},
|
|
"doors": {
|
|
"cli": true,
|
|
"mcp": false,
|
|
"http": true
|
|
},
|
|
"toolset": "core",
|
|
"stability": "preview",
|
|
"input": {
|
|
"$ref": "joule-code/joule-code-rs/crates/joule-moq-room/openapi.json#/paths/~1co~1window/post"
|
|
},
|
|
"output": {
|
|
"type": "object",
|
|
"required": [
|
|
"target",
|
|
"request",
|
|
"status",
|
|
"body"
|
|
],
|
|
"description": "The service's answer: the target the request went to (its name, and its address), the request (method and path), the HTTP status, the body (its JSON, or {\"text\": ...}), and where the key it carried came from (WAI_TOKEN, stored, or none), never the key"
|
|
},
|
|
"stream": null,
|
|
"since": "0.3.0",
|
|
"deprecated": null,
|
|
"receipt": false,
|
|
"needs": null,
|
|
"names": {
|
|
"cli": "wai window create",
|
|
"mcp": null,
|
|
"c": "wai_window_create",
|
|
"rust": "wai::window::create",
|
|
"sdk": "wai.window.create"
|
|
}
|
|
},
|
|
{
|
|
"id": "fidelity.create",
|
|
"summary": "A fidelity statement now",
|
|
"cli": "wai fidelity create",
|
|
"aliases": [],
|
|
"usage": [
|
|
"wai fidelity create [--target <name|url>] [--body <json>|@<file>] [--yes] POST /co/fidelity on the room service"
|
|
],
|
|
"placement": "service",
|
|
"effect": "writes-target",
|
|
"dry_run": true,
|
|
"confirm": "always",
|
|
"route": {
|
|
"service": "wai-room",
|
|
"method": "POST",
|
|
"path": "/co/fidelity"
|
|
},
|
|
"doors": {
|
|
"cli": true,
|
|
"mcp": false,
|
|
"http": true
|
|
},
|
|
"toolset": "core",
|
|
"stability": "preview",
|
|
"input": {
|
|
"$ref": "joule-code/joule-code-rs/crates/joule-moq-room/openapi.json#/paths/~1co~1fidelity/post"
|
|
},
|
|
"output": {
|
|
"type": "object",
|
|
"required": [
|
|
"target",
|
|
"request",
|
|
"status",
|
|
"body"
|
|
],
|
|
"description": "The service's answer: the target the request went to (its name, and its address), the request (method and path), the HTTP status, the body (its JSON, or {\"text\": ...}), and where the key it carried came from (WAI_TOKEN, stored, or none), never the key"
|
|
},
|
|
"stream": null,
|
|
"since": "0.3.0",
|
|
"deprecated": null,
|
|
"receipt": false,
|
|
"needs": null,
|
|
"names": {
|
|
"cli": "wai fidelity create",
|
|
"mcp": null,
|
|
"c": "wai_fidelity_create",
|
|
"rust": "wai::fidelity::create",
|
|
"sdk": "wai.fidelity.create"
|
|
}
|
|
},
|
|
{
|
|
"id": "time.show",
|
|
"summary": "The service's clock",
|
|
"cli": "wai time show",
|
|
"aliases": [],
|
|
"usage": [
|
|
"wai time show [--target <name|url>] [--query <name>=<value>]... GET /watch/time on the room service"
|
|
],
|
|
"placement": "service",
|
|
"effect": "reads",
|
|
"dry_run": false,
|
|
"confirm": "never",
|
|
"route": {
|
|
"service": "wai-room",
|
|
"method": "GET",
|
|
"path": "/watch/time"
|
|
},
|
|
"doors": {
|
|
"cli": true,
|
|
"mcp": false,
|
|
"http": true
|
|
},
|
|
"toolset": "core",
|
|
"stability": "preview",
|
|
"input": {
|
|
"$ref": "joule-code/joule-code-rs/crates/joule-moq-room/openapi.json#/paths/~1watch~1time/get"
|
|
},
|
|
"output": {
|
|
"type": "object",
|
|
"required": [
|
|
"target",
|
|
"request",
|
|
"status",
|
|
"body"
|
|
],
|
|
"description": "The service's answer: the target the request went to (its name, and its address), the request (method and path), the HTTP status, the body (its JSON, or {\"text\": ...}), and where the key it carried came from (WAI_TOKEN, stored, or none), never the key"
|
|
},
|
|
"stream": null,
|
|
"since": "0.3.0",
|
|
"deprecated": null,
|
|
"receipt": false,
|
|
"needs": null,
|
|
"names": {
|
|
"cli": "wai time show",
|
|
"mcp": null,
|
|
"c": "wai_time_show",
|
|
"rust": "wai::time::show",
|
|
"sdk": "wai.time.show"
|
|
}
|
|
},
|
|
{
|
|
"id": "source.fetch",
|
|
"summary": "The watch room's source, whole",
|
|
"cli": "wai source fetch",
|
|
"aliases": [],
|
|
"usage": [
|
|
"wai source fetch [--target <name|url>] [--query <name>=<value>]... GET /watch/source on the room service"
|
|
],
|
|
"placement": "service",
|
|
"effect": "reads",
|
|
"dry_run": false,
|
|
"confirm": "never",
|
|
"route": {
|
|
"service": "wai-room",
|
|
"method": "GET",
|
|
"path": "/watch/source"
|
|
},
|
|
"doors": {
|
|
"cli": true,
|
|
"mcp": false,
|
|
"http": true
|
|
},
|
|
"toolset": "core",
|
|
"stability": "preview",
|
|
"input": {
|
|
"$ref": "joule-code/joule-code-rs/crates/joule-moq-room/openapi.json#/paths/~1watch~1source/get"
|
|
},
|
|
"output": {
|
|
"type": "object",
|
|
"required": [
|
|
"target",
|
|
"request",
|
|
"status",
|
|
"body"
|
|
],
|
|
"description": "The service's answer: the target the request went to (its name, and its address), the request (method and path), the HTTP status, the body (its JSON, or {\"text\": ...}), and where the key it carried came from (WAI_TOKEN, stored, or none), never the key"
|
|
},
|
|
"stream": null,
|
|
"since": "0.3.0",
|
|
"deprecated": null,
|
|
"receipt": false,
|
|
"needs": null,
|
|
"names": {
|
|
"cli": "wai source fetch",
|
|
"mcp": null,
|
|
"c": "wai_source_fetch",
|
|
"rust": "wai::source::fetch",
|
|
"sdk": "wai.source.fetch"
|
|
}
|
|
},
|
|
{
|
|
"id": "watch.setup",
|
|
"summary": "A challenge for a join's proof",
|
|
"cli": "wai watch setup",
|
|
"aliases": [],
|
|
"usage": [
|
|
"wai watch setup [--target <name|url>] [--query <name>=<value>]... [--yes] GET /watch/challenge on the room service"
|
|
],
|
|
"placement": "service",
|
|
"effect": "writes-target",
|
|
"dry_run": true,
|
|
"confirm": "always",
|
|
"route": {
|
|
"service": "wai-room",
|
|
"method": "GET",
|
|
"path": "/watch/challenge"
|
|
},
|
|
"doors": {
|
|
"cli": true,
|
|
"mcp": false,
|
|
"http": true
|
|
},
|
|
"toolset": "core",
|
|
"stability": "preview",
|
|
"input": {
|
|
"$ref": "joule-code/joule-code-rs/crates/joule-moq-room/openapi.json#/paths/~1watch~1challenge/get"
|
|
},
|
|
"output": {
|
|
"type": "object",
|
|
"required": [
|
|
"target",
|
|
"request",
|
|
"status",
|
|
"body"
|
|
],
|
|
"description": "The service's answer: the target the request went to (its name, and its address), the request (method and path), the HTTP status, the body (its JSON, or {\"text\": ...}), and where the key it carried came from (WAI_TOKEN, stored, or none), never the key"
|
|
},
|
|
"stream": null,
|
|
"since": "0.3.0",
|
|
"deprecated": null,
|
|
"receipt": false,
|
|
"needs": null,
|
|
"names": {
|
|
"cli": "wai watch setup",
|
|
"mcp": null,
|
|
"c": "wai_watch_setup",
|
|
"rust": "wai::watch::setup",
|
|
"sdk": "wai.watch.setup"
|
|
}
|
|
},
|
|
{
|
|
"id": "watch.tail",
|
|
"summary": "The watch room's log",
|
|
"cli": "wai watch tail",
|
|
"aliases": [],
|
|
"usage": [
|
|
"wai watch tail [--target <name|url>] [--query <name>=<value>]... GET /watch on the room service"
|
|
],
|
|
"placement": "service",
|
|
"effect": "reads",
|
|
"dry_run": false,
|
|
"confirm": "never",
|
|
"route": {
|
|
"service": "wai-room",
|
|
"method": "GET",
|
|
"path": "/watch"
|
|
},
|
|
"doors": {
|
|
"cli": true,
|
|
"mcp": false,
|
|
"http": true
|
|
},
|
|
"toolset": "core",
|
|
"stability": "preview",
|
|
"input": {
|
|
"$ref": "joule-code/joule-code-rs/crates/joule-moq-room/openapi.json#/paths/~1watch/get"
|
|
},
|
|
"output": {
|
|
"type": "object",
|
|
"required": [
|
|
"target",
|
|
"request",
|
|
"status",
|
|
"body"
|
|
],
|
|
"description": "The service's answer: the target the request went to (its name, and its address), the request (method and path), the HTTP status, the body (its JSON, or {\"text\": ...}), and where the key it carried came from (WAI_TOKEN, stored, or none), never the key"
|
|
},
|
|
"stream": null,
|
|
"since": "0.3.0",
|
|
"deprecated": null,
|
|
"receipt": false,
|
|
"needs": null,
|
|
"names": {
|
|
"cli": "wai watch tail",
|
|
"mcp": null,
|
|
"c": "wai_watch_tail",
|
|
"rust": "wai::watch::tail",
|
|
"sdk": "wai.watch.tail"
|
|
}
|
|
},
|
|
{
|
|
"id": "watch.show",
|
|
"summary": "The room as a co-watch verifier is given it",
|
|
"cli": "wai watch show",
|
|
"aliases": [],
|
|
"usage": [
|
|
"wai watch show [--target <name|url>] [--query <name>=<value>]... GET /watch/room on the room service"
|
|
],
|
|
"placement": "service",
|
|
"effect": "reads",
|
|
"dry_run": false,
|
|
"confirm": "never",
|
|
"route": {
|
|
"service": "wai-room",
|
|
"method": "GET",
|
|
"path": "/watch/room"
|
|
},
|
|
"doors": {
|
|
"cli": true,
|
|
"mcp": false,
|
|
"http": true
|
|
},
|
|
"toolset": "core",
|
|
"stability": "preview",
|
|
"input": {
|
|
"$ref": "joule-code/joule-code-rs/crates/joule-moq-room/openapi.json#/paths/~1watch~1room/get"
|
|
},
|
|
"output": {
|
|
"type": "object",
|
|
"required": [
|
|
"target",
|
|
"request",
|
|
"status",
|
|
"body"
|
|
],
|
|
"description": "The service's answer: the target the request went to (its name, and its address), the request (method and path), the HTTP status, the body (its JSON, or {\"text\": ...}), and where the key it carried came from (WAI_TOKEN, stored, or none), never the key"
|
|
},
|
|
"stream": null,
|
|
"since": "0.3.0",
|
|
"deprecated": null,
|
|
"receipt": false,
|
|
"needs": null,
|
|
"names": {
|
|
"cli": "wai watch show",
|
|
"mcp": null,
|
|
"c": "wai_watch_show",
|
|
"rust": "wai::watch::show",
|
|
"sdk": "wai.watch.show"
|
|
}
|
|
},
|
|
{
|
|
"id": "watch.join",
|
|
"summary": "A viewer enters by a proof of its key",
|
|
"cli": "wai watch join",
|
|
"aliases": [],
|
|
"usage": [
|
|
"wai watch join [--target <name|url>] [--body <json>|@<file>] [--yes] POST /watch/join on the room service"
|
|
],
|
|
"placement": "service",
|
|
"effect": "writes-target",
|
|
"dry_run": true,
|
|
"confirm": "always",
|
|
"route": {
|
|
"service": "wai-room",
|
|
"method": "POST",
|
|
"path": "/watch/join"
|
|
},
|
|
"doors": {
|
|
"cli": true,
|
|
"mcp": false,
|
|
"http": true
|
|
},
|
|
"toolset": "core",
|
|
"stability": "preview",
|
|
"input": {
|
|
"$ref": "joule-code/joule-code-rs/crates/joule-moq-room/openapi.json#/paths/~1watch~1join/post"
|
|
},
|
|
"output": {
|
|
"type": "object",
|
|
"required": [
|
|
"target",
|
|
"request",
|
|
"status",
|
|
"body"
|
|
],
|
|
"description": "The service's answer: the target the request went to (its name, and its address), the request (method and path), the HTTP status, the body (its JSON, or {\"text\": ...}), and where the key it carried came from (WAI_TOKEN, stored, or none), never the key"
|
|
},
|
|
"stream": null,
|
|
"since": "0.3.0",
|
|
"deprecated": null,
|
|
"receipt": false,
|
|
"needs": null,
|
|
"names": {
|
|
"cli": "wai watch join",
|
|
"mcp": null,
|
|
"c": "wai_watch_join",
|
|
"rust": "wai::watch::join",
|
|
"sdk": "wai.watch.join"
|
|
}
|
|
},
|
|
{
|
|
"id": "watch.update",
|
|
"summary": "A viewer's events, checked and carried in order",
|
|
"cli": "wai watch update",
|
|
"aliases": [],
|
|
"usage": [
|
|
"wai watch update [--target <name|url>] [--body <json>|@<file>] [--yes] POST /watch/post on the room service"
|
|
],
|
|
"placement": "service",
|
|
"effect": "writes-target",
|
|
"dry_run": true,
|
|
"confirm": "always",
|
|
"route": {
|
|
"service": "wai-room",
|
|
"method": "POST",
|
|
"path": "/watch/post"
|
|
},
|
|
"doors": {
|
|
"cli": true,
|
|
"mcp": false,
|
|
"http": true
|
|
},
|
|
"toolset": "core",
|
|
"stability": "preview",
|
|
"input": {
|
|
"$ref": "joule-code/joule-code-rs/crates/joule-moq-room/openapi.json#/paths/~1watch~1post/post"
|
|
},
|
|
"output": {
|
|
"type": "object",
|
|
"required": [
|
|
"target",
|
|
"request",
|
|
"status",
|
|
"body"
|
|
],
|
|
"description": "The service's answer: the target the request went to (its name, and its address), the request (method and path), the HTTP status, the body (its JSON, or {\"text\": ...}), and where the key it carried came from (WAI_TOKEN, stored, or none), never the key"
|
|
},
|
|
"stream": null,
|
|
"since": "0.3.0",
|
|
"deprecated": null,
|
|
"receipt": false,
|
|
"needs": null,
|
|
"names": {
|
|
"cli": "wai watch update",
|
|
"mcp": null,
|
|
"c": "wai_watch_update",
|
|
"rust": "wai::watch::update",
|
|
"sdk": "wai.watch.update"
|
|
}
|
|
},
|
|
{
|
|
"id": "control.grant",
|
|
"summary": "The host hands control over",
|
|
"cli": "wai control grant",
|
|
"aliases": [],
|
|
"usage": [
|
|
"wai control grant [--target <name|url>] [--body <json>|@<file>] [--yes] POST /remote/control on the room service"
|
|
],
|
|
"placement": "service",
|
|
"effect": "writes-target",
|
|
"dry_run": true,
|
|
"confirm": "always",
|
|
"route": {
|
|
"service": "wai-room",
|
|
"method": "POST",
|
|
"path": "/remote/control"
|
|
},
|
|
"doors": {
|
|
"cli": true,
|
|
"mcp": false,
|
|
"http": true
|
|
},
|
|
"toolset": "core",
|
|
"stability": "preview",
|
|
"input": {
|
|
"$ref": "joule-code/joule-code-rs/crates/joule-moq-room/openapi.json#/paths/~1remote~1control/post"
|
|
},
|
|
"output": {
|
|
"type": "object",
|
|
"required": [
|
|
"target",
|
|
"request",
|
|
"status",
|
|
"body"
|
|
],
|
|
"description": "The service's answer: the target the request went to (its name, and its address), the request (method and path), the HTTP status, the body (its JSON, or {\"text\": ...}), and where the key it carried came from (WAI_TOKEN, stored, or none), never the key"
|
|
},
|
|
"stream": null,
|
|
"since": "0.3.0",
|
|
"deprecated": null,
|
|
"receipt": false,
|
|
"needs": null,
|
|
"names": {
|
|
"cli": "wai control grant",
|
|
"mcp": null,
|
|
"c": "wai_control_grant",
|
|
"rust": "wai::control::grant",
|
|
"sdk": "wai.control.grant"
|
|
}
|
|
},
|
|
{
|
|
"id": "remote.show",
|
|
"summary": "The session as the clock holds it",
|
|
"cli": "wai remote show",
|
|
"aliases": [],
|
|
"usage": [
|
|
"wai remote show [--target <name|url>] [--query <name>=<value>]... GET /remote/room on the room service"
|
|
],
|
|
"placement": "service",
|
|
"effect": "reads",
|
|
"dry_run": false,
|
|
"confirm": "never",
|
|
"route": {
|
|
"service": "wai-room",
|
|
"method": "GET",
|
|
"path": "/remote/room"
|
|
},
|
|
"doors": {
|
|
"cli": true,
|
|
"mcp": false,
|
|
"http": true
|
|
},
|
|
"toolset": "core",
|
|
"stability": "preview",
|
|
"input": {
|
|
"$ref": "joule-code/joule-code-rs/crates/joule-moq-room/openapi.json#/paths/~1remote~1room/get"
|
|
},
|
|
"output": {
|
|
"type": "object",
|
|
"required": [
|
|
"target",
|
|
"request",
|
|
"status",
|
|
"body"
|
|
],
|
|
"description": "The service's answer: the target the request went to (its name, and its address), the request (method and path), the HTTP status, the body (its JSON, or {\"text\": ...}), and where the key it carried came from (WAI_TOKEN, stored, or none), never the key"
|
|
},
|
|
"stream": null,
|
|
"since": "0.3.0",
|
|
"deprecated": null,
|
|
"receipt": false,
|
|
"needs": null,
|
|
"names": {
|
|
"cli": "wai remote show",
|
|
"mcp": null,
|
|
"c": "wai_remote_show",
|
|
"rust": "wai::remote::show",
|
|
"sdk": "wai.remote.show"
|
|
}
|
|
},
|
|
{
|
|
"id": "remote.verify",
|
|
"summary": "That session verified",
|
|
"cli": "wai remote verify",
|
|
"aliases": [],
|
|
"usage": [
|
|
"wai remote verify [--target <name|url>] [--query <name>=<value>]... GET /remote/state on the room service"
|
|
],
|
|
"placement": "service",
|
|
"effect": "reads",
|
|
"dry_run": false,
|
|
"confirm": "never",
|
|
"route": {
|
|
"service": "wai-room",
|
|
"method": "GET",
|
|
"path": "/remote/state"
|
|
},
|
|
"doors": {
|
|
"cli": true,
|
|
"mcp": false,
|
|
"http": true
|
|
},
|
|
"toolset": "core",
|
|
"stability": "preview",
|
|
"input": {
|
|
"$ref": "joule-code/joule-code-rs/crates/joule-moq-room/openapi.json#/paths/~1remote~1state/get"
|
|
},
|
|
"output": {
|
|
"type": "object",
|
|
"required": [
|
|
"target",
|
|
"request",
|
|
"status",
|
|
"body"
|
|
],
|
|
"description": "The service's answer: the target the request went to (its name, and its address), the request (method and path), the HTTP status, the body (its JSON, or {\"text\": ...}), and where the key it carried came from (WAI_TOKEN, stored, or none), never the key"
|
|
},
|
|
"stream": null,
|
|
"since": "0.3.0",
|
|
"deprecated": null,
|
|
"receipt": false,
|
|
"needs": null,
|
|
"names": {
|
|
"cli": "wai remote verify",
|
|
"mcp": null,
|
|
"c": "wai_remote_verify",
|
|
"rust": "wai::remote::verify",
|
|
"sdk": "wai.remote.verify"
|
|
}
|
|
},
|
|
{
|
|
"id": "conversation.show",
|
|
"summary": "The conversation",
|
|
"cli": "wai conversation show",
|
|
"aliases": [],
|
|
"usage": [
|
|
"wai conversation show [--target <name|url>] [--query <name>=<value>]... GET /msg on the room service"
|
|
],
|
|
"placement": "service",
|
|
"effect": "reads",
|
|
"dry_run": false,
|
|
"confirm": "never",
|
|
"route": {
|
|
"service": "wai-room",
|
|
"method": "GET",
|
|
"path": "/msg"
|
|
},
|
|
"doors": {
|
|
"cli": true,
|
|
"mcp": false,
|
|
"http": true
|
|
},
|
|
"toolset": "core",
|
|
"stability": "preview",
|
|
"input": {
|
|
"$ref": "joule-code/joule-code-rs/crates/joule-moq-room/openapi.json#/paths/~1msg/get"
|
|
},
|
|
"output": {
|
|
"type": "object",
|
|
"required": [
|
|
"target",
|
|
"request",
|
|
"status",
|
|
"body"
|
|
],
|
|
"description": "The service's answer: the target the request went to (its name, and its address), the request (method and path), the HTTP status, the body (its JSON, or {\"text\": ...}), and where the key it carried came from (WAI_TOKEN, stored, or none), never the key"
|
|
},
|
|
"stream": null,
|
|
"since": "0.3.0",
|
|
"deprecated": null,
|
|
"receipt": false,
|
|
"needs": null,
|
|
"names": {
|
|
"cli": "wai conversation show",
|
|
"mcp": null,
|
|
"c": "wai_conversation_show",
|
|
"rust": "wai::conversation::show",
|
|
"sdk": "wai.conversation.show"
|
|
}
|
|
},
|
|
{
|
|
"id": "conversation.setup",
|
|
"summary": "A challenge for a proof",
|
|
"cli": "wai conversation setup",
|
|
"aliases": [],
|
|
"usage": [
|
|
"wai conversation setup [--target <name|url>] [--query <name>=<value>]... [--yes] GET /msg/challenge on the room service"
|
|
],
|
|
"placement": "service",
|
|
"effect": "writes-target",
|
|
"dry_run": true,
|
|
"confirm": "always",
|
|
"route": {
|
|
"service": "wai-room",
|
|
"method": "GET",
|
|
"path": "/msg/challenge"
|
|
},
|
|
"doors": {
|
|
"cli": true,
|
|
"mcp": false,
|
|
"http": true
|
|
},
|
|
"toolset": "core",
|
|
"stability": "preview",
|
|
"input": {
|
|
"$ref": "joule-code/joule-code-rs/crates/joule-moq-room/openapi.json#/paths/~1msg~1challenge/get"
|
|
},
|
|
"output": {
|
|
"type": "object",
|
|
"required": [
|
|
"target",
|
|
"request",
|
|
"status",
|
|
"body"
|
|
],
|
|
"description": "The service's answer: the target the request went to (its name, and its address), the request (method and path), the HTTP status, the body (its JSON, or {\"text\": ...}), and where the key it carried came from (WAI_TOKEN, stored, or none), never the key"
|
|
},
|
|
"stream": null,
|
|
"since": "0.3.0",
|
|
"deprecated": null,
|
|
"receipt": false,
|
|
"needs": null,
|
|
"names": {
|
|
"cli": "wai conversation setup",
|
|
"mcp": null,
|
|
"c": "wai_conversation_setup",
|
|
"rust": "wai::conversation::setup",
|
|
"sdk": "wai.conversation.setup"
|
|
}
|
|
},
|
|
{
|
|
"id": "conversation.join",
|
|
"summary": "A key that proves itself is admitted",
|
|
"cli": "wai conversation join",
|
|
"aliases": [],
|
|
"usage": [
|
|
"wai conversation join [--target <name|url>] [--body <json>|@<file>] [--yes] POST /msg/join on the room service"
|
|
],
|
|
"placement": "service",
|
|
"effect": "writes-target",
|
|
"dry_run": true,
|
|
"confirm": "always",
|
|
"route": {
|
|
"service": "wai-room",
|
|
"method": "POST",
|
|
"path": "/msg/join"
|
|
},
|
|
"doors": {
|
|
"cli": true,
|
|
"mcp": false,
|
|
"http": true
|
|
},
|
|
"toolset": "core",
|
|
"stability": "preview",
|
|
"input": {
|
|
"$ref": "joule-code/joule-code-rs/crates/joule-moq-room/openapi.json#/paths/~1msg~1join/post"
|
|
},
|
|
"output": {
|
|
"type": "object",
|
|
"required": [
|
|
"target",
|
|
"request",
|
|
"status",
|
|
"body"
|
|
],
|
|
"description": "The service's answer: the target the request went to (its name, and its address), the request (method and path), the HTTP status, the body (its JSON, or {\"text\": ...}), and where the key it carried came from (WAI_TOKEN, stored, or none), never the key"
|
|
},
|
|
"stream": null,
|
|
"since": "0.3.0",
|
|
"deprecated": null,
|
|
"receipt": false,
|
|
"needs": null,
|
|
"names": {
|
|
"cli": "wai conversation join",
|
|
"mcp": null,
|
|
"c": "wai_conversation_join",
|
|
"rust": "wai::conversation::join",
|
|
"sdk": "wai.conversation.join"
|
|
}
|
|
},
|
|
{
|
|
"id": "conversation.tail",
|
|
"summary": "The log as it is owed to the caller",
|
|
"cli": "wai conversation tail",
|
|
"aliases": [],
|
|
"usage": [
|
|
"wai conversation tail [--target <name|url>] [--query <name>=<value>]... GET /msg/log on the room service"
|
|
],
|
|
"placement": "service",
|
|
"effect": "reads",
|
|
"dry_run": false,
|
|
"confirm": "never",
|
|
"route": {
|
|
"service": "wai-room",
|
|
"method": "GET",
|
|
"path": "/msg/log"
|
|
},
|
|
"doors": {
|
|
"cli": true,
|
|
"mcp": false,
|
|
"http": true
|
|
},
|
|
"toolset": "core",
|
|
"stability": "preview",
|
|
"input": {
|
|
"$ref": "joule-code/joule-code-rs/crates/joule-moq-room/openapi.json#/paths/~1msg~1log/get"
|
|
},
|
|
"output": {
|
|
"type": "object",
|
|
"required": [
|
|
"target",
|
|
"request",
|
|
"status",
|
|
"body"
|
|
],
|
|
"description": "The service's answer: the target the request went to (its name, and its address), the request (method and path), the HTTP status, the body (its JSON, or {\"text\": ...}), and where the key it carried came from (WAI_TOKEN, stored, or none), never the key"
|
|
},
|
|
"stream": null,
|
|
"since": "0.3.0",
|
|
"deprecated": null,
|
|
"receipt": false,
|
|
"needs": null,
|
|
"names": {
|
|
"cli": "wai conversation tail",
|
|
"mcp": null,
|
|
"c": "wai_conversation_tail",
|
|
"rust": "wai::conversation::tail",
|
|
"sdk": "wai.conversation.tail"
|
|
}
|
|
},
|
|
{
|
|
"id": "conversation.import",
|
|
"summary": "A member's KeyPackage",
|
|
"cli": "wai conversation import",
|
|
"aliases": [],
|
|
"usage": [
|
|
"wai conversation import [--target <name|url>] [--body <json>|@<file>] [--yes] POST /msg/key-package on the room service"
|
|
],
|
|
"placement": "service",
|
|
"effect": "writes-target",
|
|
"dry_run": true,
|
|
"confirm": "always",
|
|
"route": {
|
|
"service": "wai-room",
|
|
"method": "POST",
|
|
"path": "/msg/key-package"
|
|
},
|
|
"doors": {
|
|
"cli": true,
|
|
"mcp": false,
|
|
"http": true
|
|
},
|
|
"toolset": "core",
|
|
"stability": "preview",
|
|
"input": {
|
|
"$ref": "joule-code/joule-code-rs/crates/joule-moq-room/openapi.json#/paths/~1msg~1key-package/post"
|
|
},
|
|
"output": {
|
|
"type": "object",
|
|
"required": [
|
|
"target",
|
|
"request",
|
|
"status",
|
|
"body"
|
|
],
|
|
"description": "The service's answer: the target the request went to (its name, and its address), the request (method and path), the HTTP status, the body (its JSON, or {\"text\": ...}), and where the key it carried came from (WAI_TOKEN, stored, or none), never the key"
|
|
},
|
|
"stream": null,
|
|
"since": "0.3.0",
|
|
"deprecated": null,
|
|
"receipt": false,
|
|
"needs": null,
|
|
"names": {
|
|
"cli": "wai conversation import",
|
|
"mcp": null,
|
|
"c": "wai_conversation_import",
|
|
"rust": "wai::conversation::import",
|
|
"sdk": "wai.conversation.import"
|
|
}
|
|
},
|
|
{
|
|
"id": "conversation.update",
|
|
"summary": "A GroupInfo, or a commit and its Welcome",
|
|
"cli": "wai conversation update",
|
|
"aliases": [],
|
|
"usage": [
|
|
"wai conversation update [--target <name|url>] [--body <json>|@<file>] [--yes] POST /msg/mls on the room service"
|
|
],
|
|
"placement": "service",
|
|
"effect": "writes-target",
|
|
"dry_run": true,
|
|
"confirm": "always",
|
|
"route": {
|
|
"service": "wai-room",
|
|
"method": "POST",
|
|
"path": "/msg/mls"
|
|
},
|
|
"doors": {
|
|
"cli": true,
|
|
"mcp": false,
|
|
"http": true
|
|
},
|
|
"toolset": "core",
|
|
"stability": "preview",
|
|
"input": {
|
|
"$ref": "joule-code/joule-code-rs/crates/joule-moq-room/openapi.json#/paths/~1msg~1mls/post"
|
|
},
|
|
"output": {
|
|
"type": "object",
|
|
"required": [
|
|
"target",
|
|
"request",
|
|
"status",
|
|
"body"
|
|
],
|
|
"description": "The service's answer: the target the request went to (its name, and its address), the request (method and path), the HTTP status, the body (its JSON, or {\"text\": ...}), and where the key it carried came from (WAI_TOKEN, stored, or none), never the key"
|
|
},
|
|
"stream": null,
|
|
"since": "0.3.0",
|
|
"deprecated": null,
|
|
"receipt": false,
|
|
"needs": null,
|
|
"names": {
|
|
"cli": "wai conversation update",
|
|
"mcp": null,
|
|
"c": "wai_conversation_update",
|
|
"rust": "wai::conversation::update",
|
|
"sdk": "wai.conversation.update"
|
|
}
|
|
},
|
|
{
|
|
"id": "message.create",
|
|
"summary": "A message",
|
|
"cli": "wai message create",
|
|
"aliases": [],
|
|
"usage": [
|
|
"wai message create [--target <name|url>] [--body <json>|@<file>] [--yes] POST /msg/post on the room service"
|
|
],
|
|
"placement": "service",
|
|
"effect": "writes-target",
|
|
"dry_run": true,
|
|
"confirm": "always",
|
|
"route": {
|
|
"service": "wai-room",
|
|
"method": "POST",
|
|
"path": "/msg/post"
|
|
},
|
|
"doors": {
|
|
"cli": true,
|
|
"mcp": false,
|
|
"http": true
|
|
},
|
|
"toolset": "core",
|
|
"stability": "preview",
|
|
"input": {
|
|
"$ref": "joule-code/joule-code-rs/crates/joule-moq-room/openapi.json#/paths/~1msg~1post/post"
|
|
},
|
|
"output": {
|
|
"type": "object",
|
|
"required": [
|
|
"target",
|
|
"request",
|
|
"status",
|
|
"body"
|
|
],
|
|
"description": "The service's answer: the target the request went to (its name, and its address), the request (method and path), the HTTP status, the body (its JSON, or {\"text\": ...}), and where the key it carried came from (WAI_TOKEN, stored, or none), never the key"
|
|
},
|
|
"stream": null,
|
|
"since": "0.3.0",
|
|
"deprecated": null,
|
|
"receipt": false,
|
|
"needs": null,
|
|
"names": {
|
|
"cli": "wai message create",
|
|
"mcp": null,
|
|
"c": "wai_message_create",
|
|
"rust": "wai::message::create",
|
|
"sdk": "wai.message.create"
|
|
}
|
|
},
|
|
{
|
|
"id": "acknowledgement.create",
|
|
"summary": "An acknowledgement",
|
|
"cli": "wai acknowledgement create",
|
|
"aliases": [],
|
|
"usage": [
|
|
"wai acknowledgement create [--target <name|url>] [--body <json>|@<file>] [--yes] POST /msg/ack on the room service"
|
|
],
|
|
"placement": "service",
|
|
"effect": "writes-target",
|
|
"dry_run": true,
|
|
"confirm": "always",
|
|
"route": {
|
|
"service": "wai-room",
|
|
"method": "POST",
|
|
"path": "/msg/ack"
|
|
},
|
|
"doors": {
|
|
"cli": true,
|
|
"mcp": false,
|
|
"http": true
|
|
},
|
|
"toolset": "core",
|
|
"stability": "preview",
|
|
"input": {
|
|
"$ref": "joule-code/joule-code-rs/crates/joule-moq-room/openapi.json#/paths/~1msg~1ack/post"
|
|
},
|
|
"output": {
|
|
"type": "object",
|
|
"required": [
|
|
"target",
|
|
"request",
|
|
"status",
|
|
"body"
|
|
],
|
|
"description": "The service's answer: the target the request went to (its name, and its address), the request (method and path), the HTTP status, the body (its JSON, or {\"text\": ...}), and where the key it carried came from (WAI_TOKEN, stored, or none), never the key"
|
|
},
|
|
"stream": null,
|
|
"since": "0.3.0",
|
|
"deprecated": null,
|
|
"receipt": false,
|
|
"needs": null,
|
|
"names": {
|
|
"cli": "wai acknowledgement create",
|
|
"mcp": null,
|
|
"c": "wai_acknowledgement_create",
|
|
"rust": "wai::acknowledgement::create",
|
|
"sdk": "wai.acknowledgement.create"
|
|
}
|
|
},
|
|
{
|
|
"id": "conversation.leave",
|
|
"summary": "The caller leaves",
|
|
"cli": "wai conversation leave",
|
|
"aliases": [],
|
|
"usage": [
|
|
"wai conversation leave [--target <name|url>] [--body <json>|@<file>] [--yes] POST /msg/leave on the room service"
|
|
],
|
|
"placement": "service",
|
|
"effect": "writes-target",
|
|
"dry_run": true,
|
|
"confirm": "always",
|
|
"route": {
|
|
"service": "wai-room",
|
|
"method": "POST",
|
|
"path": "/msg/leave"
|
|
},
|
|
"doors": {
|
|
"cli": true,
|
|
"mcp": false,
|
|
"http": true
|
|
},
|
|
"toolset": "core",
|
|
"stability": "preview",
|
|
"input": {
|
|
"$ref": "joule-code/joule-code-rs/crates/joule-moq-room/openapi.json#/paths/~1msg~1leave/post"
|
|
},
|
|
"output": {
|
|
"type": "object",
|
|
"required": [
|
|
"target",
|
|
"request",
|
|
"status",
|
|
"body"
|
|
],
|
|
"description": "The service's answer: the target the request went to (its name, and its address), the request (method and path), the HTTP status, the body (its JSON, or {\"text\": ...}), and where the key it carried came from (WAI_TOKEN, stored, or none), never the key"
|
|
},
|
|
"stream": null,
|
|
"since": "0.3.0",
|
|
"deprecated": null,
|
|
"receipt": false,
|
|
"needs": null,
|
|
"names": {
|
|
"cli": "wai conversation leave",
|
|
"mcp": null,
|
|
"c": "wai_conversation_leave",
|
|
"rust": "wai::conversation::leave",
|
|
"sdk": "wai.conversation.leave"
|
|
}
|
|
},
|
|
{
|
|
"id": "member.delete",
|
|
"summary": "The owner removes a member",
|
|
"cli": "wai member delete",
|
|
"aliases": [],
|
|
"usage": [
|
|
"wai member delete [--target <name|url>] [--body <json>|@<file>] [--yes] POST /msg/remove on the room service"
|
|
],
|
|
"placement": "service",
|
|
"effect": "writes-target",
|
|
"dry_run": true,
|
|
"confirm": "always",
|
|
"route": {
|
|
"service": "wai-room",
|
|
"method": "POST",
|
|
"path": "/msg/remove"
|
|
},
|
|
"doors": {
|
|
"cli": true,
|
|
"mcp": false,
|
|
"http": true
|
|
},
|
|
"toolset": "core",
|
|
"stability": "preview",
|
|
"input": {
|
|
"$ref": "joule-code/joule-code-rs/crates/joule-moq-room/openapi.json#/paths/~1msg~1remove/post"
|
|
},
|
|
"output": {
|
|
"type": "object",
|
|
"required": [
|
|
"target",
|
|
"request",
|
|
"status",
|
|
"body"
|
|
],
|
|
"description": "The service's answer: the target the request went to (its name, and its address), the request (method and path), the HTTP status, the body (its JSON, or {\"text\": ...}), and where the key it carried came from (WAI_TOKEN, stored, or none), never the key"
|
|
},
|
|
"stream": null,
|
|
"since": "0.3.0",
|
|
"deprecated": null,
|
|
"receipt": false,
|
|
"needs": null,
|
|
"names": {
|
|
"cli": "wai member delete",
|
|
"mcp": null,
|
|
"c": "wai_member_delete",
|
|
"rust": "wai::member::delete",
|
|
"sdk": "wai.member.delete"
|
|
}
|
|
},
|
|
{
|
|
"id": "call.setup",
|
|
"summary": "A challenge for a proof",
|
|
"cli": "wai call setup",
|
|
"aliases": [],
|
|
"usage": [
|
|
"wai call setup [--target <name|url>] [--query <name>=<value>]... [--yes] GET /call/challenge on the room service"
|
|
],
|
|
"placement": "service",
|
|
"effect": "writes-target",
|
|
"dry_run": true,
|
|
"confirm": "always",
|
|
"route": {
|
|
"service": "wai-room",
|
|
"method": "GET",
|
|
"path": "/call/challenge"
|
|
},
|
|
"doors": {
|
|
"cli": true,
|
|
"mcp": false,
|
|
"http": true
|
|
},
|
|
"toolset": "core",
|
|
"stability": "preview",
|
|
"input": {
|
|
"$ref": "joule-code/joule-code-rs/crates/joule-moq-room/openapi.json#/paths/~1call~1challenge/get"
|
|
},
|
|
"output": {
|
|
"type": "object",
|
|
"required": [
|
|
"target",
|
|
"request",
|
|
"status",
|
|
"body"
|
|
],
|
|
"description": "The service's answer: the target the request went to (its name, and its address), the request (method and path), the HTTP status, the body (its JSON, or {\"text\": ...}), and where the key it carried came from (WAI_TOKEN, stored, or none), never the key"
|
|
},
|
|
"stream": null,
|
|
"since": "0.3.0",
|
|
"deprecated": null,
|
|
"receipt": false,
|
|
"needs": null,
|
|
"names": {
|
|
"cli": "wai call setup",
|
|
"mcp": null,
|
|
"c": "wai_call_setup",
|
|
"rust": "wai::call::setup",
|
|
"sdk": "wai.call.setup"
|
|
}
|
|
},
|
|
{
|
|
"id": "call.create",
|
|
"summary": "Place a call",
|
|
"cli": "wai call create",
|
|
"aliases": [],
|
|
"usage": [
|
|
"wai call create [--target <name|url>] [--body <json>|@<file>] [--yes] POST /call/place on the room service"
|
|
],
|
|
"placement": "service",
|
|
"effect": "writes-target",
|
|
"dry_run": true,
|
|
"confirm": "always",
|
|
"route": {
|
|
"service": "wai-room",
|
|
"method": "POST",
|
|
"path": "/call/place"
|
|
},
|
|
"doors": {
|
|
"cli": true,
|
|
"mcp": false,
|
|
"http": true
|
|
},
|
|
"toolset": "core",
|
|
"stability": "preview",
|
|
"input": {
|
|
"$ref": "joule-code/joule-code-rs/crates/joule-moq-room/openapi.json#/paths/~1call~1place/post"
|
|
},
|
|
"output": {
|
|
"type": "object",
|
|
"required": [
|
|
"target",
|
|
"request",
|
|
"status",
|
|
"body"
|
|
],
|
|
"description": "The service's answer: the target the request went to (its name, and its address), the request (method and path), the HTTP status, the body (its JSON, or {\"text\": ...}), and where the key it carried came from (WAI_TOKEN, stored, or none), never the key"
|
|
},
|
|
"stream": null,
|
|
"since": "0.3.0",
|
|
"deprecated": null,
|
|
"receipt": false,
|
|
"needs": null,
|
|
"names": {
|
|
"cli": "wai call create",
|
|
"mcp": null,
|
|
"c": "wai_call_create",
|
|
"rust": "wai::call::create",
|
|
"sdk": "wai.call.create"
|
|
}
|
|
},
|
|
{
|
|
"id": "call.invite",
|
|
"summary": "Ring invitees",
|
|
"cli": "wai call invite",
|
|
"aliases": [],
|
|
"usage": [
|
|
"wai call invite [--target <name|url>] [--body <json>|@<file>] [--yes] POST /call/ring on the room service"
|
|
],
|
|
"placement": "service",
|
|
"effect": "writes-target",
|
|
"dry_run": true,
|
|
"confirm": "always",
|
|
"route": {
|
|
"service": "wai-room",
|
|
"method": "POST",
|
|
"path": "/call/ring"
|
|
},
|
|
"doors": {
|
|
"cli": true,
|
|
"mcp": false,
|
|
"http": true
|
|
},
|
|
"toolset": "core",
|
|
"stability": "preview",
|
|
"input": {
|
|
"$ref": "joule-code/joule-code-rs/crates/joule-moq-room/openapi.json#/paths/~1call~1ring/post"
|
|
},
|
|
"output": {
|
|
"type": "object",
|
|
"required": [
|
|
"target",
|
|
"request",
|
|
"status",
|
|
"body"
|
|
],
|
|
"description": "The service's answer: the target the request went to (its name, and its address), the request (method and path), the HTTP status, the body (its JSON, or {\"text\": ...}), and where the key it carried came from (WAI_TOKEN, stored, or none), never the key"
|
|
},
|
|
"stream": null,
|
|
"since": "0.3.0",
|
|
"deprecated": null,
|
|
"receipt": false,
|
|
"needs": null,
|
|
"names": {
|
|
"cli": "wai call invite",
|
|
"mcp": null,
|
|
"c": "wai_call_invite",
|
|
"rust": "wai::call::invite",
|
|
"sdk": "wai.call.invite"
|
|
}
|
|
},
|
|
{
|
|
"id": "inbox.show",
|
|
"summary": "The caller's inbox",
|
|
"cli": "wai inbox show",
|
|
"aliases": [],
|
|
"usage": [
|
|
"wai inbox show [--target <name|url>] [--query <name>=<value>]... GET /inbox on the room service"
|
|
],
|
|
"placement": "service",
|
|
"effect": "reads",
|
|
"dry_run": false,
|
|
"confirm": "never",
|
|
"route": {
|
|
"service": "wai-room",
|
|
"method": "GET",
|
|
"path": "/inbox"
|
|
},
|
|
"doors": {
|
|
"cli": true,
|
|
"mcp": false,
|
|
"http": true
|
|
},
|
|
"toolset": "core",
|
|
"stability": "preview",
|
|
"input": {
|
|
"$ref": "joule-code/joule-code-rs/crates/joule-moq-room/openapi.json#/paths/~1inbox/get"
|
|
},
|
|
"output": {
|
|
"type": "object",
|
|
"required": [
|
|
"target",
|
|
"request",
|
|
"status",
|
|
"body"
|
|
],
|
|
"description": "The service's answer: the target the request went to (its name, and its address), the request (method and path), the HTTP status, the body (its JSON, or {\"text\": ...}), and where the key it carried came from (WAI_TOKEN, stored, or none), never the key"
|
|
},
|
|
"stream": null,
|
|
"since": "0.3.0",
|
|
"deprecated": null,
|
|
"receipt": false,
|
|
"needs": null,
|
|
"names": {
|
|
"cli": "wai inbox show",
|
|
"mcp": null,
|
|
"c": "wai_inbox_show",
|
|
"rust": "wai::inbox::show",
|
|
"sdk": "wai.inbox.show"
|
|
}
|
|
},
|
|
{
|
|
"id": "answer.create",
|
|
"summary": "Accept, decline or cancel",
|
|
"cli": "wai answer create",
|
|
"aliases": [],
|
|
"usage": [
|
|
"wai answer create [--target <name|url>] [--body <json>|@<file>] [--yes] POST /call/answer on the room service"
|
|
],
|
|
"placement": "service",
|
|
"effect": "writes-target",
|
|
"dry_run": true,
|
|
"confirm": "always",
|
|
"route": {
|
|
"service": "wai-room",
|
|
"method": "POST",
|
|
"path": "/call/answer"
|
|
},
|
|
"doors": {
|
|
"cli": true,
|
|
"mcp": false,
|
|
"http": true
|
|
},
|
|
"toolset": "core",
|
|
"stability": "preview",
|
|
"input": {
|
|
"$ref": "joule-code/joule-code-rs/crates/joule-moq-room/openapi.json#/paths/~1call~1answer/post"
|
|
},
|
|
"output": {
|
|
"type": "object",
|
|
"required": [
|
|
"target",
|
|
"request",
|
|
"status",
|
|
"body"
|
|
],
|
|
"description": "The service's answer: the target the request went to (its name, and its address), the request (method and path), the HTTP status, the body (its JSON, or {\"text\": ...}), and where the key it carried came from (WAI_TOKEN, stored, or none), never the key"
|
|
},
|
|
"stream": null,
|
|
"since": "0.3.0",
|
|
"deprecated": null,
|
|
"receipt": false,
|
|
"needs": null,
|
|
"names": {
|
|
"cli": "wai answer create",
|
|
"mcp": null,
|
|
"c": "wai_answer_create",
|
|
"rust": "wai::answer::create",
|
|
"sdk": "wai.answer.create"
|
|
}
|
|
},
|
|
{
|
|
"id": "call.show",
|
|
"summary": "The current call",
|
|
"cli": "wai call show",
|
|
"aliases": [],
|
|
"usage": [
|
|
"wai call show [--target <name|url>] [--query <name>=<value>]... GET /call on the room service"
|
|
],
|
|
"placement": "service",
|
|
"effect": "reads",
|
|
"dry_run": false,
|
|
"confirm": "never",
|
|
"route": {
|
|
"service": "wai-room",
|
|
"method": "GET",
|
|
"path": "/call"
|
|
},
|
|
"doors": {
|
|
"cli": true,
|
|
"mcp": false,
|
|
"http": true
|
|
},
|
|
"toolset": "core",
|
|
"stability": "preview",
|
|
"input": {
|
|
"$ref": "joule-code/joule-code-rs/crates/joule-moq-room/openapi.json#/paths/~1call/get"
|
|
},
|
|
"output": {
|
|
"type": "object",
|
|
"required": [
|
|
"target",
|
|
"request",
|
|
"status",
|
|
"body"
|
|
],
|
|
"description": "The service's answer: the target the request went to (its name, and its address), the request (method and path), the HTTP status, the body (its JSON, or {\"text\": ...}), and where the key it carried came from (WAI_TOKEN, stored, or none), never the key"
|
|
},
|
|
"stream": null,
|
|
"since": "0.3.0",
|
|
"deprecated": null,
|
|
"receipt": false,
|
|
"needs": null,
|
|
"names": {
|
|
"cli": "wai call show",
|
|
"mcp": null,
|
|
"c": "wai_call_show",
|
|
"rust": "wai::call::show",
|
|
"sdk": "wai.call.show"
|
|
}
|
|
},
|
|
{
|
|
"id": "contract.create",
|
|
"summary": "A channel's share contract from its terms, signed with the operator key; each owner countersigns it",
|
|
"cli": "wai contract create",
|
|
"aliases": [],
|
|
"usage": [
|
|
"wai contract create <terms.json> --key <name|file> [--out F] [--yes] the share contract (WRC1) of the terms, signed",
|
|
" with the operator key, every countersignature still to come, written to F (<digest>.wrc); each owner adds",
|
|
" its own with `wai contract accept`; replacing a file waits for --yes (--confirm, deprecated, is the same)"
|
|
],
|
|
"placement": "local",
|
|
"effect": "writes-project",
|
|
"dry_run": true,
|
|
"confirm": "when-replacing-a-file",
|
|
"route": null,
|
|
"doors": {
|
|
"cli": true,
|
|
"mcp": false,
|
|
"http": false
|
|
},
|
|
"toolset": "core",
|
|
"stability": "preview",
|
|
"input": {
|
|
"type": "object",
|
|
"properties": {
|
|
"terms": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "The terms: start, end, currency, channel, channel_signer, rule, between, carriers, owners, splits and assets.",
|
|
"x-cli": {
|
|
"positional": true
|
|
}
|
|
},
|
|
"key": {
|
|
"type": "string",
|
|
"description": "The operator key: its name in the keystore (wai key list), or its file: 32 bytes, or 64 hexadecimal digits.",
|
|
"x-cli": {
|
|
"flag": "--key"
|
|
}
|
|
},
|
|
"out": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "The contract's file (<digest>.wrc).",
|
|
"x-cli": {
|
|
"flag": "--out"
|
|
}
|
|
}
|
|
},
|
|
"required": [
|
|
"terms",
|
|
"key"
|
|
],
|
|
"additionalProperties": false
|
|
},
|
|
"output": {
|
|
"type": "object",
|
|
"required": [
|
|
"digest",
|
|
"operator",
|
|
"channel",
|
|
"owners",
|
|
"in_force",
|
|
"contract",
|
|
"file"
|
|
],
|
|
"description": "The share contract (WRC1, hexadecimal), its digest, each owner and whether it has countersigned, and the file it went to"
|
|
},
|
|
"stream": null,
|
|
"since": "0.3.0",
|
|
"deprecated": null,
|
|
"receipt": true,
|
|
"needs": {
|
|
"all": [
|
|
"revenue_share"
|
|
]
|
|
},
|
|
"names": {
|
|
"cli": "wai contract create",
|
|
"mcp": null,
|
|
"c": "wai_contract_create",
|
|
"rust": "wai::contract::create",
|
|
"sdk": "wai.contract.create"
|
|
}
|
|
},
|
|
{
|
|
"id": "contract.update",
|
|
"summary": "An owner's countersignature added to a share contract, after its rules and the operator's signature are checked",
|
|
"cli": "wai contract accept",
|
|
"aliases": [],
|
|
"usage": [
|
|
"wai contract accept <contract> --key <name|file> [--out F] [--yes] the owner's countersignature added to the contract,",
|
|
" written to F (the contract's own file when F is not given); replacing a file waits for --yes (--confirm,",
|
|
" deprecated, is the same)"
|
|
],
|
|
"placement": "local",
|
|
"effect": "writes-project",
|
|
"dry_run": true,
|
|
"confirm": "when-replacing-a-file",
|
|
"route": null,
|
|
"doors": {
|
|
"cli": true,
|
|
"mcp": false,
|
|
"http": false
|
|
},
|
|
"toolset": "core",
|
|
"stability": "preview",
|
|
"input": {
|
|
"type": "object",
|
|
"properties": {
|
|
"contract": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "The contract's file (WRC1).",
|
|
"x-cli": {
|
|
"positional": true
|
|
}
|
|
},
|
|
"key": {
|
|
"type": "string",
|
|
"description": "The owner key: its name in the keystore (wai key list), or its file: 32 bytes, or 64 hexadecimal digits.",
|
|
"x-cli": {
|
|
"flag": "--key"
|
|
}
|
|
},
|
|
"out": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "Where the countersigned contract goes (the contract's own file).",
|
|
"x-cli": {
|
|
"flag": "--out"
|
|
}
|
|
}
|
|
},
|
|
"required": [
|
|
"contract",
|
|
"key"
|
|
],
|
|
"additionalProperties": false
|
|
},
|
|
"output": {
|
|
"type": "object",
|
|
"required": [
|
|
"digest",
|
|
"operator",
|
|
"channel",
|
|
"owners",
|
|
"in_force",
|
|
"contract",
|
|
"file"
|
|
],
|
|
"description": "The share contract (WRC1, hexadecimal), its digest, each owner and whether it has countersigned, and the file it went to"
|
|
},
|
|
"stream": null,
|
|
"since": "0.3.0",
|
|
"deprecated": null,
|
|
"receipt": true,
|
|
"needs": {
|
|
"all": [
|
|
"revenue_share"
|
|
]
|
|
},
|
|
"names": {
|
|
"cli": "wai contract update",
|
|
"mcp": null,
|
|
"c": "wai_contract_update",
|
|
"rust": "wai::contract::update",
|
|
"sdk": "wai.contract.update"
|
|
}
|
|
},
|
|
{
|
|
"id": "statement.create",
|
|
"summary": "A party's revenue-share statement for a period, recomputed from the ledger's invoices and the channel's program-as-run, signed with the operator key",
|
|
"cli": "wai statement create",
|
|
"aliases": [],
|
|
"usage": [
|
|
"wai statement create <inputs.json> --party <key> --start µs --end µs --key <name|file> [--out F] [--yes] the statement",
|
|
" (WRS1) of the party for [start, end), computed from a verification document without its statement (the",
|
|
" contract, other contracts, runs and ledger documents), signed with the operator key and written with its",
|
|
" document to F (<digest>.wai-share.json) for `wai statement verify`; replacing a file waits for --yes"
|
|
],
|
|
"placement": "local",
|
|
"effect": "writes-project",
|
|
"dry_run": true,
|
|
"confirm": "when-replacing-a-file",
|
|
"route": null,
|
|
"doors": {
|
|
"cli": true,
|
|
"mcp": false,
|
|
"http": false
|
|
},
|
|
"toolset": "core",
|
|
"stability": "preview",
|
|
"input": {
|
|
"type": "object",
|
|
"properties": {
|
|
"inputs": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "A verification document without its statement: contract, contracts, runs and ledgers.",
|
|
"x-cli": {
|
|
"positional": true
|
|
}
|
|
},
|
|
"party": {
|
|
"type": "string",
|
|
"description": "The party's key, 64 hexadecimal digits: the operator or an owner.",
|
|
"x-cli": {
|
|
"flag": "--party"
|
|
}
|
|
},
|
|
"start": {
|
|
"type": "integer",
|
|
"description": "The period's start, microseconds since 1970.",
|
|
"x-cli": {
|
|
"flag": "--start"
|
|
}
|
|
},
|
|
"end": {
|
|
"type": "integer",
|
|
"description": "The period's end, after its start.",
|
|
"x-cli": {
|
|
"flag": "--end"
|
|
}
|
|
},
|
|
"key": {
|
|
"type": "string",
|
|
"description": "The operator key: its name in the keystore (wai key list), or its file: 32 bytes, or 64 hexadecimal digits.",
|
|
"x-cli": {
|
|
"flag": "--key"
|
|
}
|
|
},
|
|
"out": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "The verification document's file (<digest>.wai-share.json).",
|
|
"x-cli": {
|
|
"flag": "--out"
|
|
}
|
|
}
|
|
},
|
|
"required": [
|
|
"inputs",
|
|
"party",
|
|
"start",
|
|
"end",
|
|
"key"
|
|
],
|
|
"additionalProperties": false
|
|
},
|
|
"output": {
|
|
"type": "object",
|
|
"required": [
|
|
"file",
|
|
"statement",
|
|
"outcome"
|
|
],
|
|
"description": "The statement (WRS1, hexadecimal), the file its verification document went to, and its outcome, recomputed here"
|
|
},
|
|
"stream": null,
|
|
"since": "0.3.0",
|
|
"deprecated": null,
|
|
"receipt": true,
|
|
"needs": {
|
|
"all": [
|
|
"revenue_share"
|
|
]
|
|
},
|
|
"names": {
|
|
"cli": "wai statement create",
|
|
"mcp": null,
|
|
"c": "wai_statement_create",
|
|
"rust": "wai::statement::create",
|
|
"sdk": "wai.statement.create"
|
|
}
|
|
},
|
|
{
|
|
"id": "statement.verify",
|
|
"summary": "A revenue-share statement's verification document checked: every line recomputed from the public records, or the reason it is refused",
|
|
"cli": "wai statement verify",
|
|
"aliases": [],
|
|
"usage": [
|
|
"wai statement verify <document.json> the outcome of a statement's verification document: each line, each split's",
|
|
" division and each impression's attribution, recomputed; exit 1 with the reason on a refusal"
|
|
],
|
|
"placement": "local",
|
|
"effect": "reads",
|
|
"dry_run": false,
|
|
"confirm": "never",
|
|
"route": null,
|
|
"doors": {
|
|
"cli": true,
|
|
"mcp": false,
|
|
"http": false
|
|
},
|
|
"toolset": "core",
|
|
"stability": "preview",
|
|
"input": {
|
|
"type": "object",
|
|
"properties": {
|
|
"document": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "The verification document: contract, contracts, statement, runs and ledgers.",
|
|
"x-cli": {
|
|
"positional": true
|
|
}
|
|
}
|
|
},
|
|
"required": [
|
|
"document"
|
|
],
|
|
"additionalProperties": false
|
|
},
|
|
"output": {
|
|
"type": "object",
|
|
"required": [
|
|
"outcome",
|
|
"statement",
|
|
"contract",
|
|
"party",
|
|
"role",
|
|
"lines",
|
|
"total"
|
|
],
|
|
"description": "An accepted statement's outcome (revenue-share §8.3): its lines, each split's division, every impression attributed, and the total"
|
|
},
|
|
"stream": null,
|
|
"since": "0.3.0",
|
|
"deprecated": null,
|
|
"receipt": false,
|
|
"needs": {
|
|
"all": [
|
|
"revenue_share"
|
|
]
|
|
},
|
|
"names": {
|
|
"cli": "wai statement verify",
|
|
"mcp": null,
|
|
"c": "wai_statement_verify",
|
|
"rust": "wai::statement::verify",
|
|
"sdk": "wai.statement.verify"
|
|
}
|
|
},
|
|
{
|
|
"id": "opportunity.create",
|
|
"summary": "A party's opportunity report for a period: the ad breaks a channel's signed cues and program-as-run prove in the programmes it shares in, signed with the issuer key",
|
|
"cli": "wai opportunity create",
|
|
"aliases": [],
|
|
"usage": [
|
|
"wai opportunity create <inputs.json> --party <key> --start µs --end µs --key <name|file> [--out F] [--yes] the report",
|
|
" (WOR1) of the party for [start, end), computed from a verification document without its report (the",
|
|
" contract, other contracts, runs and rooms), signed with the issuer key and written with its document to F",
|
|
" (<digest>.wai-opportunity.json) for `wai opportunity verify`; replacing a file waits for --yes"
|
|
],
|
|
"placement": "local",
|
|
"effect": "writes-project",
|
|
"dry_run": true,
|
|
"confirm": "when-replacing-a-file",
|
|
"route": null,
|
|
"doors": {
|
|
"cli": true,
|
|
"mcp": false,
|
|
"http": false
|
|
},
|
|
"toolset": "core",
|
|
"stability": "preview",
|
|
"input": {
|
|
"type": "object",
|
|
"properties": {
|
|
"inputs": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "A verification document without its report: contract, contracts, runs and rooms.",
|
|
"x-cli": {
|
|
"positional": true
|
|
}
|
|
},
|
|
"party": {
|
|
"type": "string",
|
|
"description": "The party's key, 64 hexadecimal digits: the operator or an owner.",
|
|
"x-cli": {
|
|
"flag": "--party"
|
|
}
|
|
},
|
|
"start": {
|
|
"type": "integer",
|
|
"description": "The period's start, microseconds since 1970.",
|
|
"x-cli": {
|
|
"flag": "--start"
|
|
}
|
|
},
|
|
"end": {
|
|
"type": "integer",
|
|
"description": "The period's end, after its start.",
|
|
"x-cli": {
|
|
"flag": "--end"
|
|
}
|
|
},
|
|
"key": {
|
|
"type": "string",
|
|
"description": "The issuer key: its name in the keystore (wai key list), or its file: 32 bytes, or 64 hexadecimal digits.",
|
|
"x-cli": {
|
|
"flag": "--key"
|
|
}
|
|
},
|
|
"out": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "The verification document's file (<digest>.wai-opportunity.json).",
|
|
"x-cli": {
|
|
"flag": "--out"
|
|
}
|
|
}
|
|
},
|
|
"required": [
|
|
"inputs",
|
|
"party",
|
|
"start",
|
|
"end",
|
|
"key"
|
|
],
|
|
"additionalProperties": false
|
|
},
|
|
"output": {
|
|
"type": "object",
|
|
"required": [
|
|
"file",
|
|
"report",
|
|
"outcome"
|
|
],
|
|
"description": "The opportunity report (WOR1, hexadecimal), the file its verification document went to, and its outcome, recomputed here"
|
|
},
|
|
"stream": null,
|
|
"since": "0.3.0",
|
|
"deprecated": null,
|
|
"receipt": true,
|
|
"needs": {
|
|
"all": [
|
|
"opportunity_report"
|
|
]
|
|
},
|
|
"names": {
|
|
"cli": "wai opportunity create",
|
|
"mcp": null,
|
|
"c": "wai_opportunity_create",
|
|
"rust": "wai::opportunity::create",
|
|
"sdk": "wai.opportunity.create"
|
|
}
|
|
},
|
|
{
|
|
"id": "opportunity.verify",
|
|
"summary": "An opportunity report's or a statement check's verification document checked: every break, line and flag recomputed from the records, or the reason it is refused",
|
|
"cli": "wai opportunity verify",
|
|
"aliases": [],
|
|
"usage": [
|
|
"wai opportunity verify <document.json> the outcome of a report's or a check's verification document: each break",
|
|
" attributed, each line and flag recomputed; exit 1 with the reason on a refusal"
|
|
],
|
|
"placement": "local",
|
|
"effect": "reads",
|
|
"dry_run": false,
|
|
"confirm": "never",
|
|
"route": null,
|
|
"doors": {
|
|
"cli": true,
|
|
"mcp": false,
|
|
"http": false
|
|
},
|
|
"toolset": "core",
|
|
"stability": "preview",
|
|
"input": {
|
|
"type": "object",
|
|
"properties": {
|
|
"document": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "The verification document: a report's (contract, contracts, report, runs, rooms) or a check's (report, reported, statement, check).",
|
|
"x-cli": {
|
|
"positional": true
|
|
}
|
|
}
|
|
},
|
|
"required": [
|
|
"document"
|
|
],
|
|
"additionalProperties": false
|
|
},
|
|
"output": {
|
|
"type": "object",
|
|
"required": [
|
|
"outcome"
|
|
],
|
|
"description": "An accepted report's outcome (opportunity-report §8.3: every break attributed, each line and the totals) or an accepted check's (§11.3: each line's opportunities, reported and signed figures and flags)"
|
|
},
|
|
"stream": null,
|
|
"since": "0.3.0",
|
|
"deprecated": null,
|
|
"receipt": false,
|
|
"needs": {
|
|
"all": [
|
|
"opportunity_report"
|
|
]
|
|
},
|
|
"names": {
|
|
"cli": "wai opportunity verify",
|
|
"mcp": null,
|
|
"c": "wai_opportunity_verify",
|
|
"rust": "wai::opportunity::verify",
|
|
"sdk": "wai.opportunity.verify"
|
|
}
|
|
},
|
|
{
|
|
"id": "statement.check",
|
|
"summary": "A platform's reported statement checked against an opportunity report and, when given, the operator's signed statement, signed with the issuer key",
|
|
"cli": "wai statement check",
|
|
"aliases": [],
|
|
"usage": [
|
|
"wai statement check <report.json> <reported> [--statement <document.json>] [--floor ppm] [--ceiling ppm] --key <name|file> [--out F] [--yes]",
|
|
" the check (WCK1) of a reported statement (JSON, or CSV for a file named .csv) beside a report's verification",
|
|
" document and a signed statement's, at the bounds given (500000 and 2000000 when not), signed with the issuer",
|
|
" key and written with its document to F (<digest>.wai-check.json); replacing a file waits for --yes"
|
|
],
|
|
"placement": "local",
|
|
"effect": "writes-project",
|
|
"dry_run": true,
|
|
"confirm": "when-replacing-a-file",
|
|
"route": null,
|
|
"doors": {
|
|
"cli": true,
|
|
"mcp": false,
|
|
"http": false
|
|
},
|
|
"toolset": "core",
|
|
"stability": "preview",
|
|
"input": {
|
|
"type": "object",
|
|
"properties": {
|
|
"report": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "A report's verification document, with its report.",
|
|
"x-cli": {
|
|
"positional": true
|
|
}
|
|
},
|
|
"reported": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "The reported statement: JSON, or CSV for a file named .csv.",
|
|
"x-cli": {
|
|
"positional": true
|
|
}
|
|
},
|
|
"statement": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "A signed revenue-share statement's verification document of the same party and period.",
|
|
"x-cli": {
|
|
"flag": "--statement"
|
|
}
|
|
},
|
|
"floor": {
|
|
"type": "integer",
|
|
"description": "The lower bound, in millionths of the period's rate (500000).",
|
|
"x-cli": {
|
|
"flag": "--floor"
|
|
}
|
|
},
|
|
"ceiling": {
|
|
"type": "integer",
|
|
"description": "The upper bound, in millionths of the period's rate (2000000).",
|
|
"x-cli": {
|
|
"flag": "--ceiling"
|
|
}
|
|
},
|
|
"key": {
|
|
"type": "string",
|
|
"description": "The issuer key: its name in the keystore (wai key list), or its file: 32 bytes, or 64 hexadecimal digits.",
|
|
"x-cli": {
|
|
"flag": "--key"
|
|
}
|
|
},
|
|
"out": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "The verification document's file (<digest>.wai-check.json).",
|
|
"x-cli": {
|
|
"flag": "--out"
|
|
}
|
|
}
|
|
},
|
|
"required": [
|
|
"report",
|
|
"reported",
|
|
"key"
|
|
],
|
|
"additionalProperties": false
|
|
},
|
|
"output": {
|
|
"type": "object",
|
|
"required": [
|
|
"file",
|
|
"check",
|
|
"outcome"
|
|
],
|
|
"description": "The statement check (WCK1, hexadecimal), the file its verification document went to, and its outcome, recomputed here"
|
|
},
|
|
"stream": null,
|
|
"since": "0.3.0",
|
|
"deprecated": null,
|
|
"receipt": true,
|
|
"needs": {
|
|
"all": [
|
|
"opportunity_report"
|
|
]
|
|
},
|
|
"names": {
|
|
"cli": "wai statement check",
|
|
"mcp": null,
|
|
"c": "wai_statement_check",
|
|
"rust": "wai::statement::check",
|
|
"sdk": "wai.statement.check"
|
|
}
|
|
},
|
|
{
|
|
"id": "key.create",
|
|
"summary": "A new Ed25519 signing key kept under a name, for one role, its secret in macOS's keychain or in a seed file; every signing operation's --key takes the name",
|
|
"cli": "wai key create",
|
|
"aliases": [],
|
|
"usage": [
|
|
"wai key create <name> --for <role> [--store keychain|file] [--keystore DIR] a new signing key named <name>",
|
|
" (1 to 48 of a-z, 0-9, - and _), for one role: origin, signer, room, audit, ledger, release, remote-host,",
|
|
" quantum or dev. Its secret is kept in the login keychain (--store keychain, the default on macOS) or in a",
|
|
" file of the keystore (--store file, the default elsewhere: mode 0600 on Unix; on Windows an access list for",
|
|
" this account alone, inheritance off), and is never printed; a seed file another account may read is refused.",
|
|
" The keystore is DIR, $WAI_KEYSTORE, or ~/.config/wai/keys (%APPDATA%\\wai\\keys on Windows). --key <name> signs",
|
|
" with it"
|
|
],
|
|
"placement": "local",
|
|
"effect": "writes-project",
|
|
"dry_run": true,
|
|
"confirm": "never",
|
|
"route": null,
|
|
"doors": {
|
|
"cli": true,
|
|
"mcp": false,
|
|
"http": false
|
|
},
|
|
"toolset": "core",
|
|
"stability": "preview",
|
|
"input": {
|
|
"type": "object",
|
|
"properties": {
|
|
"name": {
|
|
"type": "string",
|
|
"description": "The key's name: 1 to 48 of a-z, 0-9, - and _, beginning with a letter or a digit.",
|
|
"x-cli": {
|
|
"positional": true
|
|
}
|
|
},
|
|
"role": {
|
|
"type": "string",
|
|
"description": "The key's role: origin, signer, room, audit, ledger, release, remote-host, quantum or dev.",
|
|
"x-cli": {
|
|
"flag": "--for"
|
|
}
|
|
},
|
|
"store": {
|
|
"type": "string",
|
|
"description": "Where the secret is kept: keychain (the default on macOS) or file (the default elsewhere: mode 0600 on Unix; on Windows, an access list for this account alone).",
|
|
"x-cli": {
|
|
"flag": "--store"
|
|
}
|
|
},
|
|
"keystore": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "The keystore's directory ($WAI_KEYSTORE, or ~/.config/wai/keys).",
|
|
"x-cli": {
|
|
"flag": "--keystore"
|
|
}
|
|
}
|
|
},
|
|
"required": [
|
|
"name",
|
|
"role"
|
|
],
|
|
"additionalProperties": false
|
|
},
|
|
"output": {
|
|
"type": "object",
|
|
"required": [
|
|
"name",
|
|
"role",
|
|
"id",
|
|
"key",
|
|
"store",
|
|
"keystore"
|
|
],
|
|
"description": "The key kept: its name, role and key id, its public key in hexadecimal and its did:key (null in a dry run, which makes no key), where its secret is kept (store: keychain or file), and the keystore"
|
|
},
|
|
"stream": null,
|
|
"since": "0.5.0",
|
|
"deprecated": null,
|
|
"receipt": true,
|
|
"needs": {
|
|
"all": [
|
|
"quickstart"
|
|
]
|
|
},
|
|
"names": {
|
|
"cli": "wai key create",
|
|
"mcp": null,
|
|
"c": "wai_key_create",
|
|
"rust": "wai::key::create",
|
|
"sdk": "wai.key.create"
|
|
}
|
|
},
|
|
{
|
|
"id": "key.list",
|
|
"summary": "Every key of the keystore: its name, role, key id, public key, status and where its secret is kept",
|
|
"cli": "wai key list",
|
|
"aliases": [],
|
|
"usage": [
|
|
"wai key list [--for <role>] [--keystore DIR] every key of the keystore, its newest version, and where its secret is kept"
|
|
],
|
|
"placement": "local",
|
|
"effect": "reads",
|
|
"dry_run": false,
|
|
"confirm": "never",
|
|
"route": null,
|
|
"doors": {
|
|
"cli": true,
|
|
"mcp": false,
|
|
"http": false
|
|
},
|
|
"toolset": "core",
|
|
"stability": "preview",
|
|
"input": {
|
|
"type": "object",
|
|
"properties": {
|
|
"role": {
|
|
"type": "string",
|
|
"description": "Only the keys of this role.",
|
|
"x-cli": {
|
|
"flag": "--for"
|
|
}
|
|
},
|
|
"keystore": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "The keystore's directory ($WAI_KEYSTORE, or ~/.config/wai/keys).",
|
|
"x-cli": {
|
|
"flag": "--keystore"
|
|
}
|
|
}
|
|
},
|
|
"required": [],
|
|
"additionalProperties": false
|
|
},
|
|
"output": {
|
|
"type": "object",
|
|
"required": [
|
|
"keystore",
|
|
"keys"
|
|
],
|
|
"description": "Each key of the keystore: its name, role, newest key id, public key, did:key and status, and where its secret is kept"
|
|
},
|
|
"stream": null,
|
|
"since": "0.5.0",
|
|
"deprecated": null,
|
|
"receipt": false,
|
|
"needs": {
|
|
"all": [
|
|
"quickstart"
|
|
]
|
|
},
|
|
"names": {
|
|
"cli": "wai key list",
|
|
"mcp": null,
|
|
"c": "wai_key_list",
|
|
"rust": "wai::key::list",
|
|
"sdk": "wai.key.list"
|
|
}
|
|
},
|
|
{
|
|
"id": "key.show",
|
|
"summary": "One key: its public key and did:key, its role, every version with its status as a key log states it, and the version --key signs with",
|
|
"cli": "wai key show",
|
|
"aliases": [],
|
|
"usage": [
|
|
"wai key show <name> [--keystore DIR] one key's versions, each active, retired (until) or revoked (compromised since), as",
|
|
" jwp-receipts §7.2's key log states them, and the one --key <name> signs with"
|
|
],
|
|
"placement": "local",
|
|
"effect": "reads",
|
|
"dry_run": false,
|
|
"confirm": "never",
|
|
"route": null,
|
|
"doors": {
|
|
"cli": true,
|
|
"mcp": false,
|
|
"http": false
|
|
},
|
|
"toolset": "core",
|
|
"stability": "preview",
|
|
"input": {
|
|
"type": "object",
|
|
"properties": {
|
|
"name": {
|
|
"type": "string",
|
|
"description": "The key's name.",
|
|
"x-cli": {
|
|
"positional": true
|
|
}
|
|
},
|
|
"keystore": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "The keystore's directory ($WAI_KEYSTORE, or ~/.config/wai/keys).",
|
|
"x-cli": {
|
|
"flag": "--keystore"
|
|
}
|
|
}
|
|
},
|
|
"required": [
|
|
"name"
|
|
],
|
|
"additionalProperties": false
|
|
},
|
|
"output": {
|
|
"type": "object",
|
|
"required": [
|
|
"keystore",
|
|
"name",
|
|
"role",
|
|
"signs_with",
|
|
"versions"
|
|
],
|
|
"description": "The key's versions, oldest first, each with its key id, public key, did:key, status (active, retired, revoked) and times as a key log states them (jwp-receipts §7.2), and where its secret is kept (store; null once destroyed); and the key id --key signs with"
|
|
},
|
|
"stream": null,
|
|
"since": "0.5.0",
|
|
"deprecated": null,
|
|
"receipt": false,
|
|
"needs": {
|
|
"all": [
|
|
"quickstart"
|
|
]
|
|
},
|
|
"names": {
|
|
"cli": "wai key show",
|
|
"mcp": null,
|
|
"c": "wai_key_show",
|
|
"rust": "wai::key::show",
|
|
"sdk": "wai.key.show"
|
|
}
|
|
},
|
|
{
|
|
"id": "key.rotate",
|
|
"summary": "A key's successor made under the same name and a new key id, the old version retired now and its secret destroyed",
|
|
"cli": "wai key rotate",
|
|
"aliases": [],
|
|
"usage": [
|
|
"wai key rotate <name> [--store keychain|file] [--keystore DIR] [--yes] a successor under a new key id (<name>.<n>),",
|
|
" which --key <name> signs with from now; the old version is retired now and its secret destroyed (jwp-receipts",
|
|
" §7.6), so it waits for --yes"
|
|
],
|
|
"placement": "local",
|
|
"effect": "destructive",
|
|
"dry_run": true,
|
|
"confirm": "always",
|
|
"route": null,
|
|
"doors": {
|
|
"cli": true,
|
|
"mcp": false,
|
|
"http": false
|
|
},
|
|
"toolset": "core",
|
|
"stability": "preview",
|
|
"input": {
|
|
"type": "object",
|
|
"properties": {
|
|
"name": {
|
|
"type": "string",
|
|
"description": "The key's name.",
|
|
"x-cli": {
|
|
"positional": true
|
|
}
|
|
},
|
|
"store": {
|
|
"type": "string",
|
|
"description": "Where the successor's secret is kept (where the old one's was).",
|
|
"x-cli": {
|
|
"flag": "--store"
|
|
}
|
|
},
|
|
"keystore": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "The keystore's directory ($WAI_KEYSTORE, or ~/.config/wai/keys).",
|
|
"x-cli": {
|
|
"flag": "--keystore"
|
|
}
|
|
}
|
|
},
|
|
"required": [
|
|
"name"
|
|
],
|
|
"additionalProperties": false
|
|
},
|
|
"output": {
|
|
"type": "object",
|
|
"required": [
|
|
"name",
|
|
"previous",
|
|
"id",
|
|
"key",
|
|
"store"
|
|
],
|
|
"description": "The version retired (previous, with until) and the successor made: its key id, public key (null in a dry run) and where its secret is kept (store)"
|
|
},
|
|
"stream": null,
|
|
"since": "0.5.0",
|
|
"deprecated": null,
|
|
"receipt": true,
|
|
"needs": {
|
|
"all": [
|
|
"quickstart"
|
|
]
|
|
},
|
|
"names": {
|
|
"cli": "wai key rotate",
|
|
"mcp": null,
|
|
"c": "wai_key_rotate",
|
|
"rust": "wai::key::rotate",
|
|
"sdk": "wai.key.rotate"
|
|
}
|
|
},
|
|
{
|
|
"id": "key.revoke",
|
|
"summary": "A key's version revoked as compromised from a time, its secret destroyed, so --key signs nothing with it",
|
|
"cli": "wai key revoke",
|
|
"aliases": [],
|
|
"usage": [
|
|
"wai key revoke <name> [--id <key-id>] [--compromised-since <date-time>] [--keystore DIR] [--yes] the key's newest",
|
|
" version (or --id's) revoked, compromised since the time given (now; YYYY-MM-DDTHH:MM:SSZ), and its secret",
|
|
" destroyed (jwp-receipts §7.6); it waits for --yes"
|
|
],
|
|
"placement": "local",
|
|
"effect": "destructive",
|
|
"dry_run": true,
|
|
"confirm": "always",
|
|
"route": null,
|
|
"doors": {
|
|
"cli": true,
|
|
"mcp": false,
|
|
"http": false
|
|
},
|
|
"toolset": "core",
|
|
"stability": "preview",
|
|
"input": {
|
|
"type": "object",
|
|
"properties": {
|
|
"name": {
|
|
"type": "string",
|
|
"description": "The key's name.",
|
|
"x-cli": {
|
|
"positional": true
|
|
}
|
|
},
|
|
"id": {
|
|
"type": "string",
|
|
"description": "The version to revoke, by its key id (the newest).",
|
|
"x-cli": {
|
|
"flag": "--id"
|
|
}
|
|
},
|
|
"compromised_since": {
|
|
"type": "string",
|
|
"description": "From when another party may have held it: a date-time in UTC, YYYY-MM-DDTHH:MM:SSZ (now).",
|
|
"x-cli": {
|
|
"flag": "--compromised-since"
|
|
}
|
|
},
|
|
"keystore": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "The keystore's directory ($WAI_KEYSTORE, or ~/.config/wai/keys).",
|
|
"x-cli": {
|
|
"flag": "--keystore"
|
|
}
|
|
}
|
|
},
|
|
"required": [
|
|
"name"
|
|
],
|
|
"additionalProperties": false
|
|
},
|
|
"output": {
|
|
"type": "object",
|
|
"required": [
|
|
"name",
|
|
"id",
|
|
"compromised_since"
|
|
],
|
|
"description": "The version revoked, the time from which it is held compromised, and whether its secret was destroyed"
|
|
},
|
|
"stream": null,
|
|
"since": "0.5.0",
|
|
"deprecated": null,
|
|
"receipt": true,
|
|
"needs": {
|
|
"all": [
|
|
"quickstart"
|
|
]
|
|
},
|
|
"names": {
|
|
"cli": "wai key revoke",
|
|
"mcp": null,
|
|
"c": "wai_key_revoke",
|
|
"rust": "wai::key::revoke",
|
|
"sdk": "wai.key.revoke"
|
|
}
|
|
},
|
|
{
|
|
"id": "key.import",
|
|
"summary": "A key file's seed kept under a name, as wai key create keeps a new one; a published test seed is refused unless named one",
|
|
"cli": "wai key import",
|
|
"aliases": [],
|
|
"usage": [
|
|
"wai key import <name> --for <role> --from <file> [--store keychain|file] [--published-test-seed] [--keystore DIR]",
|
|
" the seed of a key file (64 hexadecimal digits or the 32 bytes, as every --key file holds) kept as wai key create",
|
|
" keeps one; a seed of one byte repeated 32 times, the form of every seed WAI publishes, is refused unless",
|
|
" --published-test-seed names it a test key"
|
|
],
|
|
"placement": "local",
|
|
"effect": "writes-project",
|
|
"dry_run": true,
|
|
"confirm": "never",
|
|
"route": null,
|
|
"doors": {
|
|
"cli": true,
|
|
"mcp": false,
|
|
"http": false
|
|
},
|
|
"toolset": "core",
|
|
"stability": "preview",
|
|
"input": {
|
|
"type": "object",
|
|
"properties": {
|
|
"name": {
|
|
"type": "string",
|
|
"description": "The key's name.",
|
|
"x-cli": {
|
|
"positional": true
|
|
}
|
|
},
|
|
"role": {
|
|
"type": "string",
|
|
"description": "The key's role: origin, signer, room, audit, ledger, release, remote-host, quantum or dev.",
|
|
"x-cli": {
|
|
"flag": "--for"
|
|
}
|
|
},
|
|
"from": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "The key file: 64 hexadecimal digits, or the 32 bytes.",
|
|
"x-cli": {
|
|
"flag": "--from"
|
|
}
|
|
},
|
|
"store": {
|
|
"type": "string",
|
|
"description": "Where the secret is kept: keychain (the default on macOS) or file.",
|
|
"x-cli": {
|
|
"flag": "--store"
|
|
}
|
|
},
|
|
"published_test_seed": {
|
|
"type": "boolean",
|
|
"description": "Keep a published test seed, marked as one.",
|
|
"x-cli": {
|
|
"flag": "--published-test-seed"
|
|
}
|
|
},
|
|
"keystore": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "The keystore's directory ($WAI_KEYSTORE, or ~/.config/wai/keys).",
|
|
"x-cli": {
|
|
"flag": "--keystore"
|
|
}
|
|
}
|
|
},
|
|
"required": [
|
|
"name",
|
|
"role",
|
|
"from"
|
|
],
|
|
"additionalProperties": false
|
|
},
|
|
"output": {
|
|
"type": "object",
|
|
"required": [
|
|
"name",
|
|
"role",
|
|
"id",
|
|
"key",
|
|
"store",
|
|
"keystore"
|
|
],
|
|
"description": "The key kept: its name, role and key id, its public key in hexadecimal and its did:key (null in a dry run, which makes no key), where its secret is kept (store: keychain or file), and the keystore"
|
|
},
|
|
"stream": null,
|
|
"since": "0.5.0",
|
|
"deprecated": null,
|
|
"receipt": true,
|
|
"needs": {
|
|
"all": [
|
|
"quickstart"
|
|
]
|
|
},
|
|
"names": {
|
|
"cli": "wai key import",
|
|
"mcp": null,
|
|
"c": "wai_key_import",
|
|
"rust": "wai::key::import",
|
|
"sdk": "wai.key.import"
|
|
}
|
|
},
|
|
{
|
|
"id": "key.export",
|
|
"summary": "A key's public half, never its secret: in hexadecimal, as a did:key, as key-log entries, or as the line wai-keys lists it by",
|
|
"cli": "wai key export",
|
|
"aliases": [],
|
|
"usage": [
|
|
"wai key export <name> [--format hex|did-key|entry|wai-keys] [--may-sign <authority>,...] [--out F] [--keystore DIR]",
|
|
" the public half alone: hex (the default), did-key, entry (each version as a key-log entry, jwp-receipts §7.2) or",
|
|
" wai-keys (the newest as wai-keys init --key and append --add take it); entry and wai-keys name the authorities",
|
|
" an origin gives it (--may-sign); to stdout, or to F (replacing a file waits for --yes)"
|
|
],
|
|
"placement": "local",
|
|
"effect": "writes-project",
|
|
"dry_run": true,
|
|
"confirm": "when-replacing-a-file",
|
|
"route": null,
|
|
"doors": {
|
|
"cli": true,
|
|
"mcp": false,
|
|
"http": false
|
|
},
|
|
"toolset": "core",
|
|
"stability": "preview",
|
|
"input": {
|
|
"type": "object",
|
|
"properties": {
|
|
"name": {
|
|
"type": "string",
|
|
"description": "The key's name.",
|
|
"x-cli": {
|
|
"positional": true
|
|
}
|
|
},
|
|
"format": {
|
|
"type": "string",
|
|
"description": "hex (the default), did-key, entry or wai-keys.",
|
|
"x-cli": {
|
|
"flag": "--format"
|
|
}
|
|
},
|
|
"may_sign": {
|
|
"type": "string",
|
|
"description": "With entry and wai-keys: the authorities an origin gives the key (jwp-receipts §7.5), comma-separated.",
|
|
"x-cli": {
|
|
"flag": "--may-sign"
|
|
}
|
|
},
|
|
"out": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "Write it to this file.",
|
|
"x-cli": {
|
|
"flag": "--out"
|
|
}
|
|
},
|
|
"keystore": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "The keystore's directory ($WAI_KEYSTORE, or ~/.config/wai/keys).",
|
|
"x-cli": {
|
|
"flag": "--keystore"
|
|
}
|
|
}
|
|
},
|
|
"required": [
|
|
"name"
|
|
],
|
|
"additionalProperties": false
|
|
},
|
|
"output": {
|
|
"type": "object",
|
|
"required": [
|
|
"name",
|
|
"id",
|
|
"format",
|
|
"text"
|
|
],
|
|
"description": "The key's public half in the format asked for (the text, and for entry the key-log entries), and the file it went to"
|
|
},
|
|
"stream": null,
|
|
"since": "0.5.0",
|
|
"deprecated": null,
|
|
"receipt": true,
|
|
"needs": {
|
|
"all": [
|
|
"quickstart"
|
|
]
|
|
},
|
|
"names": {
|
|
"cli": "wai key export",
|
|
"mcp": null,
|
|
"c": "wai_key_export",
|
|
"rust": "wai::key::export",
|
|
"sdk": "wai.key.export"
|
|
}
|
|
},
|
|
{
|
|
"id": "credential.create",
|
|
"summary": "The key a service takes, read from standard input and kept for its origin in the keychain or a file only its owner reads",
|
|
"cli": "wai auth login",
|
|
"aliases": [],
|
|
"usage": [
|
|
"wai auth login --url <URL> [--store keychain|file] [--yes] the key for the service at URL, read from standard input",
|
|
" (one line; never from the command line), kept for its origin: in the login keychain on macOS, else in a file of",
|
|
" the configuration directory that only its owner reads; WAI_TOKEN, when set, is sent ahead of every kept key.",
|
|
" A key goes over https://, or over http:// to this machine alone. Replacing an origin's key waits for --yes"
|
|
],
|
|
"placement": "local",
|
|
"effect": "writes-project",
|
|
"dry_run": true,
|
|
"confirm": "when-replacing-a-file",
|
|
"route": null,
|
|
"doors": {
|
|
"cli": true,
|
|
"mcp": false,
|
|
"http": false
|
|
},
|
|
"toolset": "core",
|
|
"stability": "preview",
|
|
"input": {
|
|
"type": "object",
|
|
"properties": {
|
|
"url": {
|
|
"type": "string",
|
|
"description": "The service's http:// or https:// address; the key is kept for its origin.",
|
|
"x-cli": {
|
|
"flag": "--url"
|
|
}
|
|
},
|
|
"store": {
|
|
"type": "string",
|
|
"description": "keychain (the default on macOS) or file (the default elsewhere).",
|
|
"x-cli": {
|
|
"flag": "--store"
|
|
}
|
|
}
|
|
},
|
|
"required": [
|
|
"url"
|
|
],
|
|
"additionalProperties": false
|
|
},
|
|
"output": {
|
|
"type": "object",
|
|
"required": [
|
|
"origin",
|
|
"store"
|
|
],
|
|
"description": "The origin a key is kept for and where it is kept (keychain or file), never the key"
|
|
},
|
|
"stream": null,
|
|
"since": "0.5.0",
|
|
"deprecated": null,
|
|
"receipt": false,
|
|
"needs": null,
|
|
"names": {
|
|
"cli": "wai credential create",
|
|
"mcp": null,
|
|
"c": "wai_credential_create",
|
|
"rust": "wai::credential::create",
|
|
"sdk": "wai.credential.create"
|
|
}
|
|
},
|
|
{
|
|
"id": "credential.list",
|
|
"summary": "The origins a key is kept for and where each is kept, never a key, and whether WAI_TOKEN is set",
|
|
"cli": "wai auth status",
|
|
"aliases": [],
|
|
"usage": [
|
|
"wai auth status each origin a key is kept for (wai auth login) and where it is kept, and whether WAI_TOKEN is set; no key is printed"
|
|
],
|
|
"placement": "local",
|
|
"effect": "reads",
|
|
"dry_run": false,
|
|
"confirm": "never",
|
|
"route": null,
|
|
"doors": {
|
|
"cli": true,
|
|
"mcp": false,
|
|
"http": false
|
|
},
|
|
"toolset": "core",
|
|
"stability": "preview",
|
|
"input": {
|
|
"type": "object",
|
|
"properties": {},
|
|
"required": [],
|
|
"additionalProperties": false
|
|
},
|
|
"output": {
|
|
"type": "object",
|
|
"required": [
|
|
"credentials",
|
|
"wai_token"
|
|
],
|
|
"description": "Each origin a key is kept for and where it is kept (keychain or file), never a key; and whether WAI_TOKEN is set, which every request sends ahead of them"
|
|
},
|
|
"stream": null,
|
|
"since": "0.5.0",
|
|
"deprecated": null,
|
|
"receipt": false,
|
|
"needs": null,
|
|
"names": {
|
|
"cli": "wai credential list",
|
|
"mcp": null,
|
|
"c": "wai_credential_list",
|
|
"rust": "wai::credential::list",
|
|
"sdk": "wai.credential.list"
|
|
}
|
|
},
|
|
{
|
|
"id": "credential.delete",
|
|
"summary": "The key kept for a service's origin removed from the keychain or its file",
|
|
"cli": "wai auth logout",
|
|
"aliases": [],
|
|
"usage": [
|
|
"wai auth logout --url <URL> [--yes] the key kept for URL's origin removed, from the keychain or its file; it waits for --yes"
|
|
],
|
|
"placement": "local",
|
|
"effect": "destructive",
|
|
"dry_run": true,
|
|
"confirm": "always",
|
|
"route": null,
|
|
"doors": {
|
|
"cli": true,
|
|
"mcp": false,
|
|
"http": false
|
|
},
|
|
"toolset": "core",
|
|
"stability": "preview",
|
|
"input": {
|
|
"type": "object",
|
|
"properties": {
|
|
"url": {
|
|
"type": "string",
|
|
"description": "The service's address; the key kept for its origin is removed.",
|
|
"x-cli": {
|
|
"flag": "--url"
|
|
}
|
|
}
|
|
},
|
|
"required": [
|
|
"url"
|
|
],
|
|
"additionalProperties": false
|
|
},
|
|
"output": {
|
|
"type": "object",
|
|
"required": [
|
|
"origin",
|
|
"store"
|
|
],
|
|
"description": "The origin a key is kept for and where it is kept (keychain or file), never the key"
|
|
},
|
|
"stream": null,
|
|
"since": "0.5.0",
|
|
"deprecated": null,
|
|
"receipt": false,
|
|
"needs": null,
|
|
"names": {
|
|
"cli": "wai credential delete",
|
|
"mcp": null,
|
|
"c": "wai_credential_delete",
|
|
"rust": "wai::credential::delete",
|
|
"sdk": "wai.credential.delete"
|
|
}
|
|
},
|
|
{
|
|
"id": "target.create",
|
|
"summary": "A target: a name for a service's address, kept in the project's wai.json or in the person's own list, and never with a key",
|
|
"cli": "wai target add",
|
|
"aliases": [],
|
|
"usage": [
|
|
"wai target add <name> --url <URL> [--read-only] [--user] [--yes] kept in ./wai.json where there is one, else (or with",
|
|
" --user) in the person's own list; --read-only refuses every operation that would change the service; a target is",
|
|
" never kept with a key (wai auth login keeps it). Replacing a target of that name waits for --yes"
|
|
],
|
|
"placement": "local",
|
|
"effect": "writes-project",
|
|
"dry_run": true,
|
|
"confirm": "when-replacing-a-file",
|
|
"route": null,
|
|
"doors": {
|
|
"cli": true,
|
|
"mcp": false,
|
|
"http": false
|
|
},
|
|
"toolset": "core",
|
|
"stability": "preview",
|
|
"input": {
|
|
"type": "object",
|
|
"properties": {
|
|
"name": {
|
|
"type": "string",
|
|
"description": "The target's name: lowercase letters, digits and hyphens, beginning with a letter (local is the development room's).",
|
|
"x-cli": {
|
|
"positional": true
|
|
}
|
|
},
|
|
"url": {
|
|
"type": "string",
|
|
"description": "The service's http:// or https:// address, with no user, query or fragment.",
|
|
"x-cli": {
|
|
"flag": "--url"
|
|
}
|
|
},
|
|
"read_only": {
|
|
"type": "boolean",
|
|
"description": "Refuse every operation that would change the service.",
|
|
"x-cli": {
|
|
"flag": "--read-only"
|
|
}
|
|
},
|
|
"user": {
|
|
"type": "boolean",
|
|
"description": "Keep it in the person's own list, not the project's wai.json.",
|
|
"x-cli": {
|
|
"flag": "--user"
|
|
}
|
|
}
|
|
},
|
|
"required": [
|
|
"name",
|
|
"url"
|
|
],
|
|
"additionalProperties": false
|
|
},
|
|
"output": {
|
|
"type": "object",
|
|
"required": [
|
|
"name",
|
|
"url",
|
|
"read_only",
|
|
"kept_in"
|
|
],
|
|
"description": "The target: its name, its service's address, whether it refuses every operation that would change the service, and the file it is kept in (the project's wai.json, or the person's own list)"
|
|
},
|
|
"stream": null,
|
|
"since": "0.5.0",
|
|
"deprecated": null,
|
|
"receipt": false,
|
|
"needs": null,
|
|
"names": {
|
|
"cli": "wai target create",
|
|
"mcp": null,
|
|
"c": "wai_target_create",
|
|
"rust": "wai::target::create",
|
|
"sdk": "wai.target.create"
|
|
}
|
|
},
|
|
{
|
|
"id": "target.update",
|
|
"summary": "The target an operation that needs a service acts on when --target names none",
|
|
"cli": "wai target use",
|
|
"aliases": [],
|
|
"usage": [
|
|
"wai target use <name> | --none the target taken where --target names none, kept in the person's own list; --none",
|
|
" takes none"
|
|
],
|
|
"placement": "local",
|
|
"effect": "writes-project",
|
|
"dry_run": true,
|
|
"confirm": "never",
|
|
"route": null,
|
|
"doors": {
|
|
"cli": true,
|
|
"mcp": false,
|
|
"http": false
|
|
},
|
|
"toolset": "core",
|
|
"stability": "preview",
|
|
"input": {
|
|
"type": "object",
|
|
"properties": {
|
|
"name": {
|
|
"type": "string",
|
|
"description": "A target's name (wai target list).",
|
|
"x-cli": {
|
|
"positional": true
|
|
}
|
|
},
|
|
"none": {
|
|
"type": "boolean",
|
|
"description": "Take no target where none is named.",
|
|
"x-cli": {
|
|
"flag": "--none"
|
|
}
|
|
}
|
|
},
|
|
"required": [],
|
|
"additionalProperties": false
|
|
},
|
|
"output": {
|
|
"type": "object",
|
|
"required": [
|
|
"use",
|
|
"targets"
|
|
],
|
|
"description": "Each target: its name, address, whether it is read-only, the file it is kept in, whether a key is kept for its origin, and whether another of that name hides it; and the target in use"
|
|
},
|
|
"stream": null,
|
|
"since": "0.5.0",
|
|
"deprecated": null,
|
|
"receipt": false,
|
|
"needs": null,
|
|
"names": {
|
|
"cli": "wai target update",
|
|
"mcp": null,
|
|
"c": "wai_target_update",
|
|
"rust": "wai::target::update",
|
|
"sdk": "wai.target.update"
|
|
}
|
|
},
|
|
{
|
|
"id": "target.list",
|
|
"summary": "Every target, its address, whether it is read-only, where it is kept and whether a key is kept for it; and the one in use",
|
|
"cli": "wai target list",
|
|
"aliases": [],
|
|
"usage": [
|
|
"wai target list the project's targets (./wai.json) and the person's own, and the one in use"
|
|
],
|
|
"placement": "local",
|
|
"effect": "reads",
|
|
"dry_run": false,
|
|
"confirm": "never",
|
|
"route": null,
|
|
"doors": {
|
|
"cli": true,
|
|
"mcp": false,
|
|
"http": false
|
|
},
|
|
"toolset": "core",
|
|
"stability": "preview",
|
|
"input": {
|
|
"type": "object",
|
|
"properties": {},
|
|
"required": [],
|
|
"additionalProperties": false
|
|
},
|
|
"output": {
|
|
"type": "object",
|
|
"required": [
|
|
"use",
|
|
"targets"
|
|
],
|
|
"description": "Each target: its name, address, whether it is read-only, the file it is kept in, whether a key is kept for its origin, and whether another of that name hides it; and the target in use"
|
|
},
|
|
"stream": null,
|
|
"since": "0.5.0",
|
|
"deprecated": null,
|
|
"receipt": false,
|
|
"needs": null,
|
|
"names": {
|
|
"cli": "wai target list",
|
|
"mcp": null,
|
|
"c": "wai_target_list",
|
|
"rust": "wai::target::list",
|
|
"sdk": "wai.target.list"
|
|
}
|
|
},
|
|
{
|
|
"id": "target.delete",
|
|
"summary": "A target removed from the project's wai.json or the person's own list",
|
|
"cli": "wai target remove",
|
|
"aliases": [],
|
|
"usage": [
|
|
"wai target remove <name> [--user] [--yes] from ./wai.json where it is kept there, else (or with --user) from the",
|
|
" person's own list; it waits for --yes"
|
|
],
|
|
"placement": "local",
|
|
"effect": "destructive",
|
|
"dry_run": true,
|
|
"confirm": "always",
|
|
"route": null,
|
|
"doors": {
|
|
"cli": true,
|
|
"mcp": false,
|
|
"http": false
|
|
},
|
|
"toolset": "core",
|
|
"stability": "preview",
|
|
"input": {
|
|
"type": "object",
|
|
"properties": {
|
|
"name": {
|
|
"type": "string",
|
|
"description": "The target's name.",
|
|
"x-cli": {
|
|
"positional": true
|
|
}
|
|
},
|
|
"user": {
|
|
"type": "boolean",
|
|
"description": "Remove it from the person's own list.",
|
|
"x-cli": {
|
|
"flag": "--user"
|
|
}
|
|
}
|
|
},
|
|
"required": [
|
|
"name"
|
|
],
|
|
"additionalProperties": false
|
|
},
|
|
"output": {
|
|
"type": "object",
|
|
"required": [
|
|
"name",
|
|
"url",
|
|
"read_only",
|
|
"kept_in"
|
|
],
|
|
"description": "The target: its name, its service's address, whether it refuses every operation that would change the service, and the file it is kept in (the project's wai.json, or the person's own list)"
|
|
},
|
|
"stream": null,
|
|
"since": "0.5.0",
|
|
"deprecated": null,
|
|
"receipt": false,
|
|
"needs": null,
|
|
"names": {
|
|
"cli": "wai target delete",
|
|
"mcp": null,
|
|
"c": "wai_target_delete",
|
|
"rust": "wai::target::delete",
|
|
"sdk": "wai.target.delete"
|
|
}
|
|
},
|
|
{
|
|
"id": "ops.list",
|
|
"summary": "Every operation of this catalogue: its id, command line, effect and whether this build holds it",
|
|
"cli": "wai ops list",
|
|
"aliases": [],
|
|
"usage": [
|
|
"wai ops list every operation, its id and command line"
|
|
],
|
|
"placement": "local",
|
|
"effect": "reads",
|
|
"dry_run": false,
|
|
"confirm": "never",
|
|
"route": null,
|
|
"doors": {
|
|
"cli": true,
|
|
"mcp": false,
|
|
"http": false
|
|
},
|
|
"toolset": "core",
|
|
"stability": "stable",
|
|
"input": {
|
|
"type": "object",
|
|
"properties": {},
|
|
"required": [],
|
|
"additionalProperties": false
|
|
},
|
|
"output": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"required": [
|
|
"id",
|
|
"summary",
|
|
"cli",
|
|
"effect",
|
|
"placement",
|
|
"toolset",
|
|
"stability",
|
|
"available"
|
|
]
|
|
}
|
|
},
|
|
"stream": null,
|
|
"since": "0.3.0",
|
|
"deprecated": null,
|
|
"receipt": false,
|
|
"needs": null,
|
|
"names": {
|
|
"cli": "wai ops list",
|
|
"mcp": null,
|
|
"c": "wai_ops_list",
|
|
"rust": "wai::ops::list",
|
|
"sdk": "wai.ops.list"
|
|
}
|
|
},
|
|
{
|
|
"id": "ops.search",
|
|
"summary": "The operations that match a task, ranked, offline: up to five",
|
|
"cli": "wai ops search",
|
|
"aliases": [],
|
|
"usage": [
|
|
"wai ops search \"<task>\" up to five operations that match, ranked, offline"
|
|
],
|
|
"placement": "local",
|
|
"effect": "reads",
|
|
"dry_run": false,
|
|
"confirm": "never",
|
|
"route": null,
|
|
"doors": {
|
|
"cli": true,
|
|
"mcp": true,
|
|
"http": false
|
|
},
|
|
"toolset": "core",
|
|
"stability": "stable",
|
|
"input": {
|
|
"type": "object",
|
|
"properties": {
|
|
"task": {
|
|
"type": "string",
|
|
"description": "What you want to do, in words.",
|
|
"x-cli": {
|
|
"positional": true
|
|
}
|
|
}
|
|
},
|
|
"required": [
|
|
"task"
|
|
],
|
|
"additionalProperties": false
|
|
},
|
|
"output": {
|
|
"type": "array",
|
|
"maxItems": 5,
|
|
"items": {
|
|
"type": "object",
|
|
"required": [
|
|
"id",
|
|
"summary",
|
|
"cli",
|
|
"score"
|
|
],
|
|
"properties": {
|
|
"id": {
|
|
"type": "string"
|
|
},
|
|
"summary": {
|
|
"type": "string"
|
|
},
|
|
"cli": {
|
|
"type": [
|
|
"string",
|
|
"null"
|
|
]
|
|
},
|
|
"score": {
|
|
"type": "integer"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"stream": null,
|
|
"since": "0.3.0",
|
|
"deprecated": null,
|
|
"receipt": false,
|
|
"needs": null,
|
|
"names": {
|
|
"cli": "wai ops search",
|
|
"mcp": "ops_search",
|
|
"c": "wai_ops_search",
|
|
"rust": "wai::ops::search",
|
|
"sdk": "wai.ops.search"
|
|
}
|
|
},
|
|
{
|
|
"id": "ops.show",
|
|
"summary": "One operation's entry: its input and output schemas, effect, placement and command line",
|
|
"cli": "wai ops show",
|
|
"aliases": [
|
|
"wai ops schema"
|
|
],
|
|
"usage": [
|
|
"wai ops show <id> one operation's entry, as JSON (also wai ops schema)"
|
|
],
|
|
"placement": "local",
|
|
"effect": "reads",
|
|
"dry_run": false,
|
|
"confirm": "never",
|
|
"route": null,
|
|
"doors": {
|
|
"cli": true,
|
|
"mcp": true,
|
|
"http": false
|
|
},
|
|
"toolset": "core",
|
|
"stability": "stable",
|
|
"input": {
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {
|
|
"type": "string",
|
|
"description": "An operation id, noun.verb.",
|
|
"x-cli": {
|
|
"positional": true
|
|
}
|
|
}
|
|
},
|
|
"required": [
|
|
"id"
|
|
],
|
|
"additionalProperties": false
|
|
},
|
|
"output": {
|
|
"type": "object",
|
|
"required": [
|
|
"id",
|
|
"summary",
|
|
"input",
|
|
"output",
|
|
"effect",
|
|
"placement"
|
|
]
|
|
},
|
|
"stream": null,
|
|
"since": "0.3.0",
|
|
"deprecated": null,
|
|
"receipt": false,
|
|
"needs": null,
|
|
"names": {
|
|
"cli": "wai ops show",
|
|
"mcp": "ops_show",
|
|
"c": "wai_ops_show",
|
|
"rust": "wai::ops::show",
|
|
"sdk": "wai.ops.show"
|
|
}
|
|
},
|
|
{
|
|
"id": "ops.export",
|
|
"summary": "The catalogue as JSON (wai.ops/1), what other tools and CI read; --check compares a file with it",
|
|
"cli": "wai ops export",
|
|
"aliases": [],
|
|
"usage": [
|
|
"wai ops export [--out FILE | --check FILE] the catalogue as JSON, to stdout, to FILE, or compared with FILE"
|
|
],
|
|
"placement": "local",
|
|
"effect": "writes-project",
|
|
"dry_run": true,
|
|
"confirm": "when-replacing-an-unnamed-file",
|
|
"route": null,
|
|
"doors": {
|
|
"cli": true,
|
|
"mcp": false,
|
|
"http": false
|
|
},
|
|
"toolset": "core",
|
|
"stability": "stable",
|
|
"input": {
|
|
"type": "object",
|
|
"properties": {
|
|
"out": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "Write the export here.",
|
|
"x-cli": {
|
|
"flag": "--out"
|
|
}
|
|
},
|
|
"check": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "Compare this file with the export; exit 1 when they differ.",
|
|
"x-cli": {
|
|
"flag": "--check"
|
|
}
|
|
}
|
|
},
|
|
"required": [],
|
|
"additionalProperties": false
|
|
},
|
|
"output": {
|
|
"type": "object",
|
|
"required": [
|
|
"format",
|
|
"toolchain",
|
|
"envelope",
|
|
"operations"
|
|
],
|
|
"properties": {
|
|
"format": {
|
|
"const": "wai.ops/1"
|
|
}
|
|
}
|
|
},
|
|
"stream": null,
|
|
"since": "0.3.0",
|
|
"deprecated": null,
|
|
"receipt": false,
|
|
"needs": null,
|
|
"names": {
|
|
"cli": "wai ops export",
|
|
"mcp": null,
|
|
"c": "wai_ops_export",
|
|
"rust": "wai::ops::export",
|
|
"sdk": "wai.ops.export"
|
|
}
|
|
},
|
|
{
|
|
"id": "toolchain.show",
|
|
"summary": "This wai's version, the digests of its catalogue and its registry, the release of the standard it implements, and the build features it holds",
|
|
"cli": "wai --version",
|
|
"aliases": [
|
|
"wai version"
|
|
],
|
|
"usage": [
|
|
"wai --version [--json] this binary's version, the SHA-256 of its catalogue (wai/catalogue/ops.json) and of its",
|
|
" registry (wai/registry/capabilities.json), the release of the standard it implements with the envelope formats",
|
|
" it reads, and the build features it holds (also wai version; wai/VERSIONING.md says what each promises)"
|
|
],
|
|
"placement": "local",
|
|
"effect": "reads",
|
|
"dry_run": false,
|
|
"confirm": "never",
|
|
"route": null,
|
|
"doors": {
|
|
"cli": true,
|
|
"mcp": false,
|
|
"http": false
|
|
},
|
|
"toolset": "core",
|
|
"stability": "preview",
|
|
"input": {
|
|
"type": "object",
|
|
"properties": {},
|
|
"required": [],
|
|
"additionalProperties": false
|
|
},
|
|
"output": {
|
|
"type": "object",
|
|
"required": [
|
|
"toolchain",
|
|
"catalogue",
|
|
"envelope",
|
|
"registry",
|
|
"specification",
|
|
"features"
|
|
],
|
|
"description": "This binary's version, its catalogue's format, operations and SHA-256, the JSON envelope's version, its registry's capabilities and SHA-256, the release of the standard it implements with the envelope formats it reads, and the build features it holds"
|
|
},
|
|
"stream": null,
|
|
"since": "0.5.0",
|
|
"deprecated": null,
|
|
"receipt": false,
|
|
"needs": null,
|
|
"names": {
|
|
"cli": "wai toolchain show",
|
|
"mcp": null,
|
|
"c": "wai_toolchain_show",
|
|
"rust": "wai::toolchain::show",
|
|
"sdk": "wai.toolchain.show"
|
|
}
|
|
},
|
|
{
|
|
"id": "toolchain.doctor",
|
|
"summary": "Whether this machine can run the toolchain: this wai and PATH, the relay and room service, the local stack's ports, browsers, and where keys are kept",
|
|
"cli": "wai doctor",
|
|
"aliases": [],
|
|
"usage": [
|
|
"wai doctor [--keystore DIR] [--json] one check to a line: pass, FAIL with its fix, or not checked with the reason. Exit 1 when",
|
|
" one failed; result says passed, failed, or passed-with-not-checked. No secret is read and no prompt raised (wai/quickstart/README.md)"
|
|
],
|
|
"placement": "local",
|
|
"effect": "reads",
|
|
"dry_run": false,
|
|
"confirm": "never",
|
|
"route": null,
|
|
"doors": {
|
|
"cli": true,
|
|
"mcp": true,
|
|
"http": false
|
|
},
|
|
"toolset": "core",
|
|
"stability": "preview",
|
|
"input": {
|
|
"type": "object",
|
|
"properties": {
|
|
"keystore": {
|
|
"type": "string",
|
|
"format": "path",
|
|
"description": "The keystore to look at (default: where wai key keeps keys).",
|
|
"x-cli": {
|
|
"flag": "--keystore"
|
|
}
|
|
}
|
|
},
|
|
"required": [],
|
|
"additionalProperties": false
|
|
},
|
|
"output": {
|
|
"type": "object",
|
|
"required": [
|
|
"result",
|
|
"counts",
|
|
"checks"
|
|
],
|
|
"description": "The result (passed, failed, or passed-with-not-checked), how many checks are in each state, and each check: its id, its state (pass, fail, not-checked, or not-applicable), what it found or why it could not be run, the fix when it failed, and what it found as data",
|
|
"properties": {
|
|
"result": {
|
|
"enum": [
|
|
"passed",
|
|
"failed",
|
|
"passed-with-not-checked"
|
|
]
|
|
},
|
|
"counts": {
|
|
"type": "object",
|
|
"required": [
|
|
"pass",
|
|
"fail",
|
|
"not_checked",
|
|
"not_applicable"
|
|
]
|
|
},
|
|
"checks": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"required": [
|
|
"id",
|
|
"state",
|
|
"message",
|
|
"fix",
|
|
"facts"
|
|
],
|
|
"properties": {
|
|
"state": {
|
|
"enum": [
|
|
"pass",
|
|
"fail",
|
|
"not-checked",
|
|
"not-applicable"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"stream": null,
|
|
"since": "0.5.0",
|
|
"deprecated": null,
|
|
"receipt": false,
|
|
"needs": null,
|
|
"names": {
|
|
"cli": "wai toolchain doctor",
|
|
"mcp": "toolchain_doctor",
|
|
"c": "wai_toolchain_doctor",
|
|
"rust": "wai::toolchain::doctor",
|
|
"sdk": "wai.toolchain.doctor"
|
|
}
|
|
}
|
|
]
|
|
}
|