@oh-hai/cli 0.2.3 → 0.3.1

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 (75) hide show
  1. package/CHANGELOG.md +125 -0
  2. package/README.md +59 -29
  3. package/dist/commands/ask.js +71 -10
  4. package/dist/commands/ask.js.map +1 -1
  5. package/dist/commands/bridge.d.ts +2 -0
  6. package/dist/commands/bridge.js +502 -0
  7. package/dist/commands/bridge.js.map +1 -0
  8. package/dist/commands/context.d.ts +22 -0
  9. package/dist/commands/doctor.js +12 -1
  10. package/dist/commands/doctor.js.map +1 -1
  11. package/dist/commands/fleet.d.ts +2 -0
  12. package/dist/commands/fleet.js +164 -0
  13. package/dist/commands/fleet.js.map +1 -0
  14. package/dist/commands/handlers.js +8 -0
  15. package/dist/commands/handlers.js.map +1 -1
  16. package/dist/commands/messages.d.ts +2 -0
  17. package/dist/commands/messages.js +131 -0
  18. package/dist/commands/messages.js.map +1 -0
  19. package/dist/commands/messaging/build.d.ts +10 -1
  20. package/dist/commands/messaging/build.js +22 -4
  21. package/dist/commands/messaging/build.js.map +1 -1
  22. package/dist/commands/messaging/capability.d.ts +42 -0
  23. package/dist/commands/messaging/capability.js +164 -0
  24. package/dist/commands/messaging/capability.js.map +1 -0
  25. package/dist/commands/messaging/http.d.ts +28 -1
  26. package/dist/commands/messaging/http.js +234 -13
  27. package/dist/commands/messaging/http.js.map +1 -1
  28. package/dist/commands/messaging/inbox-entries.d.ts +83 -0
  29. package/dist/commands/messaging/inbox-entries.js +371 -0
  30. package/dist/commands/messaging/inbox-entries.js.map +1 -0
  31. package/dist/commands/messaging/inbox-stream.d.ts +37 -0
  32. package/dist/commands/messaging/inbox-stream.js +224 -0
  33. package/dist/commands/messaging/inbox-stream.js.map +1 -0
  34. package/dist/commands/messaging/session-drain.d.ts +50 -0
  35. package/dist/commands/messaging/session-drain.js +163 -0
  36. package/dist/commands/messaging/session-drain.js.map +1 -0
  37. package/dist/commands/messaging/session-scope.d.ts +93 -0
  38. package/dist/commands/messaging/session-scope.js +0 -0
  39. package/dist/commands/messaging/session-scope.js.map +1 -0
  40. package/dist/commands/messaging/sessions-http.d.ts +20 -0
  41. package/dist/commands/messaging/sessions-http.js +153 -0
  42. package/dist/commands/messaging/sessions-http.js.map +1 -0
  43. package/dist/commands/messaging/shared.d.ts +19 -1
  44. package/dist/commands/messaging/shared.js +69 -2
  45. package/dist/commands/messaging/shared.js.map +1 -1
  46. package/dist/commands/messaging/validate.d.ts +33 -1
  47. package/dist/commands/messaging/validate.js +78 -0
  48. package/dist/commands/messaging/validate.js.map +1 -1
  49. package/dist/commands/messaging/wire.d.ts +180 -3
  50. package/dist/commands/notify.js +47 -5
  51. package/dist/commands/notify.js.map +1 -1
  52. package/dist/commands/registry.js +128 -3
  53. package/dist/commands/registry.js.map +1 -1
  54. package/dist/commands/self-test.d.ts +17 -0
  55. package/dist/commands/self-test.js +472 -0
  56. package/dist/commands/self-test.js.map +1 -0
  57. package/dist/commands/session.d.ts +2 -0
  58. package/dist/commands/session.js +158 -0
  59. package/dist/commands/session.js.map +1 -0
  60. package/dist/commands/setup.js +44 -0
  61. package/dist/commands/setup.js.map +1 -1
  62. package/dist/commands/task.js +61 -11
  63. package/dist/commands/task.js.map +1 -1
  64. package/dist/commands/teach.js +84 -4
  65. package/dist/commands/teach.js.map +1 -1
  66. package/dist/commands/whoami.js +14 -1
  67. package/dist/commands/whoami.js.map +1 -1
  68. package/dist/exit-codes.d.ts +37 -1
  69. package/dist/exit-codes.js +42 -1
  70. package/dist/exit-codes.js.map +1 -1
  71. package/dist/help.js +5 -1
  72. package/dist/help.js.map +1 -1
  73. package/dist/watch-lock.js +7 -0
  74. package/dist/watch-lock.js.map +1 -1
  75. package/package.json +5 -4
@@ -0,0 +1,153 @@
1
+ // Hub HTTP for the MA2H v0.5 §16 session surface (issue #657), over the injectable
2
+ // `ctx.runtime.fetchImpl` so the command tests stay hermetic. Split from `messaging/http.ts` — the
3
+ // message-leg module — because sessions are a different resource with their own shape guards; both
4
+ // share the §7 exit-code mapping and the §5.4 bearer-redaction posture via the helpers exported
5
+ // from there, so there is exactly one place where an HTTP status becomes an exit code.
6
+ //
7
+ // A session id is Hub-minted, NON-SECRET, and confers nothing on its own (spec §16) — every call
8
+ // here still presents the agent bearer. That is why session ids may be printed, cached in the
9
+ // environment, and passed around as addresses while the token never is.
10
+ import { CliError } from "../../envelope.js";
11
+ import { throwTransportError } from "../http.js";
12
+ import { redactToken, requestTimeoutMs, statusToCliError } from "./http.js";
13
+ /** The v0.5 session states (spec §16.3). Terminal states are immutable. */
14
+ const SESSION_STATES = new Set(["active", "closed", "expired"]);
15
+ /** A parseable ISO timestamp — the schema's `format: date-time`, checked as far as is useful. */
16
+ function isIsoTimestamp(value) {
17
+ return typeof value === "string" && value.trim() !== "" && !Number.isNaN(Date.parse(value));
18
+ }
19
+ /**
20
+ * Guard for one session resource, against the v0.5 session schema's INVARIANTS rather than just its
21
+ * field presence.
22
+ *
23
+ * Presence alone is not enough here, because every one of these fields is acted on rather than
24
+ * merely displayed. A non-`sess_` id is exported as `MA2H_SESSION_ID` and addressed with `--to`,
25
+ * where it can only fail later and confusingly. A `#`-bearing `agent_id` cannot appear in a §4
26
+ * address at all (its first `#` parses as the separator), so `fleet ls` would advertise a
27
+ * copy-pasteable address that is not expressible. An out-of-enum `state` silently drops the row from
28
+ * the live filter, making a session look gone. And the lease timestamps are what `fleet ls` renders
29
+ * as age. A malformed resource is a Hub/proxy contract violation — surfacing it as one beats acting
30
+ * on it.
31
+ */
32
+ function isSession(value) {
33
+ if (value === null || typeof value !== "object")
34
+ return false;
35
+ const { id, agent_id: agentId, state, created_at: createdAt, expires_at: expiresAt } = value;
36
+ if (typeof id !== "string" || !/^sess_[^\s#]+$/.test(id))
37
+ return false;
38
+ if (typeof agentId !== "string" || agentId === "" || agentId.includes("#"))
39
+ return false;
40
+ if (typeof state !== "string" || !SESSION_STATES.has(state))
41
+ return false;
42
+ return isIsoTimestamp(createdAt) && isIsoTimestamp(expiresAt);
43
+ }
44
+ /** Parse a `{ session: … }` body and redact the bearer from every string in it before any caller
45
+ * can print it (§5.4) — the same JSON round-trip `listMessages` uses, and it fails CLOSED: a
46
+ * re-parse failure surfaces a clean server error rather than returning un-redacted data. */
47
+ function readSession(body, token, what) {
48
+ const session = body.session;
49
+ if (!isSession(session)) {
50
+ throw new CliError("server", `the Hub returned a malformed session ${what} (expected { session: { id, agent_id, state, created_at } }).`);
51
+ }
52
+ return redactDeep(session, token, "session");
53
+ }
54
+ /** Deep bearer redaction over an already-validated value. Fails closed (see `readSession`). */
55
+ function redactDeep(value, token, what) {
56
+ const redacted = redactToken(JSON.stringify(value), token);
57
+ if (redacted === undefined)
58
+ return value;
59
+ try {
60
+ return JSON.parse(redacted);
61
+ }
62
+ catch {
63
+ throw new CliError("server", `the Hub ${what} response could not be safely processed.`);
64
+ }
65
+ }
66
+ /** Shared request helper: authenticated call, transport errors → §7 exit codes, non-2xx → the Hub's
67
+ * error envelope mapped to a CliError. Returns the parsed JSON object body. */
68
+ async function sessionRequest(ctx, token, method, path, body) {
69
+ const init = {
70
+ method,
71
+ headers: {
72
+ Authorization: `Bearer ${token}`,
73
+ ...(body !== undefined ? { "Content-Type": "application/json" } : {}),
74
+ },
75
+ ...(body !== undefined ? { body: JSON.stringify(body) } : {}),
76
+ signal: AbortSignal.timeout(requestTimeoutMs(ctx)),
77
+ };
78
+ let res;
79
+ try {
80
+ res = await ctx.runtime.fetchImpl(`${ctx.config.baseUrl}${path}`, init);
81
+ }
82
+ catch (error) {
83
+ throwTransportError(error, ctx.config.baseUrl);
84
+ }
85
+ if (res.status < 200 || res.status >= 300) {
86
+ const { code, message } = await readErrorEnvelopeOf(res);
87
+ // A Hub with no §16 surface at all answers 404 on POST /v1/sessions — an unrecognized ROUTE,
88
+ // not an unknown session. Say so, because "not found" alone would send the user hunting for a
89
+ // session id they never had.
90
+ const hint = res.status === 404 && method === "POST"
91
+ ? "this Hub does not implement the v0.5 session surface (§16) — `oh-hai session` needs a Hub advertising `sessions`."
92
+ : res.status === 429
93
+ ? "the live-session cap for this agent is full — close a stale one (`oh-hai session close`) or let its lease lapse; `oh-hai fleet ls` shows which."
94
+ : undefined;
95
+ throw statusToCliError(res.status, redactToken(message, token), code, hint);
96
+ }
97
+ return readJsonOf(res);
98
+ }
99
+ /** POST /v1/sessions — register (spec §16.1). Every request field is optional: the Hub mints the
100
+ * id, owns the state, and CLAMPS `ttl_seconds` two-sidedly into its advertised bounds, so the
101
+ * returned `ttl_seconds`/`expires_at` are authoritative and may differ from what was asked. */
102
+ export async function registerSession(ctx, token, request) {
103
+ return readSession(await sessionRequest(ctx, token, "POST", "/v1/sessions", request), token, "registration");
104
+ }
105
+ /** GET /v1/sessions — list (spec §16.4). Scope depends on the CALLER, not on any parameter: an
106
+ * agent always sees its OWN sessions, and sees the whole account only where the Hub's
107
+ * `agent_list_visibility` policy permits it. The caller renders which of those it got. */
108
+ export async function listSessions(ctx, token, page = {}) {
109
+ const query = new URLSearchParams();
110
+ if (page.limit !== undefined)
111
+ query.set("limit", String(page.limit));
112
+ if (page.offset !== undefined)
113
+ query.set("offset", String(page.offset));
114
+ const suffix = query.toString();
115
+ const body = await sessionRequest(ctx, token, "GET", `/v1/sessions${suffix ? `?${suffix}` : ""}`);
116
+ const sessions = body.sessions;
117
+ if (!Array.isArray(sessions) || !sessions.every(isSession)) {
118
+ throw new CliError("server", "the Hub returned a malformed session list (expected { sessions: [{ id, agent_id, state, created_at }] }).");
119
+ }
120
+ return redactDeep(sessions, token, "session list");
121
+ }
122
+ /** GET /v1/sessions/:id — read one (spec §16.4). A TERMINAL session is still 200-with-its-state for
123
+ * the advertised retention window; 404 covers unknown AND foreign alike (deliberately
124
+ * indistinguishable, §9.1). */
125
+ export async function getSession(ctx, token, id) {
126
+ return readSession(await sessionRequest(ctx, token, "GET", `/v1/sessions/${encodeURIComponent(id)}`), token, "read");
127
+ }
128
+ /** DELETE /v1/sessions/:id — close (spec §16.3). IDEMPOTENT: re-closing a terminal session returns
129
+ * it unchanged rather than erroring, so a retry is always safe. */
130
+ export async function closeSession(ctx, token, id) {
131
+ return readSession(await sessionRequest(ctx, token, "DELETE", `/v1/sessions/${encodeURIComponent(id)}`), token, "close");
132
+ }
133
+ // --- tiny body readers, duplicated from http.ts for the same reason it duplicates login.ts's ---
134
+ async function readJsonOf(res) {
135
+ if (typeof res.json !== "function")
136
+ return {};
137
+ try {
138
+ const parsed = await res.json();
139
+ return parsed !== null && typeof parsed === "object" && !Array.isArray(parsed) ? parsed : {};
140
+ }
141
+ catch {
142
+ return {};
143
+ }
144
+ }
145
+ async function readErrorEnvelopeOf(res) {
146
+ const body = await readJsonOf(res);
147
+ const error = body.error;
148
+ const record = error !== null && typeof error === "object" ? error : {};
149
+ const message = typeof record.message === "string" && record.message.trim() !== "" ? record.message.trim() : undefined;
150
+ const code = typeof record.code === "string" && record.code.trim() !== "" ? record.code.trim() : undefined;
151
+ return { code, message };
152
+ }
153
+ //# sourceMappingURL=sessions-http.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sessions-http.js","sourceRoot":"","sources":["../../../src/commands/messaging/sessions-http.ts"],"names":[],"mappings":"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"}
@@ -21,6 +21,10 @@ export declare const MAX_TIMER_MS = 2147483647;
21
21
  * `--max`. `detail` tailors the message to the flag's unit (e.g. "a positive integer number of
22
22
  * milliseconds"). */
23
23
  export declare function positiveInt(raw: string | undefined, flag: string, detail?: string, ceiling?: number): number;
24
+ /** Like `positiveInt` but ALLOWS 0 — for a pagination `--offset` that can page back to the start (0
25
+ * is the first window, not an error). A NaN / fractional / negative / over-`ceiling` value is a
26
+ * usage error (exit 2). `ceiling` defaults to the timer range; pass a smaller cap for a count flag. */
27
+ export declare function nonNegativeInt(raw: string | undefined, flag: string, detail?: string, ceiling?: number): number;
24
28
  /** Coerce a `parseArgs` value (string | boolean | string[] | undefined under strict:false) to a
25
29
  * plain string, or undefined. A repeated single-value flag arrives as an array — take the last. */
26
30
  export declare function stringFlag(value: unknown): string | undefined;
@@ -47,7 +51,21 @@ export declare function resolveRunId(): string;
47
51
  /** Print the common human-readable submit acknowledgement (headline + id + status, plus the
48
52
  * poll URL when relevant and a review URL when the Hub returned one). Commands append their own
49
53
  * next-step hint after calling this. Never prints the token (§5.4). */
50
- export declare function printSubmitAck(ctx: CommandContext, headline: string, ack: SubmitAck, includePoll?: boolean): void;
54
+ export declare function printSubmitAck(ctx: CommandContext, headline: string, ack: SubmitAck, includePoll?: boolean, addressed?: boolean): void;
55
+ /**
56
+ * After an ADDRESSED ask/task, tell the caller which session the answer will come back to — and,
57
+ * when this process minted it, that keeping it alive is now the caller's problem.
58
+ *
59
+ * This is the one piece of state a one-shot CLI cannot manage for the user. `ask submit --to` binds
60
+ * the Caller mailbox to a session (§S1); the process then exits, and unless the NEXT invocation
61
+ * presents the same session id, the lease lapses and the answer has nowhere to land. Printing the
62
+ * `export` line is what makes "two concurrent sessions address each other with zero human setup"
63
+ * actually achievable from a shell — silence here would leave a correct submit quietly undeliverable.
64
+ */
65
+ export declare function printCallerSession(ctx: CommandContext, scope: {
66
+ id: string;
67
+ owned: boolean;
68
+ } | undefined): void;
51
69
  /** Print a composed envelope under `--dry-run`: human → pretty JSON; `--json` → the uniform
52
70
  * envelope wrapping it (`{ dry_run: true, envelope }`). Posts nothing. */
53
71
  export declare function printDryRunEnvelope(ctx: CommandContext, command: string, envelope: unknown): void;
@@ -46,6 +46,16 @@ export function positiveInt(raw, flag, detail = "a positive integer", ceiling =
46
46
  }
47
47
  return n;
48
48
  }
49
+ /** Like `positiveInt` but ALLOWS 0 — for a pagination `--offset` that can page back to the start (0
50
+ * is the first window, not an error). A NaN / fractional / negative / over-`ceiling` value is a
51
+ * usage error (exit 2). `ceiling` defaults to the timer range; pass a smaller cap for a count flag. */
52
+ export function nonNegativeInt(raw, flag, detail = "a non-negative integer", ceiling = MAX_TIMER_MS) {
53
+ const n = raw !== undefined ? Number(raw) : NaN;
54
+ if (!Number.isInteger(n) || n < 0 || n > ceiling) {
55
+ throw new CliError("usage", `${flag} must be ${detail} (at most ${ceiling}).`);
56
+ }
57
+ return n;
58
+ }
49
59
  /** Coerce a `parseArgs` value (string | boolean | string[] | undefined under strict:false) to a
50
60
  * plain string, or undefined. A repeated single-value flag arrives as an array — take the last. */
51
61
  export function stringFlag(value) {
@@ -112,16 +122,73 @@ export function resolveRunId() {
112
122
  /** Print the common human-readable submit acknowledgement (headline + id + status, plus the
113
123
  * poll URL when relevant and a review URL when the Hub returned one). Commands append their own
114
124
  * next-step hint after calling this. Never prints the token (§5.4). */
115
- export function printSubmitAck(ctx, headline, ack, includePoll = false) {
125
+ export function printSubmitAck(ctx, headline, ack, includePoll = false, addressed = false) {
116
126
  // ack fields are Hub-supplied — sanitize before echoing to the terminal (§5.4 posture).
117
127
  ctx.io.log(`✅ ${headline}`);
118
128
  ctx.io.log(` id: ${sanitizeForTerminal(ack.id)}`);
119
- ctx.io.log(` status: ${sanitizeForTerminal(ack.status)}`);
129
+ ctx.io.log(` status: ${sanitizeForTerminal(ack.status)}${statusGloss(ack.status)}`);
130
+ if (addressed && ack.destination !== undefined)
131
+ ctx.io.log(` dest: ${describeDestination(ack.destination)}`);
120
132
  if (includePoll && ack.poll_url)
121
133
  ctx.io.log(` poll_url: ${sanitizeForTerminal(ack.poll_url)}`);
122
134
  if (ack.review_url)
123
135
  ctx.io.log(` review_url: ${sanitizeForTerminal(ack.review_url)}`);
124
136
  }
137
+ /** A short parenthetical on the ack status, for the states whose plain name would mislead. The
138
+ * v0.5 honesty rules exist because `delivered` at accept time was a false belief — so `queued`,
139
+ * the state that replaced it for an addressed notify, must not be read as "arrived" either. */
140
+ function statusGloss(status) {
141
+ if (status === "queued")
142
+ return " (accepted into the addressee's mailbox — NOT yet delivered)";
143
+ if (status === "bounced")
144
+ return " (the destination went terminal before it was consumed)";
145
+ if (status === "acknowledged")
146
+ return " (the addressee consumed it)";
147
+ return "";
148
+ }
149
+ /**
150
+ * Render the §8.1 `destination` reachability snapshot for an ADDRESSED submit, honestly.
151
+ *
152
+ * Two distinct things must not be blurred together:
153
+ * - `unknown` — the Hub has no per-destination visibility to offer. It is a statement about the
154
+ * HUB, not about the addressee, and it is emphatically not "offline". Never claim liveness here.
155
+ * - `online` / `offline` — a real §15 reachability read, rendered with `last_seen` when present.
156
+ *
157
+ * An ABSENT snapshot never reaches here: §8.1 requires one on every addressed ack, so `submitEnvelope`
158
+ * treats its absence as proof the Hub ignored the address and REFUSES the submit rather than letting
159
+ * a misroute exit 0. This function therefore only ever describes a snapshot that exists.
160
+ */
161
+ function describeDestination(destination) {
162
+ const seen = destination.last_seen !== undefined ? `, last seen ${sanitizeForTerminal(destination.last_seen)}` : "";
163
+ const state = sanitizeForTerminal(destination.state);
164
+ if (state === "unknown")
165
+ return "reachability unknown — this Hub does not report it; queued durably";
166
+ if (state === "offline")
167
+ return `offline${seen} — queued durably until it drains`;
168
+ if (state === "online")
169
+ return `online${seen}`;
170
+ return `${state}${seen}`;
171
+ }
172
+ /**
173
+ * After an ADDRESSED ask/task, tell the caller which session the answer will come back to — and,
174
+ * when this process minted it, that keeping it alive is now the caller's problem.
175
+ *
176
+ * This is the one piece of state a one-shot CLI cannot manage for the user. `ask submit --to` binds
177
+ * the Caller mailbox to a session (§S1); the process then exits, and unless the NEXT invocation
178
+ * presents the same session id, the lease lapses and the answer has nowhere to land. Printing the
179
+ * `export` line is what makes "two concurrent sessions address each other with zero human setup"
180
+ * actually achievable from a shell — silence here would leave a correct submit quietly undeliverable.
181
+ */
182
+ export function printCallerSession(ctx, scope) {
183
+ if (scope === undefined)
184
+ return;
185
+ ctx.io.log(` session: ${sanitizeForTerminal(scope.id)} (the answer routes back here)`);
186
+ if (scope.owned) {
187
+ ctx.io.err(`note: session ${scope.id} was registered for this send and is left OPEN so the reply can reach it. ` +
188
+ `Reuse it with 'export MA2H_SESSION_ID=${scope.id}' (which also renews its lease), or end it with ` +
189
+ `'oh-hai session close --id ${scope.id}'.`);
190
+ }
191
+ }
125
192
  /** Print a composed envelope under `--dry-run`: human → pretty JSON; `--json` → the uniform
126
193
  * envelope wrapping it (`{ dry_run: true, envelope }`). Posts nothing. */
127
194
  export function printDryRunEnvelope(ctx, command, envelope) {
@@ -1 +1 @@
1
- {"version":3,"file":"shared.js","sourceRoot":"","sources":["../../../src/commands/messaging/shared.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"shared.js","sourceRoot":"","sources":["../../../src/commands/messaging/shared.ts"],"names":[],"mappings":"AAAA,uFAAuF;AACvF,qFAAqF;AACrF,yFAAyF;AAEzF,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAIzE;;;;4DAI4D;AAC5D,MAAM,UAAU,mBAAmB,CAAC,GAAmB;IACrD,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,GAAG,CAAC,MAAM,CAAC,OAAO,KAAK,gBAAgB;QAAE,KAAK,CAAC,IAAI,CAAC,cAAc,GAAG,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;IAC5F,IAAI,GAAG,CAAC,MAAM,CAAC,OAAO,KAAK,SAAS;QAAE,KAAK,CAAC,IAAI,CAAC,aAAa,GAAG,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;IACpF,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AACvD,CAAC;AAED;;;;wDAIwD;AACxD,MAAM,UAAU,mBAAmB,CAAC,KAAa;IAC/C,IAAI,GAAG,GAAG,EAAE,CAAC;IACb,KAAK,MAAM,EAAE,IAAI,KAAK,EAAE,CAAC;QACvB,MAAM,IAAI,GAAG,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACpC,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,KAAK,IAAI,IAAI,CAAC,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,CAAC;YAAE,GAAG,IAAI,EAAE,CAAC;IACjF,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED;oGACoG;AACpG,MAAM,CAAC,MAAM,YAAY,GAAG,aAAa,CAAC;AAE1C;;;;sBAIsB;AACtB,MAAM,UAAU,WAAW,CAAC,GAAuB,EAAE,IAAY,EAAE,MAAM,GAAG,oBAAoB,EAAE,OAAO,GAAG,YAAY;IACtH,MAAM,CAAC,GAAG,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;IAChD,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,OAAO,EAAE,CAAC;QAClD,MAAM,IAAI,QAAQ,CAAC,OAAO,EAAE,GAAG,IAAI,YAAY,MAAM,aAAa,OAAO,IAAI,CAAC,CAAC;IACjF,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAED;;wGAEwG;AACxG,MAAM,UAAU,cAAc,CAAC,GAAuB,EAAE,IAAY,EAAE,MAAM,GAAG,wBAAwB,EAAE,OAAO,GAAG,YAAY;IAC7H,MAAM,CAAC,GAAG,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;IAChD,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,OAAO,EAAE,CAAC;QACjD,MAAM,IAAI,QAAQ,CAAC,OAAO,EAAE,GAAG,IAAI,YAAY,MAAM,aAAa,OAAO,IAAI,CAAC,CAAC;IACjF,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAED;oGACoG;AACpG,MAAM,UAAU,UAAU,CAAC,KAAc;IACvC,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC5C,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACrC,OAAO,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;IACrD,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;8BAI8B;AAC9B,MAAM,UAAU,cAAc,CAAC,KAAc,EAAE,IAAY;IACzD,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IACtC,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAChC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IAC1G,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QACrC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,MAAM,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,IAAI;YAAE,OAAO,IAAI,CAAC;QACpF,IAAI,CAAC,KAAK,OAAO,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,KAAK;YAAE,OAAO,KAAK,CAAC;IAC5E,CAAC;IACD,MAAM,IAAI,QAAQ,CAAC,OAAO,EAAE,GAAG,IAAI,8BAA8B,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,SAAS,IAAI,OAAO,IAAI,cAAc,CAAC,CAAC;AAChI,CAAC;AAED;kDACkD;AAClD,MAAM,UAAU,UAAU,CAAC,KAAc;IACvC,OAAO,cAAc,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;AAC5C,CAAC;AAED;;oGAEoG;AACpG,MAAM,UAAU,eAAe,CAAC,KAA8B,EAAE,IAAY;IAC1E,MAAM,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;IAClC,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QACvC,MAAM,IAAI,QAAQ,CAAC,OAAO,EAAE,KAAK,IAAI,sFAAsF,CAAC,CAAC;IAC/H,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAED;;wFAEwF;AACxF,MAAM,UAAU,oBAAoB,CAClC,MAA+B,EAC/B,IAAuB,EACvB,OAAe;IAEf,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC;IAC5D,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrD,MAAM,IAAI,QAAQ,CAAC,OAAO,EAAE,GAAG,IAAI,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,mBAAmB,OAAO,IAAI,CAAC,CAAC;IAC1G,CAAC;AACH,CAAC;AAED;gFACgF;AAChF,MAAM,UAAU,YAAY;IAC1B,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,IAAI,EAAE,CAAC;IAClD,OAAO,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,UAAU,EAAE,EAAE,CAAC;AACvE,CAAC;AAED;;wEAEwE;AACxE,MAAM,UAAU,cAAc,CAC5B,GAAmB,EACnB,QAAgB,EAChB,GAAc,EACd,WAAW,GAAG,KAAK,EACnB,SAAS,GAAG,KAAK;IAEjB,wFAAwF;IACxF,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,QAAQ,EAAE,CAAC,CAAC;IAC5B,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,kBAAkB,mBAAmB,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAC5D,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,kBAAkB,mBAAmB,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAC1F,IAAI,SAAS,IAAI,GAAG,CAAC,WAAW,KAAK,SAAS;QAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,kBAAkB,mBAAmB,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;IACrH,IAAI,WAAW,IAAI,GAAG,CAAC,QAAQ;QAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,kBAAkB,mBAAmB,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IACnG,IAAI,GAAG,CAAC,UAAU;QAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,kBAAkB,mBAAmB,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;AAC1F,CAAC;AAED;;gGAEgG;AAChG,SAAS,WAAW,CAAC,MAA2B;IAC9C,IAAI,MAAM,KAAK,QAAQ;QAAE,OAAO,8DAA8D,CAAC;IAC/F,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,yDAAyD,CAAC;IAC3F,IAAI,MAAM,KAAK,cAAc;QAAE,OAAO,8BAA8B,CAAC;IACrE,OAAO,EAAE,CAAC;AACZ,CAAC;AAED;;;;;;;;;;;GAWG;AACH,SAAS,mBAAmB,CAAC,WAAkD;IAC7E,MAAM,IAAI,GAAG,WAAW,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,eAAe,mBAAmB,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IACpH,MAAM,KAAK,GAAG,mBAAmB,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;IACrD,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,oEAAoE,CAAC;IACrG,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,UAAU,IAAI,mCAAmC,CAAC;IAClF,IAAI,KAAK,KAAK,QAAQ;QAAE,OAAO,SAAS,IAAI,EAAE,CAAC;IAC/C,OAAO,GAAG,KAAK,GAAG,IAAI,EAAE,CAAC;AAC3B,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,kBAAkB,CAAC,GAAmB,EAAE,KAAiD;IACvG,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO;IAChC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,kBAAkB,mBAAmB,CAAC,KAAK,CAAC,EAAE,CAAC,gCAAgC,CAAC,CAAC;IAC5F,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;QAChB,GAAG,CAAC,EAAE,CAAC,GAAG,CACR,iBAAiB,KAAK,CAAC,EAAE,4EAA4E;YACnG,yCAAyC,KAAK,CAAC,EAAE,kDAAkD;YACnG,8BAA8B,KAAK,CAAC,EAAE,IAAI,CAC7C,CAAC;IACJ,CAAC;AACH,CAAC;AAED;2EAC2E;AAC3E,MAAM,UAAU,mBAAmB,CAAC,GAAmB,EAAE,OAAe,EAAE,QAAiB;IACzF,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC;QACb,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,iBAAiB,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAmC,EAAE,CAAC,CAAC,CAAC,CAAC;IACpH,CAAC;SAAM,CAAC;QACN,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAChD,CAAC;AACH,CAAC"}
@@ -1,14 +1,39 @@
1
- import type { Actor, AskMessage, Priority, RequestMode, ResponseOption, TaskMessage } from "./wire.js";
1
+ import type { Actor, AgentAddress, AskMessage, Priority, RequestMode, ResponseOption, Status, TaskMessage } from "./wire.js";
2
2
  export declare const PRIORITIES: readonly Priority[];
3
3
  export declare const REQUEST_MODES: readonly RequestMode[];
4
4
  export declare const CALLBACK_MODES: readonly ["pull", "push"];
5
5
  export type CallbackMode = (typeof CALLBACK_MODES)[number];
6
+ /** Lifecycle statuses, the union across all three message types — the values the self-list route
7
+ * (`messages list`) accepts as its `--status` filter. Two tracks live here: the §7 RESOLUTION
8
+ * track (`open` → a resolution) and, on an ADDRESSED message only, the v0.5 §14.2 DELIVERY track
9
+ * (`queued` → `acknowledged` / `bounced` / `expired`). Kept in lockstep with the server's own
10
+ * `STATUSES` set in routes/messages.ts — the agent self-list includes addressed submissions, so a
11
+ * narrower mirror here would reject a filter on a state the caller can plainly see in that list. */
12
+ export declare const STATUSES: readonly Status[];
13
+ /** MA2H message types — the values `messages list` accepts as its `--type` filter. */
14
+ export declare const MESSAGE_TYPES: readonly ["notify", "ask", "task"];
15
+ export type MessageType = (typeof MESSAGE_TYPES)[number];
6
16
  export declare function isPriority(value: string): value is Priority;
17
+ export declare function isStatus(value: string): value is Status;
18
+ export declare function isMessageType(value: string): value is MessageType;
7
19
  export declare function isRequestMode(value: string): value is RequestMode;
8
20
  export declare function isCallbackMode(value: string): value is CallbackMode;
9
21
  /** Hub-attested resolver identity `<type>:<id>` with type ∈ {human,agent,system} (spec §9.1).
10
22
  * Anchored end-to-end (no embedded whitespace) so a malformed `--resolver` fails loudly here. */
11
23
  export declare function isActor(value: string): value is Actor;
24
+ /** Parse and validate a `--to` destination. Returns the address plus its session segment (when
25
+ * session-addressed) so callers can render the two halves separately. Throws a usage CliError on
26
+ * anything the §4 grammar cannot express — notably `human:<id>` (invalid as a destination in 0.5,
27
+ * the human inbox is what an ABSENT `to` means) and a `#`-bearing agent id (inexpressible: its
28
+ * first `#` parses as the separator and the remainder must then match `^sess_`). */
29
+ export declare function parseDestination(raw: string): {
30
+ address: AgentAddress;
31
+ agentId: string;
32
+ session?: string;
33
+ };
34
+ /** Validate an explicitly-supplied session id (`--session` / `MA2H_SESSION_ID`). A blank or
35
+ * non-`sess_` value is a usage error rather than a confusing Hub 404/422 later. */
36
+ export declare function assertSessionId(raw: string, source: string): string;
12
37
  /** Normalize a push `--callback-url` to the canonical WHATWG href the Hub signs and `fetch` POSTs
13
38
  * to (so the signed callback_url can't desync from the delivery URL), and enforce http(s) — the
14
39
  * Hub's SSRF delivery guard rejects every other scheme, so a mailto:/file: url would pass
@@ -36,6 +61,13 @@ export declare function assertAskEnvelope(value: unknown): AskMessage;
36
61
  /** Validate a parsed value is a well-formed task envelope before replaying it (spec §4.8),
37
62
  * including an opt-in callback's shape (push needs a valid http(s) url; else pull). */
38
63
  export declare function assertTaskEnvelope(value: unknown): TaskMessage;
64
+ /** A captured envelope's `to`, validated against the §4 grammar. Replay is verbatim, so the address
65
+ * is whatever was captured — but a malformed one would be refused by the Hub anyway, and failing
66
+ * locally keeps replay consistent with the other `assert*Envelope` guards. Returns undefined when
67
+ * the envelope is unaddressed (the ordinary human-inbox replay). */
68
+ export declare function replayDestination(envelope: {
69
+ to?: unknown;
70
+ }): string | undefined;
39
71
  /** Extract `allowed_resolvers` from a replayed ask/task envelope (they live at `request.` for
40
72
  * ask, `action.` for task) — used by the human-resolver replay guard. */
41
73
  export declare function replayResolvers(envelope: AskMessage | TaskMessage): readonly unknown[] | undefined;
@@ -10,9 +10,36 @@ import { isHttpUrl } from "../../url.js";
10
10
  export const PRIORITIES = ["low", "normal", "high", "urgent"];
11
11
  export const REQUEST_MODES = ["select", "input", "confirm"];
12
12
  export const CALLBACK_MODES = ["pull", "push"];
13
+ /** Lifecycle statuses, the union across all three message types — the values the self-list route
14
+ * (`messages list`) accepts as its `--status` filter. Two tracks live here: the §7 RESOLUTION
15
+ * track (`open` → a resolution) and, on an ADDRESSED message only, the v0.5 §14.2 DELIVERY track
16
+ * (`queued` → `acknowledged` / `bounced` / `expired`). Kept in lockstep with the server's own
17
+ * `STATUSES` set in routes/messages.ts — the agent self-list includes addressed submissions, so a
18
+ * narrower mirror here would reject a filter on a state the caller can plainly see in that list. */
19
+ export const STATUSES = [
20
+ "open",
21
+ "delivered",
22
+ "queued",
23
+ "acknowledged",
24
+ "bounced",
25
+ "answered",
26
+ "declined",
27
+ "cancelled",
28
+ "expired",
29
+ "completed",
30
+ "dismissed",
31
+ ];
32
+ /** MA2H message types — the values `messages list` accepts as its `--type` filter. */
33
+ export const MESSAGE_TYPES = ["notify", "ask", "task"];
13
34
  export function isPriority(value) {
14
35
  return PRIORITIES.includes(value);
15
36
  }
37
+ export function isStatus(value) {
38
+ return STATUSES.includes(value);
39
+ }
40
+ export function isMessageType(value) {
41
+ return MESSAGE_TYPES.includes(value);
42
+ }
16
43
  export function isRequestMode(value) {
17
44
  return REQUEST_MODES.includes(value);
18
45
  }
@@ -24,6 +51,45 @@ export function isCallbackMode(value) {
24
51
  export function isActor(value) {
25
52
  return /^(human|agent|system):[^\s]+$/.test(value);
26
53
  }
54
+ /** The §4 destination-address grammar (v0.5), mirroring `to`'s pattern in the v0.5 message schema
55
+ * byte-for-byte: `agent:<id>` or `agent:<id>#<sess_…>`, where the FIRST `#` is the separator and
56
+ * the id segment may not contain one. Mirrored locally so a typo'd `--to` is a usage error (exit 2)
57
+ * before any credential or Hub call — the same loud-fail discipline `--resolver` follows. */
58
+ const AGENT_ADDRESS = /^agent:[^\s#]+(#sess_[^\s#]+)?$/;
59
+ /** Hub-minted session ids are `sess_`-prefixed (spec §16.1). Used to reject a `--session` that
60
+ * could never name a real session before it reaches the wire. */
61
+ const SESSION_ID = /^sess_[^\s#]+$/;
62
+ /** Parse and validate a `--to` destination. Returns the address plus its session segment (when
63
+ * session-addressed) so callers can render the two halves separately. Throws a usage CliError on
64
+ * anything the §4 grammar cannot express — notably `human:<id>` (invalid as a destination in 0.5,
65
+ * the human inbox is what an ABSENT `to` means) and a `#`-bearing agent id (inexpressible: its
66
+ * first `#` parses as the separator and the remainder must then match `^sess_`). */
67
+ export function parseDestination(raw) {
68
+ const value = raw.trim();
69
+ if (!AGENT_ADDRESS.test(value)) {
70
+ const hint = value.startsWith("human:")
71
+ ? ' — a destination is always an agent; omit --to entirely to reach the human inbox'
72
+ : ' (expected "agent:<id>" or "agent:<id>#sess_<session>")';
73
+ throw new CliError("usage", `invalid --to ${JSON.stringify(raw)}${hint}.`);
74
+ }
75
+ const hash = value.indexOf("#");
76
+ const principal = hash < 0 ? value : value.slice(0, hash);
77
+ const session = hash < 0 ? undefined : value.slice(hash + 1);
78
+ return {
79
+ address: value,
80
+ agentId: principal.slice("agent:".length),
81
+ ...(session !== undefined ? { session } : {}),
82
+ };
83
+ }
84
+ /** Validate an explicitly-supplied session id (`--session` / `MA2H_SESSION_ID`). A blank or
85
+ * non-`sess_` value is a usage error rather than a confusing Hub 404/422 later. */
86
+ export function assertSessionId(raw, source) {
87
+ const value = raw.trim();
88
+ if (!SESSION_ID.test(value)) {
89
+ throw new CliError("usage", `invalid ${source} ${JSON.stringify(raw)} — a session id is Hub-minted and starts with "sess_".`);
90
+ }
91
+ return value;
92
+ }
27
93
  /** Normalize a push `--callback-url` to the canonical WHATWG href the Hub signs and `fetch` POSTs
28
94
  * to (so the signed callback_url can't desync from the delivery URL), and enforce http(s) — the
29
95
  * Hub's SSRF delivery guard rejects every other scheme, so a mailto:/file: url would pass
@@ -168,6 +234,18 @@ export function assertTaskEnvelope(value) {
168
234
  }
169
235
  return value;
170
236
  }
237
+ /** A captured envelope's `to`, validated against the §4 grammar. Replay is verbatim, so the address
238
+ * is whatever was captured — but a malformed one would be refused by the Hub anyway, and failing
239
+ * locally keeps replay consistent with the other `assert*Envelope` guards. Returns undefined when
240
+ * the envelope is unaddressed (the ordinary human-inbox replay). */
241
+ export function replayDestination(envelope) {
242
+ if (envelope.to === undefined)
243
+ return undefined;
244
+ if (typeof envelope.to !== "string") {
245
+ throw new CliError("usage", "--envelope `to` must be a string destination address.");
246
+ }
247
+ return parseDestination(envelope.to).address;
248
+ }
171
249
  /** Extract `allowed_resolvers` from a replayed ask/task envelope (they live at `request.` for
172
250
  * ask, `action.` for task) — used by the human-resolver replay guard. */
173
251
  export function replayResolvers(envelope) {
@@ -1 +1 @@
1
- {"version":3,"file":"validate.js","sourceRoot":"","sources":["../../../src/commands/messaging/validate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"validate.js","sourceRoot":"","sources":["../../../src/commands/messaging/validate.ts"],"names":[],"mappings":"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"}