@overkill-dev/run 0.0.57 → 0.0.59

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 (206) hide show
  1. package/engine/case-execution.d.ts +2 -2
  2. package/engine/case-execution.d.ts.map +1 -1
  3. package/engine/case-execution.js +3 -3
  4. package/engine/case-execution.js.map +1 -1
  5. package/engine/engine.d.ts +2 -2
  6. package/engine/engine.d.ts.map +1 -1
  7. package/engine/execution-supervision.d.ts +3 -3
  8. package/engine/execution-supervision.d.ts.map +1 -1
  9. package/engine/execution-supervision.js +4 -4
  10. package/engine/execution-supervision.js.map +1 -1
  11. package/engine/execution-test-plan-cases.js +4 -4
  12. package/engine/execution-test-plan-cases.js.map +1 -1
  13. package/engine/execution.d.ts +2 -2
  14. package/engine/execution.d.ts.map +1 -1
  15. package/engine/execution.js +2 -2
  16. package/engine/execution.js.map +1 -1
  17. package/engine/reporter-dispatcher.d.ts +2 -2
  18. package/engine/reporter-dispatcher.d.ts.map +1 -1
  19. package/engine/run-timings.d.ts +7 -0
  20. package/engine/run-timings.d.ts.map +1 -1
  21. package/engine/run-timings.js +1 -0
  22. package/engine/run-timings.js.map +1 -1
  23. package/engine/test-body-resource-attachment.d.ts +15 -0
  24. package/engine/test-body-resource-attachment.d.ts.map +1 -1
  25. package/engine/test-body-resource-attachment.js +16 -0
  26. package/engine/test-body-resource-attachment.js.map +1 -1
  27. package/package.json +9 -1
  28. package/packages/engine/engine.entry-point.d.ts +2 -2
  29. package/packages/engine/engine.entry-point.d.ts.map +1 -1
  30. package/packages/engine/engine.entry-point.js +2 -2
  31. package/packages/engine/engine.entry-point.js.map +1 -1
  32. package/packages/reporter-line/reporter-line.entry-point.js +5 -0
  33. package/packages/reporter-line/reporter-line.entry-point.js.map +1 -1
  34. package/packages/run/run.entry-point.d.ts +1 -1
  35. package/packages/run/run.entry-point.d.ts.map +1 -1
  36. package/packages/run/run.entry-point.js +2 -2
  37. package/packages/run/run.entry-point.js.map +1 -1
  38. package/readme.md +15 -2
  39. package/reporters/human-reporter-rendering.js +1 -1
  40. package/reporters/human-reporter-rendering.js.map +1 -1
  41. package/reporters/line-reporter.js +5 -2
  42. package/reporters/line-reporter.js.map +1 -1
  43. package/reporters/progress-reporter.js +6 -0
  44. package/reporters/progress-reporter.js.map +1 -0
  45. package/reporters/run-summary-rendering.js +80 -0
  46. package/reporters/run-summary-rendering.js.map +1 -0
  47. package/reporters/tree-reporter.js +111 -0
  48. package/reporters/tree-reporter.js.map +1 -0
  49. package/resources/resource-definition-brand.d.ts +2 -0
  50. package/resources/resource-definition-brand.d.ts.map +1 -0
  51. package/resources/resource-definition-brand.js +2 -0
  52. package/resources/resource-definition-brand.js.map +1 -0
  53. package/resources/resource-definition-shape.d.ts +3 -0
  54. package/resources/resource-definition-shape.d.ts.map +1 -1
  55. package/resources/resource-definition-types.d.ts +104 -0
  56. package/resources/resource-definition-types.d.ts.map +1 -0
  57. package/resources/resource-definition.js +52 -0
  58. package/resources/resource-definition.js.map +1 -0
  59. package/resources/resource-graph.d.ts +3 -3
  60. package/resources/resource-graph.d.ts.map +1 -1
  61. package/resources/resource-graph.js.map +1 -1
  62. package/resources/resource-scenario-binding.d.ts +37 -0
  63. package/resources/resource-scenario-binding.d.ts.map +1 -0
  64. package/resources/resource-scenario-binding.js +99 -0
  65. package/resources/resource-scenario-binding.js.map +1 -0
  66. package/resources/resource-scenario.d.ts +31 -0
  67. package/resources/resource-scenario.d.ts.map +1 -0
  68. package/resources/resource-scenario.js +68 -0
  69. package/resources/resource-scenario.js.map +1 -0
  70. package/resources/resource-session.d.ts +3 -2
  71. package/resources/resource-session.d.ts.map +1 -1
  72. package/resources/resources.d.ts +46 -76
  73. package/resources/resources.d.ts.map +1 -1
  74. package/resources/resources.js +90 -10
  75. package/resources/resources.js.map +1 -1
  76. package/resources/runtime-definition.d.ts +11 -2
  77. package/resources/runtime-definition.d.ts.map +1 -1
  78. package/resources/runtime-definition.js +66 -0
  79. package/resources/runtime-definition.js.map +1 -1
  80. package/resources/runtime-matrix-definition.d.ts +25 -6
  81. package/resources/runtime-matrix-definition.d.ts.map +1 -1
  82. package/resources/runtime-matrix-definition.js +226 -4
  83. package/resources/runtime-matrix-definition.js.map +1 -1
  84. package/run/default-run-engine.js +2 -2
  85. package/run/default-run-engine.js.map +1 -1
  86. package/run/placement-trace.d.ts +83 -40
  87. package/run/placement-trace.d.ts.map +1 -1
  88. package/run/placement-trace.js +80 -0
  89. package/run/placement-trace.js.map +1 -1
  90. package/run/resource-lifecycle-boundaries.js +122 -13
  91. package/run/resource-lifecycle-boundaries.js.map +1 -1
  92. package/run/resource-lifecycle-cache-identity.js +65 -0
  93. package/run/resource-lifecycle-cache-identity.js.map +1 -0
  94. package/run/resource-lifecycle-composition.d.ts +2 -0
  95. package/run/resource-lifecycle-composition.d.ts.map +1 -1
  96. package/run/resource-lifecycle-composition.js +48 -11
  97. package/run/resource-lifecycle-composition.js.map +1 -1
  98. package/run/resource-lifecycle-session-acquirer.js +11 -6
  99. package/run/resource-lifecycle-session-acquirer.js.map +1 -1
  100. package/run/resource-lifecycle-startup-budget.js +1 -0
  101. package/run/resource-lifecycle-startup-budget.js.map +1 -1
  102. package/run/resource-lifecycle-timing.js +3 -1
  103. package/run/resource-lifecycle-timing.js.map +1 -1
  104. package/run/resource-lifecycle.js +4 -3
  105. package/run/resource-lifecycle.js.map +1 -1
  106. package/run/resource-usage.d.ts +3 -3
  107. package/run/resource-usage.d.ts.map +1 -1
  108. package/run/resource-usage.js +1 -1
  109. package/run/resource-usage.js.map +1 -1
  110. package/run/run-collected-planning.js +12 -1
  111. package/run/run-collected-planning.js.map +1 -1
  112. package/run/run-collected-resolution.js +2 -1
  113. package/run/run-collected-resolution.js.map +1 -1
  114. package/run/run-empty-shard.js +3 -3
  115. package/run/run-empty-shard.js.map +1 -1
  116. package/run/run-facts.js +1 -1
  117. package/run/run-facts.js.map +1 -1
  118. package/run/run-if-main.d.ts +3 -3
  119. package/run/run-if-main.d.ts.map +1 -1
  120. package/run/run-if-main.js +2 -2
  121. package/run/run-if-main.js.map +1 -1
  122. package/run/run-isolated-process.js +4 -4
  123. package/run/run-isolated-process.js.map +1 -1
  124. package/run/run-local-execution.js +1 -1
  125. package/run/run-local-execution.js.map +1 -1
  126. package/run/run-local-resolution.js +4 -2
  127. package/run/run-local-resolution.js.map +1 -1
  128. package/run/run-orchestrator-dependencies.d.ts +2 -2
  129. package/run/run-orchestrator-dependencies.d.ts.map +1 -1
  130. package/run/run-orchestrator.js +2 -2
  131. package/run/run-orchestrator.js.map +1 -1
  132. package/run/run-support.js +1 -1
  133. package/run/run-support.js.map +1 -1
  134. package/run/run-timing-collection.d.ts +2 -2
  135. package/run/run-timing-collection.d.ts.map +1 -1
  136. package/run/run-timing-collection.js +28 -22
  137. package/run/run-timing-collection.js.map +1 -1
  138. package/run/supervised-child-process.d.ts +2 -2
  139. package/run/supervised-child-process.d.ts.map +1 -1
  140. package/run/supervised-child-process.js +1 -1
  141. package/run/supervised-child-process.js.map +1 -1
  142. package/run/supervised-child.entry-point.js +2 -2
  143. package/run/supervised-child.entry-point.js.map +1 -1
  144. package/run/supervised-child.js +4 -4
  145. package/run/supervised-child.js.map +1 -1
  146. package/run/supervised-protocol.js.map +1 -1
  147. package/run/supervised-run-collection.js +3 -3
  148. package/run/supervised-run-collection.js.map +1 -1
  149. package/run/supervised-run-runtime.js +5 -5
  150. package/run/supervised-run-runtime.js.map +1 -1
  151. package/run/supervised-run.js +8 -8
  152. package/run/supervised-run.js.map +1 -1
  153. package/run/work-unit-planning.js +4 -2
  154. package/run/work-unit-planning.js.map +1 -1
  155. package/run/work-unit-resource-constraints.js +17 -0
  156. package/run/work-unit-resource-constraints.js.map +1 -1
  157. package/run/worker-pool-collection.js +2 -2
  158. package/run/worker-pool-collection.js.map +1 -1
  159. package/run/worker-pool-compatible-batching.js +0 -10
  160. package/run/worker-pool-compatible-batching.js.map +1 -1
  161. package/run/worker-pool-dispatch-state.js +2 -4
  162. package/run/worker-pool-dispatch-state.js.map +1 -1
  163. package/run/worker-pool-execution.js +37 -36
  164. package/run/worker-pool-execution.js.map +1 -1
  165. package/run/worker-pool-hedge-dispatch.js +1 -1
  166. package/run/worker-pool-hedge-dispatch.js.map +1 -1
  167. package/run/worker-pool-hedged-arbitration.js +31 -20
  168. package/run/worker-pool-hedged-arbitration.js.map +1 -1
  169. package/run/worker-pool-host.entry-point.js +2 -2
  170. package/run/worker-pool-host.entry-point.js.map +1 -1
  171. package/run/worker-pool-lanes.js +7 -3
  172. package/run/worker-pool-lanes.js.map +1 -1
  173. package/run/worker-pool-lease-selection.js.map +1 -1
  174. package/run/worker-pool-output.js +1 -1
  175. package/run/worker-pool-output.js.map +1 -1
  176. package/run/worker-pool-pending-splitting.js +4 -2
  177. package/run/worker-pool-pending-splitting.js.map +1 -1
  178. package/run/worker-pool-resource-tracking.js +1 -1
  179. package/run/worker-pool-resource-tracking.js.map +1 -1
  180. package/run/worker-pool-results.js +9 -6
  181. package/run/worker-pool-results.js.map +1 -1
  182. package/run/worker-pool-run.js +12 -8
  183. package/run/worker-pool-run.js.map +1 -1
  184. package/run/worker-pool-runtime.js +28 -13
  185. package/run/worker-pool-runtime.js.map +1 -1
  186. package/run/worker-pool-static-dispatcher.js +18 -8
  187. package/run/worker-pool-static-dispatcher.js.map +1 -1
  188. package/run/worker-pool-task-events.js +83 -25
  189. package/run/worker-pool-task-events.js.map +1 -1
  190. package/run/worker-pool-work-dispatcher.js +21 -13
  191. package/run/worker-pool-work-dispatcher.js.map +1 -1
  192. package/run/worker-pool-worker-resources.js +2 -2
  193. package/run/worker-pool-worker-resources.js.map +1 -1
  194. package/run/worker-pool-worker-timing.js +14 -7
  195. package/run/worker-pool-worker-timing.js.map +1 -1
  196. package/run/worker-pool-worker.js +20 -12
  197. package/run/worker-pool-worker.js.map +1 -1
  198. package/sbom.cdx.json +38 -4
  199. package/clock/overkill-clock.d.ts +0 -30
  200. package/clock/overkill-clock.d.ts.map +0 -1
  201. package/clock/overkill-clock.js +0 -53
  202. package/clock/overkill-clock.js.map +0 -1
  203. package/reporters/run-fact-summary.js +0 -20
  204. package/reporters/run-fact-summary.js.map +0 -1
  205. package/reporters/run-timing-summary.js +0 -11
  206. package/reporters/run-timing-summary.js.map +0 -1
@@ -1,7 +1,229 @@
1
- import "./runtime-definition.js";
2
-
3
- export function runtimeGraphLeaves(runtime) {
1
+ import { isDefinedRuntime } from "./runtime-definition.js";
2
+ const runtimeMatrixDefinitionBrand = Symbol('overkill.runtimeMatrixDefinition');
3
+ const composedRuntimeGraphBrand = Symbol('overkill.composedRuntimeGraph');
4
+ const descriptorNamePattern = /^[A-Za-z0-9._-]+$/u;
5
+ function assertDescriptorName(kind, name) {
6
+ if (!descriptorNamePattern.test(name)) {
7
+ throw new TypeError(`${kind} "${name}" must match ${descriptorNamePattern.source}.`);
8
+ }
9
+ }
10
+ function compareStrings(left, right) {
11
+ return left.localeCompare(right);
12
+ }
13
+ function sortedKeys(record) {
14
+ return Object.keys(record).toSorted(compareStrings);
15
+ }
16
+ function sameStringItems(left, right) {
17
+ return left.length === right.length && left.every(function itemMatches(item, index) {
18
+ return item === right[index];
19
+ });
20
+ }
21
+ function dimensionIdentity(dimensions) {
22
+ return JSON.stringify(sortedKeys(dimensions).map(function toEntry(key) {
23
+ return [key, dimensions[key]];
24
+ }));
25
+ }
26
+ function scenarioShape(scenarios) {
27
+ return JSON.stringify(Object.entries(scenarios).toSorted(function compareScenarioEntries(left, right) {
28
+ return left[0].localeCompare(right[0]);
29
+ }));
30
+ }
31
+ function resolveMatrixRuntime(variant, shared) {
32
+ return typeof variant === 'function' ? variant(shared) : variant;
33
+ }
34
+ function assertMatrixVariantRuntime(variantId, runtime) {
35
+ if (!isDefinedRuntime(runtime)) {
36
+ throw new TypeError(`Runtime matrix variant "${variantId}" must resolve to a runtime descriptor.`);
37
+ }
38
+ }
39
+ function assertSameShape(matrixName, variantId, runtime, state) {
40
+ if (!sameStringItems(sortedKeys(runtime.dimensions), state.dimensionKeys)) {
41
+ throw new TypeError(`Runtime matrix "${matrixName}" variant "${variantId}" has different dimension keys.`);
42
+ }
43
+ if (!sameStringItems(sortedKeys(runtime.resources), state.resourceKeys)) {
44
+ throw new TypeError(`Runtime matrix "${matrixName}" variant "${variantId}" has different resource keys.`);
45
+ }
46
+ if (scenarioShape(runtime.scenarios) !== state.scenarioShape) {
47
+ throw new TypeError(`Runtime matrix "${matrixName}" variant "${variantId}" has different scenario slots.`);
48
+ }
49
+ }
50
+ function nextVariantState(matrixName, variantId, runtime, state) {
51
+ const key = dimensionIdentity(runtime.dimensions);
52
+ if (state.dimensionIdentities.has(key)) {
53
+ throw new TypeError(`Runtime matrix "${matrixName}" variant "${variantId}" duplicates another dimension tuple.`);
54
+ }
55
+ return {
56
+ ...state,
57
+ dimensionIdentities: new Set([...state.dimensionIdentities, key])
58
+ };
59
+ }
60
+ function runtimeMatrixVariant(variantId, runtime) {
61
+ return Object.freeze({
62
+ id: variantId,
63
+ runtime
64
+ });
65
+ }
66
+ function readShared(definition) {
67
+ return Object.hasOwn(definition, 'shared') ? Reflect.get(definition, 'shared') : undefined;
68
+ }
69
+ function initialVariantState(runtime) {
70
+ return {
71
+ dimensionIdentities: new Set(),
72
+ dimensionKeys: sortedKeys(runtime.dimensions),
73
+ resourceKeys: sortedKeys(runtime.resources),
74
+ scenarioShape: scenarioShape(runtime.scenarios)
75
+ };
76
+ }
77
+ function runtimeMatrixEntries(definition) {
78
+ const variantEntries = Object.entries(definition.variants);
79
+ const firstVariant = variantEntries[0];
80
+ if (firstVariant === undefined) {
81
+ throw new TypeError(`Runtime matrix "${definition.name}" requires at least one variant.`);
82
+ }
83
+ return [firstVariant, ...variantEntries.slice(1)];
84
+ }
85
+ function firstRuntime(variantId, variantInput, shared) {
86
+ assertDescriptorName('Runtime matrix variant', variantId);
87
+ const runtime = resolveMatrixRuntime(variantInput, shared);
88
+ assertMatrixVariantRuntime(variantId, runtime);
89
+ return runtime;
90
+ }
91
+ function matrixVariantEntry(matrixName, variantId, runtime, state) {
92
+ assertDescriptorName('Runtime matrix variant', variantId);
93
+ assertMatrixVariantRuntime(variantId, runtime);
94
+ assertSameShape(matrixName, variantId, runtime, state);
95
+ return [
96
+ variantId,
97
+ runtimeMatrixVariant(variantId, runtime),
98
+ nextVariantState(matrixName, variantId, runtime, state)
99
+ ];
100
+ }
101
+ function variantRecord(entries) {
102
+ const variants = Object.fromEntries(entries);
103
+ return Object.freeze(variants);
104
+ }
105
+ function runtimeMatrixVariants(definition) {
106
+ const variantEntries = runtimeMatrixEntries(definition);
107
+ const shared = readShared(definition);
108
+ const [firstVariantId, firstVariantInput] = variantEntries[0];
109
+ const firstRuntimeValue = firstRuntime(firstVariantId, firstVariantInput, shared);
110
+ let state = initialVariantState(firstRuntimeValue);
111
+ const variants = variantEntries.map(function matrixVariant([variantId, variantInput]) {
112
+ const runtime = variantId === firstVariantId ? firstRuntimeValue : resolveMatrixRuntime(variantInput, shared);
113
+ const [key, variant, nextState] = matrixVariantEntry(definition.name, variantId, runtime, state);
114
+ state = nextState;
115
+ return [key, variant];
116
+ });
117
+ return variantRecord(variants);
118
+ }
119
+ function defineRuntimeMatrix(definition) {
120
+ assertDescriptorName('Runtime matrix', definition.name);
121
+ const variants = runtimeMatrixVariants(definition);
122
+ const firstVariant = Object.values(variants)[0];
123
+ if (firstVariant === undefined) {
124
+ throw new TypeError(`Runtime matrix "${definition.name}" requires at least one variant.`);
125
+ }
126
+ const scenario = function bindRuntimeMatrixScenario(bindings) {
127
+ const boundVariants = Object.fromEntries(Object.entries(variants).map(function bindVariant([id, variant]) {
128
+ return [id, { id: variant.id, runtime: variant.runtime.scenario(bindings) }];
129
+ }));
130
+ return Object.freeze({
131
+ kind: 'runtime-matrix',
132
+ name: definition.name,
133
+ scenario,
134
+ scenarios: firstVariant.runtime.scenarios,
135
+ variants: Object.freeze(boundVariants),
136
+ [runtimeMatrixDefinitionBrand]: true
137
+ });
138
+ };
139
+ return Object.freeze({
140
+ kind: 'runtime-matrix',
141
+ name: definition.name,
142
+ scenario,
143
+ scenarios: firstVariant.runtime.scenarios,
144
+ variants,
145
+ [runtimeMatrixDefinitionBrand]: true
146
+ });
147
+ }
148
+ function isDefinedRuntimeMatrix(runtime) {
149
+ return typeof runtime === 'object' &&
150
+ runtime !== null &&
151
+ Reflect.get(runtime, runtimeMatrixDefinitionBrand) === true;
152
+ }
153
+ function runtimeGraphLeaves(runtime) {
4
154
  return runtime.kind === 'composed-runtimes' ? runtime.runtimes : [runtime];
5
155
  }
6
-
156
+ function duplicateRuntimeName(name) {
157
+ return new TypeError(`Runtime scope "${name}" is attached multiple times.`);
158
+ }
159
+ function assertUniqueRuntimeNames(runtimes) {
160
+ const names = new Set();
161
+ for (const runtime of runtimes) {
162
+ if (names.has(runtime.name)) {
163
+ throw duplicateRuntimeName(runtime.name);
164
+ }
165
+ names.add(runtime.name);
166
+ }
167
+ }
168
+ function assertUniqueScenarioSlots(runtimes) {
169
+ const slots = new Set();
170
+ for (const runtime of runtimes) {
171
+ for (const slot of Object.keys(runtime.scenarios)) {
172
+ if (slots.has(slot)) {
173
+ throw new TypeError(`Scenario slot "${slot}" is attached multiple times.`);
174
+ }
175
+ slots.add(slot);
176
+ }
177
+ }
178
+ }
179
+ function flattenRuntimeGraphs(runtimes) {
180
+ return runtimes.flatMap(runtimeGraphLeaves);
181
+ }
182
+ function combinedScenarioSlots(runtimes) {
183
+ return Object.freeze(Object.fromEntries(runtimes.flatMap(function runtimeScenarioEntries(runtime) {
184
+ return Object.entries(runtime.scenarios);
185
+ })));
186
+ }
187
+ function composeRuntimes(...runtimes) {
188
+ if (runtimes.length === 0) {
189
+ throw new TypeError('composeRuntimes() requires at least one runtime graph.');
190
+ }
191
+ const flattened = flattenRuntimeGraphs(runtimes);
192
+ assertUniqueRuntimeNames(flattened);
193
+ assertUniqueScenarioSlots(flattened);
194
+ const scenarios = combinedScenarioSlots(flattened);
195
+ const scenario = function bindComposedRuntimeScenario(bindings) {
196
+ const boundRuntimes = flattened.map(function bindChildRuntime(runtime) {
197
+ const childBindings = Object.fromEntries(Object.entries(bindings).filter(function childBinding([name]) {
198
+ return Object.hasOwn(runtime.scenarios, name);
199
+ }));
200
+ return runtime.scenario(childBindings);
201
+ });
202
+ const [firstBoundRuntime, ...remainingBoundRuntimes] = boundRuntimes;
203
+ if (firstBoundRuntime === undefined) {
204
+ throw new TypeError('Composed runtime graph requires at least one runtime.');
205
+ }
206
+ return composeRuntimes(firstBoundRuntime, ...remainingBoundRuntimes);
207
+ };
208
+ const descriptor = Object.freeze({
209
+ kind: 'composed-runtimes',
210
+ scenario,
211
+ scenarios,
212
+ runtimes: Object.freeze(Array.from(flattened)),
213
+ [composedRuntimeGraphBrand]: true
214
+ });
215
+ return descriptor;
216
+ }
217
+ function isComposedRuntimeGraph(runtime) {
218
+ return typeof runtime === 'object' &&
219
+ runtime !== null &&
220
+ Reflect.get(runtime, composedRuntimeGraphBrand) === true;
221
+ }
222
+ export const runtimeMatrixDefinitionApi = Object.freeze({
223
+ composeRuntimes,
224
+ defineRuntimeMatrix,
225
+ isComposedRuntimeGraph,
226
+ isDefinedRuntimeMatrix,
227
+ runtimeGraphLeaves
228
+ });
7
229
  //# sourceMappingURL=runtime-matrix-definition.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"runtime-matrix-definition.js","sourceRoot":"","sources":["../../../../source/resources/runtime-matrix-definition.ts"],"names":[],"mappings":"AAAA,OAIO,yBAAyB,CAAC;AAG8D;OAmJ/F,SAAS,kBAmKyB,CAAC,OAAqB;IACpD,OAAO,OAAO,CAAC,IAAI,KAAK,mBAAmB,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAE,OAAO,CAAE,CAAC;AACjF,CAAC"}
1
+ {"version":3,"file":"runtime-matrix-definition.js","sourceRoot":"","sources":["../../../../source/resources/runtime-matrix-definition.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,gBAAgB,EAGnB,MAAM,yBAAyB,CAAC;AAQjC,MAAM,4BAA4B,GAAkB,MAAM,CAAC,kCAAkC,CAAC,CAAC;AAC/F,MAAM,yBAAyB,GAAkB,MAAM,CAAC,+BAA+B,CAAC,CAAC;AAiKzF,MAAM,qBAAqB,GAAG,oBAAoB,CAAC;AAEnD,SAAS,oBAAoB,CAAC,IAAY,EAAE,IAAY;IACpD,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACpC,MAAM,IAAI,SAAS,CAAC,GAAG,IAAI,KAAK,IAAI,gBAAgB,qBAAqB,CAAC,MAAM,GAAG,CAAC,CAAC;IACzF,CAAC;AACL,CAAC;AAED,SAAS,cAAc,CAAC,IAAY,EAAE,KAAa;IAC/C,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AACrC,CAAC;AAED,SAAS,UAAU,CAAC,MAAyC;IACzD,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;AACxD,CAAC;AAED,SAAS,eAAe,CAAC,IAAuB,EAAE,KAAwB;IACtE,OAAO,IAAI,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,WAAW,CAAC,IAAI,EAAE,KAAK;QAC9E,OAAO,IAAI,KAAK,KAAK,CAAC,KAAK,CAAC,CAAC;IACjC,CAAC,CAAC,CAAC;AACP,CAAC;AAED,SAAS,iBAAiB,CAAC,UAA6B;IACpD,OAAO,IAAI,CAAC,SAAS,CACjB,UAAU,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,SAAS,OAAO,CAAC,GAAG;QAC3C,OAAO,CAAE,GAAG,EAAE,UAAU,CAAC,GAAG,CAAC,CAAE,CAAC;IACpC,CAAC,CAAC,CACL,CAAC;AACN,CAAC;AAED,SAAS,aAAa,CAAC,SAAgC;IACnD,OAAO,IAAI,CAAC,SAAS,CACjB,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,SAAS,sBAAsB,CAAC,IAAI,EAAE,KAAK;QAC1E,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3C,CAAC,CAAC,CACL,CAAC;AACN,CAAC;AAED,SAAS,oBAAoB,CACzB,OAAqE,EACrE,MAAe;IAEf,OAAO,OAAO,OAAO,KAAK,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;AACrE,CAAC;AAED,SAAS,0BAA0B,CAAC,SAAiB,EAAE,OAA0B;IAC7E,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,EAAE,CAAC;QAC7B,MAAM,IAAI,SAAS,CAAC,2BAA2B,SAAS,yCAAyC,CAAC,CAAC;IACvG,CAAC;AACL,CAAC;AAED,SAAS,eAAe,CAAC,UAAkB,EAAE,SAAiB,EAAE,OAA0B,EAAE,KAAmB;IAC3G,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,EAAE,CAAC;QACxE,MAAM,IAAI,SAAS,CAAC,mBAAmB,UAAU,cAAc,SAAS,iCAAiC,CAAC,CAAC;IAC/G,CAAC;IAED,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,KAAK,CAAC,YAAY,CAAC,EAAE,CAAC;QACtE,MAAM,IAAI,SAAS,CAAC,mBAAmB,UAAU,cAAc,SAAS,gCAAgC,CAAC,CAAC;IAC9G,CAAC;IAED,IAAI,aAAa,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,aAAa,EAAE,CAAC;QAC3D,MAAM,IAAI,SAAS,CAAC,mBAAmB,UAAU,cAAc,SAAS,iCAAiC,CAAC,CAAC;IAC/G,CAAC;AACL,CAAC;AAED,SAAS,gBAAgB,CACrB,UAAkB,EAClB,SAAiB,EACjB,OAA0B,EAC1B,KAAmB;IAEnB,MAAM,GAAG,GAAG,iBAAiB,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAElD,IAAI,KAAK,CAAC,mBAAmB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;QACrC,MAAM,IAAI,SAAS,CACf,mBAAmB,UAAU,cAAc,SAAS,uCAAuC,CAC9F,CAAC;IACN,CAAC;IAED,OAAO;QACH,GAAG,KAAK;QACR,mBAAmB,EAAE,IAAI,GAAG,CAAC,CAAE,GAAG,KAAK,CAAC,mBAAmB,EAAE,GAAG,CAAE,CAAC;KACtE,CAAC;AACN,CAAC;AAED,SAAS,oBAAoB,CAAC,SAAiB,EAAE,OAA0B;IACvE,OAAO,MAAM,CAAC,MAAM,CAAC;QACjB,EAAE,EAAE,SAAS;QACb,OAAO;KACV,CAAC,CAAC;AACP,CAAC;AAED,SAAS,UAAU,CAAC,UAA8B;IAC9C,OAAO,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAC/F,CAAC;AAED,SAAS,mBAAmB,CAAC,OAA0B;IACnD,OAAO;QACH,mBAAmB,EAAE,IAAI,GAAG,EAAU;QACtC,aAAa,EAAE,UAAU,CAAC,OAAO,CAAC,UAAU,CAAC;QAC7C,YAAY,EAAE,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC;QAC3C,aAAa,EAAE,aAAa,CAAC,OAAO,CAAC,SAAS,CAAC;KAClD,CAAC;AACN,CAAC;AAED,SAAS,oBAAoB,CAAC,UAA8B;IACxD,MAAM,cAAc,GAAG,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;IAC3D,MAAM,YAAY,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC;IAEvC,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;QAC7B,MAAM,IAAI,SAAS,CAAC,mBAAmB,UAAU,CAAC,IAAI,kCAAkC,CAAC,CAAC;IAC9F,CAAC;IAED,OAAO,CAAE,YAAY,EAAE,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,CAAE,CAAC;AACxD,CAAC;AAED,SAAS,YAAY,CACjB,SAAiB,EACjB,YAA0E,EAC1E,MAAe;IAEf,oBAAoB,CAAC,wBAAwB,EAAE,SAAS,CAAC,CAAC;IAC1D,MAAM,OAAO,GAAG,oBAAoB,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;IAC3D,0BAA0B,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IAE/C,OAAO,OAAO,CAAC;AACnB,CAAC;AAED,SAAS,kBAAkB,CACvB,UAAkB,EAClB,SAAiB,EACjB,OAA0B,EAC1B,KAAmB;IAEnB,oBAAoB,CAAC,wBAAwB,EAAE,SAAS,CAAC,CAAC;IAC1D,0BAA0B,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IAC/C,eAAe,CAAC,UAAU,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;IAEvD,OAAO;QACH,SAAS;QACT,oBAAoB,CAAC,SAAS,EAAE,OAAO,CAAC;QACxC,gBAAgB,CAAC,UAAU,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,CAAC;KAC1D,CAAC;AACN,CAAC;AAED,SAAS,aAAa,CAAC,OAA6D;IAChF,MAAM,QAAQ,GAAyC,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IAEnF,OAAO,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AACnC,CAAC;AAED,SAAS,qBAAqB,CAAC,UAA8B;IACzD,MAAM,cAAc,GAAG,oBAAoB,CAAC,UAAU,CAAC,CAAC;IACxD,MAAM,MAAM,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC;IACtC,MAAM,CAAE,cAAc,EAAE,iBAAiB,CAAE,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC;IAChE,MAAM,iBAAiB,GAAG,YAAY,CAAC,cAAc,EAAE,iBAAiB,EAAE,MAAM,CAAC,CAAC;IAClF,IAAI,KAAK,GAAG,mBAAmB,CAAC,iBAAiB,CAAC,CAAC;IAEnD,MAAM,QAAQ,GAAG,cAAc,CAAC,GAAG,CAAC,SAAS,aAAa,CAAC,CAAE,SAAS,EAAE,YAAY,CAAE;QAClF,MAAM,OAAO,GAAG,SAAS,KAAK,cAAc,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,oBAAoB,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;QAC9G,MAAM,CAAE,GAAG,EAAE,OAAO,EAAE,SAAS,CAAE,GAAG,kBAAkB,CAAC,UAAU,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;QAEnG,KAAK,GAAG,SAAS,CAAC;QAElB,OAAO,CAAE,GAAG,EAAE,OAAO,CAAW,CAAC;IACrC,CAAC,CAAC,CAAC;IAEH,OAAO,aAAa,CAAC,QAAQ,CAAC,CAAC;AACnC,CAAC;AAmBD,SAAS,mBAAmB,CACxB,UAA8B;IAE9B,oBAAoB,CAAC,gBAAgB,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC;IAExD,MAAM,QAAQ,GAAG,qBAAqB,CAAC,UAAU,CAAC,CAAC;IACnD,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IAEhD,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;QAC7B,MAAM,IAAI,SAAS,CAAC,mBAAmB,UAAU,CAAC,IAAI,kCAAkC,CAAC,CAAC;IAC9F,CAAC;IAED,MAAM,QAAQ,GAAG,SAAS,yBAAyB,CAC/C,QAA0C;QAE1C,MAAM,aAAa,GAAG,MAAM,CAAC,WAAW,CACpC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,SAAS,WAAW,CAAC,CAAE,EAAE,EAAE,OAAO,CAAE;YAC7D,OAAO,CAAE,EAAE,EAAE,EAAE,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAE,CAAC;QACnF,CAAC,CAAC,CACL,CAAC;QAEF,OAAO,MAAM,CAAC,MAAM,CAAC;YACjB,IAAI,EAAE,gBAAgB;YACtB,IAAI,EAAE,UAAU,CAAC,IAAI;YACrB,QAAQ;YACR,SAAS,EAAE,YAAY,CAAC,OAAO,CAAC,SAAS;YACzC,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC;YACtC,CAAC,4BAA4B,CAAC,EAAE,IAAa;SAChD,CAAC,CAAC;IACP,CAAC,CAAC;IAEF,OAAO,MAAM,CAAC,MAAM,CAAC;QACjB,IAAI,EAAE,gBAAgB;QACtB,IAAI,EAAE,UAAU,CAAC,IAAI;QACrB,QAAQ;QACR,SAAS,EAAE,YAAY,CAAC,OAAO,CAAC,SAAS;QACzC,QAAQ;QACR,CAAC,4BAA4B,CAAC,EAAE,IAAa;KAChD,CAAC,CAAC;AACP,CAAC;AAED,SAAS,sBAAsB,CAAC,OAAgB;IAC5C,OAAO,OAAO,OAAO,KAAK,QAAQ;QAC9B,OAAO,KAAK,IAAI;QAChB,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,4BAA4B,CAAC,KAAK,IAAI,CAAC;AACpE,CAAC;AAED,SAAS,kBAAkB,CAAC,OAAqB;IAC7C,OAAO,OAAO,CAAC,IAAI,KAAK,mBAAmB,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAE,OAAO,CAAE,CAAC;AACjF,CAAC;AAED,SAAS,oBAAoB,CAAC,IAAY;IACtC,OAAO,IAAI,SAAS,CAAC,kBAAkB,IAAI,+BAA+B,CAAC,CAAC;AAChF,CAAC;AAED,SAAS,wBAAwB,CAAC,QAAqC;IACnE,MAAM,KAAK,GAAG,IAAI,GAAG,EAAU,CAAC;IAEhC,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC7B,IAAI,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YAC1B,MAAM,oBAAoB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC7C,CAAC;QAED,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;AACL,CAAC;AAED,SAAS,yBAAyB,CAAC,QAAqC;IACpE,MAAM,KAAK,GAAG,IAAI,GAAG,EAAU,CAAC;IAEhC,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC7B,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;YAChD,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;gBAClB,MAAM,IAAI,SAAS,CAAC,kBAAkB,IAAI,+BAA+B,CAAC,CAAC;YAC/E,CAAC;YAED,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACpB,CAAC;IACL,CAAC;AACL,CAAC;AAED,SAAS,oBAAoB,CAAC,QAAiC;IAC3D,OAAO,QAAQ,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;AAChD,CAAC;AAED,SAAS,qBAAqB,CAAC,QAAqC;IAChE,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,sBAAsB,CAAC,OAAO;QAC5F,OAAO,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC,CAAC,CAAC;AACT,CAAC;AAOD,SAAS,eAAe,CACpB,GAAG,QAAiC;IAEpC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,MAAM,IAAI,SAAS,CAAC,wDAAwD,CAAC,CAAC;IAClF,CAAC;IAED,MAAM,SAAS,GAAG,oBAAoB,CAAC,QAAQ,CAAC,CAAC;IAEjD,wBAAwB,CAAC,SAAS,CAAC,CAAC;IACpC,yBAAyB,CAAC,SAAS,CAAC,CAAC;IAErC,MAAM,SAAS,GAAG,qBAAqB,CAAC,SAAS,CAAC,CAAC;IACnD,MAAM,QAAQ,GAAG,SAAS,2BAA2B,CACjD,QAA0C;QAE1C,MAAM,aAAa,GAAG,SAAS,CAAC,GAAG,CAAC,SAAS,gBAAgB,CAAC,OAAO;YACjE,MAAM,aAAa,GAAG,MAAM,CAAC,WAAW,CACpC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,SAAS,YAAY,CAAC,CAAE,IAAI,CAAE;gBAC1D,OAAO,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;YAClD,CAAC,CAAC,CACL,CAAC;YAEF,OAAO,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;QAC3C,CAAC,CAAC,CAAC;QAEH,MAAM,CAAE,iBAAiB,EAAE,GAAG,sBAAsB,CAAE,GAAG,aAAa,CAAC;QAEvE,IAAI,iBAAiB,KAAK,SAAS,EAAE,CAAC;YAClC,MAAM,IAAI,SAAS,CAAC,uDAAuD,CAAC,CAAC;QACjF,CAAC;QAED,OAAO,eAAe,CAAC,iBAAiB,EAAE,GAAG,sBAAsB,CAAC,CAAC;IACzE,CAAC,CAAC;IAEF,MAAM,UAAU,GAAyB,MAAM,CAAC,MAAM,CAAC;QACnD,IAAI,EAAE,mBAAmB;QACzB,QAAQ;QACR,SAAS;QACT,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC9C,CAAC,yBAAyB,CAAC,EAAE,IAAa;KAC7C,CAAC,CAAC;IAEH,OAAO,UAAU,CAAC;AACtB,CAAC;AAED,SAAS,sBAAsB,CAAC,OAAgB;IAC5C,OAAO,OAAO,OAAO,KAAK,QAAQ;QAC9B,OAAO,KAAK,IAAI;QAChB,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,yBAAyB,CAAC,KAAK,IAAI,CAAC;AACjE,CAAC;AAED,MAAM,CAAC,MAAM,0BAA0B,GAAG,MAAM,CAAC,MAAM,CAAC;IACpD,eAAe;IACf,mBAAmB;IACnB,sBAAsB;IACtB,sBAAsB;IACtB,kBAAkB;CACrB,CAAC,CAAC"}
@@ -1,4 +1,4 @@
1
- import { createOverkillClock } from "../clock/overkill-clock.js";
1
+ import { createClock } from '@enormora/clock';
2
2
  import { createEngineWithOwner } from "../engine/engine.js";
3
3
  import { createExecute } from "../engine/execution.js";
4
4
  import { formatCaseId } from "../engine/identity.js";
@@ -14,7 +14,7 @@ function readActiveResourceTypes() {
14
14
  return process.getActiveResourcesInfo();
15
15
  }
16
16
  function createEngineDependencies() {
17
- const wallClock = createOverkillClock();
17
+ const wallClock = createClock();
18
18
  return {
19
19
  execute: createExecute({
20
20
  asyncLeakDiagnostics: 'enabled',
@@ -1 +1 @@
1
- {"version":3,"file":"default-run-engine.js","sourceRoot":"","sources":["../../../../source/run/default-run-engine.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,qBAAqB,EAAwC,MAAM,qBAAqB,CAAC;AAClG,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAC5E,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAE9D,SAAS,eAAe,CAAC,IAAY;IACjC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC;AACtC,CAAC;AAED,SAAS,eAAe,CAAC,IAAY;IACjC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC;AACtC,CAAC;AAED,SAAS,uBAAuB;IAC5B,OAAO,OAAO,CAAC,sBAAsB,EAAE,CAAC;AAC5C,CAAC;AAED,SAAS,wBAAwB;IAC7B,MAAM,SAAS,GAAG,mBAAmB,EAAE,CAAC;IAExC,OAAO;QACH,OAAO,EAAE,aAAa,CAAC;YACnB,oBAAoB,EAAE,SAAS;YAC/B,uBAAuB;YACvB,kBAAkB,EAAE,wBAAwB,CAAC;gBACzC,MAAM,EAAE,EAAE,SAAS,EAAE,eAAe,EAAE;gBACtC,MAAM,EAAE,EAAE,SAAS,EAAE,eAAe,EAAE;gBACtC,SAAS;aACZ,CAAC;YACF,SAAS;SACZ,CAAC;QACF,SAAS;KACZ,CAAC;AACN,CAAC;AAED,MAAM,MAAM,GAAG,qBAAqB,CAAC,wBAAwB,EAAE,EAAE,oBAAoB,EAAE,CAAC,CAAC;AAEzF,MAAM,CAAC,MAAM,gBAAgB,GAAW;IACpC,UAAU,EAAE,MAAM,CAAC,UAAU;IAC7B,WAAW,EAAE,MAAM,CAAC,WAAW;IAC/B,qBAAqB,EAAE,MAAM,CAAC,qBAAqB;IACnD,WAAW,EAAE,MAAM,CAAC,WAAW;IAC/B,cAAc,EAAE,MAAM,CAAC,cAAc;IACrC,sBAAsB,EAAE,MAAM,CAAC,sBAAsB;IACrD,cAAc,EAAE,MAAM,CAAC,cAAc;IACrC,2BAA2B,EAAE,MAAM,CAAC,2BAA2B;IAC/D,OAAO,EAAE,MAAM,CAAC,OAAO;IACvB,YAAY;IACZ,YAAY,EAAE,MAAM,CAAC,YAAY;CACpC,CAAC"}
1
+ {"version":3,"file":"default-run-engine.js","sourceRoot":"","sources":["../../../../source/run/default-run-engine.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,qBAAqB,EAAwC,MAAM,qBAAqB,CAAC;AAClG,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAC5E,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAE9D,SAAS,eAAe,CAAC,IAAY;IACjC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC;AACtC,CAAC;AAED,SAAS,eAAe,CAAC,IAAY;IACjC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC;AACtC,CAAC;AAED,SAAS,uBAAuB;IAC5B,OAAO,OAAO,CAAC,sBAAsB,EAAE,CAAC;AAC5C,CAAC;AAED,SAAS,wBAAwB;IAC7B,MAAM,SAAS,GAAG,WAAW,EAAE,CAAC;IAEhC,OAAO;QACH,OAAO,EAAE,aAAa,CAAC;YACnB,oBAAoB,EAAE,SAAS;YAC/B,uBAAuB;YACvB,kBAAkB,EAAE,wBAAwB,CAAC;gBACzC,MAAM,EAAE,EAAE,SAAS,EAAE,eAAe,EAAE;gBACtC,MAAM,EAAE,EAAE,SAAS,EAAE,eAAe,EAAE;gBACtC,SAAS;aACZ,CAAC;YACF,SAAS;SACZ,CAAC;QACF,SAAS;KACZ,CAAC;AACN,CAAC;AAED,MAAM,MAAM,GAAG,qBAAqB,CAAC,wBAAwB,EAAE,EAAE,oBAAoB,EAAE,CAAC,CAAC;AAEzF,MAAM,CAAC,MAAM,gBAAgB,GAAW;IACpC,UAAU,EAAE,MAAM,CAAC,UAAU;IAC7B,WAAW,EAAE,MAAM,CAAC,WAAW;IAC/B,qBAAqB,EAAE,MAAM,CAAC,qBAAqB;IACnD,WAAW,EAAE,MAAM,CAAC,WAAW;IAC/B,cAAc,EAAE,MAAM,CAAC,cAAc;IACrC,sBAAsB,EAAE,MAAM,CAAC,sBAAsB;IACrD,cAAc,EAAE,MAAM,CAAC,cAAc;IACrC,2BAA2B,EAAE,MAAM,CAAC,2BAA2B;IAC/D,OAAO,EAAE,MAAM,CAAC,OAAO;IACvB,YAAY;IACZ,YAAY,EAAE,MAAM,CAAC,YAAY;CACpC,CAAC"}
@@ -1,6 +1,9 @@
1
+ import type { WorkId } from '../engine/identity.ts';
1
2
  import type { NonEmptyReadonlyArray } from '../assertion-protocol/assertion-node-shape.ts';
2
3
  import type { PlacementLane, WorkUnitId } from './run-types.ts';
3
4
  import type { WarmLaneAffinityKeyKind } from './worker-pool-warm-lane-affinity.ts';
5
+ export type PlacementAttemptId = `attempt-${number}`;
6
+ export type PlacementWorkerId = `${number}:${number}`;
4
7
  export type PlacementTrace = {
5
8
  readonly entries: readonly PlacementTraceEntry[];
6
9
  };
@@ -9,15 +12,72 @@ export type DynamicWorkUnitId = {
9
12
  readonly parent: WorkUnitId;
10
13
  };
11
14
  export type TraceWorkUnitId = DynamicWorkUnitId | WorkUnitId;
15
+ export type PlacementAttemptReason = {
16
+ readonly kind: 'hedge';
17
+ readonly primaryAttempt: PlacementAttemptId;
18
+ } | {
19
+ readonly kind: 'initial';
20
+ } | {
21
+ readonly kind: 'recovery';
22
+ readonly previousAttempt: PlacementAttemptId;
23
+ };
24
+ type PlacementExecutionInterruptionCause = 'hard-timeout' | 'host-failure' | 'run-stopped';
25
+ type PlacementPolicyInterruptionCause = 'hedge-cancelled' | 'runtime-policy' | 'worker-crash';
26
+ export type PlacementAttemptInterruptionCause = PlacementExecutionInterruptionCause | PlacementPolicyInterruptionCause;
27
+ export type PlacementRecoveryDecision = {
28
+ readonly abandonedWork: NonEmptyReadonlyArray<WorkId>;
29
+ readonly kind: 'abandon';
30
+ } | {
31
+ readonly abandonedWork: NonEmptyReadonlyArray<WorkId>;
32
+ readonly kind: 'partial';
33
+ readonly retryWork: NonEmptyReadonlyArray<WorkId>;
34
+ } | {
35
+ readonly kind: 'retry';
36
+ readonly retryWork: NonEmptyReadonlyArray<WorkId>;
37
+ };
12
38
  export type PlacementTraceEntry = {
13
- readonly activeUnit: TraceWorkUnitId | null;
39
+ readonly activeAttempt: PlacementAttemptId | null;
14
40
  readonly kind: 'worker-crashed';
15
- readonly workerId: string;
41
+ readonly lane: PlacementLane['id'];
42
+ readonly workerId: PlacementWorkerId | null;
43
+ } | {
44
+ readonly attempt: PlacementAttemptId;
45
+ readonly cause: PlacementAttemptInterruptionCause;
46
+ readonly decision: PlacementRecoveryDecision;
47
+ readonly kind: 'recovery-decided';
16
48
  } | {
17
- readonly authoritativeWorkerId: string;
18
- readonly conflictingWorkerId: string;
19
- readonly kind: 'hedged-duplicate-conflict';
49
+ readonly attempt: PlacementAttemptId;
50
+ readonly cause: PlacementAttemptInterruptionCause;
51
+ readonly kind: 'attempt-interrupted';
52
+ } | {
53
+ readonly attempt: PlacementAttemptId;
54
+ readonly durationMicroseconds: number;
55
+ readonly kind: 'attempt-completed';
56
+ } | {
57
+ readonly attempt: PlacementAttemptId;
58
+ readonly kind: 'attempt-assigned';
59
+ readonly lane: PlacementLane['id'];
60
+ readonly reason: PlacementAttemptReason;
20
61
  readonly unit: TraceWorkUnitId;
62
+ readonly work: NonEmptyReadonlyArray<WorkId>;
63
+ } | {
64
+ readonly attempt: PlacementAttemptId;
65
+ readonly kind: 'attempt-started';
66
+ readonly workerId: PlacementWorkerId;
67
+ } | {
68
+ readonly attempts: NonEmptyReadonlyArray<PlacementAttemptId>;
69
+ readonly envelopeId: string;
70
+ readonly kind: 'batch-completed' | 'batch-started';
71
+ readonly lane: PlacementLane['id'];
72
+ } | {
73
+ readonly authoritativeAttempt: PlacementAttemptId;
74
+ readonly conflictingAttempt: PlacementAttemptId;
75
+ readonly kind: 'hedge-conflict';
76
+ } | {
77
+ readonly authoritativeAttempt: PlacementAttemptId;
78
+ readonly discardedAttempt: PlacementAttemptId;
79
+ readonly kind: 'hedge-resolved';
80
+ readonly outcome: 'cancelled' | 'matched';
21
81
  } | {
22
82
  readonly baselineUnit: TraceWorkUnitId;
23
83
  readonly candidateUnits: NonEmptyReadonlyArray<TraceWorkUnitId>;
@@ -30,41 +90,24 @@ export type PlacementTraceEntry = {
30
90
  readonly children: NonEmptyReadonlyArray<DynamicWorkUnitId>;
31
91
  readonly kind: 'unit-split';
32
92
  readonly parent: WorkUnitId;
33
- } | {
34
- readonly durationMicroseconds: number;
35
- readonly kind: 'unit-completed';
36
- readonly unit: TraceWorkUnitId;
37
- readonly workerId: string;
38
- } | {
39
- readonly envelopeId: string;
40
- readonly kind: 'batch-completed';
41
- readonly lane: PlacementLane['id'];
42
- readonly units: NonEmptyReadonlyArray<TraceWorkUnitId>;
43
- readonly workerId: string;
44
- } | {
45
- readonly envelopeId: string;
46
- readonly kind: 'batch-started';
47
- readonly lane: PlacementLane['id'];
48
- readonly units: NonEmptyReadonlyArray<TraceWorkUnitId>;
49
- readonly workerId: string;
50
- } | {
51
- readonly fromLane: PlacementLane['id'];
52
- readonly kind: 'unit-reassigned';
53
- readonly toLane: PlacementLane['id'];
54
- readonly unit: TraceWorkUnitId;
55
- } | {
56
- readonly kind: 'hedged-duplicate-discarded';
57
- readonly unit: TraceWorkUnitId;
58
- readonly workerId: string;
59
- } | {
60
- readonly kind: 'hedged-duplicate-started';
61
- readonly unit: TraceWorkUnitId;
62
- readonly workerId: string;
63
- } | {
64
- readonly kind: 'unit-started';
65
- readonly lane: PlacementLane['id'];
66
- readonly unit: TraceWorkUnitId;
67
- readonly workerId: string;
68
93
  };
94
+ type PlacementAttemptLifecycleEntryKind = 'attempt-assigned' | 'attempt-completed' | 'attempt-interrupted';
95
+ type PlacementAttemptOutcomeEntryKind = 'attempt-started' | 'recovery-decided';
96
+ type PlacementAttemptEntryKind = PlacementAttemptLifecycleEntryKind | PlacementAttemptOutcomeEntryKind;
97
+ export type PlacementDecisionEntry = Exclude<PlacementTraceEntry, {
98
+ readonly kind: PlacementAttemptEntryKind;
99
+ }>;
100
+ export type PlacementTraceRecorder = {
101
+ readonly assignAttempt: (unit: TraceWorkUnitId, work: NonEmptyReadonlyArray<WorkId>, lane: PlacementLane['id'], reason: PlacementAttemptReason) => PlacementAttemptId;
102
+ readonly completeAttempt: (attempt: PlacementAttemptId, durationMicroseconds: number) => void;
103
+ readonly decideRecovery: (attempt: PlacementAttemptId, cause: PlacementAttemptInterruptionCause, decision: PlacementRecoveryDecision) => void;
104
+ readonly entries: () => readonly PlacementTraceEntry[];
105
+ readonly finish: () => PlacementTrace;
106
+ readonly interruptAttempt: (attempt: PlacementAttemptId, cause: PlacementAttemptInterruptionCause) => void;
107
+ readonly recordDecision: (entry: PlacementDecisionEntry) => void;
108
+ readonly startAttempt: (attempt: PlacementAttemptId, workerId: PlacementWorkerId) => void;
109
+ };
110
+ export declare function createPlacementTraceRecorder(): PlacementTraceRecorder;
69
111
  export declare function traceUnitKey(unit: TraceWorkUnitId): string;
112
+ export {};
70
113
  //# sourceMappingURL=placement-trace.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"placement-trace.d.ts","sourceRoot":"","sources":["../../../../source/run/placement-trace.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"placement-trace.d.ts","sourceRoot":"","sources":["../../../../source/run/placement-trace.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,+CAA+C,CAAC;AAC3F,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAChE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,qCAAqC,CAAC;AAEnF,MAAM,MAAM,kBAAkB,GAAG,WAAW,MAAM,EAAE,CAAC;AACrD,MAAM,MAAM,iBAAiB,GAAG,GAAG,MAAM,IAAI,MAAM,EAAE,CAAC;AAEtD,MAAM,MAAM,cAAc,GAAG;IAAE,QAAQ,CAAC,OAAO,EAAE,SAAS,mBAAmB,EAAE,CAAC;CAAE,CAAC;AACnF,MAAM,MAAM,iBAAiB,GAAG;IAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;CAAE,CAAC;AACzF,MAAM,MAAM,eAAe,GAAG,iBAAiB,GAAG,UAAU,CAAC;AAE7D,MAAM,MAAM,sBAAsB,GAAG;IACjC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,cAAc,EAAE,kBAAkB,CAAC;CAC/C,GAAG;IACA,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;CAC5B,GAAG;IACA,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,QAAQ,CAAC,eAAe,EAAE,kBAAkB,CAAC;CAChD,CAAC;AAEF,KAAK,mCAAmC,GAAG,cAAc,GAAG,cAAc,GAAG,aAAa,CAAC;AAC3F,KAAK,gCAAgC,GAAG,iBAAiB,GAAG,gBAAgB,GAAG,cAAc,CAAC;AAC9F,MAAM,MAAM,iCAAiC,GAAG,mCAAmC,GAAG,gCAAgC,CAAC;AAEvH,MAAM,MAAM,yBAAyB,GAAG;IACpC,QAAQ,CAAC,aAAa,EAAE,qBAAqB,CAAC,MAAM,CAAC,CAAC;IACtD,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;CAC5B,GAAG;IACA,QAAQ,CAAC,aAAa,EAAE,qBAAqB,CAAC,MAAM,CAAC,CAAC;IACtD,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,SAAS,EAAE,qBAAqB,CAAC,MAAM,CAAC,CAAC;CACrD,GAAG;IACA,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,SAAS,EAAE,qBAAqB,CAAC,MAAM,CAAC,CAAC;CACrD,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAC9B,QAAQ,CAAC,aAAa,EAAE,kBAAkB,GAAG,IAAI,CAAC;IAClD,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAC;IAChC,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC,IAAI,CAAC,CAAC;IACnC,QAAQ,CAAC,QAAQ,EAAE,iBAAiB,GAAG,IAAI,CAAC;CAC/C,GAAG;IACA,QAAQ,CAAC,OAAO,EAAE,kBAAkB,CAAC;IACrC,QAAQ,CAAC,KAAK,EAAE,iCAAiC,CAAC;IAClD,QAAQ,CAAC,QAAQ,EAAE,yBAAyB,CAAC;IAC7C,QAAQ,CAAC,IAAI,EAAE,kBAAkB,CAAC;CACrC,GAAG;IACA,QAAQ,CAAC,OAAO,EAAE,kBAAkB,CAAC;IACrC,QAAQ,CAAC,KAAK,EAAE,iCAAiC,CAAC;IAClD,QAAQ,CAAC,IAAI,EAAE,qBAAqB,CAAC;CACxC,GAAG;IACA,QAAQ,CAAC,OAAO,EAAE,kBAAkB,CAAC;IACrC,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAC;IACtC,QAAQ,CAAC,IAAI,EAAE,mBAAmB,CAAC;CACtC,GAAG;IACA,QAAQ,CAAC,OAAO,EAAE,kBAAkB,CAAC;IACrC,QAAQ,CAAC,IAAI,EAAE,kBAAkB,CAAC;IAClC,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC,IAAI,CAAC,CAAC;IACnC,QAAQ,CAAC,MAAM,EAAE,sBAAsB,CAAC;IACxC,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC;IAC/B,QAAQ,CAAC,IAAI,EAAE,qBAAqB,CAAC,MAAM,CAAC,CAAC;CAChD,GAAG;IACA,QAAQ,CAAC,OAAO,EAAE,kBAAkB,CAAC;IACrC,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAC;IACjC,QAAQ,CAAC,QAAQ,EAAE,iBAAiB,CAAC;CACxC,GAAG;IACA,QAAQ,CAAC,QAAQ,EAAE,qBAAqB,CAAC,kBAAkB,CAAC,CAAC;IAC7D,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,IAAI,EAAE,iBAAiB,GAAG,eAAe,CAAC;IACnD,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC,IAAI,CAAC,CAAC;CACtC,GAAG;IACA,QAAQ,CAAC,oBAAoB,EAAE,kBAAkB,CAAC;IAClD,QAAQ,CAAC,kBAAkB,EAAE,kBAAkB,CAAC;IAChD,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAC;CACnC,GAAG;IACA,QAAQ,CAAC,oBAAoB,EAAE,kBAAkB,CAAC;IAClD,QAAQ,CAAC,gBAAgB,EAAE,kBAAkB,CAAC;IAC9C,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAC;IAChC,QAAQ,CAAC,OAAO,EAAE,WAAW,GAAG,SAAS,CAAC;CAC7C,GAAG;IACA,QAAQ,CAAC,YAAY,EAAE,eAAe,CAAC;IACvC,QAAQ,CAAC,cAAc,EAAE,qBAAqB,CAAC,eAAe,CAAC,CAAC;IAChE,QAAQ,CAAC,IAAI,EAAE,6BAA6B,CAAC;IAC7C,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC,IAAI,CAAC,CAAC;IACnC,QAAQ,CAAC,eAAe,EAAE,qBAAqB,CAAC,uBAAuB,CAAC,CAAC;IACzE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,YAAY,EAAE,eAAe,CAAC;CAC1C,GAAG;IACA,QAAQ,CAAC,QAAQ,EAAE,qBAAqB,CAAC,iBAAiB,CAAC,CAAC;IAC5D,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;IAC5B,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;CAC/B,CAAC;AAGF,KAAK,kCAAkC,GAAG,kBAAkB,GAAG,mBAAmB,GAAG,qBAAqB,CAAC;AAC3G,KAAK,gCAAgC,GAAG,iBAAiB,GAAG,kBAAkB,CAAC;AAC/E,KAAK,yBAAyB,GAAG,kCAAkC,GAAG,gCAAgC,CAAC;AACvG,MAAM,MAAM,sBAAsB,GAAG,OAAO,CACxC,mBAAmB,EACnB;IAAE,QAAQ,CAAC,IAAI,EAAE,yBAAyB,CAAC;CAAE,CAChD,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IACjC,QAAQ,CAAC,aAAa,EAAE,CACpB,IAAI,EAAE,eAAe,EACrB,IAAI,EAAE,qBAAqB,CAAC,MAAM,CAAC,EACnC,IAAI,EAAE,aAAa,CAAC,IAAI,CAAC,EACzB,MAAM,EAAE,sBAAsB,KAC7B,kBAAkB,CAAC;IACxB,QAAQ,CAAC,eAAe,EAAE,CAAC,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9F,QAAQ,CAAC,cAAc,EAAE,CACrB,OAAO,EAAE,kBAAkB,EAC3B,KAAK,EAAE,iCAAiC,EACxC,QAAQ,EAAE,yBAAyB,KAClC,IAAI,CAAC;IACV,QAAQ,CAAC,OAAO,EAAE,MAAM,SAAS,mBAAmB,EAAE,CAAC;IACvD,QAAQ,CAAC,MAAM,EAAE,MAAM,cAAc,CAAC;IACtC,QAAQ,CAAC,gBAAgB,EAAE,CAAC,OAAO,EAAE,kBAAkB,EAAE,KAAK,EAAE,iCAAiC,KAAK,IAAI,CAAC;IAC3G,QAAQ,CAAC,cAAc,EAAE,CAAC,KAAK,EAAE,sBAAsB,KAAK,IAAI,CAAC;IACjE,QAAQ,CAAC,YAAY,EAAE,CAAC,OAAO,EAAE,kBAAkB,EAAE,QAAQ,EAAE,iBAAiB,KAAK,IAAI,CAAC;CAC7F,CAAC;AAYF,wBAAgB,4BAA4B,IAAI,sBAAsB,CA0ErE;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,eAAe,GAAG,MAAM,CAE1D"}
@@ -1,3 +1,83 @@
1
+ function frozen(value) {
2
+ if (value !== null && typeof value === 'object' && !Object.isFrozen(value)) {
3
+ for (const child of Object.values(value)) {
4
+ frozen(child);
5
+ }
6
+ Object.freeze(value);
7
+ }
8
+ return value;
9
+ }
10
+ export function createPlacementTraceRecorder() {
11
+ const entries = [];
12
+ const states = new Map();
13
+ let nextAttempt = 1;
14
+ let finished = false;
15
+ function writable() {
16
+ if (finished) {
17
+ throw new Error('Placement trace is already finished.');
18
+ }
19
+ }
20
+ function requireState(attempt, expected) {
21
+ if (states.get(attempt) !== expected) {
22
+ throw new Error(`Placement attempt ${attempt} is not ${expected}.`);
23
+ }
24
+ }
25
+ return {
26
+ assignAttempt(unit, work, lane, reason) {
27
+ writable();
28
+ const attempt = `attempt-${nextAttempt}`;
29
+ nextAttempt += 1;
30
+ states.set(attempt, 'assigned');
31
+ entries.push({ attempt, kind: 'attempt-assigned', lane, reason, unit, work });
32
+ return attempt;
33
+ },
34
+ completeAttempt(attempt, durationMicroseconds) {
35
+ writable();
36
+ requireState(attempt, 'started');
37
+ states.set(attempt, 'completed');
38
+ entries.push({ attempt, durationMicroseconds, kind: 'attempt-completed' });
39
+ },
40
+ decideRecovery(attempt, cause, decision) {
41
+ writable();
42
+ requireState(attempt, 'interrupted');
43
+ states.set(attempt, 'recovered');
44
+ entries.push({ attempt, cause, decision, kind: 'recovery-decided' });
45
+ },
46
+ entries() {
47
+ return entries;
48
+ },
49
+ finish() {
50
+ writable();
51
+ const incompleteAttempt = Array.from(states).find(function isIncomplete([, state]) {
52
+ return state !== 'completed' && state !== 'recovered';
53
+ });
54
+ if (incompleteAttempt !== undefined) {
55
+ throw new Error(`Placement attempt ${incompleteAttempt[0]} is not terminal.`);
56
+ }
57
+ finished = true;
58
+ return frozen({ entries: structuredClone(entries) });
59
+ },
60
+ interruptAttempt(attempt, cause) {
61
+ writable();
62
+ const current = states.get(attempt);
63
+ if (current !== 'assigned' && current !== 'started') {
64
+ throw new Error(`Placement attempt ${attempt} cannot be interrupted.`);
65
+ }
66
+ states.set(attempt, 'interrupted');
67
+ entries.push({ attempt, cause, kind: 'attempt-interrupted' });
68
+ },
69
+ recordDecision(entry) {
70
+ writable();
71
+ entries.push(entry);
72
+ },
73
+ startAttempt(attempt, workerId) {
74
+ writable();
75
+ requireState(attempt, 'assigned');
76
+ states.set(attempt, 'started');
77
+ entries.push({ attempt, kind: 'attempt-started', workerId });
78
+ }
79
+ };
80
+ }
1
81
  export function traceUnitKey(unit) {
2
82
  return JSON.stringify(unit);
3
83
  }
@@ -1 +1 @@
1
- {"version":3,"file":"placement-trace.js","sourceRoot":"","sources":["../../../../source/run/placement-trace.ts"],"names":[],"mappings":"AAyEA,MAAM,UAAU,YAAY,CAAC,IAAqB;IAC9C,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AAChC,CAAC"}
1
+ {"version":3,"file":"placement-trace.js","sourceRoot":"","sources":["../../../../source/run/placement-trace.ts"],"names":[],"mappings":"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"}