@victframework/runtime 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (115) hide show
  1. package/dist/agent-governance.d.ts +285 -0
  2. package/dist/agent-governance.js +438 -0
  3. package/dist/agent-governance.js.map +1 -0
  4. package/dist/agent-registry.d.ts +103 -0
  5. package/dist/agent-registry.js +758 -0
  6. package/dist/agent-registry.js.map +1 -0
  7. package/dist/agent-types.d.ts +433 -0
  8. package/dist/agent-types.js +480 -0
  9. package/dist/agent-types.js.map +1 -0
  10. package/dist/authority.d.ts +83 -0
  11. package/dist/authority.js +170 -0
  12. package/dist/authority.js.map +1 -0
  13. package/dist/boundary-conformance.d.ts +51 -0
  14. package/dist/boundary-conformance.js +364 -0
  15. package/dist/boundary-conformance.js.map +1 -0
  16. package/dist/control-conformance.d.ts +68 -0
  17. package/dist/control-conformance.js +1131 -0
  18. package/dist/control-conformance.js.map +1 -0
  19. package/dist/control-in-memory.d.ts +257 -0
  20. package/dist/control-in-memory.js +886 -0
  21. package/dist/control-in-memory.js.map +1 -0
  22. package/dist/control-types.d.ts +1017 -0
  23. package/dist/control-types.js +779 -0
  24. package/dist/control-types.js.map +1 -0
  25. package/dist/durable-run.d.ts +73 -0
  26. package/dist/durable-run.js +262 -0
  27. package/dist/durable-run.js.map +1 -0
  28. package/dist/effect-policy.d.ts +22 -0
  29. package/dist/effect-policy.js +45 -0
  30. package/dist/effect-policy.js.map +1 -0
  31. package/dist/errors.d.ts +36 -0
  32. package/dist/errors.js +71 -0
  33. package/dist/errors.js.map +1 -0
  34. package/dist/in-memory-stores.d.ts +16 -0
  35. package/dist/in-memory-stores.js +522 -0
  36. package/dist/in-memory-stores.js.map +1 -0
  37. package/dist/index.d.ts +41 -0
  38. package/dist/index.js +26 -0
  39. package/dist/index.js.map +1 -0
  40. package/dist/operator-config.d.ts +141 -0
  41. package/dist/operator-config.js +289 -0
  42. package/dist/operator-config.js.map +1 -0
  43. package/dist/orchestration-activation.d.ts +116 -0
  44. package/dist/orchestration-activation.js +223 -0
  45. package/dist/orchestration-activation.js.map +1 -0
  46. package/dist/orchestration-canary-conformance.d.ts +10 -0
  47. package/dist/orchestration-canary-conformance.js +726 -0
  48. package/dist/orchestration-canary-conformance.js.map +1 -0
  49. package/dist/orchestration-commands.d.ts +47 -0
  50. package/dist/orchestration-commands.js +538 -0
  51. package/dist/orchestration-commands.js.map +1 -0
  52. package/dist/orchestration-conformance.d.ts +59 -0
  53. package/dist/orchestration-conformance.js +594 -0
  54. package/dist/orchestration-conformance.js.map +1 -0
  55. package/dist/orchestration-driver-types.d.ts +163 -0
  56. package/dist/orchestration-driver-types.js +21 -0
  57. package/dist/orchestration-driver-types.js.map +1 -0
  58. package/dist/orchestration-driver.d.ts +48 -0
  59. package/dist/orchestration-driver.js +1030 -0
  60. package/dist/orchestration-driver.js.map +1 -0
  61. package/dist/orchestration-in-memory.d.ts +18 -0
  62. package/dist/orchestration-in-memory.js +1313 -0
  63. package/dist/orchestration-in-memory.js.map +1 -0
  64. package/dist/orchestration-join-conformance.d.ts +20 -0
  65. package/dist/orchestration-join-conformance.js +542 -0
  66. package/dist/orchestration-join-conformance.js.map +1 -0
  67. package/dist/orchestration-plan.d.ts +52 -0
  68. package/dist/orchestration-plan.js +265 -0
  69. package/dist/orchestration-plan.js.map +1 -0
  70. package/dist/orchestration-race-conformance.d.ts +35 -0
  71. package/dist/orchestration-race-conformance.js +1265 -0
  72. package/dist/orchestration-race-conformance.js.map +1 -0
  73. package/dist/orchestration-remediation-conformance.d.ts +54 -0
  74. package/dist/orchestration-remediation-conformance.js +632 -0
  75. package/dist/orchestration-remediation-conformance.js.map +1 -0
  76. package/dist/orchestration-store-types.d.ts +568 -0
  77. package/dist/orchestration-store-types.js +2 -0
  78. package/dist/orchestration-store-types.js.map +1 -0
  79. package/dist/pack-conformance.d.ts +59 -0
  80. package/dist/pack-conformance.js +222 -0
  81. package/dist/pack-conformance.js.map +1 -0
  82. package/dist/pack-install.d.ts +44 -0
  83. package/dist/pack-install.js +126 -0
  84. package/dist/pack-install.js.map +1 -0
  85. package/dist/registry.d.ts +107 -0
  86. package/dist/registry.js +481 -0
  87. package/dist/registry.js.map +1 -0
  88. package/dist/runtime.d.ts +158 -0
  89. package/dist/runtime.js +1341 -0
  90. package/dist/runtime.js.map +1 -0
  91. package/dist/serialization.d.ts +26 -0
  92. package/dist/serialization.js +162 -0
  93. package/dist/serialization.js.map +1 -0
  94. package/dist/store-conformance.d.ts +45 -0
  95. package/dist/store-conformance.js +876 -0
  96. package/dist/store-conformance.js.map +1 -0
  97. package/dist/store-errors.d.ts +49 -0
  98. package/dist/store-errors.js +48 -0
  99. package/dist/store-errors.js.map +1 -0
  100. package/dist/store-types.d.ts +331 -0
  101. package/dist/store-types.js +14 -0
  102. package/dist/store-types.js.map +1 -0
  103. package/dist/store-validation.d.ts +63 -0
  104. package/dist/store-validation.js +164 -0
  105. package/dist/store-validation.js.map +1 -0
  106. package/dist/stream-hub.d.ts +151 -0
  107. package/dist/stream-hub.js +402 -0
  108. package/dist/stream-hub.js.map +1 -0
  109. package/dist/testing.d.ts +25 -0
  110. package/dist/testing.js +19 -0
  111. package/dist/testing.js.map +1 -0
  112. package/dist/types.d.ts +221 -0
  113. package/dist/types.js +2 -0
  114. package/dist/types.js.map +1 -0
  115. package/package.json +45 -0
@@ -0,0 +1,223 @@
1
+ import { createHash } from 'node:crypto';
2
+ import { compileGraph } from '@victframework/kernel';
3
+ import { VictStoreError } from './store-errors.js';
4
+ import { VictRuntimeError } from './errors.js';
5
+ import { toCanonicalJson } from './serialization.js';
6
+ function sha256Hex(payload) {
7
+ return createHash('sha256').update(payload).digest('hex');
8
+ }
9
+ function parseManifestForResolution(stored) {
10
+ let parsed;
11
+ try {
12
+ parsed = JSON.parse(stored.canonicalManifest);
13
+ }
14
+ catch {
15
+ parsed = null;
16
+ }
17
+ if (!parsed ||
18
+ typeof parsed !== 'object' ||
19
+ (parsed.manifestSchema !== 'vict.activation-manifest@1' &&
20
+ parsed.manifestSchema !== 'vict.activation-manifest@2') ||
21
+ typeof parsed.activationVersion !== 'string' ||
22
+ parsed.activationVersion !== stored.activationVersion ||
23
+ typeof parsed.graph !== 'object' ||
24
+ parsed.graph === null) {
25
+ throw new VictStoreError('VICT_STORE_INVALID_RECORD', 'The stored manifest is not readable.', {
26
+ operation: 'orchestration.resolveActivation',
27
+ activationVersion: stored.activationVersion,
28
+ });
29
+ }
30
+ return parsed;
31
+ }
32
+ /** Load and validate the stored manifest for an activation version. */
33
+ export async function loadManifest(deps, activationVersion) {
34
+ const stored = await deps.catalog.get(activationVersion);
35
+ if (!stored) {
36
+ throw new VictRuntimeError('VICT_RUNTIME_ACTIVATION_NOT_FOUND', `No stored activation '${activationVersion}' exists in the catalog.`);
37
+ }
38
+ return parseManifestForResolution(stored);
39
+ }
40
+ /**
41
+ * Rebuild the exact compiled graph for a stored activation from the
42
+ * registry's revision-pinned lookups. Cache by activationVersion is the
43
+ * caller's concern (immutable results).
44
+ */
45
+ export async function resolveGraphForActivation(deps, activationVersion) {
46
+ const manifest = await loadManifest(deps, activationVersion);
47
+ const { capabilityRevisions, contractRevisions } = revisionMaps(manifest);
48
+ const definition = manifest.graph;
49
+ const compiled = compileGraph({
50
+ definition,
51
+ capabilities: deps.registry.capabilityIndexPinned(capabilityRevisions),
52
+ contracts: deps.registry.contractEnvironmentPinned(contractRevisions),
53
+ });
54
+ if (!compiled.ok) {
55
+ return {
56
+ ok: false,
57
+ code: 'VICT_RUNTIME_ACTIVATION_UNAVAILABLE',
58
+ message: 'The exact pinned activation cannot be resolved from the registered artifacts; required capabilities or contracts are missing.',
59
+ issues: compiled.issues,
60
+ };
61
+ }
62
+ if (compiled.graph.activationVersion !== activationVersion) {
63
+ return {
64
+ ok: false,
65
+ code: 'VICT_RUNTIME_ACTIVATION_MISMATCH',
66
+ message: 'The registered artifacts do not reproduce the exact pinned activation; no substitute is used.',
67
+ issues: [],
68
+ };
69
+ }
70
+ return { ok: true, graph: compiled.graph };
71
+ }
72
+ function revisionMaps(manifest) {
73
+ const capabilityRevisions = new Map();
74
+ for (const binding of manifest.bindings) {
75
+ capabilityRevisions.set(binding.capability, binding.revision);
76
+ }
77
+ const contractRevisions = new Map();
78
+ for (const contract of manifest.contracts) {
79
+ contractRevisions.set(contract.id, contract.revision);
80
+ }
81
+ return { capabilityRevisions, contractRevisions };
82
+ }
83
+ /**
84
+ * Resolve the exact execution bindings (invoke handles + captured contract
85
+ * parsing handles) for a run's pinned activation.
86
+ */
87
+ export async function resolveBindings(deps, activationVersion) {
88
+ const manifest = await loadManifest(deps, activationVersion);
89
+ const { capabilityRevisions, contractRevisions } = revisionMaps(manifest);
90
+ const bindings = new Map();
91
+ for (const [capabilityId, revision] of capabilityRevisions) {
92
+ const live = deps.registry.getCapabilityRevision(capabilityId, revision);
93
+ if (!live) {
94
+ return {
95
+ ok: false,
96
+ code: 'VICT_RUNTIME_ACTIVATION_UNAVAILABLE',
97
+ message: `Capability '${capabilityId}' revision '${revision}' required by the pinned activation is not registered.`,
98
+ };
99
+ }
100
+ bindings.set(capabilityId, Object.freeze({
101
+ id: live.id,
102
+ revision: live.revision,
103
+ effect: live.effect,
104
+ invoke: live.invoke,
105
+ ...(live.idempotency === undefined ? {} : { idempotency: live.idempotency }),
106
+ inputContractId: live.input?.id,
107
+ inputRevision: live.input?.revision,
108
+ outputContractId: live.output?.id,
109
+ outputRevision: live.output?.revision,
110
+ }));
111
+ }
112
+ const contracts = new Map();
113
+ for (const [contractId, revision] of contractRevisions) {
114
+ const live = deps.registry.getContractRevision(contractId, revision);
115
+ if (!live) {
116
+ return {
117
+ ok: false,
118
+ code: 'VICT_RUNTIME_ACTIVATION_UNAVAILABLE',
119
+ message: `Contract '${contractId}' revision '${revision}' required by the pinned activation is not registered.`,
120
+ };
121
+ }
122
+ // Capture the parse callable BY VALUE: the pinned semantics are frozen.
123
+ contracts.set(contractId, Object.freeze({
124
+ id: live.id,
125
+ revision: live.revision,
126
+ expected: live.expected,
127
+ parse: live.parse.bind(live),
128
+ }));
129
+ }
130
+ return { ok: true, bindings, contracts };
131
+ }
132
+ /* ------------------------------------------------------------------ */
133
+ /* Deterministic durable identity derivation */
134
+ /* ------------------------------------------------------------------ */
135
+ /** Stable opaque idempotency key from durable identity (handoff §12.2). */
136
+ export function deriveIdempotencyKey(parts) {
137
+ return `idem_${sha256Hex(toCanonicalJson({
138
+ activationVersion: parts.activationVersion,
139
+ lineage: parts.lineage,
140
+ nodeId: parts.nodeId,
141
+ runId: parts.runId,
142
+ schema: 'vict.idempotency-key@1',
143
+ })).slice(0, 32)}`;
144
+ }
145
+ /** Deterministic logical invocation id: invariant across retries and restarts. */
146
+ export function deriveInvocationId(parts) {
147
+ return `inv_${sha256Hex(toCanonicalJson({
148
+ activationVersion: parts.activationVersion,
149
+ lineage: parts.lineage,
150
+ nodeId: parts.nodeId,
151
+ runId: parts.runId,
152
+ schema: 'vict.logical-invocation@1',
153
+ })).slice(0, 24)}`;
154
+ }
155
+ export function deriveAttemptId(invocationId, attemptNumber) {
156
+ return `att_${sha256Hex(toCanonicalJson({ attemptNumber, invocationId })).slice(0, 24)}`;
157
+ }
158
+ /** Deterministic token ids from stable run/node/branch identity. */
159
+ export function rootTokenId(runId) {
160
+ return `tok_${sha256Hex(toCanonicalJson({ runId, role: 'root' })).slice(0, 24)}`;
161
+ }
162
+ export function forkChildTokenId(runId, forkId, branchKey) {
163
+ return `tok_${sha256Hex(toCanonicalJson({ branchKey, forkId, runId, role: 'branch' })).slice(0, 24)}`;
164
+ }
165
+ export function joinTokenId(runId, joinId) {
166
+ return `tok_${sha256Hex(toCanonicalJson({ joinId, runId, role: 'join' })).slice(0, 24)}`;
167
+ }
168
+ export function waitIdFor(runId, lineage, nodeId) {
169
+ return `wait_${sha256Hex(toCanonicalJson({ lineage, nodeId, runId })).slice(0, 24)}`;
170
+ }
171
+ export function canonicalBranchLineage(parentLineage, forkId, branchKey) {
172
+ return parentLineage.length === 0
173
+ ? `${forkId}.${branchKey}`
174
+ : `${parentLineage}.${forkId}.${branchKey}`;
175
+ }
176
+ /** Branch lineage of the post-join continuation: the fork's own lineage. */
177
+ export function forkLineageOf(childLineage, forkId, branchKey) {
178
+ const suffix = `.${forkId}.${branchKey}`;
179
+ return childLineage.endsWith(suffix)
180
+ ? childLineage.slice(0, childLineage.length - suffix.length)
181
+ : childLineage;
182
+ }
183
+ /* ------------------------------------------------------------------ */
184
+ /* Idempotent-command hashes (safe identity metadata only) */
185
+ /* ------------------------------------------------------------------ */
186
+ export function signalCommandHash(command) {
187
+ return `sig_${sha256Hex(toCanonicalJson({
188
+ payloadHash: sha256Hex(safeJson(command.payload)),
189
+ runId: command.runId,
190
+ schema: 'vict.signal-command@1',
191
+ signalId: command.signalId,
192
+ signalName: command.signalName ?? null,
193
+ waitId: command.waitId,
194
+ })).slice(0, 32)}`;
195
+ }
196
+ export function cancellationCommandHash(command) {
197
+ return `cancel_${sha256Hex(toCanonicalJson({
198
+ reasonCode: command.reasonCode,
199
+ runId: command.runId,
200
+ schema: 'vict.cancellation-command@1',
201
+ })).slice(0, 24)}`;
202
+ }
203
+ export function resolutionCommandHash(command) {
204
+ return `res_${sha256Hex(toCanonicalJson({
205
+ action: command.action,
206
+ expectedRunRevision: command.expectedRunRevision ?? null,
207
+ hasOutput: command.hasOutput,
208
+ reasonCode: command.reasonCode,
209
+ runId: command.runId,
210
+ schema: 'vict.resolution-command@1',
211
+ })).slice(0, 24)}`;
212
+ }
213
+ function safeJson(value) {
214
+ try {
215
+ return toCanonicalJson(value);
216
+ }
217
+ catch {
218
+ // Out-of-domain payloads were already rejected before this point; the
219
+ // hash then only covers the type identity, never the content.
220
+ return `unserializable:${typeof value}`;
221
+ }
222
+ }
223
+ //# sourceMappingURL=orchestration-activation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"orchestration-activation.js","sourceRoot":"","sources":["../src/orchestration-activation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,OAAO,EAAE,YAAY,EAAuC,MAAM,uBAAuB,CAAC;AAE1F,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAmCrD,SAAS,SAAS,CAAC,OAAe;IAChC,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC5D,CAAC;AAED,SAAS,0BAA0B,CAAC,MAAwB;IAC1D,IAAI,MAAiC,CAAC;IACtC,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,iBAAiB,CAAuB,CAAC;IACtE,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,GAAG,IAAI,CAAC;IAChB,CAAC;IACD,IACE,CAAC,MAAM;QACP,OAAO,MAAM,KAAK,QAAQ;QAC1B,CAAC,MAAM,CAAC,cAAc,KAAK,4BAA4B;YACrD,MAAM,CAAC,cAAc,KAAK,4BAA4B,CAAC;QACzD,OAAO,MAAM,CAAC,iBAAiB,KAAK,QAAQ;QAC5C,MAAM,CAAC,iBAAiB,KAAK,MAAM,CAAC,iBAAiB;QACrD,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ;QAChC,MAAM,CAAC,KAAK,KAAK,IAAI,EACrB,CAAC;QACD,MAAM,IAAI,cAAc,CAAC,2BAA2B,EAAE,sCAAsC,EAAE;YAC5F,SAAS,EAAE,iCAAiC;YAC5C,iBAAiB,EAAE,MAAM,CAAC,iBAAiB;SAC5C,CAAC,CAAC;IACL,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AASD,uEAAuE;AACvE,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,IAA6C,EAC7C,iBAAyB;IAEzB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;IACzD,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,gBAAgB,CACxB,mCAAmC,EACnC,yBAAyB,iBAAiB,0BAA0B,CACrE,CAAC;IACJ,CAAC;IACD,OAAO,0BAA0B,CAAC,MAAM,CAAC,CAAC;AAC5C,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAC7C,IAA4B,EAC5B,iBAAyB;IAEzB,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC;IAC7D,MAAM,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;IAC1E,MAAM,UAAU,GAAG,QAAQ,CAAC,KAAmC,CAAC;IAChE,MAAM,QAAQ,GAAG,YAAY,CAAC;QAC5B,UAAU;QACV,YAAY,EAAE,IAAI,CAAC,QAAQ,CAAC,qBAAqB,CAAC,mBAAmB,CAAC;QACtE,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,yBAAyB,CAAC,iBAAiB,CAAC;KACtE,CAAC,CAAC;IACH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,OAAO;YACL,EAAE,EAAE,KAAK;YACT,IAAI,EAAE,qCAAqC;YAC3C,OAAO,EACL,+HAA+H;YACjI,MAAM,EAAE,QAAQ,CAAC,MAAM;SACxB,CAAC;IACJ,CAAC;IACD,IAAI,QAAQ,CAAC,KAAK,CAAC,iBAAiB,KAAK,iBAAiB,EAAE,CAAC;QAC3D,OAAO;YACL,EAAE,EAAE,KAAK;YACT,IAAI,EAAE,kCAAkC;YACxC,OAAO,EACL,+FAA+F;YACjG,MAAM,EAAE,EAAE;SACX,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,EAAE,CAAC;AAC7C,CAAC;AAUD,SAAS,YAAY,CAAC,QAA4B;IAIhD,MAAM,mBAAmB,GAAG,IAAI,GAAG,EAAkB,CAAC;IACtD,KAAK,MAAM,OAAO,IAAI,QAAQ,CAAC,QAAQ,EAAE,CAAC;QACxC,mBAAmB,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;IAChE,CAAC;IACD,MAAM,iBAAiB,GAAG,IAAI,GAAG,EAAkB,CAAC;IACpD,KAAK,MAAM,QAAQ,IAAI,QAAQ,CAAC,SAAS,EAAE,CAAC;QAC1C,iBAAiB,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACxD,CAAC;IACD,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,CAAC;AACpD,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,IAA4B,EAC5B,iBAAyB;IAEzB,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC;IAC7D,MAAM,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;IAC1E,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAmC,CAAC;IAC5D,KAAK,MAAM,CAAC,YAAY,EAAE,QAAQ,CAAC,IAAI,mBAAmB,EAAE,CAAC;QAC3D,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,qBAAqB,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;QACzE,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO;gBACL,EAAE,EAAE,KAAK;gBACT,IAAI,EAAE,qCAAqC;gBAC3C,OAAO,EAAE,eAAe,YAAY,eAAe,QAAQ,wDAAwD;aACpH,CAAC;QACJ,CAAC;QACD,QAAQ,CAAC,GAAG,CACV,YAAY,EACZ,MAAM,CAAC,MAAM,CAAC;YACZ,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,GAAG,CAAC,IAAI,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC;YAC5E,eAAe,EAAE,IAAI,CAAC,KAAK,EAAE,EAAE;YAC/B,aAAa,EAAE,IAAI,CAAC,KAAK,EAAE,QAAQ;YACnC,gBAAgB,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE;YACjC,cAAc,EAAE,IAAI,CAAC,MAAM,EAAE,QAAQ;SACtC,CAAC,CACH,CAAC;IACJ,CAAC;IACD,MAAM,SAAS,GAAG,IAAI,GAAG,EAAgC,CAAC;IAC1D,KAAK,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC,IAAI,iBAAiB,EAAE,CAAC;QACvD,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QACrE,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO;gBACL,EAAE,EAAE,KAAK;gBACT,IAAI,EAAE,qCAAqC;gBAC3C,OAAO,EAAE,aAAa,UAAU,eAAe,QAAQ,wDAAwD;aAChH,CAAC;QACJ,CAAC;QACD,wEAAwE;QACxE,SAAS,CAAC,GAAG,CACX,UAAU,EACV,MAAM,CAAC,MAAM,CAAC;YACZ,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAA+D;SAC3F,CAAC,CACH,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC;AAC3C,CAAC;AAUD,wEAAwE;AACxE,yEAAyE;AACzE,wEAAwE;AAExE,2EAA2E;AAC3E,MAAM,UAAU,oBAAoB,CAAC,KAMpC;IACC,OAAO,QAAQ,SAAS,CACtB,eAAe,CAAC;QACd,iBAAiB,EAAE,KAAK,CAAC,iBAAiB;QAC1C,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,MAAM,EAAE,wBAAwB;KACjC,CAAC,CACH,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;AACnB,CAAC;AAED,kFAAkF;AAClF,MAAM,UAAU,kBAAkB,CAAC,KAKlC;IACC,OAAO,OAAO,SAAS,CACrB,eAAe,CAAC;QACd,iBAAiB,EAAE,KAAK,CAAC,iBAAiB;QAC1C,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,MAAM,EAAE,2BAA2B;KACpC,CAAC,CACH,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,YAAoB,EAAE,aAAqB;IACzE,OAAO,OAAO,SAAS,CAAC,eAAe,CAAC,EAAE,aAAa,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;AAC3F,CAAC;AAED,oEAAoE;AACpE,MAAM,UAAU,WAAW,CAAC,KAAa;IACvC,OAAO,OAAO,SAAS,CAAC,eAAe,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;AACnF,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,KAAa,EAAE,MAAc,EAAE,SAAiB;IAC/E,OAAO,OAAO,SAAS,CAAC,eAAe,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;AACxG,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,KAAa,EAAE,MAAc;IACvD,OAAO,OAAO,SAAS,CAAC,eAAe,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;AAC3F,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,KAAa,EAAE,OAAe,EAAE,MAAc;IACtE,OAAO,QAAQ,SAAS,CAAC,eAAe,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;AACvF,CAAC;AAED,MAAM,UAAU,sBAAsB,CACpC,aAAqB,EACrB,MAAc,EACd,SAAiB;IAEjB,OAAO,aAAa,CAAC,MAAM,KAAK,CAAC;QAC/B,CAAC,CAAC,GAAG,MAAM,IAAI,SAAS,EAAE;QAC1B,CAAC,CAAC,GAAG,aAAa,IAAI,MAAM,IAAI,SAAS,EAAE,CAAC;AAChD,CAAC;AAED,4EAA4E;AAC5E,MAAM,UAAU,aAAa,CAAC,YAAoB,EAAE,MAAc,EAAE,SAAiB;IACnF,MAAM,MAAM,GAAG,IAAI,MAAM,IAAI,SAAS,EAAE,CAAC;IACzC,OAAO,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC;QAClC,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,YAAY,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QAC5D,CAAC,CAAC,YAAY,CAAC;AACnB,CAAC;AAED,wEAAwE;AACxE,yEAAyE;AACzE,wEAAwE;AAExE,MAAM,UAAU,iBAAiB,CAAC,OAMjC;IACC,OAAO,OAAO,SAAS,CACrB,eAAe,CAAC;QACd,WAAW,EAAE,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACjD,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,MAAM,EAAE,uBAAuB;QAC/B,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,UAAU,EAAE,OAAO,CAAC,UAAU,IAAI,IAAI;QACtC,MAAM,EAAE,OAAO,CAAC,MAAM;KACvB,CAAC,CACH,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,OAIvC;IACC,OAAO,UAAU,SAAS,CACxB,eAAe,CAAC;QACd,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,MAAM,EAAE,6BAA6B;KACtC,CAAC,CACH,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,OAOrC;IACC,OAAO,OAAO,SAAS,CACrB,eAAe,CAAC;QACd,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,mBAAmB,EAAE,OAAO,CAAC,mBAAmB,IAAI,IAAI;QACxD,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,MAAM,EAAE,2BAA2B;KACpC,CAAC,CACH,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;AACnB,CAAC;AAED,SAAS,QAAQ,CAAC,KAAc;IAC9B,IAAI,CAAC;QACH,OAAO,eAAe,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC;IAAC,MAAM,CAAC;QACP,sEAAsE;QACtE,8DAA8D;QAC9D,OAAO,kBAAkB,OAAO,KAAK,EAAE,CAAC;IAC1C,CAAC;AACH,CAAC"}
@@ -0,0 +1,10 @@
1
+ import type { VictRuntime } from './runtime.js';
2
+ import type { ConformanceExpect, ConformanceTestRunner, OrchestrationConformanceFixture, OrchestrationConformanceStores } from './orchestration-conformance.js';
3
+ export interface OrchestrationCanaryStores extends OrchestrationConformanceStores {
4
+ /** A SECOND runtime sharing the same durable stores (operator surface). */
5
+ createOperatorRuntime(): Promise<VictRuntime>;
6
+ }
7
+ export interface OrchestrationCanaryFixture extends OrchestrationConformanceFixture {
8
+ create(): Promise<OrchestrationCanaryStores>;
9
+ }
10
+ export declare function runOrchestrationCanarySuite(runner: ConformanceTestRunner, expect: ConformanceExpect, factory: OrchestrationCanaryFixture): void;