@agentplat/mesh-conformance 0.3.0-beta.1 → 0.3.0-beta.2

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/README.md CHANGED
@@ -5,9 +5,10 @@ adapters. The package performs no work on import, reads no ambient credentials
5
5
  and never creates or destroys resources without a caller factory.
6
6
 
7
7
  The root export owns the closed capability, case and report contracts.
8
- `./protocol`, `./transport`, `./durability` and `./rooms` expose bounded runners.
9
- A passing report describes only the exact artifact, capabilities, fixtures and
10
- cases that were executed; it is not a security certification.
8
+ `./protocol`, `./transport`, `./durability`, `./rooms` and `./control` expose
9
+ bounded runners. A passing report describes only the exact artifact,
10
+ capabilities, fixtures and cases that were executed; it is not a security
11
+ certification.
11
12
 
12
13
  Runners receive an immutable caller seed and abort signal for every isolated
13
14
  factory invocation. Case, suite and cleanup timeouts are separate outcomes.
@@ -16,3 +17,12 @@ durability receipt case also requires reopening the same scope through a
16
17
  distinct repository instance so an in-memory acknowledgment cannot stand in
17
18
  for recovery evidence. Cleanup remains caller-owned and is attempted after
18
19
  success, failure and abort.
20
+
21
+ The control runner exercises delegation lookup, work-scope narrowing,
22
+ single-use effect permits, retained indeterminate budgets, repository CAS,
23
+ grant idempotency, redacted hash-linked evidence and inert Room proposals by
24
+ calling the supplied ports directly. Durable implementations may additionally
25
+ declare `control.persistence`; that case reopens distinct repository instances
26
+ and verifies exact authority, execution, grant and evidence state after a
27
+ restart. `inspectEvidence` must be an independent redacted view of persisted
28
+ records, not a copy of the input fixture.
@@ -0,0 +1,4 @@
1
+ import type { ControlConformanceFixturesV1 } from "./control.js";
2
+ /** Frozen fixtures shared by every adapter implementation under test. */
3
+ export declare function createControlConformanceFixturesV1(): ControlConformanceFixturesV1;
4
+ //# sourceMappingURL=control-fixtures.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"control-fixtures.d.ts","sourceRoot":"","sources":["../src/control-fixtures.ts"],"names":[],"mappings":"AAgCA,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,cAAc,CAAC;AAKjE,yEAAyE;AACzE,wBAAgB,kCAAkC,IAAI,4BAA4B,CA+XjF"}
@@ -0,0 +1,383 @@
1
+ import { acceptDelegationMandateV1, budgetReservationDigestV1, createCollectiveAuthorityStateV1, createCollectiveDecisionRecordV1, createCollectiveExecutionStateV1, createDelegationMandateV1, delegationMandateDigestV1, digestCollectiveJsonV1, governedActionPermitDigestV1, registerWorkContractV1, workContractDigestV1, } from "@agentplat/collective-control";
2
+ import { createDelegationMandateProposalV1 } from "@agentplat/collective-control/rooms";
3
+ import { actionDigest as calculateActionDigest, actionInputDigest, controlDigest, scopeDigest, } from "@agentplat/inference-control/tools";
4
+ const digest = (label) => digestCollectiveJsonV1("state", { label, schemaVersion: 1 });
5
+ /** Frozen fixtures shared by every adapter implementation under test. */
6
+ export function createControlConformanceFixturesV1() {
7
+ const roomProvenance = {
8
+ schemaVersion: 1,
9
+ roomId: "room:conformance",
10
+ approvalId: "approval:conformance",
11
+ targetType: "task",
12
+ targetId: "work:conformance",
13
+ targetVersion: 1,
14
+ };
15
+ const statement = {
16
+ schemaVersion: 1,
17
+ mandateId: "mandate:conformance",
18
+ tenantId: "tenant:conformance",
19
+ policyDomainId: "policy-domain:conformance",
20
+ issuerId: "issuer:conformance",
21
+ revision: 1,
22
+ predecessorDigest: null,
23
+ subjectPeerIds: ["peer:worker"],
24
+ objective: {
25
+ schemaVersion: 1,
26
+ meshId: "mesh:conformance",
27
+ objectiveId: "objective:conformance",
28
+ objectiveDocumentId: "objective-document:conformance",
29
+ minimumObjectiveRevision: 1,
30
+ maximumObjectiveRevision: 1,
31
+ },
32
+ work: {
33
+ schemaVersion: 1,
34
+ workItemIds: ["work:conformance"],
35
+ permittedRoleKeys: ["executor"],
36
+ maximumWorkItemRevision: 1,
37
+ },
38
+ permittedCapabilityKeys: ["documents.write"],
39
+ permittedActions: [
40
+ {
41
+ schemaVersion: 1,
42
+ namespace: "documents",
43
+ toolId: "writer",
44
+ operation: "create",
45
+ },
46
+ ],
47
+ budget: {
48
+ schemaVersion: 1,
49
+ totalBudgetUnits: 100,
50
+ maximumWorkBudgetUnits: 100,
51
+ maximumActionBudgetUnits: 10,
52
+ maximumConcurrentWorkReservations: 1,
53
+ maximumConcurrentActionReservations: 2,
54
+ reservationLifetimeMs: 1_000,
55
+ },
56
+ validFrom: "2026-08-01T00:00:00.000Z",
57
+ validUntil: "2026-08-02T00:00:00.000Z",
58
+ roomProvenance,
59
+ evidence: {
60
+ schemaVersion: 1,
61
+ redactionPolicyId: "redaction:conformance",
62
+ retentionClass: "standard",
63
+ requireDurablePreDispatchEvidence: true,
64
+ },
65
+ };
66
+ const mandateDigest = delegationMandateDigestV1(statement);
67
+ const mandate = createDelegationMandateV1({
68
+ statement,
69
+ proof: {
70
+ schemaVersion: 1,
71
+ kind: "local_attestation",
72
+ issuerId: statement.issuerId,
73
+ attestorId: "attestor:conformance",
74
+ attestationId: "attestation:conformance",
75
+ signedDigest: mandateDigest,
76
+ },
77
+ });
78
+ const accepted = acceptDelegationMandateV1(createCollectiveAuthorityStateV1({
79
+ tenantId: statement.tenantId,
80
+ policyDomainId: statement.policyDomainId,
81
+ }), {
82
+ mandate,
83
+ verification: {
84
+ schemaVersion: 1,
85
+ verifierId: "verifier:conformance",
86
+ verifierVersion: 1,
87
+ issuerId: statement.issuerId,
88
+ signedDigest: mandate.mandateDigest,
89
+ verifiedAt: "2026-08-01T00:00:01.000Z",
90
+ status: "verified",
91
+ },
92
+ acceptedAtLogicalMs: 1,
93
+ });
94
+ if (!accepted.accepted)
95
+ throw new Error("conformance_fixture_authority");
96
+ const workBody = {
97
+ schemaVersion: 1,
98
+ workContractId: "work-contract:conformance",
99
+ generation: 1,
100
+ tenantId: statement.tenantId,
101
+ policyDomainId: statement.policyDomainId,
102
+ mandate: {
103
+ schemaVersion: 1,
104
+ mandateId: statement.mandateId,
105
+ mandateRevision: statement.revision,
106
+ mandateDigest: mandate.mandateDigest,
107
+ },
108
+ objective: {
109
+ schemaVersion: 1,
110
+ meshId: statement.objective.meshId,
111
+ objectiveId: statement.objective.objectiveId,
112
+ objectiveDocumentId: statement.objective.objectiveDocumentId,
113
+ objectiveRevision: 1,
114
+ acceptedMessageId: "message:objective:conformance",
115
+ acceptedPolicyDigest: digest("objective-policy:conformance"),
116
+ },
117
+ assignment: {
118
+ schemaVersion: 1,
119
+ workItemId: "work:conformance",
120
+ workItemRevision: 1,
121
+ ownerPeerId: "peer:owner",
122
+ assignedPeerId: "peer:worker",
123
+ assignedInstanceId: "instance:worker:1",
124
+ assignmentAuthorityId: "assignment:conformance",
125
+ assignmentEpoch: 1,
126
+ authorityGeneration: 1,
127
+ fencingToken: "fence:conformance:1",
128
+ leaseExpiresAtLogicalMs: 1_000,
129
+ workDeadline: "2026-08-01T01:00:00.000Z",
130
+ },
131
+ roleKey: "executor",
132
+ requiredCapabilityKeys: ["documents.write"],
133
+ completionCriteria: ["Create one bounded document"],
134
+ inputReferenceDigest: digest("work-input:conformance"),
135
+ reservedBudgetUnits: 100,
136
+ maximumActionBudgetUnits: 10,
137
+ trustPolicyId: "trust-policy:conformance",
138
+ inferencePolicyId: "inference-policy:conformance",
139
+ createdAtLogicalMs: 10,
140
+ updatedAtLogicalMs: 10,
141
+ status: "active",
142
+ terminalReasonCode: null,
143
+ };
144
+ const validWorkContract = {
145
+ ...workBody,
146
+ workContractDigest: workContractDigestV1(workBody),
147
+ };
148
+ const widenedBody = {
149
+ ...workBody,
150
+ workContractId: "work-contract:conformance:widened",
151
+ requiredCapabilityKeys: ["documents.write", "root.admin"],
152
+ };
153
+ const widenedWorkContract = {
154
+ ...widenedBody,
155
+ workContractDigest: workContractDigestV1(widenedBody),
156
+ };
157
+ const emptyExecutionState = createCollectiveExecutionStateV1({
158
+ tenantId: statement.tenantId,
159
+ policyDomainId: statement.policyDomainId,
160
+ });
161
+ const registered = registerWorkContractV1(emptyExecutionState, {
162
+ mandate,
163
+ workContract: validWorkContract,
164
+ authorizedAt: "2026-08-01T00:01:00.000Z",
165
+ acceptedAtLogicalMs: 10,
166
+ });
167
+ if (!registered.accepted)
168
+ throw new Error("conformance_fixture_work");
169
+ const binding = {
170
+ schemaVersion: 1,
171
+ actionBindingId: "binding:conformance",
172
+ actionBindingVersion: 1,
173
+ namespace: "documents",
174
+ toolId: "writer",
175
+ operation: "create",
176
+ dispatcherId: "dispatcher:conformance",
177
+ dispatcherVersion: 1,
178
+ contextResolverId: "context:conformance",
179
+ contextResolverVersion: 1,
180
+ fencingMode: "downstream_atomic",
181
+ handlerDigest: controlDigest("handler-binding", {
182
+ schemaVersion: 1,
183
+ handler: "conformance",
184
+ }),
185
+ };
186
+ const scope = {
187
+ schemaVersion: 1,
188
+ kind: "coordinated",
189
+ tenantId: statement.tenantId,
190
+ runId: "run:conformance",
191
+ agentId: "agent:worker",
192
+ policyId: "policy:conformance",
193
+ policyVersion: 1,
194
+ meshId: statement.objective.meshId,
195
+ objectiveId: statement.objective.objectiveId,
196
+ objectiveRevision: 1,
197
+ workItemId: "work:conformance",
198
+ workItemRevision: 1,
199
+ peerId: "peer:worker",
200
+ instanceId: "instance:worker:1",
201
+ assignmentAuthorityId: "assignment:conformance",
202
+ assignmentEpoch: 1,
203
+ fencingToken: "fence:conformance:1",
204
+ leaseExpiresAtLogicalMs: 1_000,
205
+ authorityGeneration: 1,
206
+ objectiveTerminal: false,
207
+ workTerminal: false,
208
+ };
209
+ const grant = (grantId, input) => {
210
+ const draft = {
211
+ schemaVersion: 1,
212
+ grantId,
213
+ stateGeneration: 1,
214
+ scope,
215
+ scopeDigest: scopeDigest(scope),
216
+ namespace: binding.namespace,
217
+ toolId: binding.toolId,
218
+ operation: binding.operation,
219
+ actionBindingId: binding.actionBindingId,
220
+ actionBindingVersion: binding.actionBindingVersion,
221
+ handlerDigest: binding.handlerDigest,
222
+ inputDigest: actionInputDigest(input),
223
+ actionDigest: digest("pending-action:conformance"),
224
+ assessmentRequestId: `assessment-request:${grantId}`,
225
+ assessmentId: `assessment:${grantId}`,
226
+ assessmentTargetDigest: digest(`assessment-target:${grantId}`),
227
+ idempotencyKey: "idempotency:conformance",
228
+ issuedAtLogicalMs: 20,
229
+ expiresAtLogicalMs: 1_000,
230
+ singleUse: true,
231
+ status: "issued",
232
+ reservation: null,
233
+ };
234
+ return Object.freeze({
235
+ ...draft,
236
+ actionDigest: calculateActionDigest(draft, binding),
237
+ });
238
+ };
239
+ const actionGrant = grant("grant:conformance", {
240
+ documentId: "document:a",
241
+ });
242
+ const conflictingActionGrant = grant("grant:conformance:substitution", {
243
+ documentId: "document:b",
244
+ });
245
+ const reservationBody = {
246
+ schemaVersion: 1,
247
+ reservationId: "reservation:conformance",
248
+ generation: 1,
249
+ tenantId: statement.tenantId,
250
+ policyDomainId: statement.policyDomainId,
251
+ mandateId: statement.mandateId,
252
+ mandateRevision: statement.revision,
253
+ mandateDigest: mandate.mandateDigest,
254
+ workContractId: validWorkContract.workContractId,
255
+ permitId: "permit:conformance",
256
+ idempotencyKey: actionGrant.idempotencyKey,
257
+ units: 10,
258
+ reservedAtLogicalMs: 20,
259
+ expiresAtLogicalMs: 1_000,
260
+ status: "reserved",
261
+ outcomeId: null,
262
+ };
263
+ const budgetReservation = {
264
+ ...reservationBody,
265
+ reservationDigest: budgetReservationDigestV1(reservationBody),
266
+ };
267
+ const permitBody = {
268
+ schemaVersion: 1,
269
+ permitId: reservationBody.permitId,
270
+ generation: 1,
271
+ gatewayId: "gateway:conformance",
272
+ tenantId: statement.tenantId,
273
+ policyDomainId: statement.policyDomainId,
274
+ mandateId: statement.mandateId,
275
+ mandateRevision: statement.revision,
276
+ mandateDigest: mandate.mandateDigest,
277
+ workContractId: validWorkContract.workContractId,
278
+ workContractDigest: validWorkContract.workContractDigest,
279
+ actionGrantId: actionGrant.grantId,
280
+ actionGrantDigest: collectiveDigest(controlDigest("grant", actionGrant)),
281
+ actionScopeDigest: collectiveDigest(actionGrant.scopeDigest),
282
+ assignmentAuthorityId: scope.assignmentAuthorityId,
283
+ assignedPeerId: scope.peerId,
284
+ assignedInstanceId: scope.instanceId,
285
+ assignmentEpoch: scope.assignmentEpoch,
286
+ authorityGeneration: scope.authorityGeneration,
287
+ fencingToken: scope.fencingToken,
288
+ namespace: binding.namespace,
289
+ toolId: binding.toolId,
290
+ operation: binding.operation,
291
+ actionBindingId: binding.actionBindingId,
292
+ actionBindingVersion: binding.actionBindingVersion,
293
+ handlerDigest: collectiveDigest(binding.handlerDigest),
294
+ inputDigest: collectiveDigest(actionGrant.inputDigest),
295
+ assessmentDigest: digest("assessment:conformance"),
296
+ trustDecisionDigest: digest("trust:conformance"),
297
+ budgetReservationId: budgetReservation.reservationId,
298
+ budgetUnits: budgetReservation.units,
299
+ idempotencyKey: actionGrant.idempotencyKey,
300
+ issuedAtLogicalMs: 20,
301
+ expiresAtLogicalMs: 1_000,
302
+ status: "issued",
303
+ outcomeId: null,
304
+ };
305
+ const actionPermit = {
306
+ ...permitBody,
307
+ permitDigest: governedActionPermitDigestV1(permitBody),
308
+ };
309
+ const evidenceBase = {
310
+ schemaVersion: 1,
311
+ tenantId: statement.tenantId,
312
+ policyDomainId: statement.policyDomainId,
313
+ kind: "effect.dispatch",
314
+ accepted: true,
315
+ reasonCode: "effect_dispatched",
316
+ mandateId: statement.mandateId,
317
+ mandateDigest: mandate.mandateDigest,
318
+ workContractId: validWorkContract.workContractId,
319
+ workContractDigest: validWorkContract.workContractDigest,
320
+ permitId: actionPermit.permitId,
321
+ permitDigest: actionPermit.permitDigest,
322
+ assignmentAuthorityId: scope.assignmentAuthorityId,
323
+ assignmentEpoch: scope.assignmentEpoch,
324
+ fencingToken: scope.fencingToken,
325
+ budgetDeltaKind: "commit",
326
+ budgetDeltaUnits: 10,
327
+ inputDigest: collectiveDigest(actionGrant.inputDigest),
328
+ actionDigest: collectiveDigest(actionGrant.actionDigest),
329
+ assessmentDigest: permitBody.assessmentDigest,
330
+ trustDecisionDigest: permitBody.trustDecisionDigest,
331
+ };
332
+ const firstEvidence = createCollectiveDecisionRecordV1({
333
+ ...evidenceBase,
334
+ recordId: "record:conformance:1",
335
+ logicalTimeMs: 30,
336
+ previousRecordDigest: null,
337
+ });
338
+ const secondEvidence = createCollectiveDecisionRecordV1({
339
+ ...evidenceBase,
340
+ recordId: "record:conformance:2",
341
+ logicalTimeMs: 31,
342
+ previousRecordDigest: firstEvidence.recordDigest,
343
+ });
344
+ const conflictingEvidenceRecord = createCollectiveDecisionRecordV1({
345
+ ...evidenceBase,
346
+ recordId: firstEvidence.recordId,
347
+ logicalTimeMs: 32,
348
+ accepted: false,
349
+ reasonCode: "effect_denied",
350
+ budgetDeltaKind: "none",
351
+ budgetDeltaUnits: 0,
352
+ previousRecordDigest: null,
353
+ });
354
+ const roomProposal = createDelegationMandateProposalV1({
355
+ proposalId: "proposal:conformance",
356
+ roomDecision: {
357
+ ...roomProvenance,
358
+ decidedAt: "2026-08-01T00:00:00.000Z",
359
+ decidedBy: "peer:operator",
360
+ },
361
+ statement,
362
+ });
363
+ return Object.freeze({
364
+ authorityState: accepted.state,
365
+ mandate,
366
+ emptyExecutionState,
367
+ executionState: registered.state,
368
+ validWorkContract,
369
+ widenedWorkContract,
370
+ budgetReservation,
371
+ actionPermit,
372
+ actionGrant,
373
+ conflictingActionGrant,
374
+ evidenceRecords: Object.freeze([firstEvidence, secondEvidence]),
375
+ conflictingEvidenceRecord,
376
+ secretCanary: "conformance-secret-canary-7f9d3e1a",
377
+ roomProposal,
378
+ });
379
+ }
380
+ function collectiveDigest(value) {
381
+ return value;
382
+ }
383
+ //# sourceMappingURL=control-fixtures.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"control-fixtures.js","sourceRoot":"","sources":["../src/control-fixtures.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,146 @@
1
+ import { type BudgetReservationV1, type CollectiveAuthorityRepositoryV1, type CollectiveAuthorityStateV1, type CollectiveDecisionRecordV1, type CollectiveDigestV1, type CollectiveEvidenceSinkV1, type CollectiveExecutionRepositoryV1, type CollectiveExecutionStateV1, type DelegationMandateV1, type GovernedActionPermitV1, type WorkContractV1 } from "@agentplat/collective-control";
2
+ import { type ActionGrant, type ActionGrantRepository } from "@agentplat/inference-control/tools";
3
+ export { createControlConformanceFixturesV1 } from "./control-fixtures.js";
4
+ export declare const CONTROL_CONFORMANCE_VERSION: 1;
5
+ export declare const CONTROL_CONFORMANCE_CAPABILITIES: readonly ["control.portable", "control.repositories", "control.rooms", "control.persistence"];
6
+ export type ControlConformanceCapability = (typeof CONTROL_CONFORMANCE_CAPABILITIES)[number];
7
+ export declare const CONTROL_REQUIRED_CONFORMANCE_CAPABILITIES: readonly ["control.portable", "control.repositories"];
8
+ export interface ControlConformanceCaseDefinitionV1 {
9
+ readonly caseId: string;
10
+ readonly capability: ControlConformanceCapability;
11
+ }
12
+ export declare const CONTROL_CONFORMANCE_CASES_V1: readonly [Readonly<{
13
+ caseId: "control.authority.unknown_digest";
14
+ capability: "control.portable";
15
+ }>, Readonly<{
16
+ caseId: "control.work.scope_widening";
17
+ capability: "control.portable";
18
+ }>, Readonly<{
19
+ caseId: "control.permit.single_use";
20
+ capability: "control.portable";
21
+ }>, Readonly<{
22
+ caseId: "control.permit.indeterminate_retained";
23
+ capability: "control.portable";
24
+ }>, Readonly<{
25
+ caseId: "control.authority.cas_stale";
26
+ capability: "control.repositories";
27
+ }>, Readonly<{
28
+ caseId: "control.execution.cas_stale";
29
+ capability: "control.repositories";
30
+ }>, Readonly<{
31
+ caseId: "control.grant.exact_idempotency";
32
+ capability: "control.repositories";
33
+ }>, Readonly<{
34
+ caseId: "control.grant.substitution_conflict";
35
+ capability: "control.repositories";
36
+ }>, Readonly<{
37
+ caseId: "control.grant.cas_stale";
38
+ capability: "control.repositories";
39
+ }>, Readonly<{
40
+ caseId: "control.evidence.chain";
41
+ capability: "control.repositories";
42
+ }>, Readonly<{
43
+ caseId: "control.evidence.conflict";
44
+ capability: "control.repositories";
45
+ }>, Readonly<{
46
+ caseId: "control.evidence.redaction";
47
+ capability: "control.repositories";
48
+ }>, Readonly<{
49
+ caseId: "control.rooms.proposal_inert";
50
+ capability: "control.rooms";
51
+ }>, Readonly<{
52
+ caseId: "control.persistence.restart";
53
+ capability: "control.persistence";
54
+ }>];
55
+ export type ControlConformanceCaseIdV1 = (typeof CONTROL_CONFORMANCE_CASES_V1)[number]["caseId"];
56
+ export interface ControlConformanceFixturesV1 {
57
+ readonly authorityState: CollectiveAuthorityStateV1;
58
+ readonly mandate: DelegationMandateV1;
59
+ readonly emptyExecutionState: CollectiveExecutionStateV1;
60
+ readonly executionState: CollectiveExecutionStateV1;
61
+ readonly validWorkContract: WorkContractV1;
62
+ readonly widenedWorkContract: WorkContractV1;
63
+ readonly budgetReservation: BudgetReservationV1;
64
+ readonly actionPermit: GovernedActionPermitV1;
65
+ readonly actionGrant: ActionGrant;
66
+ readonly conflictingActionGrant: ActionGrant;
67
+ readonly evidenceRecords: readonly [
68
+ CollectiveDecisionRecordV1,
69
+ CollectiveDecisionRecordV1
70
+ ];
71
+ readonly conflictingEvidenceRecord: CollectiveDecisionRecordV1;
72
+ readonly secretCanary: string;
73
+ readonly roomProposal?: unknown;
74
+ }
75
+ export interface ControlConformanceAdapterV1 {
76
+ readonly authorityRepository: CollectiveAuthorityRepositoryV1;
77
+ readonly executionRepository: CollectiveExecutionRepositoryV1;
78
+ readonly actionGrantRepository: ActionGrantRepository;
79
+ readonly evidenceSink: CollectiveEvidenceSinkV1;
80
+ /** Independent, redacted view of what the sink persisted. */
81
+ readonly inspectEvidence: () => unknown | Promise<unknown>;
82
+ readonly fixtures: ControlConformanceFixturesV1;
83
+ readonly restart?: () => ControlConformanceRestartV1 | Promise<ControlConformanceRestartV1>;
84
+ readonly cleanup?: () => void | Promise<void>;
85
+ }
86
+ export interface ControlConformanceRestartV1 {
87
+ readonly authorityRepository: CollectiveAuthorityRepositoryV1;
88
+ readonly executionRepository: CollectiveExecutionRepositoryV1;
89
+ readonly actionGrantRepository: ActionGrantRepository;
90
+ readonly evidenceSink: CollectiveEvidenceSinkV1;
91
+ }
92
+ export interface ControlConformanceFactoryContextV1 {
93
+ readonly seed: number;
94
+ readonly signal: AbortSignal;
95
+ }
96
+ export type ControlConformanceFactoryV1 = (caseId: ControlConformanceCaseIdV1, context: ControlConformanceFactoryContextV1) => ControlConformanceAdapterV1 | Promise<ControlConformanceAdapterV1>;
97
+ export interface ControlConformanceOptionsV1 {
98
+ readonly declaredCapabilities: readonly ControlConformanceCapability[];
99
+ readonly factory: ControlConformanceFactoryV1;
100
+ readonly seed?: number;
101
+ readonly timeoutMs?: number;
102
+ readonly cleanupTimeoutMs?: number;
103
+ readonly signal?: AbortSignal;
104
+ readonly clock?: () => number;
105
+ }
106
+ export interface ControlConformanceCaseResultV1 {
107
+ readonly caseId: ControlConformanceCaseIdV1;
108
+ readonly capability: ControlConformanceCapability;
109
+ readonly outcome: "passed" | "failed" | "not_declared";
110
+ readonly reasonCode: string | null;
111
+ readonly durationMs: number;
112
+ }
113
+ export interface ControlConformanceReportV1 {
114
+ readonly schemaVersion: 1;
115
+ readonly conformanceVersion: number;
116
+ readonly suiteDigest: CollectiveDigestV1;
117
+ readonly fixtureManifestDigest: CollectiveDigestV1;
118
+ readonly implementation: {
119
+ readonly name: string;
120
+ readonly version: string;
121
+ };
122
+ readonly declaredCapabilities: readonly ControlConformanceCapability[];
123
+ readonly seed: number;
124
+ readonly cases: readonly ControlConformanceCaseResultV1[];
125
+ readonly counts: {
126
+ readonly passed: number;
127
+ readonly failed: number;
128
+ readonly notDeclared: number;
129
+ readonly total: number;
130
+ };
131
+ readonly verdict: "passed" | "failed";
132
+ }
133
+ export declare function runControlConformanceV1(options: ControlConformanceOptionsV1): Promise<readonly ControlConformanceCaseResultV1[]>;
134
+ export declare function createControlConformanceReportV1(input: {
135
+ readonly suiteDigest: CollectiveDigestV1;
136
+ readonly fixtureManifestDigest: CollectiveDigestV1;
137
+ readonly implementation: {
138
+ readonly name: string;
139
+ readonly version: string;
140
+ };
141
+ readonly declaredCapabilities: readonly ControlConformanceCapability[];
142
+ readonly seed: number;
143
+ readonly cases: readonly ControlConformanceCaseResultV1[];
144
+ }): ControlConformanceReportV1;
145
+ export declare function validateControlConformanceReportV1(value: unknown): ControlConformanceReportV1;
146
+ //# sourceMappingURL=control.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"control.d.ts","sourceRoot":"","sources":["../src/control.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,504 @@
1
+ import { authorizeDelegationMandateAtV1, issueGovernedActionPermitV1, registerWorkContractV1, transitionGovernedActionPermitV1, validateCollectiveAuthorityStateV1, validateCollectiveDecisionRecordV1, validateCollectiveExecutionStateV1, validateWorkContractV1, } from "@agentplat/collective-control";
2
+ import { validateDelegationMandateProposalV1 } from "@agentplat/collective-control/rooms";
3
+ import { controlDigest, issueActionGrantV1, } from "@agentplat/inference-control/tools";
4
+ export { createControlConformanceFixturesV1 } from "./control-fixtures.js";
5
+ export const CONTROL_CONFORMANCE_VERSION = 1;
6
+ export const CONTROL_CONFORMANCE_CAPABILITIES = Object.freeze([
7
+ "control.portable",
8
+ "control.repositories",
9
+ "control.rooms",
10
+ "control.persistence",
11
+ ]);
12
+ export const CONTROL_REQUIRED_CONFORMANCE_CAPABILITIES = Object.freeze([
13
+ "control.portable",
14
+ "control.repositories",
15
+ ]);
16
+ export const CONTROL_CONFORMANCE_CASES_V1 = Object.freeze([
17
+ define("control.authority.unknown_digest", "control.portable"),
18
+ define("control.work.scope_widening", "control.portable"),
19
+ define("control.permit.single_use", "control.portable"),
20
+ define("control.permit.indeterminate_retained", "control.portable"),
21
+ define("control.authority.cas_stale", "control.repositories"),
22
+ define("control.execution.cas_stale", "control.repositories"),
23
+ define("control.grant.exact_idempotency", "control.repositories"),
24
+ define("control.grant.substitution_conflict", "control.repositories"),
25
+ define("control.grant.cas_stale", "control.repositories"),
26
+ define("control.evidence.chain", "control.repositories"),
27
+ define("control.evidence.conflict", "control.repositories"),
28
+ define("control.evidence.redaction", "control.repositories"),
29
+ define("control.rooms.proposal_inert", "control.rooms"),
30
+ define("control.persistence.restart", "control.persistence"),
31
+ ]);
32
+ export async function runControlConformanceV1(options) {
33
+ const capabilities = normalizeCapabilities(options.declaredCapabilities);
34
+ for (const required of CONTROL_REQUIRED_CONFORMANCE_CAPABILITIES) {
35
+ if (!capabilities.has(required))
36
+ throw new TypeError("Required control conformance capability is missing");
37
+ }
38
+ if (typeof options.factory !== "function")
39
+ throw new TypeError("Control conformance factory is required");
40
+ const seed = boundedInteger(options.seed ?? 0, "seed", 0, 0xffff_ffff);
41
+ const timeoutMs = boundedInteger(options.timeoutMs ?? 5_000, "timeoutMs", 10, 60_000);
42
+ const cleanupTimeoutMs = boundedInteger(options.cleanupTimeoutMs ?? 2_000, "cleanupTimeoutMs", 10, 30_000);
43
+ const clock = options.clock ?? Date.now;
44
+ const results = [];
45
+ for (const definition of CONTROL_CONFORMANCE_CASES_V1) {
46
+ if (!capabilities.has(definition.capability)) {
47
+ results.push(result(definition, "not_declared", null, 0));
48
+ continue;
49
+ }
50
+ results.push(await runCase({
51
+ definition,
52
+ factory: options.factory,
53
+ seed,
54
+ timeoutMs,
55
+ cleanupTimeoutMs,
56
+ signal: options.signal,
57
+ clock,
58
+ }));
59
+ }
60
+ return Object.freeze(results);
61
+ }
62
+ export function createControlConformanceReportV1(input) {
63
+ exactRecord(input, [
64
+ "suiteDigest",
65
+ "fixtureManifestDigest",
66
+ "implementation",
67
+ "declaredCapabilities",
68
+ "seed",
69
+ "cases",
70
+ ]);
71
+ exactRecord(input.implementation, ["name", "version"]);
72
+ if (!input.implementation?.name ||
73
+ !input.implementation.version ||
74
+ input.implementation.name.length > 128 ||
75
+ input.implementation.version.length > 64)
76
+ throw new TypeError("Control conformance implementation is invalid");
77
+ const capabilities = [
78
+ ...normalizeCapabilities(input.declaredCapabilities),
79
+ ].sort();
80
+ const suiteDigest = boundedDigest(input.suiteDigest);
81
+ const fixtureManifestDigest = boundedDigest(input.fixtureManifestDigest);
82
+ const seed = boundedInteger(input.seed, "seed", 0, 0xffff_ffff);
83
+ if (input.cases.length !== CONTROL_CONFORMANCE_CASES_V1.length)
84
+ throw new TypeError("Control conformance case coverage is incomplete");
85
+ const byId = new Map(input.cases.map((entry) => [entry.caseId, entry]));
86
+ if (byId.size !== input.cases.length)
87
+ throw new TypeError("Control conformance case is duplicated");
88
+ const cases = CONTROL_CONFORMANCE_CASES_V1.map((definition) => {
89
+ const entry = byId.get(definition.caseId);
90
+ if (entry)
91
+ exactRecord(entry, [
92
+ "caseId",
93
+ "capability",
94
+ "outcome",
95
+ "reasonCode",
96
+ "durationMs",
97
+ ]);
98
+ if (!entry ||
99
+ entry.capability !== definition.capability ||
100
+ !["passed", "failed", "not_declared"].includes(entry.outcome) ||
101
+ !Number.isSafeInteger(entry.durationMs) ||
102
+ entry.durationMs < 0 ||
103
+ entry.durationMs > 60_000 ||
104
+ (entry.outcome === "failed") !== (entry.reasonCode !== null) ||
105
+ (entry.reasonCode !== null &&
106
+ !/^[a-z][a-z0-9._:-]{0,63}$/u.test(entry.reasonCode)) ||
107
+ (capabilities.includes(entry.capability) &&
108
+ entry.outcome === "not_declared") ||
109
+ (!capabilities.includes(entry.capability) &&
110
+ entry.outcome !== "not_declared"))
111
+ throw new TypeError("Control conformance case result is invalid");
112
+ return Object.freeze({ ...entry });
113
+ });
114
+ const counts = Object.freeze({
115
+ passed: cases.filter((entry) => entry.outcome === "passed").length,
116
+ failed: cases.filter((entry) => entry.outcome === "failed").length,
117
+ notDeclared: cases.filter((entry) => entry.outcome === "not_declared")
118
+ .length,
119
+ total: cases.length,
120
+ });
121
+ return Object.freeze({
122
+ schemaVersion: 1,
123
+ conformanceVersion: CONTROL_CONFORMANCE_VERSION,
124
+ suiteDigest,
125
+ fixtureManifestDigest,
126
+ implementation: Object.freeze({ ...input.implementation }),
127
+ declaredCapabilities: Object.freeze(capabilities),
128
+ seed,
129
+ cases: Object.freeze(cases),
130
+ counts,
131
+ verdict: counts.failed === 0 ? "passed" : "failed",
132
+ });
133
+ }
134
+ export function validateControlConformanceReportV1(value) {
135
+ exactRecord(value, [
136
+ "schemaVersion",
137
+ "conformanceVersion",
138
+ "suiteDigest",
139
+ "fixtureManifestDigest",
140
+ "implementation",
141
+ "declaredCapabilities",
142
+ "seed",
143
+ "cases",
144
+ "counts",
145
+ "verdict",
146
+ ]);
147
+ const report = value;
148
+ if (report.schemaVersion !== 1 ||
149
+ report.conformanceVersion !== CONTROL_CONFORMANCE_VERSION)
150
+ throw new TypeError("Control conformance report version is unsupported");
151
+ const normalized = createControlConformanceReportV1({
152
+ suiteDigest: report.suiteDigest,
153
+ fixtureManifestDigest: report.fixtureManifestDigest,
154
+ implementation: report.implementation,
155
+ declaredCapabilities: report.declaredCapabilities,
156
+ seed: report.seed,
157
+ cases: report.cases,
158
+ });
159
+ exactRecord(report.counts, ["passed", "failed", "notDeclared", "total"]);
160
+ if (normalized.counts.passed !== report.counts.passed ||
161
+ normalized.counts.failed !== report.counts.failed ||
162
+ normalized.counts.notDeclared !== report.counts.notDeclared ||
163
+ normalized.counts.total !== report.counts.total ||
164
+ normalized.verdict !== report.verdict)
165
+ throw new TypeError("Control conformance report aggregate is inconsistent");
166
+ return normalized;
167
+ }
168
+ async function runCase(input) {
169
+ const started = input.clock();
170
+ const controller = new AbortController();
171
+ const relay = () => controller.abort(new Error("aborted"));
172
+ input.signal?.addEventListener("abort", relay, { once: true });
173
+ let adapter;
174
+ let timeout;
175
+ let outcome = "passed";
176
+ let reasonCode = null;
177
+ try {
178
+ if (input.signal?.aborted)
179
+ throw new Error("aborted");
180
+ timeout = setTimeout(() => controller.abort(new Error("timeout")), input.timeoutMs);
181
+ adapter = await raceAbort(input.factory(input.definition.caseId, {
182
+ seed: input.seed,
183
+ signal: controller.signal,
184
+ }), controller.signal);
185
+ validateAdapter(adapter);
186
+ await raceAbort(verifyCase(input.definition.caseId, adapter), controller.signal);
187
+ if (controller.signal.aborted)
188
+ throw controller.signal.reason;
189
+ }
190
+ catch (error) {
191
+ outcome = "failed";
192
+ reasonCode =
193
+ error instanceof Error && error.message === "timeout"
194
+ ? "timeout"
195
+ : error instanceof Error && error.message === "aborted"
196
+ ? "aborted"
197
+ : "assertion_failed";
198
+ }
199
+ finally {
200
+ if (timeout !== undefined)
201
+ clearTimeout(timeout);
202
+ input.signal?.removeEventListener("abort", relay);
203
+ if (adapter?.cleanup) {
204
+ let cleanupTimer;
205
+ try {
206
+ await Promise.race([
207
+ Promise.resolve().then(adapter.cleanup),
208
+ new Promise((_resolve, reject) => {
209
+ cleanupTimer = setTimeout(() => reject(new Error("cleanup_timeout")), input.cleanupTimeoutMs);
210
+ }),
211
+ ]);
212
+ }
213
+ catch {
214
+ outcome = "failed";
215
+ reasonCode = "cleanup_failed";
216
+ }
217
+ finally {
218
+ if (cleanupTimer !== undefined)
219
+ clearTimeout(cleanupTimer);
220
+ }
221
+ }
222
+ }
223
+ return result(input.definition, outcome, reasonCode, duration(started, input.clock()));
224
+ }
225
+ async function verifyCase(caseId, adapter) {
226
+ const fixture = adapter.fixtures;
227
+ switch (caseId) {
228
+ case "control.authority.unknown_digest": {
229
+ const state = validateCollectiveAuthorityStateV1(await adapter.authorityRepository.read());
230
+ const decision = authorizeDelegationMandateAtV1(state, {
231
+ mandateId: fixture.mandate.statement.mandateId,
232
+ mandateDigest: changedDigest(fixture.mandate.mandateDigest),
233
+ at: "2026-08-01T00:01:00.000Z",
234
+ });
235
+ assert(!decision.authorized, "unknown mandate digest was accepted");
236
+ return;
237
+ }
238
+ case "control.work.scope_widening": {
239
+ const valid = registerWorkContractV1(fixture.emptyExecutionState, {
240
+ mandate: fixture.mandate,
241
+ workContract: fixture.validWorkContract,
242
+ authorizedAt: "2026-08-01T00:01:00.000Z",
243
+ acceptedAtLogicalMs: 10,
244
+ });
245
+ const widened = registerWorkContractV1(fixture.emptyExecutionState, {
246
+ mandate: fixture.mandate,
247
+ workContract: fixture.widenedWorkContract,
248
+ authorizedAt: "2026-08-01T00:01:00.000Z",
249
+ acceptedAtLogicalMs: 10,
250
+ });
251
+ assert(valid.accepted && !widened.accepted, "work narrowing was not enforced");
252
+ return;
253
+ }
254
+ case "control.permit.single_use": {
255
+ let state = issuePermit(fixture);
256
+ state = transitionPermit(state, fixture.actionPermit.permitId, "reserved", null, 21);
257
+ state = transitionPermit(state, fixture.actionPermit.permitId, "dispatching", null, 22);
258
+ state = transitionPermit(state, fixture.actionPermit.permitId, "dispatched", "outcome:conformance", 23);
259
+ const prior = state.actionPermits.find((permit) => permit.permitId === fixture.actionPermit.permitId);
260
+ const replay = transitionGovernedActionPermitV1(state, {
261
+ permitId: prior.permitId,
262
+ expectedGeneration: prior.generation,
263
+ expectedDigest: prior.permitDigest,
264
+ nextStatus: "dispatched",
265
+ outcomeId: "outcome:conformance",
266
+ logicalTimeMs: 24,
267
+ });
268
+ assert(!replay.accepted && replay.state.stateDigest === state.stateDigest, "permit replay was accepted");
269
+ return;
270
+ }
271
+ case "control.permit.indeterminate_retained": {
272
+ let state = issuePermit(fixture);
273
+ state = transitionPermit(state, fixture.actionPermit.permitId, "reserved", null, 21);
274
+ state = transitionPermit(state, fixture.actionPermit.permitId, "dispatching", null, 22);
275
+ state = transitionPermit(state, fixture.actionPermit.permitId, "indeterminate", "outcome:unknown", 23);
276
+ const reservation = state.budgetReservations.find((entry) => entry.reservationId === fixture.budgetReservation.reservationId);
277
+ assert(reservation.status === "indeterminate" &&
278
+ reservation.outcomeId === "outcome:unknown", "indeterminate budget was released");
279
+ return;
280
+ }
281
+ case "control.authority.cas_stale": {
282
+ const current = validateCollectiveAuthorityStateV1(await adapter.authorityRepository.read());
283
+ const written = await adapter.authorityRepository.compareAndSwap({
284
+ expectedGeneration: current.generation - 1,
285
+ expectedStateDigest: current.stateDigest,
286
+ nextState: current,
287
+ });
288
+ assert(!written, "stale authority CAS committed");
289
+ return;
290
+ }
291
+ case "control.execution.cas_stale": {
292
+ const current = validateCollectiveExecutionStateV1(await adapter.executionRepository.read());
293
+ const written = await adapter.executionRepository.compareAndSwap({
294
+ expectedGeneration: current.generation - 1,
295
+ expectedStateDigest: current.stateDigest,
296
+ nextState: current,
297
+ });
298
+ assert(!written, "stale execution CAS committed");
299
+ return;
300
+ }
301
+ case "control.grant.exact_idempotency": {
302
+ const first = await issueActionGrantV1(adapter.actionGrantRepository, fixture.actionGrant);
303
+ const second = await issueActionGrantV1(adapter.actionGrantRepository, fixture.actionGrant);
304
+ assert(grantDigest(first) === grantDigest(second), "grant retry changed durable state");
305
+ return;
306
+ }
307
+ case "control.grant.substitution_conflict": {
308
+ await issueActionGrantV1(adapter.actionGrantRepository, fixture.actionGrant);
309
+ let rejected = false;
310
+ try {
311
+ await issueActionGrantV1(adapter.actionGrantRepository, fixture.conflictingActionGrant);
312
+ }
313
+ catch {
314
+ rejected = true;
315
+ }
316
+ assert(rejected, "grant substitution was accepted");
317
+ return;
318
+ }
319
+ case "control.grant.cas_stale": {
320
+ const grant = await issueActionGrantV1(adapter.actionGrantRepository, fixture.actionGrant);
321
+ const cas = await adapter.actionGrantRepository.compareAndSwapGrant({
322
+ grantId: grant.grantId,
323
+ expectedStateGeneration: grant.stateGeneration,
324
+ expectedGrantDigest: changedDigest(grantDigest(grant)),
325
+ nextGrant: grant,
326
+ nextIdempotency: idempotency(grant),
327
+ });
328
+ assert(cas.status === "conflict", "stale grant CAS committed");
329
+ return;
330
+ }
331
+ case "control.evidence.chain": {
332
+ const [first, second] = fixture.evidenceRecords.map(validateCollectiveDecisionRecordV1);
333
+ const one = await adapter.evidenceSink.append(first);
334
+ const duplicate = await adapter.evidenceSink.append(first);
335
+ const two = await adapter.evidenceSink.append(second);
336
+ const anchor = await adapter.evidenceSink.anchor();
337
+ assert(one.code === "appended" &&
338
+ duplicate.code === "duplicate" &&
339
+ two.code === "appended" &&
340
+ anchor.recordCount === 2 &&
341
+ anchor.latestRecordDigest === second.recordDigest, "evidence chain is not exact-idempotent");
342
+ return;
343
+ }
344
+ case "control.evidence.conflict": {
345
+ const first = fixture.evidenceRecords[0];
346
+ await adapter.evidenceSink.append(first);
347
+ const conflict = await adapter.evidenceSink.append(fixture.conflictingEvidenceRecord);
348
+ assert(conflict.code === "chain_conflict", "evidence conflict was accepted");
349
+ return;
350
+ }
351
+ case "control.evidence.redaction": {
352
+ assert(fixture.secretCanary.length >= 16, "secret canary is not sensitive");
353
+ await adapter.evidenceSink.append(fixture.evidenceRecords[0]);
354
+ const persisted = await adapter.inspectEvidence();
355
+ assert(!JSON.stringify(persisted).includes(fixture.secretCanary), "raw secret was retained in evidence");
356
+ return;
357
+ }
358
+ case "control.rooms.proposal_inert": {
359
+ const proposal = validateDelegationMandateProposalV1(fixture.roomProposal);
360
+ assert(!("proof" in proposal) && !("mandateDigest" in proposal), "Room proposal installed authority");
361
+ return;
362
+ }
363
+ case "control.persistence.restart": {
364
+ assert(adapter.restart !== undefined, "persistence restart is unavailable");
365
+ await issueActionGrantV1(adapter.actionGrantRepository, fixture.actionGrant);
366
+ await adapter.evidenceSink.append(fixture.evidenceRecords[0]);
367
+ const restarted = await adapter.restart();
368
+ const authority = await restarted.authorityRepository.read();
369
+ const execution = await restarted.executionRepository.read();
370
+ const grant = await restarted.actionGrantRepository.loadGrant(fixture.actionGrant.grantId);
371
+ const anchor = await restarted.evidenceSink.anchor();
372
+ assert(authority.stateDigest === fixture.authorityState.stateDigest &&
373
+ execution.stateDigest === fixture.executionState.stateDigest &&
374
+ grant !== undefined &&
375
+ grantDigest(grant) === grantDigest(fixture.actionGrant) &&
376
+ anchor.latestRecordDigest === fixture.evidenceRecords[0].recordDigest, "restart did not preserve exact durable state");
377
+ return;
378
+ }
379
+ }
380
+ }
381
+ function issuePermit(fixture) {
382
+ const decision = issueGovernedActionPermitV1(fixture.executionState, {
383
+ mandate: fixture.mandate,
384
+ budgetReservation: fixture.budgetReservation,
385
+ actionPermit: fixture.actionPermit,
386
+ authorizedAt: "2026-08-01T00:01:00.000Z",
387
+ acceptedAtLogicalMs: 20,
388
+ });
389
+ assert(decision.accepted, "fixture permit could not be issued");
390
+ return decision.state;
391
+ }
392
+ function transitionPermit(state, permitId, nextStatus, outcomeId, logicalTimeMs) {
393
+ const prior = state.actionPermits.find((permit) => permit.permitId === permitId);
394
+ const decision = transitionGovernedActionPermitV1(state, {
395
+ permitId,
396
+ expectedGeneration: prior.generation,
397
+ expectedDigest: prior.permitDigest,
398
+ nextStatus,
399
+ outcomeId,
400
+ logicalTimeMs,
401
+ });
402
+ assert(decision.accepted, `permit transition ${nextStatus} failed`);
403
+ return decision.state;
404
+ }
405
+ function normalizeCapabilities(values) {
406
+ if (!Array.isArray(values) ||
407
+ values.length > CONTROL_CONFORMANCE_CAPABILITIES.length)
408
+ throw new TypeError("Control conformance capabilities are invalid");
409
+ const result = new Set();
410
+ for (const value of values) {
411
+ if (!CONTROL_CONFORMANCE_CAPABILITIES.includes(value) || result.has(value))
412
+ throw new TypeError("Control conformance capability is invalid");
413
+ result.add(value);
414
+ }
415
+ return result;
416
+ }
417
+ function validateAdapter(adapter) {
418
+ if (!adapter?.authorityRepository ||
419
+ !adapter.executionRepository ||
420
+ !adapter.actionGrantRepository ||
421
+ !adapter.evidenceSink ||
422
+ typeof adapter.inspectEvidence !== "function" ||
423
+ !adapter.fixtures)
424
+ throw new TypeError("Control conformance adapter is incomplete");
425
+ validateCollectiveAuthorityStateV1(adapter.fixtures.authorityState);
426
+ validateCollectiveExecutionStateV1(adapter.fixtures.emptyExecutionState);
427
+ validateCollectiveExecutionStateV1(adapter.fixtures.executionState);
428
+ validateWorkContractV1(adapter.fixtures.validWorkContract);
429
+ validateWorkContractV1(adapter.fixtures.widenedWorkContract);
430
+ }
431
+ async function raceAbort(operation, signal) {
432
+ if (signal.aborted)
433
+ throw signal.reason;
434
+ let listener;
435
+ try {
436
+ return await Promise.race([
437
+ Promise.resolve(operation),
438
+ new Promise((_resolve, reject) => {
439
+ listener = () => reject(signal.reason);
440
+ signal.addEventListener("abort", listener, { once: true });
441
+ }),
442
+ ]);
443
+ }
444
+ finally {
445
+ if (listener)
446
+ signal.removeEventListener("abort", listener);
447
+ }
448
+ }
449
+ function result(definition, outcome, reasonCode, durationMs) {
450
+ return Object.freeze({
451
+ caseId: definition.caseId,
452
+ capability: definition.capability,
453
+ outcome,
454
+ reasonCode,
455
+ durationMs,
456
+ });
457
+ }
458
+ function define(caseId, capability) {
459
+ return Object.freeze({ caseId, capability });
460
+ }
461
+ function boundedDigest(value) {
462
+ if (!/^sha256:[0-9a-f]{64}$/u.test(value))
463
+ throw new TypeError("Control conformance digest is invalid");
464
+ return value;
465
+ }
466
+ function exactRecord(value, keys) {
467
+ if (!value || typeof value !== "object" || Array.isArray(value))
468
+ throw new TypeError("Control conformance value must be an exact record");
469
+ const actual = Object.keys(value).sort();
470
+ const expected = [...keys].sort();
471
+ if (actual.length !== expected.length ||
472
+ actual.some((key, index) => key !== expected[index]))
473
+ throw new TypeError("Control conformance value must have exact shape");
474
+ }
475
+ function changedDigest(value) {
476
+ const last = value.at(-1) === "0" ? "1" : "0";
477
+ return `${value.slice(0, -1)}${last}`;
478
+ }
479
+ function grantDigest(grant) {
480
+ return controlDigest("grant", grant);
481
+ }
482
+ function idempotency(grant) {
483
+ return Object.freeze({
484
+ schemaVersion: 1,
485
+ scopeDigest: grant.scopeDigest,
486
+ idempotencyKey: grant.idempotencyKey,
487
+ actionDigest: grant.actionDigest,
488
+ grantId: grant.grantId,
489
+ retainedOutcome: grant.status,
490
+ });
491
+ }
492
+ function assert(condition, message) {
493
+ if (condition !== true)
494
+ throw new TypeError(message);
495
+ }
496
+ function boundedInteger(value, label, minimum, maximum) {
497
+ if (!Number.isSafeInteger(value) || value < minimum || value > maximum)
498
+ throw new TypeError(`${label} is invalid`);
499
+ return value;
500
+ }
501
+ function duration(started, ended) {
502
+ return Math.min(60_000, Math.max(0, Math.trunc(ended - started)));
503
+ }
504
+ //# sourceMappingURL=control.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"control.js","sourceRoot":"","sources":["../src/control.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,8BAA8B,EAC9B,2BAA2B,EAC3B,sBAAsB,EACtB,gCAAgC,EAChC,kCAAkC,EAClC,kCAAkC,EAClC,kCAAkC,EAClC,sBAAsB,GAYvB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,mCAAmC,EAAE,MAAM,qCAAqC,CAAC;AAC1F,OAAO,EACL,aAAa,EACb,kBAAkB,GAKnB,MAAM,oCAAoC,CAAC;AAE5C,OAAO,EAAE,kCAAkC,EAAE,MAAM,uBAAuB,CAAC;AAE3E,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAU,CAAC;AAEtD,MAAM,CAAC,MAAM,gCAAgC,GAAG,MAAM,CAAC,MAAM,CAAC;IAC5D,kBAAkB;IAClB,sBAAsB;IACtB,eAAe;IACf,qBAAqB;CACb,CAAC,CAAC;AAKZ,MAAM,CAAC,MAAM,yCAAyC,GAAG,MAAM,CAAC,MAAM,CAAC;IACrE,kBAAkB;IAClB,sBAAsB;CACoC,CAAC,CAAC;AAO9D,MAAM,CAAC,MAAM,4BAA4B,GAAG,MAAM,CAAC,MAAM,CAAC;IACxD,MAAM,CAAC,kCAAkC,EAAE,kBAAkB,CAAC;IAC9D,MAAM,CAAC,6BAA6B,EAAE,kBAAkB,CAAC;IACzD,MAAM,CAAC,2BAA2B,EAAE,kBAAkB,CAAC;IACvD,MAAM,CAAC,uCAAuC,EAAE,kBAAkB,CAAC;IACnE,MAAM,CAAC,6BAA6B,EAAE,sBAAsB,CAAC;IAC7D,MAAM,CAAC,6BAA6B,EAAE,sBAAsB,CAAC;IAC7D,MAAM,CAAC,iCAAiC,EAAE,sBAAsB,CAAC;IACjE,MAAM,CAAC,qCAAqC,EAAE,sBAAsB,CAAC;IACrE,MAAM,CAAC,yBAAyB,EAAE,sBAAsB,CAAC;IACzD,MAAM,CAAC,wBAAwB,EAAE,sBAAsB,CAAC;IACxD,MAAM,CAAC,2BAA2B,EAAE,sBAAsB,CAAC;IAC3D,MAAM,CAAC,4BAA4B,EAAE,sBAAsB,CAAC;IAC5D,MAAM,CAAC,8BAA8B,EAAE,eAAe,CAAC;IACvD,MAAM,CAAC,6BAA6B,EAAE,qBAAqB,CAAC;CACI,CAAC,CAAC;AA8FpE,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,OAAoC;IAEpC,MAAM,YAAY,GAAG,qBAAqB,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC;IACzE,KAAK,MAAM,QAAQ,IAAI,yCAAyC,EAAE,CAAC;QACjE,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC;YAC7B,MAAM,IAAI,SAAS,CAAC,oDAAoD,CAAC,CAAC;IAC9E,CAAC;IACD,IAAI,OAAO,OAAO,CAAC,OAAO,KAAK,UAAU;QACvC,MAAM,IAAI,SAAS,CAAC,yCAAyC,CAAC,CAAC;IACjE,MAAM,IAAI,GAAG,cAAc,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,WAAW,CAAC,CAAC;IACvE,MAAM,SAAS,GAAG,cAAc,CAC9B,OAAO,CAAC,SAAS,IAAI,KAAK,EAC1B,WAAW,EACX,EAAE,EACF,MAAM,CACP,CAAC;IACF,MAAM,gBAAgB,GAAG,cAAc,CACrC,OAAO,CAAC,gBAAgB,IAAI,KAAK,EACjC,kBAAkB,EAClB,EAAE,EACF,MAAM,CACP,CAAC;IACF,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC;IACxC,MAAM,OAAO,GAAqC,EAAE,CAAC;IACrD,KAAK,MAAM,UAAU,IAAI,4BAA4B,EAAE,CAAC;QACtD,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC7C,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YAC1D,SAAS;QACX,CAAC;QACD,OAAO,CAAC,IAAI,CACV,MAAM,OAAO,CAAC;YACZ,UAAU;YACV,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,IAAI;YACJ,SAAS;YACT,gBAAgB;YAChB,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,KAAK;SACN,CAAC,CACH,CAAC;IACJ,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAChC,CAAC;AAED,MAAM,UAAU,gCAAgC,CAAC,KAUhD;IACC,WAAW,CAAC,KAAK,EAAE;QACjB,aAAa;QACb,uBAAuB;QACvB,gBAAgB;QAChB,sBAAsB;QACtB,MAAM;QACN,OAAO;KACR,CAAC,CAAC;IACH,WAAW,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC;IACvD,IACE,CAAC,KAAK,CAAC,cAAc,EAAE,IAAI;QAC3B,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO;QAC7B,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,GAAG,GAAG;QACtC,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,MAAM,GAAG,EAAE;QAExC,MAAM,IAAI,SAAS,CAAC,+CAA+C,CAAC,CAAC;IACvE,MAAM,YAAY,GAAG;QACnB,GAAG,qBAAqB,CAAC,KAAK,CAAC,oBAAoB,CAAC;KACrD,CAAC,IAAI,EAAE,CAAC;IACT,MAAM,WAAW,GAAG,aAAa,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IACrD,MAAM,qBAAqB,GAAG,aAAa,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;IACzE,MAAM,IAAI,GAAG,cAAc,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,WAAW,CAAC,CAAC;IAChE,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,KAAK,4BAA4B,CAAC,MAAM;QAC5D,MAAM,IAAI,SAAS,CAAC,iDAAiD,CAAC,CAAC;IACzE,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IACxE,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC,KAAK,CAAC,MAAM;QAClC,MAAM,IAAI,SAAS,CAAC,wCAAwC,CAAC,CAAC;IAChE,MAAM,KAAK,GAAG,4BAA4B,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE;QAC5D,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAC1C,IAAI,KAAK;YACP,WAAW,CAAC,KAAK,EAAE;gBACjB,QAAQ;gBACR,YAAY;gBACZ,SAAS;gBACT,YAAY;gBACZ,YAAY;aACb,CAAC,CAAC;QACL,IACE,CAAC,KAAK;YACN,KAAK,CAAC,UAAU,KAAK,UAAU,CAAC,UAAU;YAC1C,CAAC,CAAC,QAAQ,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC;YAC7D,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,UAAU,CAAC;YACvC,KAAK,CAAC,UAAU,GAAG,CAAC;YACpB,KAAK,CAAC,UAAU,GAAG,MAAM;YACzB,CAAC,KAAK,CAAC,OAAO,KAAK,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,KAAK,IAAI,CAAC;YAC5D,CAAC,KAAK,CAAC,UAAU,KAAK,IAAI;gBACxB,CAAC,4BAA4B,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;YACvD,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,UAAU,CAAC;gBACtC,KAAK,CAAC,OAAO,KAAK,cAAc,CAAC;YACnC,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,UAAU,CAAC;gBACvC,KAAK,CAAC,OAAO,KAAK,cAAc,CAAC;YAEnC,MAAM,IAAI,SAAS,CAAC,4CAA4C,CAAC,CAAC;QACpE,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;IACH,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QAC3B,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,MAAM;QAClE,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,MAAM;QAClE,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,KAAK,cAAc,CAAC;aACnE,MAAM;QACT,KAAK,EAAE,KAAK,CAAC,MAAM;KACpB,CAAC,CAAC;IACH,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,aAAa,EAAE,CAAC;QAChB,kBAAkB,EAAE,2BAA2B;QAC/C,WAAW;QACX,qBAAqB;QACrB,cAAc,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,KAAK,CAAC,cAAc,EAAE,CAAC;QAC1D,oBAAoB,EAAE,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC;QACjD,IAAI;QACJ,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC;QAC3B,MAAM;QACN,OAAO,EAAE,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ;KACnD,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,kCAAkC,CAChD,KAAc;IAEd,WAAW,CAAC,KAAK,EAAE;QACjB,eAAe;QACf,oBAAoB;QACpB,aAAa;QACb,uBAAuB;QACvB,gBAAgB;QAChB,sBAAsB;QACtB,MAAM;QACN,OAAO;QACP,QAAQ;QACR,SAAS;KACV,CAAC,CAAC;IACH,MAAM,MAAM,GAAG,KAA8C,CAAC;IAC9D,IACE,MAAM,CAAC,aAAa,KAAK,CAAC;QAC1B,MAAM,CAAC,kBAAkB,KAAK,2BAA2B;QAEzD,MAAM,IAAI,SAAS,CAAC,mDAAmD,CAAC,CAAC;IAC3E,MAAM,UAAU,GAAG,gCAAgC,CAAC;QAClD,WAAW,EAAE,MAAM,CAAC,WAAW;QAC/B,qBAAqB,EAAE,MAAM,CAAC,qBAAqB;QACnD,cAAc,EAAE,MAAM,CAAC,cAAc;QACrC,oBAAoB,EAAE,MAAM,CAAC,oBAAoB;QACjD,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,KAAK,EAAE,MAAM,CAAC,KAAK;KACpB,CAAC,CAAC;IACH,WAAW,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,aAAa,EAAE,OAAO,CAAC,CAAC,CAAC;IACzE,IACE,UAAU,CAAC,MAAM,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,MAAM;QACjD,UAAU,CAAC,MAAM,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,MAAM;QACjD,UAAU,CAAC,MAAM,CAAC,WAAW,KAAK,MAAM,CAAC,MAAM,CAAC,WAAW;QAC3D,UAAU,CAAC,MAAM,CAAC,KAAK,KAAK,MAAM,CAAC,MAAM,CAAC,KAAK;QAC/C,UAAU,CAAC,OAAO,KAAK,MAAM,CAAC,OAAO;QAErC,MAAM,IAAI,SAAS,CAAC,sDAAsD,CAAC,CAAC;IAC9E,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,KAAK,UAAU,OAAO,CAAC,KAQtB;IACC,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC;IAC9B,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IACzC,MAAM,KAAK,GAAG,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;IAC3D,KAAK,CAAC,MAAM,EAAE,gBAAgB,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IAC/D,IAAI,OAAgD,CAAC;IACrD,IAAI,OAAkD,CAAC;IACvD,IAAI,OAAO,GAA8C,QAAQ,CAAC;IAClE,IAAI,UAAU,GAAkB,IAAI,CAAC;IACrC,IAAI,CAAC;QACH,IAAI,KAAK,CAAC,MAAM,EAAE,OAAO;YAAE,MAAM,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC;QACtD,OAAO,GAAG,UAAU,CAClB,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC,EAC5C,KAAK,CAAC,SAAS,CAChB,CAAC;QACF,OAAO,GAAG,MAAM,SAAS,CACvB,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,EAAE;YACrC,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,MAAM,EAAE,UAAU,CAAC,MAAM;SAC1B,CAAC,EACF,UAAU,CAAC,MAAM,CAClB,CAAC;QACF,eAAe,CAAC,OAAO,CAAC,CAAC;QACzB,MAAM,SAAS,CACb,UAAU,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,EAAE,OAAO,CAAC,EAC5C,UAAU,CAAC,MAAM,CAClB,CAAC;QACF,IAAI,UAAU,CAAC,MAAM,CAAC,OAAO;YAAE,MAAM,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC;IAChE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,GAAG,QAAQ,CAAC;QACnB,UAAU;YACR,KAAK,YAAY,KAAK,IAAI,KAAK,CAAC,OAAO,KAAK,SAAS;gBACnD,CAAC,CAAC,SAAS;gBACX,CAAC,CAAC,KAAK,YAAY,KAAK,IAAI,KAAK,CAAC,OAAO,KAAK,SAAS;oBACrD,CAAC,CAAC,SAAS;oBACX,CAAC,CAAC,kBAAkB,CAAC;IAC7B,CAAC;YAAS,CAAC;QACT,IAAI,OAAO,KAAK,SAAS;YAAE,YAAY,CAAC,OAAO,CAAC,CAAC;QACjD,KAAK,CAAC,MAAM,EAAE,mBAAmB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAClD,IAAI,OAAO,EAAE,OAAO,EAAE,CAAC;YACrB,IAAI,YAAuD,CAAC;YAC5D,IAAI,CAAC;gBACH,MAAM,OAAO,CAAC,IAAI,CAAC;oBACjB,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;oBACvC,IAAI,OAAO,CAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE;wBACtC,YAAY,GAAG,UAAU,CACvB,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC,EAC1C,KAAK,CAAC,gBAAgB,CACvB,CAAC;oBACJ,CAAC,CAAC;iBACH,CAAC,CAAC;YACL,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,GAAG,QAAQ,CAAC;gBACnB,UAAU,GAAG,gBAAgB,CAAC;YAChC,CAAC;oBAAS,CAAC;gBACT,IAAI,YAAY,KAAK,SAAS;oBAAE,YAAY,CAAC,YAAY,CAAC,CAAC;YAC7D,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CACX,KAAK,CAAC,UAAU,EAChB,OAAO,EACP,UAAU,EACV,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,CACjC,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,UAAU,CACvB,MAAkC,EAClC,OAAoC;IAEpC,MAAM,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC;IACjC,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,kCAAkC,CAAC,CAAC,CAAC;YACxC,MAAM,KAAK,GAAG,kCAAkC,CAC9C,MAAM,OAAO,CAAC,mBAAmB,CAAC,IAAI,EAAE,CACzC,CAAC;YACF,MAAM,QAAQ,GAAG,8BAA8B,CAAC,KAAK,EAAE;gBACrD,SAAS,EAAE,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS;gBAC9C,aAAa,EAAE,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC;gBAC3D,EAAE,EAAE,0BAA0B;aAC/B,CAAC,CAAC;YACH,MAAM,CAAC,CAAC,QAAQ,CAAC,UAAU,EAAE,qCAAqC,CAAC,CAAC;YACpE,OAAO;QACT,CAAC;QACD,KAAK,6BAA6B,CAAC,CAAC,CAAC;YACnC,MAAM,KAAK,GAAG,sBAAsB,CAAC,OAAO,CAAC,mBAAmB,EAAE;gBAChE,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,YAAY,EAAE,OAAO,CAAC,iBAAiB;gBACvC,YAAY,EAAE,0BAA0B;gBACxC,mBAAmB,EAAE,EAAE;aACxB,CAAC,CAAC;YACH,MAAM,OAAO,GAAG,sBAAsB,CAAC,OAAO,CAAC,mBAAmB,EAAE;gBAClE,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,YAAY,EAAE,OAAO,CAAC,mBAAmB;gBACzC,YAAY,EAAE,0BAA0B;gBACxC,mBAAmB,EAAE,EAAE;aACxB,CAAC,CAAC;YACH,MAAM,CACJ,KAAK,CAAC,QAAQ,IAAI,CAAC,OAAO,CAAC,QAAQ,EACnC,iCAAiC,CAClC,CAAC;YACF,OAAO;QACT,CAAC;QACD,KAAK,2BAA2B,CAAC,CAAC,CAAC;YACjC,IAAI,KAAK,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;YACjC,KAAK,GAAG,gBAAgB,CACtB,KAAK,EACL,OAAO,CAAC,YAAY,CAAC,QAAQ,EAC7B,UAAU,EACV,IAAI,EACJ,EAAE,CACH,CAAC;YACF,KAAK,GAAG,gBAAgB,CACtB,KAAK,EACL,OAAO,CAAC,YAAY,CAAC,QAAQ,EAC7B,aAAa,EACb,IAAI,EACJ,EAAE,CACH,CAAC;YACF,KAAK,GAAG,gBAAgB,CACtB,KAAK,EACL,OAAO,CAAC,YAAY,CAAC,QAAQ,EAC7B,YAAY,EACZ,qBAAqB,EACrB,EAAE,CACH,CAAC;YACF,MAAM,KAAK,GAAG,KAAK,CAAC,aAAa,CAAC,IAAI,CACpC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,KAAK,OAAO,CAAC,YAAY,CAAC,QAAQ,CAC7D,CAAC;YACH,MAAM,MAAM,GAAG,gCAAgC,CAAC,KAAK,EAAE;gBACrD,QAAQ,EAAE,KAAK,CAAC,QAAQ;gBACxB,kBAAkB,EAAE,KAAK,CAAC,UAAU;gBACpC,cAAc,EAAE,KAAK,CAAC,YAAY;gBAClC,UAAU,EAAE,YAAY;gBACxB,SAAS,EAAE,qBAAqB;gBAChC,aAAa,EAAE,EAAE;aAClB,CAAC,CAAC;YACH,MAAM,CACJ,CAAC,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,KAAK,CAAC,WAAW,KAAK,KAAK,CAAC,WAAW,EAClE,4BAA4B,CAC7B,CAAC;YACF,OAAO;QACT,CAAC;QACD,KAAK,uCAAuC,CAAC,CAAC,CAAC;YAC7C,IAAI,KAAK,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;YACjC,KAAK,GAAG,gBAAgB,CACtB,KAAK,EACL,OAAO,CAAC,YAAY,CAAC,QAAQ,EAC7B,UAAU,EACV,IAAI,EACJ,EAAE,CACH,CAAC;YACF,KAAK,GAAG,gBAAgB,CACtB,KAAK,EACL,OAAO,CAAC,YAAY,CAAC,QAAQ,EAC7B,aAAa,EACb,IAAI,EACJ,EAAE,CACH,CAAC;YACF,KAAK,GAAG,gBAAgB,CACtB,KAAK,EACL,OAAO,CAAC,YAAY,CAAC,QAAQ,EAC7B,eAAe,EACf,iBAAiB,EACjB,EAAE,CACH,CAAC;YACF,MAAM,WAAW,GAAG,KAAK,CAAC,kBAAkB,CAAC,IAAI,CAC/C,CAAC,KAAK,EAAE,EAAE,CACR,KAAK,CAAC,aAAa,KAAK,OAAO,CAAC,iBAAiB,CAAC,aAAa,CACjE,CAAC;YACH,MAAM,CACJ,WAAW,CAAC,MAAM,KAAK,eAAe;gBACpC,WAAW,CAAC,SAAS,KAAK,iBAAiB,EAC7C,mCAAmC,CACpC,CAAC;YACF,OAAO;QACT,CAAC;QACD,KAAK,6BAA6B,CAAC,CAAC,CAAC;YACnC,MAAM,OAAO,GAAG,kCAAkC,CAChD,MAAM,OAAO,CAAC,mBAAmB,CAAC,IAAI,EAAE,CACzC,CAAC;YACF,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,mBAAmB,CAAC,cAAc,CAAC;gBAC/D,kBAAkB,EAAE,OAAO,CAAC,UAAU,GAAG,CAAC;gBAC1C,mBAAmB,EAAE,OAAO,CAAC,WAAW;gBACxC,SAAS,EAAE,OAAO;aACnB,CAAC,CAAC;YACH,MAAM,CAAC,CAAC,OAAO,EAAE,+BAA+B,CAAC,CAAC;YAClD,OAAO;QACT,CAAC;QACD,KAAK,6BAA6B,CAAC,CAAC,CAAC;YACnC,MAAM,OAAO,GAAG,kCAAkC,CAChD,MAAM,OAAO,CAAC,mBAAmB,CAAC,IAAI,EAAE,CACzC,CAAC;YACF,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,mBAAmB,CAAC,cAAc,CAAC;gBAC/D,kBAAkB,EAAE,OAAO,CAAC,UAAU,GAAG,CAAC;gBAC1C,mBAAmB,EAAE,OAAO,CAAC,WAAW;gBACxC,SAAS,EAAE,OAAO;aACnB,CAAC,CAAC;YACH,MAAM,CAAC,CAAC,OAAO,EAAE,+BAA+B,CAAC,CAAC;YAClD,OAAO;QACT,CAAC;QACD,KAAK,iCAAiC,CAAC,CAAC,CAAC;YACvC,MAAM,KAAK,GAAG,MAAM,kBAAkB,CACpC,OAAO,CAAC,qBAAqB,EAC7B,OAAO,CAAC,WAAW,CACpB,CAAC;YACF,MAAM,MAAM,GAAG,MAAM,kBAAkB,CACrC,OAAO,CAAC,qBAAqB,EAC7B,OAAO,CAAC,WAAW,CACpB,CAAC;YACF,MAAM,CACJ,WAAW,CAAC,KAAK,CAAC,KAAK,WAAW,CAAC,MAAM,CAAC,EAC1C,mCAAmC,CACpC,CAAC;YACF,OAAO;QACT,CAAC;QACD,KAAK,qCAAqC,CAAC,CAAC,CAAC;YAC3C,MAAM,kBAAkB,CACtB,OAAO,CAAC,qBAAqB,EAC7B,OAAO,CAAC,WAAW,CACpB,CAAC;YACF,IAAI,QAAQ,GAAG,KAAK,CAAC;YACrB,IAAI,CAAC;gBACH,MAAM,kBAAkB,CACtB,OAAO,CAAC,qBAAqB,EAC7B,OAAO,CAAC,sBAAsB,CAC/B,CAAC;YACJ,CAAC;YAAC,MAAM,CAAC;gBACP,QAAQ,GAAG,IAAI,CAAC;YAClB,CAAC;YACD,MAAM,CAAC,QAAQ,EAAE,iCAAiC,CAAC,CAAC;YACpD,OAAO;QACT,CAAC;QACD,KAAK,yBAAyB,CAAC,CAAC,CAAC;YAC/B,MAAM,KAAK,GAAG,MAAM,kBAAkB,CACpC,OAAO,CAAC,qBAAqB,EAC7B,OAAO,CAAC,WAAW,CACpB,CAAC;YACF,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,qBAAqB,CAAC,mBAAmB,CAAC;gBAClE,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,uBAAuB,EAAE,KAAK,CAAC,eAAe;gBAC9C,mBAAmB,EAAE,aAAa,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;gBACtD,SAAS,EAAE,KAAK;gBAChB,eAAe,EAAE,WAAW,CAAC,KAAK,CAAC;aACpC,CAAC,CAAC;YACH,MAAM,CAAC,GAAG,CAAC,MAAM,KAAK,UAAU,EAAE,2BAA2B,CAAC,CAAC;YAC/D,OAAO;QACT,CAAC;QACD,KAAK,wBAAwB,CAAC,CAAC,CAAC;YAC9B,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,eAAe,CAAC,GAAG,CACjD,kCAAkC,CACyB,CAAC;YAC9D,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACrD,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC3D,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YACtD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC;YACnD,MAAM,CACJ,GAAG,CAAC,IAAI,KAAK,UAAU;gBACrB,SAAS,CAAC,IAAI,KAAK,WAAW;gBAC9B,GAAG,CAAC,IAAI,KAAK,UAAU;gBACvB,MAAM,CAAC,WAAW,KAAK,CAAC;gBACxB,MAAM,CAAC,kBAAkB,KAAK,MAAM,CAAC,YAAY,EACnD,wCAAwC,CACzC,CAAC;YACF,OAAO;QACT,CAAC;QACD,KAAK,2BAA2B,CAAC,CAAC,CAAC;YACjC,MAAM,KAAK,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;YACzC,MAAM,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACzC,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,YAAY,CAAC,MAAM,CAChD,OAAO,CAAC,yBAAyB,CAClC,CAAC;YACF,MAAM,CACJ,QAAQ,CAAC,IAAI,KAAK,gBAAgB,EAClC,gCAAgC,CACjC,CAAC;YACF,OAAO;QACT,CAAC;QACD,KAAK,4BAA4B,CAAC,CAAC,CAAC;YAClC,MAAM,CACJ,OAAO,CAAC,YAAY,CAAC,MAAM,IAAI,EAAE,EACjC,gCAAgC,CACjC,CAAC;YACF,MAAM,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;YAC9D,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,eAAe,EAAE,CAAC;YAClD,MAAM,CACJ,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,YAAY,CAAC,EACzD,qCAAqC,CACtC,CAAC;YACF,OAAO;QACT,CAAC;QACD,KAAK,8BAA8B,CAAC,CAAC,CAAC;YACpC,MAAM,QAAQ,GAAG,mCAAmC,CAClD,OAAO,CAAC,YAAY,CACrB,CAAC;YACF,MAAM,CACJ,CAAC,CAAC,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,eAAe,IAAI,QAAQ,CAAC,EACxD,mCAAmC,CACpC,CAAC;YACF,OAAO;QACT,CAAC;QACD,KAAK,6BAA6B,CAAC,CAAC,CAAC;YACnC,MAAM,CACJ,OAAO,CAAC,OAAO,KAAK,SAAS,EAC7B,oCAAoC,CACrC,CAAC;YACF,MAAM,kBAAkB,CACtB,OAAO,CAAC,qBAAqB,EAC7B,OAAO,CAAC,WAAW,CACpB,CAAC;YACF,MAAM,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;YAC9D,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;YAC1C,MAAM,SAAS,GAAG,MAAM,SAAS,CAAC,mBAAmB,CAAC,IAAI,EAAE,CAAC;YAC7D,MAAM,SAAS,GAAG,MAAM,SAAS,CAAC,mBAAmB,CAAC,IAAI,EAAE,CAAC;YAC7D,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,qBAAqB,CAAC,SAAS,CAC3D,OAAO,CAAC,WAAW,CAAC,OAAO,CAC5B,CAAC;YACF,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC;YACrD,MAAM,CACJ,SAAS,CAAC,WAAW,KAAK,OAAO,CAAC,cAAc,CAAC,WAAW;gBAC1D,SAAS,CAAC,WAAW,KAAK,OAAO,CAAC,cAAc,CAAC,WAAW;gBAC5D,KAAK,KAAK,SAAS;gBACnB,WAAW,CAAC,KAAK,CAAC,KAAK,WAAW,CAAC,OAAO,CAAC,WAAW,CAAC;gBACvD,MAAM,CAAC,kBAAkB,KAAK,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,YAAY,EACvE,8CAA8C,CAC/C,CAAC;YACF,OAAO;QACT,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,WAAW,CAAC,OAAqC;IACxD,MAAM,QAAQ,GAAG,2BAA2B,CAAC,OAAO,CAAC,cAAc,EAAE;QACnE,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,iBAAiB,EAAE,OAAO,CAAC,iBAAiB;QAC5C,YAAY,EAAE,OAAO,CAAC,YAAY;QAClC,YAAY,EAAE,0BAA0B;QACxC,mBAAmB,EAAE,EAAE;KACxB,CAAC,CAAC;IACH,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,oCAAoC,CAAC,CAAC;IAChE,OAAO,QAAQ,CAAC,KAAK,CAAC;AACxB,CAAC;AAED,SAAS,gBAAgB,CACvB,KAAiC,EACjC,QAAgB,EAChB,UAA4C,EAC5C,SAAwB,EACxB,aAAqB;IAErB,MAAM,KAAK,GAAG,KAAK,CAAC,aAAa,CAAC,IAAI,CACpC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,KAAK,QAAQ,CACxC,CAAC;IACH,MAAM,QAAQ,GAAG,gCAAgC,CAAC,KAAK,EAAE;QACvD,QAAQ;QACR,kBAAkB,EAAE,KAAK,CAAC,UAAU;QACpC,cAAc,EAAE,KAAK,CAAC,YAAY;QAClC,UAAU;QACV,SAAS;QACT,aAAa;KACd,CAAC,CAAC;IACH,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,qBAAqB,UAAU,SAAS,CAAC,CAAC;IACpE,OAAO,QAAQ,CAAC,KAAK,CAAC;AACxB,CAAC;AAED,SAAS,qBAAqB,CAC5B,MAA+C;IAE/C,IACE,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;QACtB,MAAM,CAAC,MAAM,GAAG,gCAAgC,CAAC,MAAM;QAEvD,MAAM,IAAI,SAAS,CAAC,8CAA8C,CAAC,CAAC;IACtE,MAAM,MAAM,GAAG,IAAI,GAAG,EAAgC,CAAC;IACvD,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,IAAI,CAAC,gCAAgC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;YACxE,MAAM,IAAI,SAAS,CAAC,2CAA2C,CAAC,CAAC;QACnE,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACpB,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,eAAe,CAAC,OAAoC;IAC3D,IACE,CAAC,OAAO,EAAE,mBAAmB;QAC7B,CAAC,OAAO,CAAC,mBAAmB;QAC5B,CAAC,OAAO,CAAC,qBAAqB;QAC9B,CAAC,OAAO,CAAC,YAAY;QACrB,OAAO,OAAO,CAAC,eAAe,KAAK,UAAU;QAC7C,CAAC,OAAO,CAAC,QAAQ;QAEjB,MAAM,IAAI,SAAS,CAAC,2CAA2C,CAAC,CAAC;IACnE,kCAAkC,CAAC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;IACpE,kCAAkC,CAAC,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAC;IACzE,kCAAkC,CAAC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;IACpE,sBAAsB,CAAC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC;IAC3D,sBAAsB,CAAC,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAC;AAC/D,CAAC;AAED,KAAK,UAAU,SAAS,CACtB,SAA6B,EAC7B,MAAmB;IAEnB,IAAI,MAAM,CAAC,OAAO;QAAE,MAAM,MAAM,CAAC,MAAM,CAAC;IACxC,IAAI,QAAkC,CAAC;IACvC,IAAI,CAAC;QACH,OAAO,MAAM,OAAO,CAAC,IAAI,CAAC;YACxB,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC;YAC1B,IAAI,OAAO,CAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE;gBACtC,QAAQ,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;gBACvC,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;YAC7D,CAAC,CAAC;SACH,CAAC,CAAC;IACL,CAAC;YAAS,CAAC;QACT,IAAI,QAAQ;YAAE,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAC9D,CAAC;AACH,CAAC;AAED,SAAS,MAAM,CACb,UAA8C,EAC9C,OAAkD,EAClD,UAAyB,EACzB,UAAkB;IAElB,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,MAAM,EAAE,UAAU,CAAC,MAAoC;QACvD,UAAU,EAAE,UAAU,CAAC,UAAU;QACjC,OAAO;QACP,UAAU;QACV,UAAU;KACX,CAAC,CAAC;AACL,CAAC;AAED,SAAS,MAAM,CAIb,MAAc,EACd,UAAsB;IAEtB,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;AAC/C,CAAC;AAED,SAAS,aAAa,CAAC,KAAa;IAClC,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,KAAK,CAAC;QACvC,MAAM,IAAI,SAAS,CAAC,uCAAuC,CAAC,CAAC;IAC/D,OAAO,KAA2B,CAAC;AACrC,CAAC;AAED,SAAS,WAAW,CAAC,KAAc,EAAE,IAAuB;IAC1D,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAC7D,MAAM,IAAI,SAAS,CAAC,mDAAmD,CAAC,CAAC;IAC3E,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;IACzC,MAAM,QAAQ,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;IAClC,IACE,MAAM,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM;QACjC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,KAAK,QAAQ,CAAC,KAAK,CAAC,CAAC;QAEpD,MAAM,IAAI,SAAS,CAAC,iDAAiD,CAAC,CAAC;AAC3E,CAAC;AAED,SAAS,aAAa,CAAC,KAAa;IAClC,MAAM,IAAI,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;IAC9C,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,EAAwB,CAAC;AAC9D,CAAC;AAED,SAAS,WAAW,CAAC,KAAkB;IACrC,OAAO,aAAa,CAAC,OAAO,EAAE,KAA+B,CAAC,CAAC;AACjE,CAAC;AAED,SAAS,WAAW,CAAC,KAAkB;IACrC,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,aAAa,EAAE,CAAC;QAChB,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,cAAc,EAAE,KAAK,CAAC,cAAc;QACpC,YAAY,EAAE,KAAK,CAAC,YAAY;QAChC,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,eAAe,EAAE,KAAK,CAAC,MAAM;KAC9B,CAAC,CAAC;AACL,CAAC;AAED,SAAS,MAAM,CAAC,SAAkB,EAAE,OAAe;IACjD,IAAI,SAAS,KAAK,IAAI;QAAE,MAAM,IAAI,SAAS,CAAC,OAAO,CAAC,CAAC;AACvD,CAAC;AAED,SAAS,cAAc,CACrB,KAAa,EACb,KAAa,EACb,OAAe,EACf,OAAe;IAEf,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,OAAO,IAAI,KAAK,GAAG,OAAO;QACpE,MAAM,IAAI,SAAS,CAAC,GAAG,KAAK,aAAa,CAAC,CAAC;IAC7C,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,QAAQ,CAAC,OAAe,EAAE,KAAa;IAC9C,OAAO,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;AACpE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,yBAAyB,EAC9B,KAAK,yBAAyB,EAC/B,MAAM,gBAAgB,CAAC;AAExB,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,oBAAoB,EAAE,SAAS,yBAAyB,EAAE,CAAC;IACpE,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC;IAC9B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,MAAM,CAAC;CAC/B;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,4BAA4B;;;;;;;iBAH1C,MAAM;;GAiD9B;AAED,wBAAsB,cAAc,CAAC,KAAK,EAAE;IAC1C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,UAAU,EAAE,yBAAyB,CAAC;IAC/C,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC,OAAO,aAAa,CAAC,CAAC;IACnD,QAAQ,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC7D,GAAG,OAAO,CAAC,yBAAyB,CAAC,CAiDrC;AAED,wBAAsB,yBAAyB,CAAC,CAAC,EAC/C,SAAS,EAAE,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,EAC7B,MAAM,EAAE,WAAW,GAClB,OAAO,CAAC,CAAC,CAAC,CAcZ;AAED,wBAAsB,qBAAqB,CACzC,OAAO,EAAE,CAAC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,SAAS,EACjD,SAAS,EAAE,MAAM,EACjB,eAAe,CAAC,EAAE,OAAO,GACxB,OAAO,CAAC,IAAI,CAAC,CAmBf;AAED,wBAAgB,eAAe,CAC7B,SAAS,EAAE,OAAO,EAClB,MAAM,SAAiC,GACtC,OAAO,CAAC,SAAS,CAEnB;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,GAAG,OAAO,CAMvE;AAiDD,qBAAa,2BAA4B,SAAQ,KAAK;IACxC,QAAQ,CAAC,eAAe,CAAC,EAAE,OAAO;gBAAzB,eAAe,CAAC,EAAE,OAAO,YAAA;CAG/C"}
1
+ {"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,yBAAyB,EAC9B,KAAK,yBAAyB,EAC/B,MAAM,gBAAgB,CAAC;AAExB,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,oBAAoB,EAAE,SAAS,yBAAyB,EAAE,CAAC;IACpE,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC;IAC9B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,MAAM,CAAC;CAC/B;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,4BAA4B;;;;;;;;;GA8ClE;AAED,wBAAsB,cAAc,CAAC,KAAK,EAAE;IAC1C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,UAAU,EAAE,yBAAyB,CAAC;IAC/C,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC,OAAO,aAAa,CAAC,CAAC;IACnD,QAAQ,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC7D,GAAG,OAAO,CAAC,yBAAyB,CAAC,CAiDrC;AAED,wBAAsB,yBAAyB,CAAC,CAAC,EAC/C,SAAS,EAAE,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,EAC7B,MAAM,EAAE,WAAW,GAClB,OAAO,CAAC,CAAC,CAAC,CAcZ;AAED,wBAAsB,qBAAqB,CACzC,OAAO,EAAE,CAAC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,SAAS,EACjD,SAAS,EAAE,MAAM,EACjB,eAAe,CAAC,EAAE,OAAO,GACxB,OAAO,CAAC,IAAI,CAAC,CAmBf;AAED,wBAAgB,eAAe,CAC7B,SAAS,EAAE,OAAO,EAClB,MAAM,SAAiC,GACtC,OAAO,CAAC,SAAS,CAEnB;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,GAAG,OAAO,CAMvE;AAiDD,qBAAa,2BAA4B,SAAQ,KAAK;IACxC,QAAQ,CAAC,eAAe,CAAC,EAAE,OAAO;gBAAzB,eAAe,CAAC,EAAE,OAAO,YAAA;CAG/C"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agentplat/mesh-conformance",
3
- "version": "0.3.0-beta.1",
3
+ "version": "0.3.0-beta.2",
4
4
  "description": "Provider-neutral compatibility runners for Agentplat Mesh adapters.",
5
5
  "type": "module",
6
6
  "license": "Apache-2.0",
@@ -27,6 +27,10 @@
27
27
  "./rooms": {
28
28
  "types": "./dist/rooms.d.ts",
29
29
  "import": "./dist/rooms.js"
30
+ },
31
+ "./control": {
32
+ "types": "./dist/control.d.ts",
33
+ "import": "./dist/control.js"
30
34
  }
31
35
  },
32
36
  "files": [
@@ -34,9 +38,11 @@
34
38
  "README.md"
35
39
  ],
36
40
  "dependencies": {
37
- "@agentplat/mesh": "^0.3.0-beta.1",
38
- "@agentplat/rooms-mesh": "^0.3.0-beta.1",
39
- "@agentplat/mesh-protocol": "^0.3.0-beta.1"
41
+ "@agentplat/collective-control": "^0.3.0-beta.2",
42
+ "@agentplat/inference-control": "^0.3.0-beta.2",
43
+ "@agentplat/mesh": "^0.3.0-beta.2",
44
+ "@agentplat/mesh-protocol": "^0.3.0-beta.2",
45
+ "@agentplat/rooms-mesh": "^0.3.0-beta.2"
40
46
  },
41
47
  "engines": {
42
48
  "node": ">=20.19.3"