@overkill-dev/run 0.0.66 → 0.0.68

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 (306) hide show
  1. package/{run/attachment-json.js → attachments/json-snapshot.js} +4 -4
  2. package/attachments/json-snapshot.js.map +1 -0
  3. package/baselines/performance-adapter.d.ts +60 -0
  4. package/baselines/performance-adapter.d.ts.map +1 -0
  5. package/baselines/performance-baseline.d.ts +48 -0
  6. package/baselines/performance-baseline.d.ts.map +1 -0
  7. package/baselines/performance-baseline.js +9 -0
  8. package/baselines/performance-baseline.js.map +1 -0
  9. package/baselines/performance-evaluation.js +88 -0
  10. package/baselines/performance-evaluation.js.map +1 -0
  11. package/baselines/performance-plan.js +33 -0
  12. package/baselines/performance-plan.js.map +1 -0
  13. package/baselines/performance-report.js +57 -0
  14. package/baselines/performance-report.js.map +1 -0
  15. package/baselines/performance-schema.js +12 -0
  16. package/baselines/performance-schema.js.map +1 -0
  17. package/baselines/performance-store.js +134 -0
  18. package/baselines/performance-store.js.map +1 -0
  19. package/baselines/performance-workflow.js +180 -0
  20. package/baselines/performance-workflow.js.map +1 -0
  21. package/bench/calibration-schema.js +12 -0
  22. package/bench/calibration-schema.js.map +1 -0
  23. package/canonical-identity.js +54 -0
  24. package/canonical-identity.js.map +1 -0
  25. package/config/benchmark-execution.js +30 -0
  26. package/config/benchmark-execution.js.map +1 -0
  27. package/config/config-error.d.ts +4 -0
  28. package/config/config-error.d.ts.map +1 -0
  29. package/config/config-error.js +7 -0
  30. package/config/config-error.js.map +1 -0
  31. package/config/config.d.ts +57 -0
  32. package/config/config.d.ts.map +1 -0
  33. package/{run/run-config.js → config/config.js} +55 -19
  34. package/config/config.js.map +1 -0
  35. package/{run/coverage-config-schema.d.ts → config/coverage-schema.d.ts} +7 -7
  36. package/config/coverage-schema.d.ts.map +1 -0
  37. package/{run/coverage-config-schema.js → config/coverage-schema.js} +1 -1
  38. package/config/coverage-schema.js.map +1 -0
  39. package/{run/run-config-defaults.js → config/defaults.js} +6 -1
  40. package/config/defaults.js.map +1 -0
  41. package/{run/run-execution-config.d.ts → config/execution.d.ts} +5 -7
  42. package/config/execution.d.ts.map +1 -0
  43. package/config/host-process.js +41 -0
  44. package/config/host-process.js.map +1 -0
  45. package/config/performance-baselines.js +24 -0
  46. package/config/performance-baselines.js.map +1 -0
  47. package/config/profile-file-discovery.js +88 -0
  48. package/config/profile-file-discovery.js.map +1 -0
  49. package/{run/profile-config-normalization.js → config/profile-normalization.js} +13 -13
  50. package/config/profile-normalization.js.map +1 -0
  51. package/{run/profile-file-glob.js → config/profile-patterns.js} +6 -10
  52. package/config/profile-patterns.js.map +1 -0
  53. package/{run/run-config-schema.d.ts → config/schema.d.ts} +210 -28
  54. package/config/schema.d.ts.map +1 -0
  55. package/{run/run-config-schema.js → config/schema.js} +40 -12
  56. package/config/schema.js.map +1 -0
  57. package/config/snapshot.js +205 -0
  58. package/config/snapshot.js.map +1 -0
  59. package/config/types.d.ts +160 -0
  60. package/config/types.d.ts.map +1 -0
  61. package/config/validation.js +93 -0
  62. package/config/validation.js.map +1 -0
  63. package/{run/work-distribution-config.js → config/work-distribution.js} +3 -3
  64. package/config/work-distribution.js.map +1 -0
  65. package/{run/run-identity-schema.js → engine/identity-schema.js} +1 -1
  66. package/engine/identity-schema.js.map +1 -0
  67. package/file-store.js +48 -0
  68. package/file-store.js.map +1 -0
  69. package/package.json +23 -9
  70. package/packages/run/benchmark-calibration.entry-point.d.ts +22 -0
  71. package/packages/run/benchmark-calibration.entry-point.d.ts.map +1 -0
  72. package/packages/run/benchmark-calibration.entry-point.js +129 -0
  73. package/packages/run/benchmark-calibration.entry-point.js.map +1 -0
  74. package/packages/run/command-line.entry-point.d.ts +5 -3
  75. package/packages/run/command-line.entry-point.d.ts.map +1 -1
  76. package/packages/run/command-line.entry-point.js +28 -7
  77. package/packages/run/command-line.entry-point.js.map +1 -1
  78. package/packages/run/config.entry-point.d.ts +8 -6
  79. package/packages/run/config.entry-point.d.ts.map +1 -1
  80. package/packages/run/config.entry-point.js +4 -4
  81. package/packages/run/config.entry-point.js.map +1 -1
  82. package/packages/run/run.entry-point.d.ts +6 -4
  83. package/packages/run/run.entry-point.d.ts.map +1 -1
  84. package/packages/run/run.entry-point.js +3 -3
  85. package/packages/run/run.entry-point.js.map +1 -1
  86. package/readme.md +64 -13
  87. package/run/assertion-result-schema.js +1 -1
  88. package/run/assertion-result-schema.js.map +1 -1
  89. package/run/attachment-eligibility.js +1 -1
  90. package/run/attachment-eligibility.js.map +1 -1
  91. package/run/attachment-execution.js +2 -2
  92. package/run/attachment-execution.js.map +1 -1
  93. package/run/attachment-record.js +2 -2
  94. package/run/attachment-record.js.map +1 -1
  95. package/run/attachment-results.js.map +1 -1
  96. package/run/attachment-retention.js +2 -2
  97. package/run/attachment-retention.js.map +1 -1
  98. package/run/benchmark-baseline-commands.js +70 -0
  99. package/run/benchmark-baseline-commands.js.map +1 -0
  100. package/run/benchmark-baseline-finalization.js +67 -0
  101. package/run/benchmark-baseline-finalization.js.map +1 -0
  102. package/run/benchmark-baseline-operations.js +53 -0
  103. package/run/benchmark-baseline-operations.js.map +1 -0
  104. package/run/benchmark-baseline-run.js +58 -0
  105. package/run/benchmark-baseline-run.js.map +1 -0
  106. package/run/benchmark-baseline-session.js +72 -0
  107. package/run/benchmark-baseline-session.js.map +1 -0
  108. package/run/benchmark-calibration.entry-point.js +3 -0
  109. package/run/benchmark-calibration.entry-point.js.map +1 -0
  110. package/run/benchmark-calibration.js +41 -0
  111. package/run/benchmark-calibration.js.map +1 -0
  112. package/run/benchmark-command-policy.d.ts +8 -0
  113. package/run/benchmark-command-policy.d.ts.map +1 -0
  114. package/run/benchmark-command-policy.js +37 -0
  115. package/run/benchmark-command-policy.js.map +1 -0
  116. package/run/benchmark-commands.d.ts +4 -0
  117. package/run/benchmark-commands.d.ts.map +1 -0
  118. package/run/benchmark-commands.js +61 -0
  119. package/run/benchmark-commands.js.map +1 -0
  120. package/run/child-process-outbox.js +36 -0
  121. package/run/child-process-outbox.js.map +1 -0
  122. package/run/child-process-roles.js +1 -0
  123. package/run/child-process-roles.js.map +1 -1
  124. package/run/child-process.entry-point.js +5 -1
  125. package/run/child-process.entry-point.js.map +1 -1
  126. package/run/collected-run-plan-schema.js +1 -1
  127. package/run/collected-run-plan-schema.js.map +1 -1
  128. package/run/command-line-command-namespace.d.ts.map +1 -1
  129. package/run/command-line-command-namespace.js.map +1 -1
  130. package/run/command-line-command.d.ts +43 -18
  131. package/run/command-line-command.d.ts.map +1 -1
  132. package/run/command-line-command.js +3 -2
  133. package/run/command-line-command.js.map +1 -1
  134. package/run/command-line-config.d.ts +5 -0
  135. package/run/command-line-config.d.ts.map +1 -0
  136. package/run/command-line-config.js +51 -0
  137. package/run/command-line-config.js.map +1 -0
  138. package/run/command-line-execution.js +82 -0
  139. package/run/command-line-execution.js.map +1 -0
  140. package/run/command-line-runner.d.ts +4 -5
  141. package/run/command-line-runner.d.ts.map +1 -1
  142. package/run/command-line-runner.js +6 -124
  143. package/run/command-line-runner.js.map +1 -1
  144. package/run/command-line-unimplemented-commands.js +1 -8
  145. package/run/command-line-unimplemented-commands.js.map +1 -1
  146. package/run/coverage-loaded-sources.js +8 -9
  147. package/run/coverage-loaded-sources.js.map +1 -1
  148. package/run/coverage-method-ranges.js +100 -0
  149. package/run/coverage-method-ranges.js.map +1 -0
  150. package/run/coverage-paths.js.map +1 -1
  151. package/run/coverage-reporting.js.map +1 -1
  152. package/run/coverage-runtime-source.js +66 -28
  153. package/run/coverage-runtime-source.js.map +1 -1
  154. package/run/coverage-session.js.map +1 -1
  155. package/run/coverage-source-map.js +2 -3
  156. package/run/coverage-source-map.js.map +1 -1
  157. package/run/coverage-source-selection.js +9 -7
  158. package/run/coverage-source-selection.js.map +1 -1
  159. package/run/coverage-tokens.js +26 -0
  160. package/run/coverage-tokens.js.map +1 -0
  161. package/run/duration-history-schema.js +1 -1
  162. package/run/duration-history-schema.js.map +1 -1
  163. package/run/execution-plan-resolution.js +7 -0
  164. package/run/execution-plan-resolution.js.map +1 -1
  165. package/run/node-command-line-runner.d.ts +1 -1
  166. package/run/node-command-line-runner.d.ts.map +1 -1
  167. package/run/node-command-line-runner.js +18 -10
  168. package/run/node-command-line-runner.js.map +1 -1
  169. package/run/node-run-execution.js +2 -2
  170. package/run/node-run-execution.js.map +1 -1
  171. package/run/reporter-event-schema.js +1 -1
  172. package/run/reporter-event-schema.js.map +1 -1
  173. package/run/request-snapshot.js +40 -0
  174. package/run/request-snapshot.js.map +1 -0
  175. package/run/run-artifact-id-schema.js +1 -1
  176. package/run/run-artifact-id-schema.js.map +1 -1
  177. package/run/run-artifact-schema.js +1 -1
  178. package/run/run-artifact-schema.js.map +1 -1
  179. package/run/run-collected-planning.js +13 -7
  180. package/run/run-collected-planning.js.map +1 -1
  181. package/run/run-collected-resolution.js +1 -0
  182. package/run/run-collected-resolution.js.map +1 -1
  183. package/run/run-collection-error-result.js +3 -2
  184. package/run/run-collection-error-result.js.map +1 -1
  185. package/run/run-command-schema.js +1 -1
  186. package/run/run-command-schema.js.map +1 -1
  187. package/run/run-coverage.js.map +1 -1
  188. package/run/run-discovery-types.d.ts +2 -2
  189. package/run/run-discovery-types.d.ts.map +1 -1
  190. package/run/run-discovery.js +14 -96
  191. package/run/run-discovery.js.map +1 -1
  192. package/run/run-engine-primitives.d.ts.map +1 -1
  193. package/run/run-errors.d.ts +5 -7
  194. package/run/run-errors.d.ts.map +1 -1
  195. package/run/run-errors.js +0 -6
  196. package/run/run-errors.js.map +1 -1
  197. package/run/run-execution.js +54 -0
  198. package/run/run-execution.js.map +1 -0
  199. package/run/run-facts.js +6 -70
  200. package/run/run-facts.js.map +1 -1
  201. package/run/run-host-process.js +1 -40
  202. package/run/run-host-process.js.map +1 -1
  203. package/run/run-if-main-options.js.map +1 -1
  204. package/run/run-if-main-profile.d.ts +8 -10
  205. package/run/run-if-main-profile.d.ts.map +1 -1
  206. package/run/run-if-main-profile.js +25 -112
  207. package/run/run-if-main-profile.js.map +1 -1
  208. package/run/run-if-main.d.ts.map +1 -1
  209. package/run/run-if-main.js.map +1 -1
  210. package/run/run-in-process-execution.js +2 -0
  211. package/run/run-in-process-execution.js.map +1 -1
  212. package/run/run-input-resolution.js +32 -10
  213. package/run/run-input-resolution.js.map +1 -1
  214. package/run/run-isolated-command.js +3 -3
  215. package/run/run-isolated-command.js.map +1 -1
  216. package/run/run-isolated-process.js +24 -9
  217. package/run/run-isolated-process.js.map +1 -1
  218. package/run/run-local-command.js +12 -14
  219. package/run/run-local-command.js.map +1 -1
  220. package/run/run-local-execution.js.map +1 -1
  221. package/run/run-local-resolution.js +6 -5
  222. package/run/run-local-resolution.js.map +1 -1
  223. package/run/run-local-test-plan.js.map +1 -1
  224. package/run/run-orchestrator-dependencies.d.ts +4 -4
  225. package/run/run-orchestrator-dependencies.d.ts.map +1 -1
  226. package/run/run-ordering.js.map +1 -1
  227. package/run/run-process-engine.js.map +1 -1
  228. package/run/run-profile-facts.js +65 -0
  229. package/run/run-profile-facts.js.map +1 -0
  230. package/run/run-record-types.d.ts +5 -4
  231. package/run/run-record-types.d.ts.map +1 -1
  232. package/run/run-reporter-resolution.js +4 -1
  233. package/run/run-reporter-resolution.js.map +1 -1
  234. package/run/run-result-reporting.js.map +1 -1
  235. package/run/run-result-schema.js +2 -1
  236. package/run/run-result-schema.js.map +1 -1
  237. package/run/run-selection.js.map +1 -1
  238. package/run/run-sharding.js +3 -55
  239. package/run/run-sharding.js.map +1 -1
  240. package/run/run-supervised-finalization.js +2 -1
  241. package/run/run-supervised-finalization.js.map +1 -1
  242. package/run/run-supervised-process.js +6 -4
  243. package/run/run-supervised-process.js.map +1 -1
  244. package/run/run-support.js +1 -222
  245. package/run/run-support.js.map +1 -1
  246. package/run/run-types.d.ts +63 -168
  247. package/run/run-types.d.ts.map +1 -1
  248. package/run/run-types.js.map +1 -1
  249. package/run/run-validation.js +11 -63
  250. package/run/run-validation.js.map +1 -1
  251. package/run/run.d.ts.map +1 -1
  252. package/run/run.js +51 -21
  253. package/run/run.js.map +1 -1
  254. package/run/simulation-witness.js +2 -2
  255. package/run/simulation-witness.js.map +1 -1
  256. package/run/supervised-child-process.js +1 -1
  257. package/run/supervised-child-process.js.map +1 -1
  258. package/run/supervised-child.entry-point.js +9 -6
  259. package/run/supervised-child.entry-point.js.map +1 -1
  260. package/run/supervised-child.js +1 -1
  261. package/run/supervised-child.js.map +1 -1
  262. package/run/supervised-protocol-schema.js +1 -1
  263. package/run/supervised-protocol-schema.js.map +1 -1
  264. package/run/supervised-protocol.js.map +1 -1
  265. package/run/supervised-run-resource-policy.js.map +1 -1
  266. package/run/supervised-run-state.js.map +1 -1
  267. package/run/test-profile.js +21 -0
  268. package/run/test-profile.js.map +1 -0
  269. package/run/work-unit-identity.js.map +1 -1
  270. package/run/work-unit-planning.js +6 -6
  271. package/run/work-unit-planning.js.map +1 -1
  272. package/run/work-unit-resource-constraints.js +1 -1
  273. package/run/work-unit-resource-constraints.js.map +1 -1
  274. package/run/worker-pool-host-protocol-schema.js +2 -2
  275. package/run/worker-pool-host-protocol-schema.js.map +1 -1
  276. package/run/worker-pool-host.entry-point.js +7 -4
  277. package/run/worker-pool-host.entry-point.js.map +1 -1
  278. package/run/worker-pool-lanes.js.map +1 -1
  279. package/run/worker-pool-lifecycle-lanes.js.map +1 -1
  280. package/run/worker-pool-placement-planning.js.map +1 -1
  281. package/run/worker-pool-protocol.js.map +1 -1
  282. package/run/worker-pool-results.js +2 -2
  283. package/run/worker-pool-results.js.map +1 -1
  284. package/run/worker-pool-routing.js.map +1 -1
  285. package/run/worker-pool-run.js +5 -4
  286. package/run/worker-pool-run.js.map +1 -1
  287. package/run/worker-pool-runtime.js.map +1 -1
  288. package/run/worker-pool-task-schema.js +1 -1
  289. package/run/worker-pool-task-schema.js.map +1 -1
  290. package/sbom.cdx.json +26 -43
  291. package/run/attachment-json.js.map +0 -1
  292. package/run/coverage-config-schema.d.ts.map +0 -1
  293. package/run/coverage-config-schema.js.map +0 -1
  294. package/run/node-runtime-state-store.js +0 -38
  295. package/run/node-runtime-state-store.js.map +0 -1
  296. package/run/profile-config-normalization.js.map +0 -1
  297. package/run/profile-file-glob.js.map +0 -1
  298. package/run/run-config-defaults.js.map +0 -1
  299. package/run/run-config-schema.d.ts.map +0 -1
  300. package/run/run-config-schema.js.map +0 -1
  301. package/run/run-config.d.ts +0 -62
  302. package/run/run-config.d.ts.map +0 -1
  303. package/run/run-config.js.map +0 -1
  304. package/run/run-execution-config.d.ts.map +0 -1
  305. package/run/run-identity-schema.js.map +0 -1
  306. package/run/work-distribution-config.js.map +0 -1
@@ -0,0 +1,205 @@
1
+ function copyLoaderConfig(loader) {
2
+ return {
3
+ sourceMaps: loader.sourceMaps,
4
+ stripMode: loader.stripMode
5
+ };
6
+ }
7
+ export function copyResourceBudgets(resourceBudgets) {
8
+ return {
9
+ activeResourceCount: resourceBudgets.activeResourceCount,
10
+ javaScriptEngineHeapBytes: resourceBudgets.javaScriptEngineHeapBytes,
11
+ residentSetBytes: resourceBudgets.residentSetBytes,
12
+ residentSetGrowthBytesPerSecond: resourceBudgets.residentSetGrowthBytesPerSecond
13
+ };
14
+ }
15
+ function copyResourceUsagePolicy(policy) {
16
+ return {
17
+ budgets: copyResourceBudgets(policy.budgets),
18
+ measure: policy.measure,
19
+ samplingIntervalMilliseconds: policy.samplingIntervalMilliseconds
20
+ };
21
+ }
22
+ function copyTimingProfilePolicy(policy) {
23
+ return {
24
+ collection: policy.collection
25
+ };
26
+ }
27
+ function copyTimeoutPolicy(policy) {
28
+ return {
29
+ collectionMilliseconds: policy.collectionMilliseconds,
30
+ hardMilliseconds: policy.hardMilliseconds,
31
+ softMilliseconds: policy.softMilliseconds
32
+ };
33
+ }
34
+ function copyMicrotestExecution(execution) {
35
+ return {
36
+ maxConcurrency: execution.maxConcurrency,
37
+ processModel: execution.processModel,
38
+ scheduling: execution.scheduling
39
+ };
40
+ }
41
+ function copyWorkGroup(group) {
42
+ return {
43
+ fileSets: [group.fileSets[0], ...group.fileSets.slice(1)],
44
+ granularity: group.granularity,
45
+ name: group.name,
46
+ order: group.order,
47
+ scheduling: group.scheduling,
48
+ workerLifecycle: group.workerLifecycle
49
+ };
50
+ }
51
+ function copyWorkDistribution(distribution) {
52
+ if (distribution.mode !== 'group') {
53
+ return { mode: distribution.mode };
54
+ }
55
+ return {
56
+ groups: [
57
+ copyWorkGroup(distribution.groups[0]),
58
+ ...distribution.groups.slice(1).map(copyWorkGroup)
59
+ ],
60
+ mode: 'group',
61
+ unmatched: distribution.unmatched
62
+ };
63
+ }
64
+ function copyHostProcess(hostProcess) {
65
+ if (hostProcess.kind === 'direct') {
66
+ return { kind: 'direct' };
67
+ }
68
+ return {
69
+ kind: 'child',
70
+ nodeArguments: Array.from(hostProcess.nodeArguments)
71
+ };
72
+ }
73
+ function copyIntegrationExecution(execution) {
74
+ if (execution.processModel === 'worker-pool') {
75
+ return {
76
+ assignmentPolicy: execution.assignmentPolicy,
77
+ dispatchPolicy: execution.dispatchPolicy,
78
+ hedging: { ...execution.hedging },
79
+ hostProcess: copyHostProcess(execution.hostProcess),
80
+ maxConcurrency: execution.maxConcurrency,
81
+ maxWorkers: execution.maxWorkers,
82
+ processModel: execution.processModel,
83
+ scheduling: execution.scheduling,
84
+ workDistribution: copyWorkDistribution(execution.workDistribution),
85
+ workerLifecycle: execution.workerLifecycle
86
+ };
87
+ }
88
+ return {
89
+ maxConcurrency: execution.maxConcurrency,
90
+ processModel: execution.processModel,
91
+ scheduling: execution.scheduling
92
+ };
93
+ }
94
+ function hasProfileFileSets(files) {
95
+ return files.sets !== undefined;
96
+ }
97
+ function copyProfileFiles(files) {
98
+ if (hasProfileFileSets(files)) {
99
+ return {
100
+ sets: Object.fromEntries(Object.entries(files.sets).map(function copyProfileFileSet([name, set]) {
101
+ return [
102
+ name,
103
+ {
104
+ exclude: Array.from(set.exclude),
105
+ include: [set.include[0], ...set.include.slice(1)]
106
+ }
107
+ ];
108
+ }))
109
+ };
110
+ }
111
+ return {
112
+ exclude: Array.from(files.exclude),
113
+ include: [files.include[0], ...files.include.slice(1)]
114
+ };
115
+ }
116
+ function copyCoveragePolicy(policy) {
117
+ return {
118
+ outputDirectory: policy.outputDirectory,
119
+ outputs: Array.from(policy.outputs),
120
+ sources: policy.sources.mode === 'loaded'
121
+ ? { exclude: Array.from(policy.sources.exclude), mode: 'loaded' }
122
+ : {
123
+ exclude: Array.from(policy.sources.exclude),
124
+ include: [policy.sources.include[0], ...policy.sources.include.slice(1)],
125
+ mode: 'all'
126
+ },
127
+ thresholds: {
128
+ branches: policy.thresholds.branches,
129
+ functions: policy.thresholds.functions,
130
+ lines: policy.thresholds.lines
131
+ }
132
+ };
133
+ }
134
+ function copyIntegrationFiles(files) {
135
+ if (files === null) {
136
+ throw new Error('Integration profiles require files.');
137
+ }
138
+ return copyProfileFiles(files);
139
+ }
140
+ function copyReporters(reporters) {
141
+ return reporters === null ? null : Array.from(reporters);
142
+ }
143
+ function copyBenchmarkExecution(execution) {
144
+ return execution.processModel === 'worker-pool'
145
+ ? {
146
+ ...execution,
147
+ hedging: { mode: 'off' },
148
+ hostProcess: copyHostProcess(execution.hostProcess),
149
+ workDistribution: copyWorkDistribution(execution.workDistribution)
150
+ }
151
+ : { ...execution };
152
+ }
153
+ function copyProfileConfig(profile) {
154
+ if (profile.testFamily === 'benchmark') {
155
+ return {
156
+ attachments: { ...profile.attachments },
157
+ baselines: { adapters: Array.from(profile.baselines.adapters), directory: profile.baselines.directory },
158
+ execution: copyBenchmarkExecution(profile.execution),
159
+ files: copyProfileFiles(profile.files),
160
+ reporters: copyReporters(profile.reporters),
161
+ resourceUsage: copyResourceUsagePolicy(profile.resourceUsage),
162
+ testFamily: profile.testFamily,
163
+ timings: copyTimingProfilePolicy(profile.timings),
164
+ timeouts: copyTimeoutPolicy(profile.timeouts)
165
+ };
166
+ }
167
+ if (profile.testFamily === 'integration') {
168
+ return {
169
+ attachments: { ...profile.attachments },
170
+ execution: copyIntegrationExecution(profile.execution),
171
+ files: copyIntegrationFiles(profile.files),
172
+ reporters: copyReporters(profile.reporters),
173
+ retries: profile.retries === null ? null : { ...profile.retries },
174
+ resourceUsage: copyResourceUsagePolicy(profile.resourceUsage),
175
+ testFamily: profile.testFamily,
176
+ timings: copyTimingProfilePolicy(profile.timings),
177
+ timeouts: copyTimeoutPolicy(profile.timeouts)
178
+ };
179
+ }
180
+ return {
181
+ coverage: copyCoveragePolicy(profile.coverage),
182
+ execution: copyMicrotestExecution(profile.execution),
183
+ files: profile.files === null ? null : copyProfileFiles(profile.files),
184
+ reporters: copyReporters(profile.reporters),
185
+ resourceUsage: copyResourceUsagePolicy(profile.resourceUsage),
186
+ testFamily: profile.testFamily,
187
+ timings: copyTimingProfilePolicy(profile.timings),
188
+ timeouts: copyTimeoutPolicy(profile.timeouts)
189
+ };
190
+ }
191
+ function copyProfilesConfig(profiles) {
192
+ return Object.fromEntries(Object.entries(profiles).map(function copyProfileEntry([name, profile]) {
193
+ return [name, copyProfileConfig(profile)];
194
+ }));
195
+ }
196
+ export function copyConfig(config) {
197
+ return {
198
+ loader: copyLoaderConfig(config.loader),
199
+ outputRenderer: config.outputRenderer,
200
+ profiles: copyProfilesConfig(config.profiles),
201
+ reporters: copyReporters(config.reporters),
202
+ runtimeStateDir: config.runtimeStateDir
203
+ };
204
+ }
205
+ //# sourceMappingURL=snapshot.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"snapshot.js","sourceRoot":"","sources":["../../../../source/config/snapshot.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,160 @@
1
+ import type { NonEmptyReadonlyArray } from '../assertion-protocol/assertion-node-shape.ts';
2
+ import type { BenchmarkBaselinePolicy } from '../baselines/performance-adapter.ts';
3
+ import type { AttachmentLimits } from '../engine/runtime-attachment.ts';
4
+ import type { DefinedReporter } from '../engine/reporter.ts';
5
+ import type { DefinedOutputRenderer } from '../engine/reporter-output.ts';
6
+ import type { IntegrationRetryPolicy as IntegrationRetryPolicyDefinition, IntegrationExecutionShape, MicrotestExecutionShape } from './execution.ts';
7
+ export type LoaderConfig = {
8
+ readonly sourceMaps: boolean;
9
+ readonly stripMode: 'strip-only';
10
+ };
11
+ export type ResourceBudgets = {
12
+ readonly activeResourceCount: number | null;
13
+ readonly javaScriptEngineHeapBytes: number | null;
14
+ readonly residentSetBytes: number | null;
15
+ readonly residentSetGrowthBytesPerSecond: number | null;
16
+ };
17
+ export type TimingCollectionMode = 'precise' | 'summary';
18
+ export type TimingCollectionOverride = 'precise' | 'profile-default';
19
+ export type TimingProfilePolicy = {
20
+ readonly collection: TimingCollectionMode;
21
+ };
22
+ export type CoverageOutput = 'html' | 'json' | 'lcov' | 'text' | 'v8';
23
+ export type CoverageSourcePolicy = {
24
+ readonly exclude: readonly string[];
25
+ readonly include: NonEmptyReadonlyArray<string>;
26
+ readonly mode: 'all';
27
+ } | {
28
+ readonly exclude: readonly string[];
29
+ readonly mode: 'loaded';
30
+ };
31
+ export type CoverageThresholds = {
32
+ readonly branches: number | null;
33
+ readonly functions: number | null;
34
+ readonly lines: number | null;
35
+ };
36
+ export type CoveragePolicy = {
37
+ readonly outputDirectory: string | null;
38
+ readonly outputs: readonly CoverageOutput[];
39
+ readonly sources: CoverageSourcePolicy;
40
+ readonly thresholds: CoverageThresholds;
41
+ };
42
+ export type ProcessModel = 'in-process' | 'supervised-process' | 'worker-pool';
43
+ export type MicrotestProcessModel = Exclude<ProcessModel, 'worker-pool'>;
44
+ export type MaxConcurrency = number | 'unlimited';
45
+ export type Scheduling = 'concurrent' | 'serial';
46
+ export type WorkerLifecycle = 'fresh-worker-per-unit' | 'reuse';
47
+ export type WorkerPoolAssignmentPolicy = 'case-count-balanced' | 'duration-history-balanced' | 'stable';
48
+ export type WorkerPoolDispatchPolicy = 'dynamic-lease' | 'static-assignment';
49
+ export type WorkerPoolHedgingPolicy = {
50
+ readonly durationMultiplier: number;
51
+ readonly minimumDelayMilliseconds: number;
52
+ readonly mode: 'on';
53
+ } | {
54
+ readonly mode: 'off';
55
+ };
56
+ export type WorkGroupGranularity = 'case' | 'file' | 'group';
57
+ export type WorkGroupOrder = RunOrder | 'profile-default';
58
+ export type WorkGroupScheduling = Scheduling | 'profile-default';
59
+ export type WorkGroupWorkerLifecycle = WorkerLifecycle | 'profile-default';
60
+ export type HostProcess = {
61
+ readonly kind: 'child';
62
+ readonly nodeArguments: readonly string[];
63
+ } | {
64
+ readonly kind: 'direct';
65
+ };
66
+ type FileWorkDistribution = {
67
+ readonly mode: 'file';
68
+ };
69
+ type CaseWorkDistribution = {
70
+ readonly mode: 'case';
71
+ };
72
+ export type WorkGroup = {
73
+ readonly fileSets: NonEmptyReadonlyArray<string>;
74
+ readonly granularity: WorkGroupGranularity;
75
+ readonly name: string;
76
+ readonly order: WorkGroupOrder;
77
+ readonly scheduling: WorkGroupScheduling;
78
+ readonly workerLifecycle: WorkGroupWorkerLifecycle;
79
+ };
80
+ type GroupWorkDistribution = {
81
+ readonly groups: NonEmptyReadonlyArray<WorkGroup>;
82
+ readonly mode: 'group';
83
+ readonly unmatched: 'file' | 'reject';
84
+ };
85
+ export type WorkDistribution = CaseWorkDistribution | FileWorkDistribution | GroupWorkDistribution;
86
+ export type MicrotestExecution = MicrotestExecutionShape<MaxConcurrency, MicrotestProcessModel, Scheduling>;
87
+ export type IntegrationExecution = IntegrationExecutionShape<WorkerPoolAssignmentPolicy, WorkerPoolDispatchPolicy, WorkerPoolHedgingPolicy, HostProcess, MaxConcurrency, Scheduling, WorkerLifecycle, WorkDistribution>;
88
+ export type ResourceUsagePolicy = {
89
+ readonly budgets: ResourceBudgets;
90
+ readonly measure: boolean;
91
+ readonly samplingIntervalMilliseconds: number;
92
+ };
93
+ export type TimeoutPolicy = {
94
+ readonly collectionMilliseconds: number;
95
+ readonly hardMilliseconds: number;
96
+ readonly softMilliseconds: number;
97
+ };
98
+ type ProfileFilePatterns = {
99
+ readonly exclude: readonly string[];
100
+ readonly include: NonEmptyReadonlyArray<string>;
101
+ readonly sets?: never;
102
+ };
103
+ export type ProfileFileSet = {
104
+ readonly exclude: readonly string[];
105
+ readonly include: NonEmptyReadonlyArray<string>;
106
+ };
107
+ export type ProfileFiles = ProfileFilePatterns | {
108
+ readonly exclude?: never;
109
+ readonly include?: never;
110
+ readonly sets: Readonly<Record<string, ProfileFileSet>>;
111
+ };
112
+ export type MicrotestProfileConfig = {
113
+ readonly coverage: CoveragePolicy;
114
+ readonly execution: MicrotestExecution;
115
+ readonly files: ProfileFiles | null;
116
+ readonly reporters: readonly DefinedReporter[] | null;
117
+ readonly resourceUsage: ResourceUsagePolicy;
118
+ readonly testFamily: 'microtest';
119
+ readonly timings: TimingProfilePolicy;
120
+ readonly timeouts: TimeoutPolicy;
121
+ };
122
+ export type IntegrationProfileConfig = {
123
+ readonly attachments: AttachmentLimits;
124
+ readonly retries: IntegrationRetryPolicy | null;
125
+ readonly execution: IntegrationExecution;
126
+ readonly files: ProfileFiles;
127
+ readonly reporters: readonly DefinedReporter[] | null;
128
+ readonly resourceUsage: ResourceUsagePolicy;
129
+ readonly testFamily: 'integration';
130
+ readonly timings: TimingProfilePolicy;
131
+ readonly timeouts: TimeoutPolicy;
132
+ };
133
+ export type BenchmarkExecution = IntegrationExecutionShape<WorkerPoolAssignmentPolicy, WorkerPoolDispatchPolicy, Extract<WorkerPoolHedgingPolicy, {
134
+ readonly mode: 'off';
135
+ }>, HostProcess, 1, 'serial', WorkerLifecycle, WorkDistribution>;
136
+ export type BenchmarkProfileConfig = {
137
+ readonly baselines: BenchmarkBaselinePolicy;
138
+ readonly attachments: AttachmentLimits;
139
+ readonly execution: BenchmarkExecution;
140
+ readonly files: ProfileFiles;
141
+ readonly reporters: readonly DefinedReporter[] | null;
142
+ readonly resourceUsage: ResourceUsagePolicy;
143
+ readonly testFamily: 'benchmark';
144
+ readonly timings: TimingProfilePolicy;
145
+ readonly timeouts: TimeoutPolicy;
146
+ };
147
+ export type TestProfileConfig = IntegrationProfileConfig | MicrotestProfileConfig;
148
+ export type ProfileConfig = BenchmarkProfileConfig | TestProfileConfig;
149
+ export type ProfilesConfig = Readonly<Record<string, ProfileConfig>>;
150
+ export type NormalizedConfig = {
151
+ readonly loader: LoaderConfig;
152
+ readonly outputRenderer: DefinedOutputRenderer;
153
+ readonly profiles: ProfilesConfig;
154
+ readonly reporters: readonly DefinedReporter[] | null;
155
+ readonly runtimeStateDir: string;
156
+ };
157
+ export type RunOrder = 'lexical' | 'plan' | 'seeded';
158
+ export type IntegrationRetryPolicy = IntegrationRetryPolicyDefinition;
159
+ export {};
160
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../source/config/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,93 @@
1
+ import { ConfigError } from "./config-error.js";
2
+ import { performanceBaselinePolicySchema } from "./performance-baselines.js";
3
+ import { validateHostProcess } from "./host-process.js";
4
+ import { assertValidProfileName, normalizeRequiredProfileFiles } from "./profile-normalization.js";
5
+ import { validateBenchmarkExecution } from "./benchmark-execution.js";
6
+ function validatePositiveSafeInteger(value, label) {
7
+ if (value !== null && (!Number.isSafeInteger(value) || value <= 0)) {
8
+ throw new ConfigError(`${label} must be a positive safe integer.`);
9
+ }
10
+ }
11
+ function validateResourceBudgets(resourceBudgets) {
12
+ validatePositiveSafeInteger(resourceBudgets.activeResourceCount, 'Active resource count budget');
13
+ validatePositiveSafeInteger(resourceBudgets.javaScriptEngineHeapBytes, 'JavaScript engine heap budget');
14
+ validatePositiveSafeInteger(resourceBudgets.residentSetBytes, 'Resident set budget');
15
+ validatePositiveSafeInteger(resourceBudgets.residentSetGrowthBytesPerSecond, 'Resident set growth budget');
16
+ }
17
+ function validateSamplingInterval(value) {
18
+ validatePositiveSafeInteger(value, 'Resource usage sampling interval');
19
+ }
20
+ function validateTimeoutPolicy(policy) {
21
+ validatePositiveSafeInteger(policy.collectionMilliseconds, 'Collection timeout');
22
+ validatePositiveSafeInteger(policy.softMilliseconds, 'Soft timeout');
23
+ validatePositiveSafeInteger(policy.hardMilliseconds, 'Hard timeout');
24
+ if (policy.softMilliseconds > policy.hardMilliseconds) {
25
+ throw new ConfigError('Soft timeout must not exceed hard timeout.');
26
+ }
27
+ }
28
+ function hasResourceBudgets(resourceBudgets) {
29
+ return resourceBudgets.activeResourceCount !== null ||
30
+ resourceBudgets.javaScriptEngineHeapBytes !== null ||
31
+ resourceBudgets.residentSetBytes !== null ||
32
+ resourceBudgets.residentSetGrowthBytesPerSecond !== null;
33
+ }
34
+ export function validateResourceUsagePolicy(policy) {
35
+ validateResourceBudgets(policy.budgets);
36
+ validateSamplingInterval(policy.samplingIntervalMilliseconds);
37
+ if (!policy.measure && hasResourceBudgets(policy.budgets)) {
38
+ throw new ConfigError('Resource budgets require resource usage measurement.');
39
+ }
40
+ }
41
+ function validateMicrotestProfile(profile) {
42
+ validateResourceUsagePolicy(profile.resourceUsage);
43
+ validateTimeoutPolicy(profile.timeouts);
44
+ }
45
+ function validateAttachmentLimits(profile) {
46
+ if (profile.testFamily === 'microtest') {
47
+ return;
48
+ }
49
+ for (const [name, value] of Object.entries(profile.attachments)) {
50
+ validatePositiveSafeInteger(value, `Attachment ${name}`);
51
+ }
52
+ }
53
+ function validateIntegrationProfile(profile) {
54
+ validateAttachmentLimits(profile);
55
+ validateResourceUsagePolicy(profile.resourceUsage);
56
+ validateTimeoutPolicy(profile.timeouts);
57
+ if (profile.execution.processModel === 'worker-pool') {
58
+ validatePositiveSafeInteger(profile.execution.maxWorkers, 'Profile worker maximum');
59
+ validateHostProcess(profile.execution.hostProcess);
60
+ }
61
+ }
62
+ function validateBenchmarkProfile(profileName, profile) {
63
+ try {
64
+ normalizeRequiredProfileFiles(profile.files);
65
+ performanceBaselinePolicySchema.parse(profile.baselines);
66
+ validateIntegrationProfile(profile);
67
+ validateBenchmarkExecution(profile.execution, profile.timeouts);
68
+ }
69
+ catch (error) {
70
+ throw new ConfigError(`Invalid benchmark profile "${profileName}": ${String(error)}`, { cause: error });
71
+ }
72
+ }
73
+ function validateProfileFamily(profileName, testFamily) {
74
+ if (testFamily !== 'benchmark' && testFamily !== 'integration' && testFamily !== 'microtest') {
75
+ throw new ConfigError(`Invalid profile "${profileName}": testFamily must be "benchmark", "integration", or "microtest".`);
76
+ }
77
+ }
78
+ export function validateNormalizedConfig(config) {
79
+ for (const [profileName, profile] of Object.entries(config.profiles)) {
80
+ assertValidProfileName(profileName);
81
+ validateProfileFamily(profileName, profile.testFamily);
82
+ if (profile.testFamily === 'benchmark') {
83
+ validateBenchmarkProfile(profileName, profile);
84
+ }
85
+ else if (profile.testFamily === 'microtest') {
86
+ validateMicrotestProfile(profile);
87
+ }
88
+ else {
89
+ validateIntegrationProfile(profile);
90
+ }
91
+ }
92
+ }
93
+ //# sourceMappingURL=validation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.js","sourceRoot":"","sources":["../../../../source/config/validation.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { invalidRunProfileFileSetNameMessage } from "./profile-file-glob.js";
1
+ import { invalidProfileFileSetNameMessage } from "./profile-patterns.js";
2
2
  function normalizeWorkGroup(group) {
3
3
  return {
4
4
  fileSets: [group.fileSets[0], ...group.fileSets.slice(1)],
@@ -30,7 +30,7 @@ function hasFileSets(files) {
30
30
  return files.sets !== undefined;
31
31
  }
32
32
  function invalidWorkGroupNameMessage(group) {
33
- const message = invalidRunProfileFileSetNameMessage(group.name);
33
+ const message = invalidProfileFileSetNameMessage(group.name);
34
34
  return message === null ? null : message.replace('file set name', 'work group name');
35
35
  }
36
36
  function invalidDuplicateGroupNameMessage(group, assignedGroupNames) {
@@ -108,4 +108,4 @@ export function invalidWorkDistributionConfigMessage(execution, files) {
108
108
  ? invalidGroupDistributionMessage(execution.workDistribution, files)
109
109
  : null;
110
110
  }
111
- //# sourceMappingURL=work-distribution-config.js.map
111
+ //# sourceMappingURL=work-distribution.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"work-distribution.js","sourceRoot":"","sources":["../../../../source/config/work-distribution.ts"],"names":[],"mappings":"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"}
@@ -35,4 +35,4 @@ export const controlsSchema = z.strictObject({
35
35
  timeoutMilliseconds: z.number().nullable()
36
36
  });
37
37
  export const suitePathSchema = z.array(z.strictObject({ definitionLocations: sourceLocationsSchema, title: z.string() }));
38
- //# sourceMappingURL=run-identity-schema.js.map
38
+ //# sourceMappingURL=identity-schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"identity-schema.js","sourceRoot":"","sources":["../../../../source/engine/identity-schema.ts"],"names":[],"mappings":"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"}
package/file-store.js ADDED
@@ -0,0 +1,48 @@
1
+ import { randomUUID } from 'node:crypto';
2
+ import { link, mkdir, readFile, rename, rm, writeFile } from 'node:fs/promises';
3
+ import path from 'node:path';
4
+ async function cleanupFailedWrite(temporaryPath, error) {
5
+ try {
6
+ await rm(temporaryPath, { force: true });
7
+ }
8
+ catch (cleanupError) {
9
+ throw new AggregateError([error, cleanupError], 'Runtime state write and cleanup failed.', {
10
+ cause: cleanupError
11
+ });
12
+ }
13
+ }
14
+ async function publishFile(filePath, content, publish) {
15
+ await mkdir(path.dirname(filePath), { recursive: true });
16
+ const temporaryPath = `${filePath}.${randomUUID()}.tmp`;
17
+ try {
18
+ await writeFile(temporaryPath, content, { flag: 'wx' });
19
+ await publish(temporaryPath, filePath);
20
+ }
21
+ catch (error) {
22
+ await cleanupFailedWrite(temporaryPath, error);
23
+ throw error;
24
+ }
25
+ await rm(temporaryPath, { force: true });
26
+ }
27
+ export function createNodeFileStore() {
28
+ return {
29
+ async read(filePath) {
30
+ try {
31
+ return await readFile(filePath, 'utf8');
32
+ }
33
+ catch (error) {
34
+ if (error instanceof Error && Reflect.get(error, 'code') === 'ENOENT') {
35
+ return null;
36
+ }
37
+ throw error;
38
+ }
39
+ },
40
+ async create(filePath, content) {
41
+ await publishFile(filePath, content, link);
42
+ },
43
+ async write(filePath, content) {
44
+ await publishFile(filePath, content, rename);
45
+ }
46
+ };
47
+ }
48
+ //# sourceMappingURL=file-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-store.js","sourceRoot":"","sources":["../../../source/file-store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAChF,OAAO,IAAI,MAAM,WAAW,CAAC;AAQ7B,KAAK,UAAU,kBAAkB,CAAC,aAAqB,EAAE,KAAc;IACnE,IAAI,CAAC;QACD,MAAM,EAAE,CAAC,aAAa,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7C,CAAC;IAAC,OAAO,YAAqB,EAAE,CAAC;QAC7B,MAAM,IAAI,cAAc,CAAC,CAAE,KAAK,EAAE,YAAY,CAAE,EAAE,yCAAyC,EAAE;YACzF,KAAK,EAAE,YAAY;SACtB,CAAC,CAAC;IACP,CAAC;AACL,CAAC;AAED,KAAK,UAAU,WAAW,CACtB,QAAgB,EAChB,OAAe,EACf,OAA+D;IAE/D,MAAM,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACzD,MAAM,aAAa,GAAG,GAAG,QAAQ,IAAI,UAAU,EAAE,MAAM,CAAC;IACxD,IAAI,CAAC;QACD,MAAM,SAAS,CAAC,aAAa,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QACxD,MAAM,OAAO,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;IAC3C,CAAC;IAAC,OAAO,KAAc,EAAE,CAAC;QACtB,MAAM,kBAAkB,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;QAC/C,MAAM,KAAK,CAAC;IAChB,CAAC;IACD,MAAM,EAAE,CAAC,aAAa,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;AAC7C,CAAC;AAED,MAAM,UAAU,mBAAmB;IAC/B,OAAO;QACH,KAAK,CAAC,IAAI,CAAC,QAAQ;YACf,IAAI,CAAC;gBACD,OAAO,MAAM,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YAC5C,CAAC;YAAC,OAAO,KAAc,EAAE,CAAC;gBACtB,IAAI,KAAK,YAAY,KAAK,IAAI,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,QAAQ,EAAE,CAAC;oBACpE,OAAO,IAAI,CAAC;gBAChB,CAAC;gBAED,MAAM,KAAK,CAAC;YAChB,CAAC;QACL,CAAC;QACD,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO;YAC1B,MAAM,WAAW,CAAC,QAAQ,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;QAC/C,CAAC;QACD,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE,OAAO;YACzB,MAAM,WAAW,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;QACjD,CAAC;KACJ,CAAC;AACN,CAAC"}