@sentropic/h2a-cli 0.74.0 → 0.78.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +1 -36
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -40
- package/dist/index.js.map +1 -1
- package/package.json +4 -15
- package/dist/bin.d.ts +0 -3
- package/dist/bin.d.ts.map +0 -1
- package/dist/bin.js +0 -83
- package/dist/bin.js.map +0 -1
- package/dist/cli-contract.d.ts +0 -62
- package/dist/cli-contract.d.ts.map +0 -1
- package/dist/cli-contract.js +0 -729
- package/dist/cli-contract.js.map +0 -1
- package/dist/cli.d.ts +0 -254
- package/dist/cli.d.ts.map +0 -1
- package/dist/cli.js +0 -4530
- package/dist/cli.js.map +0 -1
- package/dist/hosts/agy.d.ts +0 -14
- package/dist/hosts/agy.d.ts.map +0 -1
- package/dist/hosts/agy.js +0 -47
- package/dist/hosts/agy.js.map +0 -1
- package/dist/hosts/claude.d.ts +0 -12
- package/dist/hosts/claude.d.ts.map +0 -1
- package/dist/hosts/claude.js +0 -46
- package/dist/hosts/claude.js.map +0 -1
- package/dist/hosts/codex.d.ts +0 -65
- package/dist/hosts/codex.d.ts.map +0 -1
- package/dist/hosts/codex.js +0 -45
- package/dist/hosts/codex.js.map +0 -1
- package/dist/hosts/gemini.d.ts +0 -12
- package/dist/hosts/gemini.d.ts.map +0 -1
- package/dist/hosts/gemini.js +0 -46
- package/dist/hosts/gemini.js.map +0 -1
- package/dist/hosts/plugin.d.ts +0 -151
- package/dist/hosts/plugin.d.ts.map +0 -1
- package/dist/hosts/plugin.js +0 -188
- package/dist/hosts/plugin.js.map +0 -1
- package/dist/mcp.d.ts +0 -2
- package/dist/mcp.d.ts.map +0 -1
- package/dist/mcp.js +0 -32
- package/dist/mcp.js.map +0 -1
- package/dist/runtime/blockage/index.d.ts +0 -3
- package/dist/runtime/blockage/index.d.ts.map +0 -1
- package/dist/runtime/blockage/index.js +0 -3
- package/dist/runtime/blockage/index.js.map +0 -1
- package/dist/runtime/blockage/notifiers.d.ts +0 -52
- package/dist/runtime/blockage/notifiers.d.ts.map +0 -1
- package/dist/runtime/blockage/notifiers.js +0 -74
- package/dist/runtime/blockage/notifiers.js.map +0 -1
- package/dist/runtime/blockage/registry.d.ts +0 -30
- package/dist/runtime/blockage/registry.d.ts.map +0 -1
- package/dist/runtime/blockage/registry.js +0 -86
- package/dist/runtime/blockage/registry.js.map +0 -1
- package/dist/runtime/deploy/k8s-sidecar.d.ts +0 -92
- package/dist/runtime/deploy/k8s-sidecar.d.ts.map +0 -1
- package/dist/runtime/deploy/k8s-sidecar.js +0 -166
- package/dist/runtime/deploy/k8s-sidecar.js.map +0 -1
- package/dist/runtime/deploy/k8s-tenant.d.ts +0 -86
- package/dist/runtime/deploy/k8s-tenant.d.ts.map +0 -1
- package/dist/runtime/deploy/k8s-tenant.js +0 -255
- package/dist/runtime/deploy/k8s-tenant.js.map +0 -1
- package/dist/runtime/drive/inbox-wake.d.ts +0 -36
- package/dist/runtime/drive/inbox-wake.d.ts.map +0 -1
- package/dist/runtime/drive/inbox-wake.js +0 -50
- package/dist/runtime/drive/inbox-wake.js.map +0 -1
- package/dist/runtime/drive/index.d.ts +0 -173
- package/dist/runtime/drive/index.d.ts.map +0 -1
- package/dist/runtime/drive/index.js +0 -503
- package/dist/runtime/drive/index.js.map +0 -1
- package/dist/runtime/drumbeat/deciders.d.ts +0 -32
- package/dist/runtime/drumbeat/deciders.d.ts.map +0 -1
- package/dist/runtime/drumbeat/deciders.js +0 -65
- package/dist/runtime/drumbeat/deciders.js.map +0 -1
- package/dist/runtime/drumbeat/decisions.d.ts +0 -19
- package/dist/runtime/drumbeat/decisions.d.ts.map +0 -1
- package/dist/runtime/drumbeat/decisions.js +0 -34
- package/dist/runtime/drumbeat/decisions.js.map +0 -1
- package/dist/runtime/drumbeat/inbox-relance.d.ts +0 -29
- package/dist/runtime/drumbeat/inbox-relance.d.ts.map +0 -1
- package/dist/runtime/drumbeat/inbox-relance.js +0 -101
- package/dist/runtime/drumbeat/inbox-relance.js.map +0 -1
- package/dist/runtime/drumbeat/index.d.ts +0 -8
- package/dist/runtime/drumbeat/index.d.ts.map +0 -1
- package/dist/runtime/drumbeat/index.js +0 -8
- package/dist/runtime/drumbeat/index.js.map +0 -1
- package/dist/runtime/drumbeat/registry.d.ts +0 -60
- package/dist/runtime/drumbeat/registry.d.ts.map +0 -1
- package/dist/runtime/drumbeat/registry.js +0 -115
- package/dist/runtime/drumbeat/registry.js.map +0 -1
- package/dist/runtime/drumbeat/relaunchers.d.ts +0 -111
- package/dist/runtime/drumbeat/relaunchers.d.ts.map +0 -1
- package/dist/runtime/drumbeat/relaunchers.js +0 -242
- package/dist/runtime/drumbeat/relaunchers.js.map +0 -1
- package/dist/runtime/drumbeat/scan.d.ts +0 -36
- package/dist/runtime/drumbeat/scan.d.ts.map +0 -1
- package/dist/runtime/drumbeat/scan.js +0 -41
- package/dist/runtime/drumbeat/scan.js.map +0 -1
- package/dist/runtime/drumbeat/watch.d.ts +0 -74
- package/dist/runtime/drumbeat/watch.d.ts.map +0 -1
- package/dist/runtime/drumbeat/watch.js +0 -216
- package/dist/runtime/drumbeat/watch.js.map +0 -1
- package/dist/runtime/escalation/index.d.ts +0 -2
- package/dist/runtime/escalation/index.d.ts.map +0 -1
- package/dist/runtime/escalation/index.js +0 -2
- package/dist/runtime/escalation/index.js.map +0 -1
- package/dist/runtime/escalation/registry.d.ts +0 -44
- package/dist/runtime/escalation/registry.d.ts.map +0 -1
- package/dist/runtime/escalation/registry.js +0 -79
- package/dist/runtime/escalation/registry.js.map +0 -1
- package/dist/runtime/governance/claims.d.ts +0 -43
- package/dist/runtime/governance/claims.d.ts.map +0 -1
- package/dist/runtime/governance/claims.js +0 -93
- package/dist/runtime/governance/claims.js.map +0 -1
- package/dist/runtime/governance/conductor.d.ts +0 -79
- package/dist/runtime/governance/conductor.d.ts.map +0 -1
- package/dist/runtime/governance/conductor.js +0 -106
- package/dist/runtime/governance/conductor.js.map +0 -1
- package/dist/runtime/governance/index.d.ts +0 -5
- package/dist/runtime/governance/index.d.ts.map +0 -1
- package/dist/runtime/governance/index.js +0 -5
- package/dist/runtime/governance/index.js.map +0 -1
- package/dist/runtime/governance/launch-check.d.ts +0 -93
- package/dist/runtime/governance/launch-check.d.ts.map +0 -1
- package/dist/runtime/governance/launch-check.js +0 -113
- package/dist/runtime/governance/launch-check.js.map +0 -1
- package/dist/runtime/governance/spawns.d.ts +0 -50
- package/dist/runtime/governance/spawns.d.ts.map +0 -1
- package/dist/runtime/governance/spawns.js +0 -91
- package/dist/runtime/governance/spawns.js.map +0 -1
- package/dist/runtime/identity/bindings.d.ts +0 -84
- package/dist/runtime/identity/bindings.d.ts.map +0 -1
- package/dist/runtime/identity/bindings.js +0 -112
- package/dist/runtime/identity/bindings.js.map +0 -1
- package/dist/runtime/identity/index.d.ts +0 -11
- package/dist/runtime/identity/index.d.ts.map +0 -1
- package/dist/runtime/identity/index.js +0 -6
- package/dist/runtime/identity/index.js.map +0 -1
- package/dist/runtime/identity/live.d.ts +0 -26
- package/dist/runtime/identity/live.d.ts.map +0 -1
- package/dist/runtime/identity/live.js +0 -232
- package/dist/runtime/identity/live.js.map +0 -1
- package/dist/runtime/identity/migration.d.ts +0 -55
- package/dist/runtime/identity/migration.d.ts.map +0 -1
- package/dist/runtime/identity/migration.js +0 -100
- package/dist/runtime/identity/migration.js.map +0 -1
- package/dist/runtime/identity/readers.d.ts +0 -42
- package/dist/runtime/identity/readers.d.ts.map +0 -1
- package/dist/runtime/identity/readers.js +0 -248
- package/dist/runtime/identity/readers.js.map +0 -1
- package/dist/runtime/identity/resolver.d.ts +0 -50
- package/dist/runtime/identity/resolver.d.ts.map +0 -1
- package/dist/runtime/identity/resolver.js +0 -61
- package/dist/runtime/identity/resolver.js.map +0 -1
- package/dist/runtime/identity/workspace-id.d.ts +0 -43
- package/dist/runtime/identity/workspace-id.d.ts.map +0 -1
- package/dist/runtime/identity/workspace-id.js +0 -138
- package/dist/runtime/identity/workspace-id.js.map +0 -1
- package/dist/runtime/local-files/index.d.ts +0 -8
- package/dist/runtime/local-files/index.d.ts.map +0 -1
- package/dist/runtime/local-files/index.js +0 -8
- package/dist/runtime/local-files/index.js.map +0 -1
- package/dist/runtime/local-files/lease.d.ts +0 -62
- package/dist/runtime/local-files/lease.d.ts.map +0 -1
- package/dist/runtime/local-files/lease.js +0 -249
- package/dist/runtime/local-files/lease.js.map +0 -1
- package/dist/runtime/local-files/locks.d.ts +0 -43
- package/dist/runtime/local-files/locks.d.ts.map +0 -1
- package/dist/runtime/local-files/locks.js +0 -197
- package/dist/runtime/local-files/locks.js.map +0 -1
- package/dist/runtime/local-files/migrate.d.ts +0 -31
- package/dist/runtime/local-files/migrate.d.ts.map +0 -1
- package/dist/runtime/local-files/migrate.js +0 -104
- package/dist/runtime/local-files/migrate.js.map +0 -1
- package/dist/runtime/local-files/paths.d.ts +0 -146
- package/dist/runtime/local-files/paths.d.ts.map +0 -1
- package/dist/runtime/local-files/paths.js +0 -233
- package/dist/runtime/local-files/paths.js.map +0 -1
- package/dist/runtime/local-files/presence.d.ts +0 -80
- package/dist/runtime/local-files/presence.d.ts.map +0 -1
- package/dist/runtime/local-files/presence.js +0 -250
- package/dist/runtime/local-files/presence.js.map +0 -1
- package/dist/runtime/local-files/schema.d.ts +0 -47
- package/dist/runtime/local-files/schema.d.ts.map +0 -1
- package/dist/runtime/local-files/schema.js +0 -77
- package/dist/runtime/local-files/schema.js.map +0 -1
- package/dist/runtime/local-files/store.d.ts +0 -132
- package/dist/runtime/local-files/store.d.ts.map +0 -1
- package/dist/runtime/local-files/store.js +0 -997
- package/dist/runtime/local-files/store.js.map +0 -1
- package/dist/runtime/mcp/handlers.d.ts +0 -196
- package/dist/runtime/mcp/handlers.d.ts.map +0 -1
- package/dist/runtime/mcp/handlers.js +0 -1025
- package/dist/runtime/mcp/handlers.js.map +0 -1
- package/dist/runtime/mcp/index.d.ts +0 -7
- package/dist/runtime/mcp/index.d.ts.map +0 -1
- package/dist/runtime/mcp/index.js +0 -7
- package/dist/runtime/mcp/index.js.map +0 -1
- package/dist/runtime/mcp/notifications.d.ts +0 -47
- package/dist/runtime/mcp/notifications.d.ts.map +0 -1
- package/dist/runtime/mcp/notifications.js +0 -204
- package/dist/runtime/mcp/notifications.js.map +0 -1
- package/dist/runtime/mcp/server.d.ts +0 -45
- package/dist/runtime/mcp/server.d.ts.map +0 -1
- package/dist/runtime/mcp/server.js +0 -94
- package/dist/runtime/mcp/server.js.map +0 -1
- package/dist/runtime/mcp/sessions.d.ts +0 -68
- package/dist/runtime/mcp/sessions.d.ts.map +0 -1
- package/dist/runtime/mcp/sessions.js +0 -152
- package/dist/runtime/mcp/sessions.js.map +0 -1
- package/dist/runtime/mcp/stdio.d.ts +0 -72
- package/dist/runtime/mcp/stdio.d.ts.map +0 -1
- package/dist/runtime/mcp/stdio.js +0 -274
- package/dist/runtime/mcp/stdio.js.map +0 -1
- package/dist/runtime/mcp/tools.d.ts +0 -19
- package/dist/runtime/mcp/tools.d.ts.map +0 -1
- package/dist/runtime/mcp/tools.js +0 -525
- package/dist/runtime/mcp/tools.js.map +0 -1
- package/dist/runtime/mcp-http/app.d.ts +0 -33
- package/dist/runtime/mcp-http/app.d.ts.map +0 -1
- package/dist/runtime/mcp-http/app.js +0 -162
- package/dist/runtime/mcp-http/app.js.map +0 -1
- package/dist/runtime/mcp-http/hosted-mcp-server.d.ts +0 -14
- package/dist/runtime/mcp-http/hosted-mcp-server.d.ts.map +0 -1
- package/dist/runtime/mcp-http/hosted-mcp-server.js +0 -38
- package/dist/runtime/mcp-http/hosted-mcp-server.js.map +0 -1
- package/dist/runtime/mcp-http/index.d.ts +0 -18
- package/dist/runtime/mcp-http/index.d.ts.map +0 -1
- package/dist/runtime/mcp-http/index.js +0 -18
- package/dist/runtime/mcp-http/index.js.map +0 -1
- package/dist/runtime/mcp-http/main.d.ts +0 -2
- package/dist/runtime/mcp-http/main.d.ts.map +0 -1
- package/dist/runtime/mcp-http/main.js +0 -14
- package/dist/runtime/mcp-http/main.js.map +0 -1
- package/dist/runtime/mcp-http/oauth/broker-login.d.ts +0 -50
- package/dist/runtime/mcp-http/oauth/broker-login.d.ts.map +0 -1
- package/dist/runtime/mcp-http/oauth/broker-login.js +0 -41
- package/dist/runtime/mcp-http/oauth/broker-login.js.map +0 -1
- package/dist/runtime/mcp-http/oauth/broker-routes.d.ts +0 -45
- package/dist/runtime/mcp-http/oauth/broker-routes.d.ts.map +0 -1
- package/dist/runtime/mcp-http/oauth/broker-routes.js +0 -54
- package/dist/runtime/mcp-http/oauth/broker-routes.js.map +0 -1
- package/dist/runtime/mcp-http/oauth/config.d.ts +0 -49
- package/dist/runtime/mcp-http/oauth/config.d.ts.map +0 -1
- package/dist/runtime/mcp-http/oauth/config.js +0 -69
- package/dist/runtime/mcp-http/oauth/config.js.map +0 -1
- package/dist/runtime/mcp-http/oauth/crypto.d.ts +0 -14
- package/dist/runtime/mcp-http/oauth/crypto.d.ts.map +0 -1
- package/dist/runtime/mcp-http/oauth/crypto.js +0 -29
- package/dist/runtime/mcp-http/oauth/crypto.js.map +0 -1
- package/dist/runtime/mcp-http/oauth/file-store.d.ts +0 -48
- package/dist/runtime/mcp-http/oauth/file-store.d.ts.map +0 -1
- package/dist/runtime/mcp-http/oauth/file-store.js +0 -101
- package/dist/runtime/mcp-http/oauth/file-store.js.map +0 -1
- package/dist/runtime/mcp-http/oauth/hono-oauth-router.d.ts +0 -5
- package/dist/runtime/mcp-http/oauth/hono-oauth-router.d.ts.map +0 -1
- package/dist/runtime/mcp-http/oauth/hono-oauth-router.js +0 -92
- package/dist/runtime/mcp-http/oauth/hono-oauth-router.js.map +0 -1
- package/dist/runtime/mcp-http/oauth/oidc-rp.d.ts +0 -56
- package/dist/runtime/mcp-http/oauth/oidc-rp.d.ts.map +0 -1
- package/dist/runtime/mcp-http/oauth/oidc-rp.js +0 -63
- package/dist/runtime/mcp-http/oauth/oidc-rp.js.map +0 -1
- package/dist/runtime/mcp-http/oauth/redirect-uri.d.ts +0 -11
- package/dist/runtime/mcp-http/oauth/redirect-uri.d.ts.map +0 -1
- package/dist/runtime/mcp-http/oauth/redirect-uri.js +0 -29
- package/dist/runtime/mcp-http/oauth/redirect-uri.js.map +0 -1
- package/dist/runtime/mcp-http/oauth/single-tenant-provider.d.ts +0 -70
- package/dist/runtime/mcp-http/oauth/single-tenant-provider.d.ts.map +0 -1
- package/dist/runtime/mcp-http/oauth/single-tenant-provider.js +0 -247
- package/dist/runtime/mcp-http/oauth/single-tenant-provider.js.map +0 -1
- package/dist/runtime/mcp-http/oauth/tenancy.d.ts +0 -3
- package/dist/runtime/mcp-http/oauth/tenancy.d.ts.map +0 -1
- package/dist/runtime/mcp-http/oauth/tenancy.js +0 -18
- package/dist/runtime/mcp-http/oauth/tenancy.js.map +0 -1
- package/dist/runtime/mcp-http/readonly-allowlist.d.ts +0 -24
- package/dist/runtime/mcp-http/readonly-allowlist.d.ts.map +0 -1
- package/dist/runtime/mcp-http/readonly-allowlist.js +0 -43
- package/dist/runtime/mcp-http/readonly-allowlist.js.map +0 -1
- package/dist/runtime/mcp-http/serve.d.ts +0 -39
- package/dist/runtime/mcp-http/serve.d.ts.map +0 -1
- package/dist/runtime/mcp-http/serve.js +0 -100
- package/dist/runtime/mcp-http/serve.js.map +0 -1
- package/dist/runtime/mirror/accept.d.ts +0 -57
- package/dist/runtime/mirror/accept.d.ts.map +0 -1
- package/dist/runtime/mirror/accept.js +0 -70
- package/dist/runtime/mirror/accept.js.map +0 -1
- package/dist/runtime/mirror/build.d.ts +0 -44
- package/dist/runtime/mirror/build.d.ts.map +0 -1
- package/dist/runtime/mirror/build.js +0 -37
- package/dist/runtime/mirror/build.js.map +0 -1
- package/dist/runtime/mirror/index.d.ts +0 -9
- package/dist/runtime/mirror/index.d.ts.map +0 -1
- package/dist/runtime/mirror/index.js +0 -9
- package/dist/runtime/mirror/index.js.map +0 -1
- package/dist/runtime/mirror/serve.d.ts +0 -21
- package/dist/runtime/mirror/serve.d.ts.map +0 -1
- package/dist/runtime/mirror/serve.js +0 -141
- package/dist/runtime/mirror/serve.js.map +0 -1
- package/dist/runtime/nhi.d.ts +0 -15
- package/dist/runtime/nhi.d.ts.map +0 -1
- package/dist/runtime/nhi.js +0 -26
- package/dist/runtime/nhi.js.map +0 -1
- package/dist/runtime/remote/accept.d.ts +0 -50
- package/dist/runtime/remote/accept.d.ts.map +0 -1
- package/dist/runtime/remote/accept.js +0 -54
- package/dist/runtime/remote/accept.js.map +0 -1
- package/dist/runtime/remote/client.d.ts +0 -27
- package/dist/runtime/remote/client.d.ts.map +0 -1
- package/dist/runtime/remote/client.js +0 -34
- package/dist/runtime/remote/client.js.map +0 -1
- package/dist/runtime/remote/index.d.ts +0 -5
- package/dist/runtime/remote/index.d.ts.map +0 -1
- package/dist/runtime/remote/index.js +0 -5
- package/dist/runtime/remote/index.js.map +0 -1
- package/dist/runtime/remote/serve.d.ts +0 -27
- package/dist/runtime/remote/serve.d.ts.map +0 -1
- package/dist/runtime/remote/serve.js +0 -26
- package/dist/runtime/remote/serve.js.map +0 -1
- package/dist/runtime/remote/server.d.ts +0 -36
- package/dist/runtime/remote/server.d.ts.map +0 -1
- package/dist/runtime/remote/server.js +0 -100
- package/dist/runtime/remote/server.js.map +0 -1
- package/dist/runtime/sysml/client.d.ts +0 -44
- package/dist/runtime/sysml/client.d.ts.map +0 -1
- package/dist/runtime/sysml/client.js +0 -52
- package/dist/runtime/sysml/client.js.map +0 -1
- package/dist/runtime/sysml/disclosure.d.ts +0 -23
- package/dist/runtime/sysml/disclosure.d.ts.map +0 -1
- package/dist/runtime/sysml/disclosure.js +0 -53
- package/dist/runtime/sysml/disclosure.js.map +0 -1
- package/dist/runtime/sysml/index.d.ts +0 -4
- package/dist/runtime/sysml/index.d.ts.map +0 -1
- package/dist/runtime/sysml/index.js +0 -4
- package/dist/runtime/sysml/index.js.map +0 -1
- package/dist/runtime/sysml/verify.d.ts +0 -32
- package/dist/runtime/sysml/verify.d.ts.map +0 -1
- package/dist/runtime/sysml/verify.js +0 -67
- package/dist/runtime/sysml/verify.js.map +0 -1
- package/dist/runtime/upgrade/index.d.ts +0 -96
- package/dist/runtime/upgrade/index.d.ts.map +0 -1
- package/dist/runtime/upgrade/index.js +0 -185
- package/dist/runtime/upgrade/index.js.map +0 -1
- package/dist/runtime/version/agent-version.d.ts +0 -15
- package/dist/runtime/version/agent-version.d.ts.map +0 -1
- package/dist/runtime/version/agent-version.js +0 -53
- package/dist/runtime/version/agent-version.js.map +0 -1
- package/skills/h2a/SKILL.md +0 -345
package/dist/cli-contract.js
DELETED
|
@@ -1,729 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Stable JSON output contract + exit-code table for the `h2a` CLI surface.
|
|
3
|
-
*
|
|
4
|
-
* This module is the **machine-readable counterpart** of `docs/cli-contract.md`
|
|
5
|
-
* (DEC-034). Every verb exposed by `runCli` appears here with:
|
|
6
|
-
*
|
|
7
|
-
* - `outputShape`: one of three canonical envelopes (see below).
|
|
8
|
-
* - `exitCodes`: the subset of {0,1,2,3} the verb can return.
|
|
9
|
-
* - `requiredFlags` / `optionalFlags`: documented flag surface.
|
|
10
|
-
*
|
|
11
|
-
* Envelope shapes
|
|
12
|
-
* ---------------
|
|
13
|
-
*
|
|
14
|
-
* - `resource` — single entity persisted/loaded by the verb. Stdout is the
|
|
15
|
-
* bare JSON of that entity (no `{ok}` wrapper). Examples: a negotiation
|
|
16
|
-
* record, a journal entry, an envelope, the MCP config snippet for a host.
|
|
17
|
-
* - `list` — bare JSON array. Examples: `discover`, `inbox read`,
|
|
18
|
-
* `negotiate journal`.
|
|
19
|
-
* - `action` — confirmation envelope `{ ok: true, ...details }` for verbs
|
|
20
|
-
* that perform side effects but do not return a natural entity (`init`,
|
|
21
|
-
* `register`, `inbox put`, `outbox put`, `negotiate stabilize`,
|
|
22
|
-
* `host setup --write`).
|
|
23
|
-
* - `text` — non-JSON human output (currently only `--help`).
|
|
24
|
-
* - `stream` — long-running framed transport (`mcp-serve`, JSON-RPC 2.0
|
|
25
|
-
* over stdio); no single stdout payload.
|
|
26
|
-
*
|
|
27
|
-
* Exit-code table
|
|
28
|
-
* ---------------
|
|
29
|
-
*
|
|
30
|
-
* - `0` success.
|
|
31
|
-
* - `1` user error — bad flag, missing required flag, invalid JSON,
|
|
32
|
-
* validation failure on user input, unknown verb/subverb/host.
|
|
33
|
-
* - `2` runtime/state error — store conflict or business-rule failure
|
|
34
|
-
* (negotiation not found, already open, already stabilized, signature
|
|
35
|
-
* fails verification, quorum incomplete, broken journal, divergent
|
|
36
|
-
* pre-existing config file).
|
|
37
|
-
* - `3` I/O / OS error — file unreadable, permission denied, write
|
|
38
|
-
* refused by the filesystem.
|
|
39
|
-
*
|
|
40
|
-
* DEC-034 freezes this contract. Future breaking changes require a new DEC
|
|
41
|
-
* and a major version bump on `@sentropic/h2a-cli`.
|
|
42
|
-
*/
|
|
43
|
-
export const H2A_CLI_VERB_CONTRACTS = [
|
|
44
|
-
// --- meta / help ---
|
|
45
|
-
{
|
|
46
|
-
verb: "--help",
|
|
47
|
-
outputShape: "text",
|
|
48
|
-
exitCodes: [0],
|
|
49
|
-
requiredFlags: [],
|
|
50
|
-
optionalFlags: [],
|
|
51
|
-
description: "Print human-readable usage. Same as `help` and no-argv invocation."
|
|
52
|
-
},
|
|
53
|
-
// --- registry / hosts / tooling discovery ---
|
|
54
|
-
{
|
|
55
|
-
verb: "hosts",
|
|
56
|
-
outputShape: "list",
|
|
57
|
-
exitCodes: [0],
|
|
58
|
-
requiredFlags: [],
|
|
59
|
-
optionalFlags: [],
|
|
60
|
-
description: "List host descriptors known to this CLI (codex, claude, gemini)."
|
|
61
|
-
},
|
|
62
|
-
{
|
|
63
|
-
verb: "mcp-tools",
|
|
64
|
-
outputShape: "list",
|
|
65
|
-
exitCodes: [0],
|
|
66
|
-
requiredFlags: [],
|
|
67
|
-
optionalFlags: [],
|
|
68
|
-
description: "List canonical MCP tool names exposed by the built-in server."
|
|
69
|
-
},
|
|
70
|
-
// --- setup / registry ---
|
|
71
|
-
{
|
|
72
|
-
verb: "init",
|
|
73
|
-
outputShape: "action",
|
|
74
|
-
exitCodes: [0, 1, 3],
|
|
75
|
-
requiredFlags: [],
|
|
76
|
-
optionalFlags: ["root"],
|
|
77
|
-
description: "Create the `<root>/.h2a/` local-files store layout (DEC-031)."
|
|
78
|
-
},
|
|
79
|
-
{
|
|
80
|
-
verb: "register",
|
|
81
|
-
outputShape: "action",
|
|
82
|
-
exitCodes: [0, 1, 2],
|
|
83
|
-
requiredFlags: ["json"],
|
|
84
|
-
optionalFlags: ["root"],
|
|
85
|
-
description: "Append an H2AActorRegistration to `registry/instances.jsonl`."
|
|
86
|
-
},
|
|
87
|
-
{
|
|
88
|
-
verb: "discover",
|
|
89
|
-
outputShape: "list",
|
|
90
|
-
exitCodes: [0, 1],
|
|
91
|
-
requiredFlags: [],
|
|
92
|
-
optionalFlags: ["root", "role", "scope"],
|
|
93
|
-
description: "List registered instances, optionally filtered by role/scope."
|
|
94
|
-
},
|
|
95
|
-
// --- subagents (DEC-068 / V2) ---
|
|
96
|
-
{
|
|
97
|
-
verb: "subagent register",
|
|
98
|
-
outputShape: "action",
|
|
99
|
-
exitCodes: [0, 1, 2],
|
|
100
|
-
requiredFlags: ["parent", "name"],
|
|
101
|
-
optionalFlags: ["root", "capabilities"],
|
|
102
|
-
description: "Register an addressable subagent binding `<parent>~<name>` under an AGENTS parent instance, appended to `registry/subagents.jsonl`. `--capabilities a,b` declares a subset of the parent's capabilities. Validated against the parent (must be AGENTS; capabilities must be a subset) before write. DEC-068."
|
|
103
|
-
},
|
|
104
|
-
{
|
|
105
|
-
verb: "subagent list",
|
|
106
|
-
outputShape: "list",
|
|
107
|
-
exitCodes: [0, 1],
|
|
108
|
-
requiredFlags: [],
|
|
109
|
-
optionalFlags: ["root", "parent"],
|
|
110
|
-
description: "List registered subagent bindings, optionally filtered to one parent instance via `--parent`. DEC-068."
|
|
111
|
-
},
|
|
112
|
-
{
|
|
113
|
-
verb: "subagent route",
|
|
114
|
-
outputShape: "action",
|
|
115
|
-
exitCodes: [0, 1, 2],
|
|
116
|
-
requiredFlags: ["to", "json"],
|
|
117
|
-
optionalFlags: ["root", "mailbox"],
|
|
118
|
-
description: "Route an H2A envelope to a registered subagent address (`<parent>~<name>`), validating the binding exists before delivery (exit 2 if unregistered). `--mailbox inbox|outbox` (default inbox). DEC-070."
|
|
119
|
-
},
|
|
120
|
-
{
|
|
121
|
-
verb: "subagent inbox",
|
|
122
|
-
outputShape: "list",
|
|
123
|
-
exitCodes: [0, 1],
|
|
124
|
-
requiredFlags: ["parent"],
|
|
125
|
-
optionalFlags: ["root"],
|
|
126
|
-
description: "Parent fan-in: list each registered subagent of `--parent` with the envelopes in its inbox, for coordination/audit. DEC-070."
|
|
127
|
-
},
|
|
128
|
-
{
|
|
129
|
-
verb: "subagent audit",
|
|
130
|
-
outputShape: "list",
|
|
131
|
-
exitCodes: [0, 1],
|
|
132
|
-
requiredFlags: [],
|
|
133
|
-
optionalFlags: ["root", "id", "parent"],
|
|
134
|
-
description: "List the append-only audit events (`registered`, `routed`, `revoked`) for a single subagent via `--id <address>`, or for all subagents of `--parent <instance>`. The audit log is permanent history and survives an inbox pop (unlike the fan-in). DEC-071."
|
|
135
|
-
},
|
|
136
|
-
{
|
|
137
|
-
verb: "subagent revoke",
|
|
138
|
-
outputShape: "action",
|
|
139
|
-
exitCodes: [0, 1, 2],
|
|
140
|
-
requiredFlags: ["id"],
|
|
141
|
-
optionalFlags: ["root", "reason"],
|
|
142
|
-
description: "Takeover at subagent granularity: revoke a subagent (`--id <address>`) so future routing to it is refused (exit 2 on a later route). Status is derived from the audit log; revoking an already-revoked subagent is a state error (exit 2). The parent reclaims pending work via the fan-in (`subagent inbox`). DEC-072."
|
|
143
|
-
},
|
|
144
|
-
// --- negotiation ---
|
|
145
|
-
{
|
|
146
|
-
verb: "negotiate open",
|
|
147
|
-
outputShape: "resource",
|
|
148
|
-
exitCodes: [0, 1, 2],
|
|
149
|
-
requiredFlags: ["json"],
|
|
150
|
-
optionalFlags: ["root"],
|
|
151
|
-
description: "Open a new negotiation, persisting its `state.json`."
|
|
152
|
-
},
|
|
153
|
-
{
|
|
154
|
-
verb: "negotiate status",
|
|
155
|
-
outputShape: "resource",
|
|
156
|
-
exitCodes: [0, 1, 2],
|
|
157
|
-
requiredFlags: ["id", "status"],
|
|
158
|
-
optionalFlags: ["root"],
|
|
159
|
-
description: "Transition a negotiation to a new status (draft / proposed / countered / stabilized / closed)."
|
|
160
|
-
},
|
|
161
|
-
{
|
|
162
|
-
verb: "negotiate event",
|
|
163
|
-
outputShape: "resource",
|
|
164
|
-
exitCodes: [0, 1, 2],
|
|
165
|
-
requiredFlags: ["id", "json"],
|
|
166
|
-
optionalFlags: ["root", "causation-id", "correlation-id"],
|
|
167
|
-
description: "Append an arbitrary event payload to the negotiation journal."
|
|
168
|
-
},
|
|
169
|
-
{
|
|
170
|
-
verb: "negotiate offer",
|
|
171
|
-
outputShape: "resource",
|
|
172
|
-
exitCodes: [0, 1, 2],
|
|
173
|
-
requiredFlags: ["id", "instance", "artifact"],
|
|
174
|
-
optionalFlags: ["root", "event-id", "causation-id", "correlation-id"],
|
|
175
|
-
description: "Append a `propose` journal entry carrying the offered artifact body."
|
|
176
|
-
},
|
|
177
|
-
{
|
|
178
|
-
verb: "negotiate counter",
|
|
179
|
-
outputShape: "resource",
|
|
180
|
-
exitCodes: [0, 1, 2],
|
|
181
|
-
requiredFlags: ["id", "instance", "artifact"],
|
|
182
|
-
optionalFlags: ["root", "event-id", "causation-id", "correlation-id"],
|
|
183
|
-
description: "Append a `counter` journal entry carrying a counter-offer artifact body."
|
|
184
|
-
},
|
|
185
|
-
{
|
|
186
|
-
verb: "negotiate sign",
|
|
187
|
-
outputShape: "resource",
|
|
188
|
-
exitCodes: [0, 1, 2, 3],
|
|
189
|
-
requiredFlags: ["id", "instance", "artifact", "private-key"],
|
|
190
|
-
optionalFlags: ["root", "event-id", "causation-id", "correlation-id"],
|
|
191
|
-
description: "Sign the canonical artifact hash with the given ed25519 PEM private key and append a signature event."
|
|
192
|
-
},
|
|
193
|
-
{
|
|
194
|
-
verb: "negotiate stabilize",
|
|
195
|
-
outputShape: "action",
|
|
196
|
-
exitCodes: [0, 1, 2],
|
|
197
|
-
requiredFlags: ["id"],
|
|
198
|
-
optionalFlags: ["root", "event-id"],
|
|
199
|
-
description: "Verify quorum + signatures, persist the winning artifact in write-once form (DEC-033), and mark the negotiation stabilized."
|
|
200
|
-
},
|
|
201
|
-
{
|
|
202
|
-
verb: "negotiate journal",
|
|
203
|
-
outputShape: "list",
|
|
204
|
-
exitCodes: [0, 1, 2],
|
|
205
|
-
requiredFlags: ["id"],
|
|
206
|
-
optionalFlags: ["root"],
|
|
207
|
-
description: "Read and verify the full hash-chained journal for a negotiation."
|
|
208
|
-
},
|
|
209
|
-
{
|
|
210
|
-
verb: "declare-interest",
|
|
211
|
-
outputShape: "resource",
|
|
212
|
-
exitCodes: [0, 1, 2],
|
|
213
|
-
requiredFlags: ["negotiation", "instance", "interets"],
|
|
214
|
-
optionalFlags: ["root", "bindings", "masque-impact-collectif", "event-id", "at"],
|
|
215
|
-
description: "Append a declaration-interet journal event for an instance in a negotiation."
|
|
216
|
-
},
|
|
217
|
-
{
|
|
218
|
-
verb: "conflict-posture",
|
|
219
|
-
outputShape: "resource",
|
|
220
|
-
exitCodes: [0, 1, 2],
|
|
221
|
-
requiredFlags: ["negotiation"],
|
|
222
|
-
optionalFlags: ["root"],
|
|
223
|
-
description: "Derive postureConflit for the negotiation signers and declared subjects."
|
|
224
|
-
},
|
|
225
|
-
{
|
|
226
|
-
verb: "dossier",
|
|
227
|
-
outputShape: "resource",
|
|
228
|
-
exitCodes: [0, 1, 2],
|
|
229
|
-
requiredFlags: ["negotiation"],
|
|
230
|
-
optionalFlags: ["root", "presenter", "advisory-gate", "event-id"],
|
|
231
|
-
description: "Derive the advisory decision dossier and optional presenter-bias gate for a negotiation."
|
|
232
|
-
},
|
|
233
|
-
{
|
|
234
|
-
verb: "confiance",
|
|
235
|
-
outputShape: "resource",
|
|
236
|
-
exitCodes: [0, 1, 2],
|
|
237
|
-
requiredFlags: ["negotiation"],
|
|
238
|
-
optionalFlags: ["root"],
|
|
239
|
-
description: "Derive the advisory postureConfiance for a negotiation from current dossier attention and conflicts."
|
|
240
|
-
},
|
|
241
|
-
{
|
|
242
|
-
verb: "attest-comprehension",
|
|
243
|
-
outputShape: "resource",
|
|
244
|
-
exitCodes: [0, 1, 2, 3],
|
|
245
|
-
requiredFlags: ["instance", "dossier", "private-key"],
|
|
246
|
-
optionalFlags: ["root", "negotiation", "to", "event-id", "role", "scope", "at", "causation-id", "correlation-id"],
|
|
247
|
-
description: "Emit a signed non-binding comprehension-attestation for a dossier hash, either as a negotiation journal event or an event envelope."
|
|
248
|
-
},
|
|
249
|
-
{
|
|
250
|
-
verb: "comprehension list",
|
|
251
|
-
outputShape: "list",
|
|
252
|
-
exitCodes: [0, 1, 2],
|
|
253
|
-
requiredFlags: ["negotiation"],
|
|
254
|
-
optionalFlags: ["root"],
|
|
255
|
-
description: "List comprehension-attestation journal events for a negotiation."
|
|
256
|
-
},
|
|
257
|
-
{
|
|
258
|
-
verb: "comprehension verify",
|
|
259
|
-
outputShape: "resource",
|
|
260
|
-
exitCodes: [0, 1, 2, 3],
|
|
261
|
-
requiredFlags: ["json", "public-key"],
|
|
262
|
-
optionalFlags: ["root"],
|
|
263
|
-
description: "Verify a comprehension-attestation event/envelope body signature against a public key."
|
|
264
|
-
},
|
|
265
|
-
// --- mailboxes ---
|
|
266
|
-
{
|
|
267
|
-
verb: "inbox put",
|
|
268
|
-
outputShape: "action",
|
|
269
|
-
exitCodes: [0, 1, 2],
|
|
270
|
-
requiredFlags: ["instance", "json"],
|
|
271
|
-
optionalFlags: ["root"],
|
|
272
|
-
description: "Drop an H2A envelope into the inbox of an instance."
|
|
273
|
-
},
|
|
274
|
-
{
|
|
275
|
-
verb: "inbox read",
|
|
276
|
-
outputShape: "list",
|
|
277
|
-
exitCodes: [0, 1],
|
|
278
|
-
requiredFlags: ["instance"],
|
|
279
|
-
optionalFlags: ["root"],
|
|
280
|
-
description: "List the inbox envelopes of an instance (oldest first)."
|
|
281
|
-
},
|
|
282
|
-
{
|
|
283
|
-
verb: "inbox pop",
|
|
284
|
-
outputShape: "resource",
|
|
285
|
-
exitCodes: [0, 1, 2],
|
|
286
|
-
requiredFlags: ["instance", "envelope"],
|
|
287
|
-
optionalFlags: ["root"],
|
|
288
|
-
description: "Remove and return a specific envelope from an instance's inbox."
|
|
289
|
-
},
|
|
290
|
-
{
|
|
291
|
-
verb: "outbox put",
|
|
292
|
-
outputShape: "action",
|
|
293
|
-
exitCodes: [0, 1, 2],
|
|
294
|
-
requiredFlags: ["instance", "json"],
|
|
295
|
-
optionalFlags: ["root"],
|
|
296
|
-
description: "Drop an H2A envelope into the outbox of an instance (append-only)."
|
|
297
|
-
},
|
|
298
|
-
{
|
|
299
|
-
verb: "outbox read",
|
|
300
|
-
outputShape: "list",
|
|
301
|
-
exitCodes: [0, 1],
|
|
302
|
-
requiredFlags: ["instance"],
|
|
303
|
-
optionalFlags: ["root"],
|
|
304
|
-
description: "List the outbox envelopes of an instance (oldest first)."
|
|
305
|
-
},
|
|
306
|
-
// --- store maintenance (DEC-036) ---
|
|
307
|
-
{
|
|
308
|
-
verb: "store migrate",
|
|
309
|
-
outputShape: "action",
|
|
310
|
-
exitCodes: [0, 1, 2],
|
|
311
|
-
requiredFlags: [],
|
|
312
|
-
optionalFlags: ["root", "from", "to", "sanitize-paths", "dry-run"],
|
|
313
|
-
description: "Migrate the local-files store schema between known versions (DEC-036). V1→V1 is a no-op (`changed:false`). Unknown --from or --to → exit 1. With `--sanitize-paths` (DEC-064), rename pre-DEC-062 entries containing `:` to the safePathSegment form; a name collision with an already-sanitized target → exit 2."
|
|
314
|
-
},
|
|
315
|
-
// --- MCP transport ---
|
|
316
|
-
{
|
|
317
|
-
verb: "mcp-serve",
|
|
318
|
-
outputShape: "stream",
|
|
319
|
-
exitCodes: [0, 1],
|
|
320
|
-
requiredFlags: [],
|
|
321
|
-
optionalFlags: ["root", "auto-open", "host", "instance", "scope", "upgrade-check", "auto-upgrade", "no-restart"],
|
|
322
|
-
description: "Run the built-in MCP server speaking JSON-RPC 2.0 over stdio (long-running). `--auto-open` opens a presence session at boot (EVO-6, DEC-105). Version handling is **opt-in** (no network on a default boot): `--auto-upgrade` self-installs @latest and re-execs in place (process.execve, same PID/stdio so the host stays connected; `--no-restart` keeps next-launch); `--upgrade-check` prints a cached availability notice only — EVO-8/DEC-107/108."
|
|
323
|
-
},
|
|
324
|
-
{
|
|
325
|
-
verb: "upgrade",
|
|
326
|
-
outputShape: "action",
|
|
327
|
-
exitCodes: [0, 1],
|
|
328
|
-
requiredFlags: [],
|
|
329
|
-
optionalFlags: ["check"],
|
|
330
|
-
description: "Self-upgrade the global `@sentropic/h2a-cli` (EVO-8, DEC-107). `--check` reports `{current, latest, upgradeAvailable}` without installing; bare runs `npm i -g @sentropic/h2a-cli@latest`. Exit 1 if the install fails."
|
|
331
|
-
},
|
|
332
|
-
// --- remote transport (DEC-076/077, signed-bearer) ---
|
|
333
|
-
{
|
|
334
|
-
verb: "remote serve",
|
|
335
|
-
outputShape: "stream",
|
|
336
|
-
exitCodes: [0, 1],
|
|
337
|
-
requiredFlags: [],
|
|
338
|
-
optionalFlags: ["root", "port", "host", "path"],
|
|
339
|
-
description: "Run the HTTP listener that authenticates POSTed signed envelopes against the store registry and delivers them to local inboxes (long-running). Binds 127.0.0.1 by default; pass `--host 0.0.0.0` to expose. DEC-077."
|
|
340
|
-
},
|
|
341
|
-
{
|
|
342
|
-
verb: "remote send",
|
|
343
|
-
outputShape: "action",
|
|
344
|
-
exitCodes: [0, 1],
|
|
345
|
-
requiredFlags: ["url", "instance", "private-key", "json"],
|
|
346
|
-
optionalFlags: [],
|
|
347
|
-
description: "Sign an envelope (`--json`) with `--private-key` as `--instance` and POST it to `--url`. Prints `{ status, body }`; exit 0 on a 2xx response, 1 otherwise. DEC-077."
|
|
348
|
-
},
|
|
349
|
-
{
|
|
350
|
-
verb: "drive",
|
|
351
|
-
outputShape: "action",
|
|
352
|
-
exitCodes: [0, 1, 2],
|
|
353
|
-
requiredFlags: ["from", "to", "instruction", "private-key"],
|
|
354
|
-
optionalFlags: ["root", "driver", "host", "nonce", "at"],
|
|
355
|
-
description: "Inject a signed instruction into a live peer through a driver adapter (logging|native|local-tmux|headless|auto). The preamble is ed25519-signed and authority is checked before dispatch. EVO-1."
|
|
356
|
-
},
|
|
357
|
-
{
|
|
358
|
-
verb: "drive receive",
|
|
359
|
-
outputShape: "action",
|
|
360
|
-
exitCodes: [0, 1, 2, 3],
|
|
361
|
-
requiredFlags: ["to"],
|
|
362
|
-
optionalFlags: ["root", "line", "stdin", "ignore-non-drive", "now"],
|
|
363
|
-
description: "Verify a signed drive instruction before a host hook acts on it: signature/key, target, authority, and replay/freshness. EVO-1 E1c."
|
|
364
|
-
},
|
|
365
|
-
{
|
|
366
|
-
verb: "drive serve",
|
|
367
|
-
outputShape: "stream",
|
|
368
|
-
exitCodes: [0, 1],
|
|
369
|
-
requiredFlags: ["to", "inject-command"],
|
|
370
|
-
optionalFlags: ["root", "host", "port", "path"],
|
|
371
|
-
description: "Run the remote/sidecar drive injection endpoint. It accepts POST /h2a/drive with a signed line, verifies signature/key, target, authority, freshness, and replay, then invokes the configured injector command. EVO-1 E1d."
|
|
372
|
-
},
|
|
373
|
-
{
|
|
374
|
-
verb: "sysml verify",
|
|
375
|
-
outputShape: "resource",
|
|
376
|
-
exitCodes: [0, 1, 2],
|
|
377
|
-
requiredFlags: ["json", "public-key"],
|
|
378
|
-
optionalFlags: ["by", "content-integrity", "api-base", "auth"],
|
|
379
|
-
description: "Verify an envelope's embedded SysML v2 ref: commit-trust (signature, default) + optional content-integrity (`--content-integrity`: re-fetch the element and compare its hash to `elementHash`). Async (network on the content path). Exit 2 if verification fails. DEC-099."
|
|
380
|
-
},
|
|
381
|
-
// --- drumbeat (DEC-086, anti-stall relance) ---
|
|
382
|
-
{
|
|
383
|
-
verb: "drumbeat record",
|
|
384
|
-
outputShape: "action",
|
|
385
|
-
exitCodes: [0, 1],
|
|
386
|
-
requiredFlags: ["instance", "status"],
|
|
387
|
-
optionalFlags: ["root", "command", "resume-command", "cwd", "tty", "tmux-session", "tmux-pane", "tmux-window"],
|
|
388
|
-
description: "Record (durably) that an agent stopped, with its work status and launch context, in `<root>/.h2a/drumbeat/`. Survives the presence sweep so a stopped agent can be relanced. Called by the host plugin on exit. DEC-086."
|
|
389
|
-
},
|
|
390
|
-
{
|
|
391
|
-
verb: "drumbeat scan",
|
|
392
|
-
outputShape: "resource",
|
|
393
|
-
exitCodes: [0, 1],
|
|
394
|
-
requiredFlags: [],
|
|
395
|
-
optionalFlags: ["root", "max-relances"],
|
|
396
|
-
description: "List stalled agents from the drumbeat registry: `findings` (relance candidates) and `exhausted` (hit the relance cap → escalate). `done` entries are skipped. DEC-086."
|
|
397
|
-
},
|
|
398
|
-
{
|
|
399
|
-
verb: "drumbeat clear",
|
|
400
|
-
outputShape: "action",
|
|
401
|
-
exitCodes: [0, 1],
|
|
402
|
-
requiredFlags: ["instance"],
|
|
403
|
-
optionalFlags: ["root"],
|
|
404
|
-
description: "Remove a drumbeat registry entry — call when an agent is cleanly resumed or finished. DEC-086."
|
|
405
|
-
},
|
|
406
|
-
{
|
|
407
|
-
verb: "drumbeat escalations",
|
|
408
|
-
outputShape: "list",
|
|
409
|
-
exitCodes: [0, 1],
|
|
410
|
-
requiredFlags: [],
|
|
411
|
-
optionalFlags: ["root"],
|
|
412
|
-
description: "List open escalations the daemon raised when an agent exhausted its relance budget (→ PRINCIPAL, channel alert). The anti-loop cap (`--max-relances`) is the guard; this is the escalation that replaces further relances. Cleared by `drumbeat clear`. DEC-095."
|
|
413
|
-
},
|
|
414
|
-
{
|
|
415
|
-
verb: "drumbeat relance-inbox",
|
|
416
|
-
outputShape: "action",
|
|
417
|
-
exitCodes: [0, 1],
|
|
418
|
-
requiredFlags: [],
|
|
419
|
-
optionalFlags: ["root", "instance", "relauncher"],
|
|
420
|
-
description: "Consume local inbox envelopes whose body is `drumbeat.resume` and relance the targeted local stopped entry via a local relauncher (logging|local-tmux|headless|auto, where auto is local-tmux then headless). This is the receive side of the D4 remote relay chain. DEC-117."
|
|
421
|
-
},
|
|
422
|
-
{
|
|
423
|
-
verb: "drumbeat watch",
|
|
424
|
-
outputShape: "stream",
|
|
425
|
-
exitCodes: [0, 1],
|
|
426
|
-
requiredFlags: [],
|
|
427
|
-
optionalFlags: ["root", "interval-ms", "max-relances", "relauncher", "instance", "private-key", "role", "scope", "decider", "decider-after", "decider-enforce"],
|
|
428
|
-
description: "Run the anti-stall daemon (long-running): each beat first consumes D4 `drumbeat.resume` inbox envelopes locally, then scans the registry and relances stalled agents via the relauncher adapter. `--relauncher` selects logging (default, dry-run) | local-tmux (send-keys into the captured pane) | remote (signed D4 relay to endpoints[kind=remote]) | headless (detached respawn) | auto (local-tmux, then remote, then headless). remote/auto require `--instance <signer>` and `--private-key <pem>`; `--role`/`--scope` override signer actor metadata. The external `/loop` codex/agy/gemini lack. DEC-086/091/117. D5: `--decider logging|<command>` adds a reflexive watchdog, consulted only after `--decider-after` relances (default 1; must be < --max-relances); it decides relance/finish/escalate/reroute. Decisions are logged to `drumbeat/decisions.jsonl` and applied only with `--decider-enforce` (advisory-first); reroute escalates with a hint. The decider is consulted each beat in [decider-after, max-relances) — a documented cost. DEC-111."
|
|
429
|
-
},
|
|
430
|
-
// --- host wiring ---
|
|
431
|
-
{
|
|
432
|
-
verb: "host setup",
|
|
433
|
-
outputShape: "resource",
|
|
434
|
-
exitCodes: [0, 1, 2, 3],
|
|
435
|
-
requiredFlags: ["host"],
|
|
436
|
-
optionalFlags: ["root", "print", "write", "force", "no-wake"],
|
|
437
|
-
description: "Render or merge the `mcpServers.h2a` snippet for a host (codex|claude). The snippet is coordination-ready by default: `mcp-serve --auto-open --auto-upgrade --wake local-tmux` (joins the bus, stays current, wakeable on inbox arrival when run in a tmux pane; no-ops outside tmux). `--no-wake` drops `--wake` (prints a warning). `--print` (default) emits the snippet; `--write <file>` merges/creates the target config file."
|
|
438
|
-
},
|
|
439
|
-
{
|
|
440
|
-
verb: "host plugin",
|
|
441
|
-
outputShape: "resource",
|
|
442
|
-
exitCodes: [0, 1, 2, 3],
|
|
443
|
-
requiredFlags: ["host", "instance"],
|
|
444
|
-
optionalFlags: ["root", "status", "write", "force", "scaffold"],
|
|
445
|
-
description: "Render the per-host stop-hook command + placement so a stop is recorded with a launch context the drumbeat (D2) and local-tmux relauncher (D3) can relance. `--write <file>` installs the idempotent Claude-format `hooks.Stop` for **claude / gemini / codex** (claude+gemini → settings.json; codex → a plugin hooks.json). `--scaffold <dir>` (codex-only) writes a **full codex local marketplace** (verified: codex installs from a marketplace dir, not a bare plugin) — `.agents/plugins/marketplace.json` + `plugins/<name>/.codex-plugin/plugin.json` + `plugins/<name>/hooks/hooks.json` — and emits the **trust step** (`codex plugin marketplace add <dir>` → `codex plugin add <name>@<marketplace>`) in the `trust` array, since codex has no drop-in/bypass path. **agy** is poll-only (refused, use the poll command). DEC-093/102/103/104/113."
|
|
446
|
-
},
|
|
447
|
-
{
|
|
448
|
-
verb: "host status",
|
|
449
|
-
outputShape: "action",
|
|
450
|
-
exitCodes: [0, 1],
|
|
451
|
-
requiredFlags: [],
|
|
452
|
-
optionalFlags: ["host"],
|
|
453
|
-
description: "Report each host's wave + adapter/setup/scenario-shipped flags (DEC-037/044). Output is `{ ok: true, hosts: [{host, wave, mcpAdapterShipped, hostSetupShipped, hostScenarioShipped, summary}] }`. Filter to a single host with `--host <name>`; unknown host → exit 1."
|
|
454
|
-
},
|
|
455
|
-
// --- high-level coordination (DEC-054) ---
|
|
456
|
-
{
|
|
457
|
-
verb: "connect",
|
|
458
|
-
outputShape: "action",
|
|
459
|
-
exitCodes: [0, 1, 3],
|
|
460
|
-
requiredFlags: ["host"],
|
|
461
|
-
optionalFlags: ["root", "instance", "name"],
|
|
462
|
-
description: "Bootstrap a coordinated session: ensures the local store under --root, resolves or mints the perennial instance id, renders the host MCP snippet, and prints follow-up steps (keypair ready + skill install). DEC-054/116."
|
|
463
|
-
},
|
|
464
|
-
{
|
|
465
|
-
verb: "doctor",
|
|
466
|
-
outputShape: "action",
|
|
467
|
-
exitCodes: [0, 2, 3],
|
|
468
|
-
requiredFlags: [],
|
|
469
|
-
optionalFlags: ["root", "scan", "prune"],
|
|
470
|
-
description: "Diagnose the h2a store: root provenance, split-brain repo-local bus, inbox hygiene (case-dup / host-less / phantom dirs), and (--scan <dir>) stray repo-local buses. Hard checks (rootExists, schemaSentinel, liveSessions, cliBinary) drive exit 2; soft checks surface as `warnings[]` without flipping ok. --prune (opt-in) DELETES the clearly-dead artifacts the report identifies: host-less inbox dirs, phantom 3-segment dirs, orphan-uuid inbox dirs, and (with --scan) stray buses — report.pruned lists what was removed. caseDuplicates and registered-offline dirs are NOT pruned (too risky). Default is dry-run. DEC-054."
|
|
471
|
-
},
|
|
472
|
-
{
|
|
473
|
-
verb: "status",
|
|
474
|
-
outputShape: "action",
|
|
475
|
-
exitCodes: [0, 3],
|
|
476
|
-
requiredFlags: [],
|
|
477
|
-
optionalFlags: ["root", "scope", "instance", "name"],
|
|
478
|
-
description: "Inventory connected agent sessions: direct (local presence heartbeat) vs indirect (mirrored in from a remote/sidecar). Reads presence; partitions on the mirror origin tag."
|
|
479
|
-
},
|
|
480
|
-
{
|
|
481
|
-
verb: "sessions",
|
|
482
|
-
outputShape: "list",
|
|
483
|
-
exitCodes: [0, 3],
|
|
484
|
-
requiredFlags: [],
|
|
485
|
-
optionalFlags: ["root", "scope", "instance", "name"],
|
|
486
|
-
description: "List currently-live h2a sessions (CLI mirror of the MCP h2a_discover_sessions tool). Reads presence files, filters by freshness. DEC-054."
|
|
487
|
-
},
|
|
488
|
-
{
|
|
489
|
-
verb: "keys generate",
|
|
490
|
-
outputShape: "action",
|
|
491
|
-
exitCodes: [0, 1, 3],
|
|
492
|
-
requiredFlags: ["instance"],
|
|
493
|
-
optionalFlags: ["root", "out"],
|
|
494
|
-
description: "Generate an ed25519 PEM keypair for an instance (PKCS#8 private, SPKI public). Default output directory is <root>/keys/. Returns the on-disk paths and the public PEM. DEC-054."
|
|
495
|
-
},
|
|
496
|
-
{
|
|
497
|
-
verb: "keys add",
|
|
498
|
-
outputShape: "action",
|
|
499
|
-
exitCodes: [0, 1, 2],
|
|
500
|
-
requiredFlags: ["instance", "public-key"],
|
|
501
|
-
optionalFlags: ["root"],
|
|
502
|
-
description: "Append a public key (PEM file) to an instance's keyring `registry/keys.jsonl` (rotate-in). The verifier then accepts a signature from ANY active key, enabling overlap during rotation. Exit 2 if the instance is unregistered or the key is already active. DEC-078."
|
|
503
|
-
},
|
|
504
|
-
{
|
|
505
|
-
verb: "keys list",
|
|
506
|
-
outputShape: "list",
|
|
507
|
-
exitCodes: [0, 1],
|
|
508
|
-
requiredFlags: ["instance"],
|
|
509
|
-
optionalFlags: ["root"],
|
|
510
|
-
description: "List an instance's active public keys (registration keys + keyring additions, minus revoked). DEC-078."
|
|
511
|
-
},
|
|
512
|
-
{
|
|
513
|
-
verb: "keys revoke",
|
|
514
|
-
outputShape: "action",
|
|
515
|
-
exitCodes: [0, 1, 2],
|
|
516
|
-
requiredFlags: ["instance", "public-key"],
|
|
517
|
-
optionalFlags: ["root"],
|
|
518
|
-
description: "Revoke a public key (PEM file) from an instance's keyring (rotate-out). Appends a `revoked` event; the verifier stops accepting it. Exit 2 if the key is not currently active. DEC-079."
|
|
519
|
-
},
|
|
520
|
-
{
|
|
521
|
-
verb: "nhi report",
|
|
522
|
-
outputShape: "resource",
|
|
523
|
-
exitCodes: [0, 1],
|
|
524
|
-
requiredFlags: [],
|
|
525
|
-
optionalFlags: ["root", "long-lived-days"],
|
|
526
|
-
description: "Derive a Non-Human-Identity posture (OWASP NHI Top 10 / NIST CSF) from the registry: per-risk findings (NHI1 offboarding, NHI4 auth, NHI5 over-privilege, NHI7 long-lived keys, NHI9 reuse) + a summary. Read-only. DEC-087."
|
|
527
|
-
},
|
|
528
|
-
{
|
|
529
|
-
verb: "nhi inventory",
|
|
530
|
-
outputShape: "resource",
|
|
531
|
-
exitCodes: [0, 1],
|
|
532
|
-
requiredFlags: [],
|
|
533
|
-
optionalFlags: ["root", "long-lived-days"],
|
|
534
|
-
description: "Per-identity inventory of the NHI estate: each instance with its active keys (fingerprint, age, long-lived flag, reuse across instances), its subagents (status, capability bound) and its offboard state, plus estate totals. Read-only. DEC-090."
|
|
535
|
-
},
|
|
536
|
-
{
|
|
537
|
-
verb: "nhi export",
|
|
538
|
-
outputShape: "resource",
|
|
539
|
-
exitCodes: [0, 1],
|
|
540
|
-
requiredFlags: ["instance", "trust-domain"],
|
|
541
|
-
optionalFlags: ["root"],
|
|
542
|
-
description: "Export an instance's active public keys as a SPIFFE-trust-bundle / JWKS-shaped object (NHI P3 interop, DEC-094): the first interop primitive from the veille. Carries trust-anchor material in a bundle shape; PEM→JWK/SVID + live endpoint stay in an external connector. Exit 1 on an invalid trust domain. DEC-094."
|
|
543
|
-
},
|
|
544
|
-
{
|
|
545
|
-
verb: "nhi attest",
|
|
546
|
-
outputShape: "resource",
|
|
547
|
-
exitCodes: [0, 1, 2],
|
|
548
|
-
requiredFlags: ["instance", "private-key"],
|
|
549
|
-
optionalFlags: ["root", "role", "scope"],
|
|
550
|
-
description: "Emit a signed attestation of the current NHI posture: an ed25519-signed `event` envelope (DEC-073) whose body carries the posture report. No new artifact kind. Actor role/scope default to the instance's registration. DEC-087."
|
|
551
|
-
},
|
|
552
|
-
{
|
|
553
|
-
verb: "nhi offboard",
|
|
554
|
-
outputShape: "action",
|
|
555
|
-
exitCodes: [0, 1, 2],
|
|
556
|
-
requiredFlags: ["instance"],
|
|
557
|
-
optionalFlags: ["root", "reason"],
|
|
558
|
-
description: "Coordinated decommission of an NHI: revoke every active key (DEC-079) and every active subagent (DEC-072) of the instance, then append an offboard tombstone. Idempotent (re-running revokes only what is still active). Exit 2 if the instance is not registered. DEC-089."
|
|
559
|
-
},
|
|
560
|
-
{
|
|
561
|
-
verb: "org validate",
|
|
562
|
-
outputShape: "action",
|
|
563
|
-
exitCodes: [0, 1, 3],
|
|
564
|
-
requiredFlags: [],
|
|
565
|
-
optionalFlags: ["file"],
|
|
566
|
-
description: "Parse the committed org manifest (`--file`, default `org.h2a.yaml` in cwd; block-YAML subset or JSON) and check the h2a invariants (a PRINCIPAL exists, unique instances, canonical roles, every instance scoped, comm edges reference declared instances). Prints `{ ok, errors }`; exit 1 on a parse error or an invalid manifest, exit 3 if the file is unreadable. Read-only. EVO-7 slice 2, DEC-109."
|
|
567
|
-
},
|
|
568
|
-
{
|
|
569
|
-
verb: "org show",
|
|
570
|
-
outputShape: "resource",
|
|
571
|
-
exitCodes: [0, 1, 3],
|
|
572
|
-
requiredFlags: [],
|
|
573
|
-
optionalFlags: ["file"],
|
|
574
|
-
description: "Print the normalized org manifest (scope, version, instances, comm edges) with its `validation` result. Exit 1 on a parse error, exit 3 if unreadable. Read-only. EVO-7 slice 2, DEC-109."
|
|
575
|
-
},
|
|
576
|
-
{
|
|
577
|
-
verb: "org diff",
|
|
578
|
-
outputShape: "resource",
|
|
579
|
-
exitCodes: [0, 1, 3],
|
|
580
|
-
requiredFlags: [],
|
|
581
|
-
optionalFlags: ["file", "root"],
|
|
582
|
-
description: "Reconcile the declared org manifest against the live registry: `{ scope, matched, missing, undeclared, roleMismatch, scopeGaps, inSync }`. `inSync` is true iff the live estate matches the declared org exactly. Read-only — reports what provisioning would change, changes nothing. Exit 1 on a parse error, exit 3 if unreadable. EVO-7 slice 2, DEC-109."
|
|
583
|
-
},
|
|
584
|
-
{
|
|
585
|
-
verb: "org provision",
|
|
586
|
-
outputShape: "action",
|
|
587
|
-
exitCodes: [0, 1, 3],
|
|
588
|
-
requiredFlags: [],
|
|
589
|
-
optionalFlags: ["file", "root", "by"],
|
|
590
|
-
description: "Apply a (ratified) org manifest to the live estate — **reconcile keyed-only**: for each declared instance already registered, append role/scope membership **grants** (append-only `org-membership.jsonl`, DEC-078-style; never a registration rewrite; idempotent). A declared-but-unregistered instance is reported under `pending` (needs key + register), never auto-stubbed. Returns `{ ok, scope, applied, unchanged, pending }`. Refuses an invalid manifest (exit 1), exit 3 if unreadable. EVO-7, DEC-109."
|
|
591
|
-
},
|
|
592
|
-
{
|
|
593
|
-
verb: "coach propose",
|
|
594
|
-
outputShape: "resource",
|
|
595
|
-
exitCodes: [0, 1, 3],
|
|
596
|
-
requiredFlags: ["as"],
|
|
597
|
-
optionalFlags: ["file", "role", "scope", "deliver", "root"],
|
|
598
|
-
description: "Emit the *unsigned* `org-proposal` envelope for a validated manifest — the coach proposes, does not impose. `--as <coach-instance>` is the proposing coach (`--role`, default CONDUCTOR; `--scope`, default the manifest scope). `--deliver` also drops it into each declared instance's inbox so agents can have their say (counter). Refuses an invalid manifest (exit 1). EVO-7, DEC-109."
|
|
599
|
-
},
|
|
600
|
-
{
|
|
601
|
-
verb: "coach ratify",
|
|
602
|
-
outputShape: "resource",
|
|
603
|
-
exitCodes: [0, 1, 3],
|
|
604
|
-
requiredFlags: ["as", "private-key"],
|
|
605
|
-
optionalFlags: ["file", "role", "scope", "deliver", "root"],
|
|
606
|
-
description: "The PRINCIPAL ratifies a proposed org: emits the `org-ratified` envelope for a valid manifest, ed25519-signed with `--private-key` as `--as` (`--role`, default PRINCIPAL; `--scope`, default the manifest scope) — verifiable with the standard `verifyEnvelopeSignature`. `--deliver` drops it into each declared instance's inbox. Refuses an invalid manifest (exit 1). Provision it with `h2a org provision`. EVO-7, DEC-109."
|
|
607
|
-
},
|
|
608
|
-
{
|
|
609
|
-
verb: "blockage raise",
|
|
610
|
-
outputShape: "action",
|
|
611
|
-
exitCodes: [0, 1],
|
|
612
|
-
requiredFlags: ["instance", "reason"],
|
|
613
|
-
optionalFlags: ["root", "scope", "needs"],
|
|
614
|
-
description: "Raise a blockage so peers in scope are notified (the EVO-3 feedback loop, distinct from the drumbeat stall and from escalation). Durable under `<root>/.h2a/blockage/`; the MCP dispatcher pushes `peer.blocked` to subscribed peers. DEC-092."
|
|
615
|
-
},
|
|
616
|
-
{
|
|
617
|
-
verb: "blockage list",
|
|
618
|
-
outputShape: "list",
|
|
619
|
-
exitCodes: [0, 1],
|
|
620
|
-
requiredFlags: [],
|
|
621
|
-
optionalFlags: ["root", "scope", "active", "instance"],
|
|
622
|
-
description: "List recorded blockages (optionally filtered by `--scope` or `--active`). The polling path for hosts without a background daemon (e.g. agy). `--instance <id>` is the one-shot poll digest: only blockages in scopes that instance belongs to (effective org view, EVO-3/DEC-110). DEC-092."
|
|
623
|
-
},
|
|
624
|
-
{
|
|
625
|
-
verb: "blockage resolve",
|
|
626
|
-
outputShape: "action",
|
|
627
|
-
exitCodes: [0, 1, 2],
|
|
628
|
-
requiredFlags: ["instance"],
|
|
629
|
-
optionalFlags: ["root", "by"],
|
|
630
|
-
description: "Resolve a blockage (idempotent); the dispatcher then pushes `peer.unblocked`. Exit 2 if the instance has no blockage recorded. DEC-092."
|
|
631
|
-
},
|
|
632
|
-
{
|
|
633
|
-
verb: "install-skills",
|
|
634
|
-
outputShape: "action",
|
|
635
|
-
exitCodes: [0, 1, 2, 3],
|
|
636
|
-
requiredFlags: ["host"],
|
|
637
|
-
optionalFlags: ["scope", "force"],
|
|
638
|
-
description: "Install the h2a skill bundle into the host's skill directory. Claude/Codex receive SKILL.md files under `~/.<host>/skills/<name>/`; Gemini and agy receive TOML custom commands under `~/.gemini/commands/<name>.toml` (DEC-055) — agy shares the gemini location and the summary emits an `importHint` (`agy plugin import gemini`) since agy imports plugins from gemini/claude (DEC-101). `--scope user` (default) targets the home directory; `--scope project` targets `<cwd>/.<host>/`. Pre-existing files are skipped unless `--force` is set. DEC-054/055/096/101."
|
|
639
|
-
},
|
|
640
|
-
// --- keepalive (WP-5) ---
|
|
641
|
-
{
|
|
642
|
-
verb: "keepalive",
|
|
643
|
-
outputShape: "action",
|
|
644
|
-
exitCodes: [0, 3],
|
|
645
|
-
requiredFlags: [],
|
|
646
|
-
optionalFlags: ["root", "interval", "once"],
|
|
647
|
-
description: "Refresh presence for agents whose tmux pane is still alive (external keepalive prober — run by the launcher/remote so a host-suspended mcp-serve still shows live). --once = single pass and exit 0. Without --once, loops on an unref'd interval (default 30 000 ms). Optional; h2a works without it."
|
|
648
|
-
},
|
|
649
|
-
// --- inbox threading (EVO-inbox-threading) ---
|
|
650
|
-
{
|
|
651
|
-
verb: "thread",
|
|
652
|
-
outputShape: "list",
|
|
653
|
-
exitCodes: [0, 1, 3],
|
|
654
|
-
requiredFlags: ["id", "instance"],
|
|
655
|
-
optionalFlags: ["root"],
|
|
656
|
-
description: "List the ordered conversation (by createdAt) for a threadId, from the actor's inbox+outbox. Lightweight pre-negotiation threading: envelopes carry threadId/replyTo; storage is derived (no new store)."
|
|
657
|
-
},
|
|
658
|
-
// --- governance layer (WP-G1 / WP-G1b) ---
|
|
659
|
-
{
|
|
660
|
-
verb: "conductor",
|
|
661
|
-
outputShape: "resource",
|
|
662
|
-
exitCodes: [0, 1],
|
|
663
|
-
requiredFlags: [],
|
|
664
|
-
optionalFlags: ["workspace", "root"],
|
|
665
|
-
description: "Resolve the live conductor/owner of a workspace (read-only, derived from presence + claims): conductor = earliest live active-claimant (WP-G1b), or a live in-workspace agent registered with role CONDUCTOR (back-compat, WP-G1a), or null; candidates = all in-workspace live agents."
|
|
666
|
-
},
|
|
667
|
-
{
|
|
668
|
-
verb: "conductor claim",
|
|
669
|
-
outputShape: "resource",
|
|
670
|
-
exitCodes: [0, 1],
|
|
671
|
-
requiredFlags: ["instance"],
|
|
672
|
-
optionalFlags: ["workspace", "root"],
|
|
673
|
-
description: "Claim the conductor role for a workspace (WP-G1b, additive/reversible). Appends a claim event; returns the post-claim conductorFor resolution. The caller should be itself if it won (earliest live claimant wins). Exit 1 if --instance is missing."
|
|
674
|
-
},
|
|
675
|
-
{
|
|
676
|
-
verb: "conductor release",
|
|
677
|
-
outputShape: "resource",
|
|
678
|
-
exitCodes: [0, 1],
|
|
679
|
-
requiredFlags: ["instance"],
|
|
680
|
-
optionalFlags: ["workspace", "root"],
|
|
681
|
-
description: "Release the conductor claim for a workspace (WP-G1b, additive/reversible). Appends a release event; returns the post-release conductorFor resolution (null if sole claimant releases). Exit 1 if --instance is missing."
|
|
682
|
-
},
|
|
683
|
-
{
|
|
684
|
-
verb: "conductor-launch-check",
|
|
685
|
-
outputShape: "resource",
|
|
686
|
-
exitCodes: [0, 1, 3],
|
|
687
|
-
requiredFlags: [],
|
|
688
|
-
optionalFlags: ["workspace", "root", "idle-ms"],
|
|
689
|
-
description: "DRY-RUN (D3): poll track workspace-activity and return a recommendation to launch a conductor if work is durably stalled and no conductor is live. h2a does NOT spawn anything — recommendation is advisory only, launch parked pending spawn policy + remote. Returns { workspaceId, trackAvailable, conductor, conductorLive, pending, stalled, recommendation, reason, suggestedHosts? }. trackAvailable=false when track is absent (graceful). Exit 1 on bad --idle-ms."
|
|
690
|
-
},
|
|
691
|
-
{
|
|
692
|
-
verb: "conductor-launch",
|
|
693
|
-
outputShape: "resource",
|
|
694
|
-
exitCodes: [0, 1, 3],
|
|
695
|
-
requiredFlags: [],
|
|
696
|
-
optionalFlags: ["workspace", "root", "idle-ms", "confirm", "remote", "instance"],
|
|
697
|
-
description: "D3 EMISSION: when work is stalled and no conductor is live, EMIT a conductor-launch-request envelope to a live remote agent. Gated by --confirm (human gate) and a 1/30min/workspace cap. Without --confirm, returns a DRY-RUN preview (action: 'would-emit'). --instance <self> required with --confirm. h2a NEVER spawns — it only puts a request envelope to remote; remote executes the actual spawn. action: none|cooldown|would-emit|no-remote|emitted."
|
|
698
|
-
},
|
|
699
|
-
// --- deployment (DEC-058 / Scenario A of DEC-056) ---
|
|
700
|
-
{
|
|
701
|
-
verb: "deploy k8s-sidecar",
|
|
702
|
-
outputShape: "resource",
|
|
703
|
-
exitCodes: [0, 1, 3],
|
|
704
|
-
requiredFlags: [],
|
|
705
|
-
optionalFlags: ["instance", "host", "root", "image", "cli-version", "write"],
|
|
706
|
-
description: "Render a Kubernetes sidecar fragment suitable for merging into a `remote` session Pod (Scenario A of DEC-056). Default `image` strategy is `npm-runtime` (uses `node:22-alpine` + `npm i -g @sentropic/h2a-cli` at Pod start). Pass an OCI reference to opt out of the runtime install. `--write <file>` switches to an `action` envelope and writes the fragment to disk; otherwise the YAML fragment is printed on stdout. DEC-058."
|
|
707
|
-
},
|
|
708
|
-
{
|
|
709
|
-
verb: "deploy k8s-tenant",
|
|
710
|
-
outputShape: "resource",
|
|
711
|
-
exitCodes: [0, 1, 3],
|
|
712
|
-
requiredFlags: [],
|
|
713
|
-
optionalFlags: [
|
|
714
|
-
"namespace",
|
|
715
|
-
"root",
|
|
716
|
-
"replicas",
|
|
717
|
-
"storage",
|
|
718
|
-
"storage-class",
|
|
719
|
-
"lease-ms",
|
|
720
|
-
"image",
|
|
721
|
-
"cli-version",
|
|
722
|
-
"write"
|
|
723
|
-
],
|
|
724
|
-
description: "Render a complete Kubernetes cluster-tenant manifest (Namespace + ResourceQuota + ReadWriteMany PVC + Deployment) for Scenario B of DEC-056. The Deployment runs the store in lease-lock mode (`H2A_LOCK_MODE=lease`, DEC-065/066) so multiple Pods can safely share the RWX store. Default 2 replicas, `1Gi` storage, cluster-default StorageClass (pass `--storage-class` for an RWX-capable class). `--write <file>` switches to an `action` envelope and writes the manifest to disk; otherwise the multi-document YAML is printed on stdout. DEC-067."
|
|
725
|
-
}
|
|
726
|
-
];
|
|
727
|
-
/** Map of verb-path → contract for O(1) lookups in tests and tooling. */
|
|
728
|
-
export const H2A_CLI_VERB_CONTRACT_BY_VERB = new Map(H2A_CLI_VERB_CONTRACTS.map((c) => [c.verb, c]));
|
|
729
|
-
//# sourceMappingURL=cli-contract.js.map
|