@cotal-ai/core 0.15.0 → 0.17.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/acls.d.ts +21 -0
- package/dist/acls.d.ts.map +1 -1
- package/dist/acls.js +75 -12
- package/dist/acls.js.map +1 -1
- package/dist/artifact.d.ts +45 -0
- package/dist/artifact.d.ts.map +1 -0
- package/dist/artifact.js +82 -0
- package/dist/artifact.js.map +1 -0
- package/dist/backup-config.d.ts +9 -2
- package/dist/backup-config.d.ts.map +1 -1
- package/dist/backup-config.js +6 -2
- package/dist/backup-config.js.map +1 -1
- package/dist/broker-tls.d.ts +70 -0
- package/dist/broker-tls.d.ts.map +1 -0
- package/dist/broker-tls.js +195 -0
- package/dist/broker-tls.js.map +1 -0
- package/dist/canonical.d.ts +14 -1
- package/dist/canonical.d.ts.map +1 -1
- package/dist/canonical.js +21 -1
- package/dist/canonical.js.map +1 -1
- package/dist/channels.d.ts.map +1 -1
- package/dist/channels.js +18 -9
- package/dist/channels.js.map +1 -1
- package/dist/endpoint-action.d.ts +108 -3
- package/dist/endpoint-action.d.ts.map +1 -1
- package/dist/endpoint-action.js +209 -20
- package/dist/endpoint-action.js.map +1 -1
- package/dist/endpoint-binding.d.ts +138 -8
- package/dist/endpoint-binding.d.ts.map +1 -1
- package/dist/endpoint-binding.js +233 -26
- package/dist/endpoint-binding.js.map +1 -1
- package/dist/endpoint-contract-store.d.ts +24 -1
- package/dist/endpoint-contract-store.d.ts.map +1 -1
- package/dist/endpoint-contract-store.js +79 -27
- package/dist/endpoint-contract-store.js.map +1 -1
- package/dist/endpoint-envelope.d.ts +15 -37
- package/dist/endpoint-envelope.d.ts.map +1 -1
- package/dist/endpoint-envelope.js +93 -44
- package/dist/endpoint-envelope.js.map +1 -1
- package/dist/endpoint-error.d.ts +33 -0
- package/dist/endpoint-error.d.ts.map +1 -0
- package/dist/endpoint-error.js +34 -0
- package/dist/endpoint-error.js.map +1 -0
- package/dist/endpoint-grants.d.ts +48 -7
- package/dist/endpoint-grants.d.ts.map +1 -1
- package/dist/endpoint-grants.js +97 -9
- package/dist/endpoint-grants.js.map +1 -1
- package/dist/endpoint-invoke.d.ts +138 -0
- package/dist/endpoint-invoke.d.ts.map +1 -0
- package/dist/endpoint-invoke.js +340 -0
- package/dist/endpoint-invoke.js.map +1 -0
- package/dist/endpoint-records.d.ts.map +1 -1
- package/dist/endpoint-records.js +17 -0
- package/dist/endpoint-records.js.map +1 -1
- package/dist/endpoint-serve-kv.d.ts +97 -0
- package/dist/endpoint-serve-kv.d.ts.map +1 -0
- package/dist/endpoint-serve-kv.js +336 -0
- package/dist/endpoint-serve-kv.js.map +1 -0
- package/dist/endpoint-serve.d.ts.map +1 -1
- package/dist/endpoint-serve.js +21 -1
- package/dist/endpoint-serve.js.map +1 -1
- package/dist/endpoint-service.d.ts +1 -1
- package/dist/endpoint-service.d.ts.map +1 -1
- package/dist/endpoint-service.js +34 -10
- package/dist/endpoint-service.js.map +1 -1
- package/dist/endpoint-session-rail.d.ts +127 -0
- package/dist/endpoint-session-rail.d.ts.map +1 -0
- package/dist/endpoint-session-rail.js +325 -0
- package/dist/endpoint-session-rail.js.map +1 -0
- package/dist/endpoint-session.d.ts +1 -115
- package/dist/endpoint-session.d.ts.map +1 -1
- package/dist/endpoint-session.js +4 -316
- package/dist/endpoint-session.js.map +1 -1
- package/dist/endpoint-subjects.d.ts +10 -1
- package/dist/endpoint-subjects.d.ts.map +1 -1
- package/dist/endpoint-subjects.js +10 -1
- package/dist/endpoint-subjects.js.map +1 -1
- package/dist/endpoint-verbs.d.ts +1 -2
- package/dist/endpoint-verbs.d.ts.map +1 -1
- package/dist/endpoint-verbs.js +6 -6
- package/dist/endpoint-verbs.js.map +1 -1
- package/dist/endpoint.d.ts +169 -15
- package/dist/endpoint.d.ts.map +1 -1
- package/dist/endpoint.js +491 -43
- package/dist/endpoint.js.map +1 -1
- package/dist/identity.d.ts +19 -0
- package/dist/identity.d.ts.map +1 -1
- package/dist/identity.js +12 -0
- package/dist/identity.js.map +1 -1
- package/dist/index.d.ts +9 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +9 -0
- package/dist/index.js.map +1 -1
- package/dist/kv-scan.d.ts +105 -0
- package/dist/kv-scan.d.ts.map +1 -0
- package/dist/kv-scan.js +192 -0
- package/dist/kv-scan.js.map +1 -0
- package/dist/lease.d.ts +12 -5
- package/dist/lease.d.ts.map +1 -1
- package/dist/lease.js.map +1 -1
- package/dist/lifecycle-saga.d.ts +174 -0
- package/dist/lifecycle-saga.d.ts.map +1 -0
- package/dist/lifecycle-saga.js +418 -0
- package/dist/lifecycle-saga.js.map +1 -0
- package/dist/lifecycle-state.d.ts +202 -0
- package/dist/lifecycle-state.d.ts.map +1 -0
- package/dist/lifecycle-state.js +347 -0
- package/dist/lifecycle-state.js.map +1 -0
- package/dist/members.d.ts +8 -4
- package/dist/members.d.ts.map +1 -1
- package/dist/members.js +19 -9
- package/dist/members.js.map +1 -1
- package/dist/parts.d.ts +13 -0
- package/dist/parts.d.ts.map +1 -0
- package/dist/parts.js +17 -0
- package/dist/parts.js.map +1 -0
- package/dist/provision.d.ts +106 -9
- package/dist/provision.d.ts.map +1 -1
- package/dist/provision.js +506 -110
- package/dist/provision.js.map +1 -1
- package/dist/schema-profile.d.ts +3 -2
- package/dist/schema-profile.d.ts.map +1 -1
- package/dist/schema-profile.js +242 -18
- package/dist/schema-profile.js.map +1 -1
- package/dist/session-browser.d.ts +15 -0
- package/dist/session-browser.d.ts.map +1 -0
- package/dist/session-browser.js +14 -0
- package/dist/session-browser.js.map +1 -0
- package/dist/session-terminal-frames.d.ts +36 -0
- package/dist/session-terminal-frames.d.ts.map +1 -0
- package/dist/session-terminal-frames.js +149 -0
- package/dist/session-terminal-frames.js.map +1 -0
- package/dist/spaces.d.ts.map +1 -1
- package/dist/spaces.js +6 -1
- package/dist/spaces.js.map +1 -1
- package/dist/streams.d.ts +53 -1
- package/dist/streams.d.ts.map +1 -1
- package/dist/streams.js +135 -8
- package/dist/streams.js.map +1 -1
- package/dist/subjects.d.ts +32 -26
- package/dist/subjects.d.ts.map +1 -1
- package/dist/subjects.js +38 -25
- package/dist/subjects.js.map +1 -1
- package/dist/types.d.ts +27 -1
- package/dist/types.d.ts.map +1 -1
- package/package.json +6 -1
package/dist/endpoint-binding.js
CHANGED
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
* created by exactly one trusted principal (provisioner or the owning infra principal) and the
|
|
10
10
|
* §13.9 grant rows are generated against these same names and filters.
|
|
11
11
|
*/
|
|
12
|
-
import { AckPolicy, DeliverPolicy, RetentionPolicy, StorageType, } from "@nats-io/jetstream";
|
|
12
|
+
import { AckPolicy, DeliverPolicy, DiscardPolicy, RetentionPolicy, StorageType, } from "@nats-io/jetstream";
|
|
13
13
|
import { nanos } from "@nats-io/transport-node";
|
|
14
14
|
import { spacePrefix, token, assertInboxConnId } from "./subjects.js";
|
|
15
15
|
import { endpointToken, assertIdToken, assertGrantId, assertPoolToken, assertLifecycleToken, callerTokens, } from "./endpoint-subjects.js";
|
|
@@ -44,6 +44,17 @@ export function retirementFrontierStreams(space) {
|
|
|
44
44
|
export function epAuthBucket(space) {
|
|
45
45
|
return `cotal_auth_${token(space)}`;
|
|
46
46
|
}
|
|
47
|
+
/** The per-space SESSION ledger store (P2 item 6, §13.6): the `session.<id>` rows the manager's
|
|
48
|
+
* session plane CASes over. DEDICATED — split out of the auth bucket deliberately. KV reads are
|
|
49
|
+
* subject-BLIND (a `STREAM.MSG.GET` on a bucket serves any key, the campaign's known vector class),
|
|
50
|
+
* so co-locating session rows with credentials + gates would let the standing session-ledger cred read
|
|
51
|
+
* the whole control plane. A dedicated bucket makes that blind read STRUCTURALLY confined to session
|
|
52
|
+
* rows and nothing else. `allow_direct=false` for the SAME reason the auth bucket carries it: every
|
|
53
|
+
* ledger fence is a leader-served revision-pinned CAS (the one-use `createIssuing`, the finalize +
|
|
54
|
+
* terminal updates), and Direct Get's follower/mirror reads would defeat read-your-writes (§13.1). */
|
|
55
|
+
export function sessionsBucket(space) {
|
|
56
|
+
return `cotal_sessions_${token(space)}`;
|
|
57
|
+
}
|
|
47
58
|
// ---- §13.12 retention knobs (documented defaults, overridable per space policy) ----
|
|
48
59
|
/** EPJ duplicate window: the server MINIMUM (100 ms), set explicitly. A `0` is not accepted
|
|
49
60
|
* (it normalizes to the 120 s default), and native dedupe is deliberately NOT relied upon —
|
|
@@ -70,11 +81,14 @@ export const EP_TIMER_MAX_AGE_MS = 31 * 24 * 60 * 60 * 1000;
|
|
|
70
81
|
export const EP_AUTH_MARKER_TTL_MS = 60 * 60 * 1000;
|
|
71
82
|
/**
|
|
72
83
|
* Create (idempotently) the §13.12 per-space control-surface resources: the seven JetStream
|
|
73
|
-
* streams, the work-pool WorkQueue, and the
|
|
74
|
-
* `jsm.streams.add`/`kvm.create` are idempotent for an identical
|
|
75
|
-
* config delta, which is wanted: a drifted resource is an operator error,
|
|
84
|
+
* streams, the work-pool WorkQueue, and the KV buckets (records + auth + the §13.6 session ledger).
|
|
85
|
+
* Privileged — runs at space setup. `jsm.streams.add`/`kvm.create` are idempotent for an identical
|
|
86
|
+
* config and FAIL LOUD on a config delta, which is wanted: a drifted resource is an operator error,
|
|
87
|
+
* never silently adopted.
|
|
76
88
|
*
|
|
77
|
-
*
|
|
89
|
+
* The session byte SUBJECTS (`eps`) are deliberately absent: core-only, never captured (§13.12).
|
|
90
|
+
* Only the durable `session.<id>` ledger rows are captured — in their own dedicated bucket
|
|
91
|
+
* ({@link createSessionsStore}), never the auth bucket.
|
|
78
92
|
*/
|
|
79
93
|
export async function createEndpointStreams(jsm, kvm, space, opts = {}) {
|
|
80
94
|
const p = spacePrefix(space);
|
|
@@ -148,24 +162,109 @@ export async function createEndpointStreams(jsm, kvm, space, opts = {}) {
|
|
|
148
162
|
storage: StorageType.File,
|
|
149
163
|
allow_direct: false,
|
|
150
164
|
});
|
|
151
|
-
|
|
152
|
-
// create-only mediated publication, NO age eviction (artifacts are permanent). allow_direct:
|
|
153
|
-
// the subject-scoped last-by-subject read IS the fetch path. Permanence is BROKER-ENFORCED,
|
|
154
|
-
// not just configured-by-omission: deny_delete/deny_purge reject the message-delete and purge
|
|
155
|
-
// APIs even from a stream-API-holding principal, so a digest subject cannot be emptied and
|
|
156
|
-
// re-created through them. Per §13.12 the flags alone are NOT the whole claim: permanence is
|
|
157
|
-
// their COMBINATION with the retention floor (no age eviction, no teardown), verify-on-read
|
|
158
|
-
// pinning WHAT a subject carries, and stream management held by no profile.
|
|
159
|
-
await jsm.streams.add({
|
|
160
|
-
name: epcStreamName(space),
|
|
161
|
-
subjects: [`${p}.epc.>`],
|
|
162
|
-
retention: RetentionPolicy.Limits,
|
|
163
|
-
storage: StorageType.File,
|
|
164
|
-
allow_direct: true,
|
|
165
|
-
deny_delete: true,
|
|
166
|
-
deny_purge: true,
|
|
167
|
-
});
|
|
165
|
+
await ensureContractStore(jsm, space);
|
|
168
166
|
await ensureAuthorityStores(jsm, kvm, space);
|
|
167
|
+
// P2 item 6: the DEDICATED §13.6 session ledger bucket. The eps byte SUBJECTS stay core-only and
|
|
168
|
+
// uncaptured (above), but the `session.<id>` ledger rows are a captured authority KV — kept in
|
|
169
|
+
// their own bucket so the manager's standing session-ledger cred's bucket-blind STREAM.MSG.GET reads
|
|
170
|
+
// ONLY session rows (the §13.9 subject-blindness structural fix). Provisioned here so every mesh
|
|
171
|
+
// that ensures the endpoint streams (auth + open both run this at the manager's boot) has it.
|
|
172
|
+
await createSessionsStore(jsm, kvm, space);
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* Ensure the per-space CONTRACT store (EPC) exists with its normative shape (§13.7/§13.12) —
|
|
176
|
+
* content-addressed artifacts, one immutable message per digest subject, create-only mediated
|
|
177
|
+
* publication, NO age eviction (artifacts are permanent). allow_direct: the subject-scoped
|
|
178
|
+
* last-by-subject read IS the fetch path.
|
|
179
|
+
*
|
|
180
|
+
* PER-SUBJECT IMMUTABILITY is BROKER-ENFORCED, not left to publisher cooperation (the append-shadow
|
|
181
|
+
* blocker, live-confirmed by the panel). The create-only fence `Nats-Expected-Last-Subject-Sequence:
|
|
182
|
+
* 0` is a publisher-SET header the `epc.*` publish grant cannot compel, so a non-cooperative
|
|
183
|
+
* grant-holder could APPEND a second message to an already-published digest subject; `last_by_subj`
|
|
184
|
+
* would then return that shadow and a fail-closed read would make the honest artifact permanently
|
|
185
|
+
* unfetchable (deny_delete/deny_purge block recovery — an operator-reprovision-only DoS, and at
|
|
186
|
+
* §13.11's ep-only cut the SOLE contract path). The store closes this at the SOURCE:
|
|
187
|
+
* `max_msgs_per_subject: 1` + `discard: new` + `discard_new_per_subject: true` makes a second
|
|
188
|
+
* publish to an occupied digest subject BROKER-REJECTED (err 10077) regardless of headers, so a
|
|
189
|
+
* digest subject holds exactly one message forever. `deny_delete`/`deny_purge` then keep that one
|
|
190
|
+
* message from being removed. (The read path additionally defends itself version-agnostically —
|
|
191
|
+
* {@link fetchContractArtifact} prefers the create-only winner over any shadow — so a broker or a
|
|
192
|
+
* legacy stream that lacked the per-subject cap is still safe.)
|
|
193
|
+
*
|
|
194
|
+
* Create-or-verify-AND-harden, safe at every authority-daemon boot (the {@link
|
|
195
|
+
* ensureAuthorityStores} discipline): a fresh space gets the store created with the full shape; a
|
|
196
|
+
* CLEAN pre-existing store (incl. a pre-hardening one from an earlier release, OR the config-A
|
|
197
|
+
* footgun `max_msgs_per_subject:1` + `discard:old` that would DELETE the honest artifact) is UPDATED
|
|
198
|
+
* to the three config-B flags (idempotent, like the records store's rollup/deny update) and then
|
|
199
|
+
* VERIFIED - a shape that cannot be brought to config B FAILS LOUD, never silently adopted.
|
|
200
|
+
*
|
|
201
|
+
* The config-B upgrade ENFORCES per-subject immutability GOING FORWARD; it does NOT heal a shadow
|
|
202
|
+
* that predates it. Applying `max_msgs_per_subject:1` trims each subject to its newest message, so a
|
|
203
|
+
* legacy store that ALREADY holds a shadow (some digest subject with >1 message) would have the
|
|
204
|
+
* honest create-only winner trimmed away and the shadow cemented. Rather than silently cement it,
|
|
205
|
+
* the upgrade REFUSES LOUD on such a store (`messages > num_subjects`), so the operator reprovisions
|
|
206
|
+
* a clean store. This is a narrow guard: a fresh deploy is born at config B and never reaches it.
|
|
207
|
+
*
|
|
208
|
+
* FAIL-LOUD IS THE AGENT'S DEFENSE (critic completeness item): because this verify refuses to serve
|
|
209
|
+
* unless all three config-B flags are present, the manager NEVER serves an un-hardened EPC store —
|
|
210
|
+
* so a shadow-append cannot exist on any store an agent reads. That is why the ordinary agent
|
|
211
|
+
* baseline needs only the subject-scoped `last_by_subj` read (never the bare `next_by_subj` the
|
|
212
|
+
* shadow fallback uses): on every store the manager actually serves, `last_by_subj` always verifies
|
|
213
|
+
* and the fallback never triggers. The {@link fetchContractArtifact} create-only-winner fallback is
|
|
214
|
+
* defense-in-depth for the publisher path (the executor, which holds `next_by_subj`) and for a
|
|
215
|
+
* hypothetical un-hardened store the manager would refuse to serve anyway. On the pinned broker
|
|
216
|
+
* floor (nats-server >= 2.12, well past the 2.9 that added `discard_new_per_subject`) config B always
|
|
217
|
+
* lands; an older broker that ignores the flag is caught here and the daemon fails to start.
|
|
218
|
+
*/
|
|
219
|
+
export async function ensureContractStore(jsm, space) {
|
|
220
|
+
const name = epcStreamName(space);
|
|
221
|
+
const subject = `${spacePrefix(space)}.epc.>`;
|
|
222
|
+
const hardening = { max_msgs_per_subject: 1, discard: DiscardPolicy.New, discard_new_per_subject: true };
|
|
223
|
+
if (await jsm.streams.info(name).catch(() => undefined) === undefined) {
|
|
224
|
+
await jsm.streams.add({
|
|
225
|
+
name,
|
|
226
|
+
subjects: [subject],
|
|
227
|
+
retention: RetentionPolicy.Limits,
|
|
228
|
+
storage: StorageType.File,
|
|
229
|
+
allow_direct: true,
|
|
230
|
+
deny_delete: true,
|
|
231
|
+
deny_purge: true,
|
|
232
|
+
...hardening,
|
|
233
|
+
});
|
|
234
|
+
}
|
|
235
|
+
else {
|
|
236
|
+
// Upgrade path: an EPC stream from a pre-hardening release lacks the per-subject cap. Add it
|
|
237
|
+
// idempotently (a live update of max_msgs_per_subject + discard settings is allowed and, tested,
|
|
238
|
+
// leaves a CLEAN store's artifacts intact). A stream that WON'T take the update surfaces at the
|
|
239
|
+
// verify below.
|
|
240
|
+
const info = await jsm.streams.info(name);
|
|
241
|
+
const cur = info.config;
|
|
242
|
+
if (cur.max_msgs_per_subject !== 1 || cur.discard !== DiscardPolicy.New || cur.discard_new_per_subject !== true) {
|
|
243
|
+
// HEAL-OR-FAIL, never cement (critic upgrade-trim residual): applying max_msgs_per_subject:1
|
|
244
|
+
// TRIMS each subject to its NEWEST message. On a CLEAN legacy store (create-only, ≤1 message
|
|
245
|
+
// per subject) that trims nothing. But if a legacy store ALREADY holds a shadow (a raw append
|
|
246
|
+
// left a subject with >1 message, from before this hardening existed), the trim would keep the
|
|
247
|
+
// NEWEST (the shadow) and DELETE the honest create-only winner - cementing the shadow
|
|
248
|
+
// permanently. `messages > num_subjects` is exactly "some subject has more than one message",
|
|
249
|
+
// so refuse the upgrade LOUD there: the operator reprovisions a clean store rather than the
|
|
250
|
+
// daemon silently trim-cementing a pre-existing shadow. (Fresh deploys are born at config B and
|
|
251
|
+
// never reach this; the check only guards a legacy store that was shadowed before its first
|
|
252
|
+
// config-B boot.)
|
|
253
|
+
const { messages, num_subjects } = info.state;
|
|
254
|
+
if (messages > 0 && (num_subjects === undefined || messages > num_subjects))
|
|
255
|
+
throw new Error(`the contract store ${name} is a pre-hardening stream that cannot be proven clean (${messages} messages across ${String(num_subjects)} subjects) - a subject holding more than one message means a shadow-append predates this immutability upgrade, and applying the per-subject cap would TRIM to the newest (shadow) message and delete the honest artifact; reprovision a clean store rather than cement the shadow (SPEC 13.7/13.12)`);
|
|
256
|
+
await jsm.streams.update(name, { ...cur, ...hardening });
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
const cfg = (await jsm.streams.info(name)).config;
|
|
260
|
+
if (cfg.allow_direct !== true || cfg.deny_delete !== true || cfg.deny_purge !== true)
|
|
261
|
+
throw new Error(`the contract store ${name} has a drifted shape (allow_direct=${String(cfg.allow_direct)}, deny_delete=${String(cfg.deny_delete)}, deny_purge=${String(cfg.deny_purge)}); an authority store is never silently adopted - reprovision it (SPEC 13.12)`);
|
|
262
|
+
if (cfg.max_msgs_per_subject !== 1 || cfg.discard !== DiscardPolicy.New || cfg.discard_new_per_subject !== true)
|
|
263
|
+
throw new Error(`the contract store ${name} does not enforce per-subject immutability (max_msgs_per_subject=${String(cfg.max_msgs_per_subject)}, discard=${String(cfg.discard)}, discard_new_per_subject=${String(cfg.discard_new_per_subject)}); a digest subject must hold exactly one broker-immutable message or an append-shadow can DoS the store - reprovision it (SPEC 13.7/13.12)`);
|
|
264
|
+
if (!Array.isArray(cfg.subjects) || cfg.subjects.length !== 1 || cfg.subjects[0] !== subject)
|
|
265
|
+
throw new Error(`the contract store ${name} does not carry exactly the subject ${subject} (got ${JSON.stringify(cfg.subjects)}); a stream that captures anything else is not the contract store - reprovision it (SPEC 13.12)`);
|
|
266
|
+
if (cfg.storage !== "file")
|
|
267
|
+
throw new Error(`the contract store ${name} has storage ${JSON.stringify(cfg.storage)}, not file; a non-durable contract store forgets permanent artifacts on restart - reprovision it (SPEC 13.12)`);
|
|
169
268
|
}
|
|
170
269
|
/**
|
|
171
270
|
* Ensure the two per-space AUTHORITY stores exist with their normative shape (§13.12):
|
|
@@ -209,6 +308,27 @@ export async function ensureAuthorityStores(jsm, kvm, space) {
|
|
|
209
308
|
throw new Error(`the auth store ${authBucket} has a drifted shape (allow_direct=${String(authCfg.allow_direct)}, allow_msg_ttl=${String(authCfg.allow_msg_ttl)}); an authority store is never silently adopted - reprovision it (SPEC 13.12)`);
|
|
210
309
|
assertAuthorityStoreBinding(authCfg, authBucket);
|
|
211
310
|
}
|
|
311
|
+
/** Create (idempotently) the per-space SESSION ledger store (P2 item 6, §13.6): the DEDICATED
|
|
312
|
+
* {@link sessionsBucket} the manager's session plane CASes `session.<id>` rows over. Kept OUT of
|
|
313
|
+
* {@link ensureAuthorityStores} deliberately — the auth path never touches session rows, and the
|
|
314
|
+
* manager provisions this store from its own boot — but it wears the SAME authority-store shape as
|
|
315
|
+
* the auth bucket: `allow_direct=false` (every ledger fence is a leader-served revision-pinned CAS,
|
|
316
|
+
* and Direct Get's follower reads would defeat read-your-writes, §13.1) plus the per-key TTL
|
|
317
|
+
* machinery (a terminal/expired session row can carry a delete-marker TTL). The dedication is the
|
|
318
|
+
* security substance: the standing session-ledger cred's `kv.get` is a bucket-blind body-selected read,
|
|
319
|
+
* and a bucket holding ONLY `session.>` rows makes that read expose nothing but session state — the
|
|
320
|
+
* structural fix for the §13.9 subject-blindness a shared auth bucket would carry (creds + gates).
|
|
321
|
+
* Create-or-verify, safe at every manager boot; a drifted store FAILS LOUD (§13.12). */
|
|
322
|
+
export async function createSessionsStore(jsm, kvm, space) {
|
|
323
|
+
const bucket = sessionsBucket(space);
|
|
324
|
+
const stream = `KV_${bucket}`;
|
|
325
|
+
if (await jsm.streams.info(stream).catch(() => undefined) === undefined)
|
|
326
|
+
await kvm.create(bucket, { allow_direct: false, markerTTL: EP_AUTH_MARKER_TTL_MS });
|
|
327
|
+
const cfg = (await jsm.streams.info(stream)).config;
|
|
328
|
+
if (cfg.allow_direct !== false || cfg.allow_msg_ttl !== true)
|
|
329
|
+
throw new Error(`the sessions store ${bucket} has a drifted shape (allow_direct=${String(cfg.allow_direct)}, allow_msg_ttl=${String(cfg.allow_msg_ttl)}); an authority store is never silently adopted - reprovision it (SPEC 13.12)`);
|
|
330
|
+
assertAuthorityStoreBinding(cfg, bucket);
|
|
331
|
+
}
|
|
212
332
|
/** The store-BINDING half of the verify (SPEC 13.12): a stream wearing an authority bucket's name
|
|
213
333
|
* must BE that KV bucket — exactly the one `$KV.<bucket>.>` subject (an extra captured subject
|
|
214
334
|
* would put foreign bodies inside every body-selected MSG.GET grant on the stream) and durable
|
|
@@ -712,6 +832,9 @@ export function commitPrincipalGrants(space, endpoint, connId) {
|
|
|
712
832
|
const p = spacePrefix(space);
|
|
713
833
|
const records = recordsBucket(space);
|
|
714
834
|
const publish = [
|
|
835
|
+
// ONE terminal subject per goal (SPEC:1394, the §13.9 "Result/receipt/terminal/resume facts"
|
|
836
|
+
// row): the exact-arity `…result` leaf, never an `…result.*` epoch-scoped variant — a per-epoch
|
|
837
|
+
// subject hid a legitimate pre-restart winner from every reader.
|
|
715
838
|
`${p}.epf.${e}.goal.*.*.*.*.result`,
|
|
716
839
|
`${p}.epf.${e}.eff.>`,
|
|
717
840
|
`${p}.epf.${e}.receipt.>`,
|
|
@@ -726,6 +849,84 @@ export function commitPrincipalGrants(space, endpoint, connId) {
|
|
|
726
849
|
];
|
|
727
850
|
return { publish, subscribe: [`_INBOX_${assertInboxConnId(connId)}.>`] };
|
|
728
851
|
}
|
|
852
|
+
/** The SELF-MEDIATED GOAL-WRITER profile (P2 item 2 "spawn becomes an action"): a standing
|
|
853
|
+
* connection that both BINDS a goal at accept AND COMMITS its terminal, for an endpoint that
|
|
854
|
+
* accepts action goals INLINE on its ephemeral serve handler (Model B) rather than through a
|
|
855
|
+
* separate canonicalizer + effects executor. It is exactly {@link commitPrincipalGrants} (the
|
|
856
|
+
* `goal.*.*.*.*.result` terminal + `$KV.<records>.goal.<e>.>` record write + the two leader-served
|
|
857
|
+
* `STREAM.MSG.GET` fencing reads the substrate uses) PLUS the ONE row commitPrincipalGrants
|
|
858
|
+
* deliberately leaves to the canonicalizer — the goal `.bind` leaf
|
|
859
|
+
* (`epf.<e>.goal.*.*.*.*.bind`) — so this single principal owns the whole `accepted → terminal`
|
|
860
|
+
* goal-fact chain of its OWN endpoint. The endpoint's SERVE credential
|
|
861
|
+
* ({@link import("./endpoint-grants.js").epServePublishRows}) holds NONE of these: a serve
|
|
862
|
+
* connection is broker-DENIED every goal write, which is the item-2 privilege separation (the
|
|
863
|
+
* dedicated writer is minted on a distinct connection, the serve rails stay serve-only). All of
|
|
864
|
+
* commitPrincipalGrants' D32 residuals carry unchanged (payload-blind create-only publish; raw
|
|
865
|
+
* `$KV` cannot enforce the per-key CAS the substrate layers on; the two body-selected
|
|
866
|
+
* `STREAM.MSG.GET` reads expose EPF + records space-wide). The reply inbox is connection-scoped
|
|
867
|
+
* (`_INBOX_<connId>.>`). The `eff`/`wrk`/`receipt`/`cp`/`lease` families in the commit-principal
|
|
868
|
+
* base are inert for a goal-only endpoint (the manager writes none) but are the commit-principal
|
|
869
|
+
* profile's standard ceiling; a tighter goal-only ceiling is a follow-up if the panel prefers it. */
|
|
870
|
+
export function goalWriterGrants(space, endpoint, connId) {
|
|
871
|
+
const base = commitPrincipalGrants(space, endpoint, connId);
|
|
872
|
+
const e = endpointToken(endpoint);
|
|
873
|
+
const bindLeaf = `${spacePrefix(space)}.epf.${e}.goal.*.*.*.*.bind`;
|
|
874
|
+
// must-5 Q-B — the reconcile index: the goal-writer records each accepted goal under
|
|
875
|
+
// `goalidx.<e>.<caller triple>.<goalId>` (create-only) before the bind and deletes it at the
|
|
876
|
+
// terminal, so a successor incarnation can settle orphaned goals. Key-pinned to THIS endpoint's
|
|
877
|
+
// index subtree; the goal-writer holds NO records CONSUMER.CREATE (the boot sweep enumerates the
|
|
878
|
+
// index over the PROVISIONER, never this standing connection).
|
|
879
|
+
const indexRow = `$KV.${recordsBucket(space)}.goalidx.${e}.>`;
|
|
880
|
+
// must-5 (a) — the own-gate currency belt: the manager reads its OWN issuance gate
|
|
881
|
+
// (`epgate.<e>.<iid>`) over this connection before the first-terminal-fact CAS and skips a
|
|
882
|
+
// superseded commit. The auth store is `allow_direct=false`, so the read is a body-selected
|
|
883
|
+
// leader `STREAM.MSG.GET` that cannot be key-pinned to the single gate key — the SAME residual
|
|
884
|
+
// class the `endpoint-serve-executor` carries (reads any auth-bucket row = gate + ledger
|
|
885
|
+
// metadata, never bearer bytes), here on a standing rather than one-shot connection. The manager
|
|
886
|
+
// reads ONLY `epgate.<e>.<iid>`; (a) is the fast-fail belt, (b) barrier-revoke is the durable fence.
|
|
887
|
+
const gateRead = `${JSAPI}.STREAM.MSG.GET.KV_${epAuthBucket(space)}`;
|
|
888
|
+
return { publish: [bindLeaf, indexRow, gateRead, ...base.publish], subscribe: base.subscribe };
|
|
889
|
+
}
|
|
890
|
+
/** The manager's SESSION-LEDGER rows (P2 item 6): the standing connection that owns the §13.6
|
|
891
|
+
* session ledger and NOTHING else. It holds NO session rail — not the wildcard it used to hold,
|
|
892
|
+
* not an exact one. That is the whole point of the split.
|
|
893
|
+
*
|
|
894
|
+
* §13.6 gives the ledger a job the byte rails do not have: it is "a DURABLE named authority that
|
|
895
|
+
* survives the serving endpoint", the thing that still knows what to revoke after the endpoint
|
|
896
|
+
* serving a session is gone. So it is standing and renewable, while the rails it records are
|
|
897
|
+
* per-session, exact-subject, and die with their session ({@link import("./provision.js").Profile}
|
|
898
|
+
* `session-serving` / `session-caller`). An earlier revision fused the two into one standing
|
|
899
|
+
* credential carrying `eps.<endpoint>.*.<epoch>.{in,out}`, which contradicted §13.9:2526 ("no
|
|
900
|
+
* standing EPS grant exists on either side") and let one credential read and write every live
|
|
901
|
+
* session's bytes at that epoch. Splitting on the lifetime boundary is what removes the wildcard:
|
|
902
|
+
* the standing half no longer has rails to widen.
|
|
903
|
+
*
|
|
904
|
+
* Its store is the DEDICATED {@link sessionsBucket}, NOT the auth bucket. The write is
|
|
905
|
+
* `$KV.<sessions>.session.*` (create-only CAS + revision-pinned update; `sessionLedgerKey` is the
|
|
906
|
+
* single-token `session.<id>`). The read is a bucket-blind leader `STREAM.MSG.GET` (allow_direct=
|
|
907
|
+
* false, so `kv.get` is a body-selected read that cannot be key-pinned) — but the dedicated bucket
|
|
908
|
+
* holds ONLY `session.>` rows, so that blind read exposes nothing but session ledger state,
|
|
909
|
+
* structurally closing the §13.9 subject-blindness the auth bucket carries (creds + gates). The
|
|
910
|
+
* reply inbox is connection-scoped. NO auth-bucket, records-bucket, or messaging-plane grant.
|
|
911
|
+
*
|
|
912
|
+
* NAMED RESIDUAL: `session.*` is one token wide and carries no endpoint component, because a
|
|
913
|
+
* `sessionId` is an opaque unguessable token with no endpoint inside it. So this credential can
|
|
914
|
+
* read and CAS any session row in its space, including another endpoint's. That was equally true
|
|
915
|
+
* of the credential it replaces; it is not a regression, and it is confined to ledger STATE — row
|
|
916
|
+
* state and credential ids — never to session bytes, which now require a per-session credential
|
|
917
|
+
* this profile cannot mint. */
|
|
918
|
+
export function sessionLedgerGrants(space, connId) {
|
|
919
|
+
const SESS = sessionsBucket(space);
|
|
920
|
+
return {
|
|
921
|
+
publish: [
|
|
922
|
+
`$KV.${SESS}.session.*`, // ledger create/update — single-token key (`session.<id>`)
|
|
923
|
+
`${JSAPI}.STREAM.MSG.GET.KV_${SESS}`, // kv.get: leader-served body-selected read, confined to the sessions bucket
|
|
924
|
+
`${JSAPI}.STREAM.INFO.KV_${SESS}`, // Kvm bind probe (§13.12)
|
|
925
|
+
`${JSAPI}.INFO`, // JS-API context info (KV client)
|
|
926
|
+
],
|
|
927
|
+
subscribe: [`_INBOX_${assertInboxConnId(connId)}.>`], // connection-scoped reply inbox
|
|
928
|
+
};
|
|
929
|
+
}
|
|
729
930
|
/** The CONTRACT PUBLISHER principal's rows (§13.9 matrix "Contract-artifact publication" +
|
|
730
931
|
* the trusted-infra half of "Contract-artifact read"): publish `epc.*` (the digest-hex is ONE
|
|
731
932
|
* subject token; create-only rides `Nats-Expected-Last-Subject-Sequence: 0` at the typed path,
|
|
@@ -737,10 +938,16 @@ export function commitPrincipalGrants(space, endpoint, connId) {
|
|
|
737
938
|
* connection-scoped (`_INBOX_<connId>.>`, never the account-wide default).
|
|
738
939
|
*
|
|
739
940
|
* D32 residuals, EXPLICIT: (1) the `epc.*` publish is payload-blind — a compromised publisher
|
|
740
|
-
* can
|
|
741
|
-
* non-canonical or digest-mismatched bytes,
|
|
742
|
-
*
|
|
743
|
-
*
|
|
941
|
+
* can publish garbage artifacts at NEW (previously-unused) digest subjects (verify-on-read refuses
|
|
942
|
+
* to SERVE non-canonical or digest-mismatched bytes, so this is a bounded storage flood carrying
|
|
943
|
+
* no authority). It can NOT overwrite, shadow, or replace an EXISTING published artifact: the EPC
|
|
944
|
+
* store's shape ({@link ensureContractStore}: `max_msgs_per_subject:1` + discard-new-per-subject)
|
|
945
|
+
* makes a second publish to an occupied digest subject broker-REJECTED regardless of the
|
|
946
|
+
* create-only header, so per-subject immutability is broker-enforced, not publisher-cooperative.
|
|
947
|
+
* (Earlier revisions relied on the cooperative create-only header alone and a fail-closed read,
|
|
948
|
+
* which the panel's live repro showed a non-cooperative publisher could defeat by raw append — a
|
|
949
|
+
* permanent shadow-DoS; the stream shape + the create-only-winner read fallback close it.) (2) the
|
|
950
|
+
* raw JS API request carries a caller-selected reply subject (the same confused-deputy injection
|
|
744
951
|
* class as every API-holding profile). */
|
|
745
952
|
export function contractPublisherGrants(space, connId) {
|
|
746
953
|
const publish = [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"endpoint-binding.js","sourceRoot":"","sources":["../src/endpoint-binding.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,EACL,SAAS,EACT,aAAa,EACb,eAAe,EACf,WAAW,GAIZ,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AAEhD,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AACtE,OAAO,EACL,aAAa,EACb,aAAa,EACb,aAAa,EACb,eAAe,EACf,oBAAoB,EACpB,YAAY,GAEb,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EAAE,mBAAmB,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AACtF,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACnF,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAEtD,4FAA4F;AAC5F,kFAAkF;AAClF,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,YAAY,EAAE,aAAa,EAAE,CAAC;AAErE,+EAA+E;AAC/E,MAAM,UAAU,aAAa,CAAC,KAAa,IAAY,OAAO,OAAO,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;AACtF,MAAM,UAAU,gBAAgB,CAAC,KAAa,IAAY,OAAO,WAAW,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;AAC7F,MAAM,UAAU,aAAa,CAAC,KAAa,IAAY,OAAO,OAAO,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;AACtF,MAAM,UAAU,aAAa,CAAC,KAAa,IAAY,OAAO,OAAO,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;AACtF,MAAM,UAAU,aAAa,CAAC,KAAa,IAAY,OAAO,OAAO,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;AACtF,MAAM,UAAU,aAAa,CAAC,KAAa,IAAY,OAAO,OAAO,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;AAEtF;;;;;;;qFAOqF;AACrF,MAAM,UAAU,yBAAyB,CAAC,KAAa;IACrD,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,aAAa,CAAC,KAAK,CAAC,EAAE,aAAa,CAAC,KAAK,CAAC,EAAE,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAAC;AACxG,CAAC;AAED;;;oFAGoF;AACpF,MAAM,UAAU,YAAY,CAAC,KAAa;IACxC,OAAO,cAAc,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;AACtC,CAAC;AAED,uFAAuF;AAEvF;;;iGAGiG;AACjG,MAAM,CAAC,MAAM,uBAAuB,GAAG,GAAG,CAAC;AAE3C;;4CAE4C;AAC5C,MAAM,CAAC,MAAM,wBAAwB,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAE5D,qFAAqF;AACrF,MAAM,CAAC,MAAM,mBAAmB,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAEvD;8DAC8D;AAC9D,MAAM,CAAC,MAAM,qBAAqB,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAEzD;;2DAE2D;AAC3D,MAAM,CAAC,MAAM,mBAAmB,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAE5D;;;kDAGkD;AAClD,MAAM,CAAC,MAAM,qBAAqB,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAgBpD;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,GAAqB,EACrB,GAAQ,EACR,KAAa,EACb,OAA8B,EAAE;IAEhC,MAAM,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;IAC7B,6FAA6F;IAC7F,+FAA+F;IAC/F,MAAM,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC;QACpB,IAAI,EAAE,aAAa,CAAC,KAAK,CAAC;QAC1B,QAAQ,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC;QACxB,SAAS,EAAE,eAAe,CAAC,MAAM;QACjC,OAAO,EAAE,WAAW,CAAC,IAAI;QACzB,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,kBAAkB,IAAI,wBAAwB,CAAC;QACnE,gBAAgB,EAAE,KAAK,CAAC,uBAAuB,CAAC;KACjD,CAAC,CAAC;IACH,sFAAsF;IACtF,uFAAuF;IACvF,MAAM,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC;QACpB,IAAI,EAAE,aAAa,CAAC,KAAK,CAAC;QAC1B,QAAQ,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC;QACxB,SAAS,EAAE,eAAe,CAAC,MAAM;QACjC,OAAO,EAAE,WAAW,CAAC,IAAI;QACzB,YAAY,EAAE,IAAI;QAClB,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACpE,CAAC,CAAC;IACH,yBAAyB;IACzB,MAAM,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC;QACpB,IAAI,EAAE,aAAa,CAAC,KAAK,CAAC;QAC1B,QAAQ,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC;QACxB,SAAS,EAAE,eAAe,CAAC,MAAM;QACjC,OAAO,EAAE,WAAW,CAAC,IAAI;QACzB,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,aAAa,IAAI,mBAAmB,CAAC;KAC1D,CAAC,CAAC;IACH,wFAAwF;IACxF,4FAA4F;IAC5F,wFAAwF;IACxF,MAAM,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC;QACpB,IAAI,EAAE,gBAAgB,CAAC,KAAK,CAAC;QAC7B,QAAQ,EAAE,CAAC,GAAG,CAAC,uBAAuB,CAAC;QACvC,SAAS,EAAE,eAAe,CAAC,MAAM;QACjC,OAAO,EAAE,WAAW,CAAC,IAAI;QACzB,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,eAAe,IAAI,qBAAqB,CAAC;KAC9D,CAAC,CAAC;IACH,4EAA4E;IAC5E,MAAM,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC;QACpB,IAAI,EAAE,aAAa,CAAC,KAAK,CAAC;QAC1B,QAAQ,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC;QACxB,SAAS,EAAE,eAAe,CAAC,MAAM;QACjC,OAAO,EAAE,WAAW,CAAC,IAAI;QACzB,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,eAAe,IAAI,qBAAqB,CAAC;KAC9D,CAAC,CAAC;IACH,2FAA2F;IAC3F,2FAA2F;IAC3F,yFAAyF;IACzF,MAAM,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC;QACpB,IAAI,EAAE,aAAa,CAAC,KAAK,CAAC;QAC1B,QAAQ,EAAE,CAAC,GAAG,CAAC,oBAAoB,EAAE,GAAG,CAAC,mBAAmB,CAAC;QAC7D,SAAS,EAAE,eAAe,CAAC,MAAM;QACjC,OAAO,EAAE,WAAW,CAAC,IAAI;QACzB,mBAAmB,EAAE,IAAI;QACzB,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,aAAa,IAAI,mBAAmB,CAAC;KAC1D,CAAC,CAAC;IACH,0FAA0F;IAC1F,uFAAuF;IACvF,4FAA4F;IAC5F,8FAA8F;IAC9F,uFAAuF;IACvF,+DAA+D;IAC/D,MAAM,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC;QACpB,IAAI,EAAE,aAAa,CAAC,KAAK,CAAC;QAC1B,QAAQ,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC;QACxB,SAAS,EAAE,eAAe,CAAC,SAAS;QACpC,OAAO,EAAE,WAAW,CAAC,IAAI;QACzB,YAAY,EAAE,KAAK;KACpB,CAAC,CAAC;IACH,wFAAwF;IACxF,6FAA6F;IAC7F,4FAA4F;IAC5F,8FAA8F;IAC9F,2FAA2F;IAC3F,6FAA6F;IAC7F,4FAA4F;IAC5F,4EAA4E;IAC5E,MAAM,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC;QACpB,IAAI,EAAE,aAAa,CAAC,KAAK,CAAC;QAC1B,QAAQ,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC;QACxB,SAAS,EAAE,eAAe,CAAC,MAAM;QACjC,OAAO,EAAE,WAAW,CAAC,IAAI;QACzB,YAAY,EAAE,IAAI;QAClB,WAAW,EAAE,IAAI;QACjB,UAAU,EAAE,IAAI;KACjB,CAAC,CAAC;IACH,MAAM,qBAAqB,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;AAC/C,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,GAAqB,EAAE,GAAQ,EAAE,KAAa;IACxF,8FAA8F;IAC9F,iGAAiG;IACjG,2FAA2F;IAC3F,+FAA+F;IAC/F,gGAAgG;IAChG,4CAA4C;IAC5C,MAAM,YAAY,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;IAC1C,MAAM,YAAY,GAAG,MAAM,YAAY,EAAE,CAAC;IAC1C,IAAI,MAAM,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,KAAK,SAAS,EAAE,CAAC;QAC9E,MAAM,GAAG,CAAC,MAAM,CAAC,YAAY,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC;QACvD,MAAM,YAAY,GAAG,CAAC,MAAM,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC;QACnE,MAAM,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,YAAY,EAAE,EAAE,GAAG,YAAY,EAAE,iBAAiB,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7H,CAAC;IACD,MAAM,SAAS,GAAG,CAAC,MAAM,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC;IAChE,IAAI,SAAS,CAAC,YAAY,KAAK,IAAI,IAAI,SAAS,CAAC,iBAAiB,KAAK,KAAK,IAAI,SAAS,CAAC,WAAW,KAAK,IAAI,IAAI,SAAS,CAAC,UAAU,KAAK,IAAI;QAC7I,MAAM,IAAI,KAAK,CAAC,qBAAqB,YAAY,sCAAsC,MAAM,CAAC,SAAS,CAAC,YAAY,CAAC,uBAAuB,MAAM,CAAC,SAAS,CAAC,iBAAiB,CAAC,iBAAiB,MAAM,CAAC,SAAS,CAAC,WAAW,CAAC,gBAAgB,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,+EAA+E,CAAC,CAAC;IAC5V,2BAA2B,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;IAErD,MAAM,UAAU,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;IACvC,MAAM,UAAU,GAAG,MAAM,UAAU,EAAE,CAAC;IACtC,IAAI,MAAM,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,KAAK,SAAS;QACzE,MAAM,GAAG,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,SAAS,EAAE,qBAAqB,EAAE,CAAC,CAAC;IAC1F,MAAM,OAAO,GAAG,CAAC,MAAM,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,MAAoD,CAAC;IAC1G,IAAI,OAAO,CAAC,YAAY,KAAK,KAAK,IAAI,OAAO,CAAC,aAAa,KAAK,IAAI;QAClE,MAAM,IAAI,KAAK,CAAC,kBAAkB,UAAU,sCAAsC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,mBAAmB,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,+EAA+E,CAAC,CAAC;IACjP,2BAA2B,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;AACnD,CAAC;AAED;;;+EAG+E;AAC/E,SAAS,2BAA2B,CAAC,GAAiB,EAAE,MAAc;IACpE,MAAM,QAAQ,GAAG,OAAO,MAAM,IAAI,CAAC;IACnC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,QAAQ;QAC3F,MAAM,IAAI,KAAK,CAAC,aAAa,MAAM,uCAAuC,QAAQ,SAAS,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,6FAA6F,CAAC,CAAC;IACxN,IAAI,GAAG,CAAC,OAAO,KAAK,MAAM;QACxB,MAAM,IAAI,KAAK,CAAC,aAAa,MAAM,gBAAgB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,mHAAmH,CAAC,CAAC;AACvM,CAAC;AAED,+FAA+F;AAE/F;4CAC4C;AAC5C,MAAM,UAAU,WAAW,CAAC,QAAgB,EAAE,IAAY;IACxD,OAAO,QAAQ,aAAa,CAAC,QAAQ,CAAC,IAAI,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC;AACpE,CAAC;AAED,2EAA2E;AAC3E,MAAM,UAAU,kBAAkB,CAAC,KAAa;IAC9C,OAAO,UAAU,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;AAClC,CAAC;AAED;;;;;gEAKgE;AAChE,MAAM,UAAU,mBAAmB,CAAC,KAAa,EAAE,IAAY;IAC7D,OAAO,QAAQ,KAAK,CAAC,KAAK,CAAC,IAAI,aAAa,CAAC,IAAI,EAAE,aAAa,CAAC,EAAE,CAAC;AACtE,CAAC;AAED,6FAA6F;AAC7F,MAAM,UAAU,cAAc,CAAC,QAAgB;IAC7C,OAAO,OAAO,aAAa,CAAC,QAAQ,CAAC,EAAE,CAAC;AAC1C,CAAC;AAED;0EAC0E;AAC1E,MAAM,UAAU,qBAAqB,CAAC,GAAW,EAAE,QAAgB;IACjE,OAAO,OAAO,oBAAoB,CAAC,GAAG,CAAC,IAAI,aAAa,CAAC,QAAQ,CAAC,EAAE,CAAC;AACvE,CAAC;AAED,6FAA6F;AAC7F,MAAM,UAAU,iBAAiB,CAAC,GAAW,EAAE,QAAgB;IAC7D,OAAO,QAAQ,oBAAoB,CAAC,GAAG,CAAC,IAAI,aAAa,CAAC,QAAQ,CAAC,EAAE,CAAC;AACxE,CAAC;AAED;;;;;;uFAMuF;AACvF,MAAM,UAAU,kBAAkB,CAAC,GAAW,EAAE,QAAgB,EAAE,OAAe,EAAE,CAAS;IAC1F,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,kEAAkE,CAAC,EAAE,CAAC,CAAC;IAC1H,OAAO,OAAO,oBAAoB,CAAC,GAAG,CAAC,IAAI,aAAa,CAAC,QAAQ,CAAC,IAAI,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;AACtG,CAAC;AAED;wGACwG;AACxG,MAAM,UAAU,mBAAmB,CAAC,GAAW,EAAE,OAAe,EAAE,CAAS;IACzE,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,mEAAmE,CAAC,EAAE,CAAC,CAAC;IAC3H,OAAO,OAAO,oBAAoB,CAAC,GAAG,CAAC,IAAI,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;AAC3E,CAAC;AAgBD,MAAM,MAAM,GAAG,IAAI,OAAO,EAAuC,CAAC;AAClE,SAAS,MAAM,CAAC,MAAc,EAAE,GAA4B;IAC1D,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,CAAC,YAAa,EAAE,MAAM,EAAE,GAAG,CAAC,cAAe,EAAE,CAAC,CAAC;IACrF,OAAO,GAAG,CAAC;AACb,CAAC;AACD,SAAS,gBAAgB,CAAC,MAAc,EAAE,GAA4B,EAAE,IAAY;IAClF,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC7B,IAAI,IAAI,KAAK,SAAS;QACpB,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,2FAA2F,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,YAAY,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC;IAC/J,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM;QACxB,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,aAAa,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,YAAY,IAAI,EAAE,CAAC,sBAAsB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,mCAAmC,CAAC,CAAC;IACjM,IAAI,GAAG,CAAC,YAAY,KAAK,IAAI,CAAC,OAAO,IAAI,GAAG,CAAC,cAAc,KAAK,IAAI,CAAC,MAAM;QACzE,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,2FAA2F,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,YAAY,IAAI,EAAE,CAAC,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,cAAc,IAAI,EAAE,CAAC,4CAA4C,CAAC,CAAC;IAC9T,wFAAwF;IACxF,+FAA+F;IAC/F,IAAI,GAAG,CAAC,eAAe,KAAK,SAAS;QACnC,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,oHAAoH,CAAC,CAAC;AACjJ,CAAC;AAED;6FAC6F;AAC7F,MAAM,UAAU,mBAAmB,CACjC,KAAa,EACb,QAAgB,EAChB,OAAuD,EAAE;IAEzD,OAAO,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE;QAClC,YAAY,EAAE,YAAY,CAAC,QAAQ,CAAC;QACpC,cAAc,EAAE,GAAG,WAAW,CAAC,KAAK,CAAC,QAAQ,aAAa,CAAC,QAAQ,CAAC,IAAI;QACxE,UAAU,EAAE,SAAS,CAAC,QAAQ;QAC9B,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,SAAS,IAAI,MAAM,CAAC;QACzC,cAAc,EAAE,aAAa,CAAC,GAAG;QACjC,eAAe,EAAE,IAAI,CAAC,aAAa,IAAI,IAAI;KAC5C,CAAC,CAAC;AACL,CAAC;AAED;;yEAEyE;AACzE,MAAM,UAAU,qBAAqB,CACnC,KAAa,EACb,QAAgB,EAChB,OAAuD,EAAE;IAEzD,OAAO,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE;QAClC,YAAY,EAAE,cAAc,CAAC,QAAQ,CAAC;QACtC,cAAc,EAAE,GAAG,WAAW,CAAC,KAAK,CAAC,QAAQ,aAAa,CAAC,QAAQ,CAAC,QAAQ;QAC5E,UAAU,EAAE,SAAS,CAAC,QAAQ;QAC9B,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,SAAS,IAAI,MAAM,CAAC;QACzC,cAAc,EAAE,aAAa,CAAC,GAAG;QACjC,eAAe,EAAE,IAAI,CAAC,aAAa,IAAI,IAAI;KAC5C,CAAC,CAAC;AACL,CAAC;AAED;;;;;iGAKiG;AACjG,MAAM,UAAU,0BAA0B,CACxC,KAAa,EACb,GAAkB,EAClB,OAA+B,EAAE;IAEjC,MAAM,IAAI,GAAG,aAAa,CAAC,GAAG,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;IACpD,MAAM,IAAI,GAAG,GAAG,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC;IACnE,OAAO,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE;QAClC,YAAY,EAAE,mBAAmB,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,CAAC;QAClD,cAAc,EAAE,GAAG,WAAW,CAAC,KAAK,CAAC,aAAa,IAAI,EAAE;QACxD,UAAU,EAAE,SAAS,CAAC,QAAQ;QAC9B,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,SAAS,IAAI,MAAM,CAAC;QACzC,cAAc,EAAE,aAAa,CAAC,GAAG;KAClC,CAAC,CAAC;AACL,CAAC;AAED;;qFAEqF;AACrF,MAAM,UAAU,yBAAyB,CACvC,KAAa,EACb,OAA+B,EAAE;IAEjC,OAAO,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC,EAAE;QACrC,YAAY,EAAE,kBAAkB,CAAC,KAAK,CAAC;QACvC,cAAc,EAAE,GAAG,WAAW,CAAC,KAAK,CAAC,uBAAuB;QAC5D,UAAU,EAAE,SAAS,CAAC,QAAQ;QAC9B,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,SAAS,IAAI,MAAM,CAAC;QACzC,cAAc,EAAE,aAAa,CAAC,GAAG;KAClC,CAAC,CAAC;AACL,CAAC;AAED;;;;qCAIqC;AACrC,MAAM,UAAU,kBAAkB,CAChC,KAAa,EACb,QAAgB,EAChB,IAAY,EACZ,OAA+B,EAAE;IAEjC,OAAO,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE;QAClC,YAAY,EAAE,WAAW,CAAC,QAAQ,EAAE,IAAI,CAAC;QACzC,cAAc,EAAE,GAAG,WAAW,CAAC,KAAK,CAAC,QAAQ,aAAa,CAAC,QAAQ,CAAC,IAAI,eAAe,CAAC,IAAI,CAAC,IAAI;QACjG,UAAU,EAAE,SAAS,CAAC,QAAQ;QAC9B,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,SAAS,IAAI,MAAM,CAAC;QACzC,4FAA4F;QAC5F,6FAA6F;QAC7F,2FAA2F;QAC3F,2FAA2F;QAC3F,0FAA0F;QAC1F,mCAAmC;QACnC,WAAW,EAAE,CAAC,CAAC;KAChB,CAAC,CAAC;AACL,CAAC;AAED;;qEAEqE;AACrE,MAAM,UAAU,oBAAoB,CAClC,KAAa,EACb,QAAgB,EAChB,MAAgB,EAChB,OAA+B,EAAE;IAEjC,OAAO,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE;QAClC,YAAY,EAAE,qBAAqB,CAAC,MAAM,CAAC,GAAG,EAAE,QAAQ,CAAC;QACzD,cAAc,EAAE,GAAG,WAAW,CAAC,KAAK,CAAC,QAAQ,aAAa,CAAC,QAAQ,CAAC,QAAQ,YAAY,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI;QAC9G,UAAU,EAAE,SAAS,CAAC,QAAQ;QAC9B,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,SAAS,IAAI,MAAM,CAAC;QACzC,cAAc,EAAE,aAAa,CAAC,GAAG;KAClC,CAAC,CAAC;AACL,CAAC;AAED,yGAAyG;AACzG,MAAM,UAAU,gBAAgB,CAC9B,KAAa,EACb,QAAgB,EAChB,MAAgB,EAChB,OAA+B,EAAE;IAEjC,OAAO,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE;QAClC,YAAY,EAAE,iBAAiB,CAAC,MAAM,CAAC,GAAG,EAAE,QAAQ,CAAC;QACrD,cAAc,EAAE,GAAG,WAAW,CAAC,KAAK,CAAC,QAAQ,aAAa,CAAC,QAAQ,CAAC,SAAS,YAAY,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI;QAC/G,UAAU,EAAE,SAAS,CAAC,QAAQ;QAC9B,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,SAAS,IAAI,MAAM,CAAC;QACzC,cAAc,EAAE,aAAa,CAAC,GAAG;KAClC,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;2DAO2D;AAC3D,SAAS,cAAc,CAAC,MAAc,EAAE,MAAc,EAAE,IAAY;IAClE,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,MAAM,GAAG,CAAC;QAClC,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,WAAW,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,8BAA8B,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IAC1H,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACxD,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACpB,IAAI,CAAC,KAAK,GAAG;YAAE,OAAO;QACtB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC;YAAE,OAAO,CAAC,sDAAsD;QAC/G,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;YACpC,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,WAAW,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,wEAAwE,CAAC,CAAC;IACjK,CAAC,CAAC,CAAC;IACH,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;sFAIsF;AACtF,MAAM,UAAU,iBAAiB,CAC/B,KAAa,EACb,IAAwF,EACxF,OAA+B,EAAE;IAEjC,MAAM,IAAI,GAAG,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,WAAW,CAAC,KAAK,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAC;IAC/F,2FAA2F;IAC3F,4FAA4F;IAC5F,kDAAkD;IAClD,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC;QAC1C,MAAM,IAAI,KAAK,CAAC,wBAAwB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,yBAAyB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,kCAAkC,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,oDAAoD,CAAC,CAAC;IAC1P,OAAO,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE;QAClC,YAAY,EAAE,kBAAkB,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC;QACnF,cAAc,EAAE,IAAI,CAAC,OAAO;QAC5B,UAAU,EAAE,SAAS,CAAC,QAAQ;QAC9B,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,SAAS,IAAI,MAAM,CAAC;QACzC,cAAc,EAAE,aAAa,CAAC,GAAG;KAClC,CAAC,CAAC;AACL,CAAC;AAED;;;;;2DAK2D;AAC3D,MAAM,oBAAoB,GAAgC,IAAI,GAAG,CAC/D,mBAAmB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAClE,CAAC;AAEF;;;0EAG0E;AAC1E,MAAM,UAAU,kBAAkB,CAChC,KAAa,EACb,IAAsE,EACtE,OAA+B,EAAE;IAEjC,MAAM,IAAI,GAAG,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,aAAa,CAAC,KAAK,CAAC,EAAE,EAAE,uBAAuB,CAAC,CAAC;IAClG,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACrB,wFAAwF;IACxF,yFAAyF;IACzF,IAAI,IAAI,KAAK,GAAG;QACd,MAAM,IAAI,KAAK,CAAC,yBAAyB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,iFAAiF,CAAC,CAAC;IAC1J,gGAAgG;IAChG,8FAA8F;IAC9F,+FAA+F;IAC/F,iGAAiG;IACjG,+FAA+F;IAC/F,8FAA8F;IAC9F,gGAAgG;IAChG,8FAA8F;IAC9F,sDAAsD;IACtD,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,EAAE,CAAC;QACpC,IAAI,oBAAoB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YACnC,MAAM,cAAc,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACzH,MAAM,IAAI,KAAK,CAAC,yBAAyB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,uCAAuC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,8BAA8B,cAAc,0KAA0K,CAAC,CAAC;QAC1V,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,yBAAyB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,iJAAiJ,CAAC,CAAC;IAC1P,CAAC;IACD,kGAAkG;IAClG,iGAAiG;IACjG,8FAA8F;IAC9F,iGAAiG;IACjG,yFAAyF;IACzF,4FAA4F;IAC5F,4FAA4F;IAC5F,gFAAgF;IAChF,MAAM,OAAO,GAAG,oBAAoB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC/C,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC;QAC/C,MAAM,WAAW,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;QAC7D,gGAAgG;QAChG,iGAAiG;QACjG,MAAM,YAAY,GAAG,QAAQ,CAAC,CAAC,CAAC,WAAW,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,KAAK,OAAO,CAAC;QAChF,IAAI,YAAY;YACd,MAAM,IAAI,KAAK,CAAC,yBAAyB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,qCAAqC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,OAAO,GAAG,CAAC,wFAAwF,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAC;QACzS,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,MAAM,GAAG,OAAO;YACpC,MAAM,IAAI,KAAK,CAAC,yBAAyB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,0BAA0B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,oBAAoB,OAAO,0LAA0L,CAAC,CAAC;IAC9U,CAAC;IACD,OAAO,MAAM,CAAC,mBAAmB,CAAC,KAAK,CAAC,EAAE;QACxC,YAAY,EAAE,mBAAmB,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC;QACrE,cAAc,EAAE,IAAI,CAAC,OAAO;QAC5B,UAAU,EAAE,SAAS,CAAC,QAAQ;QAC9B,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,SAAS,IAAI,MAAM,CAAC;QACzC,cAAc,EAAE,aAAa,CAAC,GAAG;KAClC,CAAC,CAAC;AACL,CAAC;AAED,mGAAmG;AACnG,MAAM,UAAU,mBAAmB,CAAC,KAAa,IAAY,OAAO,MAAM,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;AAEnG,sGAAsG;AACtG,8FAA8F;AAC9F,gGAAgG;AAChG,8FAA8F;AAC9F,+FAA+F;AAC/F,+EAA+E;AAE/E,MAAM,KAAK,GAAG,SAAS,CAAC;AAExB;;;8FAG8F;AAC9F,SAAS,eAAe,CAAC,CAAS,EAAE,IAAY;IAC9C,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC;QAC7B,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,kEAAkE,CAAC,CAAC;IAClH,OAAO,CAAC,CAAC;AACX,CAAC;AACD;;;wEAGwE;AACxE,SAAS,iBAAiB,CAAC,MAAc,EAAE,IAAY;IACrD,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC/B,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACpB,IAAI,CAAC,KAAK,GAAG;YAAE,OAAO;QACtB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC;YAAE,OAAO,CAAC,yBAAyB;QAClF,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;YACpC,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,WAAW,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,gEAAgE,CAAC,CAAC;IACzJ,CAAC,CAAC,CAAC;IACH,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,gBAAgB,CAAC,MAAc,EAAE,GAA4B;IACpE,4FAA4F;IAC5F,4FAA4F;IAC5F,6DAA6D;IAC7D,gBAAgB,CAAC,MAAM,EAAE,GAAG,EAAE,wBAAwB,CAAC,CAAC;IACxD,IAAI,CAAC,GAAG,CAAC,YAAY,IAAI,CAAC,GAAG,CAAC,cAAc;QAC1C,MAAM,IAAI,KAAK,CAAC,4EAA4E,CAAC,CAAC;IAChG,8FAA8F;IAC9F,wCAAwC;IACxC,OAAO,GAAG,KAAK,oBAAoB,eAAe,CAAC,MAAM,EAAE,cAAc,CAAC,IAAI,eAAe,CAAC,GAAG,CAAC,YAAY,EAAE,eAAe,CAAC,IAAI,iBAAiB,CAAC,GAAG,CAAC,cAAc,EAAE,gBAAgB,CAAC,EAAE,CAAC;AAChM,CAAC;AACD,SAAS,eAAe,CAAC,MAAc,EAAE,OAAe;IACtD,eAAe,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IACxC,eAAe,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;IAC1C,OAAO;QACL,GAAG,KAAK,kBAAkB,MAAM,IAAI,OAAO,EAAE;QAC7C,GAAG,KAAK,sBAAsB,MAAM,IAAI,OAAO,EAAE;QACjD,WAAW,MAAM,IAAI,OAAO,IAAI;KACjC,CAAC;AACJ,CAAC;AACD,SAAS,gBAAgB,CAAC,MAAc,EAAE,OAAe;IACvD,OAAO,GAAG,KAAK,oBAAoB,eAAe,CAAC,MAAM,EAAE,cAAc,CAAC,IAAI,eAAe,CAAC,OAAO,EAAE,eAAe,CAAC,EAAE,CAAC;AAC5H,CAAC;AAED,mGAAmG;AACnG,MAAM,UAAU,mBAAmB,CAAC,KAAa,EAAE,QAAgB;IACjE,MAAM,MAAM,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;IACpC,MAAM,GAAG,GAAG,mBAAmB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IACjD,OAAO,CAAC,gBAAgB,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,GAAG,eAAe,CAAC,MAAM,EAAE,GAAG,CAAC,YAAa,CAAC,CAAC,CAAC;AACxF,CAAC;AAED;;;;;;;;;wEASwE;AACxE,MAAM,UAAU,uBAAuB,CAAC,KAAa,EAAE,QAAgB;IACrE,OAAO;QACL,GAAG,WAAW,CAAC,KAAK,CAAC,QAAQ,aAAa,CAAC,QAAQ,CAAC,IAAI;QACxD,GAAG,KAAK,mBAAmB,aAAa,CAAC,KAAK,CAAC,EAAE;KAClD,CAAC;AACJ,CAAC;AAED;iGACiG;AACjG,MAAM,UAAU,iBAAiB,CAAC,KAAa,EAAE,QAAgB;IAC/D,OAAO,eAAe,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC;AACzE,CAAC;AAED,uGAAuG;AACvG,MAAM,UAAU,kBAAkB,CAAC,KAAa,EAAE,GAAkB;IAClE,MAAM,MAAM,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;IACpC,MAAM,GAAG,GAAG,0BAA0B,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IACnD,OAAO,CAAC,gBAAgB,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,GAAG,eAAe,CAAC,MAAM,EAAE,GAAG,CAAC,YAAa,CAAC,CAAC,CAAC;AACxF,CAAC;AAED,8FAA8F;AAC9F,MAAM,UAAU,iBAAiB,CAAC,KAAa;IAC7C,MAAM,MAAM,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;IACvC,MAAM,GAAG,GAAG,yBAAyB,CAAC,KAAK,CAAC,CAAC;IAC7C,OAAO,CAAC,gBAAgB,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,GAAG,eAAe,CAAC,MAAM,EAAE,GAAG,CAAC,YAAa,CAAC,CAAC,CAAC;AACxF,CAAC;AAED;uGACuG;AACvG,MAAM,UAAU,mBAAmB,CAAC,KAAa,EAAE,QAAgB,EAAE,IAAY;IAC/E,OAAO,eAAe,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,WAAW,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC;AAC5E,CAAC;AAED;4FAC4F;AAC5F,MAAM,UAAU,gBAAgB,CAAC,MAAc,EAAE,GAA4B;IAC3E,gBAAgB,CAAC,MAAM,EAAE,GAAG,EAAE,qBAAqB,CAAC,CAAC;IACrD,IAAI,CAAC,GAAG,CAAC,YAAY;QAAE,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;IACnF,OAAO,eAAe,CAAC,MAAM,EAAE,GAAG,CAAC,YAAY,CAAC,CAAC;AACnD,CAAC;AAKD;;;mGAGmG;AACnG,MAAM,UAAU,yBAAyB,CAAC,QAA6B;IACrE,MAAM,IAAI,GAAa,EAAE,CAAC;IAC1B,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;QACzB,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,gBAAgB,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,YAAa,CAAC,CAAC,CAAC;IACtG,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;uEA+BuE;AACvE,MAAM,UAAU,uBAAuB,CAAC,KAAa,EAAE,QAAgB,EAAE,MAAc;IACrF,MAAM,CAAC,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;IAClC,MAAM,MAAM,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC;IAC1C,MAAM,WAAW,GAAG,OAAO,aAAa,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC;IACjE,MAAM,OAAO,GAAG;QACd,WAAW;QACX,GAAG,WAAW,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ;QACtC,GAAG,KAAK,mBAAmB,MAAM,EAAE;QACnC,GAAG,KAAK,mBAAmB,aAAa,CAAC,KAAK,CAAC,EAAE;QACjD,GAAG,KAAK,mBAAmB,aAAa,CAAC,KAAK,CAAC,EAAE;QACjD,GAAG,KAAK,gBAAgB,MAAM,EAAE;QAChC,GAAG,KAAK,OAAO;KAChB,CAAC;IACF,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,UAAU,iBAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;AAC3E,CAAC;AAED;;;;;;;;;;;;;;6FAc6F;AAC7F,MAAM,UAAU,uBAAuB,CAAC,KAAa,EAAE,QAAgB,EAAE,KAAe,EAAE,MAAc;IACtG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAC7C,MAAM,IAAI,KAAK,CAAC,uIAAuI,CAAC,CAAC;IAC3J,aAAa,CAAC,QAAQ,CAAC,CAAC;IACxB,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,CAAC,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;QAChC,OAAO,CAAC,IAAI,CAAC,GAAG,eAAe,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,WAAW,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACnF,CAAC;IACD,OAAO,CAAC,IAAI,CAAC,GAAG,KAAK,mBAAmB,aAAa,CAAC,KAAK,CAAC,EAAE,EAAE,GAAG,KAAK,OAAO,CAAC,CAAC;IACjF,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,UAAU,iBAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;AAC3E,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;4FAuB4F;AAC5F,MAAM,UAAU,qBAAqB,CAAC,KAAa,EAAE,QAAgB,EAAE,MAAc;IACnF,MAAM,CAAC,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;IAClC,MAAM,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;IAC7B,MAAM,OAAO,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;IACrC,MAAM,OAAO,GAAG;QACd,GAAG,CAAC,QAAQ,CAAC,sBAAsB;QACnC,GAAG,CAAC,QAAQ,CAAC,QAAQ;QACrB,GAAG,CAAC,QAAQ,CAAC,YAAY;QACzB,GAAG,CAAC,QAAQ,CAAC,QAAQ;QACrB,GAAG,CAAC,QAAQ,CAAC,OAAO;QACpB,OAAO,OAAO,SAAS,CAAC,IAAI;QAC5B,OAAO,OAAO,OAAO,CAAC,IAAI;QAC1B,OAAO,OAAO,UAAU,CAAC,IAAI;QAC7B,GAAG,KAAK,mBAAmB,aAAa,CAAC,KAAK,CAAC,EAAE;QACjD,GAAG,KAAK,mBAAmB,mBAAmB,CAAC,KAAK,CAAC,EAAE;QACvD,GAAG,KAAK,OAAO;KAChB,CAAC;IACF,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,UAAU,iBAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;AAC3E,CAAC;AAED;;;;;;;;;;;;;;;2CAe2C;AAC3C,MAAM,UAAU,uBAAuB,CAAC,KAAa,EAAE,MAAc;IACnE,MAAM,OAAO,GAAG;QACd,GAAG,WAAW,CAAC,KAAK,CAAC,QAAQ;QAC7B,GAAG,KAAK,eAAe,aAAa,CAAC,KAAK,CAAC,IAAI,WAAW,CAAC,KAAK,CAAC,QAAQ;QACzE,GAAG,KAAK,OAAO;KAChB,CAAC;IACF,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,UAAU,iBAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;AAC3E,CAAC"}
|
|
1
|
+
{"version":3,"file":"endpoint-binding.js","sourceRoot":"","sources":["../src/endpoint-binding.ts"],"names":[],"mappings":"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"}
|
|
@@ -46,7 +46,30 @@ export declare function publishContractArtifact(ctx: ContractStoreContext, bytes
|
|
|
46
46
|
}>;
|
|
47
47
|
/** Fetch one artifact by digest (`undefined` = not published). VERIFY-ON-READ is unconditional
|
|
48
48
|
* and TWO-PROOF: the fetched bytes must recompute the digest AND be strict canonical JSON —
|
|
49
|
-
* content addressing is the tamper boundary
|
|
49
|
+
* content addressing is the tamper boundary (§13.7).
|
|
50
|
+
*
|
|
51
|
+
* APPEND-SHADOW DEFENSE (critic, live-confirmed): the `epc.*` publish grant is a raw JS publish;
|
|
52
|
+
* the create-only fence is a publisher-SET header (`Nats-Expected-Last-Subject-Sequence: 0`) the
|
|
53
|
+
* grant cannot compel, so a non-cooperative grant-holder can APPEND garbage at an
|
|
54
|
+
* already-published digest subject. `last_by_subj` would then return that shadow and a fail-closed
|
|
55
|
+
* read would make the honest artifact permanently unfetchable (a total, operator-recovery-only
|
|
56
|
+
* DoS once ep is the sole contract path). The subject IS the content digest and honest
|
|
57
|
+
* publication is create-only, so the FIRST message at the subject is the unique verifying
|
|
58
|
+
* artifact and every shadow is a strictly later append. The read therefore verifies `last_by_subj`
|
|
59
|
+
* (the O(1) fast path, correct whenever nobody shadowed) and, on a verify-miss, FALLS BACK to the
|
|
60
|
+
* create-only winner (`next_by_subj` from the stream start) and verifies THAT — so a shadow-append
|
|
61
|
+
* is defeated by the reader, never relying on publisher cooperation. Only when NEITHER the last nor
|
|
62
|
+
* the first message verifies is the store genuinely corrupt (fail loud). Pre-emptive garbage
|
|
63
|
+
* BEFORE the honest publish is the already-loud case: the honest create-only publish then loses at
|
|
64
|
+
* registration, so there is no honest artifact to recover.
|
|
65
|
+
*
|
|
66
|
+
* GRANT NOTE (critic completeness item): the fallback issues `next_by_subj`, which rides the bare
|
|
67
|
+
* `$JS.API.DIRECT.GET.<stream>` form — the executor publisher holds it, the ordinary agent baseline
|
|
68
|
+
* does NOT (it holds only the subject-scoped `last_by_subj`, per the D32 read-grant bound). Sound
|
|
69
|
+
* because {@link ensureContractStore} fails loud unless the store is config-B immutable, so the
|
|
70
|
+
* manager never serves a store where an agent's `last_by_subj` could return a shadow — the fallback
|
|
71
|
+
* never triggers on the agent path. Widening the agent grant to the bare form is unnecessary (and
|
|
72
|
+
* would relax the D32 bound for no gain). */
|
|
50
73
|
export declare function fetchContractArtifact(ctx: ContractStoreContext, digestHex: string): Promise<Uint8Array | undefined>;
|
|
51
74
|
/** The §13.7 closure MANIFEST artifact: contract identity is THIS artifact's digest (the
|
|
52
75
|
* closure digest), never the root document digest alone. Digest fields carry the one scalar
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"endpoint-contract-store.d.ts","sourceRoot":"","sources":["../src/endpoint-contract-store.ts"],"names":[],"mappings":"AAmCA,OAAO,EAA0B,KAAK,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAOtF,4FAA4F;AAC5F,eAAO,MAAM,2BAA2B,QAAa,CAAC;AACtD,yFAAyF;AACzF,eAAO,MAAM,0BAA0B,QAAc,CAAC;AACtD,uEAAuE;AACvE,eAAO,MAAM,8BAA8B,KAAK,CAAC;AACjD,2FAA2F;AAC3F,eAAO,MAAM,8BAA8B,KAAK,CAAC;AAIjD;;;;4FAI4F;AAC5F,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAQD;;wEAEwE;AACxE,wBAAsB,oBAAoB,CAAC,EAAE,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC,
|
|
1
|
+
{"version":3,"file":"endpoint-contract-store.d.ts","sourceRoot":"","sources":["../src/endpoint-contract-store.ts"],"names":[],"mappings":"AAmCA,OAAO,EAA0B,KAAK,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAOtF,4FAA4F;AAC5F,eAAO,MAAM,2BAA2B,QAAa,CAAC;AACtD,yFAAyF;AACzF,eAAO,MAAM,0BAA0B,QAAc,CAAC;AACtD,uEAAuE;AACvE,eAAO,MAAM,8BAA8B,KAAK,CAAC;AACjD,2FAA2F;AAC3F,eAAO,MAAM,8BAA8B,KAAK,CAAC;AAIjD;;;;4FAI4F;AAC5F,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAQD;;wEAEwE;AACxE,wBAAsB,oBAAoB,CAAC,EAAE,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAa3G;AAWD;;0FAE0F;AAC1F,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAEnE;AAED;0FAC0F;AAC1F,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAKpD;AAED;yEACyE;AACzE,wBAAgB,8BAA8B,CAAC,KAAK,EAAE,OAAO,GAAG,UAAU,CAGzE;AAED;;;;kEAIkE;AAClE,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAarF;AAED;;;;yFAIyF;AACzF,wBAAsB,uBAAuB,CAC3C,GAAG,EAAE,oBAAoB,EACzB,KAAK,EAAE,UAAU,GAChB,OAAO,CAAC;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,OAAO,CAAA;CAAE,CAAC,CA8B9C;AAYD;;;;;;;;;;;;;;;;;;;;;;;;;8CAyB8C;AAC9C,wBAAsB,qBAAqB,CACzC,GAAG,EAAE,oBAAoB,EACzB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC,CA2BjC;AAID;;4BAE4B;AAC5B,MAAM,WAAW,uBAAuB;IACtC,CAAC,EAAE,CAAC,CAAC;IACL,IAAI,EAAE,MAAM,CAAC;IACb;8FAC0F;IAC1F,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAeD;;;2DAG2D;AAC3D,wBAAgB,4BAA4B,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,MAAM,EAAE,GAAG,uBAAuB,CAIpH;AAyBD;8BAC8B;AAC9B,wBAAsB,8BAA8B,CAClD,GAAG,EAAE,oBAAoB,EACzB,QAAQ,EAAE,uBAAuB,GAChC,OAAO,CAAC;IAAE,gBAAgB,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,OAAO,CAAA;CAAE,CAAC,CAKrD;AAED;;;;;;;;;;oEAUoE;AACpE,wBAAsB,oBAAoB,CACxC,GAAG,EAAE,oBAAoB,EACzB,gBAAgB,EAAE,MAAM,EACxB,WAAW,EAAE,CAAC,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,KAAK,MAAM,EAAE,EAC/D,IAAI,GAAE;IAAE,YAAY,CAAC,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAA;CAAO,GAC1D,OAAO,CAAC;IAAE,QAAQ,EAAE,uBAAuB,CAAC;IAAC,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAA;CAAE,CAAC,CAoFpF"}
|
|
@@ -60,7 +60,10 @@ export async function contractStoreContext(nc, space) {
|
|
|
60
60
|
if (typeof space !== "string" || space.length === 0)
|
|
61
61
|
throw new EpEnvelopeError("failed-precondition", "a contract-store context needs a space");
|
|
62
62
|
const js = jetstream(nc);
|
|
63
|
-
|
|
63
|
+
// checkAPI:false - the manager construction otherwise probes `$JS.API.INFO`, a grant the
|
|
64
|
+
// minimal fetch-only callers (operator instruments: Direct Get + publish rows only) do not and
|
|
65
|
+
// should not hold; every real read/publish below still fails loud on its own denial.
|
|
66
|
+
const jsm = await jetstreamManager(nc, { checkAPI: false });
|
|
64
67
|
const ctx = Object.freeze({ space });
|
|
65
68
|
STORE_RESOURCES.set(ctx, { js, jsm });
|
|
66
69
|
return ctx;
|
|
@@ -151,7 +154,12 @@ export async function publishContractArtifact(ctx, bytes) {
|
|
|
151
154
|
}
|
|
152
155
|
catch (e) {
|
|
153
156
|
const code = e?.code;
|
|
154
|
-
|
|
157
|
+
// A publish to an ALREADY-OCCUPIED digest subject loses idempotently: the create-only header
|
|
158
|
+
// mismatch (10071/10164) OR — under the store's per-subject-immutability shape
|
|
159
|
+
// (ensureContractStore: max_msgs_per_subject:1 + discard-new) — the broker's per-subject reject
|
|
160
|
+
// (10077), which fires when a second publish reaches an occupied subject. All three mean "this
|
|
161
|
+
// digest is already published"; anything else is a real infra error.
|
|
162
|
+
if (code !== 10071 && code !== 10164 && code !== 10077)
|
|
155
163
|
throw e;
|
|
156
164
|
// The subject is the digest: a prior write with this address holds these bytes (verified
|
|
157
165
|
// on fetch). The loss is idempotent; an unreadable prior write is loud.
|
|
@@ -161,37 +169,81 @@ export async function publishContractArtifact(ctx, bytes) {
|
|
|
161
169
|
return { digestHex, won: false };
|
|
162
170
|
}
|
|
163
171
|
}
|
|
172
|
+
/** Prove one fetched message IS the artifact for `digestHex` at `subject`: within the document
|
|
173
|
+
* bound, recomputes its digest, and strict canonical JSON. `undefined` (never a throw) when it
|
|
174
|
+
* does not verify — the caller decides whether a miss is fatal or a fallback. */
|
|
175
|
+
function verifyStored(data, digestHex, subject) {
|
|
176
|
+
if (data.length > CONTRACT_ARTIFACT_MAX_BYTES)
|
|
177
|
+
return undefined; // an oversize plant never serves (distsys 8dcad72 M2)
|
|
178
|
+
if (contractArtifactDigestHex(data) !== digestHex)
|
|
179
|
+
return undefined;
|
|
180
|
+
try {
|
|
181
|
+
assertCanonicalArtifactBytes(data, `the artifact at ${subject}`);
|
|
182
|
+
}
|
|
183
|
+
catch {
|
|
184
|
+
return undefined;
|
|
185
|
+
}
|
|
186
|
+
return data;
|
|
187
|
+
}
|
|
164
188
|
/** Fetch one artifact by digest (`undefined` = not published). VERIFY-ON-READ is unconditional
|
|
165
189
|
* and TWO-PROOF: the fetched bytes must recompute the digest AND be strict canonical JSON —
|
|
166
|
-
* content addressing is the tamper boundary
|
|
190
|
+
* content addressing is the tamper boundary (§13.7).
|
|
191
|
+
*
|
|
192
|
+
* APPEND-SHADOW DEFENSE (critic, live-confirmed): the `epc.*` publish grant is a raw JS publish;
|
|
193
|
+
* the create-only fence is a publisher-SET header (`Nats-Expected-Last-Subject-Sequence: 0`) the
|
|
194
|
+
* grant cannot compel, so a non-cooperative grant-holder can APPEND garbage at an
|
|
195
|
+
* already-published digest subject. `last_by_subj` would then return that shadow and a fail-closed
|
|
196
|
+
* read would make the honest artifact permanently unfetchable (a total, operator-recovery-only
|
|
197
|
+
* DoS once ep is the sole contract path). The subject IS the content digest and honest
|
|
198
|
+
* publication is create-only, so the FIRST message at the subject is the unique verifying
|
|
199
|
+
* artifact and every shadow is a strictly later append. The read therefore verifies `last_by_subj`
|
|
200
|
+
* (the O(1) fast path, correct whenever nobody shadowed) and, on a verify-miss, FALLS BACK to the
|
|
201
|
+
* create-only winner (`next_by_subj` from the stream start) and verifies THAT — so a shadow-append
|
|
202
|
+
* is defeated by the reader, never relying on publisher cooperation. Only when NEITHER the last nor
|
|
203
|
+
* the first message verifies is the store genuinely corrupt (fail loud). Pre-emptive garbage
|
|
204
|
+
* BEFORE the honest publish is the already-loud case: the honest create-only publish then loses at
|
|
205
|
+
* registration, so there is no honest artifact to recover.
|
|
206
|
+
*
|
|
207
|
+
* GRANT NOTE (critic completeness item): the fallback issues `next_by_subj`, which rides the bare
|
|
208
|
+
* `$JS.API.DIRECT.GET.<stream>` form — the executor publisher holds it, the ordinary agent baseline
|
|
209
|
+
* does NOT (it holds only the subject-scoped `last_by_subj`, per the D32 read-grant bound). Sound
|
|
210
|
+
* because {@link ensureContractStore} fails loud unless the store is config-B immutable, so the
|
|
211
|
+
* manager never serves a store where an agent's `last_by_subj` could return a shadow — the fallback
|
|
212
|
+
* never triggers on the agent path. Widening the agent grant to the bare form is unnecessary (and
|
|
213
|
+
* would relax the D32 bound for no gain). */
|
|
167
214
|
export async function fetchContractArtifact(ctx, digestHex) {
|
|
168
215
|
const { jsm } = resources(ctx);
|
|
216
|
+
const stream = epcStreamName(ctx.space);
|
|
169
217
|
const subject = epcSubject(ctx.space, digestHex); // validates the token
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
218
|
+
const read = async (req) => {
|
|
219
|
+
try {
|
|
220
|
+
const stored = await jsm.direct.getMessage(stream, req);
|
|
221
|
+
return stored === null ? "absent" : stored.data;
|
|
222
|
+
}
|
|
223
|
+
catch (e) {
|
|
224
|
+
if (e?.code === 10037)
|
|
225
|
+
return "absent"; // the ONLY "genuinely absent" result
|
|
226
|
+
throw new EpEnvelopeError("unavailable", `the contract-store read for ${digestHex} failed (a failed observation is never absence, SPEC 13.7): ${e?.message ?? String(e)}`);
|
|
227
|
+
}
|
|
228
|
+
};
|
|
229
|
+
// Fast path: the last message at the subject. Verifies whenever nobody shadowed (the common case).
|
|
230
|
+
const last = await read({ last_by_subj: subject });
|
|
231
|
+
if (last === "absent")
|
|
180
232
|
return undefined;
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
233
|
+
const okLast = verifyStored(last, digestHex, subject);
|
|
234
|
+
if (okLast !== undefined)
|
|
235
|
+
return okLast;
|
|
236
|
+
// Shadow suspected: fall back to the create-only WINNER (the first message at the subject) — a
|
|
237
|
+
// valid artifact was published create-only, so it is first; anything after it is an append.
|
|
238
|
+
const first = await read({ seq: 0, next_by_subj: subject });
|
|
239
|
+
if (first === "absent")
|
|
240
|
+
return undefined;
|
|
241
|
+
const okFirst = verifyStored(first, digestHex, subject);
|
|
242
|
+
if (okFirst !== undefined)
|
|
243
|
+
return okFirst;
|
|
244
|
+
// Neither the last nor the create-only winner verifies: the store is genuinely corrupt for this
|
|
245
|
+
// subject (no honest artifact was ever published, or the first message is itself garbage).
|
|
246
|
+
throw new EpEnvelopeError("internal", `no message at ${subject} recomputes its digest as strict canonical JSON (checked both the last and the create-only winner); verify-on-read is the tamper boundary and a store with no verifying artifact never serves (SPEC 13.7)`);
|
|
195
247
|
}
|
|
196
248
|
const sha256Ref = (hex) => `sha256:${hex}`;
|
|
197
249
|
/** A manifest digest field is EXACTLY `sha256:<64-hex>` (frozen SPEC 13.7:1858-1861), never a
|