ppef 1.0.1 → 1.2.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 (295) hide show
  1. package/README.md +76 -125
  2. package/bin/ppef.mjs +20 -0
  3. package/dist/__tests__/cli/evaluate-command.integration.test.d.ts +8 -0
  4. package/dist/__tests__/cli/evaluate-command.integration.test.d.ts.map +1 -0
  5. package/dist/__tests__/cli/evaluate-command.integration.test.js +308 -0
  6. package/dist/__tests__/cli/evaluate-command.integration.test.js.map +1 -0
  7. package/dist/__tests__/evaluators/claims-evaluator.unit.test.d.ts +8 -0
  8. package/dist/__tests__/evaluators/claims-evaluator.unit.test.d.ts.map +1 -0
  9. package/dist/__tests__/evaluators/claims-evaluator.unit.test.js +405 -0
  10. package/dist/__tests__/evaluators/claims-evaluator.unit.test.js.map +1 -0
  11. package/dist/__tests__/evaluators/metrics-evaluator.unit.test.d.ts +8 -0
  12. package/dist/__tests__/evaluators/metrics-evaluator.unit.test.d.ts.map +1 -0
  13. package/dist/__tests__/evaluators/metrics-evaluator.unit.test.js +424 -0
  14. package/dist/__tests__/evaluators/metrics-evaluator.unit.test.js.map +1 -0
  15. package/dist/__tests__/evaluators/registry.unit.test.d.ts +7 -0
  16. package/dist/__tests__/evaluators/registry.unit.test.d.ts.map +1 -0
  17. package/dist/__tests__/evaluators/registry.unit.test.js +173 -0
  18. package/dist/__tests__/evaluators/registry.unit.test.js.map +1 -0
  19. package/dist/__tests__/evaluators/robustness-evaluator.unit.test.d.ts +8 -0
  20. package/dist/__tests__/evaluators/robustness-evaluator.unit.test.d.ts.map +1 -0
  21. package/dist/__tests__/evaluators/robustness-evaluator.unit.test.js +260 -0
  22. package/dist/__tests__/evaluators/robustness-evaluator.unit.test.js.map +1 -0
  23. package/dist/__tests__/framework-pipeline.integration.test.js +49 -20
  24. package/dist/__tests__/framework-pipeline.integration.test.js.map +1 -1
  25. package/dist/__tests__/index-exports.unit.test.d.ts +8 -0
  26. package/dist/__tests__/index-exports.unit.test.d.ts.map +1 -0
  27. package/dist/__tests__/index-exports.unit.test.js +124 -0
  28. package/dist/__tests__/index-exports.unit.test.js.map +1 -0
  29. package/dist/__tests__/registry-executor.integration.test.js +12 -9
  30. package/dist/__tests__/registry-executor.integration.test.js.map +1 -1
  31. package/dist/aggregation/__tests__/aggregators.unit.test.d.ts +7 -0
  32. package/dist/aggregation/__tests__/aggregators.unit.test.d.ts.map +1 -0
  33. package/dist/aggregation/__tests__/aggregators.unit.test.js +350 -0
  34. package/dist/aggregation/__tests__/aggregators.unit.test.js.map +1 -0
  35. package/dist/aggregation/__tests__/pipeline.unit.test.d.ts +7 -0
  36. package/dist/aggregation/__tests__/pipeline.unit.test.d.ts.map +1 -0
  37. package/dist/aggregation/__tests__/pipeline.unit.test.js +213 -0
  38. package/dist/aggregation/__tests__/pipeline.unit.test.js.map +1 -0
  39. package/dist/aggregation/aggregators.d.ts +9 -0
  40. package/dist/aggregation/aggregators.d.ts.map +1 -1
  41. package/dist/aggregation/aggregators.js +1 -1
  42. package/dist/aggregation/aggregators.js.map +1 -1
  43. package/dist/aggregation/index.d.ts +1 -1
  44. package/dist/aggregation/index.d.ts.map +1 -1
  45. package/dist/aggregation/index.js +1 -1
  46. package/dist/aggregation/index.js.map +1 -1
  47. package/dist/aggregation/pipeline.d.ts.map +1 -1
  48. package/dist/aggregation/pipeline.js +40 -3
  49. package/dist/aggregation/pipeline.js.map +1 -1
  50. package/dist/claims/index.d.ts +6 -3
  51. package/dist/claims/index.d.ts.map +1 -1
  52. package/dist/claims/index.js +6 -3
  53. package/dist/claims/index.js.map +1 -1
  54. package/dist/cli/__tests__/aggregate.command.unit.test.d.ts +7 -0
  55. package/dist/cli/__tests__/aggregate.command.unit.test.d.ts.map +1 -0
  56. package/dist/cli/__tests__/aggregate.command.unit.test.js +399 -0
  57. package/dist/cli/__tests__/aggregate.command.unit.test.js.map +1 -0
  58. package/dist/cli/__tests__/binary-sut.integration.test.d.ts +8 -0
  59. package/dist/cli/__tests__/binary-sut.integration.test.d.ts.map +1 -0
  60. package/dist/cli/__tests__/binary-sut.integration.test.js +165 -0
  61. package/dist/cli/__tests__/binary-sut.integration.test.js.map +1 -0
  62. package/dist/cli/__tests__/commands.unit.test.d.ts +10 -0
  63. package/dist/cli/__tests__/commands.unit.test.d.ts.map +1 -0
  64. package/dist/cli/__tests__/commands.unit.test.js +217 -0
  65. package/dist/cli/__tests__/commands.unit.test.js.map +1 -0
  66. package/dist/cli/__tests__/config-loader.unit.test.d.ts +7 -0
  67. package/dist/cli/__tests__/config-loader.unit.test.d.ts.map +1 -0
  68. package/dist/cli/__tests__/config-loader.unit.test.js +611 -0
  69. package/dist/cli/__tests__/config-loader.unit.test.js.map +1 -0
  70. package/dist/cli/__tests__/index.unit.test.d.ts +10 -0
  71. package/dist/cli/__tests__/index.unit.test.d.ts.map +1 -0
  72. package/dist/cli/__tests__/index.unit.test.js +65 -0
  73. package/dist/cli/__tests__/index.unit.test.js.map +1 -0
  74. package/dist/cli/__tests__/logger.unit.test.d.ts +11 -0
  75. package/dist/cli/__tests__/logger.unit.test.d.ts.map +1 -0
  76. package/dist/cli/__tests__/logger.unit.test.js +180 -0
  77. package/dist/cli/__tests__/logger.unit.test.js.map +1 -0
  78. package/dist/cli/__tests__/module-loader.unit.test.d.ts +11 -0
  79. package/dist/cli/__tests__/module-loader.unit.test.d.ts.map +1 -0
  80. package/dist/cli/__tests__/module-loader.unit.test.js +262 -0
  81. package/dist/cli/__tests__/module-loader.unit.test.js.map +1 -0
  82. package/dist/cli/__tests__/output-writer.unit.test.d.ts +10 -0
  83. package/dist/cli/__tests__/output-writer.unit.test.d.ts.map +1 -0
  84. package/dist/cli/__tests__/output-writer.unit.test.js +216 -0
  85. package/dist/cli/__tests__/output-writer.unit.test.js.map +1 -0
  86. package/dist/cli/__tests__/plan.command.unit.test.d.ts +7 -0
  87. package/dist/cli/__tests__/plan.command.unit.test.d.ts.map +1 -0
  88. package/dist/cli/__tests__/plan.command.unit.test.js +289 -0
  89. package/dist/cli/__tests__/plan.command.unit.test.js.map +1 -0
  90. package/dist/cli/__tests__/run.command.unit.test.d.ts +7 -0
  91. package/dist/cli/__tests__/run.command.unit.test.d.ts.map +1 -0
  92. package/dist/cli/__tests__/run.command.unit.test.js +422 -0
  93. package/dist/cli/__tests__/run.command.unit.test.js.map +1 -0
  94. package/dist/cli/__tests__/validate.command.unit.test.d.ts +7 -0
  95. package/dist/cli/__tests__/validate.command.unit.test.d.ts.map +1 -0
  96. package/dist/cli/__tests__/validate.command.unit.test.js +226 -0
  97. package/dist/cli/__tests__/validate.command.unit.test.js.map +1 -0
  98. package/dist/cli/command-deps.d.ts +137 -0
  99. package/dist/cli/command-deps.d.ts.map +1 -0
  100. package/dist/cli/command-deps.js +7 -0
  101. package/dist/cli/command-deps.js.map +1 -0
  102. package/dist/cli/commands/aggregate.d.ts +35 -0
  103. package/dist/cli/commands/aggregate.d.ts.map +1 -0
  104. package/dist/cli/commands/aggregate.js +124 -0
  105. package/dist/cli/commands/aggregate.js.map +1 -0
  106. package/dist/cli/commands/evaluate.d.ts +41 -0
  107. package/dist/cli/commands/evaluate.d.ts.map +1 -0
  108. package/dist/cli/commands/evaluate.js +287 -0
  109. package/dist/cli/commands/evaluate.js.map +1 -0
  110. package/dist/cli/commands/plan.d.ts +36 -0
  111. package/dist/cli/commands/plan.d.ts.map +1 -0
  112. package/dist/cli/commands/plan.js +109 -0
  113. package/dist/cli/commands/plan.js.map +1 -0
  114. package/dist/cli/commands/run.d.ts +33 -0
  115. package/dist/cli/commands/run.d.ts.map +1 -0
  116. package/dist/cli/commands/run.js +277 -0
  117. package/dist/cli/commands/run.js.map +1 -0
  118. package/dist/cli/commands/validate.d.ts +27 -0
  119. package/dist/cli/commands/validate.d.ts.map +1 -0
  120. package/dist/cli/commands/validate.js +88 -0
  121. package/dist/cli/commands/validate.js.map +1 -0
  122. package/dist/cli/config-loader.d.ts +30 -0
  123. package/dist/cli/config-loader.d.ts.map +1 -0
  124. package/dist/cli/config-loader.js +181 -0
  125. package/dist/cli/config-loader.js.map +1 -0
  126. package/dist/cli/index.d.ts +27 -0
  127. package/dist/cli/index.d.ts.map +1 -0
  128. package/dist/cli/index.js +60 -0
  129. package/dist/cli/index.js.map +1 -0
  130. package/dist/cli/logger.d.ts +75 -0
  131. package/dist/cli/logger.d.ts.map +1 -0
  132. package/dist/cli/logger.js +131 -0
  133. package/dist/cli/logger.js.map +1 -0
  134. package/dist/cli/module-loader.d.ts +68 -0
  135. package/dist/cli/module-loader.d.ts.map +1 -0
  136. package/dist/cli/module-loader.js +134 -0
  137. package/dist/cli/module-loader.js.map +1 -0
  138. package/dist/cli/output-writer.d.ts +51 -0
  139. package/dist/cli/output-writer.d.ts.map +1 -0
  140. package/dist/cli/output-writer.js +65 -0
  141. package/dist/cli/output-writer.js.map +1 -0
  142. package/dist/cli/types.d.ts +193 -0
  143. package/dist/cli/types.d.ts.map +1 -0
  144. package/dist/cli/types.js +7 -0
  145. package/dist/cli/types.js.map +1 -0
  146. package/dist/collector/__tests__/result-collector.unit.test.d.ts +7 -0
  147. package/dist/collector/__tests__/result-collector.unit.test.d.ts.map +1 -0
  148. package/dist/collector/__tests__/result-collector.unit.test.js +1021 -0
  149. package/dist/collector/__tests__/result-collector.unit.test.js.map +1 -0
  150. package/dist/collector/__tests__/schema.unit.test.d.ts +7 -0
  151. package/dist/collector/__tests__/schema.unit.test.d.ts.map +1 -0
  152. package/dist/collector/__tests__/schema.unit.test.js +360 -0
  153. package/dist/collector/__tests__/schema.unit.test.js.map +1 -0
  154. package/dist/evaluators/claims-evaluator.d.ts +87 -0
  155. package/dist/evaluators/claims-evaluator.d.ts.map +1 -0
  156. package/dist/evaluators/claims-evaluator.js +289 -0
  157. package/dist/evaluators/claims-evaluator.js.map +1 -0
  158. package/dist/evaluators/exploratory-evaluator.d.ts +136 -0
  159. package/dist/evaluators/exploratory-evaluator.d.ts.map +1 -0
  160. package/dist/evaluators/exploratory-evaluator.js +545 -0
  161. package/dist/evaluators/exploratory-evaluator.js.map +1 -0
  162. package/dist/evaluators/index.d.ts +13 -0
  163. package/dist/evaluators/index.d.ts.map +1 -0
  164. package/dist/evaluators/index.js +14 -0
  165. package/dist/evaluators/index.js.map +1 -0
  166. package/dist/evaluators/metrics-evaluator.d.ts +114 -0
  167. package/dist/evaluators/metrics-evaluator.d.ts.map +1 -0
  168. package/dist/evaluators/metrics-evaluator.js +433 -0
  169. package/dist/evaluators/metrics-evaluator.js.map +1 -0
  170. package/dist/evaluators/registry.d.ts +106 -0
  171. package/dist/evaluators/registry.d.ts.map +1 -0
  172. package/dist/evaluators/registry.js +148 -0
  173. package/dist/evaluators/registry.js.map +1 -0
  174. package/dist/evaluators/robustness-evaluator.d.ts +57 -0
  175. package/dist/evaluators/robustness-evaluator.d.ts.map +1 -0
  176. package/dist/evaluators/robustness-evaluator.js +186 -0
  177. package/dist/evaluators/robustness-evaluator.js.map +1 -0
  178. package/dist/executor/__tests__/binary-sut.unit.test.d.ts +8 -0
  179. package/dist/executor/__tests__/binary-sut.unit.test.d.ts.map +1 -0
  180. package/dist/executor/__tests__/binary-sut.unit.test.js +313 -0
  181. package/dist/executor/__tests__/binary-sut.unit.test.js.map +1 -0
  182. package/dist/executor/__tests__/checkpoint-manager.unit.test.js +83 -1
  183. package/dist/executor/__tests__/checkpoint-manager.unit.test.js.map +1 -1
  184. package/dist/executor/__tests__/checkpoint-merge-bug.diagnostic.test.d.ts +3 -6
  185. package/dist/executor/__tests__/checkpoint-merge-bug.diagnostic.test.d.ts.map +1 -1
  186. package/dist/executor/__tests__/checkpoint-merge-bug.diagnostic.test.js +428 -159
  187. package/dist/executor/__tests__/checkpoint-merge-bug.diagnostic.test.js.map +1 -1
  188. package/dist/executor/__tests__/checkpoint-storage.unit.test.js +148 -1
  189. package/dist/executor/__tests__/checkpoint-storage.unit.test.js.map +1 -1
  190. package/dist/executor/__tests__/executor.unit.test.js +123 -8
  191. package/dist/executor/__tests__/executor.unit.test.js.map +1 -1
  192. package/dist/executor/__tests__/memory-monitor.unit.test.d.ts +7 -0
  193. package/dist/executor/__tests__/memory-monitor.unit.test.d.ts.map +1 -0
  194. package/dist/executor/__tests__/memory-monitor.unit.test.js +285 -0
  195. package/dist/executor/__tests__/memory-monitor.unit.test.js.map +1 -0
  196. package/dist/executor/__tests__/parallel-executor.unit.test.d.ts +2 -1
  197. package/dist/executor/__tests__/parallel-executor.unit.test.d.ts.map +1 -1
  198. package/dist/executor/__tests__/parallel-executor.unit.test.js +426 -156
  199. package/dist/executor/__tests__/parallel-executor.unit.test.js.map +1 -1
  200. package/dist/executor/__tests__/resource-calculator.unit.test.d.ts +10 -0
  201. package/dist/executor/__tests__/resource-calculator.unit.test.d.ts.map +1 -0
  202. package/dist/executor/__tests__/resource-calculator.unit.test.js +104 -0
  203. package/dist/executor/__tests__/resource-calculator.unit.test.js.map +1 -0
  204. package/dist/executor/__tests__/run-id.unit.test.d.ts +8 -0
  205. package/dist/executor/__tests__/run-id.unit.test.d.ts.map +1 -0
  206. package/dist/executor/__tests__/run-id.unit.test.js +156 -0
  207. package/dist/executor/__tests__/run-id.unit.test.js.map +1 -0
  208. package/dist/executor/__tests__/worker-entry.integration.test.d.ts +24 -0
  209. package/dist/executor/__tests__/worker-entry.integration.test.d.ts.map +1 -0
  210. package/dist/executor/__tests__/worker-entry.integration.test.js +82 -0
  211. package/dist/executor/__tests__/worker-entry.integration.test.js.map +1 -0
  212. package/dist/executor/__tests__/worker-entry.unit.test.d.ts +7 -0
  213. package/dist/executor/__tests__/worker-entry.unit.test.d.ts.map +1 -0
  214. package/dist/executor/__tests__/worker-entry.unit.test.js +364 -0
  215. package/dist/executor/__tests__/worker-entry.unit.test.js.map +1 -0
  216. package/dist/executor/__tests__/worker-threads-executor.unit.test.d.ts +8 -0
  217. package/dist/executor/__tests__/worker-threads-executor.unit.test.d.ts.map +1 -0
  218. package/dist/executor/__tests__/worker-threads-executor.unit.test.js +276 -0
  219. package/dist/executor/__tests__/worker-threads-executor.unit.test.js.map +1 -0
  220. package/dist/executor/binary-sut.d.ts +105 -0
  221. package/dist/executor/binary-sut.d.ts.map +1 -0
  222. package/dist/executor/binary-sut.js +174 -0
  223. package/dist/executor/binary-sut.js.map +1 -0
  224. package/dist/executor/checkpoint-storage.d.ts.map +1 -1
  225. package/dist/executor/checkpoint-storage.js +6 -4
  226. package/dist/executor/checkpoint-storage.js.map +1 -1
  227. package/dist/executor/executor.d.ts +28 -0
  228. package/dist/executor/executor.d.ts.map +1 -1
  229. package/dist/executor/executor.js +85 -24
  230. package/dist/executor/executor.js.map +1 -1
  231. package/dist/executor/index.d.ts +4 -0
  232. package/dist/executor/index.d.ts.map +1 -1
  233. package/dist/executor/index.js +4 -0
  234. package/dist/executor/index.js.map +1 -1
  235. package/dist/executor/parallel-executor.d.ts +186 -0
  236. package/dist/executor/parallel-executor.d.ts.map +1 -1
  237. package/dist/executor/parallel-executor.js +218 -83
  238. package/dist/executor/parallel-executor.js.map +1 -1
  239. package/dist/executor/resource-calculator.d.ts +49 -0
  240. package/dist/executor/resource-calculator.d.ts.map +1 -0
  241. package/dist/executor/resource-calculator.js +129 -0
  242. package/dist/executor/resource-calculator.js.map +1 -0
  243. package/dist/executor/run-id.d.ts.map +1 -1
  244. package/dist/executor/run-id.js +8 -1
  245. package/dist/executor/run-id.js.map +1 -1
  246. package/dist/executor/worker-entry.d.ts +2 -0
  247. package/dist/executor/worker-entry.d.ts.map +1 -1
  248. package/dist/executor/worker-entry.js +46 -55
  249. package/dist/executor/worker-entry.js.map +1 -1
  250. package/dist/executor/worker-executor.d.ts +257 -0
  251. package/dist/executor/worker-executor.d.ts.map +1 -0
  252. package/dist/executor/worker-executor.js +308 -0
  253. package/dist/executor/worker-executor.js.map +1 -0
  254. package/dist/executor/worker-threads-executor.d.ts +245 -0
  255. package/dist/executor/worker-threads-executor.d.ts.map +1 -0
  256. package/dist/executor/worker-threads-executor.js +332 -0
  257. package/dist/executor/worker-threads-executor.js.map +1 -0
  258. package/dist/index.d.ts +1 -0
  259. package/dist/index.d.ts.map +1 -1
  260. package/dist/index.js +4 -2
  261. package/dist/index.js.map +1 -1
  262. package/dist/renderers/latex-renderer.d.ts +60 -0
  263. package/dist/renderers/latex-renderer.d.ts.map +1 -1
  264. package/dist/renderers/latex-renderer.js +299 -0
  265. package/dist/renderers/latex-renderer.js.map +1 -1
  266. package/dist/renderers/types.d.ts +9 -0
  267. package/dist/renderers/types.d.ts.map +1 -1
  268. package/dist/renderers/types.js.map +1 -1
  269. package/dist/robustness/__tests__/perturbations.unit.test.d.ts +11 -0
  270. package/dist/robustness/__tests__/perturbations.unit.test.d.ts.map +1 -0
  271. package/dist/robustness/__tests__/perturbations.unit.test.js +284 -0
  272. package/dist/robustness/__tests__/perturbations.unit.test.js.map +1 -0
  273. package/dist/robustness/index.d.ts +5 -2
  274. package/dist/robustness/index.d.ts.map +1 -1
  275. package/dist/robustness/index.js +4 -2
  276. package/dist/robustness/index.js.map +1 -1
  277. package/dist/statistical/__tests__/mann-whitney-u.unit.test.d.ts +7 -0
  278. package/dist/statistical/__tests__/mann-whitney-u.unit.test.d.ts.map +1 -0
  279. package/dist/statistical/__tests__/mann-whitney-u.unit.test.js +185 -0
  280. package/dist/statistical/__tests__/mann-whitney-u.unit.test.js.map +1 -0
  281. package/dist/types/evaluator.d.ts +449 -0
  282. package/dist/types/evaluator.d.ts.map +1 -0
  283. package/dist/types/evaluator.js +9 -0
  284. package/dist/types/evaluator.js.map +1 -0
  285. package/dist/types/result.d.ts +2 -0
  286. package/dist/types/result.d.ts.map +1 -1
  287. package/package.json +8 -1
  288. package/dist/claims/evaluator.d.ts +0 -33
  289. package/dist/claims/evaluator.d.ts.map +0 -1
  290. package/dist/claims/evaluator.js +0 -174
  291. package/dist/claims/evaluator.js.map +0 -1
  292. package/dist/robustness/analyzer.d.ts +0 -61
  293. package/dist/robustness/analyzer.d.ts.map +0 -1
  294. package/dist/robustness/analyzer.js +0 -191
  295. package/dist/robustness/analyzer.js.map +0 -1
@@ -3,65 +3,56 @@
3
3
  *
4
4
  * This file is loaded as a worker thread and receives messages
5
5
  * with batches of runs to execute.
6
+ *
7
+ * It uses dependency injection to allow testing of the core logic.
6
8
  */
7
9
  import { dirname, resolve } from "node:path";
8
10
  import { fileURLToPath } from "node:url";
9
11
  import { parentPort } from "node:worker_threads";
12
+ import { WorkerExecutor, } from "./worker-executor.js";
10
13
  const __filename = fileURLToPath(import.meta.url);
11
14
  const __dirname = dirname(__filename);
12
- const projectRoot = resolve(__dirname, "../../../");
13
- // Dynamically import the main code
14
- const executeBatch = async (message) => {
15
- // Import the executor and other dependencies
16
- const executorModule = (await import(`${projectRoot}/dist/experiments/framework/executor/executor.js`));
17
- const evaluateModule = (await import(`${projectRoot}/dist/cli-commands/evaluate.js`));
18
- const registryModule = (await import(`${projectRoot}/dist/experiments/framework/registry/index.js`));
19
- const sutsModule = (await import(`${projectRoot}/dist/experiments/framework/suts/index.js`));
20
- const datasetsModule = (await import(`${projectRoot}/dist/experiments/evaluation/fixtures/benchmark-datasets.js`));
21
- // Register all datasets and SUTs
22
- await datasetsModule.registerBenchmarkDatasets();
23
- sutsModule.registerAllSuts();
24
- const caseRegistry = await registryModule.registerAllBenchmarkCases();
25
- const sutRegistry = {
26
- list: () => ["degree-prioritised", "standard-bfs", "frontier-balanced", "random-priority"],
27
- getFactory: () => {
28
- // This would need to be implemented properly
29
- return null;
30
- },
31
- };
32
- const suts = evaluateModule.getSutDefinitions(sutRegistry);
33
- const cases = evaluateModule.getCaseDefinitions(caseRegistry);
34
- // Create executor with no onResult callback (workers don't save checkpoints)
35
- const executor = new executorModule.Executor({
36
- repetitions: message.config.repetitions,
37
- seedBase: message.config.seedBase,
38
- continueOnError: message.config.continueOnError,
39
- timeoutMs: message.config.timeoutMs,
40
- collectProvenance: message.config.collectProvenance,
41
- });
42
- // Execute the runs
43
- const results = await executor.execute(suts, cases, () => ({}));
44
- return {
45
- results: results.results,
46
- errors: results.errors,
47
- };
48
- };
49
- // Listen for messages from parent thread
50
- parentPort?.on("message", (data) => {
51
- // Validate message structure
52
- const message = data;
53
- // Execute asynchronously without returning the promise
54
- void (async () => {
55
- try {
56
- const result = await executeBatch(message);
57
- parentPort?.postMessage({ type: "done", ...result });
58
- }
59
- catch (error) {
60
- parentPort?.postMessage({
61
- type: "error",
62
- error: error instanceof Error ? error.message : String(error),
63
- });
64
- }
65
- })();
66
- });
15
+ // From dist/executor/, go up 2 levels to reach the package root
16
+ const projectRoot = resolve(__dirname, "../../");
17
+ /**
18
+ * Real module loader implementation for production use.
19
+ *
20
+ * Module paths reference the ppef structure:
21
+ * - executor: src/executor/executor.ts -> dist/executor/executor.js
22
+ * - evaluate: Not used in worker mode (SUTs/cases loaded via serialization)
23
+ * - registry: Not used in worker mode (not needed for isolated execution)
24
+ * - suts: Not used in worker mode (SUTs passed via serialization)
25
+ * - datasets: Not used in worker mode (not needed for isolated execution)
26
+ *
27
+ * NOTE: For worker threads, SUT and case definitions are passed via
28
+ * WorkerMessage serialization instead of dynamic imports, providing
29
+ * better isolation and avoiding hardcoded module paths.
30
+ */
31
+ class RealModuleLoader {
32
+ async loadExecutor() {
33
+ return (await import(`${projectRoot}/dist/executor/executor.js`));
34
+ }
35
+ loadEvaluate() {
36
+ // Not used in worker threads mode - SUTs/cases passed via serialization
37
+ return Promise.reject(new Error("loadEvaluate not supported in worker threads mode"));
38
+ }
39
+ loadRegistry() {
40
+ // Not used in worker threads mode
41
+ return Promise.reject(new Error("loadRegistry not supported in worker threads mode"));
42
+ }
43
+ loadSuts() {
44
+ // Not used in worker threads mode - SUTs passed via serialization
45
+ return Promise.reject(new Error("loadSuts not supported in worker threads mode"));
46
+ }
47
+ loadDatasets() {
48
+ // Not used in worker threads mode
49
+ return Promise.reject(new Error("loadDatasets not supported in worker threads mode"));
50
+ }
51
+ }
52
+ // Create executor with real dependencies and start listening
53
+ if (parentPort) {
54
+ const moduleLoader = new RealModuleLoader();
55
+ const executor = new WorkerExecutor(parentPort, moduleLoader, projectRoot);
56
+ executor.start();
57
+ }
67
58
  //# sourceMappingURL=worker-entry.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"worker-entry.js","sourceRoot":"","sources":["../../src/executor/worker-entry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"worker-entry.js","sourceRoot":"","sources":["../../src/executor/worker-entry.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEjD,OAAO,EAON,cAAc,GACd,MAAM,sBAAsB,CAAC;AAE9B,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;AACtC,gEAAgE;AAChE,MAAM,WAAW,GAAG,OAAO,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;AAEjD;;;;;;;;;;;;;GAaG;AACH,MAAM,gBAAgB;IACd,KAAK,CAAC,YAAY;QACxB,OAAO,CAAC,MAAM,MAAM,CAAC,GAAG,WAAW,4BAA4B,CAAC,CAA+B,CAAC;IACjG,CAAC;IAEM,YAAY;QAClB,wEAAwE;QACxE,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC,CAAC;IACvF,CAAC;IAEM,YAAY;QAClB,kCAAkC;QAClC,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC,CAAC;IACvF,CAAC;IAEM,QAAQ;QACd,kEAAkE;QAClE,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC,CAAC;IACnF,CAAC;IAEM,YAAY;QAClB,kCAAkC;QAClC,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC,CAAC;IACvF,CAAC;CACD;AAED,6DAA6D;AAC7D,IAAI,UAAU,EAAE,CAAC;IAChB,MAAM,YAAY,GAAG,IAAI,gBAAgB,EAAE,CAAC;IAC5C,MAAM,QAAQ,GAAG,IAAI,cAAc,CAAC,UAAU,EAAE,YAAY,EAAE,WAAW,CAAC,CAAC;IAC3E,QAAQ,CAAC,KAAK,EAAE,CAAC;AAClB,CAAC"}
@@ -0,0 +1,257 @@
1
+ /**
2
+ * WorkerExecutor - Core worker logic with dependency injection.
3
+ *
4
+ * This class can be tested by injecting mock dependencies,
5
+ * while worker-entry.ts provides real implementations.
6
+ *
7
+ * Two execution modes:
8
+ * 1. Legacy mode: Uses module loader to dynamically load SUTs/cases (for backward compatibility)
9
+ * 2. Serialized mode: SUTs/cases passed via WorkerMessage (for worker threads isolation)
10
+ */
11
+ import type { EvaluationResult } from "../types/result.js";
12
+ /**
13
+ * Type definition for a single run configuration
14
+ */
15
+ export interface RunConfig {
16
+ runId: string;
17
+ sutId: string;
18
+ caseId: string;
19
+ repetition: number;
20
+ config: unknown;
21
+ }
22
+ /**
23
+ * Type definition for executor configuration
24
+ */
25
+ export interface ExecutorConfig {
26
+ repetitions: number;
27
+ seedBase: number;
28
+ continueOnError: boolean;
29
+ timeoutMs: number;
30
+ collectProvenance: boolean;
31
+ }
32
+ /**
33
+ * Serialized SUT definition for passing via WorkerMessage.
34
+ */
35
+ export interface SerializedSut {
36
+ id: string;
37
+ module: string;
38
+ exportName: string;
39
+ registration: {
40
+ name: string;
41
+ version: string;
42
+ role: string;
43
+ };
44
+ /** Binary SUT configuration (if type="binary") */
45
+ binary?: {
46
+ command: string;
47
+ args?: string[];
48
+ inputFormat?: "json" | "raw" | "lines";
49
+ outputFormat?: "json" | "raw" | "lines";
50
+ timeout?: number;
51
+ };
52
+ }
53
+ /**
54
+ * Serialized case definition for passing via WorkerMessage.
55
+ */
56
+ export interface SerializedCase {
57
+ caseId: string;
58
+ module: string;
59
+ exportName: string;
60
+ }
61
+ /**
62
+ * Registry manifest for passing pre-registered SUTs/cases via WorkerMessage.
63
+ * Allows worker threads to reconstruct registries without dynamic module loading.
64
+ *
65
+ * This enables registry-based SUTs (like GraphBox's wrapper classes) to work
66
+ * with worker thread isolation without requiring standalone createSut() files.
67
+ */
68
+ export interface RegistryManifest {
69
+ /** Pre-registered SUT metadata */
70
+ suts: {
71
+ id: string;
72
+ name: string;
73
+ version: string;
74
+ role: string;
75
+ config: Record<string, unknown>;
76
+ tags: string[];
77
+ }[];
78
+ /** Shared code bundle (registry functions) */
79
+ sharedCode: string;
80
+ /** Map of SUT IDs to their module paths */
81
+ sutModules: Record<string, string>;
82
+ /** Export name for createSut function */
83
+ exportName: string;
84
+ }
85
+ /**
86
+ * Type definition for message sent to worker.
87
+ *
88
+ * Supports three modes:
89
+ * - Legacy: Only `runs` and `config` provided (uses module loader)
90
+ * - Serialized: `suts` and `cases` arrays provided (direct instantiation)
91
+ * - Registry: `registryManifest` provided (reconstructs registry from manifest)
92
+ */
93
+ export interface WorkerMessage {
94
+ runs: RunConfig[];
95
+ config: ExecutorConfig;
96
+ /** Base directory for resolving module paths (required for serialized mode) */
97
+ baseDir?: string;
98
+ /** Serialized SUT definitions (optional, for serialized mode) */
99
+ suts?: SerializedSut[];
100
+ /** Serialized case definitions (optional, for serialized mode) */
101
+ cases?: SerializedCase[];
102
+ /** Registry manifest (optional, for registry mode) */
103
+ registryManifest?: RegistryManifest;
104
+ }
105
+ /**
106
+ * Type definition for worker response
107
+ */
108
+ export interface WorkerResponse {
109
+ results: EvaluationResult[];
110
+ errors: {
111
+ runId: string;
112
+ error: string;
113
+ }[];
114
+ }
115
+ /**
116
+ * Type definition for successful response message
117
+ */
118
+ export interface WorkerSuccessMessage {
119
+ type: "done";
120
+ results: EvaluationResult[];
121
+ errors: {
122
+ runId: string;
123
+ error: string;
124
+ }[];
125
+ }
126
+ /**
127
+ * Type definition for error response message
128
+ */
129
+ export interface WorkerErrorMessage {
130
+ type: "error";
131
+ error: string;
132
+ }
133
+ /**
134
+ * Type definition for any worker message
135
+ */
136
+ export type WorkerOutputMessage = WorkerSuccessMessage | WorkerErrorMessage;
137
+ /**
138
+ * Interface for parent port communication
139
+ */
140
+ export interface IParentPort {
141
+ on(event: string, listener: (data: unknown) => void): void;
142
+ postMessage(message: unknown): void;
143
+ }
144
+ /**
145
+ * Interface for dynamically loaded executor module
146
+ */
147
+ export interface IExecutorModule {
148
+ Executor: new (config: ExecutorConfig) => {
149
+ execute(suts: unknown, cases: unknown, callback: () => unknown): Promise<{
150
+ results: EvaluationResult[];
151
+ errors: {
152
+ runId: string;
153
+ error: string;
154
+ }[];
155
+ }>;
156
+ };
157
+ }
158
+ /**
159
+ * Interface for dynamically loaded evaluate module
160
+ */
161
+ export interface IEvaluateModule {
162
+ getSutDefinitions(registry: ISutRegistry): unknown;
163
+ getCaseDefinitions(registry: unknown): unknown;
164
+ }
165
+ /**
166
+ * Interface for SUT registry
167
+ */
168
+ export interface ISutRegistry {
169
+ list(): string[];
170
+ getFactory(id: string): unknown;
171
+ }
172
+ /**
173
+ * Interface for dynamically loaded registry module
174
+ */
175
+ export interface IRegistryModule {
176
+ registerAllBenchmarkCases(): Promise<unknown>;
177
+ }
178
+ /**
179
+ * Interface for dynamically loaded SUTs module
180
+ */
181
+ export interface ISutsModule {
182
+ registerAllSuts(): void;
183
+ }
184
+ /**
185
+ * Interface for dynamically loaded datasets module
186
+ */
187
+ export interface IDatasetsModule {
188
+ registerBenchmarkDatasets(): Promise<void>;
189
+ }
190
+ /**
191
+ * Interface for module loader
192
+ */
193
+ export interface IModuleLoader {
194
+ loadExecutor(): Promise<IExecutorModule>;
195
+ loadEvaluate(): Promise<IEvaluateModule>;
196
+ loadRegistry(): Promise<IRegistryModule>;
197
+ loadSuts(): Promise<ISutsModule>;
198
+ loadDatasets(): Promise<IDatasetsModule>;
199
+ }
200
+ /**
201
+ * WorkerExecutor - Core worker execution logic with injected dependencies.
202
+ *
203
+ * Supports two execution modes:
204
+ * 1. Legacy mode: Uses module loader for dynamic imports (backward compatible)
205
+ * 2. Serialized mode: SUTs/cases passed via WorkerMessage (worker threads isolation)
206
+ */
207
+ export declare class WorkerExecutor {
208
+ private readonly parentPort;
209
+ private readonly moduleLoader;
210
+ private readonly projectRoot;
211
+ /**
212
+ * Create a new WorkerExecutor with injected dependencies.
213
+ * @param parentPort - Communication port to parent thread
214
+ * @param moduleLoader - Module loader for dynamic imports (legacy mode)
215
+ * @param projectRoot - Root directory for the project (used for module resolution)
216
+ */
217
+ constructor(parentPort: IParentPort, moduleLoader: IModuleLoader, projectRoot: string);
218
+ /**
219
+ * Start listening for messages from parent thread.
220
+ */
221
+ start(): void;
222
+ /**
223
+ * Handle an incoming message from the parent thread.
224
+ */
225
+ handleMessage(data: unknown): Promise<void>;
226
+ /**
227
+ * Execute a batch of runs.
228
+ *
229
+ * Three execution modes:
230
+ * 1. Legacy mode: Uses module loader to dynamically load SUTs/cases
231
+ * 2. Serialized mode: SUTs/cases passed via WorkerMessage (for worker threads)
232
+ * 3. Registry mode: Reconstructs registry from manifest (for registry-based SUTs)
233
+ */
234
+ executeBatch(message: WorkerMessage): Promise<WorkerResponse>;
235
+ /**
236
+ * Execute using legacy mode with dynamic module loading.
237
+ * Used for backward compatibility with existing tests.
238
+ */
239
+ private executeBatchLegacy;
240
+ /**
241
+ * Execute using serialized mode (SUTs/cases passed via WorkerMessage).
242
+ * This mode is used for worker threads isolation.
243
+ *
244
+ * Dynamically imports SUT and case modules based on provided definitions,
245
+ * creates an Executor instance, and executes the planned runs.
246
+ */
247
+ private executeBatchSerialized;
248
+ /**
249
+ * Execute using registry manifest mode.
250
+ * Reconstructs SUT registry from manifest and executes runs.
251
+ *
252
+ * This mode enables registry-based SUTs (like GraphBox wrapper classes)
253
+ * to work with worker thread isolation without requiring standalone files.
254
+ */
255
+ private executeBatchRegistry;
256
+ }
257
+ //# sourceMappingURL=worker-executor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worker-executor.d.ts","sourceRoot":"","sources":["../../src/executor/worker-executor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAE3D;;GAEG;AACH,MAAM,WAAW,SAAS;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,OAAO,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,eAAe,EAAE,OAAO,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,iBAAiB,EAAE,OAAO,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE;QACb,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,EAAE,MAAM,CAAC;KACb,CAAC;IAEF,kDAAkD;IAClD,MAAM,CAAC,EAAE;QACR,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;QAChB,WAAW,CAAC,EAAE,MAAM,GAAG,KAAK,GAAG,OAAO,CAAC;QACvC,YAAY,CAAC,EAAE,MAAM,GAAG,KAAK,GAAG,OAAO,CAAC;QACxC,OAAO,CAAC,EAAE,MAAM,CAAC;KACjB,CAAC;CACF;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;GAMG;AACH,MAAM,WAAW,gBAAgB;IAChC,kCAAkC;IAClC,IAAI,EAAE;QACL,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAChC,IAAI,EAAE,MAAM,EAAE,CAAC;KACf,EAAE,CAAC;IAEJ,8CAA8C;IAC9C,UAAU,EAAE,MAAM,CAAC;IAEnB,2CAA2C;IAC3C,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAEnC,yCAAyC;IACzC,UAAU,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,aAAa;IAC7B,IAAI,EAAE,SAAS,EAAE,CAAC;IAClB,MAAM,EAAE,cAAc,CAAC;IAEvB,+EAA+E;IAC/E,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,iEAAiE;IACjE,IAAI,CAAC,EAAE,aAAa,EAAE,CAAC;IAEvB,kEAAkE;IAClE,KAAK,CAAC,EAAE,cAAc,EAAE,CAAC;IAEzB,sDAAsD;IACtD,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;CACpC;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC9B,OAAO,EAAE,gBAAgB,EAAE,CAAC;IAC5B,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CAC3C;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,gBAAgB,EAAE,CAAC;IAC5B,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CAC3C;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IAClC,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACd;AAED;;GAEG;AACH,MAAM,MAAM,mBAAmB,GAAG,oBAAoB,GAAG,kBAAkB,CAAC;AAE5E;;GAEG;AACH,MAAM,WAAW,WAAW;IAC3B,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,GAAG,IAAI,CAAC;IAC3D,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;CACpC;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC/B,QAAQ,EAAE,KAAK,MAAM,EAAE,cAAc,KAAK;QACzC,OAAO,CACN,IAAI,EAAE,OAAO,EACb,KAAK,EAAE,OAAO,EACd,QAAQ,EAAE,MAAM,OAAO,GACrB,OAAO,CAAC;YACV,OAAO,EAAE,gBAAgB,EAAE,CAAC;YAC5B,MAAM,EAAE;gBAAE,KAAK,EAAE,MAAM,CAAC;gBAAC,KAAK,EAAE,MAAM,CAAA;aAAE,EAAE,CAAC;SAC3C,CAAC,CAAC;KACH,CAAC;CACF;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC/B,iBAAiB,CAAC,QAAQ,EAAE,YAAY,GAAG,OAAO,CAAC;IACnD,kBAAkB,CAAC,QAAQ,EAAE,OAAO,GAAG,OAAO,CAAC;CAC/C;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC5B,IAAI,IAAI,MAAM,EAAE,CAAC;IACjB,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC;CAChC;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC/B,yBAAyB,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;CAC9C;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC3B,eAAe,IAAI,IAAI,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC/B,yBAAyB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3C;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC7B,YAAY,IAAI,OAAO,CAAC,eAAe,CAAC,CAAC;IACzC,YAAY,IAAI,OAAO,CAAC,eAAe,CAAC,CAAC;IACzC,YAAY,IAAI,OAAO,CAAC,eAAe,CAAC,CAAC;IACzC,QAAQ,IAAI,OAAO,CAAC,WAAW,CAAC,CAAC;IACjC,YAAY,IAAI,OAAO,CAAC,eAAe,CAAC,CAAC;CACzC;AAWD;;;;;;GAMG;AACH,qBAAa,cAAc;IAC1B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAc;IACzC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAgB;IAC7C,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IAErC;;;;;OAKG;gBACS,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM;IAMrF;;OAEG;IACI,KAAK,IAAI,IAAI;IAMpB;;OAEG;IACU,aAAa,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAcxD;;;;;;;OAOG;IACU,YAAY,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,cAAc,CAAC;IAe1E;;;OAGG;YACW,kBAAkB;IA0ChC;;;;;;OAMG;YACW,sBAAsB;IA0HpC;;;;;;OAMG;YACW,oBAAoB;CAwGlC"}