ppef 1.0.0 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (336) hide show
  1. package/README.md +172 -0
  2. package/bin/ppef.mjs +20 -0
  3. package/dist/__tests__/framework-pipeline.integration.test.d.ts +7 -0
  4. package/dist/__tests__/framework-pipeline.integration.test.d.ts.map +1 -0
  5. package/dist/__tests__/framework-pipeline.integration.test.js +415 -0
  6. package/dist/__tests__/framework-pipeline.integration.test.js.map +1 -0
  7. package/dist/__tests__/index-exports.unit.test.d.ts +8 -0
  8. package/dist/__tests__/index-exports.unit.test.d.ts.map +1 -0
  9. package/dist/__tests__/index-exports.unit.test.js +127 -0
  10. package/dist/__tests__/index-exports.unit.test.js.map +1 -0
  11. package/dist/__tests__/registry-executor.integration.test.d.ts +5 -0
  12. package/dist/__tests__/registry-executor.integration.test.d.ts.map +1 -0
  13. package/dist/__tests__/registry-executor.integration.test.js +352 -0
  14. package/dist/__tests__/registry-executor.integration.test.js.map +1 -0
  15. package/dist/__tests__/test-helpers.d.ts +94 -0
  16. package/dist/__tests__/test-helpers.d.ts.map +1 -0
  17. package/dist/__tests__/test-helpers.js +271 -0
  18. package/dist/__tests__/test-helpers.js.map +1 -0
  19. package/dist/aggregation/__tests__/aggregators.unit.test.d.ts +7 -0
  20. package/dist/aggregation/__tests__/aggregators.unit.test.d.ts.map +1 -0
  21. package/dist/aggregation/__tests__/aggregators.unit.test.js +350 -0
  22. package/dist/aggregation/__tests__/aggregators.unit.test.js.map +1 -0
  23. package/dist/aggregation/__tests__/pipeline.unit.test.d.ts +7 -0
  24. package/dist/aggregation/__tests__/pipeline.unit.test.d.ts.map +1 -0
  25. package/dist/aggregation/__tests__/pipeline.unit.test.js +213 -0
  26. package/dist/aggregation/__tests__/pipeline.unit.test.js.map +1 -0
  27. package/dist/aggregation/aggregators.d.ts +63 -0
  28. package/dist/aggregation/aggregators.d.ts.map +1 -0
  29. package/dist/aggregation/aggregators.js +228 -0
  30. package/dist/aggregation/aggregators.js.map +1 -0
  31. package/dist/aggregation/index.d.ts +8 -0
  32. package/dist/aggregation/index.d.ts.map +1 -0
  33. package/dist/aggregation/index.js +8 -0
  34. package/dist/aggregation/index.js.map +1 -0
  35. package/dist/aggregation/pipeline.d.ts +38 -0
  36. package/dist/aggregation/pipeline.d.ts.map +1 -0
  37. package/dist/aggregation/pipeline.js +198 -0
  38. package/dist/aggregation/pipeline.js.map +1 -0
  39. package/dist/claims/__tests__/evaluator.unit.test.d.ts +12 -0
  40. package/dist/claims/__tests__/evaluator.unit.test.d.ts.map +1 -0
  41. package/dist/claims/__tests__/evaluator.unit.test.js +801 -0
  42. package/dist/claims/__tests__/evaluator.unit.test.js.map +1 -0
  43. package/dist/claims/evaluator.d.ts +33 -0
  44. package/dist/claims/evaluator.d.ts.map +1 -0
  45. package/dist/claims/evaluator.js +174 -0
  46. package/dist/claims/evaluator.js.map +1 -0
  47. package/dist/claims/index.d.ts +7 -0
  48. package/dist/claims/index.d.ts.map +1 -0
  49. package/dist/claims/index.js +7 -0
  50. package/dist/claims/index.js.map +1 -0
  51. package/dist/cli/__tests__/aggregate.command.unit.test.d.ts +7 -0
  52. package/dist/cli/__tests__/aggregate.command.unit.test.d.ts.map +1 -0
  53. package/dist/cli/__tests__/aggregate.command.unit.test.js +396 -0
  54. package/dist/cli/__tests__/aggregate.command.unit.test.js.map +1 -0
  55. package/dist/cli/__tests__/commands.unit.test.d.ts +10 -0
  56. package/dist/cli/__tests__/commands.unit.test.d.ts.map +1 -0
  57. package/dist/cli/__tests__/commands.unit.test.js +217 -0
  58. package/dist/cli/__tests__/commands.unit.test.js.map +1 -0
  59. package/dist/cli/__tests__/index.unit.test.d.ts +10 -0
  60. package/dist/cli/__tests__/index.unit.test.d.ts.map +1 -0
  61. package/dist/cli/__tests__/index.unit.test.js +65 -0
  62. package/dist/cli/__tests__/index.unit.test.js.map +1 -0
  63. package/dist/cli/__tests__/logger.unit.test.d.ts +11 -0
  64. package/dist/cli/__tests__/logger.unit.test.d.ts.map +1 -0
  65. package/dist/cli/__tests__/logger.unit.test.js +180 -0
  66. package/dist/cli/__tests__/logger.unit.test.js.map +1 -0
  67. package/dist/cli/__tests__/module-loader.unit.test.d.ts +11 -0
  68. package/dist/cli/__tests__/module-loader.unit.test.d.ts.map +1 -0
  69. package/dist/cli/__tests__/module-loader.unit.test.js +262 -0
  70. package/dist/cli/__tests__/module-loader.unit.test.js.map +1 -0
  71. package/dist/cli/__tests__/output-writer.unit.test.d.ts +10 -0
  72. package/dist/cli/__tests__/output-writer.unit.test.d.ts.map +1 -0
  73. package/dist/cli/__tests__/output-writer.unit.test.js +216 -0
  74. package/dist/cli/__tests__/output-writer.unit.test.js.map +1 -0
  75. package/dist/cli/__tests__/plan.command.unit.test.d.ts +7 -0
  76. package/dist/cli/__tests__/plan.command.unit.test.d.ts.map +1 -0
  77. package/dist/cli/__tests__/plan.command.unit.test.js +289 -0
  78. package/dist/cli/__tests__/plan.command.unit.test.js.map +1 -0
  79. package/dist/cli/__tests__/run.command.unit.test.d.ts +7 -0
  80. package/dist/cli/__tests__/run.command.unit.test.d.ts.map +1 -0
  81. package/dist/cli/__tests__/run.command.unit.test.js +422 -0
  82. package/dist/cli/__tests__/run.command.unit.test.js.map +1 -0
  83. package/dist/cli/__tests__/validate.command.unit.test.d.ts +7 -0
  84. package/dist/cli/__tests__/validate.command.unit.test.d.ts.map +1 -0
  85. package/dist/cli/__tests__/validate.command.unit.test.js +226 -0
  86. package/dist/cli/__tests__/validate.command.unit.test.js.map +1 -0
  87. package/dist/cli/command-deps.d.ts +125 -0
  88. package/dist/cli/command-deps.d.ts.map +1 -0
  89. package/dist/cli/command-deps.js +7 -0
  90. package/dist/cli/command-deps.js.map +1 -0
  91. package/dist/cli/commands/aggregate.d.ts +35 -0
  92. package/dist/cli/commands/aggregate.d.ts.map +1 -0
  93. package/dist/cli/commands/aggregate.js +121 -0
  94. package/dist/cli/commands/aggregate.js.map +1 -0
  95. package/dist/cli/commands/plan.d.ts +36 -0
  96. package/dist/cli/commands/plan.d.ts.map +1 -0
  97. package/dist/cli/commands/plan.js +109 -0
  98. package/dist/cli/commands/plan.js.map +1 -0
  99. package/dist/cli/commands/run.d.ts +33 -0
  100. package/dist/cli/commands/run.d.ts.map +1 -0
  101. package/dist/cli/commands/run.js +185 -0
  102. package/dist/cli/commands/run.js.map +1 -0
  103. package/dist/cli/commands/validate.d.ts +27 -0
  104. package/dist/cli/commands/validate.d.ts.map +1 -0
  105. package/dist/cli/commands/validate.js +88 -0
  106. package/dist/cli/commands/validate.js.map +1 -0
  107. package/dist/cli/config-loader.d.ts +30 -0
  108. package/dist/cli/config-loader.d.ts.map +1 -0
  109. package/dist/cli/config-loader.js +181 -0
  110. package/dist/cli/config-loader.js.map +1 -0
  111. package/dist/cli/index.d.ts +26 -0
  112. package/dist/cli/index.d.ts.map +1 -0
  113. package/dist/cli/index.js +58 -0
  114. package/dist/cli/index.js.map +1 -0
  115. package/dist/cli/logger.d.ts +75 -0
  116. package/dist/cli/logger.d.ts.map +1 -0
  117. package/dist/cli/logger.js +131 -0
  118. package/dist/cli/logger.js.map +1 -0
  119. package/dist/cli/module-loader.d.ts +46 -0
  120. package/dist/cli/module-loader.d.ts.map +1 -0
  121. package/dist/cli/module-loader.js +116 -0
  122. package/dist/cli/module-loader.js.map +1 -0
  123. package/dist/cli/output-writer.d.ts +51 -0
  124. package/dist/cli/output-writer.d.ts.map +1 -0
  125. package/dist/cli/output-writer.js +65 -0
  126. package/dist/cli/output-writer.js.map +1 -0
  127. package/dist/cli/types.d.ts +174 -0
  128. package/dist/cli/types.d.ts.map +1 -0
  129. package/dist/cli/types.js +7 -0
  130. package/dist/cli/types.js.map +1 -0
  131. package/dist/collector/__tests__/result-collector.unit.test.d.ts +7 -0
  132. package/dist/collector/__tests__/result-collector.unit.test.d.ts.map +1 -0
  133. package/dist/collector/__tests__/result-collector.unit.test.js +1021 -0
  134. package/dist/collector/__tests__/result-collector.unit.test.js.map +1 -0
  135. package/dist/collector/__tests__/schema.unit.test.d.ts +7 -0
  136. package/dist/collector/__tests__/schema.unit.test.d.ts.map +1 -0
  137. package/dist/collector/__tests__/schema.unit.test.js +360 -0
  138. package/dist/collector/__tests__/schema.unit.test.js.map +1 -0
  139. package/dist/collector/index.d.ts +8 -0
  140. package/dist/collector/index.d.ts.map +1 -0
  141. package/dist/collector/index.js +8 -0
  142. package/dist/collector/index.js.map +1 -0
  143. package/dist/collector/result-collector.d.ts +159 -0
  144. package/dist/collector/result-collector.d.ts.map +1 -0
  145. package/dist/collector/result-collector.js +213 -0
  146. package/dist/collector/result-collector.js.map +1 -0
  147. package/dist/collector/schema.d.ts +34 -0
  148. package/dist/collector/schema.d.ts.map +1 -0
  149. package/dist/collector/schema.js +145 -0
  150. package/dist/collector/schema.js.map +1 -0
  151. package/dist/executor/__tests__/checkpoint-hash-bug.diagnostic.test.d.ts +10 -0
  152. package/dist/executor/__tests__/checkpoint-hash-bug.diagnostic.test.d.ts.map +1 -0
  153. package/dist/executor/__tests__/checkpoint-hash-bug.diagnostic.test.js +122 -0
  154. package/dist/executor/__tests__/checkpoint-hash-bug.diagnostic.test.js.map +1 -0
  155. package/dist/executor/__tests__/checkpoint-manager.integration.test.d.ts +7 -0
  156. package/dist/executor/__tests__/checkpoint-manager.integration.test.d.ts.map +1 -0
  157. package/dist/executor/__tests__/checkpoint-manager.integration.test.js +330 -0
  158. package/dist/executor/__tests__/checkpoint-manager.integration.test.js.map +1 -0
  159. package/dist/executor/__tests__/checkpoint-manager.unit.test.d.ts +7 -0
  160. package/dist/executor/__tests__/checkpoint-manager.unit.test.d.ts.map +1 -0
  161. package/dist/executor/__tests__/checkpoint-manager.unit.test.js +531 -0
  162. package/dist/executor/__tests__/checkpoint-manager.unit.test.js.map +1 -0
  163. package/dist/executor/__tests__/checkpoint-merge-bug.diagnostic.test.d.ts +8 -0
  164. package/dist/executor/__tests__/checkpoint-merge-bug.diagnostic.test.d.ts.map +1 -0
  165. package/dist/executor/__tests__/checkpoint-merge-bug.diagnostic.test.js +493 -0
  166. package/dist/executor/__tests__/checkpoint-merge-bug.diagnostic.test.js.map +1 -0
  167. package/dist/executor/__tests__/checkpoint-merge-bug.unit.test.d.ts +8 -0
  168. package/dist/executor/__tests__/checkpoint-merge-bug.unit.test.d.ts.map +1 -0
  169. package/dist/executor/__tests__/checkpoint-merge-bug.unit.test.js +164 -0
  170. package/dist/executor/__tests__/checkpoint-merge-bug.unit.test.js.map +1 -0
  171. package/dist/executor/__tests__/checkpoint-storage.unit.test.d.ts +7 -0
  172. package/dist/executor/__tests__/checkpoint-storage.unit.test.d.ts.map +1 -0
  173. package/dist/executor/__tests__/checkpoint-storage.unit.test.js +490 -0
  174. package/dist/executor/__tests__/checkpoint-storage.unit.test.js.map +1 -0
  175. package/dist/executor/__tests__/executor.unit.test.d.ts +7 -0
  176. package/dist/executor/__tests__/executor.unit.test.d.ts.map +1 -0
  177. package/dist/executor/__tests__/executor.unit.test.js +202 -0
  178. package/dist/executor/__tests__/executor.unit.test.js.map +1 -0
  179. package/dist/executor/__tests__/memory-monitor.unit.test.d.ts +7 -0
  180. package/dist/executor/__tests__/memory-monitor.unit.test.d.ts.map +1 -0
  181. package/dist/executor/__tests__/memory-monitor.unit.test.js +285 -0
  182. package/dist/executor/__tests__/memory-monitor.unit.test.js.map +1 -0
  183. package/dist/executor/__tests__/parallel-checkpoint-merge.integration.test.d.ts +12 -0
  184. package/dist/executor/__tests__/parallel-checkpoint-merge.integration.test.d.ts.map +1 -0
  185. package/dist/executor/__tests__/parallel-checkpoint-merge.integration.test.js +196 -0
  186. package/dist/executor/__tests__/parallel-checkpoint-merge.integration.test.js.map +1 -0
  187. package/dist/executor/__tests__/parallel-executor.integration.test.d.ts +7 -0
  188. package/dist/executor/__tests__/parallel-executor.integration.test.d.ts.map +1 -0
  189. package/dist/executor/__tests__/parallel-executor.integration.test.js +249 -0
  190. package/dist/executor/__tests__/parallel-executor.integration.test.js.map +1 -0
  191. package/dist/executor/__tests__/parallel-executor.unit.test.d.ts +8 -0
  192. package/dist/executor/__tests__/parallel-executor.unit.test.d.ts.map +1 -0
  193. package/dist/executor/__tests__/parallel-executor.unit.test.js +473 -0
  194. package/dist/executor/__tests__/parallel-executor.unit.test.js.map +1 -0
  195. package/dist/executor/__tests__/run-id.unit.test.d.ts +8 -0
  196. package/dist/executor/__tests__/run-id.unit.test.d.ts.map +1 -0
  197. package/dist/executor/__tests__/run-id.unit.test.js +156 -0
  198. package/dist/executor/__tests__/run-id.unit.test.js.map +1 -0
  199. package/dist/executor/__tests__/worker-entry.integration.test.d.ts +24 -0
  200. package/dist/executor/__tests__/worker-entry.integration.test.d.ts.map +1 -0
  201. package/dist/executor/__tests__/worker-entry.integration.test.js +82 -0
  202. package/dist/executor/__tests__/worker-entry.integration.test.js.map +1 -0
  203. package/dist/executor/__tests__/worker-entry.unit.test.d.ts +7 -0
  204. package/dist/executor/__tests__/worker-entry.unit.test.d.ts.map +1 -0
  205. package/dist/executor/__tests__/worker-entry.unit.test.js +364 -0
  206. package/dist/executor/__tests__/worker-entry.unit.test.js.map +1 -0
  207. package/dist/executor/checkpoint-manager.d.ts +231 -0
  208. package/dist/executor/checkpoint-manager.d.ts.map +1 -0
  209. package/dist/executor/checkpoint-manager.js +395 -0
  210. package/dist/executor/checkpoint-manager.js.map +1 -0
  211. package/dist/executor/checkpoint-storage.d.ts +230 -0
  212. package/dist/executor/checkpoint-storage.d.ts.map +1 -0
  213. package/dist/executor/checkpoint-storage.js +370 -0
  214. package/dist/executor/checkpoint-storage.js.map +1 -0
  215. package/dist/executor/checkpoint-types.d.ts +48 -0
  216. package/dist/executor/checkpoint-types.d.ts.map +1 -0
  217. package/dist/executor/checkpoint-types.js +8 -0
  218. package/dist/executor/checkpoint-types.js.map +1 -0
  219. package/dist/executor/executor.d.ts +164 -0
  220. package/dist/executor/executor.d.ts.map +1 -0
  221. package/dist/executor/executor.js +408 -0
  222. package/dist/executor/executor.js.map +1 -0
  223. package/dist/executor/index.d.ts +11 -0
  224. package/dist/executor/index.d.ts.map +1 -0
  225. package/dist/executor/index.js +11 -0
  226. package/dist/executor/index.js.map +1 -0
  227. package/dist/executor/memory-monitor.d.ts +115 -0
  228. package/dist/executor/memory-monitor.d.ts.map +1 -0
  229. package/dist/executor/memory-monitor.js +168 -0
  230. package/dist/executor/memory-monitor.js.map +1 -0
  231. package/dist/executor/parallel-executor.d.ts +239 -0
  232. package/dist/executor/parallel-executor.d.ts.map +1 -0
  233. package/dist/executor/parallel-executor.js +329 -0
  234. package/dist/executor/parallel-executor.js.map +1 -0
  235. package/dist/executor/run-id.d.ts +71 -0
  236. package/dist/executor/run-id.d.ts.map +1 -0
  237. package/dist/executor/run-id.js +74 -0
  238. package/dist/executor/run-id.js.map +1 -0
  239. package/dist/executor/worker-entry.d.ts +10 -0
  240. package/dist/executor/worker-entry.d.ts.map +1 -0
  241. package/dist/executor/worker-entry.js +42 -0
  242. package/dist/executor/worker-entry.js.map +1 -0
  243. package/dist/executor/worker-executor.d.ts +156 -0
  244. package/dist/executor/worker-executor.d.ts.map +1 -0
  245. package/dist/executor/worker-executor.js +88 -0
  246. package/dist/executor/worker-executor.js.map +1 -0
  247. package/dist/index.cjs +11 -0
  248. package/dist/index.d.ts +15 -0
  249. package/dist/index.d.ts.map +1 -0
  250. package/dist/index.js +24 -0
  251. package/dist/index.js.map +1 -0
  252. package/dist/registry/case-registry.d.ts +113 -0
  253. package/dist/registry/case-registry.d.ts.map +1 -0
  254. package/dist/registry/case-registry.js +160 -0
  255. package/dist/registry/case-registry.js.map +1 -0
  256. package/dist/registry/index.d.ts +8 -0
  257. package/dist/registry/index.d.ts.map +1 -0
  258. package/dist/registry/index.js +8 -0
  259. package/dist/registry/index.js.map +1 -0
  260. package/dist/registry/sut-registry.d.ts +96 -0
  261. package/dist/registry/sut-registry.d.ts.map +1 -0
  262. package/dist/registry/sut-registry.js +126 -0
  263. package/dist/registry/sut-registry.js.map +1 -0
  264. package/dist/renderers/index.d.ts +10 -0
  265. package/dist/renderers/index.d.ts.map +1 -0
  266. package/dist/renderers/index.js +9 -0
  267. package/dist/renderers/index.js.map +1 -0
  268. package/dist/renderers/latex-renderer.d.ts +84 -0
  269. package/dist/renderers/latex-renderer.d.ts.map +1 -0
  270. package/dist/renderers/latex-renderer.js +208 -0
  271. package/dist/renderers/latex-renderer.js.map +1 -0
  272. package/dist/renderers/types.d.ts +106 -0
  273. package/dist/renderers/types.d.ts.map +1 -0
  274. package/dist/renderers/types.js +23 -0
  275. package/dist/renderers/types.js.map +1 -0
  276. package/dist/robustness/__tests__/analyzer.unit.test.d.ts +11 -0
  277. package/dist/robustness/__tests__/analyzer.unit.test.d.ts.map +1 -0
  278. package/dist/robustness/__tests__/analyzer.unit.test.js +455 -0
  279. package/dist/robustness/__tests__/analyzer.unit.test.js.map +1 -0
  280. package/dist/robustness/__tests__/perturbations.unit.test.d.ts +11 -0
  281. package/dist/robustness/__tests__/perturbations.unit.test.d.ts.map +1 -0
  282. package/dist/robustness/__tests__/perturbations.unit.test.js +284 -0
  283. package/dist/robustness/__tests__/perturbations.unit.test.js.map +1 -0
  284. package/dist/robustness/analyzer.d.ts +61 -0
  285. package/dist/robustness/analyzer.d.ts.map +1 -0
  286. package/dist/robustness/analyzer.js +191 -0
  287. package/dist/robustness/analyzer.js.map +1 -0
  288. package/dist/robustness/index.d.ts +8 -0
  289. package/dist/robustness/index.d.ts.map +1 -0
  290. package/dist/robustness/index.js +8 -0
  291. package/dist/robustness/index.js.map +1 -0
  292. package/dist/robustness/perturbations.d.ts +46 -0
  293. package/dist/robustness/perturbations.d.ts.map +1 -0
  294. package/dist/robustness/perturbations.js +184 -0
  295. package/dist/robustness/perturbations.js.map +1 -0
  296. package/dist/statistical/__tests__/mann-whitney-u.unit.test.d.ts +7 -0
  297. package/dist/statistical/__tests__/mann-whitney-u.unit.test.d.ts.map +1 -0
  298. package/dist/statistical/__tests__/mann-whitney-u.unit.test.js +185 -0
  299. package/dist/statistical/__tests__/mann-whitney-u.unit.test.js.map +1 -0
  300. package/dist/statistical/index.d.ts +8 -0
  301. package/dist/statistical/index.d.ts.map +1 -0
  302. package/dist/statistical/index.js +8 -0
  303. package/dist/statistical/index.js.map +1 -0
  304. package/dist/statistical/mann-whitney-u.d.ts +62 -0
  305. package/dist/statistical/mann-whitney-u.d.ts.map +1 -0
  306. package/dist/statistical/mann-whitney-u.js +127 -0
  307. package/dist/statistical/mann-whitney-u.js.map +1 -0
  308. package/dist/types/aggregate.d.ts +124 -0
  309. package/dist/types/aggregate.d.ts.map +1 -0
  310. package/dist/types/aggregate.js +9 -0
  311. package/dist/types/aggregate.js.map +1 -0
  312. package/dist/types/case.d.ts +105 -0
  313. package/dist/types/case.d.ts.map +1 -0
  314. package/dist/types/case.js +10 -0
  315. package/dist/types/case.js.map +1 -0
  316. package/dist/types/claims.d.ts +122 -0
  317. package/dist/types/claims.d.ts.map +1 -0
  318. package/dist/types/claims.js +14 -0
  319. package/dist/types/claims.js.map +1 -0
  320. package/dist/types/index.d.ts +12 -0
  321. package/dist/types/index.d.ts.map +1 -0
  322. package/dist/types/index.js +7 -0
  323. package/dist/types/index.js.map +1 -0
  324. package/dist/types/perturbation.d.ts +105 -0
  325. package/dist/types/perturbation.d.ts.map +1 -0
  326. package/dist/types/perturbation.js +9 -0
  327. package/dist/types/perturbation.js.map +1 -0
  328. package/dist/types/result.d.ts +150 -0
  329. package/dist/types/result.d.ts.map +1 -0
  330. package/dist/types/result.js +12 -0
  331. package/dist/types/result.js.map +1 -0
  332. package/dist/types/sut.d.ts +128 -0
  333. package/dist/types/sut.d.ts.map +1 -0
  334. package/dist/types/sut.js +12 -0
  335. package/dist/types/sut.js.map +1 -0
  336. package/package.json +290 -7
@@ -0,0 +1,96 @@
1
+ /**
2
+ * SUT Registry
3
+ *
4
+ * Central registry for System Under Test definitions. SUTs are registered
5
+ * with their factories and metadata, enabling lazy instantiation during
6
+ * experiment execution.
7
+ */
8
+ import type { SUT, SutDefinition, SutFactory, SutRegistration, SutRole } from "../types/sut.js";
9
+ /**
10
+ * Registry for System Under Test definitions.
11
+ *
12
+ * @template TInputs - The algorithm inputs type
13
+ * @template TResult - The algorithm result type
14
+ */
15
+ export declare class SUTRegistry<TInputs = unknown, TResult = unknown> {
16
+ private readonly definitions;
17
+ /**
18
+ * Register a new SUT.
19
+ *
20
+ * @param registration - SUT metadata
21
+ * @param factory - Factory for creating SUT instances
22
+ * @throws Error if SUT with same ID already registered
23
+ */
24
+ register(registration: SutRegistration, factory: SutFactory<TInputs, TResult>): this;
25
+ /**
26
+ * Get a SUT definition by ID.
27
+ *
28
+ * @param id - SUT identifier
29
+ * @returns SUT definition or undefined
30
+ */
31
+ get(id: string): SutDefinition<TInputs, TResult> | undefined;
32
+ /**
33
+ * Get a SUT definition by ID, throwing if not found.
34
+ *
35
+ * @param id - SUT identifier
36
+ * @returns SUT definition
37
+ * @throws Error if SUT not found
38
+ */
39
+ getOrThrow(id: string): SutDefinition<TInputs, TResult>;
40
+ /**
41
+ * Get all SUTs with a specific role.
42
+ *
43
+ * @param role - Role to filter by
44
+ * @returns Array of matching SUT definitions
45
+ */
46
+ getByRole(role: SutRole): SutDefinition<TInputs, TResult>[];
47
+ /**
48
+ * Get all SUTs with a specific tag.
49
+ *
50
+ * @param tag - Tag to filter by
51
+ * @returns Array of matching SUT definitions
52
+ */
53
+ getByTag(tag: string): SutDefinition<TInputs, TResult>[];
54
+ /**
55
+ * List all registered SUT IDs.
56
+ *
57
+ * @returns Array of SUT identifiers
58
+ */
59
+ list(): string[];
60
+ /**
61
+ * List all registered SUT registrations.
62
+ *
63
+ * @returns Array of SUT registrations
64
+ */
65
+ listRegistrations(): SutRegistration[];
66
+ /**
67
+ * Check if a SUT is registered.
68
+ *
69
+ * @param id - SUT identifier
70
+ * @returns true if registered
71
+ */
72
+ has(id: string): boolean;
73
+ /**
74
+ * Get the number of registered SUTs.
75
+ */
76
+ get size(): number;
77
+ /**
78
+ * Clear all registrations.
79
+ */
80
+ clear(): void;
81
+ /**
82
+ * Create a new SUT instance.
83
+ *
84
+ * @param id - SUT identifier
85
+ * @param config - Optional configuration overrides
86
+ * @returns SUT instance ready for execution
87
+ */
88
+ create(id: string, config?: Record<string, unknown>): SUT<TInputs, TResult>;
89
+ }
90
+ /**
91
+ * Global SUT registry instance.
92
+ *
93
+ * Use this for standard registration, or create instances for isolation.
94
+ */
95
+ export declare const sutRegistry: SUTRegistry<unknown, unknown>;
96
+ //# sourceMappingURL=sut-registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sut-registry.d.ts","sourceRoot":"","sources":["../../src/registry/sut-registry.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,GAAG,EAAE,aAAa,EAAE,UAAU,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAEhG;;;;;GAKG;AACH,qBAAa,WAAW,CAAC,OAAO,GAAG,OAAO,EAAE,OAAO,GAAG,OAAO;IAC5D,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAsD;IAElF;;;;;;OAMG;IACH,QAAQ,CAAC,YAAY,EAAE,eAAe,EAAE,OAAO,EAAE,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,GAAG,IAAI;IASpF;;;;;OAKG;IACH,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,aAAa,CAAC,OAAO,EAAE,OAAO,CAAC,GAAG,SAAS;IAI5D;;;;;;OAMG;IACH,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,aAAa,CAAC,OAAO,EAAE,OAAO,CAAC;IAQvD;;;;;OAKG;IACH,SAAS,CAAC,IAAI,EAAE,OAAO,GAAG,aAAa,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE;IAI3D;;;;;OAKG;IACH,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,aAAa,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE;IAIxD;;;;OAIG;IACH,IAAI,IAAI,MAAM,EAAE;IAIhB;;;;OAIG;IACH,iBAAiB,IAAI,eAAe,EAAE;IAItC;;;;;OAKG;IACH,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAIxB;;OAEG;IACH,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED;;OAEG;IACH,KAAK,IAAI,IAAI;IAIb;;;;;;OAMG;IACH,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC;CAI3E;AAED;;;;GAIG;AACH,eAAO,MAAM,WAAW,+BAAoB,CAAC"}
@@ -0,0 +1,126 @@
1
+ /**
2
+ * SUT Registry
3
+ *
4
+ * Central registry for System Under Test definitions. SUTs are registered
5
+ * with their factories and metadata, enabling lazy instantiation during
6
+ * experiment execution.
7
+ */
8
+ /**
9
+ * Registry for System Under Test definitions.
10
+ *
11
+ * @template TInputs - The algorithm inputs type
12
+ * @template TResult - The algorithm result type
13
+ */
14
+ export class SUTRegistry {
15
+ definitions = new Map();
16
+ /**
17
+ * Register a new SUT.
18
+ *
19
+ * @param registration - SUT metadata
20
+ * @param factory - Factory for creating SUT instances
21
+ * @throws Error if SUT with same ID already registered
22
+ */
23
+ register(registration, factory) {
24
+ if (this.definitions.has(registration.id)) {
25
+ throw new Error(`SUT already registered: ${registration.id}`);
26
+ }
27
+ this.definitions.set(registration.id, { registration, factory });
28
+ return this;
29
+ }
30
+ /**
31
+ * Get a SUT definition by ID.
32
+ *
33
+ * @param id - SUT identifier
34
+ * @returns SUT definition or undefined
35
+ */
36
+ get(id) {
37
+ return this.definitions.get(id);
38
+ }
39
+ /**
40
+ * Get a SUT definition by ID, throwing if not found.
41
+ *
42
+ * @param id - SUT identifier
43
+ * @returns SUT definition
44
+ * @throws Error if SUT not found
45
+ */
46
+ getOrThrow(id) {
47
+ const definition = this.definitions.get(id);
48
+ if (!definition) {
49
+ throw new Error(`SUT not found: ${id}`);
50
+ }
51
+ return definition;
52
+ }
53
+ /**
54
+ * Get all SUTs with a specific role.
55
+ *
56
+ * @param role - Role to filter by
57
+ * @returns Array of matching SUT definitions
58
+ */
59
+ getByRole(role) {
60
+ return [...this.definitions.values()].filter((d) => d.registration.role === role);
61
+ }
62
+ /**
63
+ * Get all SUTs with a specific tag.
64
+ *
65
+ * @param tag - Tag to filter by
66
+ * @returns Array of matching SUT definitions
67
+ */
68
+ getByTag(tag) {
69
+ return [...this.definitions.values()].filter((d) => d.registration.tags.includes(tag));
70
+ }
71
+ /**
72
+ * List all registered SUT IDs.
73
+ *
74
+ * @returns Array of SUT identifiers
75
+ */
76
+ list() {
77
+ return [...this.definitions.keys()];
78
+ }
79
+ /**
80
+ * List all registered SUT registrations.
81
+ *
82
+ * @returns Array of SUT registrations
83
+ */
84
+ listRegistrations() {
85
+ return [...this.definitions.values()].map((d) => d.registration);
86
+ }
87
+ /**
88
+ * Check if a SUT is registered.
89
+ *
90
+ * @param id - SUT identifier
91
+ * @returns true if registered
92
+ */
93
+ has(id) {
94
+ return this.definitions.has(id);
95
+ }
96
+ /**
97
+ * Get the number of registered SUTs.
98
+ */
99
+ get size() {
100
+ return this.definitions.size;
101
+ }
102
+ /**
103
+ * Clear all registrations.
104
+ */
105
+ clear() {
106
+ this.definitions.clear();
107
+ }
108
+ /**
109
+ * Create a new SUT instance.
110
+ *
111
+ * @param id - SUT identifier
112
+ * @param config - Optional configuration overrides
113
+ * @returns SUT instance ready for execution
114
+ */
115
+ create(id, config) {
116
+ const definition = this.getOrThrow(id);
117
+ return definition.factory(config);
118
+ }
119
+ }
120
+ /**
121
+ * Global SUT registry instance.
122
+ *
123
+ * Use this for standard registration, or create instances for isolation.
124
+ */
125
+ export const sutRegistry = new SUTRegistry();
126
+ //# sourceMappingURL=sut-registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sut-registry.js","sourceRoot":"","sources":["../../src/registry/sut-registry.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH;;;;;GAKG;AACH,MAAM,OAAO,WAAW;IACN,WAAW,GAAG,IAAI,GAAG,EAA2C,CAAC;IAElF;;;;;;OAMG;IACH,QAAQ,CAAC,YAA6B,EAAE,OAAqC;QAC5E,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC,EAAE,CAAC;YAC3C,MAAM,IAAI,KAAK,CAAC,2BAA2B,YAAY,CAAC,EAAE,EAAE,CAAC,CAAC;QAC/D,CAAC;QAED,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,YAAY,EAAE,OAAO,EAAE,CAAC,CAAC;QACjE,OAAO,IAAI,CAAC;IACb,CAAC;IAED;;;;;OAKG;IACH,GAAG,CAAC,EAAU;QACb,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACjC,CAAC;IAED;;;;;;OAMG;IACH,UAAU,CAAC,EAAU;QACpB,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC5C,IAAI,CAAC,UAAU,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAAC;QACzC,CAAC;QACD,OAAO,UAAU,CAAC;IACnB,CAAC;IAED;;;;;OAKG;IACH,SAAS,CAAC,IAAa;QACtB,OAAO,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;IACnF,CAAC;IAED;;;;;OAKG;IACH,QAAQ,CAAC,GAAW;QACnB,OAAO,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;IACxF,CAAC;IAED;;;;OAIG;IACH,IAAI;QACH,OAAO,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC;IACrC,CAAC;IAED;;;;OAIG;IACH,iBAAiB;QAChB,OAAO,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;IAClE,CAAC;IAED;;;;;OAKG;IACH,GAAG,CAAC,EAAU;QACb,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACjC,CAAC;IAED;;OAEG;IACH,IAAI,IAAI;QACP,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;IAC9B,CAAC;IAED;;OAEG;IACH,KAAK;QACJ,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;IAC1B,CAAC;IAED;;;;;;OAMG;IACH,MAAM,CAAC,EAAU,EAAE,MAAgC;QAClD,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;QACvC,OAAO,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACnC,CAAC;CACD;AAED;;;;GAIG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Renderers - Export module
3
+ *
4
+ * Pure transformation layer for converting aggregated results
5
+ * into human-readable output formats.
6
+ */
7
+ export type { ColumnSpec, RenderOutput, Renderer, TableRenderSpec, ClaimStatusDisplay, } from "./types.js";
8
+ export { LATEX_CLAIM_STATUS, UNICODE_CLAIM_STATUS } from "./types.js";
9
+ export { LaTeXRenderer, createLatexRenderer, escapeLatex, type LaTeXRendererOptions, } from "./latex-renderer.js";
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/renderers/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,YAAY,EACX,UAAU,EACV,YAAY,EACZ,QAAQ,EACR,eAAe,EACf,kBAAkB,GAClB,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAEtE,OAAO,EACN,aAAa,EACb,mBAAmB,EACnB,WAAW,EACX,KAAK,oBAAoB,GACzB,MAAM,qBAAqB,CAAC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Renderers - Export module
3
+ *
4
+ * Pure transformation layer for converting aggregated results
5
+ * into human-readable output formats.
6
+ */
7
+ export { LATEX_CLAIM_STATUS, UNICODE_CLAIM_STATUS } from "./types.js";
8
+ export { LaTeXRenderer, createLatexRenderer, escapeLatex, } from "./latex-renderer.js";
9
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/renderers/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAUH,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAEtE,OAAO,EACN,aAAa,EACb,mBAAmB,EACnB,WAAW,GAEX,MAAM,qBAAqB,CAAC"}
@@ -0,0 +1,84 @@
1
+ /**
2
+ * LaTeX Renderer
3
+ *
4
+ * Pure transformation from aggregated results to LaTeX tables.
5
+ * NO aggregation logic allowed here - only formatting and rendering.
6
+ */
7
+ import type { AggregatedResult } from "../types/aggregate.js";
8
+ import type { ClaimEvaluation } from "../types/claims.js";
9
+ import type { ClaimStatusDisplay, Renderer, RenderOutput, TableRenderSpec } from "./types.js";
10
+ /**
11
+ * Options for LaTeX rendering.
12
+ */
13
+ export interface LaTeXRendererOptions {
14
+ /** Claim status symbols */
15
+ claimStatus?: ClaimStatusDisplay;
16
+ /** Whether to use booktabs package */
17
+ booktabs?: boolean;
18
+ /** Default number format decimals */
19
+ defaultDecimals?: number;
20
+ }
21
+ /**
22
+ * LaTeX table renderer.
23
+ */
24
+ export declare class LaTeXRenderer implements Renderer {
25
+ private readonly options;
26
+ constructor(options?: Partial<LaTeXRendererOptions>);
27
+ /**
28
+ * Render a single table.
29
+ * @param aggregates
30
+ * @param spec
31
+ */
32
+ renderTable(aggregates: AggregatedResult[], spec: TableRenderSpec): RenderOutput;
33
+ /**
34
+ * Render all tables.
35
+ * @param aggregates
36
+ * @param specs
37
+ */
38
+ renderAll(aggregates: AggregatedResult[], specs: TableRenderSpec[]): RenderOutput[];
39
+ /**
40
+ * Render claim evaluation summary.
41
+ * @param evaluations
42
+ */
43
+ renderClaimSummary(evaluations: ClaimEvaluation[]): RenderOutput;
44
+ /**
45
+ * Build a LaTeX table from data.
46
+ * @param data
47
+ * @param columns
48
+ * @param caption
49
+ * @param label
50
+ */
51
+ private buildTable;
52
+ /**
53
+ * Format a value for LaTeX.
54
+ * @param value
55
+ */
56
+ private formatValue;
57
+ /**
58
+ * Format a number with configurable decimals.
59
+ * @param n
60
+ * @param decimals
61
+ */
62
+ formatNumber(n: number, decimals?: number): string;
63
+ /**
64
+ * Format a speedup ratio.
65
+ * @param ratio
66
+ */
67
+ formatSpeedup(ratio: number): string;
68
+ /**
69
+ * Format a percentage.
70
+ * @param n
71
+ */
72
+ formatPercentage(n: number): string;
73
+ }
74
+ /**
75
+ * Escape special LaTeX characters.
76
+ * @param text
77
+ */
78
+ export declare const escapeLatex: (text: string) => string;
79
+ /**
80
+ * Create a LaTeX renderer with default options.
81
+ * @param options
82
+ */
83
+ export declare const createLatexRenderer: (options?: Partial<LaTeXRendererOptions>) => LaTeXRenderer;
84
+ //# sourceMappingURL=latex-renderer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"latex-renderer.d.ts","sourceRoot":"","sources":["../../src/renderers/latex-renderer.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,KAAK,EAAE,eAAe,EAAe,MAAM,oBAAoB,CAAC;AACvE,OAAO,KAAK,EACX,kBAAkB,EAElB,QAAQ,EACR,YAAY,EACZ,eAAe,EACf,MAAM,YAAY,CAAC;AAGpB;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACpC,2BAA2B;IAC3B,WAAW,CAAC,EAAE,kBAAkB,CAAC;IAEjC,sCAAsC;IACtC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB,qCAAqC;IACrC,eAAe,CAAC,EAAE,MAAM,CAAC;CACzB;AAWD;;GAEG;AACH,qBAAa,aAAc,YAAW,QAAQ;IAC7C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAuB;gBAEnC,OAAO,GAAE,OAAO,CAAC,oBAAoB,CAAM;IAIvD;;;;OAIG;IACH,WAAW,CAAC,UAAU,EAAE,gBAAgB,EAAE,EAAE,IAAI,EAAE,eAAe,GAAG,YAAY;IAgChF;;;;OAIG;IACH,SAAS,CAAC,UAAU,EAAE,gBAAgB,EAAE,EAAE,KAAK,EAAE,eAAe,EAAE,GAAG,YAAY,EAAE;IAInF;;;OAGG;IACH,kBAAkB,CAAC,WAAW,EAAE,eAAe,EAAE,GAAG,YAAY;IAmDhE;;;;;;OAMG;IACH,OAAO,CAAC,UAAU;IAwClB;;;OAGG;IACH,OAAO,CAAC,WAAW;IAanB;;;;OAIG;IACH,YAAY,CAAC,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM;IAOlD;;;OAGG;IACH,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAOpC;;;OAGG;IACH,gBAAgB,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM;CAMnC;AAED;;;GAGG;AACH,eAAO,MAAM,WAAW,GAAI,MAAM,MAAM,KAAG,MAKO,CAAC;AAEnD;;;GAGG;AACH,eAAO,MAAM,mBAAmB,GAAI,UAAU,OAAO,CAAC,oBAAoB,CAAC,KAAG,aACnD,CAAC"}
@@ -0,0 +1,208 @@
1
+ /**
2
+ * LaTeX Renderer
3
+ *
4
+ * Pure transformation from aggregated results to LaTeX tables.
5
+ * NO aggregation logic allowed here - only formatting and rendering.
6
+ */
7
+ import { LATEX_CLAIM_STATUS } from "./types.js";
8
+ /**
9
+ * Default LaTeX renderer options.
10
+ */
11
+ const DEFAULT_OPTIONS = {
12
+ claimStatus: LATEX_CLAIM_STATUS,
13
+ booktabs: true,
14
+ defaultDecimals: 2,
15
+ };
16
+ /**
17
+ * LaTeX table renderer.
18
+ */
19
+ export class LaTeXRenderer {
20
+ options;
21
+ constructor(options = {}) {
22
+ this.options = { ...DEFAULT_OPTIONS, ...options };
23
+ }
24
+ /**
25
+ * Render a single table.
26
+ * @param aggregates
27
+ * @param spec
28
+ */
29
+ renderTable(aggregates, spec) {
30
+ // Extract and transform data
31
+ let data = spec.extractData(aggregates);
32
+ // Apply filter if specified
33
+ // Note: filter is for aggregates, not extracted data
34
+ // This is handled in extractData
35
+ // Apply sort if specified
36
+ if (spec.sort) {
37
+ data = [...data].sort(spec.sort);
38
+ }
39
+ // Compute caption placeholders
40
+ let caption = spec.caption;
41
+ if (spec.captionPlaceholders) {
42
+ for (const [placeholder, compute] of Object.entries(spec.captionPlaceholders)) {
43
+ caption = caption.replace(`{${placeholder}}`, compute(aggregates));
44
+ }
45
+ }
46
+ // Build LaTeX
47
+ const content = this.buildTable(data, spec.columns, caption, spec.label);
48
+ return {
49
+ id: spec.id,
50
+ filename: spec.filename,
51
+ content,
52
+ format: "latex",
53
+ };
54
+ }
55
+ /**
56
+ * Render all tables.
57
+ * @param aggregates
58
+ * @param specs
59
+ */
60
+ renderAll(aggregates, specs) {
61
+ return specs.map((spec) => this.renderTable(aggregates, spec));
62
+ }
63
+ /**
64
+ * Render claim evaluation summary.
65
+ * @param evaluations
66
+ */
67
+ renderClaimSummary(evaluations) {
68
+ const statusSymbol = (status) => {
69
+ return this.options.claimStatus?.[status] ?? status;
70
+ };
71
+ // Build table rows
72
+ const rows = [];
73
+ for (const evaluation of evaluations) {
74
+ const symbol = statusSymbol(evaluation.status);
75
+ const delta = this.formatNumber(evaluation.evidence.delta, 3);
76
+ const pValue = evaluation.evidence.pValue === undefined
77
+ ? "--"
78
+ : this.formatNumber(evaluation.evidence.pValue, 4);
79
+ rows.push(` ${escapeLatex(evaluation.claim.claimId)} & ` +
80
+ `${escapeLatex(evaluation.claim.description)} & ` +
81
+ `$${symbol}$ & ${delta} & ${pValue} \\\\`);
82
+ }
83
+ // Count summary
84
+ const satisfied = evaluations.filter((e) => e.status === "satisfied").length;
85
+ const violated = evaluations.filter((e) => e.status === "violated").length;
86
+ const inconclusive = evaluations.filter((e) => e.status === "inconclusive").length;
87
+ const caption = `Claim evaluation summary. ${satisfied} satisfied, ${violated} violated, ${inconclusive} inconclusive.`;
88
+ const content = String.raw `\begin{table}[htbp]
89
+ \centering
90
+ \caption{${caption}}
91
+ \label{tab:claim-summary}
92
+ \begin{tabular}{llccc}
93
+ \toprule
94
+ Claim & Description & Status & Delta & p-value \\
95
+ \midrule
96
+ ${rows.join("\n")}
97
+ \bottomrule
98
+ \end{tabular}
99
+ \end{table}
100
+ `;
101
+ return {
102
+ id: "claim-summary",
103
+ filename: "claim-summary.tex",
104
+ content,
105
+ format: "latex",
106
+ };
107
+ }
108
+ /**
109
+ * Build a LaTeX table from data.
110
+ * @param data
111
+ * @param columns
112
+ * @param caption
113
+ * @param label
114
+ */
115
+ buildTable(data, columns, caption, label) {
116
+ const columnSpec = columns.map((c) => c.align).join("");
117
+ const headers = columns.map((c) => c.header).join(" & ");
118
+ const rows = data.map((row) => {
119
+ const cells = columns.map((col) => {
120
+ const value = row[col.key];
121
+ let formatted = col.format ? col.format(value) : this.formatValue(value);
122
+ if (col.bold) {
123
+ formatted = String.raw `\textbf{${formatted}}`;
124
+ }
125
+ return formatted;
126
+ });
127
+ return ` ${cells.join(" & ")} \\\\`;
128
+ });
129
+ const rules = this.options.booktabs
130
+ ? { top: String.raw `\toprule`, mid: String.raw `\midrule`, bottom: String.raw `\bottomrule` }
131
+ : { top: String.raw `\hline`, mid: String.raw `\hline`, bottom: String.raw `\hline` };
132
+ return String.raw `\begin{table}[htbp]
133
+ \centering
134
+ \caption{${caption}}
135
+ \label{${label}}
136
+ \begin{tabular}{${columnSpec}}
137
+ ${rules.top}
138
+ ${headers} \\
139
+ ${rules.mid}
140
+ ${rows.join("\n")}
141
+ ${rules.bottom}
142
+ \end{tabular}
143
+ \end{table}
144
+ `;
145
+ }
146
+ /**
147
+ * Format a value for LaTeX.
148
+ * @param value
149
+ */
150
+ formatValue(value) {
151
+ if (value === null || value === undefined) {
152
+ return "--";
153
+ }
154
+ if (typeof value === "number") {
155
+ return this.formatNumber(value);
156
+ }
157
+ if (typeof value === "string") {
158
+ return escapeLatex(value);
159
+ }
160
+ return escapeLatex(JSON.stringify(value));
161
+ }
162
+ /**
163
+ * Format a number with configurable decimals.
164
+ * @param n
165
+ * @param decimals
166
+ */
167
+ formatNumber(n, decimals) {
168
+ if (!Number.isFinite(n)) {
169
+ return "--";
170
+ }
171
+ return n.toFixed(decimals ?? this.options.defaultDecimals ?? 2);
172
+ }
173
+ /**
174
+ * Format a speedup ratio.
175
+ * @param ratio
176
+ */
177
+ formatSpeedup(ratio) {
178
+ if (!Number.isFinite(ratio)) {
179
+ return "--";
180
+ }
181
+ return String.raw `$${ratio.toFixed(2)}\times$`;
182
+ }
183
+ /**
184
+ * Format a percentage.
185
+ * @param n
186
+ */
187
+ formatPercentage(n) {
188
+ if (!Number.isFinite(n)) {
189
+ return "--";
190
+ }
191
+ return String.raw `${Math.round(n)}\%`;
192
+ }
193
+ }
194
+ /**
195
+ * Escape special LaTeX characters.
196
+ * @param text
197
+ */
198
+ export const escapeLatex = (text) => text
199
+ .replaceAll("\\", String.raw `\textbackslash{}`)
200
+ .replaceAll(/[&%$#_{}]/g, String.raw `\$&`)
201
+ .replaceAll("~", String.raw `\textasciitilde{}`)
202
+ .replaceAll("^", String.raw `\textasciicircum{}`);
203
+ /**
204
+ * Create a LaTeX renderer with default options.
205
+ * @param options
206
+ */
207
+ export const createLatexRenderer = (options) => new LaTeXRenderer(options);
208
+ //# sourceMappingURL=latex-renderer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"latex-renderer.js","sourceRoot":"","sources":["../../src/renderers/latex-renderer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,106 @@
1
+ /**
2
+ * Renderer Type Definitions
3
+ *
4
+ * Types for the rendering layer that transforms aggregated results
5
+ * into human-readable output formats (LaTeX, Markdown, etc.).
6
+ */
7
+ import type { AggregatedResult } from "../types/aggregate.js";
8
+ import type { ClaimEvaluation } from "../types/claims.js";
9
+ /**
10
+ * Column specification for a table.
11
+ */
12
+ export interface ColumnSpec {
13
+ /** Column key (matches field in data) */
14
+ key: string;
15
+ /** Column header text */
16
+ header: string;
17
+ /** LaTeX column alignment (l, r, c) */
18
+ align: "l" | "r" | "c";
19
+ /** Format function for values */
20
+ format?: (value: unknown) => string;
21
+ /** Whether to bold this column's values */
22
+ bold?: boolean;
23
+ /** Whether this column is sortable */
24
+ sortable?: boolean;
25
+ }
26
+ /**
27
+ * Table render specification.
28
+ */
29
+ export interface TableRenderSpec {
30
+ /** Table identifier */
31
+ id: string;
32
+ /** Output filename */
33
+ filename: string;
34
+ /** LaTeX label */
35
+ label: string;
36
+ /** Table caption (can include placeholders like {SPEEDUP}) */
37
+ caption: string;
38
+ /** Column specifications */
39
+ columns: ColumnSpec[];
40
+ /** Data extraction function */
41
+ extractData: (aggregates: AggregatedResult[]) => Record<string, unknown>[];
42
+ /** Optional filter predicate */
43
+ filter?: (aggregate: AggregatedResult) => boolean;
44
+ /** Optional sort function */
45
+ sort?: (a: Record<string, unknown>, b: Record<string, unknown>) => number;
46
+ /** Caption placeholders to compute */
47
+ captionPlaceholders?: Record<string, (aggregates: AggregatedResult[]) => string>;
48
+ }
49
+ /**
50
+ * Render output.
51
+ */
52
+ export interface RenderOutput {
53
+ /** Table/document identifier */
54
+ id: string;
55
+ /** Filename for output */
56
+ filename: string;
57
+ /** Rendered content */
58
+ content: string;
59
+ /** Format type */
60
+ format: "latex" | "markdown" | "json";
61
+ }
62
+ /**
63
+ * Renderer interface.
64
+ */
65
+ export interface Renderer {
66
+ /**
67
+ * Render a single table.
68
+ *
69
+ * @param aggregates - Aggregated results
70
+ * @param spec - Table specification
71
+ * @returns Rendered output
72
+ */
73
+ renderTable(aggregates: AggregatedResult[], spec: TableRenderSpec): RenderOutput;
74
+ /**
75
+ * Render all tables from specifications.
76
+ *
77
+ * @param aggregates - Aggregated results
78
+ * @param specs - Table specifications
79
+ * @returns Array of rendered outputs
80
+ */
81
+ renderAll(aggregates: AggregatedResult[], specs: TableRenderSpec[]): RenderOutput[];
82
+ /**
83
+ * Render claim evaluation summary.
84
+ *
85
+ * @param evaluations - Claim evaluations
86
+ * @returns Rendered output
87
+ */
88
+ renderClaimSummary(evaluations: ClaimEvaluation[]): RenderOutput;
89
+ }
90
+ /**
91
+ * Claim status display configuration.
92
+ */
93
+ export interface ClaimStatusDisplay {
94
+ satisfied: string;
95
+ violated: string;
96
+ inconclusive: string;
97
+ }
98
+ /**
99
+ * Default claim status symbols for LaTeX.
100
+ */
101
+ export declare const LATEX_CLAIM_STATUS: ClaimStatusDisplay;
102
+ /**
103
+ * Default claim status symbols for Unicode.
104
+ */
105
+ export declare const UNICODE_CLAIM_STATUS: ClaimStatusDisplay;
106
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/renderers/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAE1D;;GAEG;AACH,MAAM,WAAW,UAAU;IAC1B,yCAAyC;IACzC,GAAG,EAAE,MAAM,CAAC;IAEZ,yBAAyB;IACzB,MAAM,EAAE,MAAM,CAAC;IAEf,uCAAuC;IACvC,KAAK,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;IAEvB,iCAAiC;IACjC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,MAAM,CAAC;IAEpC,2CAA2C;IAC3C,IAAI,CAAC,EAAE,OAAO,CAAC;IAEf,sCAAsC;IACtC,QAAQ,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC/B,uBAAuB;IACvB,EAAE,EAAE,MAAM,CAAC;IAEX,sBAAsB;IACtB,QAAQ,EAAE,MAAM,CAAC;IAEjB,kBAAkB;IAClB,KAAK,EAAE,MAAM,CAAC;IAEd,8DAA8D;IAC9D,OAAO,EAAE,MAAM,CAAC;IAEhB,4BAA4B;IAC5B,OAAO,EAAE,UAAU,EAAE,CAAC;IAEtB,+BAA+B;IAC/B,WAAW,EAAE,CAAC,UAAU,EAAE,gBAAgB,EAAE,KAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;IAE3E,gCAAgC;IAChC,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,gBAAgB,KAAK,OAAO,CAAC;IAElD,6BAA6B;IAC7B,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,MAAM,CAAC;IAE1E,sCAAsC;IACtC,mBAAmB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,UAAU,EAAE,gBAAgB,EAAE,KAAK,MAAM,CAAC,CAAC;CACjF;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC5B,gCAAgC;IAChC,EAAE,EAAE,MAAM,CAAC;IAEX,0BAA0B;IAC1B,QAAQ,EAAE,MAAM,CAAC;IAEjB,uBAAuB;IACvB,OAAO,EAAE,MAAM,CAAC;IAEhB,kBAAkB;IAClB,MAAM,EAAE,OAAO,GAAG,UAAU,GAAG,MAAM,CAAC;CACtC;AAED;;GAEG;AACH,MAAM,WAAW,QAAQ;IACxB;;;;;;OAMG;IACH,WAAW,CAAC,UAAU,EAAE,gBAAgB,EAAE,EAAE,IAAI,EAAE,eAAe,GAAG,YAAY,CAAC;IAEjF;;;;;;OAMG;IACH,SAAS,CAAC,UAAU,EAAE,gBAAgB,EAAE,EAAE,KAAK,EAAE,eAAe,EAAE,GAAG,YAAY,EAAE,CAAC;IAEpF;;;;;OAKG;IACH,kBAAkB,CAAC,WAAW,EAAE,eAAe,EAAE,GAAG,YAAY,CAAC;CACjE;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,eAAO,MAAM,kBAAkB,EAAE,kBAIhC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,oBAAoB,EAAE,kBAIlC,CAAC"}