@oh-hai/cli 0.3.1 → 0.4.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.
- package/CHANGELOG.md +52 -0
- package/README.md +17 -10
- package/dist/commands/ask.js +8 -4
- package/dist/commands/ask.js.map +1 -1
- package/dist/commands/bridge.js +1 -1
- package/dist/commands/bridge.js.map +1 -1
- package/dist/commands/messaging/build.d.ts +5 -4
- package/dist/commands/messaging/build.js +52 -47
- package/dist/commands/messaging/build.js.map +1 -1
- package/dist/commands/messaging/capability.d.ts +39 -1
- package/dist/commands/messaging/capability.js.map +1 -1
- package/dist/commands/messaging/http.d.ts +29 -9
- package/dist/commands/messaging/http.js +159 -191
- package/dist/commands/messaging/http.js.map +1 -1
- package/dist/commands/messaging/inbox-entries.d.ts +13 -6
- package/dist/commands/messaging/inbox-entries.js +99 -119
- package/dist/commands/messaging/inbox-entries.js.map +1 -1
- package/dist/commands/messaging/inbox-stream.d.ts +2 -1
- package/dist/commands/messaging/inbox-stream.js.map +1 -1
- package/dist/commands/messaging/session-drain.d.ts +11 -1
- package/dist/commands/messaging/session-drain.js +28 -10
- package/dist/commands/messaging/session-drain.js.map +1 -1
- package/dist/commands/messaging/validate.d.ts +37 -9
- package/dist/commands/messaging/validate.js +49 -19
- package/dist/commands/messaging/validate.js.map +1 -1
- package/dist/commands/messaging/wire.d.ts +22 -307
- package/dist/commands/messaging/wire.js +10 -13
- package/dist/commands/messaging/wire.js.map +1 -1
- package/dist/commands/notify.js +5 -4
- package/dist/commands/notify.js.map +1 -1
- package/dist/commands/registry.js +6 -4
- package/dist/commands/registry.js.map +1 -1
- package/dist/commands/self-test.js +27 -22
- package/dist/commands/self-test.js.map +1 -1
- package/dist/commands/task.js +8 -4
- package/dist/commands/task.js.map +1 -1
- package/dist/version.d.ts +16 -2
- package/dist/version.js +17 -2
- package/dist/version.js.map +1 -1
- package/package.json +2 -2
|
@@ -57,20 +57,27 @@ export declare class ReplayGuard {
|
|
|
57
57
|
* permanently suppressed by a reservation that bought nothing. */
|
|
58
58
|
release(ackKey: string): void;
|
|
59
59
|
}
|
|
60
|
-
/** The §8.7.1 ack key per kind
|
|
61
|
-
* `
|
|
62
|
-
*
|
|
63
|
-
export declare
|
|
60
|
+
/** The §8.7.1 ack key per kind — the layer's rule (`ackKeyOf`, client subpath): a directive/message
|
|
61
|
+
* `id`, a response's `resolution_id` (the id of the Response being acknowledged, NOT the message
|
|
62
|
+
* id), a receipt's `id`. Re-exported under the CLI's historical name. */
|
|
63
|
+
export declare const ackKeyOf: (entry: InboxEntryDelivery) => string;
|
|
64
|
+
/** The kind of one delivery — a local one-line dispatch over the layer's `ENTRY_KINDS` taxonomy
|
|
65
|
+
* (defined-value dispatch, matching `ackKeyOf`/`validateDrainBatch`'s rule). */
|
|
64
66
|
export declare function entryKindOf(entry: InboxEntryDelivery): InboxEntryKind;
|
|
65
67
|
/**
|
|
66
68
|
* Structural guard for one §8.7.1 delivery, run at the DRAIN/STREAM boundary before anything else
|
|
67
69
|
* touches it. Fails the whole batch (a `server` error) rather than skipping the bad element: a
|
|
68
70
|
* malformed body is a Hub/proxy contract violation, and silently dropping an element would strand
|
|
69
|
-
* real mail while reporting success.
|
|
71
|
+
* real mail while reporting success. Dispatches over the layer's `ENTRY_KINDS` — the one taxonomy.
|
|
70
72
|
*/
|
|
71
73
|
export declare function isInboxEntryDelivery(value: unknown): value is InboxEntryDelivery;
|
|
72
74
|
/**
|
|
73
|
-
* Run the §13.4 duties for one entry,
|
|
75
|
+
* Run the §13.4 duties for one entry, IN ORDER, and return the verdict.
|
|
76
|
+
*
|
|
77
|
+
* The order is the safety property and stays product code (KTD4 — the layer's helpers are
|
|
78
|
+
* deliberately order-agnostic): parse the signature header → freshness window → jti replay →
|
|
79
|
+
* shape + known-fields → addressee (principal AND session qualifier) → declared sender policy →
|
|
80
|
+
* dedup-reserve. Pinned by test; do not reorder.
|
|
74
81
|
*
|
|
75
82
|
* Throws (fatal, exit 12) on the verification classes; returns `refuse` for the addressee/policy
|
|
76
83
|
* classes. On `accept` the ack key has ALREADY been reserved in `guard` — the caller must emit and
|
|
@@ -1,36 +1,37 @@
|
|
|
1
1
|
// The §13.4 consuming-agent duties, applied to one drained/streamed §8.7.1 entry BEFORE the bridge
|
|
2
|
-
// prints a byte of it (issue #658)
|
|
2
|
+
// prints a byte of it (issue #658) — since #726 an ADAPTER over the vendored layer's KEYLESS
|
|
3
|
+
// primitives (KTD4).
|
|
3
4
|
//
|
|
4
|
-
//
|
|
5
|
-
//
|
|
6
|
-
//
|
|
7
|
-
//
|
|
8
|
-
//
|
|
9
|
-
//
|
|
5
|
+
// WHICH LAYER OWNS WHAT. Each duty's RULE comes from `@oh-hai/ma2h-core`: the signature-header
|
|
6
|
+
// grammar (`parseSignatureHeader`, client subpath), the MAC well-formedness rule (`isWellFormedMac`,
|
|
7
|
+
// signing — next to the signer, #711), the entry-kind taxonomy (`ENTRY_KINDS`), the per-kind
|
|
8
|
+
// keep-field vocabulary and its refuse-side comparison (`validateKnownFields`), the §4 address
|
|
9
|
+
// grammar (`splitAddress`), and the per-kind ack keys (`ackKeyOf`). The upstream keyless helpers are
|
|
10
|
+
// deliberately duty-ORDER-agnostic (each documents which prior duties it assumes already ran), so
|
|
11
|
+
// the §13.4 SEQUENCING below — parse → freshness/replay → shape/known-fields → addressee → policy →
|
|
12
|
+
// dedup-reserve — remains product code following the layer's documented order convention, pinned by
|
|
13
|
+
// test. The keyed `Agent` embodiment is deliberately NOT used here: oh-hai's product rule (#719) is
|
|
14
|
+
// that raw signature material never gets a client-side key, so MAC recomputation is impossible on
|
|
15
|
+
// this surface and only well-formedness is checked.
|
|
10
16
|
//
|
|
11
17
|
// WHAT THE CLI CAN AND CANNOT VERIFY — stated plainly, because the gap is a real one.
|
|
12
18
|
//
|
|
13
19
|
// The §9.7/§9.8 `v1=` MAC is keyed with the HUB's signing key. An agent bearer does not hold it, so
|
|
14
20
|
// no CLI process can recompute it; verifying the MAC is the runtime's job, which is why the bridge
|
|
15
21
|
// forwards `{ <kind>, signature }` BYTE-VERBATIM (mutating the entry — even to prettify it — would
|
|
16
|
-
// break the very signature a defense-in-depth runtime verifies).
|
|
17
|
-
//
|
|
22
|
+
// break the very signature a defense-in-depth runtime verifies). Byte-verbatim forwarding is also
|
|
23
|
+
// why this surface uses the layer's REFUSE-side field rule (`validateKnownFields`) and never its
|
|
24
|
+
// sanitizers: stripping an unknown field would rewrite the signed bytes, so an unknown, unsigned
|
|
25
|
+
// field must make the entry REFUSED instead.
|
|
18
26
|
//
|
|
19
|
-
//
|
|
20
|
-
//
|
|
21
|
-
//
|
|
22
|
-
//
|
|
23
|
-
//
|
|
24
|
-
|
|
25
|
-
// can append a forbidden `request`/`action`/`state` WITHOUT breaking the signature;
|
|
26
|
-
// * `to` names this agent, and — the v0.5 amendment — when session-qualified, THIS session.
|
|
27
|
-
//
|
|
28
|
-
// FATAL vs. REFUSAL, matching reference/src/agent.ts `runBridgeLoop`. A signature/replay/shape
|
|
29
|
-
// failure is FATAL (exit 12): an entry in the bridge's own mailbox that does not verify means
|
|
30
|
-
// tampering or a broken Hub, never something to skip past. An addressee or policy failure is a
|
|
31
|
-
// REFUSAL: the entry is never emitted and never acked, so it stays queued and the Hub redelivers —
|
|
32
|
-
// which is the honest outcome for mail this bridge is not entitled to consume.
|
|
27
|
+
// FATAL vs. REFUSAL, matching the reference loop. A signature/replay/shape failure is FATAL
|
|
28
|
+
// (exit 12): an entry in the bridge's own mailbox that does not verify means tampering or a broken
|
|
29
|
+
// Hub, never something to skip past. An addressee or policy failure is a REFUSAL: the entry is
|
|
30
|
+
// never emitted and never acked, so it stays queued and the Hub redelivers — which is the honest
|
|
31
|
+
// outcome for mail this bridge is not entitled to consume.
|
|
32
|
+
import { ackKeyOf as coreAckKeyOf, parseSignatureHeader } from "@oh-hai/ma2h-core/client";
|
|
33
33
|
import { isWellFormedMac } from "@oh-hai/ma2h-core/signing";
|
|
34
|
+
import { ENTRY_KINDS, splitAddress, validateKnownFields } from "@oh-hai/ma2h-core/wire";
|
|
34
35
|
import { CliError } from "../../envelope.js";
|
|
35
36
|
/** The §9.7 default freshness window when the Hub advertises no `replay_window_seconds`. Matches the
|
|
36
37
|
* server's own default; a Hub that advertises a different one wins (see `EntryPolicy`). */
|
|
@@ -76,32 +77,20 @@ export class ReplayGuard {
|
|
|
76
77
|
this.#reserved.delete(ackKey);
|
|
77
78
|
}
|
|
78
79
|
}
|
|
79
|
-
/** The §8.7.1 ack key per kind
|
|
80
|
-
* `
|
|
81
|
-
*
|
|
82
|
-
export
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
if ("message" in entry)
|
|
86
|
-
return entry.message.id;
|
|
87
|
-
if ("response" in entry)
|
|
88
|
-
return entry.response.resolution_id;
|
|
89
|
-
return entry.receipt.id;
|
|
90
|
-
}
|
|
80
|
+
/** The §8.7.1 ack key per kind — the layer's rule (`ackKeyOf`, client subpath): a directive/message
|
|
81
|
+
* `id`, a response's `resolution_id` (the id of the Response being acknowledged, NOT the message
|
|
82
|
+
* id), a receipt's `id`. Re-exported under the CLI's historical name. */
|
|
83
|
+
export const ackKeyOf = coreAckKeyOf;
|
|
84
|
+
/** The kind of one delivery — a local one-line dispatch over the layer's `ENTRY_KINDS` taxonomy
|
|
85
|
+
* (defined-value dispatch, matching `ackKeyOf`/`validateDrainBatch`'s rule). */
|
|
91
86
|
export function entryKindOf(entry) {
|
|
92
|
-
|
|
93
|
-
return "directive";
|
|
94
|
-
if ("message" in entry)
|
|
95
|
-
return "message";
|
|
96
|
-
if ("response" in entry)
|
|
97
|
-
return "response";
|
|
98
|
-
return "receipt";
|
|
87
|
+
return ENTRY_KINDS.find((kind) => entry[kind] !== undefined) ?? "receipt";
|
|
99
88
|
}
|
|
100
89
|
/**
|
|
101
90
|
* Structural guard for one §8.7.1 delivery, run at the DRAIN/STREAM boundary before anything else
|
|
102
91
|
* touches it. Fails the whole batch (a `server` error) rather than skipping the bad element: a
|
|
103
92
|
* malformed body is a Hub/proxy contract violation, and silently dropping an element would strand
|
|
104
|
-
* real mail while reporting success.
|
|
93
|
+
* real mail while reporting success. Dispatches over the layer's `ENTRY_KINDS` — the one taxonomy.
|
|
105
94
|
*/
|
|
106
95
|
export function isInboxEntryDelivery(value) {
|
|
107
96
|
if (value === null || typeof value !== "object" || Array.isArray(value))
|
|
@@ -111,51 +100,57 @@ export function isInboxEntryDelivery(value) {
|
|
|
111
100
|
return false;
|
|
112
101
|
// Exactly ONE kind key. A payload carrying two would be ambiguous about which ack key applies —
|
|
113
102
|
// and about which §9.8 signed context the signature is over.
|
|
114
|
-
const kinds =
|
|
103
|
+
const kinds = ENTRY_KINDS.filter((k) => v[k] !== undefined);
|
|
115
104
|
if (kinds.length !== 1)
|
|
116
105
|
return false;
|
|
117
106
|
const payload = v[kinds[0]];
|
|
118
107
|
return payload !== null && typeof payload === "object" && !Array.isArray(payload);
|
|
119
108
|
}
|
|
120
|
-
/** Parse + range-check the detached signature header (§9.7).
|
|
121
|
-
*
|
|
122
|
-
*
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
109
|
+
/** Parse + range-check the detached signature header (§9.7). The GRAMMAR is the layer's
|
|
110
|
+
* (`parseSignatureHeader` — the same parser the keyed reference agent runs); layered on top are
|
|
111
|
+
* the checks this keyless surface still owes: `t` must be numeric (the freshness input), `v1`
|
|
112
|
+
* must be a well-formed MAC (`isWellFormedMac`, the rule vendored next to the signer — #711:
|
|
113
|
+
* a stripped or mangled signature must never look signed to a runtime downstream, even though no
|
|
114
|
+
* client can recompute its value), and the header must be exactly the three signed segments with
|
|
115
|
+
* no repeats. That last check is deliberately STRICTER than the layer: its parser tolerates junk
|
|
116
|
+
* segments and lets a repeated key's last value win, which a KEYED consumer can afford (the MAC
|
|
117
|
+
* binds `t`, so a forged trailing `t=` fails verification) — but this surface never verifies the
|
|
118
|
+
* MAC, so a replayed entry with an appended fresh `t=` would pass the §9.7 freshness window on the
|
|
119
|
+
* forged value. A conformant Hub emits exactly `t=…,jti=…,v1=…`; anything else is refused as
|
|
120
|
+
* unauthenticated. Returns undefined when any of that fails — the caller turns that into the
|
|
121
|
+
* FATAL class, because an entry whose header cannot even be parsed cannot have been
|
|
122
|
+
* authenticated by anyone. */
|
|
123
|
+
function parseHeader(raw) {
|
|
124
|
+
// Keyless strictness pre-check: exactly three `key=value` segments, one each of t/jti/v1.
|
|
125
|
+
// Keys are TRIMMED first — the layer's parser (and the old local one) accept conventional
|
|
126
|
+
// comma whitespace (`t=…, jti=…, v1=…`), and this check refuses repeats/junk, not formatting.
|
|
127
|
+
const keys = raw.split(",").map((segment) => segment.slice(0, segment.indexOf("=")).trim());
|
|
128
|
+
if (keys.length !== 3 || keys.some((k) => k === "") || new Set(keys).size !== 3)
|
|
129
|
+
return undefined;
|
|
130
|
+
if (!keys.every((k) => k === "t" || k === "jti" || k === "v1"))
|
|
131
|
+
return undefined;
|
|
132
|
+
let parsed;
|
|
133
|
+
try {
|
|
134
|
+
parsed = parseSignatureHeader(raw);
|
|
135
|
+
}
|
|
136
|
+
catch {
|
|
137
|
+
return undefined;
|
|
134
138
|
}
|
|
135
|
-
|
|
136
|
-
const jti = parts.get("jti");
|
|
137
|
-
const v1 = parts.get("v1");
|
|
138
|
-
if (t === undefined || jti === undefined || v1 === undefined)
|
|
139
|
+
if (!/^\d+$/.test(parsed.t))
|
|
139
140
|
return undefined;
|
|
140
|
-
if (
|
|
141
|
+
if (parsed.jti === "")
|
|
141
142
|
return undefined;
|
|
142
|
-
|
|
143
|
-
// empty, outside the base64url alphabet, or too short to be any signature §9.2 defines was never
|
|
144
|
-
// produced by a conformant Hub, and admitting it would let a stripped signature look like a signed
|
|
145
|
-
// one to a runtime downstream.
|
|
146
|
-
//
|
|
147
|
-
// THE RULE LIVES IN `ma2h-core`, NEXT TO THE SIGNER (issue #711). This line previously read
|
|
148
|
-
// `/^[0-9a-fA-F]+$/` — a hand-rolled second implementation that asserted the MAC was HEX, when
|
|
149
|
-
// §9.2/§9.7/§9.8 all specify base64url and our own signer emits base64url. It rejected every
|
|
150
|
-
// entry a conformant Hub signs, as the FATAL class, telling operators to go audit the one
|
|
151
|
-
// component behaving correctly. Importing the rule from the module that produces these bytes is
|
|
152
|
-
// what stops the client and the wire drifting apart a second time.
|
|
153
|
-
if (!isWellFormedMac(v1))
|
|
143
|
+
if (!isWellFormedMac(parsed.v1))
|
|
154
144
|
return undefined;
|
|
155
|
-
return { t: Number(t), jti };
|
|
145
|
+
return { t: Number(parsed.t), jti: parsed.jti };
|
|
156
146
|
}
|
|
157
147
|
/**
|
|
158
|
-
* Run the §13.4 duties for one entry,
|
|
148
|
+
* Run the §13.4 duties for one entry, IN ORDER, and return the verdict.
|
|
149
|
+
*
|
|
150
|
+
* The order is the safety property and stays product code (KTD4 — the layer's helpers are
|
|
151
|
+
* deliberately order-agnostic): parse the signature header → freshness window → jti replay →
|
|
152
|
+
* shape + known-fields → addressee (principal AND session qualifier) → declared sender policy →
|
|
153
|
+
* dedup-reserve. Pinned by test; do not reorder.
|
|
159
154
|
*
|
|
160
155
|
* Throws (fatal, exit 12) on the verification classes; returns `refuse` for the addressee/policy
|
|
161
156
|
* classes. On `accept` the ack key has ALREADY been reserved in `guard` — the caller must emit and
|
|
@@ -164,7 +159,7 @@ function parseSignatureHeader(raw) {
|
|
|
164
159
|
export function verifyEntry(entry, policy, guard, nowMs) {
|
|
165
160
|
const kind = entryKindOf(entry);
|
|
166
161
|
// 1a. The detached signature header — presence, shape, freshness, replay.
|
|
167
|
-
const header =
|
|
162
|
+
const header = parseHeader(entry.signature);
|
|
168
163
|
if (header === undefined) {
|
|
169
164
|
throw signatureFailure(`the ${kind} entry's MA2H-Signature is missing or malformed`);
|
|
170
165
|
}
|
|
@@ -210,22 +205,17 @@ function isNonEmptyString(value) {
|
|
|
210
205
|
return typeof value === "string" && value !== "";
|
|
211
206
|
}
|
|
212
207
|
/**
|
|
213
|
-
* Reject an entry whose payload
|
|
208
|
+
* Reject an entry whose payload is missing a field the loop dereferences, or carries a field its
|
|
209
|
+
* kind must not have.
|
|
214
210
|
*
|
|
215
|
-
* The
|
|
216
|
-
*
|
|
217
|
-
*
|
|
218
|
-
* delivering a `message
|
|
219
|
-
*
|
|
211
|
+
* The FIELD VOCABULARY is the layer's (`validateKnownFields` over the vendored keep-lists, §10/
|
|
212
|
+
* §13.4): §13.4 step 1 names `request`/`action`/`state` as the cross-type injection an unsigned
|
|
213
|
+
* append can perform on a directive, and §8.7.1 says the Hub STRIPS submitter-side machinery
|
|
214
|
+
* (`state`, `client_ref`, callbacks) before delivering a `message` — all of which sit OUTSIDE the
|
|
215
|
+
* per-kind keep-lists, so the one refuse-side comparison covers them and every other unknown field.
|
|
216
|
+
* The required-string minimums stay local: they are the fields this loop itself dereferences (ack
|
|
217
|
+
* key, addressee, human summary), not a re-derived schema.
|
|
220
218
|
*/
|
|
221
|
-
function forbidden(payload, fields, kind) {
|
|
222
|
-
for (const field of fields) {
|
|
223
|
-
if (payload[field] !== undefined) {
|
|
224
|
-
return `the ${kind} entry carries a forbidden \`${field}\` field, which a conformant Hub strips and the signature does not bind (§13.4 step 1)`;
|
|
225
|
-
}
|
|
226
|
-
}
|
|
227
|
-
return undefined;
|
|
228
|
-
}
|
|
229
219
|
function validateShape(entry) {
|
|
230
220
|
if ("directive" in entry) {
|
|
231
221
|
const d = entry.directive;
|
|
@@ -234,7 +224,7 @@ function validateShape(entry) {
|
|
|
234
224
|
if (!isNonEmptyString(d.id) || !isNonEmptyString(d.from) || !isNonEmptyString(d.to) || !isNonEmptyString(d.title)) {
|
|
235
225
|
return "the directive entry is missing one of the required id/from/to/title strings (inbound-message.schema.json)";
|
|
236
226
|
}
|
|
237
|
-
return
|
|
227
|
+
return knownFieldsProblem(d, "directive");
|
|
238
228
|
}
|
|
239
229
|
if ("message" in entry) {
|
|
240
230
|
const m = entry.message;
|
|
@@ -244,11 +234,7 @@ function validateShape(entry) {
|
|
|
244
234
|
if (!isNonEmptyString(m.id) || !isNonEmptyString(m.from) || !isNonEmptyString(m.to) || !isNonEmptyString(m.title)) {
|
|
245
235
|
return "the message entry is missing one of the required id/from/to/title strings (§8.7.1)";
|
|
246
236
|
}
|
|
247
|
-
|
|
248
|
-
if (m.type === "notify" && (m.request !== undefined || m.action !== undefined)) {
|
|
249
|
-
return "the message entry is a notify carrying a request/action, which is cross-type data the signature does not bind (§13.4 step 1)";
|
|
250
|
-
}
|
|
251
|
-
return forbidden(m, ["state", "client_ref"], "message");
|
|
237
|
+
return knownFieldsProblem(m, m.type);
|
|
252
238
|
}
|
|
253
239
|
if ("response" in entry) {
|
|
254
240
|
const r = entry.response;
|
|
@@ -265,26 +251,20 @@ function validateShape(entry) {
|
|
|
265
251
|
}
|
|
266
252
|
return undefined;
|
|
267
253
|
}
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
*
|
|
271
|
-
function
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
const rest = raw.slice("agent:".length);
|
|
275
|
-
if (rest === "")
|
|
254
|
+
/** The refuse half of the strip-unknown-fields duty, verbatim from the layer: an unknown, UNSIGNED
|
|
255
|
+
* field on a byte-verbatim-forwarded entry must refuse the entry, never be stripped or ride along
|
|
256
|
+
* as trusted-looking input (§10/§13.4 step 1 — a conformant Hub never sent it). */
|
|
257
|
+
function knownFieldsProblem(payload, kind) {
|
|
258
|
+
const result = validateKnownFields(payload, kind);
|
|
259
|
+
if (result.valid)
|
|
276
260
|
return undefined;
|
|
277
|
-
|
|
278
|
-
if (hash < 0)
|
|
279
|
-
return { agentId: rest };
|
|
280
|
-
const agentId = rest.slice(0, hash);
|
|
281
|
-
const session = rest.slice(hash + 1);
|
|
282
|
-
if (agentId === "" || session === "")
|
|
283
|
-
return undefined;
|
|
284
|
-
return { agentId, session };
|
|
261
|
+
return `the ${kind === "directive" ? "directive" : "message"} entry carries unsigned data a conformant Hub never delivers — ${result.errors.join("; ")}`;
|
|
285
262
|
}
|
|
263
|
+
// ---- the §13.4 step-2 addressee check ----
|
|
286
264
|
/**
|
|
287
265
|
* §13.4 step 2 plus the v0.5 amendment. Returns a refusal reason, or undefined when `to` is ours.
|
|
266
|
+
* The §4 address grammar is the layer's `splitAddress` (first-`#` split, `sess_`-anchored session
|
|
267
|
+
* fragment) — the same one definition the version-stamp rule and the keyed reference agent read.
|
|
288
268
|
*
|
|
289
269
|
* The signature BINDS `to`, so a valid signature proves the Hub intended a specific addressee — but
|
|
290
270
|
* only the recipient checking `to` against its own identity stops an entry validly signed for
|
|
@@ -312,9 +292,9 @@ function confirmAddressee(entry, policy) {
|
|
|
312
292
|
if (to === undefined)
|
|
313
293
|
return undefined;
|
|
314
294
|
const parsed = splitAddress(to);
|
|
315
|
-
if (parsed ===
|
|
295
|
+
if (parsed === null)
|
|
316
296
|
return `addressed to ${JSON.stringify(to)}, which is not a §4 agent address`;
|
|
317
|
-
if (parsed.
|
|
297
|
+
if (parsed.principal !== policy.agentId) {
|
|
318
298
|
return `addressed to ${JSON.stringify(to)}, which is not this agent (${policy.agentId})`;
|
|
319
299
|
}
|
|
320
300
|
if (parsed.session !== undefined && parsed.session !== policy.sessionId) {
|
|
@@ -352,13 +332,13 @@ function checkDeclaredPolicy(entry, policy) {
|
|
|
352
332
|
if (policy.allowFrom.includes(ALLOW_ANY_IN_ACCOUNT))
|
|
353
333
|
return undefined;
|
|
354
334
|
const from = splitAddress(message.from);
|
|
355
|
-
if (from ===
|
|
335
|
+
if (from === null)
|
|
356
336
|
return `refusing an addressed ${message.type}: \`from\` (${JSON.stringify(message.from)}) is not a §4 agent address`;
|
|
357
337
|
for (const allowed of policy.allowFrom) {
|
|
358
338
|
const a = splitAddress(allowed);
|
|
359
|
-
if (a ===
|
|
339
|
+
if (a === null)
|
|
360
340
|
continue; // rejected at flag-parse time; belt and braces
|
|
361
|
-
if (a.
|
|
341
|
+
if (a.principal !== from.principal)
|
|
362
342
|
continue;
|
|
363
343
|
// A policy entry with no session qualifier admits every session of that principal; one WITH a
|
|
364
344
|
// qualifier admits only that exact session.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inbox-entries.js","sourceRoot":"","sources":["../../../src/commands/messaging/inbox-entries.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"inbox-entries.js","sourceRoot":"","sources":["../../../src/commands/messaging/inbox-entries.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { CommandContext } from "../context.js";
|
|
2
|
-
import type { HubCapability
|
|
2
|
+
import type { HubCapability } from "./capability.js";
|
|
3
|
+
import type { InboxEntryDelivery } from "./wire.js";
|
|
3
4
|
/** What the stream hands its consumer. `reconnect` is always the LAST event of a hold. */
|
|
4
5
|
export type InboxStreamEvent = {
|
|
5
6
|
type: "open";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inbox-stream.js","sourceRoot":"","sources":["../../../src/commands/messaging/inbox-stream.ts"],"names":[],"mappings":"AAAA,yFAAyF;AACzF,EAAE;AACF,kGAAkG;AAClG,yBAAyB;AACzB,EAAE;AACF,qGAAqG;AACrG,kGAAkG;AAClG,oGAAoG;AACpG,oGAAoG;AACpG,kGAAkG;AAClG,qGAAqG;AACrG,kGAAkG;AAClG,2FAA2F;AAC3F,EAAE;AACF,gGAAgG;AAChG,oGAAoG;AACpG,gGAAgG;AAEhG,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE7C,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"inbox-stream.js","sourceRoot":"","sources":["../../../src/commands/messaging/inbox-stream.ts"],"names":[],"mappings":"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"}
|
|
@@ -31,6 +31,13 @@ export declare function isRetryable(error: unknown): boolean;
|
|
|
31
31
|
* `GET /v1/inbox?session=…` — the §8.7.1 session-scoped drain. Renews the lease (§16.2) and returns
|
|
32
32
|
* the signed entries.
|
|
33
33
|
*
|
|
34
|
+
* `opts.probe` opts into the Hub's `?scope=session` PROBE drain (issue #693): claim ONLY entries
|
|
35
|
+
* addressed to this session, provisionally — never the principal's first-claim-wins mail, never a
|
|
36
|
+
* delivery stamp. For DIAGNOSTICS (`doctor --self-test`), not bridges: a bridge that scoped its
|
|
37
|
+
* drain would silently stop consuming the principal's mail, which is why the default is unscoped
|
|
38
|
+
* and the bridge call site passes nothing. A Hub predating the scope ignores the unknown param and
|
|
39
|
+
* runs the full drain — the caller's foreign-entry handling remains the fallback for exactly that.
|
|
40
|
+
*
|
|
34
41
|
* The shape guard rejects the WHOLE batch rather than skipping a bad element, mirroring
|
|
35
42
|
* `drainInbox`: a malformed body is a Hub/proxy contract violation, and silently treating garbage as
|
|
36
43
|
* "no entries" would strand real mail while reporting success. Note it also catches the pre-v0.5
|
|
@@ -38,7 +45,10 @@ export declare function isRetryable(error: unknown): boolean;
|
|
|
38
45
|
* `{ directives: … }`, which has no `messages` array — but the gate is what prevents that drain from
|
|
39
46
|
* being issued at all, because by the time this guard fires the claim has already happened.
|
|
40
47
|
*/
|
|
41
|
-
export declare function drainInboxSession(ctx: CommandContext, token: string, session: string,
|
|
48
|
+
export declare function drainInboxSession(ctx: CommandContext, token: string, session: string, opts?: {
|
|
49
|
+
max?: number | undefined;
|
|
50
|
+
probe?: boolean;
|
|
51
|
+
}): Promise<InboxEntryDelivery[]>;
|
|
42
52
|
/**
|
|
43
53
|
* `POST /v1/inbox/ack?session=…` — consume the handed-off entries (§8.7.1 / §14).
|
|
44
54
|
*
|
|
@@ -12,10 +12,10 @@
|
|
|
12
12
|
// session-presenting request client-originated LEASE RENEWAL, and a session-LESS one renews nothing.
|
|
13
13
|
// During a held stream the ack may be the bridge's only client-originated traffic, so an ack that
|
|
14
14
|
// dropped the parameter would quietly stop renewing the very lease the bridge is keeping alive.
|
|
15
|
+
import { classifyHubError, validateDrainBatch } from "@oh-hai/ma2h-core/wire";
|
|
15
16
|
import { CliError } from "../../envelope.js";
|
|
16
17
|
import { throwTransportError } from "../http.js";
|
|
17
18
|
import { redactToken, requestTimeoutMs, statusToCliError } from "./http.js";
|
|
18
|
-
import { isInboxEntryDelivery } from "./inbox-entries.js";
|
|
19
19
|
/**
|
|
20
20
|
* Map a Hub status on a SESSION-PRESENTING call to the bridge's §7 code.
|
|
21
21
|
*
|
|
@@ -47,9 +47,12 @@ export function sessionStatusToCliError(status, message, hubCode, session) {
|
|
|
47
47
|
}
|
|
48
48
|
// Checked BEFORE the generic terminal arm, and on the Hub's own §8 error code rather than on the
|
|
49
49
|
// message text: the code is the machine contract, and a wording change must never silently turn a
|
|
50
|
-
// stop back into a restart.
|
|
51
|
-
//
|
|
52
|
-
|
|
50
|
+
// stop back into a restart. The READING is the vendored §8.5 classifier at the presentation
|
|
51
|
+
// touchpoint (KTD5): a literal `session_closed_by_operator` classifies `operator-close` and never
|
|
52
|
+
// falls back, while a 410 whose code is absent/unrecognized reads as the own-terminal class and
|
|
53
|
+
// falls through to exit 11 — the pre-#683 behaviour, which is the safe default for a client
|
|
54
|
+
// talking to an older Hub.
|
|
55
|
+
if (status === 410 && classifyHubError({ code: hubCode, status }, "presentation").class === "operator-close") {
|
|
53
56
|
return new CliError("session_closed_by_operator", `the session this bridge presents (${session}) was closed by an account human — the §16.4 operator kill-switch. ` +
|
|
54
57
|
"This is a deliberate STOP, not a lapse: do NOT restart, and do NOT register a replacement session. " +
|
|
55
58
|
"Senders waiting on this agent have already been unblocked by the §14.2 bounce. Resume only when a human says so.");
|
|
@@ -73,6 +76,13 @@ export function isRetryable(error) {
|
|
|
73
76
|
* `GET /v1/inbox?session=…` — the §8.7.1 session-scoped drain. Renews the lease (§16.2) and returns
|
|
74
77
|
* the signed entries.
|
|
75
78
|
*
|
|
79
|
+
* `opts.probe` opts into the Hub's `?scope=session` PROBE drain (issue #693): claim ONLY entries
|
|
80
|
+
* addressed to this session, provisionally — never the principal's first-claim-wins mail, never a
|
|
81
|
+
* delivery stamp. For DIAGNOSTICS (`doctor --self-test`), not bridges: a bridge that scoped its
|
|
82
|
+
* drain would silently stop consuming the principal's mail, which is why the default is unscoped
|
|
83
|
+
* and the bridge call site passes nothing. A Hub predating the scope ignores the unknown param and
|
|
84
|
+
* runs the full drain — the caller's foreign-entry handling remains the fallback for exactly that.
|
|
85
|
+
*
|
|
76
86
|
* The shape guard rejects the WHOLE batch rather than skipping a bad element, mirroring
|
|
77
87
|
* `drainInbox`: a malformed body is a Hub/proxy contract violation, and silently treating garbage as
|
|
78
88
|
* "no entries" would strand real mail while reporting success. Note it also catches the pre-v0.5
|
|
@@ -80,10 +90,12 @@ export function isRetryable(error) {
|
|
|
80
90
|
* `{ directives: … }`, which has no `messages` array — but the gate is what prevents that drain from
|
|
81
91
|
* being issued at all, because by the time this guard fires the claim has already happened.
|
|
82
92
|
*/
|
|
83
|
-
export async function drainInboxSession(ctx, token, session,
|
|
93
|
+
export async function drainInboxSession(ctx, token, session, opts = {}) {
|
|
84
94
|
const query = new URLSearchParams({ session });
|
|
85
|
-
if (max !== undefined)
|
|
86
|
-
query.set("max", String(max));
|
|
95
|
+
if (opts.max !== undefined)
|
|
96
|
+
query.set("max", String(opts.max));
|
|
97
|
+
if (opts.probe === true)
|
|
98
|
+
query.set("scope", "session");
|
|
87
99
|
const url = `${ctx.config.baseUrl}/v1/inbox?${query.toString()}`;
|
|
88
100
|
let res;
|
|
89
101
|
try {
|
|
@@ -101,11 +113,17 @@ export async function drainInboxSession(ctx, token, session, max) {
|
|
|
101
113
|
throw sessionStatusToCliError(res.status, redactToken(message, token), code, session);
|
|
102
114
|
}
|
|
103
115
|
const body = await readJson(res);
|
|
104
|
-
|
|
105
|
-
|
|
116
|
+
// The `{ messages: [...] }` wrapper is this Hub's transport shape, parsed here; the unwrapped
|
|
117
|
+
// array goes to the LAYER's whole-batch shape guard (`validateDrainBatch` — signature present,
|
|
118
|
+
// exactly one §8.7.1 entry kind per row, object payloads; one malformed row refuses the whole
|
|
119
|
+
// batch). No per-entry re-check follows: `validateDrainBatch` already proves per row everything
|
|
120
|
+
// `isInboxEntryDelivery` would (that guard stays with the SSE stream, whose pushed frames never
|
|
121
|
+
// pass through the batch validator).
|
|
122
|
+
const batch = validateDrainBatch(body.messages);
|
|
123
|
+
if (!batch.valid) {
|
|
106
124
|
throw new CliError("server", "the Hub returned a malformed session drain (expected { messages: [{ <directive|message|response|receipt>, signature }] }).");
|
|
107
125
|
}
|
|
108
|
-
return
|
|
126
|
+
return batch.entries;
|
|
109
127
|
}
|
|
110
128
|
/**
|
|
111
129
|
* `POST /v1/inbox/ack?session=…` — consume the handed-off entries (§8.7.1 / §14).
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-drain.js","sourceRoot":"","sources":["../../../src/commands/messaging/session-drain.ts"],"names":[],"mappings":"AAAA,uFAAuF;AACvF,iCAAiC;AACjC,EAAE;AACF,iGAAiG;AACjG,oGAAoG;AACpG,wGAAwG;AACxG,gGAAgG;AAChG,iGAAiG;AACjG,6FAA6F;AAC7F,EAAE;AACF,iGAAiG;AACjG,qGAAqG;AACrG,kGAAkG;AAClG,gGAAgG;AAEhG,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE7C,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"session-drain.js","sourceRoot":"","sources":["../../../src/commands/messaging/session-drain.ts"],"names":[],"mappings":"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"}
|