@cotal-ai/core 0.53.0 → 0.55.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 (54) hide show
  1. package/dist/auth-provider.d.ts +26 -1
  2. package/dist/auth-provider.d.ts.map +1 -1
  3. package/dist/auth-provider.js.map +1 -1
  4. package/dist/connector.d.ts +7 -1
  5. package/dist/connector.d.ts.map +1 -1
  6. package/dist/connector.js.map +1 -1
  7. package/dist/endpoint-grants.d.ts +7 -2
  8. package/dist/endpoint-grants.d.ts.map +1 -1
  9. package/dist/endpoint-grants.js +11 -4
  10. package/dist/endpoint-grants.js.map +1 -1
  11. package/dist/endpoint-invoke.d.ts +22 -11
  12. package/dist/endpoint-invoke.d.ts.map +1 -1
  13. package/dist/endpoint-invoke.js +255 -85
  14. package/dist/endpoint-invoke.js.map +1 -1
  15. package/dist/endpoint-service.d.ts +12 -0
  16. package/dist/endpoint-service.d.ts.map +1 -1
  17. package/dist/endpoint-service.js +1 -1
  18. package/dist/endpoint-service.js.map +1 -1
  19. package/dist/endpoint-verbs.d.ts +1 -0
  20. package/dist/endpoint-verbs.d.ts.map +1 -1
  21. package/dist/endpoint-verbs.js +14 -6
  22. package/dist/endpoint-verbs.js.map +1 -1
  23. package/dist/endpoint.d.ts +69 -3
  24. package/dist/endpoint.d.ts.map +1 -1
  25. package/dist/endpoint.js +217 -17
  26. package/dist/endpoint.js.map +1 -1
  27. package/dist/provision.d.ts +26 -1
  28. package/dist/provision.d.ts.map +1 -1
  29. package/dist/provision.js +116 -11
  30. package/dist/provision.js.map +1 -1
  31. package/dist/remote-manager-authority.d.ts +111 -0
  32. package/dist/remote-manager-authority.d.ts.map +1 -1
  33. package/dist/remote-manager-authority.js +175 -1
  34. package/dist/remote-manager-authority.js.map +1 -1
  35. package/dist/resolve.d.ts +13 -0
  36. package/dist/resolve.d.ts.map +1 -1
  37. package/dist/resolve.js +16 -0
  38. package/dist/resolve.js.map +1 -1
  39. package/dist/schema-profile.d.ts.map +1 -1
  40. package/dist/schema-profile.js +87 -8
  41. package/dist/schema-profile.js.map +1 -1
  42. package/dist/secret-store.d.ts +39 -0
  43. package/dist/secret-store.d.ts.map +1 -1
  44. package/dist/secret-store.js +24 -0
  45. package/dist/secret-store.js.map +1 -1
  46. package/dist/streams.d.ts +21 -21
  47. package/dist/streams.d.ts.map +1 -1
  48. package/dist/streams.js +52 -29
  49. package/dist/streams.js.map +1 -1
  50. package/dist/subjects.d.ts +18 -0
  51. package/dist/subjects.d.ts.map +1 -1
  52. package/dist/subjects.js +21 -0
  53. package/dist/subjects.js.map +1 -1
  54. package/package.json +1 -1
@@ -1,5 +1,6 @@
1
1
  import { rawDigest } from "./canonical.js";
2
- import { assertLifecycleToken } from "./subjects.js";
2
+ import { EpEnvelopeError } from "./endpoint-error.js";
3
+ import { assertDerivedOwnerToken, assertLifecycleToken, assertValidChannel, assertValidOwnerToken } from "./subjects.js";
3
4
  export function remoteManagerActors(instanceId) {
4
5
  return {
5
6
  supervisor: `manager_${instanceId}`,
@@ -28,4 +29,177 @@ export function remoteManagerRegistrationProof(owner, request) {
28
29
  export function managedRetirementOpId(lifecycleUid) {
29
30
  return rawDigest(`retire:${assertLifecycleToken(lifecycleUid)}`).slice("sha256:".length, "sha256:".length + 26);
30
31
  }
32
+ const IDENTITY_NAMES = ["supervisor", "executor", "serve", "goalWriter", "sessionLedger"];
33
+ /** The bound on one enrollment ACL list. A grant wider than this is a configuration mistake, and a
34
+ * request carrying thousands of patterns is a body-size attack on the host's derivation. */
35
+ const MAX_ENROLLMENT_LIST = 64;
36
+ function enrollmentError(what, detail) {
37
+ throw new EpEnvelopeError("bad-request", `${what} request ${detail}`);
38
+ }
39
+ /** The envelope fields every managed-agent request shares, validated once for both parsers. */
40
+ function parseManagedAgentEnvelope(o, what, kind) {
41
+ if (o.v !== 1 || o.kind !== kind)
42
+ enrollmentError(what, `must carry { v: 1, kind: ${JSON.stringify(kind)} }`);
43
+ for (const key of ["space", "actor", "instanceId", "managerLifecycleUid", "requestId", "registrationProof"])
44
+ if (typeof o[key] !== "string" || o[key].length === 0)
45
+ enrollmentError(what, `requires non-empty ${key}`);
46
+ assertValidOwnerToken(o.actor);
47
+ assertLifecycleToken(o.instanceId, `${what} instanceId`);
48
+ assertLifecycleToken(o.managerLifecycleUid, `${what} lifecycleUid`);
49
+ if (!/^[A-Za-z0-9_-]{22,64}$/.test(o.requestId))
50
+ enrollmentError(what, "requestId must be a 22-64 character idempotency token");
51
+ if (!/^sha256:[0-9a-f]{64}$/.test(o.registrationProof))
52
+ enrollmentError(what, "requires a sha256 registrationProof");
53
+ if (typeof o.serveEpoch !== "number" || !Number.isSafeInteger(o.serveEpoch) || o.serveEpoch < 0)
54
+ enrollmentError(what, "serveEpoch must be a non-negative safe integer");
55
+ const ids = o.identities;
56
+ if (ids === null || typeof ids !== "object" || Array.isArray(ids))
57
+ enrollmentError(what, "requires identities");
58
+ const idObj = ids;
59
+ if (Object.keys(idObj).sort().join(",") !== [...IDENTITY_NAMES].sort().join(","))
60
+ enrollmentError(what, `identities must contain exactly ${IDENTITY_NAMES.join(", ")}`);
61
+ const identities = {};
62
+ for (const name of IDENTITY_NAMES) {
63
+ const item = idObj[name];
64
+ if (item === null || typeof item !== "object" || Array.isArray(item) || Object.keys(item).join(",") !== "id")
65
+ enrollmentError(what, `identities.${name} must be exactly { id }`);
66
+ const id = item.id;
67
+ if (typeof id !== "string" || !/^U[A-Z2-7]{55}$/.test(id))
68
+ enrollmentError(what, `identities.${name}.id must be a user nkey`);
69
+ identities[name] = { id };
70
+ }
71
+ return {
72
+ space: o.space,
73
+ actor: o.actor,
74
+ instanceId: o.instanceId,
75
+ managerLifecycleUid: o.managerLifecycleUid,
76
+ requestId: o.requestId,
77
+ registrationProof: o.registrationProof,
78
+ serveEpoch: o.serveEpoch,
79
+ identities,
80
+ };
81
+ }
82
+ /** One optional channel/pattern list on an enrollment target: bounded, string-only, in-grammar. */
83
+ function parseEnrollmentList(value, what, field) {
84
+ if (value === undefined)
85
+ return undefined;
86
+ if (!Array.isArray(value))
87
+ enrollmentError(what, `target.${field} must be an array of channel patterns when present`);
88
+ if (value.length > MAX_ENROLLMENT_LIST)
89
+ enrollmentError(what, `target.${field} carries ${value.length} entries, more than the ${MAX_ENROLLMENT_LIST}-entry bound`);
90
+ for (const item of value) {
91
+ if (typeof item !== "string" || item.length === 0)
92
+ enrollmentError(what, `target.${field} must contain only non-empty strings`);
93
+ assertValidChannel(item);
94
+ }
95
+ return [...value];
96
+ }
97
+ /**
98
+ * Parse the enrollment request without retaining unknown input fields. The host derives the
99
+ * lifecycle UID, the role, and the effective ACLs itself, so this parser proves only that what
100
+ * arrived is in-grammar and bounded; it never widens a grant.
101
+ */
102
+ export function parseRemoteManagedAgentEnrollmentRequest(raw) {
103
+ const what = "managed agent enrollment";
104
+ if (raw === null || typeof raw !== "object" || Array.isArray(raw))
105
+ enrollmentError(what, "must be an object");
106
+ const o = raw;
107
+ const allowed = new Set([
108
+ "v", "kind", "space", "actor", "instanceId", "managerLifecycleUid", "requestId",
109
+ "registrationProof", "serveEpoch", "target", "identities",
110
+ ]);
111
+ for (const key of Object.keys(o))
112
+ if (!allowed.has(key))
113
+ enrollmentError(what, `carries unknown field ${JSON.stringify(key)} (the protocol is closed)`);
114
+ const envelope = parseManagedAgentEnvelope(o, what, "manager-managed-agent-enrollment");
115
+ const target = o.target;
116
+ if (target === null || typeof target !== "object" || Array.isArray(target))
117
+ enrollmentError(what, "requires a target");
118
+ const t = target;
119
+ const targetAllowed = new Set(["actor", "tokenHash", "role", "label", "capabilities", "subscribe", "allowSubscribe", "allowPublish"]);
120
+ for (const key of Object.keys(t))
121
+ if (!targetAllowed.has(key))
122
+ enrollmentError(what, `target carries unknown field ${JSON.stringify(key)} (the protocol is closed)`);
123
+ if (typeof t.actor !== "string" || t.actor.length === 0)
124
+ enrollmentError(what, "target requires a non-empty actor");
125
+ assertValidOwnerToken(t.actor);
126
+ // The digest, never the secret: a request that carried the plaintext standing token would put an
127
+ // agent's whole exchange authority on the wire and in the host's logs.
128
+ if (typeof t.tokenHash !== "string" || !/^[0-9a-f]{64}$/.test(t.tokenHash))
129
+ enrollmentError(what, "target.tokenHash must be a lowercase hex sha256 digest of the locally held actorToken");
130
+ if (t.role !== undefined && (typeof t.role !== "string" || !/^[A-Za-z0-9_-]{1,64}$/.test(t.role)))
131
+ enrollmentError(what, "target.role must be a 1-64 character role token when present");
132
+ if (t.label !== undefined && (typeof t.label !== "string" || t.label.length === 0 || t.label.length > 256))
133
+ enrollmentError(what, "target.label must be a 1-256 character string when present");
134
+ if (t.capabilities !== undefined) {
135
+ if (!Array.isArray(t.capabilities))
136
+ enrollmentError(what, "target.capabilities must be an array when present");
137
+ if (t.capabilities.length > MAX_ENROLLMENT_LIST)
138
+ enrollmentError(what, `target.capabilities carries ${t.capabilities.length} entries, more than the ${MAX_ENROLLMENT_LIST}-entry bound`);
139
+ for (const cap of t.capabilities)
140
+ if (typeof cap !== "string" || !/^[A-Za-z0-9_:-]{1,64}$/.test(cap))
141
+ enrollmentError(what, "target.capabilities must contain only 1-64 character capability tokens");
142
+ }
143
+ const subscribe = parseEnrollmentList(t.subscribe, what, "subscribe");
144
+ const allowSubscribe = parseEnrollmentList(t.allowSubscribe, what, "allowSubscribe");
145
+ const allowPublish = parseEnrollmentList(t.allowPublish, what, "allowPublish");
146
+ return {
147
+ v: 1,
148
+ kind: "manager-managed-agent-enrollment",
149
+ ...envelope,
150
+ target: {
151
+ actor: t.actor,
152
+ tokenHash: t.tokenHash,
153
+ ...(t.role !== undefined ? { role: t.role } : {}),
154
+ ...(t.label !== undefined ? { label: t.label } : {}),
155
+ ...(t.capabilities !== undefined ? { capabilities: [...t.capabilities] } : {}),
156
+ ...(subscribe !== undefined ? { subscribe } : {}),
157
+ ...(allowSubscribe !== undefined ? { allowSubscribe } : {}),
158
+ ...(allowPublish !== undefined ? { allowPublish } : {}),
159
+ },
160
+ };
161
+ }
162
+ /**
163
+ * Parse the prepare-retirement request without retaining unknown input fields. The opId is checked
164
+ * against {@link managedRetirementOpId} here, so a caller cannot name a second operation for one
165
+ * lifecycle and split the terminal barrier in two.
166
+ */
167
+ export function parseRemoteManagedAgentPrepareRetirementRequest(raw) {
168
+ const what = "managed agent prepare-retirement";
169
+ if (raw === null || typeof raw !== "object" || Array.isArray(raw))
170
+ enrollmentError(what, "must be an object");
171
+ const o = raw;
172
+ const allowed = new Set([
173
+ "v", "kind", "space", "actor", "instanceId", "managerLifecycleUid", "requestId",
174
+ "registrationProof", "serveEpoch", "target", "opId", "identities",
175
+ ]);
176
+ for (const key of Object.keys(o))
177
+ if (!allowed.has(key))
178
+ enrollmentError(what, `carries unknown field ${JSON.stringify(key)} (the protocol is closed)`);
179
+ const envelope = parseManagedAgentEnvelope(o, what, "manager-managed-agent-prepare-retirement");
180
+ const target = o.target;
181
+ if (target === null || typeof target !== "object" || Array.isArray(target) ||
182
+ Object.keys(target).sort().join(",") !== "actor,lifecycleUid,owner")
183
+ enrollmentError(what, "target must be exactly { owner, actor, lifecycleUid }");
184
+ const t = target;
185
+ if (typeof t.owner !== "string" || typeof t.actor !== "string" || typeof t.lifecycleUid !== "string")
186
+ enrollmentError(what, "target must contain string owner, actor, and lifecycleUid");
187
+ const parsedTarget = {
188
+ owner: assertDerivedOwnerToken(t.owner),
189
+ actor: assertValidOwnerToken(t.actor),
190
+ lifecycleUid: assertLifecycleToken(t.lifecycleUid, `${what} target lifecycleUid`),
191
+ };
192
+ if (typeof o.opId !== "string" || o.opId.length === 0)
193
+ enrollmentError(what, "requires a non-empty opId");
194
+ assertLifecycleToken(o.opId, `${what} opId`);
195
+ if (o.opId !== managedRetirementOpId(parsedTarget.lifecycleUid))
196
+ enrollmentError(what, `opId must be the derived terminal operation id for lifecycle ${parsedTarget.lifecycleUid}`);
197
+ return {
198
+ v: 1,
199
+ kind: "manager-managed-agent-prepare-retirement",
200
+ ...envelope,
201
+ target: parsedTarget,
202
+ opId: o.opId,
203
+ };
204
+ }
31
205
  //# sourceMappingURL=remote-manager-authority.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"remote-manager-authority.js","sourceRoot":"","sources":["../src/remote-manager-authority.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AA4OrD,MAAM,UAAU,mBAAmB,CAAC,UAAkB;IACpD,OAAO;QACL,UAAU,EAAE,WAAW,UAAU,EAAE;QACnC,QAAQ,EAAE,gBAAgB,UAAU,EAAE;QACtC,KAAK,EAAE,iBAAiB,UAAU,EAAE;QACpC,UAAU,EAAE,gBAAgB,UAAU,EAAE;QACxC,aAAa,EAAE,mBAAmB,UAAU,EAAE;KAC/C,CAAC;AACJ,CAAC;AAED,wGAAwG;AACxG,MAAM,UAAU,8BAA8B,CAAC,KAAa,EAAE,OAAsC;IAClG,MAAM,eAAe,GAAG,OAAO,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,iBAAiB,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAClJ,OAAO,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC;QAC9B,CAAC,EAAE,CAAC;QACJ,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,KAAK;QACL,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,YAAY,EAAE,OAAO,CAAC,mBAAmB;QACzC,MAAM,EAAE,mBAAmB,CAAC,OAAO,CAAC,UAAU,CAAC;QAC/C,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,eAAe;KAChB,CAAC,CAAC,CAAC;AACN,CAAC;AAED;oGACoG;AACpG,MAAM,UAAU,qBAAqB,CAAC,YAAoB;IACxD,OAAO,SAAS,CAAC,UAAU,oBAAoB,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,EAAE,SAAS,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;AAClH,CAAC"}
1
+ {"version":3,"file":"remote-manager-authority.js","sourceRoot":"","sources":["../src/remote-manager-authority.ts"],"names":[],"mappings":"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"}
package/dist/resolve.d.ts CHANGED
@@ -43,6 +43,19 @@ export declare class AmbiguousPeerError extends Error {
43
43
  export declare function resolvePeer(roster: Presence[], target: string, opts?: {
44
44
  selfId?: string;
45
45
  }): Presence | undefined;
46
+ /** Maximum length of a display name, in UTF-16 code units.
47
+ *
48
+ * Derived from the transport budget, not picked. The client's CONNECT line carries the user JWT
49
+ * plus every payload the identity rides into (presence rows, message envelopes), and the broker
50
+ * caps that line at `max_control_line` (65536 in the generated config, provision.ts). A name is
51
+ * display data on that path, so an unbounded name is an unbounded CONNECT line: a 70,000-char
52
+ * name was accepted end to end and the connect then hung (issue #375) — the broker drops the
53
+ * oversized line silently and the client retries forever. 128 leaves every human name (~40 chars
54
+ * at the extreme) 3× headroom while keeping dozens of in-flight name-bearing rows an order of
55
+ * magnitude inside the 64 KB line. The grants themselves key on the principal, never the name
56
+ * (event-channel.ts), so this bound guards the payload side of the budget.
57
+ */
58
+ export declare const MAX_NAME_LENGTH = 128;
46
59
  /**
47
60
  * Validate a display name. A name must be non-empty, single-line, and free of surrounding
48
61
  * whitespace; `/` is reserved as the future `owner/name` separator (and already means "a path"
@@ -1 +1 @@
1
- {"version":3,"file":"resolve.d.ts","sourceRoot":"","sources":["../src/resolve.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE3D;6FAC6F;AAC7F,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,cAAc,CAAC;IACvB,6CAA6C;IAC7C,EAAE,EAAE,MAAM,CAAC;CACZ;AAED;0FAC0F;AAC1F,qBAAa,kBAAmB,SAAQ,KAAK;IAEzC,QAAQ,CAAC,MAAM,EAAE,MAAM;IACvB,QAAQ,CAAC,UAAU,EAAE,aAAa,EAAE;gBAD3B,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,aAAa,EAAE;CASvC;AAMD;;;;;;;;;;;GAWG;AACH,wBAAgB,WAAW,CACzB,MAAM,EAAE,QAAQ,EAAE,EAClB,MAAM,EAAE,MAAM,EACd,IAAI,GAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAA;CAAO,GAC7B,QAAQ,GAAG,SAAS,CAetB;AAuBD;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CA2BlD"}
1
+ {"version":3,"file":"resolve.d.ts","sourceRoot":"","sources":["../src/resolve.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE3D;6FAC6F;AAC7F,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,cAAc,CAAC;IACvB,6CAA6C;IAC7C,EAAE,EAAE,MAAM,CAAC;CACZ;AAED;0FAC0F;AAC1F,qBAAa,kBAAmB,SAAQ,KAAK;IAEzC,QAAQ,CAAC,MAAM,EAAE,MAAM;IACvB,QAAQ,CAAC,UAAU,EAAE,aAAa,EAAE;gBAD3B,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,aAAa,EAAE;CASvC;AAMD;;;;;;;;;;;GAWG;AACH,wBAAgB,WAAW,CACzB,MAAM,EAAE,QAAQ,EAAE,EAClB,MAAM,EAAE,MAAM,EACd,IAAI,GAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAA;CAAO,GAC7B,QAAQ,GAAG,SAAS,CAetB;AAuBD;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,eAAe,MAAM,CAAC;AAEnC;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAgClD"}
package/dist/resolve.js CHANGED
@@ -66,6 +66,19 @@ function isWellFormedUtf16(s) {
66
66
  }
67
67
  return true;
68
68
  }
69
+ /** Maximum length of a display name, in UTF-16 code units.
70
+ *
71
+ * Derived from the transport budget, not picked. The client's CONNECT line carries the user JWT
72
+ * plus every payload the identity rides into (presence rows, message envelopes), and the broker
73
+ * caps that line at `max_control_line` (65536 in the generated config, provision.ts). A name is
74
+ * display data on that path, so an unbounded name is an unbounded CONNECT line: a 70,000-char
75
+ * name was accepted end to end and the connect then hung (issue #375) — the broker drops the
76
+ * oversized line silently and the client retries forever. 128 leaves every human name (~40 chars
77
+ * at the extreme) 3× headroom while keeping dozens of in-flight name-bearing rows an order of
78
+ * magnitude inside the 64 KB line. The grants themselves key on the principal, never the name
79
+ * (event-channel.ts), so this bound guards the payload side of the budget.
80
+ */
81
+ export const MAX_NAME_LENGTH = 128;
69
82
  /**
70
83
  * Validate a display name. A name must be non-empty, single-line, and free of surrounding
71
84
  * whitespace; `/` is reserved as the future `owner/name` separator (and already means "a path"
@@ -75,6 +88,9 @@ function isWellFormedUtf16(s) {
75
88
  export function assertValidName(name) {
76
89
  if (name.length === 0 || name !== name.trim())
77
90
  throw new Error(`invalid name ${JSON.stringify(name)}: must be non-empty with no surrounding whitespace`);
91
+ if (name.length > MAX_NAME_LENGTH)
92
+ throw new Error(`invalid name ${JSON.stringify(name.slice(0, 32))}…: ${name.length} characters exceeds the ` +
93
+ `${MAX_NAME_LENGTH}-character limit (the CONNECT line budget that carries it)`);
78
94
  if (/[\r\n]/.test(name))
79
95
  throw new Error(`invalid name ${JSON.stringify(name)}: must be a single line`);
80
96
  if (name.includes("/"))
@@ -1 +1 @@
1
- {"version":3,"file":"resolve.js","sourceRoot":"","sources":["../src/resolve.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"resolve.js","sourceRoot":"","sources":["../src/resolve.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"schema-profile.d.ts","sourceRoot":"","sources":["../src/schema-profile.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EAAW,KAAK,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAIlE;;6EAE6E;AAC7E,eAAO,MAAM,cAAc;IACzB,mDAAmD;;IAEnD,+EAA+E;;IAE/E,gDAAgD;;IA8ChD,+DAA+D;;IAE/D,sCAAsC;;IAEtC,+FAA+F;;IAE/F;;0DAEsD;;IAEtD,0EAA0E;;EAEjE,CAAC;AA+CZ;;cAEc;AACd,eAAO,MAAM,WAAW;;EAA2C,CAAC;AACpE,qFAAqF;AACrF,eAAO,MAAM,2BAA2B,QAA8B,CAAC;AACvE;8EAC8E;AAC9E,eAAO,MAAM,kBAAkB,QAA2E,CAAC;AAK3G;wFACwF;AACxF,qBAAa,oBAAqB,SAAQ,KAAK;IAC7C,QAAQ,CAAC,IAAI,EAAG,kBAAkB,CAAU;gBAChC,OAAO,EAAE,MAAM;CAI5B;AAqED;mFACmF;AACnF,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,OAAO,CAAC;IACd,8FAA8F;IAC9F,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AA0HD;;;;;;;;;;gCAUgC;AAChC,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,aAAa,EAAE,MAAM,CAAC;CACvB;AAaD,2FAA2F;AAC3F,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,gBAAgB,CAEpE;AAED;gGACgG;AAChG,wBAAgB,sBAAsB,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,gBAAgB,CAIjF;AAgHD;;8DAE8D;AAC9D,wBAAgB,eAAe,CAAC,MAAM,EAAE,YAAY,GAAG,gBAAgB,CAGtE;AAED,8FAA8F;AAC9F,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,YAAY,GAAG,gBAAgB,CAE5E;AAED;;;;4BAI4B;AAC5B,wBAAgB,2BAA2B,CAAC,QAAQ,GAAE,MAA4C,GAAG;IACnG,OAAO,EAAE,CAAC,MAAM,EAAE,YAAY,KAAK,gBAAgB,CAAC;IACpD,IAAI,EAAE,MAAM,MAAM,CAAC;CACpB,CAmBA"}
1
+ {"version":3,"file":"schema-profile.d.ts","sourceRoot":"","sources":["../src/schema-profile.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EAAW,KAAK,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAIlE;;6EAE6E;AAC7E,eAAO,MAAM,cAAc;IACzB,mDAAmD;;IAEnD,+EAA+E;;IAE/E,gDAAgD;;IAoDhD,+DAA+D;;IAE/D,sCAAsC;;IAEtC,+FAA+F;;IAE/F;;0DAEsD;;IAEtD,0EAA0E;;EAEjE,CAAC;AAuEZ;;cAEc;AACd,eAAO,MAAM,WAAW;;EAA2C,CAAC;AACpE,qFAAqF;AACrF,eAAO,MAAM,2BAA2B,QAA8B,CAAC;AACvE;8EAC8E;AAC9E,eAAO,MAAM,kBAAkB,QAA2E,CAAC;AAK3G;wFACwF;AACxF,qBAAa,oBAAqB,SAAQ,KAAK;IAC7C,QAAQ,CAAC,IAAI,EAAG,kBAAkB,CAAU;gBAChC,OAAO,EAAE,MAAM;CAI5B;AAqED;mFACmF;AACnF,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,OAAO,CAAC;IACd,8FAA8F;IAC9F,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AA0HD;;;;;;;;;;gCAUgC;AAChC,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,aAAa,EAAE,MAAM,CAAC;CACvB;AAaD,2FAA2F;AAC3F,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,gBAAgB,CAEpE;AAED;gGACgG;AAChG,wBAAgB,sBAAsB,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,gBAAgB,CAIjF;AA8JD;;8DAE8D;AAC9D,wBAAgB,eAAe,CAAC,MAAM,EAAE,YAAY,GAAG,gBAAgB,CAGtE;AAED,8FAA8F;AAC9F,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,YAAY,GAAG,gBAAgB,CAE5E;AAED;;;;4BAI4B;AAC5B,wBAAgB,2BAA2B,CAAC,QAAQ,GAAE,MAA4C,GAAG;IACnG,OAAO,EAAE,CAAC,MAAM,EAAE,YAAY,KAAK,gBAAgB,CAAC;IACpD,IAAI,EAAE,MAAM,MAAM,CAAC;CACpB,CAmBA"}
@@ -40,11 +40,15 @@ export const SCHEMA_PROFILE = Object.freeze({
40
40
  //
41
41
  // CRASH. A 2048-node patterned-properties document was observed to RangeError in Ajv's codegen
42
42
  // at ~186KB — inside `maxDocumentBytes` — which looked like a hard edge worth standing in front
43
- // of. It is not an edge, and it failed to reproduce twice over. THE SAME SCHEMA IN THE SAME
44
- // PROCESS threw after 95.7ms cold and then COMPILED in 1035.5ms on the immediate warm retry;
45
- // and on the host these figures were taken from it does not throw at all, compiling in 679.8ms
46
- // cold and 544.8ms warm. A boundary that moves between two consecutive runs of one process, and
47
- // is absent on the next host, cannot be the basis of a frozen constant.
43
+ // of. It is not an edge — not because it is unstable (re-measured for #1551: the SAME 2062-
44
+ // property/187545-byte document RangeErrors 15/15 fresh processes at this profile's default
45
+ // stack, and the reported cold-then-warm-compiles pattern did not reproduce once) — but because
46
+ // the edge is a function of the STACK BUDGET, not the schema: it moves linearly with
47
+ // `--stack-size` (measured 256KB→~460, 8MB default→~2050, on the pin this profile ships;
48
+ // flattening ajv's codegen with `allErrors: true` moves the same edge to roughly 3.4x wider at
49
+ // any given stack budget, never removes it) and by a fraction of a property per extra caller
50
+ // frame burned before the compile call. A frozen node-count constant cannot express an edge that
51
+ // moves with the CALLER's stack depth, which is outside this module's control.
48
52
  //
49
53
  // AND THE VALUE WAS UNSAFE ON AN AXIS NOBODY MEASURED. Under `node --stack-size=256` a 512-node
50
54
  // object RangeErrors, while 384 compiles — so the proposed `maxSchemaNodes: 512` did not hold
@@ -54,8 +58,10 @@ export const SCHEMA_PROFILE = Object.freeze({
54
58
  // WHAT STANDS IN ITS PLACE is what was doing the work the whole time: `maxDocumentBytes` and
55
59
  // `maxClosureBytes`, `maxDepth`, `maxRefChain`, `maxPatternChars`, the admitted-vocabulary
56
60
  // refusal, and — for exactly the codegen overflow above — the compile-error catch in
57
- // `compileWithinBudget`, which has been normalising these to `contract-invalid` all along. That
58
- // set refuses everything it refused before; removing an unfounded bound only LOOSENS, and
61
+ // `compileWithinBudget`, which normalises a stack overflow to `contract-invalid` naming the
62
+ // COMPILER's generated-code shape and the property count that triggered it, never the caller's
63
+ // schema (#1551). That set refuses everything it refused before; removing an unfounded bound only
64
+ // LOOSENS, and
59
65
  // loosening cannot break a contract that was already valid.
60
66
  //
61
67
  // BEFORE PROPOSING ONE AGAIN, run `implementations/manager/smoke/_probe-nodecount-rejected.ts`.
@@ -91,7 +97,31 @@ export const SCHEMA_PROFILE = Object.freeze({
91
97
  */
92
98
  const AJV_PROFILE_OPTIONS = Object.freeze({
93
99
  strict: false, // the wire accepts full 2020-12, not ajv's strict-mode dialect subset
94
- allErrors: false,
100
+ // PINNED TRUE, not ajv's `false` default, for the flat code shape it produces (#1551).
101
+ // `allErrors: false` makes ajv nest one continuation `if` per property in the generated
102
+ // validator, so the compile of a wide object schema overflows the host call stack at a width
103
+ // set by the STACK BUDGET, not by any ceiling this profile enforces — every document this
104
+ // profile admits (bytes, depth, ref-chain, pattern length, vocabulary) can still fail to
105
+ // compile purely on shape. `allErrors: true` builds the same validations as a flat sequence
106
+ // instead, which does not remove the stack-bounded ceiling (ajv's codegen still recurses while
107
+ // it builds the code tree) but moves it about 3.4x wider at any given stack budget: measured on
108
+ // this pin, default 8MB stack SMALLEST_FAIL moved from 2055 properties to 6946, and
109
+ // `--stack-size=256` moved from 494 to 1769 (one host, Node 24; the ratio is the stable
110
+ // quantity, not the absolute counts — re-measure with a child process per candidate width, one
111
+ // `--stack-size` per row, per issue #1551's method).
112
+ //
113
+ // Safe to flip only because it changes NO VERDICT this profile's own checks depend on: ajv
114
+ // orders keyword/property evaluation identically regardless of `allErrors`, so `errors[0]` —
115
+ // the only field any caller-facing message reads (`endpoint-envelope.ts` firstErrorDetail,
116
+ // `endpoint-traits.ts` readSchema) — is byte-identical between the two settings for every
117
+ // schema/instance pair tried, and `packages/core/smoke/schema-profile.smoke.ts`'s full 67-check
118
+ // suite (every `refuses`/`ok` assertion, including the pattern safe-subset gate and the
119
+ // admitted-vocabulary walk) passes unchanged under either setting. Nothing on the wire ever
120
+ // reads ajv's full `errors` array, only its first entry, so `allErrors`'s extra collected
121
+ // errors are never observed by a caller. If a future change makes any of that no longer true —
122
+ // a caller starts reading `errors.length`, or a verdict diverges between the settings — this
123
+ // pin must be re-measured before it stays.
124
+ allErrors: true,
95
125
  validateFormats: false,
96
126
  loadSchema: undefined,
97
127
  // PINNED, never inherited from Ajv's default: the safe-pattern analyzer models `/u`
@@ -401,6 +431,41 @@ function assertClosureProfile(bundle) {
401
431
  throw new ContractInvalidError(`bundle carries ${extras.length} member(s) unreachable from the root (${extras.slice(0, 3).join(", ")}${extras.length > 3 ? ", …" : ""})`);
402
432
  return contractDigest({ v: 1, root: digestOrInvalid(bundle.root, "root schema"), members: [...seen].sort() });
403
433
  }
434
+ /** The size of the widest map-valued keyword (`properties`, `patternProperties`, `$defs`,
435
+ * `definitions`, `dependentSchemas`, `dependencies`) anywhere in one document — the shape that
436
+ * drives ajv's per-property codegen (SPEC §13.7). Used only to NAME a codegen overflow after it
437
+ * happens; every ceiling in {@link SCHEMA_PROFILE} has already admitted this document by the time
438
+ * anything calls this, so it never gates anything itself. */
439
+ function widestMapKeywordSize(doc, max = 0) {
440
+ if (doc === null || typeof doc !== "object" || Array.isArray(doc))
441
+ return max;
442
+ for (const [k, v] of Object.entries(doc)) {
443
+ if (SCHEMA_VALUED_MAP_KEYS.includes(k) && v && typeof v === "object" && !Array.isArray(v)) {
444
+ const size = Object.keys(v).length;
445
+ if (size > max)
446
+ max = size;
447
+ for (const sub of Object.values(v))
448
+ max = widestMapKeywordSize(sub, max);
449
+ }
450
+ else if (SCHEMA_VALUED_KEYS.includes(k)) {
451
+ max = widestMapKeywordSize(v, max);
452
+ }
453
+ else if (SCHEMA_VALUED_LIST_KEYS.includes(k) && Array.isArray(v)) {
454
+ for (const sub of v)
455
+ max = widestMapKeywordSize(sub, max);
456
+ }
457
+ }
458
+ return max;
459
+ }
460
+ /** The widest map-valued keyword across the whole closure (root plus every bundle member) — the
461
+ * quantity {@link widestMapKeywordSize} measures, maximised over every document a compile call
462
+ * actually sees. */
463
+ function widestClosurePropertyCount(bundle) {
464
+ let max = widestMapKeywordSize(bundle.root);
465
+ for (const member of Object.values(bundle.members ?? {}))
466
+ max = widestMapKeywordSize(member, max);
467
+ return max;
468
+ }
404
469
  function compileWithinBudget(bundle) {
405
470
  // NOTHING HERE REFUSES A SCHEMA FOR BEING EXPENSIVE, and that is deliberate rather than
406
471
  // overlooked. The timing below is an OBSERVATION and refuses nothing; the node ceiling that was
@@ -456,6 +521,20 @@ function compileWithinBudget(bundle) {
456
521
  validate = ajv.compile(bundle.root);
457
522
  }
458
523
  catch (e) {
524
+ // A `RangeError` here is the compiler's own generated code overflowing the host's call
525
+ // stack (SPEC §13.7) — every ceiling above already admitted this document, so the schema is
526
+ // not what failed. Naming the caller's schema in that case (as the generic branch below does
527
+ // for every other compile failure) sends the caller to rewrite something that was never
528
+ // wrong. Named instead: the shape that overflowed (ajv's per-property codegen), and the width
529
+ // that did it (the widest `properties`/`patternProperties`/`$defs`/… map anywhere in the
530
+ // closure) — the two facts a caller needs to know this is not their schema's fault.
531
+ if (e instanceof RangeError) {
532
+ const width = widestClosurePropertyCount(bundle);
533
+ throw new ContractInvalidError(`schema does not compile under the 2020-12 profile: the generated validator's code shape overflowed `
534
+ + `the call stack (${e.message}) compiling a ${width}-property object, which every profile `
535
+ + `ceiling (document/closure bytes, depth, ref-chain, pattern length, admitted vocabulary) had already `
536
+ + `admitted; this is the compiler's generated-code shape running out of stack, not a defect in the schema`);
537
+ }
459
538
  throw new ContractInvalidError(`schema does not compile under the 2020-12 profile: ${e.message}`);
460
539
  }
461
540
  const cpu = process.cpuUsage(startedCpu);
@@ -1 +1 @@
1
- {"version":3,"file":"schema-profile.js","sourceRoot":"","sources":["../src/schema-profile.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"schema-profile.js","sourceRoot":"","sources":["../src/schema-profile.ts"],"names":[],"mappings":"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"}
@@ -75,6 +75,45 @@ export declare function formatSecretStoreIdentity(id: SecretStoreIdentity): stri
75
75
  * values, and mixed fs/injected shapes are refused rather than guessed.
76
76
  */
77
77
  export declare function parseSecretStoreIdentity(raw: unknown): SecretStoreIdentity;
78
+ /**
79
+ * The delivery daemon's answer to the `reloadStoreIdentity` challenge: the store it reloads from,
80
+ * PLUS the binding that says whose answer this is.
81
+ *
82
+ * The binding is why this is not just a {@link SecretStoreIdentity}. The delivery-admin rail is
83
+ * QUEUE-GROUPED, so a request lands on whichever bound responder the broker picks. Every process
84
+ * holding a `delivery` credential for the space can serve it, while only ONE of them holds the
85
+ * delivery lease and therefore actually reloads the standing credentials. Taking the first reply
86
+ * and calling it "the daemon's store" answers a question nobody asked: it reports the store of AN
87
+ * answerer, and a manager then decides whether to remint based on a process that may reload
88
+ * nothing. Carrying the answerer's identity and its lease claim lets the caller require that the
89
+ * store it compares against belongs to the process that reloads (#1694).
90
+ */
91
+ export interface DaemonStoreAnswer {
92
+ /** The store the answering process reloads standing credentials from. */
93
+ identity: SecretStoreIdentity;
94
+ /** The answering endpoint's wire identity, so the answer names a process rather than a rail. */
95
+ responder: string;
96
+ /** Did the answering process say it held this space's delivery lease at the moment it answered?
97
+ *
98
+ * THIS IS THE ANSWERER'S OWN CLAIM, NOT A VERIFIED FACT, and a caller that decides anything on
99
+ * it alone is trusting a boolean the answerer chose. `false` is the honest reading for a
100
+ * responder that does not own the shard, and it is useful exactly because an honest non-holder
101
+ * sends it. A responder that is not honest can send `true`. A caller requiring the answer to
102
+ * come from the process that reloads must verify the binding itself, by reading the lease row
103
+ * and comparing its holder against {@link DaemonStoreAnswer.responder}. */
104
+ holdsDeliveryLease: boolean;
105
+ }
106
+ /** Parse a {@link DaemonStoreAnswer} off the wire through the same closed-parser discipline as
107
+ * {@link parseSecretStoreIdentity}: a reply that cannot produce every field is a failure to
108
+ * determine, raised here, never a partially trusted answer assembled by the caller. CLOSED means
109
+ * closed in both directions: an unknown top-level key is refused rather than ignored, so a reply
110
+ * carrying a field this version does not know about is a failure to determine instead of an
111
+ * answer that was silently read as something narrower than it claimed to be.
112
+ *
113
+ * A daemon older than #1694 replies with a bare identity and no binding. That lands here as a
114
+ * parse failure, which is the intended reading: the caller cannot establish who answered, so it
115
+ * must refuse rather than fall back to the unbound comparison this type exists to replace. */
116
+ export declare function parseDaemonStoreAnswer(raw: unknown): DaemonStoreAnswer;
78
117
  /**
79
118
  * The notice a manager logs when its remint store and the daemon's reload source are not one
80
119
  * authority. That manager is not the daemon-credential renewal owner: it serves the space and
@@ -1 +1 @@
1
- {"version":3,"file":"secret-store.d.ts","sourceRoot":"","sources":["../src/secret-store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,MAAM,WAAW,WAAW;IAC1B;;;;mEAI+D;IAC/D,QAAQ,CAAC,QAAQ,CAAC,EAAE,mBAAmB,CAAC;IAExC,4DAA4D;IAC5D,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IAE9C;;;;0GAIsG;IACtG,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE/C;;;;sEAIkE;IAClE,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACpC;AAED;;;;;;;;;GASG;AACH,MAAM,MAAM,mBAAmB,GAC3B;IAAE,IAAI,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAC5B;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAAC;AAE7C,yGAAyG;AACzG,wBAAgB,uBAAuB,CAAC,CAAC,EAAE,mBAAmB,EAAE,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAK/F;AAMD,kFAAkF;AAClF,wBAAgB,yBAAyB,CAAC,EAAE,EAAE,mBAAmB,GAAG,MAAM,CAEzE;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,OAAO,GAAG,mBAAmB,CAoB1E;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,mBAAmB,EAAE,MAAM,EAAE,mBAAmB,GAAG,MAAM,CAQ1G"}
1
+ {"version":3,"file":"secret-store.d.ts","sourceRoot":"","sources":["../src/secret-store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,MAAM,WAAW,WAAW;IAC1B;;;;mEAI+D;IAC/D,QAAQ,CAAC,QAAQ,CAAC,EAAE,mBAAmB,CAAC;IAExC,4DAA4D;IAC5D,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IAE9C;;;;0GAIsG;IACtG,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE/C;;;;sEAIkE;IAClE,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACpC;AAED;;;;;;;;;GASG;AACH,MAAM,MAAM,mBAAmB,GAC3B;IAAE,IAAI,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAC5B;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAAC;AAE7C,yGAAyG;AACzG,wBAAgB,uBAAuB,CAAC,CAAC,EAAE,mBAAmB,EAAE,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAK/F;AAMD,kFAAkF;AAClF,wBAAgB,yBAAyB,CAAC,EAAE,EAAE,mBAAmB,GAAG,MAAM,CAEzE;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,OAAO,GAAG,mBAAmB,CAoB1E;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,iBAAiB;IAChC,yEAAyE;IACzE,QAAQ,EAAE,mBAAmB,CAAC;IAC9B,gGAAgG;IAChG,SAAS,EAAE,MAAM,CAAC;IAClB;;;;;;;gFAO4E;IAC5E,kBAAkB,EAAE,OAAO,CAAC;CAC7B;AAED;;;;;;;;;+FAS+F;AAC/F,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,OAAO,GAAG,iBAAiB,CAetE;AAGD;;;;;;;;;;GAUG;AACH,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,mBAAmB,EAAE,MAAM,EAAE,mBAAmB,GAAG,MAAM,CAQ1G"}
@@ -40,6 +40,30 @@ export function parseSecretStoreIdentity(raw) {
40
40
  }
41
41
  throw new Error('secret-store identity kind must be "fs" or "injected"');
42
42
  }
43
+ /** Parse a {@link DaemonStoreAnswer} off the wire through the same closed-parser discipline as
44
+ * {@link parseSecretStoreIdentity}: a reply that cannot produce every field is a failure to
45
+ * determine, raised here, never a partially trusted answer assembled by the caller. CLOSED means
46
+ * closed in both directions: an unknown top-level key is refused rather than ignored, so a reply
47
+ * carrying a field this version does not know about is a failure to determine instead of an
48
+ * answer that was silently read as something narrower than it claimed to be.
49
+ *
50
+ * A daemon older than #1694 replies with a bare identity and no binding. That lands here as a
51
+ * parse failure, which is the intended reading: the caller cannot establish who answered, so it
52
+ * must refuse rather than fall back to the unbound comparison this type exists to replace. */
53
+ export function parseDaemonStoreAnswer(raw) {
54
+ if (raw === null || typeof raw !== "object" || Array.isArray(raw))
55
+ throw new Error("delivery-daemon store answer must be an object");
56
+ const o = raw;
57
+ const ADMITTED = ["identity", "responder", "holdsDeliveryLease"];
58
+ const unknown = Object.keys(o).filter((k) => !ADMITTED.includes(k));
59
+ if (unknown.length)
60
+ throw new Error(`delivery-daemon store answer admits only {identity, responder, holdsDeliveryLease} (unknown: ${unknown.sort().join(", ")})`);
61
+ if (typeof o.responder !== "string" || !o.responder.trim())
62
+ throw new Error("delivery-daemon store answer requires a non-blank responder identity");
63
+ if (typeof o.holdsDeliveryLease !== "boolean")
64
+ throw new Error("delivery-daemon store answer requires holdsDeliveryLease as a boolean (an absent claim is not a false one)");
65
+ return { identity: parseSecretStoreIdentity(o.identity), responder: o.responder, holdsDeliveryLease: o.holdsDeliveryLease };
66
+ }
43
67
  /**
44
68
  * The notice a manager logs when its remint store and the daemon's reload source are not one
45
69
  * authority. That manager is not the daemon-credential renewal owner: it serves the space and
@@ -1 +1 @@
1
- {"version":3,"file":"secret-store.js","sourceRoot":"","sources":["../src/secret-store.ts"],"names":[],"mappings":"AAqEA,yGAAyG;AACzG,MAAM,UAAU,uBAAuB,CAAC,CAAsB,EAAE,CAAsB;IACpF,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI;QAAE,OAAO,KAAK,CAAC;IACpC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI;QAAE,OAAO,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAC/F,IAAI,CAAC,CAAC,IAAI,KAAK,UAAU,IAAI,CAAC,CAAC,IAAI,KAAK,UAAU;QAAE,OAAO,CAAC,CAAC,UAAU,KAAK,CAAC,CAAC,UAAU,CAAC;IACzF,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,aAAa,CAAC,CAAS;IAC9B,OAAO,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;AACvC,CAAC;AAED,kFAAkF;AAClF,MAAM,UAAU,yBAAyB,CAAC,EAAuB;IAC/D,OAAO,EAAE,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,UAAU,EAAE,CAAC;AAClE,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,wBAAwB,CAAC,GAAY;IACnD,IAAI,GAAG,KAAK,IAAI,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;QAC/D,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;IAC7D,MAAM,CAAC,GAAG,GAA8B,CAAC;IACzC,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC5B,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;QACpB,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,MAAM,IAAI,CAAC,KAAK,MAAM,CAAC;YAChD,MAAM,IAAI,KAAK,CAAC,2DAA2D,CAAC,CAAC;QAC/E,IAAI,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE;YAC9C,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAC;QAChF,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACtC,CAAC;IACD,IAAI,CAAC,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;QAC1B,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,MAAM,IAAI,CAAC,KAAK,YAAY,CAAC;YACtD,MAAM,IAAI,KAAK,CAAC,uEAAuE,CAAC,CAAC;QAC3F,IAAI,OAAO,CAAC,CAAC,UAAU,KAAK,QAAQ,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,EAAE;YAC1D,MAAM,IAAI,KAAK,CAAC,wEAAwE,CAAC,CAAC;QAC5F,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC;IACxD,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;AAC3E,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,0BAA0B,CAAC,KAA0B,EAAE,MAA2B;IAChG,OAAO,CACL,0DAA0D;QAC1D,gCAAgC,yBAAyB,CAAC,KAAK,CAAC,6BAA6B;QAC7F,gBAAgB,yBAAyB,CAAC,MAAM,CAAC,0CAA0C;QAC3F,wEAAwE;QACxE,0FAA0F,CAC3F,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"secret-store.js","sourceRoot":"","sources":["../src/secret-store.ts"],"names":[],"mappings":"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"}