@oh-hai/cli 0.1.0-beta.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.
Files changed (110) hide show
  1. package/README.md +154 -0
  2. package/dist/auth/file-backend.d.ts +16 -0
  3. package/dist/auth/file-backend.js +98 -0
  4. package/dist/auth/file-backend.js.map +1 -0
  5. package/dist/auth/keychain.d.ts +54 -0
  6. package/dist/auth/keychain.js +232 -0
  7. package/dist/auth/keychain.js.map +1 -0
  8. package/dist/auth/resolve-token.d.ts +34 -0
  9. package/dist/auth/resolve-token.js +91 -0
  10. package/dist/auth/resolve-token.js.map +1 -0
  11. package/dist/auth/secure-write.d.ts +2 -0
  12. package/dist/auth/secure-write.js +30 -0
  13. package/dist/auth/secure-write.js.map +1 -0
  14. package/dist/auth/token-store.d.ts +104 -0
  15. package/dist/auth/token-store.js +208 -0
  16. package/dist/auth/token-store.js.map +1 -0
  17. package/dist/cli.d.ts +16 -0
  18. package/dist/cli.js +238 -0
  19. package/dist/cli.js.map +1 -0
  20. package/dist/commands/agents.d.ts +2 -0
  21. package/dist/commands/agents.js +370 -0
  22. package/dist/commands/agents.js.map +1 -0
  23. package/dist/commands/ask.d.ts +2 -0
  24. package/dist/commands/ask.js +246 -0
  25. package/dist/commands/ask.js.map +1 -0
  26. package/dist/commands/context.d.ts +72 -0
  27. package/dist/commands/context.js +7 -0
  28. package/dist/commands/context.js.map +1 -0
  29. package/dist/commands/doctor.d.ts +2 -0
  30. package/dist/commands/doctor.js +237 -0
  31. package/dist/commands/doctor.js.map +1 -0
  32. package/dist/commands/flags.d.ts +25 -0
  33. package/dist/commands/flags.js +100 -0
  34. package/dist/commands/flags.js.map +1 -0
  35. package/dist/commands/handlers.d.ts +2 -0
  36. package/dist/commands/handlers.js +26 -0
  37. package/dist/commands/handlers.js.map +1 -0
  38. package/dist/commands/http.d.ts +8 -0
  39. package/dist/commands/http.js +19 -0
  40. package/dist/commands/http.js.map +1 -0
  41. package/dist/commands/inbox.d.ts +2 -0
  42. package/dist/commands/inbox.js +111 -0
  43. package/dist/commands/inbox.js.map +1 -0
  44. package/dist/commands/login.d.ts +2 -0
  45. package/dist/commands/login.js +272 -0
  46. package/dist/commands/login.js.map +1 -0
  47. package/dist/commands/logout.d.ts +2 -0
  48. package/dist/commands/logout.js +35 -0
  49. package/dist/commands/logout.js.map +1 -0
  50. package/dist/commands/messaging/await.d.ts +43 -0
  51. package/dist/commands/messaging/await.js +125 -0
  52. package/dist/commands/messaging/await.js.map +1 -0
  53. package/dist/commands/messaging/build.d.ts +46 -0
  54. package/dist/commands/messaging/build.js +66 -0
  55. package/dist/commands/messaging/build.js.map +1 -0
  56. package/dist/commands/messaging/http.d.ts +22 -0
  57. package/dist/commands/messaging/http.js +270 -0
  58. package/dist/commands/messaging/http.js.map +1 -0
  59. package/dist/commands/messaging/identity.d.ts +29 -0
  60. package/dist/commands/messaging/identity.js +63 -0
  61. package/dist/commands/messaging/identity.js.map +1 -0
  62. package/dist/commands/messaging/shared.d.ts +53 -0
  63. package/dist/commands/messaging/shared.js +135 -0
  64. package/dist/commands/messaging/shared.js.map +1 -0
  65. package/dist/commands/messaging/state.d.ts +26 -0
  66. package/dist/commands/messaging/state.js +82 -0
  67. package/dist/commands/messaging/state.js.map +1 -0
  68. package/dist/commands/messaging/validate.d.ts +40 -0
  69. package/dist/commands/messaging/validate.js +193 -0
  70. package/dist/commands/messaging/validate.js.map +1 -0
  71. package/dist/commands/messaging/wire.d.ts +133 -0
  72. package/dist/commands/messaging/wire.js +16 -0
  73. package/dist/commands/messaging/wire.js.map +1 -0
  74. package/dist/commands/notify.d.ts +2 -0
  75. package/dist/commands/notify.js +68 -0
  76. package/dist/commands/notify.js.map +1 -0
  77. package/dist/commands/registry.d.ts +14 -0
  78. package/dist/commands/registry.js +144 -0
  79. package/dist/commands/registry.js.map +1 -0
  80. package/dist/commands/stub.d.ts +1 -0
  81. package/dist/commands/stub.js +9 -0
  82. package/dist/commands/stub.js.map +1 -0
  83. package/dist/commands/task.d.ts +2 -0
  84. package/dist/commands/task.js +223 -0
  85. package/dist/commands/task.js.map +1 -0
  86. package/dist/commands/whoami.d.ts +6 -0
  87. package/dist/commands/whoami.js +90 -0
  88. package/dist/commands/whoami.js.map +1 -0
  89. package/dist/config-file.d.ts +38 -0
  90. package/dist/config-file.js +233 -0
  91. package/dist/config-file.js.map +1 -0
  92. package/dist/config.d.ts +64 -0
  93. package/dist/config.js +97 -0
  94. package/dist/config.js.map +1 -0
  95. package/dist/envelope.d.ts +25 -0
  96. package/dist/envelope.js +41 -0
  97. package/dist/envelope.js.map +1 -0
  98. package/dist/exit-codes.d.ts +51 -0
  99. package/dist/exit-codes.js +57 -0
  100. package/dist/exit-codes.js.map +1 -0
  101. package/dist/help.d.ts +1 -0
  102. package/dist/help.js +17 -0
  103. package/dist/help.js.map +1 -0
  104. package/dist/terminal.d.ts +5 -0
  105. package/dist/terminal.js +18 -0
  106. package/dist/terminal.js.map +1 -0
  107. package/dist/version.d.ts +8 -0
  108. package/dist/version.js +23 -0
  109. package/dist/version.js.map +1 -0
  110. package/package.json +38 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"login.js","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import type { CommandContext } from "./context.js";
2
+ export declare function logoutCommand(ctx: CommandContext): Promise<void>;
@@ -0,0 +1,35 @@
1
+ // `oh-hai logout` (docs/specs/cli.md §4.3). Remove the stored token for the current (or
2
+ // `--account`) identity from the keychain and scrub the file fallback; `--all` clears every
3
+ // stored identity. Idempotent and fully offline — removing an already-absent token (or `--all`
4
+ // with nothing stored) is a no-op that exits 0 (§9). No Hub call is ever made.
5
+ import { CliError, buildOk, serializeEnvelope } from "../envelope.js";
6
+ import { originOf } from "../auth/resolve-token.js";
7
+ import { flagOn, parseCommandArgs } from "./flags.js";
8
+ export async function logoutCommand(ctx) {
9
+ const { values } = parseCommandArgs(ctx.argv, { all: { type: "boolean" } });
10
+ const store = await ctx.runtime.openStore();
11
+ if (flagOn(values.all)) {
12
+ const cleared = await store.clearAll();
13
+ if (ctx.json) {
14
+ ctx.io.log(serializeEnvelope(buildOk("logout", { cleared })));
15
+ }
16
+ else {
17
+ ctx.io.log(cleared > 0
18
+ ? `Cleared ${cleared} stored ${cleared === 1 ? "identity" : "identities"}.`
19
+ : "No stored identities.");
20
+ }
21
+ return;
22
+ }
23
+ const account = ctx.config.account;
24
+ if (account === undefined) {
25
+ throw new CliError("usage", "an agent id is required — pass --account/--agent or set MA2H_AGENT_ID, or use --all.");
26
+ }
27
+ const removed = await store.delete(originOf(ctx.config.baseUrl), account);
28
+ if (ctx.json) {
29
+ ctx.io.log(serializeEnvelope(buildOk("logout", { agent_id: account, cleared: removed ? 1 : 0 })));
30
+ }
31
+ else {
32
+ ctx.io.log(removed ? `Logged out ${account}.` : `No stored token for ${account}.`);
33
+ }
34
+ }
35
+ //# sourceMappingURL=logout.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logout.js","sourceRoot":"","sources":["../../src/commands/logout.ts"],"names":[],"mappings":"AAAA,wFAAwF;AACxF,4FAA4F;AAC5F,+FAA+F;AAC/F,+EAA+E;AAE/E,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACtE,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAEpD,OAAO,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEtD,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,GAAmB;IACrD,MAAM,EAAE,MAAM,EAAE,GAAG,gBAAgB,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,CAAC,CAAC;IAC5E,MAAM,KAAK,GAAG,MAAM,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;IAE5C,IAAI,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;QACvB,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,QAAQ,EAAE,CAAC;QACvC,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC;YACb,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,iBAAiB,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;QAChE,CAAC;aAAM,CAAC;YACN,GAAG,CAAC,EAAE,CAAC,GAAG,CACR,OAAO,GAAG,CAAC;gBACT,CAAC,CAAC,WAAW,OAAO,WAAW,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,YAAY,GAAG;gBAC3E,CAAC,CAAC,uBAAuB,CAC5B,CAAC;QACJ,CAAC;QACD,OAAO;IACT,CAAC;IAED,MAAM,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC;IACnC,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,MAAM,IAAI,QAAQ,CAChB,OAAO,EACP,sFAAsF,CACvF,CAAC;IACJ,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC;IAC1E,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC;QACb,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,iBAAiB,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACpG,CAAC;SAAM,CAAC;QACN,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,cAAc,OAAO,GAAG,CAAC,CAAC,CAAC,uBAAuB,OAAO,GAAG,CAAC,CAAC;IACrF,CAAC;AACH,CAAC"}
@@ -0,0 +1,43 @@
1
+ import type { CommandContext } from "../context.js";
2
+ import type { GetMessageBody, JsonObject } from "./wire.js";
3
+ export declare const DEFAULT_INTERVAL_MS = 2000;
4
+ export declare const DEFAULT_BUDGET_MS = 120000;
5
+ /** Per-poll request bound when no `--timeout`/`MA2H_TIMEOUT_MS` is set. */
6
+ export declare const DEFAULT_PER_REQUEST_MS = 10000;
7
+ /** Resolve the dual-timeout budget (spec §4.4). Poll budget := `--await-timeout` (canonical) else
8
+ * `--timeout` (the back-compat alias — the scripts spelled the poll budget `--timeout`, which
9
+ * resolves into `config.timeoutMs`) else 120s. Per-poll request bound := `config.timeoutMs`
10
+ * (the global `--timeout`) else 10s, capped to the remaining budget in the loop. Rejects a
11
+ * non-positive `--interval`/`--await-timeout` up front (a NaN/0/negative would busy-loop). */
12
+ export declare function resolveAwaitTiming(ctx: CommandContext, intervalRaw: string | undefined, awaitTimeoutRaw: string | undefined, timeoutFlagRaw: string | undefined): {
13
+ intervalMs: number;
14
+ budgetMs: number;
15
+ perRequestMs: number;
16
+ };
17
+ export interface AwaitParams {
18
+ token: string;
19
+ id: string;
20
+ /** The message kind this subcommand resumes; a wrong-kind id fails fast. */
21
+ expectedType: "ask" | "task";
22
+ /** Poll cadence between non-terminal reads (ms). */
23
+ intervalMs: number;
24
+ /** Total poll budget (ms) — bounds the WHOLE await, not just the sleeps. */
25
+ budgetMs: number;
26
+ /** Per-poll request bound (ms), capped to the remaining budget each round. */
27
+ perRequestMs?: number;
28
+ /** Injectable clock (defaults to Date.now) — lets tests drive the timeout deterministically. */
29
+ now?: () => number;
30
+ }
31
+ /** Poll until terminal, then return the message body with its embedded terminal `response`.
32
+ * Fails fast on a wrong-kind id and throws a `timeout` CliError (exit 7) once the budget is
33
+ * exhausted. Sleeps go through `ctx.runtime.sleep` so tests never actually wait. */
34
+ export declare function awaitResolution(ctx: CommandContext, params: AwaitParams): Promise<GetMessageBody>;
35
+ /** Print a terminal resolution. Reads by resolution: `value` is present for an answered ask
36
+ * (absent for task, and for declined/cancelled), so a missing value is never an error (§6).
37
+ * `includeValue` is false for task (a task Response carries no value). The answer detail nests
38
+ * under `body.response.response` (ResponseDetail). Under `--json`, response.value/comment are
39
+ * printed to the asker (who requested them) but this is a CLI — they are never logged (§5.4).
40
+ * `openedState` is the agent-owned sealed `state`, already opened by the caller (§9.3) when
41
+ * MA2H_STATE_SEAL_KEY was set — surfaced verbatim to the asker (it is the asker's own resume
42
+ * blob), never logged. */
43
+ export declare function printResolution(ctx: CommandContext, body: GetMessageBody, includeValue: boolean, openedState?: JsonObject): void;
@@ -0,0 +1,125 @@
1
+ // Shared pull-resume for `ask await` / `task await` (spec §4.4). Polls GET /v1/messages/:id
2
+ // (submitter-bound, agent bearer) until the message reaches a terminal status, then prints the
3
+ // outcome. A pull Response is trusted via the authenticated GET transport + the immutable
4
+ // terminal record — it carries no detached signature (push is the signed path, not the CLI's
5
+ // concern here), so no crypto is involved. Exit 0 at any terminal state; the *outcome* is in
6
+ // `data.status`, so callers branch on that, not the exit code (spec §7).
7
+ import { CliError, buildOk, serializeEnvelope } from "../../envelope.js";
8
+ import { pollMessage } from "./http.js";
9
+ import { MAX_TIMER_MS, positiveInt, sanitizeForTerminal } from "./shared.js";
10
+ export const DEFAULT_INTERVAL_MS = 2000;
11
+ export const DEFAULT_BUDGET_MS = 120_000;
12
+ /** Per-poll request bound when no `--timeout`/`MA2H_TIMEOUT_MS` is set. */
13
+ export const DEFAULT_PER_REQUEST_MS = 10_000;
14
+ /** Terminal once out of the pre-resolution states. `delivered` is the notify terminal, never an
15
+ * ask/task's; keying on "not open and not delivered" stays correct across the Status union. */
16
+ function isTerminal(status) {
17
+ return status !== "open" && status !== "delivered";
18
+ }
19
+ /** Resolve the dual-timeout budget (spec §4.4). Poll budget := `--await-timeout` (canonical) else
20
+ * `--timeout` (the back-compat alias — the scripts spelled the poll budget `--timeout`, which
21
+ * resolves into `config.timeoutMs`) else 120s. Per-poll request bound := `config.timeoutMs`
22
+ * (the global `--timeout`) else 10s, capped to the remaining budget in the loop. Rejects a
23
+ * non-positive `--interval`/`--await-timeout` up front (a NaN/0/negative would busy-loop). */
24
+ export function resolveAwaitTiming(ctx, intervalRaw, awaitTimeoutRaw, timeoutFlagRaw) {
25
+ const intervalMs = intervalRaw !== undefined ? positiveMs(intervalRaw, "--interval") : DEFAULT_INTERVAL_MS;
26
+ const awaitTimeout = awaitTimeoutRaw !== undefined ? positiveMs(awaitTimeoutRaw, "--await-timeout") : undefined;
27
+ // Poll budget := `--await-timeout` (canonical) else the legacy `--timeout` FLAG (back-compat,
28
+ // §4.4) else the default. ONLY the flag aliases the budget — `MA2H_TIMEOUT_MS` env is per-request
29
+ // ONLY (§6). As an await budget the flag is validated with the SAME strictness as `--await-timeout`
30
+ // (positive integer within the timer range): a `0` / fractional / over-ceiling value is a usage
31
+ // error, not a silent truncation or revert to the default.
32
+ const timeoutFlag = timeoutFlagRaw !== undefined ? positiveMs(timeoutFlagRaw, "--timeout") : undefined;
33
+ const budgetMs = awaitTimeout ?? timeoutFlag ?? DEFAULT_BUDGET_MS;
34
+ // The per-request bound: `config.timeoutMs` (from `--timeout` / `MA2H_TIMEOUT_MS`, §6), defaulted,
35
+ // clamped to the timer ceiling, and never larger than the whole budget.
36
+ const configTimeout = ctx.config.timeoutMs !== undefined && ctx.config.timeoutMs > 0 ? Math.min(ctx.config.timeoutMs, MAX_TIMER_MS) : DEFAULT_PER_REQUEST_MS;
37
+ const perRequestMs = Math.min(configTimeout, budgetMs);
38
+ return { intervalMs, budgetMs, perRequestMs };
39
+ }
40
+ /** A strictly-positive INTEGER millisecond flag (`--interval` / `--await-timeout` / `--timeout`).
41
+ * Delegates to the shared `positiveInt` (same range + integer check, so a non-integer can't reach
42
+ * `AbortSignal.timeout()` and an oversized value can't overflow `setTimeout`), with a ms-specific
43
+ * message. */
44
+ function positiveMs(raw, flag) {
45
+ return positiveInt(raw, flag, "a positive integer number of milliseconds");
46
+ }
47
+ /** Poll until terminal, then return the message body with its embedded terminal `response`.
48
+ * Fails fast on a wrong-kind id and throws a `timeout` CliError (exit 7) once the budget is
49
+ * exhausted. Sleeps go through `ctx.runtime.sleep` so tests never actually wait. */
50
+ export async function awaitResolution(ctx, params) {
51
+ const now = params.now ?? (() => Date.now());
52
+ const perRequestMs = params.perRequestMs ?? DEFAULT_PER_REQUEST_MS;
53
+ const deadline = now() + params.budgetMs;
54
+ const noun = params.expectedType === "ask" ? "decisions" : "actions";
55
+ for (;;) {
56
+ const remaining = deadline - now();
57
+ if (remaining <= 0) {
58
+ throw new CliError("timeout", `${params.expectedType} ${params.id} not resolved within ${params.budgetMs}ms`);
59
+ }
60
+ const body = await pollMessage(ctx, params.token, params.id, Math.min(remaining, perRequestMs));
61
+ // A copied notify/other-kind id would otherwise hang to timeout or print a misleading
62
+ // outcome — fail fast on the wrong message type (generic error; the id exists, it's the
63
+ // wrong kind for this subcommand).
64
+ if (body.type !== params.expectedType) {
65
+ throw new CliError("error", `message ${params.id} is a ${body.type}, not ${params.expectedType === "ask" ? "an" : "a"} ${params.expectedType} — '${params.expectedType} await' only resumes ${params.expectedType} ${noun}`);
66
+ }
67
+ if (isTerminal(body.status))
68
+ return body;
69
+ // The poll itself consumed budget (that's why `now()` is sampled again here, not reused from
70
+ // the top of the loop). If it's exhausted, fail now with the last observed status rather than
71
+ // sleeping and looping to the terser top-of-loop timeout.
72
+ const afterPoll = deadline - now();
73
+ if (afterPoll <= 0) {
74
+ throw new CliError("timeout", `${params.expectedType} ${params.id} not resolved within ${params.budgetMs}ms (last status: ${body.status})`);
75
+ }
76
+ // Cap the sleep to the remaining budget so a long --interval can't overshoot the timeout.
77
+ await ctx.runtime.sleep(Math.min(params.intervalMs, afterPoll));
78
+ }
79
+ }
80
+ /** Print a terminal resolution. Reads by resolution: `value` is present for an answered ask
81
+ * (absent for task, and for declined/cancelled), so a missing value is never an error (§6).
82
+ * `includeValue` is false for task (a task Response carries no value). The answer detail nests
83
+ * under `body.response.response` (ResponseDetail). Under `--json`, response.value/comment are
84
+ * printed to the asker (who requested them) but this is a CLI — they are never logged (§5.4).
85
+ * `openedState` is the agent-owned sealed `state`, already opened by the caller (§9.3) when
86
+ * MA2H_STATE_SEAL_KEY was set — surfaced verbatim to the asker (it is the asker's own resume
87
+ * blob), never logged. */
88
+ export function printResolution(ctx, body, includeValue, openedState) {
89
+ const response = body.response;
90
+ const detail = response?.response;
91
+ if (ctx.json) {
92
+ const data = { id: body.id, status: body.status };
93
+ if (detail?.actor !== undefined)
94
+ data.actor = detail.actor;
95
+ if (includeValue && detail?.value !== undefined)
96
+ data.value = detail.value;
97
+ if (detail?.comment !== undefined)
98
+ data.comment = detail.comment;
99
+ if (openedState !== undefined)
100
+ data.state = openedState;
101
+ ctx.io.log(serializeEnvelope(buildOk(`${body.type}.await`, data)));
102
+ return;
103
+ }
104
+ // Resolution fields are Hub-supplied — sanitize before echoing to the terminal (§5.4 posture).
105
+ // A non-string `value` (an input object) is rendered via JSON.stringify, which does NOT escape
106
+ // C1/DEL control chars, so the stringified result is sanitized too (JSON structure chars are all
107
+ // printable, so stripping controls from string leaves keeps it valid JSON).
108
+ ctx.io.log(`resolution: ${sanitizeForTerminal(body.status)}`);
109
+ if (includeValue && detail?.value !== undefined) {
110
+ const rendered = typeof detail.value === "string" ? detail.value : JSON.stringify(detail.value);
111
+ ctx.io.log(`value: ${sanitizeForTerminal(rendered)}`);
112
+ }
113
+ if (detail?.comment !== undefined)
114
+ ctx.io.log(`comment: ${sanitizeForTerminal(detail.comment)}`);
115
+ if (detail?.actor !== undefined)
116
+ ctx.io.log(`actor: ${sanitizeForTerminal(detail.actor)}`);
117
+ if (response?.defaulted === true)
118
+ ctx.io.log("defaulted: true (resolved by default_on_expire)");
119
+ // The opened resume blob is the asker's own agent-owned state (GCM-verified on open), rendered
120
+ // via JSON.stringify; sanitize the rendered string too (JSON escapes structure chars but not
121
+ // C1/DEL), matching the §5.4 terminal posture applied to the Hub-supplied fields above.
122
+ if (openedState !== undefined)
123
+ ctx.io.log(`state: ${sanitizeForTerminal(JSON.stringify(openedState))}`);
124
+ }
125
+ //# sourceMappingURL=await.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"await.js","sourceRoot":"","sources":["../../../src/commands/messaging/await.ts"],"names":[],"mappings":"AAAA,4FAA4F;AAC5F,+FAA+F;AAC/F,0FAA0F;AAC1F,6FAA6F;AAC7F,6FAA6F;AAC7F,yEAAyE;AAEzE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAEzE,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAG7E,MAAM,CAAC,MAAM,mBAAmB,GAAG,IAAI,CAAC;AACxC,MAAM,CAAC,MAAM,iBAAiB,GAAG,OAAO,CAAC;AACzC,2EAA2E;AAC3E,MAAM,CAAC,MAAM,sBAAsB,GAAG,MAAM,CAAC;AAE7C;gGACgG;AAChG,SAAS,UAAU,CAAC,MAAc;IAChC,OAAO,MAAM,KAAK,MAAM,IAAI,MAAM,KAAK,WAAW,CAAC;AACrD,CAAC;AAED;;;;+FAI+F;AAC/F,MAAM,UAAU,kBAAkB,CAChC,GAAmB,EACnB,WAA+B,EAC/B,eAAmC,EACnC,cAAkC;IAElC,MAAM,UAAU,GAAG,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC;IAC3G,MAAM,YAAY,GAAG,eAAe,KAAK,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,eAAe,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAChH,8FAA8F;IAC9F,kGAAkG;IAClG,oGAAoG;IACpG,gGAAgG;IAChG,2DAA2D;IAC3D,MAAM,WAAW,GAAG,cAAc,KAAK,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACvG,MAAM,QAAQ,GAAG,YAAY,IAAI,WAAW,IAAI,iBAAiB,CAAC;IAClE,mGAAmG;IACnG,wEAAwE;IACxE,MAAM,aAAa,GACjB,GAAG,CAAC,MAAM,CAAC,SAAS,KAAK,SAAS,IAAI,GAAG,CAAC,MAAM,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,sBAAsB,CAAC;IACzI,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;IACvD,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,YAAY,EAAE,CAAC;AAChD,CAAC;AAED;;;eAGe;AACf,SAAS,UAAU,CAAC,GAAW,EAAE,IAAY;IAC3C,OAAO,WAAW,CAAC,GAAG,EAAE,IAAI,EAAE,2CAA2C,CAAC,CAAC;AAC7E,CAAC;AAiBD;;qFAEqF;AACrF,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,GAAmB,EAAE,MAAmB;IAC5E,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC,GAAW,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;IACrD,MAAM,YAAY,GAAG,MAAM,CAAC,YAAY,IAAI,sBAAsB,CAAC;IACnE,MAAM,QAAQ,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC,QAAQ,CAAC;IACzC,MAAM,IAAI,GAAG,MAAM,CAAC,YAAY,KAAK,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC;IACrE,SAAS,CAAC;QACR,MAAM,SAAS,GAAG,QAAQ,GAAG,GAAG,EAAE,CAAC;QACnC,IAAI,SAAS,IAAI,CAAC,EAAE,CAAC;YACnB,MAAM,IAAI,QAAQ,CAAC,SAAS,EAAE,GAAG,MAAM,CAAC,YAAY,IAAI,MAAM,CAAC,EAAE,wBAAwB,MAAM,CAAC,QAAQ,IAAI,CAAC,CAAC;QAChH,CAAC;QACD,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC,CAAC;QAChG,sFAAsF;QACtF,wFAAwF;QACxF,mCAAmC;QACnC,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,CAAC,YAAY,EAAE,CAAC;YACtC,MAAM,IAAI,QAAQ,CAChB,OAAO,EACP,WAAW,MAAM,CAAC,EAAE,SAAS,IAAI,CAAC,IAAI,SAAS,MAAM,CAAC,YAAY,KAAK,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,MAAM,CAAC,YAAY,OAAO,MAAM,CAAC,YAAY,wBAAwB,MAAM,CAAC,YAAY,IAAI,IAAI,EAAE,CAChM,CAAC;QACJ,CAAC;QACD,IAAI,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC;YAAE,OAAO,IAAI,CAAC;QACzC,6FAA6F;QAC7F,8FAA8F;QAC9F,0DAA0D;QAC1D,MAAM,SAAS,GAAG,QAAQ,GAAG,GAAG,EAAE,CAAC;QACnC,IAAI,SAAS,IAAI,CAAC,EAAE,CAAC;YACnB,MAAM,IAAI,QAAQ,CAChB,SAAS,EACT,GAAG,MAAM,CAAC,YAAY,IAAI,MAAM,CAAC,EAAE,wBAAwB,MAAM,CAAC,QAAQ,oBAAoB,IAAI,CAAC,MAAM,GAAG,CAC7G,CAAC;QACJ,CAAC;QACD,0FAA0F;QAC1F,MAAM,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC,CAAC;IAClE,CAAC;AACH,CAAC;AAED;;;;;;;2BAO2B;AAC3B,MAAM,UAAU,eAAe,CAAC,GAAmB,EAAE,IAAoB,EAAE,YAAqB,EAAE,WAAwB;IACxH,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;IAC/B,MAAM,MAAM,GAAG,QAAQ,EAAE,QAAQ,CAAC;IAClC,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC;QACb,MAAM,IAAI,GAA4B,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;QAC3E,IAAI,MAAM,EAAE,KAAK,KAAK,SAAS;YAAE,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;QAC3D,IAAI,YAAY,IAAI,MAAM,EAAE,KAAK,KAAK,SAAS;YAAE,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;QAC3E,IAAI,MAAM,EAAE,OAAO,KAAK,SAAS;YAAE,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;QACjE,IAAI,WAAW,KAAK,SAAS;YAAE,IAAI,CAAC,KAAK,GAAG,WAAW,CAAC;QACxD,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,iBAAiB,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,IAAI,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;QACnE,OAAO;IACT,CAAC;IACD,+FAA+F;IAC/F,+FAA+F;IAC/F,iGAAiG;IACjG,4EAA4E;IAC5E,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,eAAe,mBAAmB,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAC9D,IAAI,YAAY,IAAI,MAAM,EAAE,KAAK,KAAK,SAAS,EAAE,CAAC;QAChD,MAAM,QAAQ,GAAG,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAChG,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,eAAe,mBAAmB,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IAC7D,CAAC;IACD,IAAI,MAAM,EAAE,OAAO,KAAK,SAAS;QAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,eAAe,mBAAmB,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACpG,IAAI,MAAM,EAAE,KAAK,KAAK,SAAS;QAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,eAAe,mBAAmB,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAChG,IAAI,QAAQ,EAAE,SAAS,KAAK,IAAI;QAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,kDAAkD,CAAC,CAAC;IACjG,+FAA+F;IAC/F,6FAA6F;IAC7F,wFAAwF;IACxF,IAAI,WAAW,KAAK,SAAS;QAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,eAAe,mBAAmB,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC;AAC/G,CAAC"}
@@ -0,0 +1,46 @@
1
+ import type { AskMessage, AskRequest, JsonObject, NotifyMessage, Priority, Runtime, TaskAction, TaskMessage } from "./wire.js";
2
+ /** The submitting agent's identity. `id` MUST equal the bound bearer credential or the Hub 403s. */
3
+ export interface AgentIdentity {
4
+ id: string;
5
+ run_id: string;
6
+ /** Defaults to "cli". */
7
+ runtime?: Runtime;
8
+ project?: string;
9
+ }
10
+ export interface BuildNotifyInput {
11
+ agent: AgentIdentity;
12
+ title: string;
13
+ body?: string;
14
+ priority?: Priority;
15
+ tags?: string[];
16
+ created_at?: string;
17
+ /** Already-sealed agent resume blob (`{ sealed: … }` from `state.ts`). */
18
+ state?: JsonObject;
19
+ }
20
+ /** A general notify carries NO idempotency key — fire-and-forget is never retried (a retry
21
+ * would post a duplicate). An empty `tags` is omitted (the Hub treats absent and `[]` alike). */
22
+ export declare function buildNotify(input: BuildNotifyInput): NotifyMessage;
23
+ export interface BuildAskInput {
24
+ agent: AgentIdentity;
25
+ title: string;
26
+ request: AskRequest;
27
+ body?: string;
28
+ /** Defaults to a fresh `idem_<uuid>`. */
29
+ idempotency_key?: string;
30
+ created_at?: string;
31
+ /** Already-sealed agent resume blob (`{ sealed: … }` from `state.ts`). */
32
+ state?: JsonObject;
33
+ }
34
+ export declare function buildAsk(input: BuildAskInput): AskMessage;
35
+ export interface BuildTaskInput {
36
+ agent: AgentIdentity;
37
+ title: string;
38
+ action: TaskAction;
39
+ body?: string;
40
+ /** Defaults to a fresh `idem_<uuid>`. */
41
+ idempotency_key?: string;
42
+ created_at?: string;
43
+ /** Already-sealed agent resume blob (`{ sealed: … }` from `state.ts`). */
44
+ state?: JsonObject;
45
+ }
46
+ export declare function buildTask(input: BuildTaskInput): TaskMessage;
@@ -0,0 +1,66 @@
1
+ // Pure MA2H envelope builders for the productized messaging commands (spec §4.4).
2
+ //
3
+ // These mirror `scripts/agent-client.ts`'s buildNotify / buildAsk / buildTask in shape —
4
+ // stamp `ma2h_version: "0.3"`, the `type`, a `created_at` (defaulting to now), the agent
5
+ // descriptor (runtime defaults to "cli"), and — for ask/task — a REQUIRED idempotency key
6
+ // (a fresh `idem_<uuid>` unless the caller pins one). No crypto and no I/O: envelope
7
+ // construction is plain object assembly, so this is not the "no hand-rolled crypto" surface
8
+ // (that rule covers JCS / the detached HMAC signature / the AES-256-GCM state-seal, none of
9
+ // which the submit/pull path touches). See `wire.ts` for why these live in the CLI package.
10
+ import { randomUUID } from "node:crypto";
11
+ function descriptor(agent) {
12
+ return {
13
+ id: agent.id,
14
+ run_id: agent.run_id,
15
+ runtime: agent.runtime ?? "cli",
16
+ ...(agent.project !== undefined ? { project: agent.project } : {}),
17
+ };
18
+ }
19
+ function nowIso() {
20
+ return new Date().toISOString();
21
+ }
22
+ function freshIdempotencyKey() {
23
+ return `idem_${randomUUID()}`;
24
+ }
25
+ /** A general notify carries NO idempotency key — fire-and-forget is never retried (a retry
26
+ * would post a duplicate). An empty `tags` is omitted (the Hub treats absent and `[]` alike). */
27
+ export function buildNotify(input) {
28
+ return {
29
+ ma2h_version: "0.3",
30
+ type: "notify",
31
+ created_at: input.created_at ?? nowIso(),
32
+ agent: descriptor(input.agent),
33
+ title: input.title,
34
+ ...(input.body !== undefined ? { body: input.body } : {}),
35
+ ...(input.priority !== undefined ? { priority: input.priority } : {}),
36
+ ...(input.tags !== undefined && input.tags.length > 0 ? { tags: input.tags } : {}),
37
+ ...(input.state !== undefined ? { state: input.state } : {}),
38
+ };
39
+ }
40
+ export function buildAsk(input) {
41
+ return {
42
+ ma2h_version: "0.3",
43
+ type: "ask",
44
+ created_at: input.created_at ?? nowIso(),
45
+ agent: descriptor(input.agent),
46
+ title: input.title,
47
+ idempotency_key: input.idempotency_key ?? freshIdempotencyKey(),
48
+ request: input.request,
49
+ ...(input.body !== undefined ? { body: input.body } : {}),
50
+ ...(input.state !== undefined ? { state: input.state } : {}),
51
+ };
52
+ }
53
+ export function buildTask(input) {
54
+ return {
55
+ ma2h_version: "0.3",
56
+ type: "task",
57
+ created_at: input.created_at ?? nowIso(),
58
+ agent: descriptor(input.agent),
59
+ title: input.title,
60
+ idempotency_key: input.idempotency_key ?? freshIdempotencyKey(),
61
+ action: input.action,
62
+ ...(input.body !== undefined ? { body: input.body } : {}),
63
+ ...(input.state !== undefined ? { state: input.state } : {}),
64
+ };
65
+ }
66
+ //# sourceMappingURL=build.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build.js","sourceRoot":"","sources":["../../../src/commands/messaging/build.ts"],"names":[],"mappings":"AAAA,kFAAkF;AAClF,EAAE;AACF,yFAAyF;AACzF,yFAAyF;AACzF,0FAA0F;AAC1F,qFAAqF;AACrF,4FAA4F;AAC5F,4FAA4F;AAC5F,4FAA4F;AAE5F,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAuBzC,SAAS,UAAU,CAAC,KAAoB;IACtC,OAAO;QACL,EAAE,EAAE,KAAK,CAAC,EAAE;QACZ,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,KAAK;QAC/B,GAAG,CAAC,KAAK,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACnE,CAAC;AACJ,CAAC;AAED,SAAS,MAAM;IACb,OAAO,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;AAClC,CAAC;AAED,SAAS,mBAAmB;IAC1B,OAAO,QAAQ,UAAU,EAAE,EAAE,CAAC;AAChC,CAAC;AAaD;kGACkG;AAClG,MAAM,UAAU,WAAW,CAAC,KAAuB;IACjD,OAAO;QACL,YAAY,EAAE,KAAK;QACnB,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE,KAAK,CAAC,UAAU,IAAI,MAAM,EAAE;QACxC,KAAK,EAAE,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC;QAC9B,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,GAAG,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACzD,GAAG,CAAC,KAAK,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACrE,GAAG,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAClF,GAAG,CAAC,KAAK,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC7D,CAAC;AACJ,CAAC;AAcD,MAAM,UAAU,QAAQ,CAAC,KAAoB;IAC3C,OAAO;QACL,YAAY,EAAE,KAAK;QACnB,IAAI,EAAE,KAAK;QACX,UAAU,EAAE,KAAK,CAAC,UAAU,IAAI,MAAM,EAAE;QACxC,KAAK,EAAE,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC;QAC9B,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,eAAe,EAAE,KAAK,CAAC,eAAe,IAAI,mBAAmB,EAAE;QAC/D,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,GAAG,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACzD,GAAG,CAAC,KAAK,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC7D,CAAC;AACJ,CAAC;AAcD,MAAM,UAAU,SAAS,CAAC,KAAqB;IAC7C,OAAO;QACL,YAAY,EAAE,KAAK;QACnB,IAAI,EAAE,MAAM;QACZ,UAAU,EAAE,KAAK,CAAC,UAAU,IAAI,MAAM,EAAE;QACxC,KAAK,EAAE,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC;QAC9B,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,eAAe,EAAE,KAAK,CAAC,eAAe,IAAI,mBAAmB,EAAE;QAC/D,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,GAAG,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACzD,GAAG,CAAC,KAAK,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC7D,CAAC;AACJ,CAAC"}
@@ -0,0 +1,22 @@
1
+ import type { CommandContext } from "../context.js";
2
+ import type { GetMessageBody, InboundDelivery, InboxAckResult, SubmitAck } from "./wire.js";
3
+ /** Redact any occurrence of the bearer from a Hub-supplied string before it can reach
4
+ * stdout/stderr/logs/the `--json` envelope (§5.4) — a hostile/buggy Hub could echo the
5
+ * Authorization value back in an error message, an ack field, or (inbox watch) a directive. */
6
+ export declare function redactToken(message: string | undefined, token: string): string | undefined;
7
+ /** POST an envelope to the Hub's ingest endpoint (agent bearer). `202` → the SubmitAck; every
8
+ * other status maps to the right §7 exit code (via the Hub's error envelope when present). */
9
+ export declare function submitEnvelope(ctx: CommandContext, token: string, envelope: unknown): Promise<SubmitAck>;
10
+ /** GET one message (the submitter-bound pull, agent bearer). Embeds the terminal Response.
11
+ * A `2xx` returns the parsed body; every other status maps to a §7 exit code. */
12
+ export declare function pollMessage(ctx: CommandContext, token: string, id: string, timeoutMs: number): Promise<GetMessageBody>;
13
+ /** GET the agent's mailbox — the human→agent drain (spec §13, agent bearer). A `2xx` returns the
14
+ * signed deliveries; every other status maps to a §7 exit code. `max`, when set, caps the batch via
15
+ * `?max=`. The drain also touches `agent_seen` server-side, so an authenticated poll is itself the
16
+ * presence heartbeat (§15) — nothing extra to send. */
17
+ export declare function drainInbox(ctx: CommandContext, token: string, max?: number): Promise<{
18
+ directives: InboundDelivery[];
19
+ }>;
20
+ /** POST a single batched consume-ack for the drained ids — the §14 directive receipt (agent bearer).
21
+ * A `2xx` returns the consumed count; every other status maps to a §7 exit code. */
22
+ export declare function ackInbox(ctx: CommandContext, token: string, ids: string[]): Promise<InboxAckResult>;