@agentplat/inference-control 0.3.0-alpha.3

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 (83) hide show
  1. package/LICENSE +202 -0
  2. package/README.md +101 -0
  3. package/dist/assessments.d.ts +5 -0
  4. package/dist/assessments.d.ts.map +1 -0
  5. package/dist/assessments.js +216 -0
  6. package/dist/assessments.js.map +1 -0
  7. package/dist/boundary.d.ts +24 -0
  8. package/dist/boundary.d.ts.map +1 -0
  9. package/dist/boundary.js +46 -0
  10. package/dist/boundary.js.map +1 -0
  11. package/dist/canonical.d.ts +6 -0
  12. package/dist/canonical.d.ts.map +1 -0
  13. package/dist/canonical.js +74 -0
  14. package/dist/canonical.js.map +1 -0
  15. package/dist/capabilities.d.ts +43 -0
  16. package/dist/capabilities.d.ts.map +1 -0
  17. package/dist/capabilities.js +304 -0
  18. package/dist/capabilities.js.map +1 -0
  19. package/dist/context.d.ts +7 -0
  20. package/dist/context.d.ts.map +1 -0
  21. package/dist/context.js +191 -0
  22. package/dist/context.js.map +1 -0
  23. package/dist/index.d.ts +14 -0
  24. package/dist/index.d.ts.map +1 -0
  25. package/dist/index.js +14 -0
  26. package/dist/index.js.map +1 -0
  27. package/dist/messages.d.ts +124 -0
  28. package/dist/messages.d.ts.map +1 -0
  29. package/dist/messages.js +475 -0
  30. package/dist/messages.js.map +1 -0
  31. package/dist/model.d.ts +104 -0
  32. package/dist/model.d.ts.map +1 -0
  33. package/dist/model.js +437 -0
  34. package/dist/model.js.map +1 -0
  35. package/dist/policy.d.ts +11 -0
  36. package/dist/policy.d.ts.map +1 -0
  37. package/dist/policy.js +338 -0
  38. package/dist/policy.js.map +1 -0
  39. package/dist/reducer.d.ts +193 -0
  40. package/dist/reducer.d.ts.map +1 -0
  41. package/dist/reducer.js +1341 -0
  42. package/dist/reducer.js.map +1 -0
  43. package/dist/runtime.d.ts +132 -0
  44. package/dist/runtime.d.ts.map +1 -0
  45. package/dist/runtime.js +587 -0
  46. package/dist/runtime.js.map +1 -0
  47. package/dist/scopes.d.ts +3 -0
  48. package/dist/scopes.d.ts.map +1 -0
  49. package/dist/scopes.js +83 -0
  50. package/dist/scopes.js.map +1 -0
  51. package/dist/sha256.d.ts +2 -0
  52. package/dist/sha256.d.ts.map +1 -0
  53. package/dist/sha256.js +72 -0
  54. package/dist/sha256.js.map +1 -0
  55. package/dist/state-records.d.ts +8 -0
  56. package/dist/state-records.d.ts.map +1 -0
  57. package/dist/state-records.js +204 -0
  58. package/dist/state-records.js.map +1 -0
  59. package/dist/state.d.ts +19 -0
  60. package/dist/state.d.ts.map +1 -0
  61. package/dist/state.js +689 -0
  62. package/dist/state.js.map +1 -0
  63. package/dist/streams.d.ts +5 -0
  64. package/dist/streams.d.ts.map +1 -0
  65. package/dist/streams.js +93 -0
  66. package/dist/streams.js.map +1 -0
  67. package/dist/telemetry.d.ts +12 -0
  68. package/dist/telemetry.d.ts.map +1 -0
  69. package/dist/telemetry.js +20 -0
  70. package/dist/telemetry.js.map +1 -0
  71. package/dist/tools.d.ts +221 -0
  72. package/dist/tools.d.ts.map +1 -0
  73. package/dist/tools.js +755 -0
  74. package/dist/tools.js.map +1 -0
  75. package/dist/types.d.ts +474 -0
  76. package/dist/types.d.ts.map +1 -0
  77. package/dist/types.js +43 -0
  78. package/dist/types.js.map +1 -0
  79. package/dist/validation.d.ts +23 -0
  80. package/dist/validation.d.ts.map +1 -0
  81. package/dist/validation.js +154 -0
  82. package/dist/validation.js.map +1 -0
  83. package/package.json +56 -0
package/dist/policy.js ADDED
@@ -0,0 +1,338 @@
1
+ import { canonicalizeControlJsonV1, digestControlJsonV1 } from './canonical.js';
2
+ import { INFERENCE_CONTROL_LIMITS_V1, assertDigest, assertControlToken, assertExactKeys, assertIdentifier, assertOneOf, assertSafeInteger, deepFreeze, sortedUnique, } from './validation.js';
3
+ export function validateInferenceControlPolicyV1(value) {
4
+ const keys = [
5
+ 'schemaVersion',
6
+ 'policyId',
7
+ 'policyVersion',
8
+ 'parentPolicyDigest',
9
+ 'mode',
10
+ 'outputRisk',
11
+ 'checkpoints',
12
+ 'requiredCapabilities',
13
+ 'minimumCapabilityAssurance',
14
+ 'allowedCapabilityBindings',
15
+ 'allowedContextZones',
16
+ 'allowedTransformerBindings',
17
+ 'allowedActions',
18
+ 'allowedMessageChannels',
19
+ 'assessmentBindings',
20
+ 'budgets',
21
+ 'limits',
22
+ 'maximumRunDurationMs',
23
+ 'maximumAssessmentTtlMs',
24
+ 'maximumGrantTtlMs',
25
+ 'maximumMessagePermitTtlMs',
26
+ 'exhaustedDisposition',
27
+ 'coordinatedActionsRequired',
28
+ 'diagnosticsPolicyId',
29
+ 'redactionPolicyId',
30
+ ];
31
+ assertExactKeys(value, keys, 'policy');
32
+ const v = value;
33
+ if (v.schemaVersion !== 1)
34
+ throw new TypeError('Unsupported policy schema');
35
+ for (const key of [
36
+ 'policyId',
37
+ 'diagnosticsPolicyId',
38
+ 'redactionPolicyId',
39
+ ])
40
+ assertIdentifier(v[key], key);
41
+ assertSafeInteger(v.policyVersion, 'policyVersion', 1);
42
+ if (v.parentPolicyDigest !== null)
43
+ assertDigest(v.parentPolicyDigest, 'parentPolicyDigest');
44
+ assertOneOf(v.mode, ['observe', 'buffered', 'incremental'], 'mode');
45
+ assertOneOf(v.outputRisk, ['low', 'moderate', 'high'], 'outputRisk');
46
+ assertOneOf(v.minimumCapabilityAssurance, ['verified', 'declared'], 'minimumCapabilityAssurance');
47
+ assertOneOf(v.exhaustedDisposition, ['abstain', 'escalate', 'deny'], 'exhaustedDisposition');
48
+ for (const key of [
49
+ 'checkpoints',
50
+ 'requiredCapabilities',
51
+ 'allowedCapabilityBindings',
52
+ 'allowedContextZones',
53
+ 'allowedTransformerBindings',
54
+ 'allowedActions',
55
+ 'allowedMessageChannels',
56
+ 'assessmentBindings',
57
+ ])
58
+ if (!Array.isArray(v[key]))
59
+ throw new TypeError(`${key} must be an array`);
60
+ const checkpoints = v.checkpoints;
61
+ for (const checkpoint of checkpoints)
62
+ assertOneOf(checkpoint, ['pre_run', 'stream', 'post_run', 'pre_tool', 'pre_message'], 'checkpoint');
63
+ sortedUnique(checkpoints, 'checkpoints');
64
+ const capabilities = v.requiredCapabilities;
65
+ const capabilityKeys = capabilities.map((item, index) => {
66
+ assertExactKeys(item, ['kind', 'value'], `requiredCapabilities[${index}]`);
67
+ const capability = item;
68
+ assertOneOf(capability.kind, [
69
+ 'input_inspection',
70
+ 'final_output_assessment',
71
+ 'incremental_output_assessment',
72
+ 'release_interruption',
73
+ 'tool_interception',
74
+ 'message_interception',
75
+ 'representation_access',
76
+ ], 'capability.kind');
77
+ assertCapabilityPair(capability.kind, capability.value);
78
+ return `${capability.kind}:${capability.value}`;
79
+ });
80
+ sortedUnique(capabilityKeys, 'requiredCapabilities');
81
+ for (const [index, item] of v.allowedCapabilityBindings.entries()) {
82
+ assertExactKeys(item, [
83
+ 'schemaVersion',
84
+ 'capabilityId',
85
+ 'descriptorVersion',
86
+ 'wrapperId',
87
+ 'wrapperVersion',
88
+ 'descriptorDigest',
89
+ 'requiredAssurance',
90
+ ], `allowedCapabilityBindings[${index}]`);
91
+ const binding = item;
92
+ if (binding.schemaVersion !== 1)
93
+ throw new TypeError('Unsupported capability binding');
94
+ for (const key of ['capabilityId', 'wrapperId'])
95
+ assertIdentifier(binding[key], key);
96
+ for (const key of ['descriptorVersion', 'wrapperVersion'])
97
+ assertSafeInteger(binding[key], key, 1);
98
+ assertDigest(binding.descriptorDigest, 'descriptorDigest');
99
+ assertOneOf(binding.requiredAssurance, ['reference_tested', 'application_verified', 'declared'], 'requiredAssurance');
100
+ }
101
+ for (const zone of v.allowedContextZones)
102
+ assertOneOf(zone, [
103
+ 'policy',
104
+ 'objective',
105
+ 'local_trusted',
106
+ 'user_untrusted',
107
+ 'peer_untrusted',
108
+ 'tool_untrusted',
109
+ 'retrieval_untrusted',
110
+ 'provider_untrusted',
111
+ 'assessor_untrusted',
112
+ ], 'context zone');
113
+ sortedUnique(v.allowedContextZones, 'allowedContextZones');
114
+ for (const [index, item] of v.allowedTransformerBindings.entries()) {
115
+ assertExactKeys(item, ['id', 'version'], `allowedTransformerBindings[${index}]`);
116
+ const binding = item;
117
+ assertIdentifier(binding.id, 'transformer.id');
118
+ assertSafeInteger(binding.version, 'transformer.version', 1);
119
+ }
120
+ for (const [index, item] of v.allowedActions.entries()) {
121
+ assertExactKeys(item, [
122
+ 'schemaVersion',
123
+ 'namespace',
124
+ 'toolId',
125
+ 'operation',
126
+ 'actionBindingId',
127
+ 'minimumActionBindingVersion',
128
+ ], `allowedActions[${index}]`);
129
+ const action = item;
130
+ if (action.schemaVersion !== 1)
131
+ throw new TypeError('Unsupported action pattern');
132
+ for (const key of [
133
+ 'namespace',
134
+ 'toolId',
135
+ 'operation',
136
+ 'actionBindingId',
137
+ ]) {
138
+ key === 'namespace' || key === 'operation'
139
+ ? assertControlToken(action[key], key)
140
+ : assertIdentifier(action[key], key);
141
+ }
142
+ assertSafeInteger(action.minimumActionBindingVersion, 'minimumActionBindingVersion', 1);
143
+ }
144
+ for (const channel of v.allowedMessageChannels)
145
+ assertControlToken(channel, 'message channel');
146
+ sortedUnique(v.allowedMessageChannels, 'allowedMessageChannels');
147
+ const assessorCheckpoints = [];
148
+ for (const [index, item] of v.assessmentBindings.entries()) {
149
+ assertExactKeys(item, [
150
+ 'schemaVersion',
151
+ 'checkpoint',
152
+ 'assessorId',
153
+ 'assessorVersion',
154
+ 'assessorBindingDigest',
155
+ 'maximumResponseBytes',
156
+ 'maximumEvidenceReferences',
157
+ 'timeoutMs',
158
+ ], `assessmentBindings[${index}]`);
159
+ const binding = item;
160
+ if (binding.schemaVersion !== 1)
161
+ throw new TypeError('Unsupported assessor binding');
162
+ assertOneOf(binding.checkpoint, ['pre_run', 'stream', 'post_run', 'pre_tool', 'pre_message'], 'assessment checkpoint');
163
+ assessorCheckpoints.push(binding.checkpoint);
164
+ assertIdentifier(binding.assessorId, 'assessorId');
165
+ assertSafeInteger(binding.assessorVersion, 'assessorVersion', 1);
166
+ assertDigest(binding.assessorBindingDigest, 'assessorBindingDigest');
167
+ assertSafeInteger(binding.maximumResponseBytes, 'maximumResponseBytes', 1);
168
+ assertSafeInteger(binding.maximumEvidenceReferences, 'maximumEvidenceReferences', 1);
169
+ assertSafeInteger(binding.timeoutMs, 'timeoutMs', 1);
170
+ }
171
+ if (new Set(assessorCheckpoints).size !== assessorCheckpoints.length ||
172
+ assessorCheckpoints.length !== checkpoints.length ||
173
+ checkpoints.some((checkpoint) => !assessorCheckpoints.includes(checkpoint)))
174
+ throw new TypeError('Each checkpoint requires exactly one assessor binding');
175
+ assertExactKeys(v.budgets, ['revisions', 'retries', 'challenges'], 'budgets');
176
+ for (const key of ['revisions', 'retries', 'challenges'])
177
+ assertSafeInteger(v.budgets[key], `budgets.${key}`);
178
+ assertExactKeys(v.limits, Object.keys(INFERENCE_CONTROL_LIMITS_V1), 'limits');
179
+ for (const key of Object.keys(INFERENCE_CONTROL_LIMITS_V1)) {
180
+ const limit = v.limits[key];
181
+ assertSafeInteger(limit, `limits.${key}`, 1);
182
+ if (limit > INFERENCE_CONTROL_LIMITS_V1[key])
183
+ throw new TypeError(`limits.${key} exceeds its hard ceiling`);
184
+ }
185
+ for (const key of [
186
+ 'maximumRunDurationMs',
187
+ 'maximumAssessmentTtlMs',
188
+ 'maximumGrantTtlMs',
189
+ 'maximumMessagePermitTtlMs',
190
+ ])
191
+ assertSafeInteger(v[key], key, 1);
192
+ if (typeof v.coordinatedActionsRequired !== 'boolean')
193
+ throw new TypeError('coordinatedActionsRequired must be boolean');
194
+ const limits = v.limits;
195
+ if (v.maximumRunDurationMs > limits.maxRunDurationMs ||
196
+ v.maximumAssessmentTtlMs > limits.maxAssessmentTtlMs ||
197
+ v.maximumGrantTtlMs > limits.maxGrantTtlMs ||
198
+ v.maximumMessagePermitTtlMs > limits.maxMessagePermitTtlMs)
199
+ throw new TypeError('Policy TTL exceeds its limits');
200
+ if (v.allowedActions.length > 0 &&
201
+ (!checkpoints.includes('pre_tool') ||
202
+ !assessorCheckpoints.includes('pre_tool')))
203
+ throw new TypeError('Actions require pre_tool assessment');
204
+ if (v.allowedMessageChannels.length > 0 &&
205
+ (!checkpoints.includes('pre_message') ||
206
+ !assessorCheckpoints.includes('pre_message')))
207
+ throw new TypeError('Messages require pre_message assessment');
208
+ if (v.outputRisk === 'high' &&
209
+ (v.mode !== 'buffered' ||
210
+ v.minimumCapabilityAssurance !== 'verified' ||
211
+ !checkpoints.includes('pre_run') ||
212
+ !checkpoints.includes('post_run')))
213
+ throw new TypeError('release_mode_incompatible');
214
+ return deepFreeze({ ...v });
215
+ }
216
+ function assertCapabilityPair(kind, value) {
217
+ switch (kind) {
218
+ case 'input_inspection':
219
+ case 'final_output_assessment':
220
+ assertOneOf(value, ['full'], 'capability.value');
221
+ return;
222
+ case 'incremental_output_assessment':
223
+ assertOneOf(value, ['windowed'], 'capability.value');
224
+ return;
225
+ case 'release_interruption':
226
+ assertOneOf(value, ['local'], 'capability.value');
227
+ return;
228
+ case 'tool_interception':
229
+ assertOneOf(value, ['application_only', 'all'], 'capability.value');
230
+ return;
231
+ case 'message_interception':
232
+ assertOneOf(value, ['application_only'], 'capability.value');
233
+ return;
234
+ case 'representation_access':
235
+ assertOneOf(value, ['opaque', 'token'], 'capability.value');
236
+ return;
237
+ default:
238
+ throw new TypeError('capability.kind is invalid');
239
+ }
240
+ }
241
+ export function createPolicyRecordV1(policy) {
242
+ const validated = validateInferenceControlPolicyV1(policy);
243
+ return deepFreeze({
244
+ schemaVersion: 1,
245
+ policyDigest: digestControlJsonV1('policy', validated),
246
+ policy: validated,
247
+ });
248
+ }
249
+ /**
250
+ * Validates an Objective-scoped policy revision against its immutable local
251
+ * parent. A remote revision may remove authority or tighten a bound, but may
252
+ * not select a different enforcement model, dependency, action, channel or
253
+ * larger resource/continuation budget.
254
+ */
255
+ export function assertPolicyNarrowingV1(parentInput, childInput) {
256
+ const parent = validateInferenceControlPolicyV1(parentInput);
257
+ const child = validateInferenceControlPolicyV1(childInput);
258
+ const parentDigest = createPolicyRecordV1(parent).policyDigest;
259
+ if (child.parentPolicyDigest !== parentDigest ||
260
+ child.policyId !== parent.policyId ||
261
+ child.policyVersion <= parent.policyVersion ||
262
+ child.mode !== parent.mode ||
263
+ riskRank(child.outputRisk) < riskRank(parent.outputRisk) ||
264
+ child.exhaustedDisposition !== parent.exhaustedDisposition ||
265
+ child.diagnosticsPolicyId !== parent.diagnosticsPolicyId ||
266
+ child.redactionPolicyId !== parent.redactionPolicyId ||
267
+ (parent.coordinatedActionsRequired && !child.coordinatedActionsRequired) ||
268
+ (parent.minimumCapabilityAssurance === 'verified' &&
269
+ child.minimumCapabilityAssurance !== 'verified'))
270
+ throw new TypeError('policy_narrowing_invalid');
271
+ if (!sameStrings(parent.checkpoints, child.checkpoints))
272
+ throw new TypeError('policy_narrowing_invalid');
273
+ for (const required of parent.requiredCapabilities)
274
+ if (!child.requiredCapabilities.some((candidate) => capabilityRequirementCovers(candidate, required)))
275
+ throw new TypeError('policy_narrowing_invalid');
276
+ if (!isCanonicalSubset(child.allowedCapabilityBindings, parent.allowedCapabilityBindings) ||
277
+ !isStringSubset(child.allowedContextZones, parent.allowedContextZones) ||
278
+ !isCanonicalSubset(child.allowedTransformerBindings, parent.allowedTransformerBindings) ||
279
+ !isStringSubset(child.allowedMessageChannels, parent.allowedMessageChannels))
280
+ throw new TypeError('policy_narrowing_invalid');
281
+ for (const action of child.allowedActions) {
282
+ const ceiling = parent.allowedActions.find((candidate) => candidate.namespace === action.namespace &&
283
+ candidate.toolId === action.toolId &&
284
+ candidate.operation === action.operation &&
285
+ candidate.actionBindingId === action.actionBindingId);
286
+ if (!ceiling ||
287
+ action.minimumActionBindingVersion < ceiling.minimumActionBindingVersion)
288
+ throw new TypeError('policy_narrowing_invalid');
289
+ }
290
+ for (const binding of child.assessmentBindings) {
291
+ const ceiling = parent.assessmentBindings.find((candidate) => candidate.checkpoint === binding.checkpoint);
292
+ if (!ceiling ||
293
+ binding.assessorId !== ceiling.assessorId ||
294
+ binding.assessorVersion !== ceiling.assessorVersion ||
295
+ binding.assessorBindingDigest !== ceiling.assessorBindingDigest ||
296
+ binding.maximumResponseBytes > ceiling.maximumResponseBytes ||
297
+ binding.maximumEvidenceReferences > ceiling.maximumEvidenceReferences ||
298
+ binding.timeoutMs > ceiling.timeoutMs)
299
+ throw new TypeError('policy_narrowing_invalid');
300
+ }
301
+ for (const key of ['revisions', 'retries', 'challenges'])
302
+ if (child.budgets[key] > parent.budgets[key])
303
+ throw new TypeError('policy_narrowing_invalid');
304
+ for (const key of Object.keys(INFERENCE_CONTROL_LIMITS_V1))
305
+ if (child.limits[key] > parent.limits[key])
306
+ throw new TypeError('policy_narrowing_invalid');
307
+ for (const key of [
308
+ 'maximumRunDurationMs',
309
+ 'maximumAssessmentTtlMs',
310
+ 'maximumGrantTtlMs',
311
+ 'maximumMessagePermitTtlMs',
312
+ ])
313
+ if (child[key] > parent[key])
314
+ throw new TypeError('policy_narrowing_invalid');
315
+ return child;
316
+ }
317
+ function riskRank(value) {
318
+ return value === 'low' ? 0 : value === 'moderate' ? 1 : 2;
319
+ }
320
+ function sameStrings(left, right) {
321
+ return (left.length === right.length && left.every((value) => right.includes(value)));
322
+ }
323
+ function isStringSubset(subset, ceiling) {
324
+ return subset.every((value) => ceiling.includes(value));
325
+ }
326
+ function isCanonicalSubset(subset, ceiling) {
327
+ const allowed = new Set(ceiling.map((value) => canonicalizeControlJsonV1(value)));
328
+ return subset.every((value) => allowed.has(canonicalizeControlJsonV1(value)));
329
+ }
330
+ function capabilityRequirementCovers(candidate, ceiling) {
331
+ if (candidate.kind !== ceiling.kind)
332
+ return false;
333
+ if (candidate.kind === 'tool_interception')
334
+ return (candidate.value === ceiling.value ||
335
+ (candidate.value === 'all' && ceiling.value === 'application_only'));
336
+ return candidate.value === ceiling.value;
337
+ }
338
+ //# sourceMappingURL=policy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"policy.js","sourceRoot":"","sources":["../src/policy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAOhF,OAAO,EACL,2BAA2B,EAC3B,YAAY,EACZ,kBAAkB,EAClB,eAAe,EACf,gBAAgB,EAChB,WAAW,EACX,iBAAiB,EAEjB,UAAU,EACV,YAAY,GACb,MAAM,iBAAiB,CAAC;AAEzB,MAAM,UAAU,gCAAgC,CAC9C,KAAc;IAEd,MAAM,IAAI,GAAG;QACX,eAAe;QACf,UAAU;QACV,eAAe;QACf,oBAAoB;QACpB,MAAM;QACN,YAAY;QACZ,aAAa;QACb,sBAAsB;QACtB,4BAA4B;QAC5B,2BAA2B;QAC3B,qBAAqB;QACrB,4BAA4B;QAC5B,gBAAgB;QAChB,wBAAwB;QACxB,oBAAoB;QACpB,SAAS;QACT,QAAQ;QACR,sBAAsB;QACtB,wBAAwB;QACxB,mBAAmB;QACnB,2BAA2B;QAC3B,sBAAsB;QACtB,4BAA4B;QAC5B,qBAAqB;QACrB,mBAAmB;KACpB,CAAC;IACF,eAAe,CAAC,KAAK,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;IACvC,MAAM,CAAC,GAAG,KAAgC,CAAC;IAC3C,IAAI,CAAC,CAAC,aAAa,KAAK,CAAC;QAAE,MAAM,IAAI,SAAS,CAAC,2BAA2B,CAAC,CAAC;IAC5E,KAAK,MAAM,GAAG,IAAI;QAChB,UAAU;QACV,qBAAqB;QACrB,mBAAmB;KACX;QACR,gBAAgB,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;IAChC,iBAAiB,CAAC,CAAC,CAAC,aAAa,EAAE,eAAe,EAAE,CAAC,CAAC,CAAC;IACvD,IAAI,CAAC,CAAC,kBAAkB,KAAK,IAAI;QAC/B,YAAY,CAAC,CAAC,CAAC,kBAAkB,EAAE,oBAAoB,CAAC,CAAC;IAC3D,WAAW,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,SAAS,EAAE,UAAU,EAAE,aAAa,CAAC,EAAE,MAAM,CAAC,CAAC;IACpE,WAAW,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,CAAC,EAAE,YAAY,CAAC,CAAC;IACrE,WAAW,CACT,CAAC,CAAC,0BAA0B,EAC5B,CAAC,UAAU,EAAE,UAAU,CAAC,EACxB,4BAA4B,CAC7B,CAAC;IACF,WAAW,CACT,CAAC,CAAC,oBAAoB,EACtB,CAAC,SAAS,EAAE,UAAU,EAAE,MAAM,CAAC,EAC/B,sBAAsB,CACvB,CAAC;IACF,KAAK,MAAM,GAAG,IAAI;QAChB,aAAa;QACb,sBAAsB;QACtB,2BAA2B;QAC3B,qBAAqB;QACrB,4BAA4B;QAC5B,gBAAgB;QAChB,wBAAwB;QACxB,oBAAoB;KACZ;QACR,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YAAE,MAAM,IAAI,SAAS,CAAC,GAAG,GAAG,mBAAmB,CAAC,CAAC;IAC7E,MAAM,WAAW,GAAG,CAAC,CAAC,WAAwB,CAAC;IAC/C,KAAK,MAAM,UAAU,IAAI,WAAW;QAClC,WAAW,CACT,UAAU,EACV,CAAC,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,EAAE,aAAa,CAAC,EAC5D,YAAY,CACb,CAAC;IACJ,YAAY,CAAC,WAAuB,EAAE,aAAa,CAAC,CAAC;IACrD,MAAM,YAAY,GAAG,CAAC,CAAC,oBAAiC,CAAC;IACzD,MAAM,cAAc,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;QACtD,eAAe,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,wBAAwB,KAAK,GAAG,CAAC,CAAC;QAC3E,MAAM,UAAU,GAAG,IAA+B,CAAC;QACnD,WAAW,CACT,UAAU,CAAC,IAAI,EACf;YACE,kBAAkB;YAClB,yBAAyB;YACzB,+BAA+B;YAC/B,sBAAsB;YACtB,mBAAmB;YACnB,sBAAsB;YACtB,uBAAuB;SACxB,EACD,iBAAiB,CAClB,CAAC;QACF,oBAAoB,CAAC,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC;QACxD,OAAO,GAAG,UAAU,CAAC,IAAI,IAAI,UAAU,CAAC,KAAK,EAAE,CAAC;IAClD,CAAC,CAAC,CAAC;IACH,YAAY,CAAC,cAAc,EAAE,sBAAsB,CAAC,CAAC;IACrD,KAAK,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,IACtB,CAAC,CAAC,yBACH,CAAC,OAAO,EAAE,EAAE,CAAC;QACZ,eAAe,CACb,IAAI,EACJ;YACE,eAAe;YACf,cAAc;YACd,mBAAmB;YACnB,WAAW;YACX,gBAAgB;YAChB,kBAAkB;YAClB,mBAAmB;SACpB,EACD,6BAA6B,KAAK,GAAG,CACtC,CAAC;QACF,MAAM,OAAO,GAAG,IAA+B,CAAC;QAChD,IAAI,OAAO,CAAC,aAAa,KAAK,CAAC;YAC7B,MAAM,IAAI,SAAS,CAAC,gCAAgC,CAAC,CAAC;QACxD,KAAK,MAAM,GAAG,IAAI,CAAC,cAAc,EAAE,WAAW,CAAU;YACtD,gBAAgB,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;QACtC,KAAK,MAAM,GAAG,IAAI,CAAC,mBAAmB,EAAE,gBAAgB,CAAU;YAChE,iBAAiB,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;QAC1C,YAAY,CAAC,OAAO,CAAC,gBAAgB,EAAE,kBAAkB,CAAC,CAAC;QAC3D,WAAW,CACT,OAAO,CAAC,iBAAiB,EACzB,CAAC,kBAAkB,EAAE,sBAAsB,EAAE,UAAU,CAAC,EACxD,mBAAmB,CACpB,CAAC;IACJ,CAAC;IACD,KAAK,MAAM,IAAI,IAAI,CAAC,CAAC,mBAAgC;QACnD,WAAW,CACT,IAAI,EACJ;YACE,QAAQ;YACR,WAAW;YACX,eAAe;YACf,gBAAgB;YAChB,gBAAgB;YAChB,gBAAgB;YAChB,qBAAqB;YACrB,oBAAoB;YACpB,oBAAoB;SACrB,EACD,cAAc,CACf,CAAC;IACJ,YAAY,CAAC,CAAC,CAAC,mBAA+B,EAAE,qBAAqB,CAAC,CAAC;IACvE,KAAK,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,IACtB,CAAC,CAAC,0BACH,CAAC,OAAO,EAAE,EAAE,CAAC;QACZ,eAAe,CACb,IAAI,EACJ,CAAC,IAAI,EAAE,SAAS,CAAC,EACjB,8BAA8B,KAAK,GAAG,CACvC,CAAC;QACF,MAAM,OAAO,GAAG,IAA+B,CAAC;QAChD,gBAAgB,CAAC,OAAO,CAAC,EAAE,EAAE,gBAAgB,CAAC,CAAC;QAC/C,iBAAiB,CAAC,OAAO,CAAC,OAAO,EAAE,qBAAqB,EAAE,CAAC,CAAC,CAAC;IAC/D,CAAC;IACD,KAAK,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,IAAK,CAAC,CAAC,cAA4B,CAAC,OAAO,EAAE,EAAE,CAAC;QACtE,eAAe,CACb,IAAI,EACJ;YACE,eAAe;YACf,WAAW;YACX,QAAQ;YACR,WAAW;YACX,iBAAiB;YACjB,6BAA6B;SAC9B,EACD,kBAAkB,KAAK,GAAG,CAC3B,CAAC;QACF,MAAM,MAAM,GAAG,IAA+B,CAAC;QAC/C,IAAI,MAAM,CAAC,aAAa,KAAK,CAAC;YAC5B,MAAM,IAAI,SAAS,CAAC,4BAA4B,CAAC,CAAC;QACpD,KAAK,MAAM,GAAG,IAAI;YAChB,WAAW;YACX,QAAQ;YACR,WAAW;YACX,iBAAiB;SACT,EAAE,CAAC;YACX,GAAG,KAAK,WAAW,IAAI,GAAG,KAAK,WAAW;gBACxC,CAAC,CAAC,kBAAkB,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC;gBACtC,CAAC,CAAC,gBAAgB,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;QACzC,CAAC;QACD,iBAAiB,CACf,MAAM,CAAC,2BAA2B,EAClC,6BAA6B,EAC7B,CAAC,CACF,CAAC;IACJ,CAAC;IACD,KAAK,MAAM,OAAO,IAAI,CAAC,CAAC,sBAAmC;QACzD,kBAAkB,CAAC,OAAO,EAAE,iBAAiB,CAAC,CAAC;IACjD,YAAY,CAAC,CAAC,CAAC,sBAAkC,EAAE,wBAAwB,CAAC,CAAC;IAC7E,MAAM,mBAAmB,GAAa,EAAE,CAAC;IACzC,KAAK,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,IAAK,CAAC,CAAC,kBAAgC,CAAC,OAAO,EAAE,EAAE,CAAC;QAC1E,eAAe,CACb,IAAI,EACJ;YACE,eAAe;YACf,YAAY;YACZ,YAAY;YACZ,iBAAiB;YACjB,uBAAuB;YACvB,sBAAsB;YACtB,2BAA2B;YAC3B,WAAW;SACZ,EACD,sBAAsB,KAAK,GAAG,CAC/B,CAAC;QACF,MAAM,OAAO,GAAG,IAA+B,CAAC;QAChD,IAAI,OAAO,CAAC,aAAa,KAAK,CAAC;YAC7B,MAAM,IAAI,SAAS,CAAC,8BAA8B,CAAC,CAAC;QACtD,WAAW,CACT,OAAO,CAAC,UAAU,EAClB,CAAC,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,EAAE,aAAa,CAAC,EAC5D,uBAAuB,CACxB,CAAC;QACF,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAC7C,gBAAgB,CAAC,OAAO,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;QACnD,iBAAiB,CAAC,OAAO,CAAC,eAAe,EAAE,iBAAiB,EAAE,CAAC,CAAC,CAAC;QACjE,YAAY,CAAC,OAAO,CAAC,qBAAqB,EAAE,uBAAuB,CAAC,CAAC;QACrE,iBAAiB,CAAC,OAAO,CAAC,oBAAoB,EAAE,sBAAsB,EAAE,CAAC,CAAC,CAAC;QAC3E,iBAAiB,CACf,OAAO,CAAC,yBAAyB,EACjC,2BAA2B,EAC3B,CAAC,CACF,CAAC;QACF,iBAAiB,CAAC,OAAO,CAAC,SAAS,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC;IACvD,CAAC;IACD,IACE,IAAI,GAAG,CAAC,mBAAmB,CAAC,CAAC,IAAI,KAAK,mBAAmB,CAAC,MAAM;QAChE,mBAAmB,CAAC,MAAM,KAAK,WAAW,CAAC,MAAM;QACjD,WAAW,CAAC,IAAI,CACd,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,mBAAmB,CAAC,QAAQ,CAAC,UAAoB,CAAC,CACpE;QAED,MAAM,IAAI,SAAS,CACjB,uDAAuD,CACxD,CAAC;IACJ,eAAe,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,WAAW,EAAE,SAAS,EAAE,YAAY,CAAC,EAAE,SAAS,CAAC,CAAC;IAC9E,KAAK,MAAM,GAAG,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE,YAAY,CAAU;QAC/D,iBAAiB,CACd,CAAC,CAAC,OAAmC,CAAC,GAAG,CAAC,EAC3C,WAAW,GAAG,EAAE,CACjB,CAAC;IACJ,eAAe,CAAC,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,2BAA2B,CAAC,EAAE,QAAQ,CAAC,CAAC;IAC9E,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,2BAA2B,CAExD,EAAE,CAAC;QACF,MAAM,KAAK,GAAI,CAAC,CAAC,MAA6C,CAAC,GAAG,CAAC,CAAC;QACpE,iBAAiB,CAAC,KAAK,EAAE,UAAU,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;QAC7C,IAAK,KAAgB,GAAG,2BAA2B,CAAC,GAAG,CAAC;YACtD,MAAM,IAAI,SAAS,CAAC,UAAU,GAAG,2BAA2B,CAAC,CAAC;IAClE,CAAC;IACD,KAAK,MAAM,GAAG,IAAI;QAChB,sBAAsB;QACtB,wBAAwB;QACxB,mBAAmB;QACnB,2BAA2B;KACnB;QACR,iBAAiB,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;IACpC,IAAI,OAAO,CAAC,CAAC,0BAA0B,KAAK,SAAS;QACnD,MAAM,IAAI,SAAS,CAAC,4CAA4C,CAAC,CAAC;IACpE,MAAM,MAAM,GAAG,CAAC,CAAC,MAAuD,CAAC;IACzE,IACG,CAAC,CAAC,oBAA+B,GAAG,MAAM,CAAC,gBAAgB;QAC3D,CAAC,CAAC,sBAAiC,GAAG,MAAM,CAAC,kBAAkB;QAC/D,CAAC,CAAC,iBAA4B,GAAG,MAAM,CAAC,aAAa;QACrD,CAAC,CAAC,yBAAoC,GAAG,MAAM,CAAC,qBAAqB;QAEtE,MAAM,IAAI,SAAS,CAAC,+BAA+B,CAAC,CAAC;IACvD,IACG,CAAC,CAAC,cAA4B,CAAC,MAAM,GAAG,CAAC;QAC1C,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,UAAU,CAAC;YAChC,CAAC,mBAAmB,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;QAE5C,MAAM,IAAI,SAAS,CAAC,qCAAqC,CAAC,CAAC;IAC7D,IACG,CAAC,CAAC,sBAAoC,CAAC,MAAM,GAAG,CAAC;QAClD,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,aAAa,CAAC;YACnC,CAAC,mBAAmB,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;QAE/C,MAAM,IAAI,SAAS,CAAC,yCAAyC,CAAC,CAAC;IACjE,IACE,CAAC,CAAC,UAAU,KAAK,MAAM;QACvB,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU;YACpB,CAAC,CAAC,0BAA0B,KAAK,UAAU;YAC3C,CAAC,WAAW,CAAC,QAAQ,CAAC,SAAS,CAAC;YAChC,CAAC,WAAW,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;QAEpC,MAAM,IAAI,SAAS,CAAC,2BAA2B,CAAC,CAAC;IACnD,OAAO,UAAU,CAAC,EAAE,GAAG,CAAC,EAAyC,CAAC,CAAC;AACrE,CAAC;AAED,SAAS,oBAAoB,CAAC,IAAa,EAAE,KAAc;IACzD,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,kBAAkB,CAAC;QACxB,KAAK,yBAAyB;YAC5B,WAAW,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,EAAE,kBAAkB,CAAC,CAAC;YACjD,OAAO;QACT,KAAK,+BAA+B;YAClC,WAAW,CAAC,KAAK,EAAE,CAAC,UAAU,CAAC,EAAE,kBAAkB,CAAC,CAAC;YACrD,OAAO;QACT,KAAK,sBAAsB;YACzB,WAAW,CAAC,KAAK,EAAE,CAAC,OAAO,CAAC,EAAE,kBAAkB,CAAC,CAAC;YAClD,OAAO;QACT,KAAK,mBAAmB;YACtB,WAAW,CAAC,KAAK,EAAE,CAAC,kBAAkB,EAAE,KAAK,CAAC,EAAE,kBAAkB,CAAC,CAAC;YACpE,OAAO;QACT,KAAK,sBAAsB;YACzB,WAAW,CAAC,KAAK,EAAE,CAAC,kBAAkB,CAAC,EAAE,kBAAkB,CAAC,CAAC;YAC7D,OAAO;QACT,KAAK,uBAAuB;YAC1B,WAAW,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC,EAAE,kBAAkB,CAAC,CAAC;YAC5D,OAAO;QACT;YACE,MAAM,IAAI,SAAS,CAAC,4BAA4B,CAAC,CAAC;IACtD,CAAC;AACH,CAAC;AACD,MAAM,UAAU,oBAAoB,CAClC,MAAgC;IAEhC,MAAM,SAAS,GAAG,gCAAgC,CAAC,MAAM,CAAC,CAAC;IAC3D,OAAO,UAAU,CAAC;QAChB,aAAa,EAAE,CAAC;QAChB,YAAY,EAAE,mBAAmB,CAC/B,QAAQ,EACR,SAA2D,CAC5D;QACD,MAAM,EAAE,SAAS;KAClB,CAAC,CAAC;AACL,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,uBAAuB,CACrC,WAAqC,EACrC,UAAoC;IAEpC,MAAM,MAAM,GAAG,gCAAgC,CAAC,WAAW,CAAC,CAAC;IAC7D,MAAM,KAAK,GAAG,gCAAgC,CAAC,UAAU,CAAC,CAAC;IAC3D,MAAM,YAAY,GAAG,oBAAoB,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC;IAC/D,IACE,KAAK,CAAC,kBAAkB,KAAK,YAAY;QACzC,KAAK,CAAC,QAAQ,KAAK,MAAM,CAAC,QAAQ;QAClC,KAAK,CAAC,aAAa,IAAI,MAAM,CAAC,aAAa;QAC3C,KAAK,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI;QAC1B,QAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC;QACxD,KAAK,CAAC,oBAAoB,KAAK,MAAM,CAAC,oBAAoB;QAC1D,KAAK,CAAC,mBAAmB,KAAK,MAAM,CAAC,mBAAmB;QACxD,KAAK,CAAC,iBAAiB,KAAK,MAAM,CAAC,iBAAiB;QACpD,CAAC,MAAM,CAAC,0BAA0B,IAAI,CAAC,KAAK,CAAC,0BAA0B,CAAC;QACxE,CAAC,MAAM,CAAC,0BAA0B,KAAK,UAAU;YAC/C,KAAK,CAAC,0BAA0B,KAAK,UAAU,CAAC;QAElD,MAAM,IAAI,SAAS,CAAC,0BAA0B,CAAC,CAAC;IAElD,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,WAAW,EAAE,KAAK,CAAC,WAAW,CAAC;QACrD,MAAM,IAAI,SAAS,CAAC,0BAA0B,CAAC,CAAC;IAClD,KAAK,MAAM,QAAQ,IAAI,MAAM,CAAC,oBAAoB;QAChD,IACE,CAAC,KAAK,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAC7C,2BAA2B,CAAC,SAAS,EAAE,QAAQ,CAAC,CACjD;YAED,MAAM,IAAI,SAAS,CAAC,0BAA0B,CAAC,CAAC;IACpD,IACE,CAAC,iBAAiB,CAChB,KAAK,CAAC,yBAAyB,EAC/B,MAAM,CAAC,yBAAyB,CACjC;QACD,CAAC,cAAc,CAAC,KAAK,CAAC,mBAAmB,EAAE,MAAM,CAAC,mBAAmB,CAAC;QACtE,CAAC,iBAAiB,CAChB,KAAK,CAAC,0BAA0B,EAChC,MAAM,CAAC,0BAA0B,CAClC;QACD,CAAC,cAAc,CAAC,KAAK,CAAC,sBAAsB,EAAE,MAAM,CAAC,sBAAsB,CAAC;QAE5E,MAAM,IAAI,SAAS,CAAC,0BAA0B,CAAC,CAAC;IAElD,KAAK,MAAM,MAAM,IAAI,KAAK,CAAC,cAAc,EAAE,CAAC;QAC1C,MAAM,OAAO,GAAG,MAAM,CAAC,cAAc,CAAC,IAAI,CACxC,CAAC,SAAS,EAAE,EAAE,CACZ,SAAS,CAAC,SAAS,KAAK,MAAM,CAAC,SAAS;YACxC,SAAS,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM;YAClC,SAAS,CAAC,SAAS,KAAK,MAAM,CAAC,SAAS;YACxC,SAAS,CAAC,eAAe,KAAK,MAAM,CAAC,eAAe,CACvD,CAAC;QACF,IACE,CAAC,OAAO;YACR,MAAM,CAAC,2BAA2B,GAAG,OAAO,CAAC,2BAA2B;YAExE,MAAM,IAAI,SAAS,CAAC,0BAA0B,CAAC,CAAC;IACpD,CAAC;IAED,KAAK,MAAM,OAAO,IAAI,KAAK,CAAC,kBAAkB,EAAE,CAAC;QAC/C,MAAM,OAAO,GAAG,MAAM,CAAC,kBAAkB,CAAC,IAAI,CAC5C,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,UAAU,KAAK,OAAO,CAAC,UAAU,CAC3D,CAAC;QACF,IACE,CAAC,OAAO;YACR,OAAO,CAAC,UAAU,KAAK,OAAO,CAAC,UAAU;YACzC,OAAO,CAAC,eAAe,KAAK,OAAO,CAAC,eAAe;YACnD,OAAO,CAAC,qBAAqB,KAAK,OAAO,CAAC,qBAAqB;YAC/D,OAAO,CAAC,oBAAoB,GAAG,OAAO,CAAC,oBAAoB;YAC3D,OAAO,CAAC,yBAAyB,GAAG,OAAO,CAAC,yBAAyB;YACrE,OAAO,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS;YAErC,MAAM,IAAI,SAAS,CAAC,0BAA0B,CAAC,CAAC;IACpD,CAAC;IAED,KAAK,MAAM,GAAG,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE,YAAY,CAAU;QAC/D,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC;YAC1C,MAAM,IAAI,SAAS,CAAC,0BAA0B,CAAC,CAAC;IACpD,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,2BAA2B,CAExD;QACC,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC;YACxC,MAAM,IAAI,SAAS,CAAC,0BAA0B,CAAC,CAAC;IACpD,KAAK,MAAM,GAAG,IAAI;QAChB,sBAAsB;QACtB,wBAAwB;QACxB,mBAAmB;QACnB,2BAA2B;KACnB;QACR,IAAI,KAAK,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC;YAC1B,MAAM,IAAI,SAAS,CAAC,0BAA0B,CAAC,CAAC;IACpD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,QAAQ,CAAC,KAA6C;IAC7D,OAAO,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5D,CAAC;AAED,SAAS,WAAW,CAClB,IAAuB,EACvB,KAAwB;IAExB,OAAO,CACL,IAAI,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAC7E,CAAC;AACJ,CAAC;AAED,SAAS,cAAc,CACrB,MAAyB,EACzB,OAA0B;IAE1B,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1D,CAAC;AAED,SAAS,iBAAiB,CACxB,MAAoB,EACpB,OAAqB;IAErB,MAAM,OAAO,GAAG,IAAI,GAAG,CACrB,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,yBAAyB,CAAC,KAAkB,CAAC,CAAC,CACtE,CAAC;IACF,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAC5B,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,KAAkB,CAAC,CAAC,CAC3D,CAAC;AACJ,CAAC;AAED,SAAS,2BAA2B,CAClC,SAAsC,EACtC,OAAoC;IAEpC,IAAI,SAAS,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI;QAAE,OAAO,KAAK,CAAC;IAClD,IAAI,SAAS,CAAC,IAAI,KAAK,mBAAmB;QACxC,OAAO,CACL,SAAS,CAAC,KAAK,KAAK,OAAO,CAAC,KAAK;YACjC,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,IAAI,OAAO,CAAC,KAAK,KAAK,kBAAkB,CAAC,CACpE,CAAC;IACJ,OAAO,SAAS,CAAC,KAAK,KAAK,OAAO,CAAC,KAAK,CAAC;AAC3C,CAAC"}
@@ -0,0 +1,193 @@
1
+ import type { JsonValue } from '@agentplat/core';
2
+ import { CapabilityRegistryV1 } from './capabilities.js';
3
+ import type { CapabilityNegotiationResultV1 } from './capabilities.js';
4
+ import type { ActionGrantStateV1, AssessmentRequestV1, ContextEntryV1, ControlRunRecordV1, ControlStreamChunkV1, DiagnosticV1, InferenceAssessmentV1, InferenceControlPolicyV1, InferenceControlReasonCodeV1, InferenceControlStateV1, OutboundMessageAttemptStateV1 } from './types.js';
5
+ interface InputHeadV1 {
6
+ readonly schemaVersion: 1;
7
+ readonly inputId: string;
8
+ readonly expectedStateGeneration: number;
9
+ readonly logicalTimeMs: number;
10
+ }
11
+ export type InferenceControlInputV1 = InputHeadV1 & ({
12
+ readonly type: 'policy_registered';
13
+ readonly policy: InferenceControlPolicyV1;
14
+ readonly policyDigest: string;
15
+ } | {
16
+ readonly type: 'run_created';
17
+ readonly run: ControlRunRecordV1;
18
+ } | {
19
+ readonly type: 'context_admitted';
20
+ readonly entry: ContextEntryV1;
21
+ } | {
22
+ readonly type: 'context_promoted';
23
+ readonly sourceContextEntryId: string;
24
+ readonly entry: ContextEntryV1;
25
+ readonly transformerBindingDigest: string;
26
+ } | {
27
+ readonly type: 'capability_negotiated';
28
+ readonly runId: string;
29
+ readonly capabilityHandleId: string;
30
+ readonly descriptorDigest: string;
31
+ readonly result: CapabilityNegotiationResultV1;
32
+ } | {
33
+ readonly type: 'assessment_requested';
34
+ readonly request: AssessmentRequestV1;
35
+ } | {
36
+ readonly type: 'assessment_received';
37
+ readonly assessment: InferenceAssessmentV1;
38
+ } | {
39
+ readonly type: 'provider_started';
40
+ readonly runId: string;
41
+ readonly generation: number;
42
+ readonly providerRequestDigest: string;
43
+ readonly streamId: string;
44
+ } | {
45
+ readonly type: 'provider_chunk_received';
46
+ readonly runId: string;
47
+ readonly chunk: ControlStreamChunkV1;
48
+ } | {
49
+ readonly type: 'provider_completed';
50
+ readonly runId: string;
51
+ readonly generation: number;
52
+ readonly streamId: string;
53
+ readonly completionContent: string;
54
+ readonly completionDigest: string;
55
+ } | {
56
+ readonly type: 'continuation_selected';
57
+ readonly runId: string;
58
+ readonly assessmentId: string;
59
+ readonly kind: 'revise' | 'retry' | 'challenge';
60
+ } | {
61
+ readonly type: 'output_release_ack';
62
+ readonly runId: string;
63
+ readonly streamId: string;
64
+ readonly generation: number;
65
+ readonly throughSequence: number;
66
+ readonly throughByteExclusive: number;
67
+ readonly windowDigest: string;
68
+ } | {
69
+ readonly type: 'grant_issued';
70
+ readonly grant: ActionGrantStateV1;
71
+ } | {
72
+ readonly type: 'grant_reserved';
73
+ readonly grantId: string;
74
+ readonly reservation: JsonValue;
75
+ } | {
76
+ readonly type: 'action_dispatch_outcome';
77
+ readonly grantId: string;
78
+ readonly reservationId: string;
79
+ readonly dispatchAttemptId: string;
80
+ readonly outcome: 'dispatched' | 'failed' | 'indeterminate';
81
+ } | {
82
+ readonly type: 'message_prepared';
83
+ readonly message: JsonValue;
84
+ readonly attempt: OutboundMessageAttemptStateV1;
85
+ } | {
86
+ readonly type: 'message_reserved';
87
+ readonly messageAttemptId: string;
88
+ readonly reservation: JsonValue;
89
+ } | {
90
+ readonly type: 'message_dispatch_outcome';
91
+ readonly messageAttemptId: string;
92
+ readonly reservationId: string;
93
+ readonly messageDispatchAttemptId: string;
94
+ readonly outcome: 'sent' | 'failed' | 'indeterminate';
95
+ } | {
96
+ readonly type: 'deadline_fired';
97
+ readonly timerKind: 'run' | 'assessment' | 'grant' | 'message';
98
+ readonly timerId: string;
99
+ readonly timerGeneration: number;
100
+ } | {
101
+ readonly type: 'run_cancelled' | 'run_failed';
102
+ readonly runId: string;
103
+ readonly generation: number;
104
+ readonly reasonCode: InferenceControlReasonCodeV1;
105
+ });
106
+ export type InferenceControlEffectV1 = Readonly<{
107
+ schemaVersion: 1;
108
+ effectId: string;
109
+ runId: string;
110
+ generation: number;
111
+ type: 'request_assessment';
112
+ request: AssessmentRequestV1;
113
+ }> | Readonly<{
114
+ schemaVersion: 1;
115
+ effectId: string;
116
+ runId: string;
117
+ generation: number;
118
+ type: 'invoke_provider';
119
+ providerRequestDigest: string;
120
+ capabilityHandleId: string;
121
+ }> | Readonly<{
122
+ schemaVersion: 1;
123
+ effectId: string;
124
+ runId: string;
125
+ generation: number;
126
+ type: 'cancel_provider';
127
+ streamId: string;
128
+ reasonCode: InferenceControlReasonCodeV1;
129
+ }> | Readonly<{
130
+ schemaVersion: 1;
131
+ effectId: string;
132
+ runId: string;
133
+ generation: number;
134
+ type: 'release_output';
135
+ streamId: string;
136
+ fromSequence: number;
137
+ throughSequence: number;
138
+ fromByte: number;
139
+ throughByteExclusive: number;
140
+ windowDigest: string;
141
+ }> | Readonly<{
142
+ schemaVersion: 1;
143
+ effectId: string;
144
+ runId: string;
145
+ generation: number;
146
+ type: 'invoke_continuation';
147
+ kind: 'revise' | 'retry' | 'challenge';
148
+ sourceAssessmentId: string;
149
+ revisedContextEntryId: string | null;
150
+ }> | Readonly<{
151
+ schemaVersion: 1;
152
+ effectId: string;
153
+ runId: string;
154
+ generation: number;
155
+ type: 'persist_grant';
156
+ grantId: string;
157
+ stateGeneration: number;
158
+ }> | Readonly<{
159
+ schemaVersion: 1;
160
+ effectId: string;
161
+ runId: string;
162
+ generation: number;
163
+ type: 'dispatch_action' | 'dispatch_message';
164
+ recordId: string;
165
+ permit: JsonValue;
166
+ }> | Readonly<{
167
+ schemaVersion: 1;
168
+ effectId: string;
169
+ runId: string;
170
+ generation: number;
171
+ type: 'emit_receipt';
172
+ outcome: 'accepted' | 'withheld' | 'denied' | 'unavailable';
173
+ }> | Readonly<{
174
+ schemaVersion: 1;
175
+ effectId: string;
176
+ runId: string;
177
+ generation: number;
178
+ type: 'emit_diagnostic';
179
+ diagnostic: DiagnosticV1;
180
+ }>;
181
+ export interface InferenceControlReductionV1 {
182
+ readonly state: InferenceControlStateV1;
183
+ readonly accepted: boolean;
184
+ readonly reasonCode?: InferenceControlReasonCodeV1;
185
+ readonly effects: readonly InferenceControlEffectV1[];
186
+ }
187
+ /** Runtime dependencies deliberately remain outside the serialised state. */
188
+ export interface InferenceControlReducerDependenciesV1 {
189
+ readonly capabilityRegistry?: CapabilityRegistryV1;
190
+ }
191
+ export declare function reduceInferenceControlStateV1(state: InferenceControlStateV1, input: InferenceControlInputV1, dependencies?: InferenceControlReducerDependenciesV1): InferenceControlReductionV1;
192
+ export {};
193
+ //# sourceMappingURL=reducer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reducer.d.ts","sourceRoot":"","sources":["../src/reducer.ts"],"names":[],"mappings":"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"}