ppef 1.0.0 → 1.0.1

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 (199) hide show
  1. package/README.md +172 -0
  2. package/dist/__tests__/framework-pipeline.integration.test.d.ts +7 -0
  3. package/dist/__tests__/framework-pipeline.integration.test.d.ts.map +1 -0
  4. package/dist/__tests__/framework-pipeline.integration.test.js +413 -0
  5. package/dist/__tests__/framework-pipeline.integration.test.js.map +1 -0
  6. package/dist/__tests__/registry-executor.integration.test.d.ts +5 -0
  7. package/dist/__tests__/registry-executor.integration.test.d.ts.map +1 -0
  8. package/dist/__tests__/registry-executor.integration.test.js +349 -0
  9. package/dist/__tests__/registry-executor.integration.test.js.map +1 -0
  10. package/dist/__tests__/test-helpers.d.ts +94 -0
  11. package/dist/__tests__/test-helpers.d.ts.map +1 -0
  12. package/dist/__tests__/test-helpers.js +271 -0
  13. package/dist/__tests__/test-helpers.js.map +1 -0
  14. package/dist/aggregation/aggregators.d.ts +54 -0
  15. package/dist/aggregation/aggregators.d.ts.map +1 -0
  16. package/dist/aggregation/aggregators.js +228 -0
  17. package/dist/aggregation/aggregators.js.map +1 -0
  18. package/dist/aggregation/index.d.ts +8 -0
  19. package/dist/aggregation/index.d.ts.map +1 -0
  20. package/dist/aggregation/index.js +8 -0
  21. package/dist/aggregation/index.js.map +1 -0
  22. package/dist/aggregation/pipeline.d.ts +38 -0
  23. package/dist/aggregation/pipeline.d.ts.map +1 -0
  24. package/dist/aggregation/pipeline.js +198 -0
  25. package/dist/aggregation/pipeline.js.map +1 -0
  26. package/dist/claims/evaluator.d.ts +33 -0
  27. package/dist/claims/evaluator.d.ts.map +1 -0
  28. package/dist/claims/evaluator.js +174 -0
  29. package/dist/claims/evaluator.js.map +1 -0
  30. package/dist/claims/index.d.ts +7 -0
  31. package/dist/claims/index.d.ts.map +1 -0
  32. package/dist/claims/index.js +7 -0
  33. package/dist/claims/index.js.map +1 -0
  34. package/dist/collector/index.d.ts +8 -0
  35. package/dist/collector/index.d.ts.map +1 -0
  36. package/dist/collector/index.js +8 -0
  37. package/dist/collector/index.js.map +1 -0
  38. package/dist/collector/result-collector.d.ts +159 -0
  39. package/dist/collector/result-collector.d.ts.map +1 -0
  40. package/dist/collector/result-collector.js +213 -0
  41. package/dist/collector/result-collector.js.map +1 -0
  42. package/dist/collector/schema.d.ts +34 -0
  43. package/dist/collector/schema.d.ts.map +1 -0
  44. package/dist/collector/schema.js +145 -0
  45. package/dist/collector/schema.js.map +1 -0
  46. package/dist/executor/__tests__/checkpoint-hash-bug.diagnostic.test.d.ts +10 -0
  47. package/dist/executor/__tests__/checkpoint-hash-bug.diagnostic.test.d.ts.map +1 -0
  48. package/dist/executor/__tests__/checkpoint-hash-bug.diagnostic.test.js +122 -0
  49. package/dist/executor/__tests__/checkpoint-hash-bug.diagnostic.test.js.map +1 -0
  50. package/dist/executor/__tests__/checkpoint-manager.integration.test.d.ts +7 -0
  51. package/dist/executor/__tests__/checkpoint-manager.integration.test.d.ts.map +1 -0
  52. package/dist/executor/__tests__/checkpoint-manager.integration.test.js +330 -0
  53. package/dist/executor/__tests__/checkpoint-manager.integration.test.js.map +1 -0
  54. package/dist/executor/__tests__/checkpoint-manager.unit.test.d.ts +7 -0
  55. package/dist/executor/__tests__/checkpoint-manager.unit.test.d.ts.map +1 -0
  56. package/dist/executor/__tests__/checkpoint-manager.unit.test.js +449 -0
  57. package/dist/executor/__tests__/checkpoint-manager.unit.test.js.map +1 -0
  58. package/dist/executor/__tests__/checkpoint-merge-bug.diagnostic.test.d.ts +11 -0
  59. package/dist/executor/__tests__/checkpoint-merge-bug.diagnostic.test.d.ts.map +1 -0
  60. package/dist/executor/__tests__/checkpoint-merge-bug.diagnostic.test.js +224 -0
  61. package/dist/executor/__tests__/checkpoint-merge-bug.diagnostic.test.js.map +1 -0
  62. package/dist/executor/__tests__/checkpoint-merge-bug.unit.test.d.ts +8 -0
  63. package/dist/executor/__tests__/checkpoint-merge-bug.unit.test.d.ts.map +1 -0
  64. package/dist/executor/__tests__/checkpoint-merge-bug.unit.test.js +164 -0
  65. package/dist/executor/__tests__/checkpoint-merge-bug.unit.test.js.map +1 -0
  66. package/dist/executor/__tests__/checkpoint-storage.unit.test.d.ts +7 -0
  67. package/dist/executor/__tests__/checkpoint-storage.unit.test.d.ts.map +1 -0
  68. package/dist/executor/__tests__/checkpoint-storage.unit.test.js +386 -0
  69. package/dist/executor/__tests__/checkpoint-storage.unit.test.js.map +1 -0
  70. package/dist/executor/__tests__/executor.unit.test.d.ts +7 -0
  71. package/dist/executor/__tests__/executor.unit.test.d.ts.map +1 -0
  72. package/dist/executor/__tests__/executor.unit.test.js +134 -0
  73. package/dist/executor/__tests__/executor.unit.test.js.map +1 -0
  74. package/dist/executor/__tests__/parallel-checkpoint-merge.integration.test.d.ts +12 -0
  75. package/dist/executor/__tests__/parallel-checkpoint-merge.integration.test.d.ts.map +1 -0
  76. package/dist/executor/__tests__/parallel-checkpoint-merge.integration.test.js +196 -0
  77. package/dist/executor/__tests__/parallel-checkpoint-merge.integration.test.js.map +1 -0
  78. package/dist/executor/__tests__/parallel-executor.integration.test.d.ts +7 -0
  79. package/dist/executor/__tests__/parallel-executor.integration.test.d.ts.map +1 -0
  80. package/dist/executor/__tests__/parallel-executor.integration.test.js +249 -0
  81. package/dist/executor/__tests__/parallel-executor.integration.test.js.map +1 -0
  82. package/dist/executor/__tests__/parallel-executor.unit.test.d.ts +7 -0
  83. package/dist/executor/__tests__/parallel-executor.unit.test.d.ts.map +1 -0
  84. package/dist/executor/__tests__/parallel-executor.unit.test.js +203 -0
  85. package/dist/executor/__tests__/parallel-executor.unit.test.js.map +1 -0
  86. package/dist/executor/checkpoint-manager.d.ts +231 -0
  87. package/dist/executor/checkpoint-manager.d.ts.map +1 -0
  88. package/dist/executor/checkpoint-manager.js +395 -0
  89. package/dist/executor/checkpoint-manager.js.map +1 -0
  90. package/dist/executor/checkpoint-storage.d.ts +230 -0
  91. package/dist/executor/checkpoint-storage.d.ts.map +1 -0
  92. package/dist/executor/checkpoint-storage.js +370 -0
  93. package/dist/executor/checkpoint-storage.js.map +1 -0
  94. package/dist/executor/checkpoint-types.d.ts +48 -0
  95. package/dist/executor/checkpoint-types.d.ts.map +1 -0
  96. package/dist/executor/checkpoint-types.js +8 -0
  97. package/dist/executor/checkpoint-types.js.map +1 -0
  98. package/dist/executor/executor.d.ts +164 -0
  99. package/dist/executor/executor.d.ts.map +1 -0
  100. package/dist/executor/executor.js +408 -0
  101. package/dist/executor/executor.js.map +1 -0
  102. package/dist/executor/index.d.ts +11 -0
  103. package/dist/executor/index.d.ts.map +1 -0
  104. package/dist/executor/index.js +11 -0
  105. package/dist/executor/index.js.map +1 -0
  106. package/dist/executor/memory-monitor.d.ts +115 -0
  107. package/dist/executor/memory-monitor.d.ts.map +1 -0
  108. package/dist/executor/memory-monitor.js +168 -0
  109. package/dist/executor/memory-monitor.js.map +1 -0
  110. package/dist/executor/parallel-executor.d.ts +53 -0
  111. package/dist/executor/parallel-executor.d.ts.map +1 -0
  112. package/dist/executor/parallel-executor.js +194 -0
  113. package/dist/executor/parallel-executor.js.map +1 -0
  114. package/dist/executor/run-id.d.ts +71 -0
  115. package/dist/executor/run-id.d.ts.map +1 -0
  116. package/dist/executor/run-id.js +67 -0
  117. package/dist/executor/run-id.js.map +1 -0
  118. package/dist/executor/worker-entry.d.ts +8 -0
  119. package/dist/executor/worker-entry.d.ts.map +1 -0
  120. package/dist/executor/worker-entry.js +67 -0
  121. package/dist/executor/worker-entry.js.map +1 -0
  122. package/dist/index.cjs +11 -0
  123. package/dist/index.d.ts +15 -0
  124. package/dist/index.d.ts.map +1 -0
  125. package/dist/index.js +24 -0
  126. package/dist/index.js.map +1 -0
  127. package/dist/registry/case-registry.d.ts +113 -0
  128. package/dist/registry/case-registry.d.ts.map +1 -0
  129. package/dist/registry/case-registry.js +160 -0
  130. package/dist/registry/case-registry.js.map +1 -0
  131. package/dist/registry/index.d.ts +8 -0
  132. package/dist/registry/index.d.ts.map +1 -0
  133. package/dist/registry/index.js +8 -0
  134. package/dist/registry/index.js.map +1 -0
  135. package/dist/registry/sut-registry.d.ts +96 -0
  136. package/dist/registry/sut-registry.d.ts.map +1 -0
  137. package/dist/registry/sut-registry.js +126 -0
  138. package/dist/registry/sut-registry.js.map +1 -0
  139. package/dist/renderers/index.d.ts +10 -0
  140. package/dist/renderers/index.d.ts.map +1 -0
  141. package/dist/renderers/index.js +9 -0
  142. package/dist/renderers/index.js.map +1 -0
  143. package/dist/renderers/latex-renderer.d.ts +84 -0
  144. package/dist/renderers/latex-renderer.d.ts.map +1 -0
  145. package/dist/renderers/latex-renderer.js +208 -0
  146. package/dist/renderers/latex-renderer.js.map +1 -0
  147. package/dist/renderers/types.d.ts +106 -0
  148. package/dist/renderers/types.d.ts.map +1 -0
  149. package/dist/renderers/types.js +23 -0
  150. package/dist/renderers/types.js.map +1 -0
  151. package/dist/robustness/analyzer.d.ts +61 -0
  152. package/dist/robustness/analyzer.d.ts.map +1 -0
  153. package/dist/robustness/analyzer.js +191 -0
  154. package/dist/robustness/analyzer.js.map +1 -0
  155. package/dist/robustness/index.d.ts +8 -0
  156. package/dist/robustness/index.d.ts.map +1 -0
  157. package/dist/robustness/index.js +8 -0
  158. package/dist/robustness/index.js.map +1 -0
  159. package/dist/robustness/perturbations.d.ts +46 -0
  160. package/dist/robustness/perturbations.d.ts.map +1 -0
  161. package/dist/robustness/perturbations.js +184 -0
  162. package/dist/robustness/perturbations.js.map +1 -0
  163. package/dist/statistical/index.d.ts +8 -0
  164. package/dist/statistical/index.d.ts.map +1 -0
  165. package/dist/statistical/index.js +8 -0
  166. package/dist/statistical/index.js.map +1 -0
  167. package/dist/statistical/mann-whitney-u.d.ts +62 -0
  168. package/dist/statistical/mann-whitney-u.d.ts.map +1 -0
  169. package/dist/statistical/mann-whitney-u.js +127 -0
  170. package/dist/statistical/mann-whitney-u.js.map +1 -0
  171. package/dist/types/aggregate.d.ts +124 -0
  172. package/dist/types/aggregate.d.ts.map +1 -0
  173. package/dist/types/aggregate.js +9 -0
  174. package/dist/types/aggregate.js.map +1 -0
  175. package/dist/types/case.d.ts +105 -0
  176. package/dist/types/case.d.ts.map +1 -0
  177. package/dist/types/case.js +10 -0
  178. package/dist/types/case.js.map +1 -0
  179. package/dist/types/claims.d.ts +122 -0
  180. package/dist/types/claims.d.ts.map +1 -0
  181. package/dist/types/claims.js +14 -0
  182. package/dist/types/claims.js.map +1 -0
  183. package/dist/types/index.d.ts +12 -0
  184. package/dist/types/index.d.ts.map +1 -0
  185. package/dist/types/index.js +7 -0
  186. package/dist/types/index.js.map +1 -0
  187. package/dist/types/perturbation.d.ts +105 -0
  188. package/dist/types/perturbation.d.ts.map +1 -0
  189. package/dist/types/perturbation.js +9 -0
  190. package/dist/types/perturbation.js.map +1 -0
  191. package/dist/types/result.d.ts +150 -0
  192. package/dist/types/result.d.ts.map +1 -0
  193. package/dist/types/result.js +12 -0
  194. package/dist/types/result.js.map +1 -0
  195. package/dist/types/sut.d.ts +128 -0
  196. package/dist/types/sut.d.ts.map +1 -0
  197. package/dist/types/sut.js +12 -0
  198. package/dist/types/sut.js.map +1 -0
  199. package/package.json +283 -7
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worker-entry.js","sourceRoot":"","sources":["../../src/executor/worker-entry.ts"],"names":[],"mappings":"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"}
package/dist/index.cjs ADDED
@@ -0,0 +1,11 @@
1
+ // Auto-generated CJS wrapper for ESM module
2
+ // Load the ESM module dynamically for require() callers
3
+ // Generated by scripts/generate-cjs-wrapper.mjs
4
+
5
+ async function loadModule() {
6
+ return await import('./index.js');
7
+ }
8
+
9
+ // Synchronous export of a function that returns a promise
10
+ // This is the standard pattern for CJS wrappers around ESM
11
+ module.exports = loadModule();
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Portable Programmatic Evaluation Framework
3
+ *
4
+ * A claim-driven, deterministic evaluation framework for experiments.
5
+ */
6
+ export * from "./types/index.js";
7
+ export * from "./registry/index.js";
8
+ export * from "./executor/index.js";
9
+ export * from "./collector/index.js";
10
+ export * from "./statistical/index.js";
11
+ export * from "./aggregation/index.js";
12
+ export * from "./claims/index.js";
13
+ export * from "./robustness/index.js";
14
+ export * from "./renderers/index.js";
15
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,cAAc,kBAAkB,CAAC;AAGjC,cAAc,qBAAqB,CAAC;AAGpC,cAAc,qBAAqB,CAAC;AAGpC,cAAc,sBAAsB,CAAC;AAGrC,cAAc,wBAAwB,CAAC;AAGvC,cAAc,wBAAwB,CAAC;AAGvC,cAAc,mBAAmB,CAAC;AAGlC,cAAc,uBAAuB,CAAC;AAGtC,cAAc,sBAAsB,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Portable Programmatic Evaluation Framework
3
+ *
4
+ * A claim-driven, deterministic evaluation framework for experiments.
5
+ */
6
+ // Types
7
+ export * from "./types/index.js";
8
+ // Registry
9
+ export * from "./registry/index.js";
10
+ // Executor
11
+ export * from "./executor/index.js";
12
+ // Collector
13
+ export * from "./collector/index.js";
14
+ // Statistical
15
+ export * from "./statistical/index.js";
16
+ // Aggregation
17
+ export * from "./aggregation/index.js";
18
+ // Claims
19
+ export * from "./claims/index.js";
20
+ // Robustness
21
+ export * from "./robustness/index.js";
22
+ // Renderers
23
+ export * from "./renderers/index.js";
24
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,QAAQ;AACR,cAAc,kBAAkB,CAAC;AAEjC,WAAW;AACX,cAAc,qBAAqB,CAAC;AAEpC,WAAW;AACX,cAAc,qBAAqB,CAAC;AAEpC,YAAY;AACZ,cAAc,sBAAsB,CAAC;AAErC,cAAc;AACd,cAAc,wBAAwB,CAAC;AAEvC,cAAc;AACd,cAAc,wBAAwB,CAAC;AAEvC,SAAS;AACT,cAAc,mBAAmB,CAAC;AAElC,aAAa;AACb,cAAc,uBAAuB,CAAC;AAEtC,YAAY;AACZ,cAAc,sBAAsB,CAAC"}
@@ -0,0 +1,113 @@
1
+ /**
2
+ * Case Registry
3
+ *
4
+ * Central registry for evaluation case definitions. Cases are registered
5
+ * with their factories, enabling lazy loading of resources during
6
+ * experiment execution.
7
+ */
8
+ import type { CaseDefinition, EvaluationCase } from "../types/case.js";
9
+ /**
10
+ * Registry for evaluation case definitions.
11
+ *
12
+ * @template TInput - The resource type (e.g., Graph, Dataset)
13
+ * @template TInputs - The algorithm inputs type
14
+ */
15
+ export declare class CaseRegistry<TInput = unknown, TInputs = unknown> {
16
+ private readonly definitions;
17
+ /**
18
+ * Register a new case.
19
+ *
20
+ * @param definition - Case definition including metadata and factories
21
+ * @throws Error if case with same ID already registered
22
+ */
23
+ register(definition: CaseDefinition<TInput, TInputs>): this;
24
+ /**
25
+ * Register multiple cases at once.
26
+ *
27
+ * @param definitions - Array of case definitions
28
+ */
29
+ registerAll(definitions: CaseDefinition<TInput, TInputs>[]): this;
30
+ /**
31
+ * Get a case definition by ID.
32
+ *
33
+ * @param caseId - Case identifier
34
+ * @returns Case definition or undefined
35
+ */
36
+ get(caseId: string): CaseDefinition<TInput, TInputs> | undefined;
37
+ /**
38
+ * Get a case definition by ID, throwing if not found.
39
+ *
40
+ * @param caseId - Case identifier
41
+ * @returns Case definition
42
+ * @throws Error if case not found
43
+ */
44
+ getOrThrow(caseId: string): CaseDefinition<TInput, TInputs>;
45
+ /**
46
+ * Get all cases with a specific class.
47
+ *
48
+ * @param caseClass - Class to filter by
49
+ * @returns Array of matching case definitions
50
+ */
51
+ getByClass(caseClass: string): CaseDefinition<TInput, TInputs>[];
52
+ /**
53
+ * Get all cases with a specific tag.
54
+ *
55
+ * @param tag - Tag to filter by
56
+ * @returns Array of matching case definitions
57
+ */
58
+ getByTag(tag: string): CaseDefinition<TInput, TInputs>[];
59
+ /**
60
+ * List all registered case IDs.
61
+ *
62
+ * @returns Array of case identifiers
63
+ */
64
+ list(): string[];
65
+ /**
66
+ * List all registered case specifications.
67
+ *
68
+ * @returns Array of case specifications
69
+ */
70
+ listCases(): EvaluationCase[];
71
+ /**
72
+ * List all unique case classes.
73
+ *
74
+ * @returns Array of case class names
75
+ */
76
+ listClasses(): string[];
77
+ /**
78
+ * Check if a case is registered.
79
+ *
80
+ * @param caseId - Case identifier
81
+ * @returns true if registered
82
+ */
83
+ has(caseId: string): boolean;
84
+ /**
85
+ * Get the number of registered cases.
86
+ */
87
+ get size(): number;
88
+ /**
89
+ * Clear all registrations.
90
+ */
91
+ clear(): void;
92
+ /**
93
+ * Load the input resource for a case.
94
+ *
95
+ * @param caseId - Case identifier
96
+ * @returns Promise resolving to the input resource
97
+ */
98
+ getInput(caseId: string): Promise<TInput>;
99
+ /**
100
+ * Get the algorithm inputs for a case.
101
+ *
102
+ * @param caseId - Case identifier
103
+ * @returns Algorithm inputs
104
+ */
105
+ getInputs(caseId: string): TInputs;
106
+ }
107
+ /**
108
+ * Global case registry instance.
109
+ *
110
+ * Use this for standard registration, or create instances for isolation.
111
+ */
112
+ export declare const caseRegistry: CaseRegistry<unknown, unknown>;
113
+ //# sourceMappingURL=case-registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"case-registry.d.ts","sourceRoot":"","sources":["../../src/registry/case-registry.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAEvE;;;;;GAKG;AACH,qBAAa,YAAY,CAAC,MAAM,GAAG,OAAO,EAAE,OAAO,GAAG,OAAO;IAC5D,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAsD;IAElF;;;;;OAKG;IACH,QAAQ,CAAC,UAAU,EAAE,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAU3D;;;;OAIG;IACH,WAAW,CAAC,WAAW,EAAE,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,IAAI;IAOjE;;;;;OAKG;IACH,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS;IAIhE;;;;;;OAMG;IACH,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC;IAQ3D;;;;;OAKG;IACH,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE;IAIhE;;;;;OAKG;IACH,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE;IAIxD;;;;OAIG;IACH,IAAI,IAAI,MAAM,EAAE;IAIhB;;;;OAIG;IACH,SAAS,IAAI,cAAc,EAAE;IAI7B;;;;OAIG;IACH,WAAW,IAAI,MAAM,EAAE;IAUvB;;;;;OAKG;IACH,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAI5B;;OAEG;IACH,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED;;OAEG;IACH,KAAK,IAAI,IAAI;IAIb;;;;;OAKG;IACG,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAK/C;;;;;OAKG;IACH,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;CAIlC;AAED;;;;GAIG;AACH,eAAO,MAAM,YAAY,gCAAqB,CAAC"}
@@ -0,0 +1,160 @@
1
+ /**
2
+ * Case Registry
3
+ *
4
+ * Central registry for evaluation case definitions. Cases are registered
5
+ * with their factories, enabling lazy loading of resources during
6
+ * experiment execution.
7
+ */
8
+ /**
9
+ * Registry for evaluation case definitions.
10
+ *
11
+ * @template TInput - The resource type (e.g., Graph, Dataset)
12
+ * @template TInputs - The algorithm inputs type
13
+ */
14
+ export class CaseRegistry {
15
+ definitions = new Map();
16
+ /**
17
+ * Register a new case.
18
+ *
19
+ * @param definition - Case definition including metadata and factories
20
+ * @throws Error if case with same ID already registered
21
+ */
22
+ register(definition) {
23
+ const caseId = definition.case.caseId;
24
+ if (this.definitions.has(caseId)) {
25
+ throw new Error(`Case already registered: ${caseId}`);
26
+ }
27
+ this.definitions.set(caseId, definition);
28
+ return this;
29
+ }
30
+ /**
31
+ * Register multiple cases at once.
32
+ *
33
+ * @param definitions - Array of case definitions
34
+ */
35
+ registerAll(definitions) {
36
+ for (const definition of definitions) {
37
+ this.register(definition);
38
+ }
39
+ return this;
40
+ }
41
+ /**
42
+ * Get a case definition by ID.
43
+ *
44
+ * @param caseId - Case identifier
45
+ * @returns Case definition or undefined
46
+ */
47
+ get(caseId) {
48
+ return this.definitions.get(caseId);
49
+ }
50
+ /**
51
+ * Get a case definition by ID, throwing if not found.
52
+ *
53
+ * @param caseId - Case identifier
54
+ * @returns Case definition
55
+ * @throws Error if case not found
56
+ */
57
+ getOrThrow(caseId) {
58
+ const definition = this.definitions.get(caseId);
59
+ if (!definition) {
60
+ throw new Error(`Case not found: ${caseId}`);
61
+ }
62
+ return definition;
63
+ }
64
+ /**
65
+ * Get all cases with a specific class.
66
+ *
67
+ * @param caseClass - Class to filter by
68
+ * @returns Array of matching case definitions
69
+ */
70
+ getByClass(caseClass) {
71
+ return [...this.definitions.values()].filter((d) => d.case.caseClass === caseClass);
72
+ }
73
+ /**
74
+ * Get all cases with a specific tag.
75
+ *
76
+ * @param tag - Tag to filter by
77
+ * @returns Array of matching case definitions
78
+ */
79
+ getByTag(tag) {
80
+ return [...this.definitions.values()].filter((d) => d.case.tags?.includes(tag));
81
+ }
82
+ /**
83
+ * List all registered case IDs.
84
+ *
85
+ * @returns Array of case identifiers
86
+ */
87
+ list() {
88
+ return [...this.definitions.keys()];
89
+ }
90
+ /**
91
+ * List all registered case specifications.
92
+ *
93
+ * @returns Array of case specifications
94
+ */
95
+ listCases() {
96
+ return [...this.definitions.values()].map((d) => d.case);
97
+ }
98
+ /**
99
+ * List all unique case classes.
100
+ *
101
+ * @returns Array of case class names
102
+ */
103
+ listClasses() {
104
+ const classes = new Set();
105
+ for (const definition of this.definitions.values()) {
106
+ if (definition.case.caseClass) {
107
+ classes.add(definition.case.caseClass);
108
+ }
109
+ }
110
+ return [...classes];
111
+ }
112
+ /**
113
+ * Check if a case is registered.
114
+ *
115
+ * @param caseId - Case identifier
116
+ * @returns true if registered
117
+ */
118
+ has(caseId) {
119
+ return this.definitions.has(caseId);
120
+ }
121
+ /**
122
+ * Get the number of registered cases.
123
+ */
124
+ get size() {
125
+ return this.definitions.size;
126
+ }
127
+ /**
128
+ * Clear all registrations.
129
+ */
130
+ clear() {
131
+ this.definitions.clear();
132
+ }
133
+ /**
134
+ * Load the input resource for a case.
135
+ *
136
+ * @param caseId - Case identifier
137
+ * @returns Promise resolving to the input resource
138
+ */
139
+ async getInput(caseId) {
140
+ const definition = this.getOrThrow(caseId);
141
+ return definition.getInput();
142
+ }
143
+ /**
144
+ * Get the algorithm inputs for a case.
145
+ *
146
+ * @param caseId - Case identifier
147
+ * @returns Algorithm inputs
148
+ */
149
+ getInputs(caseId) {
150
+ const definition = this.getOrThrow(caseId);
151
+ return definition.getInputs();
152
+ }
153
+ }
154
+ /**
155
+ * Global case registry instance.
156
+ *
157
+ * Use this for standard registration, or create instances for isolation.
158
+ */
159
+ export const caseRegistry = new CaseRegistry();
160
+ //# sourceMappingURL=case-registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"case-registry.js","sourceRoot":"","sources":["../../src/registry/case-registry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Registry Module
3
+ *
4
+ * Central registries for evaluation cases and systems under test.
5
+ */
6
+ export * from "./case-registry.js";
7
+ export * from "./sut-registry.js";
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/registry/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Registry Module
3
+ *
4
+ * Central registries for evaluation cases and systems under test.
5
+ */
6
+ export * from "./case-registry.js";
7
+ export * from "./sut-registry.js";
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/registry/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC"}
@@ -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"}