@agentplat/mesh 0.3.0-beta.2 → 0.3.0-beta.4

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 (95) hide show
  1. package/README.md +133 -4
  2. package/dist/adaptive-overlay-contracts.d.ts +149 -0
  3. package/dist/adaptive-overlay-contracts.d.ts.map +1 -0
  4. package/dist/adaptive-overlay-contracts.js +3 -0
  5. package/dist/adaptive-overlay-contracts.js.map +1 -0
  6. package/dist/adaptive-overlay-runtime.d.ts +67 -0
  7. package/dist/adaptive-overlay-runtime.d.ts.map +1 -0
  8. package/dist/adaptive-overlay-runtime.js +427 -0
  9. package/dist/adaptive-overlay-runtime.js.map +1 -0
  10. package/dist/adaptive-overlay-validation.d.ts +19 -0
  11. package/dist/adaptive-overlay-validation.d.ts.map +1 -0
  12. package/dist/adaptive-overlay-validation.js +326 -0
  13. package/dist/adaptive-overlay-validation.js.map +1 -0
  14. package/dist/adaptive-overlay.d.ts +4 -0
  15. package/dist/adaptive-overlay.d.ts.map +1 -0
  16. package/dist/adaptive-overlay.js +4 -0
  17. package/dist/adaptive-overlay.js.map +1 -0
  18. package/dist/authenticated-overlay-transport.d.ts +227 -0
  19. package/dist/authenticated-overlay-transport.d.ts.map +1 -0
  20. package/dist/authenticated-overlay-transport.js +702 -0
  21. package/dist/authenticated-overlay-transport.js.map +1 -0
  22. package/dist/authority-continuity-contracts.d.ts +249 -0
  23. package/dist/authority-continuity-contracts.d.ts.map +1 -0
  24. package/dist/authority-continuity-contracts.js +11 -0
  25. package/dist/authority-continuity-contracts.js.map +1 -0
  26. package/dist/authority-continuity.d.ts +43 -0
  27. package/dist/authority-continuity.d.ts.map +1 -0
  28. package/dist/authority-continuity.js +1338 -0
  29. package/dist/authority-continuity.js.map +1 -0
  30. package/dist/continuity.d.ts +3 -0
  31. package/dist/continuity.d.ts.map +1 -0
  32. package/dist/continuity.js +3 -0
  33. package/dist/continuity.js.map +1 -0
  34. package/dist/coordination-allocation-contracts.d.ts +6 -0
  35. package/dist/coordination-allocation-contracts.d.ts.map +1 -1
  36. package/dist/coordination-allocation-state.d.ts.map +1 -1
  37. package/dist/coordination-allocation-state.js +37 -7
  38. package/dist/coordination-allocation-state.js.map +1 -1
  39. package/dist/coordination-allocation.d.ts +1 -1
  40. package/dist/coordination-allocation.d.ts.map +1 -1
  41. package/dist/coordination-allocation.js +92 -11
  42. package/dist/coordination-allocation.js.map +1 -1
  43. package/dist/coordination-discovery-state.d.ts.map +1 -1
  44. package/dist/coordination-discovery-state.js +5 -3
  45. package/dist/coordination-discovery-state.js.map +1 -1
  46. package/dist/coordination-recovery.js +5 -1
  47. package/dist/coordination-recovery.js.map +1 -1
  48. package/dist/durability.d.ts +22 -0
  49. package/dist/durability.d.ts.map +1 -1
  50. package/dist/durability.js +22 -0
  51. package/dist/durability.js.map +1 -1
  52. package/dist/overlay-transport.d.ts +7 -0
  53. package/dist/overlay-transport.d.ts.map +1 -0
  54. package/dist/overlay-transport.js +7 -0
  55. package/dist/overlay-transport.js.map +1 -0
  56. package/dist/overlay.d.ts +9 -0
  57. package/dist/overlay.d.ts.map +1 -0
  58. package/dist/overlay.js +9 -0
  59. package/dist/overlay.js.map +1 -0
  60. package/dist/sparse-overlay-contracts.d.ts +91 -0
  61. package/dist/sparse-overlay-contracts.d.ts.map +1 -0
  62. package/dist/sparse-overlay-contracts.js +2 -0
  63. package/dist/sparse-overlay-contracts.js.map +1 -0
  64. package/dist/sparse-overlay-durability.d.ts +23 -0
  65. package/dist/sparse-overlay-durability.d.ts.map +1 -0
  66. package/dist/sparse-overlay-durability.js +97 -0
  67. package/dist/sparse-overlay-durability.js.map +1 -0
  68. package/dist/sparse-overlay-runtime-contracts.d.ts +158 -0
  69. package/dist/sparse-overlay-runtime-contracts.d.ts.map +1 -0
  70. package/dist/sparse-overlay-runtime-contracts.js +2 -0
  71. package/dist/sparse-overlay-runtime-contracts.js.map +1 -0
  72. package/dist/sparse-overlay-runtime.d.ts +48 -0
  73. package/dist/sparse-overlay-runtime.d.ts.map +1 -0
  74. package/dist/sparse-overlay-runtime.js +763 -0
  75. package/dist/sparse-overlay-runtime.js.map +1 -0
  76. package/dist/sparse-overlay-transport-contracts.d.ts +183 -0
  77. package/dist/sparse-overlay-transport-contracts.d.ts.map +1 -0
  78. package/dist/sparse-overlay-transport-contracts.js +2 -0
  79. package/dist/sparse-overlay-transport-contracts.js.map +1 -0
  80. package/dist/sparse-overlay-transport-durability.d.ts +19 -0
  81. package/dist/sparse-overlay-transport-durability.d.ts.map +1 -0
  82. package/dist/sparse-overlay-transport-durability.js +91 -0
  83. package/dist/sparse-overlay-transport-durability.js.map +1 -0
  84. package/dist/sparse-overlay-transport.d.ts +97 -0
  85. package/dist/sparse-overlay-transport.d.ts.map +1 -0
  86. package/dist/sparse-overlay-transport.js +888 -0
  87. package/dist/sparse-overlay-transport.js.map +1 -0
  88. package/dist/sparse-overlay.d.ts +74 -0
  89. package/dist/sparse-overlay.d.ts.map +1 -0
  90. package/dist/sparse-overlay.js +817 -0
  91. package/dist/sparse-overlay.js.map +1 -0
  92. package/fixtures/beta1/manifest.json +4 -4
  93. package/fixtures/beta1/states/discovery-v1.json +3 -3
  94. package/fixtures/beta1/states/discovery-v2.json +3 -3
  95. package/package.json +20 -4
@@ -0,0 +1,326 @@
1
+ import { sha256Base64Url } from "./sha256.js";
2
+ const text = new TextEncoder();
3
+ const ID = /^[A-Za-z0-9][A-Za-z0-9._:@-]{0,127}$/u;
4
+ const DIGEST = /^sha256:[A-Za-z0-9_-]{43}$/u;
5
+ const MAX_ITEMS = 4_096;
6
+ export class MeshAdaptiveOverlayErrorV1 extends Error {
7
+ constructor(message) {
8
+ super(message);
9
+ this.name = "MeshAdaptiveOverlayErrorV1";
10
+ }
11
+ }
12
+ export function meshAdaptiveOverlayDigestV1(domain, body) {
13
+ return `sha256:${sha256Base64Url(text.encode(stable({ domain, body })))}`;
14
+ }
15
+ export function createMeshAdaptiveOverlayBindingV1(input) {
16
+ const body = {
17
+ schemaVersion: 1,
18
+ overlayId: id(input.overlayId, "overlayId"),
19
+ localPeerIndex: integer(input.localPeerIndex, "localPeerIndex", 0),
20
+ membershipDigest: digest(input.membershipDigest, "membershipDigest"),
21
+ profileDigest: digest(input.profileDigest, "profileDigest"),
22
+ viewDigest: digest(input.viewDigest, "viewDigest"),
23
+ revision: integer(input.revision, "revision", 0),
24
+ };
25
+ return freeze({
26
+ ...body,
27
+ bindingDigest: meshAdaptiveOverlayDigestV1("adaptive-overlay-binding-v1", body),
28
+ });
29
+ }
30
+ export function createMeshAdaptiveOverlayPolicyV1(input) {
31
+ const observers = normalizeObservers(input.observers);
32
+ const body = {
33
+ schemaVersion: 1,
34
+ policyId: id(input.policyId, "policyId"),
35
+ policyRevision: integer(input.policyRevision, "policyRevision", 1),
36
+ observers,
37
+ independentGroupThreshold: integer(input.independentGroupThreshold, "independentGroupThreshold", 1),
38
+ maximumSignalLifetimeMs: integer(input.maximumSignalLifetimeMs, "maximumSignalLifetimeMs", 1),
39
+ maximumExcludedNeighbors: integer(input.maximumExcludedNeighbors, "maximumExcludedNeighbors", 1),
40
+ validUntilLogicalMs: integer(input.validUntilLogicalMs, "validUntilLogicalMs", 1),
41
+ };
42
+ if (body.independentGroupThreshold >
43
+ new Set(observers.map((item) => item.groupId)).size)
44
+ invalid("independent group threshold is invalid");
45
+ return freeze({
46
+ ...body,
47
+ policyDigest: meshAdaptiveOverlayDigestV1("adaptive-overlay-policy-v1", body),
48
+ });
49
+ }
50
+ export function createMeshAdaptiveOverlaySignalV1(input) {
51
+ const binding = validateMeshAdaptiveOverlayBindingV1(input.binding);
52
+ const body = {
53
+ schemaVersion: 1,
54
+ signalId: id(input.signalId, "signalId"),
55
+ binding,
56
+ observerPeerId: id(input.observerPeerId, "observerPeerId"),
57
+ observerGroupId: id(input.observerGroupId, "observerGroupId"),
58
+ subjectPeerIndex: integer(input.subjectPeerIndex, "subjectPeerIndex", 0),
59
+ subjectDigest: digest(input.subjectDigest, "subjectDigest"),
60
+ kind: oneOf(input.kind, ["unreachable", "degraded", "policy_violation"], "kind"),
61
+ observedAtLogicalMs: integer(input.observedAtLogicalMs, "observedAtLogicalMs", 0),
62
+ expiresAtLogicalMs: integer(input.expiresAtLogicalMs, "expiresAtLogicalMs", 1),
63
+ authentication: auth(input.authentication),
64
+ };
65
+ if (body.expiresAtLogicalMs <= body.observedAtLogicalMs)
66
+ invalid("signal expiry is invalid");
67
+ return freeze({
68
+ ...body,
69
+ signalDigest: meshAdaptiveOverlayDigestV1("adaptive-overlay-signal-v1", body),
70
+ });
71
+ }
72
+ export function createMeshAdaptiveOverlayProposalV1(input) {
73
+ const binding = validateMeshAdaptiveOverlayBindingV1(input.binding);
74
+ const policy = validateMeshAdaptiveOverlayPolicyV1(input.policy);
75
+ const body = {
76
+ schemaVersion: 1,
77
+ proposalId: id(input.proposalId, "proposalId"),
78
+ binding,
79
+ policy,
80
+ excludedNeighborIndexes: indexes(input.excludedNeighborIndexes, "excludedNeighborIndexes"),
81
+ signalDigests: digests(input.signalDigests, "signalDigests"),
82
+ proposedAtLogicalMs: integer(input.proposedAtLogicalMs, "proposedAtLogicalMs", 0),
83
+ expiresAtLogicalMs: integer(input.expiresAtLogicalMs, "expiresAtLogicalMs", 1),
84
+ };
85
+ if (body.excludedNeighborIndexes.length > policy.maximumExcludedNeighbors ||
86
+ body.expiresAtLogicalMs <= body.proposedAtLogicalMs ||
87
+ body.expiresAtLogicalMs > policy.validUntilLogicalMs)
88
+ invalid("proposal timing or exclusion bounds are invalid");
89
+ return freeze({
90
+ ...body,
91
+ proposalDigest: meshAdaptiveOverlayDigestV1("adaptive-overlay-proposal-v1", body),
92
+ });
93
+ }
94
+ export function createMeshAdaptiveOverlayCertificateV1(input) {
95
+ const binding = validateMeshAdaptiveOverlayBindingV1(input.binding);
96
+ if (input.signalDigests.length !== input.observerPeerIds.length ||
97
+ input.observerPeerIds.length !== input.observerGroupIds.length ||
98
+ input.observerPeerIds.length === 0 ||
99
+ input.observerPeerIds.length > MAX_ITEMS)
100
+ invalid("certificate witness tuples are invalid");
101
+ const witnesses = input.observerPeerIds
102
+ .map((peerId, index) => ({
103
+ signalDigest: digest(input.signalDigests[index], "signalDigests"),
104
+ peerId: id(peerId, "observerPeerIds"),
105
+ groupId: id(input.observerGroupIds[index], "observerGroupIds"),
106
+ }))
107
+ .sort((left, right) => left.peerId.localeCompare(right.peerId));
108
+ if (new Set(witnesses.map((witness) => witness.peerId)).size !==
109
+ witnesses.length)
110
+ invalid("certificate witness peers contain duplicates");
111
+ const body = {
112
+ schemaVersion: 1,
113
+ certificateId: id(input.certificateId, "certificateId"),
114
+ proposalId: id(input.proposalId, "proposalId"),
115
+ proposalDigest: digest(input.proposalDigest, "proposalDigest"),
116
+ binding,
117
+ policy: validateMeshAdaptiveOverlayPolicyV1(input.policy),
118
+ policyDigest: digest(input.policyDigest, "policyDigest"),
119
+ signalDigests: freezeArray(witnesses.map((witness) => witness.signalDigest)),
120
+ observerPeerIds: freezeArray(witnesses.map((witness) => witness.peerId)),
121
+ observerGroupIds: freezeArray(witnesses.map((witness) => witness.groupId)),
122
+ issuedAtLogicalMs: integer(input.issuedAtLogicalMs, "issuedAtLogicalMs", 0),
123
+ expiresAtLogicalMs: integer(input.expiresAtLogicalMs, "expiresAtLogicalMs", 1),
124
+ };
125
+ if (body.policy.policyDigest !== body.policyDigest ||
126
+ new Set(body.signalDigests).size !== body.signalDigests.length ||
127
+ body.signalDigests.length !== body.observerPeerIds.length ||
128
+ body.observerPeerIds.length !== body.observerGroupIds.length ||
129
+ body.expiresAtLogicalMs <= body.issuedAtLogicalMs ||
130
+ body.expiresAtLogicalMs > body.policy.validUntilLogicalMs)
131
+ invalid("certificate evidence is invalid");
132
+ return freeze({
133
+ ...body,
134
+ certificateDigest: meshAdaptiveOverlayDigestV1("adaptive-overlay-certificate-v1", body),
135
+ });
136
+ }
137
+ export function createMeshAdaptiveOverlayAppliedViewV1(input) {
138
+ const body = {
139
+ schemaVersion: 1,
140
+ certificateDigest: digest(input.certificateDigest, "certificateDigest"),
141
+ binding: validateMeshAdaptiveOverlayBindingV1(input.binding),
142
+ resultingViewDigest: digest(input.resultingViewDigest, "resultingViewDigest"),
143
+ resultingRevision: integer(input.resultingRevision, "resultingRevision", 1),
144
+ appliedAtLogicalMs: integer(input.appliedAtLogicalMs, "appliedAtLogicalMs", 0),
145
+ };
146
+ if (body.resultingRevision <= body.binding.revision)
147
+ invalid("applied revision is invalid");
148
+ return freeze({
149
+ ...body,
150
+ applicationDigest: meshAdaptiveOverlayDigestV1("adaptive-overlay-application-v1", body),
151
+ });
152
+ }
153
+ export function createMeshAdaptiveOverlayStateV1(input) {
154
+ const body = {
155
+ schemaVersion: 1,
156
+ revision: integer(input.revision, "revision", 0),
157
+ policyDigest: digest(input.policyDigest, "policyDigest"),
158
+ currentBinding: validateMeshAdaptiveOverlayBindingV1(input.currentBinding),
159
+ applied: input.applied === null
160
+ ? null
161
+ : createMeshAdaptiveOverlayAppliedViewV1(input.applied),
162
+ signals: input.signals.map(validateMeshAdaptiveOverlaySignalV1),
163
+ proposals: input.proposals.map(validateMeshAdaptiveOverlayProposalV1),
164
+ certificates: input.certificates.map(validateMeshAdaptiveOverlayCertificateV1),
165
+ conflicts: optionalDigests(input.conflicts, "conflicts"),
166
+ lastLogicalTimeMs: integer(input.lastLogicalTimeMs, "lastLogicalTimeMs", 0),
167
+ };
168
+ if (body.signals.length > MAX_ITEMS ||
169
+ body.proposals.length > MAX_ITEMS ||
170
+ body.certificates.length > MAX_ITEMS)
171
+ invalid("state capacity is invalid");
172
+ return freeze({
173
+ ...body,
174
+ signals: freezeArray(body.signals),
175
+ proposals: freezeArray(body.proposals),
176
+ certificates: freezeArray(body.certificates),
177
+ conflicts: freezeArray(body.conflicts),
178
+ stateDigest: meshAdaptiveOverlayDigestV1("adaptive-overlay-state-v1", body),
179
+ });
180
+ }
181
+ export function validateMeshAdaptiveOverlayBindingV1(input) {
182
+ return validate(input, createMeshAdaptiveOverlayBindingV1, "binding");
183
+ }
184
+ export function validateMeshAdaptiveOverlayPolicyV1(input) {
185
+ return validate(input, createMeshAdaptiveOverlayPolicyV1, "policy");
186
+ }
187
+ export function validateMeshAdaptiveOverlaySignalV1(input) {
188
+ return validate(input, createMeshAdaptiveOverlaySignalV1, "signal");
189
+ }
190
+ export function validateMeshAdaptiveOverlayProposalV1(input) {
191
+ return validate(input, createMeshAdaptiveOverlayProposalV1, "proposal");
192
+ }
193
+ export function validateMeshAdaptiveOverlayCertificateV1(input) {
194
+ return validate(input, createMeshAdaptiveOverlayCertificateV1, "certificate");
195
+ }
196
+ export function validateMeshAdaptiveOverlayStateV1(input) {
197
+ return validate(input, createMeshAdaptiveOverlayStateV1, "state");
198
+ }
199
+ function validate(input, factory, name) {
200
+ if (!input ||
201
+ typeof input !== "object" ||
202
+ Array.isArray(input) ||
203
+ input.schemaVersion !== 1)
204
+ invalid(`${name} is invalid`);
205
+ const value = input;
206
+ const { schemaVersion: _schemaVersion, ...body } = value;
207
+ const rebuilt = factory(body);
208
+ const digestField = name === "binding"
209
+ ? "bindingDigest"
210
+ : name === "policy"
211
+ ? "policyDigest"
212
+ : name === "signal"
213
+ ? "signalDigest"
214
+ : name === "proposal"
215
+ ? "proposalDigest"
216
+ : name === "certificate"
217
+ ? "certificateDigest"
218
+ : "stateDigest";
219
+ if (value[digestField] !== rebuilt[digestField] ||
220
+ stable(value) !== stable(rebuilt))
221
+ invalid(`${name} binding is invalid`);
222
+ return rebuilt;
223
+ }
224
+ function normalizeObservers(input) {
225
+ if (!Array.isArray(input) || input.length === 0 || input.length > MAX_ITEMS)
226
+ invalid("observers are invalid");
227
+ const result = input
228
+ .map((item) => ({
229
+ peerId: id(item?.peerId, "observer.peerId"),
230
+ groupId: id(item?.groupId, "observer.groupId"),
231
+ }))
232
+ .sort((a, b) => a.peerId.localeCompare(b.peerId));
233
+ if (new Set(result.map((x) => x.peerId)).size !== result.length)
234
+ invalid("observers duplicate peer");
235
+ return freezeArray(result);
236
+ }
237
+ function auth(input) {
238
+ if (!input || typeof input !== "object" || Array.isArray(input))
239
+ invalid("authentication is invalid");
240
+ const value = input;
241
+ return freeze({
242
+ algorithm: id(value.algorithm, "authentication.algorithm"),
243
+ value: id(value.value, "authentication.value"),
244
+ });
245
+ }
246
+ function ids(input, name) {
247
+ if (!Array.isArray(input) || input.length === 0 || input.length > MAX_ITEMS)
248
+ invalid(`${name} is invalid`);
249
+ const value = input.map((item) => id(item, name)).sort();
250
+ if (new Set(value).size !== value.length)
251
+ invalid(`${name} contains duplicates`);
252
+ return freezeArray(value);
253
+ }
254
+ function idList(input, name) {
255
+ if (!Array.isArray(input) || input.length === 0 || input.length > MAX_ITEMS)
256
+ invalid(`${name} is invalid`);
257
+ return freezeArray(input.map((item) => id(item, name)));
258
+ }
259
+ function digests(input, name) {
260
+ if (!Array.isArray(input) || input.length === 0 || input.length > MAX_ITEMS)
261
+ invalid(`${name} is invalid`);
262
+ const value = input.map((item) => digest(item, name)).sort();
263
+ if (new Set(value).size !== value.length)
264
+ invalid(`${name} contains duplicates`);
265
+ return freezeArray(value);
266
+ }
267
+ function optionalDigests(input, name) {
268
+ if (!Array.isArray(input) || input.length > MAX_ITEMS)
269
+ invalid(`${name} is invalid`);
270
+ const value = input.map((item) => digest(item, name)).sort();
271
+ if (new Set(value).size !== value.length)
272
+ invalid(`${name} contains duplicates`);
273
+ return freezeArray(value);
274
+ }
275
+ function indexes(input, name) {
276
+ if (!Array.isArray(input) || input.length === 0 || input.length > MAX_ITEMS)
277
+ invalid(`${name} is invalid`);
278
+ const value = input
279
+ .map((item) => integer(item, name, 0))
280
+ .sort((a, b) => a - b);
281
+ if (new Set(value).size !== value.length)
282
+ invalid(`${name} contains duplicates`);
283
+ return freezeArray(value);
284
+ }
285
+ function id(value, name) {
286
+ if (typeof value !== "string" || !ID.test(value))
287
+ invalid(`${name} is invalid`);
288
+ return value;
289
+ }
290
+ function digest(value, name) {
291
+ if (typeof value !== "string" || !DIGEST.test(value))
292
+ invalid(`${name} is invalid`);
293
+ return value;
294
+ }
295
+ function integer(value, name, minimum) {
296
+ if (!Number.isSafeInteger(value) || value < minimum)
297
+ invalid(`${name} is invalid`);
298
+ return value;
299
+ }
300
+ function oneOf(value, values, name) {
301
+ if (typeof value !== "string" ||
302
+ !values.includes(value))
303
+ invalid(`${name} is invalid`);
304
+ return value;
305
+ }
306
+ function invalid(message) {
307
+ throw new MeshAdaptiveOverlayErrorV1(message);
308
+ }
309
+ function stable(value) {
310
+ if (value === null || typeof value !== "object")
311
+ return JSON.stringify(value);
312
+ if (Array.isArray(value))
313
+ return `[${value.map(stable).join(",")}]`;
314
+ const record = value;
315
+ return `{${Object.keys(record)
316
+ .sort()
317
+ .map((key) => `${JSON.stringify(key)}:${stable(record[key])}`)
318
+ .join(",")}}`;
319
+ }
320
+ function freeze(value) {
321
+ return Object.freeze(value);
322
+ }
323
+ function freezeArray(value) {
324
+ return Object.freeze([...value]);
325
+ }
326
+ //# sourceMappingURL=adaptive-overlay-validation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adaptive-overlay-validation.js","sourceRoot":"","sources":["../src/adaptive-overlay-validation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export * from "./adaptive-overlay-contracts.js";
2
+ export * from "./adaptive-overlay-validation.js";
3
+ export * from "./adaptive-overlay-runtime.js";
4
+ //# sourceMappingURL=adaptive-overlay.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adaptive-overlay.d.ts","sourceRoot":"","sources":["../src/adaptive-overlay.ts"],"names":[],"mappings":"AAAA,cAAc,iCAAiC,CAAC;AAChD,cAAc,kCAAkC,CAAC;AACjD,cAAc,+BAA+B,CAAC"}
@@ -0,0 +1,4 @@
1
+ export * from "./adaptive-overlay-contracts.js";
2
+ export * from "./adaptive-overlay-validation.js";
3
+ export * from "./adaptive-overlay-runtime.js";
4
+ //# sourceMappingURL=adaptive-overlay.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adaptive-overlay.js","sourceRoot":"","sources":["../src/adaptive-overlay.ts"],"names":[],"mappings":"AAAA,cAAc,iCAAiC,CAAC;AAChD,cAAc,kCAAkC,CAAC;AACjD,cAAc,+BAA+B,CAAC"}
@@ -0,0 +1,227 @@
1
+ import { MESH_SIGNATURE_ALGORITHM } from "@agentplat/mesh-protocol";
2
+ import type { MeshSparseDeliveryV2, MeshSparseOverlayDigestV2 } from "./sparse-overlay-contracts.js";
3
+ import type { MeshSparseDurableAdmissionV1 } from "./sparse-overlay-runtime-contracts.js";
4
+ import type { MeshSparseNextHopTransportV1, MeshSparseTransportCatchUpResponseV1, MeshSparseTransportEndpointV1 } from "./sparse-overlay-transport-contracts.js";
5
+ /**
6
+ * Authenticated, epoch-bound envelopes for the sparse peer transport.
7
+ *
8
+ * The transport deliberately does not define a directory, PKI or membership
9
+ * protocol. Those decisions are supplied by the authority ports below. The
10
+ * only persisted evidence is public routing metadata, digests and signatures.
11
+ */
12
+ export declare const MESH_AUTHENTICATED_OVERLAY_TRANSPORT_SCHEMA_VERSION_V1: 1;
13
+ export type MeshAuthenticatedOverlayOperationV1 = "deliver" | "catch_up" | "fetch_causal";
14
+ export type MeshAuthenticatedOverlayRejectionCodeV1 = "overlay_mismatch" | "recipient_mismatch" | "membership_epoch_mismatch" | "sender_not_active" | "recipient_not_active" | "peer_binding_invalid" | "key_not_accepted" | "key_revoked" | "key_not_yet_valid" | "key_expired" | "rotation_window_expired" | "signature_invalid" | "payload_digest_invalid" | "sequence_replayed" | "sequence_future" | "logical_time_future" | "request_binding_invalid" | "response_binding_invalid" | "state_rollback_detected" | "state_conflict" | "unsupported_operation";
15
+ export interface MeshAuthenticatedOverlayPeerIdentityV1 {
16
+ readonly peerId: string;
17
+ readonly peerIndex: number;
18
+ }
19
+ export interface MeshAuthenticatedOverlayProofV1 {
20
+ readonly algorithm: typeof MESH_SIGNATURE_ALGORITHM;
21
+ readonly keyId: string;
22
+ readonly value: string;
23
+ }
24
+ interface MeshAuthenticatedOverlayBaseEnvelopeV1 {
25
+ readonly schemaVersion: 1;
26
+ readonly overlayId: string;
27
+ readonly membershipEpoch: number;
28
+ readonly sender: MeshAuthenticatedOverlayPeerIdentityV1;
29
+ readonly recipient: MeshAuthenticatedOverlayPeerIdentityV1;
30
+ readonly sequence: number;
31
+ readonly logicalTime: number;
32
+ readonly payloadDigest: MeshSparseOverlayDigestV2;
33
+ readonly proof: MeshAuthenticatedOverlayProofV1;
34
+ }
35
+ export interface MeshAuthenticatedOverlayRequestEnvelopeV1 extends MeshAuthenticatedOverlayBaseEnvelopeV1 {
36
+ readonly kind: "request";
37
+ readonly requestId: string;
38
+ readonly operation: MeshAuthenticatedOverlayOperationV1;
39
+ readonly body: unknown;
40
+ }
41
+ export interface MeshAuthenticatedOverlayResponseEnvelopeV1 extends MeshAuthenticatedOverlayBaseEnvelopeV1 {
42
+ readonly kind: "response";
43
+ readonly requestId: string;
44
+ readonly requestDigest: MeshSparseOverlayDigestV2;
45
+ readonly operation: MeshAuthenticatedOverlayOperationV1;
46
+ readonly accepted: boolean;
47
+ readonly reasonCode: MeshAuthenticatedOverlayRejectionCodeV1 | null;
48
+ readonly body: unknown;
49
+ }
50
+ export type MeshAuthenticatedOverlayEnvelopeV1 = MeshAuthenticatedOverlayRequestEnvelopeV1 | MeshAuthenticatedOverlayResponseEnvelopeV1;
51
+ /** Membership and rotation truth is owned by the caller's certified authority. */
52
+ export interface MeshAuthenticatedOverlayMembershipAuthorityPortV1 {
53
+ resolve(input: {
54
+ readonly overlayId: string;
55
+ readonly membershipEpoch: number;
56
+ readonly peerId: string;
57
+ readonly peerIndex: number;
58
+ readonly logicalTime: number;
59
+ }): Promise<{
60
+ readonly active: boolean;
61
+ readonly currentKeyId: string;
62
+ /** A retiring key is accepted only through this explicit inclusive time. */
63
+ readonly previousKeyId?: string;
64
+ readonly previousKeyAcceptUntilLogicalTime?: number;
65
+ } | null>;
66
+ }
67
+ /** Public-key material and revocation status; private keys never enter this port. */
68
+ export interface MeshAuthenticatedOverlayKeyAuthorityPortV1 {
69
+ resolve(input: {
70
+ readonly overlayId: string;
71
+ readonly membershipEpoch: number;
72
+ readonly peerId: string;
73
+ readonly keyId: string;
74
+ readonly logicalTime: number;
75
+ }): Promise<{
76
+ readonly status: "active" | "revoked";
77
+ readonly publicKey: CryptoKey;
78
+ readonly validFromLogicalTime: number;
79
+ readonly validUntilLogicalTime: number;
80
+ } | null>;
81
+ }
82
+ /** Key custody is intentionally opaque to the overlay transport. */
83
+ export interface MeshAuthenticatedOverlaySignerPortV1 {
84
+ readonly keyId: string;
85
+ sign(input: {
86
+ readonly bytes: Uint8Array;
87
+ }): Promise<Uint8Array>;
88
+ }
89
+ /**
90
+ * Atomic state plus monotonic-anchor persistence.
91
+ *
92
+ * A production adapter MUST commit `state` and the independently protected
93
+ * anchor as one linearizable transition. It MUST never return a snapshot whose
94
+ * anchor predates the returned state, and MUST reject any transition that
95
+ * would regress the independently protected anchor. This boundary is the
96
+ * anti-rollback trust boundary; callers cannot safely compose two separate
97
+ * compare-and-set operations instead.
98
+ */
99
+ export interface MeshAuthenticatedOverlayStateStoreV1 {
100
+ loadCurrent(scope: string): Promise<{
101
+ readonly state: MeshAuthenticatedOverlayStateV1;
102
+ readonly anchor: {
103
+ readonly revision: number;
104
+ readonly stateDigest: MeshSparseOverlayDigestV2;
105
+ };
106
+ } | undefined>;
107
+ compareAndSet(input: {
108
+ readonly scope: string;
109
+ readonly expected: {
110
+ readonly revision: number;
111
+ readonly stateDigest: MeshSparseOverlayDigestV2;
112
+ } | null;
113
+ readonly next: MeshAuthenticatedOverlayStateV1;
114
+ }): Promise<boolean>;
115
+ }
116
+ export interface MeshAuthenticatedOverlayInboundCursorV1 {
117
+ readonly peerId: string;
118
+ readonly membershipEpoch: number;
119
+ readonly highestSequence: number;
120
+ }
121
+ export interface MeshAuthenticatedOverlayStateV1 {
122
+ readonly schemaVersion: 1;
123
+ readonly scope: string;
124
+ readonly overlayId: string;
125
+ readonly localPeer: MeshAuthenticatedOverlayPeerIdentityV1;
126
+ readonly membershipEpoch: number;
127
+ readonly revision: number;
128
+ readonly nextOutboundSequence: number;
129
+ readonly inboundCursors: readonly MeshAuthenticatedOverlayInboundCursorV1[];
130
+ readonly lastLogicalTime: number;
131
+ readonly previousStateDigest: MeshSparseOverlayDigestV2 | null;
132
+ readonly stateDigest: MeshSparseOverlayDigestV2;
133
+ }
134
+ /** One narrow exchange boundary, adaptable to WebSocket, QUIC, HTTP or local tests. */
135
+ export interface MeshAuthenticatedOverlayNetworkPortV1 {
136
+ exchange(input: {
137
+ readonly recipient: MeshAuthenticatedOverlayPeerIdentityV1;
138
+ readonly envelope: MeshAuthenticatedOverlayRequestEnvelopeV1;
139
+ readonly logicalTime: number;
140
+ }): Promise<MeshAuthenticatedOverlayResponseEnvelopeV1>;
141
+ }
142
+ export interface MeshAuthenticatedOverlayTransportOptionsV1 {
143
+ readonly overlayId: string;
144
+ readonly membershipEpoch: number;
145
+ readonly localPeer: MeshAuthenticatedOverlayPeerIdentityV1;
146
+ readonly signer: MeshAuthenticatedOverlaySignerPortV1;
147
+ readonly membership: MeshAuthenticatedOverlayMembershipAuthorityPortV1;
148
+ readonly keys: MeshAuthenticatedOverlayKeyAuthorityPortV1;
149
+ readonly store: MeshAuthenticatedOverlayStateStoreV1;
150
+ readonly network: MeshAuthenticatedOverlayNetworkPortV1;
151
+ readonly maximumFutureSequence?: number;
152
+ readonly maximumFutureLogicalTime?: number;
153
+ readonly maximumInboundPeers?: number;
154
+ readonly maximumCommitAttempts?: number;
155
+ readonly crypto?: Crypto;
156
+ }
157
+ export interface MeshAuthenticatedOverlayEndpointOptionsV1 extends Omit<MeshAuthenticatedOverlayTransportOptionsV1, "network"> {
158
+ readonly endpoint: MeshSparseTransportEndpointV1;
159
+ }
160
+ /**
161
+ * Authenticated next-hop adapter for MeshSparsePeerTransportRuntimeV1.
162
+ * Pass it as that runtime's `nextHop`; the underlying durable overlay remains
163
+ * responsible for queueing, causal recovery and delivery idempotency.
164
+ */
165
+ export declare class MeshAuthenticatedSparseOverlayNextHopTransportV1 implements MeshSparseNextHopTransportV1 {
166
+ #private;
167
+ constructor(options: MeshAuthenticatedOverlayTransportOptionsV1);
168
+ deliver(input: Parameters<MeshSparseNextHopTransportV1["deliver"]>[0]): Promise<MeshSparseDurableAdmissionV1>;
169
+ catchUp(input: Parameters<MeshSparseNextHopTransportV1["catchUp"]>[0]): Promise<MeshSparseTransportCatchUpResponseV1>;
170
+ fetchCausal(input: Parameters<MeshSparseNextHopTransportV1["fetchCausal"]>[0]): Promise<MeshSparseDeliveryV2 | undefined>;
171
+ }
172
+ /** Endpoint adapter. It authenticates before invoking the durable overlay endpoint. */
173
+ export declare class MeshAuthenticatedSparseOverlayEndpointV1 {
174
+ #private;
175
+ constructor(options: MeshAuthenticatedOverlayEndpointOptionsV1);
176
+ receive(input: {
177
+ readonly envelope: MeshAuthenticatedOverlayRequestEnvelopeV1;
178
+ readonly logicalTime: number;
179
+ }): Promise<MeshAuthenticatedOverlayResponseEnvelopeV1>;
180
+ }
181
+ /**
182
+ * Bounded in-memory reference persistence, suitable only for local development.
183
+ * Its anchor shares process memory with the state and is therefore not an
184
+ * independently protected production anti-rollback witness.
185
+ */
186
+ export declare class InMemoryMeshAuthenticatedOverlayStateStoreV1 implements MeshAuthenticatedOverlayStateStoreV1 {
187
+ #private;
188
+ loadCurrent(scope: string): Promise<{
189
+ readonly state: MeshAuthenticatedOverlayStateV1;
190
+ readonly anchor: {
191
+ readonly revision: number;
192
+ readonly stateDigest: MeshSparseOverlayDigestV2;
193
+ };
194
+ } | undefined>;
195
+ compareAndSet(input: {
196
+ readonly scope: string;
197
+ readonly expected: {
198
+ readonly revision: number;
199
+ readonly stateDigest: MeshSparseOverlayDigestV2;
200
+ } | null;
201
+ readonly next: MeshAuthenticatedOverlayStateV1;
202
+ }): Promise<boolean>;
203
+ snapshot(): readonly MeshAuthenticatedOverlayStateV1[];
204
+ }
205
+ /** Explicit local wiring for development; it is a route table, never a directory. */
206
+ export declare class InMemoryMeshAuthenticatedOverlayNetworkV1 implements MeshAuthenticatedOverlayNetworkPortV1 {
207
+ #private;
208
+ connect(peer: MeshAuthenticatedOverlayPeerIdentityV1, endpoint: MeshAuthenticatedSparseOverlayEndpointV1): void;
209
+ disconnect(peer: MeshAuthenticatedOverlayPeerIdentityV1): void;
210
+ exchange(input: {
211
+ readonly recipient: MeshAuthenticatedOverlayPeerIdentityV1;
212
+ readonly envelope: MeshAuthenticatedOverlayRequestEnvelopeV1;
213
+ readonly logicalTime: number;
214
+ }): Promise<MeshAuthenticatedOverlayResponseEnvelopeV1>;
215
+ }
216
+ /** Opaque Web Crypto signer adapter; callers retain private-key lifecycle control. */
217
+ export declare class WebCryptoMeshAuthenticatedOverlaySignerV1 implements MeshAuthenticatedOverlaySignerPortV1 {
218
+ readonly keyId: string;
219
+ readonly privateKey: CryptoKey;
220
+ readonly crypto: Crypto;
221
+ constructor(keyId: string, privateKey: CryptoKey, crypto?: Crypto);
222
+ sign(input: {
223
+ readonly bytes: Uint8Array;
224
+ }): Promise<Uint8Array>;
225
+ }
226
+ export {};
227
+ //# sourceMappingURL=authenticated-overlay-transport.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"authenticated-overlay-transport.d.ts","sourceRoot":"","sources":["../src/authenticated-overlay-transport.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,wBAAwB,EAEzB,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EACV,oBAAoB,EACpB,yBAAyB,EAC1B,MAAM,+BAA+B,CAAC;AACvC,OAAO,KAAK,EACV,4BAA4B,EAE7B,MAAM,uCAAuC,CAAC;AAC/C,OAAO,KAAK,EACV,4BAA4B,EAC5B,oCAAoC,EACpC,6BAA6B,EAC9B,MAAM,yCAAyC,CAAC;AAGjD;;;;;;GAMG;AACH,eAAO,MAAM,sDAAsD,EACjE,CAAU,CAAC;AAEb,MAAM,MAAM,mCAAmC,GAC7C,SAAS,GAAG,UAAU,GAAG,cAAc,CAAC;AAE1C,MAAM,MAAM,uCAAuC,GAC/C,kBAAkB,GAClB,oBAAoB,GACpB,2BAA2B,GAC3B,mBAAmB,GACnB,sBAAsB,GACtB,sBAAsB,GACtB,kBAAkB,GAClB,aAAa,GACb,mBAAmB,GACnB,aAAa,GACb,yBAAyB,GACzB,mBAAmB,GACnB,wBAAwB,GACxB,mBAAmB,GACnB,iBAAiB,GACjB,qBAAqB,GACrB,yBAAyB,GACzB,0BAA0B,GAC1B,yBAAyB,GACzB,gBAAgB,GAChB,uBAAuB,CAAC;AAE5B,MAAM,WAAW,sCAAsC;IACrD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,+BAA+B;IAC9C,QAAQ,CAAC,SAAS,EAAE,OAAO,wBAAwB,CAAC;IACpD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED,UAAU,sCAAsC;IAC9C,QAAQ,CAAC,aAAa,EAAE,CAAC,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,MAAM,EAAE,sCAAsC,CAAC;IACxD,QAAQ,CAAC,SAAS,EAAE,sCAAsC,CAAC;IAC3D,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,aAAa,EAAE,yBAAyB,CAAC;IAClD,QAAQ,CAAC,KAAK,EAAE,+BAA+B,CAAC;CACjD;AAED,MAAM,WAAW,yCAA0C,SAAQ,sCAAsC;IACvG,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,mCAAmC,CAAC;IACxD,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,0CAA2C,SAAQ,sCAAsC;IACxG,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,aAAa,EAAE,yBAAyB,CAAC;IAClD,QAAQ,CAAC,SAAS,EAAE,mCAAmC,CAAC;IACxD,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,UAAU,EAAE,uCAAuC,GAAG,IAAI,CAAC;IACpE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;CACxB;AAED,MAAM,MAAM,kCAAkC,GAC1C,yCAAyC,GACzC,0CAA0C,CAAC;AAE/C,kFAAkF;AAClF,MAAM,WAAW,iDAAiD;IAChE,OAAO,CAAC,KAAK,EAAE;QACb,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;QAC3B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;QACjC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;QACxB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;QAC3B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;KAC9B,GAAG,OAAO,CAAC;QACV,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;QACzB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;QAC9B,4EAA4E;QAC5E,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;QAChC,QAAQ,CAAC,iCAAiC,CAAC,EAAE,MAAM,CAAC;KACrD,GAAG,IAAI,CAAC,CAAC;CACX;AAED,qFAAqF;AACrF,MAAM,WAAW,0CAA0C;IACzD,OAAO,CAAC,KAAK,EAAE;QACb,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;QAC3B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;QACjC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;QACxB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;QACvB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;KAC9B,GAAG,OAAO,CAAC;QACV,QAAQ,CAAC,MAAM,EAAE,QAAQ,GAAG,SAAS,CAAC;QACtC,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;QAC9B,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAC;QACtC,QAAQ,CAAC,qBAAqB,EAAE,MAAM,CAAC;KACxC,GAAG,IAAI,CAAC,CAAC;CACX;AAED,oEAAoE;AACpE,MAAM,WAAW,oCAAoC;IACnD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,IAAI,CAAC,KAAK,EAAE;QAAE,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAA;KAAE,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;CAClE;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,oCAAoC;IACnD,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAC/B;QACE,QAAQ,CAAC,KAAK,EAAE,+BAA+B,CAAC;QAChD,QAAQ,CAAC,MAAM,EAAE;YACf,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;YAC1B,QAAQ,CAAC,WAAW,EAAE,yBAAyB,CAAC;SACjD,CAAC;KACH,GACD,SAAS,CACZ,CAAC;IACF,aAAa,CAAC,KAAK,EAAE;QACnB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;QACvB,QAAQ,CAAC,QAAQ,EAAE;YACjB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;YAC1B,QAAQ,CAAC,WAAW,EAAE,yBAAyB,CAAC;SACjD,GAAG,IAAI,CAAC;QACT,QAAQ,CAAC,IAAI,EAAE,+BAA+B,CAAC;KAChD,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CACtB;AAED,MAAM,WAAW,uCAAuC;IACtD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;CAClC;AAED,MAAM,WAAW,+BAA+B;IAC9C,QAAQ,CAAC,aAAa,EAAE,CAAC,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,sCAAsC,CAAC;IAC3D,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAC;IACtC,QAAQ,CAAC,cAAc,EAAE,SAAS,uCAAuC,EAAE,CAAC;IAC5E,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,mBAAmB,EAAE,yBAAyB,GAAG,IAAI,CAAC;IAC/D,QAAQ,CAAC,WAAW,EAAE,yBAAyB,CAAC;CACjD;AAED,uFAAuF;AACvF,MAAM,WAAW,qCAAqC;IACpD,QAAQ,CAAC,KAAK,EAAE;QACd,QAAQ,CAAC,SAAS,EAAE,sCAAsC,CAAC;QAC3D,QAAQ,CAAC,QAAQ,EAAE,yCAAyC,CAAC;QAC7D,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;KAC9B,GAAG,OAAO,CAAC,0CAA0C,CAAC,CAAC;CACzD;AAED,MAAM,WAAW,0CAA0C;IACzD,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,SAAS,EAAE,sCAAsC,CAAC;IAC3D,QAAQ,CAAC,MAAM,EAAE,oCAAoC,CAAC;IACtD,QAAQ,CAAC,UAAU,EAAE,iDAAiD,CAAC;IACvE,QAAQ,CAAC,IAAI,EAAE,0CAA0C,CAAC;IAC1D,QAAQ,CAAC,KAAK,EAAE,oCAAoC,CAAC;IACrD,QAAQ,CAAC,OAAO,EAAE,qCAAqC,CAAC;IACxD,QAAQ,CAAC,qBAAqB,CAAC,EAAE,MAAM,CAAC;IACxC,QAAQ,CAAC,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAC3C,QAAQ,CAAC,mBAAmB,CAAC,EAAE,MAAM,CAAC;IACtC,QAAQ,CAAC,qBAAqB,CAAC,EAAE,MAAM,CAAC;IACxC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,yCAA0C,SAAQ,IAAI,CACrE,0CAA0C,EAC1C,SAAS,CACV;IACC,QAAQ,CAAC,QAAQ,EAAE,6BAA6B,CAAC;CAClD;AASD;;;;GAIG;AACH,qBAAa,gDAAiD,YAAW,4BAA4B;;gBAGvF,OAAO,EAAE,0CAA0C;IAIzD,OAAO,CACX,KAAK,EAAE,UAAU,CAAC,4BAA4B,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,GAC5D,OAAO,CAAC,4BAA4B,CAAC;IAgBlC,OAAO,CACX,KAAK,EAAE,UAAU,CAAC,4BAA4B,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,GAC5D,OAAO,CAAC,oCAAoC,CAAC;IAmB1C,WAAW,CACf,KAAK,EAAE,UAAU,CAAC,4BAA4B,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,GAChE,OAAO,CAAC,oBAAoB,GAAG,SAAS,CAAC;CA4C7C;AAED,uFAAuF;AACvF,qBAAa,wCAAwC;;gBAIvC,OAAO,EAAE,yCAAyC;IAUxD,OAAO,CAAC,KAAK,EAAE;QACnB,QAAQ,CAAC,QAAQ,EAAE,yCAAyC,CAAC;QAC7D,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;KAC9B,GAAG,OAAO,CAAC,0CAA0C,CAAC;CA6DxD;AAED;;;;GAIG;AACH,qBAAa,4CACX,YAAW,oCAAoC;;IAazC,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CACrC;QACE,QAAQ,CAAC,KAAK,EAAE,+BAA+B,CAAC;QAChD,QAAQ,CAAC,MAAM,EAAE;YACf,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;YAC1B,QAAQ,CAAC,WAAW,EAAE,yBAAyB,CAAC;SACjD,CAAC;KACH,GACD,SAAS,CACZ;IAKK,aAAa,CAAC,KAAK,EAAE;QACzB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;QACvB,QAAQ,CAAC,QAAQ,EAAE;YACjB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;YAC1B,QAAQ,CAAC,WAAW,EAAE,yBAAyB,CAAC;SACjD,GAAG,IAAI,CAAC;QACT,QAAQ,CAAC,IAAI,EAAE,+BAA+B,CAAC;KAChD,GAAG,OAAO,CAAC,OAAO,CAAC;IA0BpB,QAAQ,IAAI,SAAS,+BAA+B,EAAE;CAKvD;AAED,qFAAqF;AACrF,qBAAa,yCAA0C,YAAW,qCAAqC;;IAMrG,OAAO,CACL,IAAI,EAAE,sCAAsC,EAC5C,QAAQ,EAAE,wCAAwC,GACjD,IAAI;IAOP,UAAU,CAAC,IAAI,EAAE,sCAAsC,GAAG,IAAI;IAIxD,QAAQ,CAAC,KAAK,EAAE;QACpB,QAAQ,CAAC,SAAS,EAAE,sCAAsC,CAAC;QAC3D,QAAQ,CAAC,QAAQ,EAAE,yCAAyC,CAAC;QAC7D,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;KAC9B,GAAG,OAAO,CAAC,0CAA0C,CAAC;CAUxD;AAED,sFAAsF;AACtF,qBAAa,yCAA0C,YAAW,oCAAoC;IAElG,QAAQ,CAAC,KAAK,EAAE,MAAM;IACtB,QAAQ,CAAC,UAAU,EAAE,SAAS;IAC9B,QAAQ,CAAC,MAAM,EAAE,MAAM;gBAFd,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,SAAS,EACrB,MAAM,GAAE,MAA0B;IAWvC,IAAI,CAAC,KAAK,EAAE;QAAE,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAA;KAAE,GAAG,OAAO,CAAC,UAAU,CAAC;CASvE"}