melete-ai 0.88.2

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 (211) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +72 -0
  3. package/bin/melete-server.mjs +345 -0
  4. package/bin/melete.mjs +165 -0
  5. package/dist/achievability.d.ts +38 -0
  6. package/dist/achievability.d.ts.map +1 -0
  7. package/dist/achievability.js +135 -0
  8. package/dist/achievability.js.map +1 -0
  9. package/dist/aegis.d.ts +52 -0
  10. package/dist/aegis.d.ts.map +1 -0
  11. package/dist/aegis.js +191 -0
  12. package/dist/aegis.js.map +1 -0
  13. package/dist/arms.d.ts +70 -0
  14. package/dist/arms.d.ts.map +1 -0
  15. package/dist/arms.js +399 -0
  16. package/dist/arms.js.map +1 -0
  17. package/dist/batch.d.ts +30 -0
  18. package/dist/batch.d.ts.map +1 -0
  19. package/dist/batch.js +151 -0
  20. package/dist/batch.js.map +1 -0
  21. package/dist/bench.d.ts +49 -0
  22. package/dist/bench.d.ts.map +1 -0
  23. package/dist/bench.js +124 -0
  24. package/dist/bench.js.map +1 -0
  25. package/dist/certify.d.ts +48 -0
  26. package/dist/certify.d.ts.map +1 -0
  27. package/dist/certify.js +125 -0
  28. package/dist/certify.js.map +1 -0
  29. package/dist/cliff.d.ts +41 -0
  30. package/dist/cliff.d.ts.map +1 -0
  31. package/dist/cliff.js +132 -0
  32. package/dist/cliff.js.map +1 -0
  33. package/dist/confidence.d.ts +38 -0
  34. package/dist/confidence.d.ts.map +1 -0
  35. package/dist/confidence.js +98 -0
  36. package/dist/confidence.js.map +1 -0
  37. package/dist/constrained.d.ts +59 -0
  38. package/dist/constrained.d.ts.map +1 -0
  39. package/dist/constrained.js +191 -0
  40. package/dist/constrained.js.map +1 -0
  41. package/dist/cortex.d.ts +56 -0
  42. package/dist/cortex.d.ts.map +1 -0
  43. package/dist/cortex.js +81 -0
  44. package/dist/cortex.js.map +1 -0
  45. package/dist/costaware.d.ts +49 -0
  46. package/dist/costaware.d.ts.map +1 -0
  47. package/dist/costaware.js +185 -0
  48. package/dist/costaware.js.map +1 -0
  49. package/dist/drift.d.ts +36 -0
  50. package/dist/drift.d.ts.map +1 -0
  51. package/dist/drift.js +157 -0
  52. package/dist/drift.js.map +1 -0
  53. package/dist/efficiency.d.ts +49 -0
  54. package/dist/efficiency.d.ts.map +1 -0
  55. package/dist/efficiency.js +143 -0
  56. package/dist/efficiency.js.map +1 -0
  57. package/dist/engine.d.ts +64 -0
  58. package/dist/engine.d.ts.map +1 -0
  59. package/dist/engine.js +130 -0
  60. package/dist/engine.js.map +1 -0
  61. package/dist/federated.d.ts +38 -0
  62. package/dist/federated.d.ts.map +1 -0
  63. package/dist/federated.js +121 -0
  64. package/dist/federated.js.map +1 -0
  65. package/dist/frontier.d.ts +51 -0
  66. package/dist/frontier.d.ts.map +1 -0
  67. package/dist/frontier.js +117 -0
  68. package/dist/frontier.js.map +1 -0
  69. package/dist/guardian.d.ts +46 -0
  70. package/dist/guardian.d.ts.map +1 -0
  71. package/dist/guardian.js +101 -0
  72. package/dist/guardian.js.map +1 -0
  73. package/dist/index.d.ts +90 -0
  74. package/dist/index.d.ts.map +1 -0
  75. package/dist/index.js +189 -0
  76. package/dist/index.js.map +1 -0
  77. package/dist/interaction.d.ts +44 -0
  78. package/dist/interaction.d.ts.map +1 -0
  79. package/dist/interaction.js +167 -0
  80. package/dist/interaction.js.map +1 -0
  81. package/dist/interactive.d.ts +25 -0
  82. package/dist/interactive.d.ts.map +1 -0
  83. package/dist/interactive.js +75 -0
  84. package/dist/interactive.js.map +1 -0
  85. package/dist/inverse.d.ts +44 -0
  86. package/dist/inverse.d.ts.map +1 -0
  87. package/dist/inverse.js +141 -0
  88. package/dist/inverse.js.map +1 -0
  89. package/dist/ipshield.d.ts +62 -0
  90. package/dist/ipshield.d.ts.map +1 -0
  91. package/dist/ipshield.js +104 -0
  92. package/dist/ipshield.js.map +1 -0
  93. package/dist/journalist.d.ts +56 -0
  94. package/dist/journalist.d.ts.map +1 -0
  95. package/dist/journalist.js +132 -0
  96. package/dist/journalist.js.map +1 -0
  97. package/dist/lineage.d.ts +43 -0
  98. package/dist/lineage.d.ts.map +1 -0
  99. package/dist/lineage.js +112 -0
  100. package/dist/lineage.js.map +1 -0
  101. package/dist/metabrain.d.ts +59 -0
  102. package/dist/metabrain.d.ts.map +1 -0
  103. package/dist/metabrain.js +215 -0
  104. package/dist/metabrain.js.map +1 -0
  105. package/dist/mixedspace.d.ts +61 -0
  106. package/dist/mixedspace.d.ts.map +1 -0
  107. package/dist/mixedspace.js +267 -0
  108. package/dist/mixedspace.js.map +1 -0
  109. package/dist/multiobjective.d.ts +42 -0
  110. package/dist/multiobjective.d.ts.map +1 -0
  111. package/dist/multiobjective.js +123 -0
  112. package/dist/multiobjective.js.map +1 -0
  113. package/dist/noise.d.ts +45 -0
  114. package/dist/noise.d.ts.map +1 -0
  115. package/dist/noise.js +148 -0
  116. package/dist/noise.js.map +1 -0
  117. package/dist/noiserobust.d.ts +71 -0
  118. package/dist/noiserobust.d.ts.map +1 -0
  119. package/dist/noiserobust.js +215 -0
  120. package/dist/noiserobust.js.map +1 -0
  121. package/dist/oracle.d.ts +63 -0
  122. package/dist/oracle.d.ts.map +1 -0
  123. package/dist/oracle.js +106 -0
  124. package/dist/oracle.js.map +1 -0
  125. package/dist/poopt.d.ts +79 -0
  126. package/dist/poopt.d.ts.map +1 -0
  127. package/dist/poopt.js +148 -0
  128. package/dist/poopt.js.map +1 -0
  129. package/dist/portfolio.d.ts +51 -0
  130. package/dist/portfolio.d.ts.map +1 -0
  131. package/dist/portfolio.js +132 -0
  132. package/dist/portfolio.js.map +1 -0
  133. package/dist/prescription.d.ts +57 -0
  134. package/dist/prescription.d.ts.map +1 -0
  135. package/dist/prescription.js +131 -0
  136. package/dist/prescription.js.map +1 -0
  137. package/dist/prime.d.ts +85 -0
  138. package/dist/prime.d.ts.map +1 -0
  139. package/dist/prime.js +157 -0
  140. package/dist/prime.js.map +1 -0
  141. package/dist/provenance.d.ts +77 -0
  142. package/dist/provenance.d.ts.map +1 -0
  143. package/dist/provenance.js +155 -0
  144. package/dist/provenance.js.map +1 -0
  145. package/dist/rashomon.d.ts +40 -0
  146. package/dist/rashomon.d.ts.map +1 -0
  147. package/dist/rashomon.js +93 -0
  148. package/dist/rashomon.js.map +1 -0
  149. package/dist/reliability.d.ts +79 -0
  150. package/dist/reliability.d.ts.map +1 -0
  151. package/dist/reliability.js +197 -0
  152. package/dist/reliability.js.map +1 -0
  153. package/dist/replay.d.ts +62 -0
  154. package/dist/replay.d.ts.map +1 -0
  155. package/dist/replay.js +146 -0
  156. package/dist/replay.js.map +1 -0
  157. package/dist/replicate.d.ts +72 -0
  158. package/dist/replicate.d.ts.map +1 -0
  159. package/dist/replicate.js +103 -0
  160. package/dist/replicate.js.map +1 -0
  161. package/dist/resonance.d.ts +32 -0
  162. package/dist/resonance.d.ts.map +1 -0
  163. package/dist/resonance.js +190 -0
  164. package/dist/resonance.js.map +1 -0
  165. package/dist/sensitivity.d.ts +44 -0
  166. package/dist/sensitivity.d.ts.map +1 -0
  167. package/dist/sensitivity.js +109 -0
  168. package/dist/sensitivity.js.map +1 -0
  169. package/dist/server.d.ts +26 -0
  170. package/dist/server.d.ts.map +1 -0
  171. package/dist/server.js +1410 -0
  172. package/dist/server.js.map +1 -0
  173. package/dist/shape.d.ts +37 -0
  174. package/dist/shape.d.ts.map +1 -0
  175. package/dist/shape.js +170 -0
  176. package/dist/shape.js.map +1 -0
  177. package/dist/sloppiness.d.ts +44 -0
  178. package/dist/sloppiness.d.ts.map +1 -0
  179. package/dist/sloppiness.js +194 -0
  180. package/dist/sloppiness.js.map +1 -0
  181. package/dist/sovereign.d.ts +77 -0
  182. package/dist/sovereign.d.ts.map +1 -0
  183. package/dist/sovereign.js +144 -0
  184. package/dist/sovereign.js.map +1 -0
  185. package/dist/space.d.ts +38 -0
  186. package/dist/space.d.ts.map +1 -0
  187. package/dist/space.js +107 -0
  188. package/dist/space.js.map +1 -0
  189. package/dist/surprise.d.ts +43 -0
  190. package/dist/surprise.d.ts.map +1 -0
  191. package/dist/surprise.js +123 -0
  192. package/dist/surprise.js.map +1 -0
  193. package/dist/territory.d.ts +43 -0
  194. package/dist/territory.d.ts.map +1 -0
  195. package/dist/territory.js +102 -0
  196. package/dist/territory.js.map +1 -0
  197. package/dist/trace.d.ts +58 -0
  198. package/dist/trace.d.ts.map +1 -0
  199. package/dist/trace.js +0 -0
  200. package/dist/trace.js.map +1 -0
  201. package/dist/transfer.d.ts +46 -0
  202. package/dist/transfer.d.ts.map +1 -0
  203. package/dist/transfer.js +112 -0
  204. package/dist/transfer.js.map +1 -0
  205. package/dist/twin.d.ts +41 -0
  206. package/dist/twin.d.ts.map +1 -0
  207. package/dist/twin.js +116 -0
  208. package/dist/twin.js.map +1 -0
  209. package/examples/train.mjs +8 -0
  210. package/examples/tune.mjs +11 -0
  211. package/package.json +56 -0
@@ -0,0 +1,93 @@
1
+ const dst = (a, c) => { let s = 0; for (let i = 0; i < a.length; i++)
2
+ s += (a[i] - c[i]) ** 2; return Math.sqrt(s); };
3
+ /** Find the family of genuinely different recipes that all score within `tolFrac` of the best. */
4
+ export function analyzeRashomon(obs, space, goal = "maximize", tolFrac = 0.05) {
5
+ const dims = space?.dims ?? [];
6
+ const D = dims.length;
7
+ const hist = (obs ?? []).filter((o) => o && o.experiment && Number.isFinite(o.value));
8
+ const n = hist.length;
9
+ if (D === 0 || n < 6)
10
+ return { recipes: [], flexibility: "one", tolerance: NaN, note: `need ≈6+ measurements to map the family (have ${n})` };
11
+ const sgn = goal === "minimize" ? -1 : 1;
12
+ const lo = (i) => dims[i].min ?? 0, hi = (i) => dims[i].max ?? 1;
13
+ const toN = (e) => dims.map((d, i) => { const sp = hi(i) - lo(i) || 1; return Math.max(0, Math.min(1, ((+e[d.name] || 0) - lo(i)) / sp)); });
14
+ const V = hist.map((o) => sgn * o.value);
15
+ const range = Math.max(1e-9, Math.max(...V) - Math.min(...V));
16
+ const best = Math.max(...V);
17
+ const threshold = best - tolFrac * range;
18
+ // all near-optimal points, ranked best-first, then greedily kept if spatially distinct
19
+ const near = hist.map((o, i) => ({ o, v: V[i], p: toN(o.experiment) })).filter((x) => x.v >= threshold - 1e-12).sort((a, b) => b.v - a.v);
20
+ const keptP = [];
21
+ const recipes = [];
22
+ for (const x of near) {
23
+ if (keptP.some((p) => dst(p, x.p) < 0.2))
24
+ continue; // already represented by a nearby recipe
25
+ keptP.push(x.p);
26
+ const settings = {};
27
+ dims.forEach((d) => { settings[d.name] = +(+x.o.experiment[d.name]).toFixed(d.type === "int" ? 0 : 4); });
28
+ recipes.push({ settings, value: +x.o.value.toFixed(6) });
29
+ if (recipes.length >= 6)
30
+ break;
31
+ }
32
+ const flexibility = recipes.length >= 3 ? "many" : recipes.length === 2 ? "few" : "one";
33
+ const tolerance = +(tolFrac * range).toFixed(4);
34
+ const note = recipes.length <= 1
35
+ ? "there's essentially one best recipe — no equally-good alternatives to choose from"
36
+ : `you have ${recipes.length} genuinely different recipes that all score within ${tolerance} of the best — pick the cheapest, safest, or most convenient`;
37
+ return { recipes, flexibility, tolerance, note };
38
+ }
39
+ // ── gauntlet ──────────────────────────────────────────────────────────────────
40
+ import { lcg } from "./space.js";
41
+ export function rashomonGauntlet() {
42
+ const space = { dims: [{ name: "x", type: "real", min: 0, max: 1 }, { name: "y", type: "real", min: 0, max: 1 }] };
43
+ // TWO equal optima at (0.2,0.2) and (0.8,0.8) — there should be TWO distinct near-best recipes
44
+ const twin = (x, y) => Math.max(Math.exp(-(((x - 0.2) ** 2) + ((y - 0.2) ** 2)) / 0.02), Math.exp(-(((x - 0.8) ** 2) + ((y - 0.8) ** 2)) / 0.02));
45
+ const r1 = lcg(17);
46
+ const o1 = [];
47
+ for (let i = 0; i < 50; i++) {
48
+ const x = r1(), y = r1();
49
+ o1.push({ experiment: { x, y }, value: twin(x, y) });
50
+ }
51
+ for (let i = 0; i < 8; i++) {
52
+ o1.push({ experiment: { x: 0.2 + (r1() - 0.5) * 0.06, y: 0.2 + (r1() - 0.5) * 0.06 }, value: twin(0.2, 0.2) });
53
+ o1.push({ experiment: { x: 0.8 + (r1() - 0.5) * 0.06, y: 0.8 + (r1() - 0.5) * 0.06 }, value: twin(0.8, 0.8) });
54
+ }
55
+ const s1 = analyzeRashomon(o1, space, "maximize", 0.05);
56
+ const findsTwo = s1.recipes.length >= 2;
57
+ const recipesDistinct = s1.recipes.length >= 2 && (Math.abs(s1.recipes[0].settings.x - s1.recipes[1].settings.x) > 0.4);
58
+ const allNearBest = s1.recipes.every((r) => r.value >= 0.93); // all within ~5% of the peak (1.0)
59
+ // SINGLE peak → one recipe
60
+ const single = (x, y) => Math.exp(-(((x - 0.5) ** 2) + ((y - 0.5) ** 2)) / 0.03);
61
+ const r2 = lcg(5);
62
+ const o2 = [];
63
+ for (let i = 0; i < 60; i++) {
64
+ const x = r2(), y = r2();
65
+ o2.push({ experiment: { x, y }, value: single(x, y) });
66
+ }
67
+ for (let i = 0; i < 10; i++)
68
+ o2.push({ experiment: { x: 0.5 + (r2() - 0.5) * 0.05, y: 0.5 + (r2() - 0.5) * 0.05 }, value: single(0.5, 0.5) });
69
+ const s2 = analyzeRashomon(o2, space, "maximize", 0.05);
70
+ const singleOk = s2.recipes.length === 1 && s2.flexibility === "one";
71
+ const det = JSON.stringify(analyzeRashomon(o1, space, "maximize")) === JSON.stringify(analyzeRashomon(o1, space, "maximize"));
72
+ const abstains = analyzeRashomon(o1.slice(0, 4), space, "maximize").note.indexOf("need") >= 0;
73
+ const total = (() => { try {
74
+ analyzeRashomon([], space);
75
+ analyzeRashomon(null, space);
76
+ analyzeRashomon(o1, { dims: [] });
77
+ return true;
78
+ }
79
+ catch {
80
+ return false;
81
+ } })();
82
+ const checks = [
83
+ { name: "FINDS-MULTIPLE-OPTIMA", pass: findsTwo, detail: `two equal peaks → ${s1.recipes.length} distinct near-best recipes (flexibility "${s1.flexibility}")` },
84
+ { name: "RECIPES-ARE-DISTINCT", pass: recipesDistinct, detail: `the alternatives are genuinely different (x ${s1.recipes[0]?.settings.x} vs ${s1.recipes[1]?.settings.x})` },
85
+ { name: "ALL-WITHIN-TOLERANCE", pass: allNearBest, detail: `every recipe scores within tolerance of the best (≥0.93 of 1.0)` },
86
+ { name: "SINGLE-PEAK-ONE-RECIPE", pass: singleOk, detail: `one peak → ${s2.recipes.length} recipe (no false alternatives)` },
87
+ { name: "DETERMINISTIC", pass: det, detail: "same data → same family" },
88
+ { name: "ABSTAINS-WHEN-THIN", pass: abstains, detail: "too few measurements → no claim" },
89
+ { name: "TOTAL", pass: total, detail: "empty / null / no-dims never throws" },
90
+ ];
91
+ return { score: checks.every((c) => c.pass) ? 100 : 0, checks };
92
+ }
93
+ //# sourceMappingURL=rashomon.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rashomon.js","sourceRoot":"","sources":["../src/rashomon.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,79 @@
1
+ /**
2
+ * RELIABILITY — the falsifiable "97.5% on every landscape" bar.
3
+ *
4
+ * A single benchmark function proves nothing; an optimizer that wins on a smooth bowl can fail badly on a
5
+ * deceptive, multi-trap, or high-dimensional surface. RELIABILITY runs the engine across a deliberately
6
+ * adversarial BATTERY — smooth, many-trap (Rastrigin), deceptive (Ackley), curved-valley (Rosenbrock),
7
+ * oscillatory (Griewank), high-dimensional, and a sharp needle — each NORMALISED so the true global
8
+ * optimum is exactly 1.0. The score for a run is therefore literally "% of the true optimum reached".
9
+ *
10
+ * The bar: the engine must reach a high fraction of the true optimum on EVERY landscape, averaged over
11
+ * several seeds — not just on average across the battery (which would let a smooth-surface win hide a
12
+ * pathological failure). The gauntlet reports the worst landscape, so the claim is honest and falsifiable:
13
+ * anyone can re-run it and check the per-landscape numbers.
14
+ */
15
+ import { type Space, type Experiment } from "./space.js";
16
+ import { type Goal, type Observation } from "./engine.js";
17
+ export interface Landscape {
18
+ name: string;
19
+ space: Space;
20
+ f: (e: Experiment) => number;
21
+ budget: number;
22
+ note: string;
23
+ }
24
+ /**
25
+ * POLISH — a deterministic compass / pattern search (Hooke–Jeeves style) that follows a curved valley the
26
+ * global explorer can only get near. From the incumbent best it probes ± a step along each axis; on an
27
+ * improvement it keeps the move, otherwise it halves the step — so it converges into ridges (Rosenbrock)
28
+ * that random/Bayesian sampling burns hundreds of experiments failing to nail. No randomness, no deps:
29
+ * the local exploiter that turns "near the optimum" into "on the optimum".
30
+ */
31
+ export declare function polish(space: Space, oracle: (e: Experiment) => number, start: Experiment, evals: number, goal?: Goal): {
32
+ experiment: Experiment;
33
+ value: number;
34
+ };
35
+ /**
36
+ * RELIABLE DISCOVER — Melete's signature 3-paradigm memetic engine. Three fundamentally different searchers
37
+ * compose into one run: (1) the self-allocating PORTFOLIO explores globally to find the right basin;
38
+ * (2) an OPTIMISTIC LIPSCHITZ INFILL (DIRECT-style) turns Melete's own optimality certificate INTO an
39
+ * acquisition — it samples the single point where the certified upper bound is highest, i.e. the most
40
+ * promising unexplored region the data cannot yet rule out; (3) NELDER–MEAD polish exploits locally to nail
41
+ * the optimum. Global basin → certificate-guided infill of the gaps → local precision. Fully deterministic
42
+ * ⇒ reproducible + signable. The diamond (CERTIFY) is not just a report here — it steers the search.
43
+ */
44
+ export declare function reliableDiscover(opts: {
45
+ space: Space;
46
+ oracle: (e: Experiment) => number;
47
+ budget: number;
48
+ seed?: number;
49
+ goal?: Goal;
50
+ }): Promise<{
51
+ best: Observation;
52
+ armStats: import("./portfolio.js").ArmStat[];
53
+ evaluations: number;
54
+ goal: Goal;
55
+ }>;
56
+ /** All landscapes are maximise, normalised so the global optimum value == 1.0 (so best.value == % of optimum). */
57
+ export declare function landscapes(): Landscape[];
58
+ export interface LandscapeResult {
59
+ name: string;
60
+ meanPct: number;
61
+ minPct: number;
62
+ note: string;
63
+ budget: number;
64
+ seeds: number;
65
+ }
66
+ /** Run the portfolio engine over every landscape × `seeds` seeds; return % of true optimum reached. */
67
+ export declare function reliabilityBench(seeds?: number): Promise<{
68
+ results: LandscapeResult[];
69
+ worst: LandscapeResult;
70
+ }>;
71
+ export declare function reliabilityGauntlet(): Promise<{
72
+ score: 0 | 100;
73
+ checks: Array<{
74
+ name: string;
75
+ pass: boolean;
76
+ detail: string;
77
+ }>;
78
+ }>;
79
+ //# sourceMappingURL=reliability.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reliability.d.ts","sourceRoot":"","sources":["../src/reliability.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,EAAE,KAAK,KAAK,EAAE,KAAK,UAAU,EAAE,MAAM,YAAY,CAAC;AACzD,OAAO,EAAE,KAAK,IAAI,EAAE,KAAK,WAAW,EAAE,MAAM,aAAa,CAAC;AAG1D,MAAM,WAAW,SAAS;IAAG,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,KAAK,CAAC;IAAC,CAAC,EAAE,CAAC,CAAC,EAAE,UAAU,KAAK,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE;AAErH;;;;;;GAMG;AACH,wBAAgB,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,UAAU,KAAK,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,GAAE,IAAiB,GAAG;IAAE,UAAU,EAAE,UAAU,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAmC5K;AAED;;;;;;;;GAQG;AACH,wBAAsB,gBAAgB,CAAC,IAAI,EAAE;IAAE,KAAK,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,CAAC,CAAC,EAAE,UAAU,KAAK,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,IAAI,CAAA;CAAE;;;;;GAgC3I;AAMD,kHAAkH;AAClH,wBAAgB,UAAU,IAAI,SAAS,EAAE,CAiBxC;AAED,MAAM,WAAW,eAAe;IAAG,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE;AAE/H,uGAAuG;AACvG,wBAAsB,gBAAgB,CAAC,KAAK,SAAI,GAAG,OAAO,CAAC;IAAE,OAAO,EAAE,eAAe,EAAE,CAAC;IAAC,KAAK,EAAE,eAAe,CAAA;CAAE,CAAC,CAajH;AAMD,wBAAsB,mBAAmB,IAAI,OAAO,CAAC;IAAE,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC;IAAC,MAAM,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,CAAC,CAUvI"}
@@ -0,0 +1,197 @@
1
+ import { portfolioDiscover } from "./portfolio.js";
2
+ /**
3
+ * POLISH — a deterministic compass / pattern search (Hooke–Jeeves style) that follows a curved valley the
4
+ * global explorer can only get near. From the incumbent best it probes ± a step along each axis; on an
5
+ * improvement it keeps the move, otherwise it halves the step — so it converges into ridges (Rosenbrock)
6
+ * that random/Bayesian sampling burns hundreds of experiments failing to nail. No randomness, no deps:
7
+ * the local exploiter that turns "near the optimum" into "on the optimum".
8
+ */
9
+ export function polish(space, oracle, start, evals, goal = "maximize") {
10
+ const dims = space.dims;
11
+ const n = dims.length;
12
+ const names = dims.map((d) => d.name);
13
+ const clampV = (i, v) => Math.max(dims[i].min ?? -Infinity, Math.min(dims[i].max ?? Infinity, v));
14
+ const toArr = (e) => names.map((nm) => +(e[nm] || 0));
15
+ const toExp = (a) => { const e = {}; a.forEach((v, i) => (e[names[i]] = clampV(i, v))); return e; };
16
+ const sgn = goal === "minimize" ? 1 : -1; // we MINIMISE F = sgn·f, so higher f ⇒ lower F
17
+ let used = 0;
18
+ const F = (a) => { used++; return sgn * oracle(toExp(a)); };
19
+ // initial simplex: the incumbent + one axis-perturbed point per dimension
20
+ let pts = [toArr(start)];
21
+ for (let i = 0; i < n; i++) {
22
+ const p = toArr(start).slice();
23
+ const span = (dims[i].max ?? 1) - (dims[i].min ?? 0) || 1;
24
+ p[i] = clampV(i, p[i] + 0.08 * span);
25
+ pts.push(p);
26
+ }
27
+ let fv = pts.map(F);
28
+ const order = () => { const idx = [...pts.keys()].sort((a, b) => fv[a] - fv[b]); pts = idx.map((i) => pts[i]); fv = idx.map((i) => fv[i]); };
29
+ const A = 1, G = 2, R = 0.5, S = 0.5; // reflect / expand / contract / shrink
30
+ while (used < evals - 1) {
31
+ order();
32
+ const c = new Array(n).fill(0);
33
+ for (let i = 0; i < n; i++)
34
+ for (let j = 0; j < n; j++)
35
+ c[j] += pts[i][j];
36
+ for (let j = 0; j < n; j++)
37
+ c[j] /= n;
38
+ const worst = pts[n], fWorst = fv[n], fBest = fv[0], fSecond = fv[n - 1];
39
+ const xr = c.map((cj, j) => clampV(j, cj + A * (cj - worst[j])));
40
+ const fr = F(xr);
41
+ if (fr < fBest) {
42
+ const xe = c.map((cj, j) => clampV(j, cj + G * (xr[j] - cj)));
43
+ const fe = F(xe);
44
+ if (fe < fr) {
45
+ pts[n] = xe;
46
+ fv[n] = fe;
47
+ }
48
+ else {
49
+ pts[n] = xr;
50
+ fv[n] = fr;
51
+ }
52
+ }
53
+ else if (fr < fSecond) {
54
+ pts[n] = xr;
55
+ fv[n] = fr;
56
+ }
57
+ else {
58
+ const xc = c.map((cj, j) => clampV(j, cj + R * (worst[j] - cj)));
59
+ const fc = F(xc);
60
+ if (fc < fWorst) {
61
+ pts[n] = xc;
62
+ fv[n] = fc;
63
+ }
64
+ else {
65
+ for (let i = 1; i <= n && used < evals; i++) {
66
+ pts[i] = pts[i].map((v, j) => clampV(j, pts[0][j] + S * (v - pts[0][j])));
67
+ fv[i] = F(pts[i]);
68
+ }
69
+ }
70
+ }
71
+ }
72
+ order();
73
+ return { experiment: toExp(pts[0]), value: sgn * fv[0] };
74
+ }
75
+ /**
76
+ * RELIABLE DISCOVER — Melete's signature 3-paradigm memetic engine. Three fundamentally different searchers
77
+ * compose into one run: (1) the self-allocating PORTFOLIO explores globally to find the right basin;
78
+ * (2) an OPTIMISTIC LIPSCHITZ INFILL (DIRECT-style) turns Melete's own optimality certificate INTO an
79
+ * acquisition — it samples the single point where the certified upper bound is highest, i.e. the most
80
+ * promising unexplored region the data cannot yet rule out; (3) NELDER–MEAD polish exploits locally to nail
81
+ * the optimum. Global basin → certificate-guided infill of the gaps → local precision. Fully deterministic
82
+ * ⇒ reproducible + signable. The diamond (CERTIFY) is not just a report here — it steers the search.
83
+ */
84
+ export async function reliableDiscover(opts) {
85
+ const goal = opts.goal ?? "maximize";
86
+ const space = opts.space, oracle = opts.oracle, dims = space.dims, D = dims.length;
87
+ const sgn = goal === "minimize" ? -1 : 1;
88
+ const better = (a, b) => (goal === "minimize" ? a < b : a > b);
89
+ const globalBudget = Math.max(8, Math.round(opts.budget * 0.30));
90
+ const infillBudget = Math.max(0, Math.round(opts.budget * 0.20));
91
+ const localBudget = Math.max(8, opts.budget - globalBudget - infillBudget);
92
+ // PHASE 1 — global explore (find the basin)
93
+ const g = await portfolioDiscover({ space, oracle, budget: globalBudget, seed: opts.seed ?? 1, goal });
94
+ const obs = (g.history || []).map((s) => ({ experiment: s.experiment, value: s.value }));
95
+ // normalise ↔ real + a deterministic Halton space-filling probe
96
+ const lo = (i) => dims[i].min ?? 0, hi = (i) => dims[i].max ?? 1;
97
+ const toN = (e) => dims.map((d, i) => { const sp = hi(i) - lo(i) || 1; return Math.max(0, Math.min(1, ((+e[d.name] || 0) - lo(i)) / sp)); });
98
+ const toE = (v) => { const e = {}; dims.forEach((d, i) => (e[d.name] = lo(i) + v[i] * (hi(i) - lo(i)))); return e; };
99
+ const HB = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37];
100
+ const hal = (k, b) => { let f = 1, r = 0, i = k + 1; while (i > 0) {
101
+ f /= b;
102
+ r += f * (i % b);
103
+ i = Math.floor(i / b);
104
+ } return r; };
105
+ const dst = (a, c) => { let s = 0; for (let i = 0; i < a.length; i++)
106
+ s += (a[i] - c[i]) ** 2; return Math.sqrt(s); };
107
+ // PHASE 2 — optimistic Lipschitz infill (certificate-guided): each step samples the point of highest upper bound
108
+ for (let k = 0; k < infillBudget; k++) {
109
+ const npts = obs.map((o) => toN(o.experiment)), vals = obs.map((o) => sgn * o.value);
110
+ let L = 0;
111
+ for (let i = 0; i < npts.length; i++)
112
+ for (let j = i + 1; j < npts.length; j++) {
113
+ const dx = dst(npts[i], npts[j]);
114
+ if (dx > 1e-9)
115
+ L = Math.max(L, Math.abs(vals[i] - vals[j]) / dx);
116
+ }
117
+ L = (L > 0 ? L : 1e-6) * 1.3;
118
+ let bestC = null, bestUB = -Infinity;
119
+ for (let s = 0; s < 1500; s++) {
120
+ const c = [];
121
+ for (let d = 0; d < D; d++)
122
+ c.push(hal(k * 1500 + s + 1, HB[d % HB.length]));
123
+ let ub = Infinity;
124
+ for (let i = 0; i < npts.length; i++) {
125
+ const b = vals[i] + L * dst(c, npts[i]);
126
+ if (b < ub)
127
+ ub = b;
128
+ }
129
+ if (ub > bestUB) {
130
+ bestUB = ub;
131
+ bestC = c;
132
+ }
133
+ }
134
+ if (bestC) {
135
+ const e = toE(bestC);
136
+ obs.push({ experiment: e, value: oracle(e) });
137
+ }
138
+ }
139
+ let best = obs.reduce((a, b) => (better(b.value, a.value) ? b : a), g.best);
140
+ // PHASE 3 — Nelder–Mead local polish (nail the optimum)
141
+ const p = polish(space, oracle, best.experiment, localBudget, goal);
142
+ if (better(p.value, best.value))
143
+ best = { experiment: p.experiment, value: p.value };
144
+ return { best, armStats: g.armStats, evaluations: globalBudget + infillBudget + localBudget, goal };
145
+ }
146
+ const realDims = (n, lo = -5, hi = 5) => ({ dims: Array.from({ length: n }, (_, i) => ({ name: "x" + i, type: "real", min: lo, max: hi })) });
147
+ const vec = (e, n) => Array.from({ length: n }, (_, i) => +(e["x" + i] ?? 0));
148
+ const TAU = Math.PI * 2;
149
+ /** All landscapes are maximise, normalised so the global optimum value == 1.0 (so best.value == % of optimum). */
150
+ export function landscapes() {
151
+ return [
152
+ { name: "smooth-bowl", space: realDims(2), budget: 50, note: "convex — the easy baseline",
153
+ f: (e) => { const x = vec(e, 2); return Math.exp(-(x[0] * x[0] + x[1] * x[1]) / 8); } },
154
+ { name: "rastrigin-2d", space: realDims(2, -5.12, 5.12), budget: 70, note: "dozens of regular traps",
155
+ f: (e) => { const x = vec(e, 2); const r = 10 * 2 + x.reduce((s, v) => s + v * v - 10 * Math.cos(TAU * v), 0); return 1 / (1 + r); } },
156
+ { name: "ackley-2d", space: realDims(2, -5, 5), budget: 70, note: "deceptive — flat rim, narrow centre",
157
+ f: (e) => { const x = vec(e, 2); const a = -20 * Math.exp(-0.2 * Math.sqrt((x[0] * x[0] + x[1] * x[1]) / 2)) - Math.exp((Math.cos(TAU * x[0]) + Math.cos(TAU * x[1])) / 2) + 20 + Math.E; return Math.exp(-a / 3); } },
158
+ { name: "rosenbrock-2d", space: realDims(2, -2, 2), budget: 130, note: "curved banana valley",
159
+ f: (e) => { const x = vec(e, 2); const r = 100 * (x[1] - x[0] * x[0]) ** 2 + (1 - x[0]) ** 2; return 1 / (1 + r); } },
160
+ { name: "griewank-2d", space: realDims(2, -8, 8), budget: 70, note: "wide + fine oscillation",
161
+ f: (e) => { const x = vec(e, 2); const s = (x[0] * x[0] + x[1] * x[1]) / 4000; const p = Math.cos(x[0] / Math.sqrt(1)) * Math.cos(x[1] / Math.sqrt(2)); return 1 / (1 + (s - p + 1)); } },
162
+ { name: "high-dim-5d", space: realDims(5), budget: 100, note: "5 variables — curse of dimensionality",
163
+ f: (e) => { const x = vec(e, 5); return Math.exp(-x.reduce((s, v) => s + v * v, 0) / 20); } },
164
+ { name: "needle-2d", space: realDims(2, -5, 5), budget: 90, note: "one sharp narrow peak in a flat plain",
165
+ f: (e) => { const x = vec(e, 2); const c0 = 2.3, c1 = -1.7; return Math.exp(-((x[0] - c0) ** 2 + (x[1] - c1) ** 2) / 0.8); } },
166
+ ];
167
+ }
168
+ /** Run the portfolio engine over every landscape × `seeds` seeds; return % of true optimum reached. */
169
+ export async function reliabilityBench(seeds = 4) {
170
+ const results = [];
171
+ for (const L of landscapes()) {
172
+ const pcts = [];
173
+ for (let s = 1; s <= seeds; s++) {
174
+ const r = await reliableDiscover({ space: L.space, oracle: L.f, budget: L.budget, seed: s, goal: "maximize" });
175
+ pcts.push(Math.max(0, Math.min(1, r.best.value))); // optimum == 1, so best.value == % of optimum
176
+ }
177
+ const meanPct = pcts.reduce((a, b) => a + b, 0) / pcts.length;
178
+ results.push({ name: L.name, meanPct, minPct: Math.min(...pcts), note: L.note, budget: L.budget, seeds });
179
+ }
180
+ const worst = results.reduce((a, b) => (b.meanPct < a.meanPct ? b : a));
181
+ return { results, worst };
182
+ }
183
+ // ── gauntlet ──────────────────────────────────────────────────────────────────
184
+ const BAR = 0.99; // every landscape must reach ≥ 99% of its true optimum (mean over seeds)
185
+ const SEED_BAR = 0.97; // and no single seed may fall below 97% (no lucky-average hiding a bad run)
186
+ export async function reliabilityGauntlet() {
187
+ const { results, worst } = await reliabilityBench(4);
188
+ const checks = results.map((r) => ({
189
+ name: r.name.toUpperCase(),
190
+ pass: r.meanPct >= BAR && r.minPct >= SEED_BAR,
191
+ detail: `reached ${(r.meanPct * 100).toFixed(1)}% of optimum (worst seed ${(r.minPct * 100).toFixed(1)}%) — ${r.note}`,
192
+ }));
193
+ const minMean = Math.min(...results.map((r) => r.meanPct)), minSeed = Math.min(...results.map((r) => r.minPct));
194
+ checks.push({ name: "EVERY-LANDSCAPE≥99%", pass: minMean >= BAR && minSeed >= SEED_BAR, detail: `worst mean = ${worst.name} ${(minMean * 100).toFixed(1)}%; worst single seed ${(minSeed * 100).toFixed(1)}%` });
195
+ return { score: checks.every((c) => c.pass) ? 100 : 0, checks };
196
+ }
197
+ //# sourceMappingURL=reliability.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reliability.js","sourceRoot":"","sources":["../src/reliability.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAInD;;;;;;GAMG;AACH,MAAM,UAAU,MAAM,CAAC,KAAY,EAAE,MAAiC,EAAE,KAAiB,EAAE,KAAa,EAAE,OAAa,UAAU;IAC/H,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;IAAC,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;IAC/C,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACtC,MAAM,MAAM,GAAG,CAAC,CAAS,EAAE,CAAS,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC;IAClH,MAAM,KAAK,GAAG,CAAC,CAAa,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClE,MAAM,KAAK,GAAG,CAAC,CAAW,EAAc,EAAE,GAAG,MAAM,CAAC,GAAe,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IACtI,MAAM,GAAG,GAAG,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAK,+CAA+C;IAC7F,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,MAAM,CAAC,GAAG,CAAC,CAAW,EAAE,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC,OAAO,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACtE,0EAA0E;IAC1E,IAAI,GAAG,GAAe,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;IACrC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAAC,MAAM,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC;QAAC,MAAM,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;QAAC,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC;QAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAAC,CAAC;IAC7K,IAAI,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACpB,MAAM,KAAK,GAAG,GAAG,EAAE,GAAG,MAAM,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7I,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,GAAG,CAAC,CAAU,uCAAuC;IACtF,OAAO,IAAI,GAAG,KAAK,GAAG,CAAC,EAAE,CAAC;QACxB,KAAK,EAAE,CAAC;QACR,MAAM,CAAC,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC/B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;YAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;gBAAE,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1E,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;YAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACtC,MAAM,KAAK,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QACzE,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAAC,MAAM,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;QACnF,IAAI,EAAE,GAAG,KAAK,EAAE,CAAC;YACf,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;YAAC,MAAM,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;YAChF,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC;gBAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;gBAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;YAAC,CAAC;iBAAM,CAAC;gBAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;gBAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;YAAC,CAAC;QAC7E,CAAC;aAAM,IAAI,EAAE,GAAG,OAAO,EAAE,CAAC;YACxB,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;YAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;QAC1B,CAAC;aAAM,CAAC;YACN,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;YAAC,MAAM,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;YACnF,IAAI,EAAE,GAAG,MAAM,EAAE,CAAC;gBAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;gBAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;YAAC,CAAC;iBACxC,CAAC;gBAAC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,IAAI,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;oBAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;gBAAC,CAAC;YAAC,CAAC;QACzJ,CAAC;IACH,CAAC;IACD,KAAK,EAAE,CAAC;IACR,OAAO,EAAE,UAAU,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AAC3D,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,IAAqG;IAC1I,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,UAAU,CAAC;IACrC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,IAAI,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;IACnF,MAAM,GAAG,GAAG,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACzC,MAAM,MAAM,GAAG,CAAC,CAAS,EAAE,CAAS,EAAE,EAAE,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAC/E,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC;IACjE,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC;IACjE,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,GAAG,YAAY,GAAG,YAAY,CAAC,CAAC;IAC3E,4CAA4C;IAC5C,MAAM,CAAC,GAAG,MAAM,iBAAiB,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;IACvG,MAAM,GAAG,GAAkB,CAAC,CAAC,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IACxG,gEAAgE;IAChE,MAAM,EAAE,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IACjF,MAAM,GAAG,GAAG,CAAC,CAAa,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACzJ,MAAM,GAAG,GAAG,CAAC,CAAW,EAAc,EAAE,GAAG,MAAM,CAAC,GAAe,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IACvJ,MAAM,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IACxD,MAAM,GAAG,GAAG,CAAC,CAAS,EAAE,CAAS,EAAE,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QAAC,CAAC,IAAI,CAAC,CAAC;QAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IACpJ,MAAM,GAAG,GAAG,CAAC,CAAW,EAAE,CAAW,EAAE,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE;QAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1I,iHAAiH;IACjH,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,MAAM,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,EAAE,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;QACrF,IAAI,CAAC,GAAG,CAAC,CAAC;QAAC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE;YAAE,KAAK,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBAAC,MAAM,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;gBAAC,IAAI,EAAE,GAAG,IAAI;oBAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;YAAC,CAAC;QAClM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC;QAC7B,IAAI,KAAK,GAAoB,IAAI,EAAE,MAAM,GAAG,CAAC,QAAQ,CAAC;QACtD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;YAAC,MAAM,CAAC,GAAa,EAAE,CAAC;YAAC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;gBAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YAAC,IAAI,EAAE,GAAG,QAAQ,CAAC;YAAC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBAAC,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;gBAAC,IAAI,CAAC,GAAG,EAAE;oBAAE,EAAE,GAAG,CAAC,CAAC;YAAC,CAAC;YAAC,IAAI,EAAE,GAAG,MAAM,EAAE,CAAC;gBAAC,MAAM,GAAG,EAAE,CAAC;gBAAC,KAAK,GAAG,CAAC,CAAC;YAAC,CAAC;QAAC,CAAC;QAC/S,IAAI,KAAK,EAAE,CAAC;YAAC,MAAM,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC;YAAC,GAAG,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAAC,CAAC;IACrF,CAAC;IACD,IAAI,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;IAC5E,wDAAwD;IACxD,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,WAAW,EAAE,IAAI,CAAC,CAAC;IACpE,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC;QAAE,IAAI,GAAG,EAAE,UAAU,EAAE,CAAC,CAAC,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;IACrF,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,WAAW,EAAE,YAAY,GAAG,YAAY,GAAG,WAAW,EAAE,IAAI,EAAE,CAAC;AACtG,CAAC;AAED,MAAM,QAAQ,GAAG,CAAC,CAAS,EAAE,EAAE,GAAG,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,EAAS,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;AAC7J,MAAM,GAAG,GAAG,CAAC,CAAa,EAAE,CAAS,EAAY,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC5G,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;AAExB,kHAAkH;AAClH,MAAM,UAAU,UAAU;IACxB,OAAO;QACL,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,4BAA4B;YACvF,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,GAAG,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;QACzF,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,yBAAyB;YAClG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,GAAG,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;QACxI,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,qCAAqC;YACrG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,GAAG,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;QACxN,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,sBAAsB;YAC3F,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,GAAG,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;QACvH,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,yBAAyB;YAC3F,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,GAAG,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;QAC3L,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,uCAAuC;YACnG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,GAAG,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE;QAC/F,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,uCAAuC;YACvG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,GAAG,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE;KACjI,CAAC;AACJ,CAAC;AAID,uGAAuG;AACvG,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,KAAK,GAAG,CAAC;IAC9C,MAAM,OAAO,GAAsB,EAAE,CAAC;IACtC,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE,EAAE,CAAC;QAC7B,MAAM,IAAI,GAAa,EAAE,CAAC;QAC1B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;YAChC,MAAM,CAAC,GAAG,MAAM,gBAAgB,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;YAC/G,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAG,8CAA8C;QACrG,CAAC;QACD,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;QAC9D,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;IAC5G,CAAC;IACD,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACxE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;AAC5B,CAAC;AAED,iFAAiF;AACjF,MAAM,GAAG,GAAG,IAAI,CAAC,CAAQ,yEAAyE;AAClG,MAAM,QAAQ,GAAG,IAAI,CAAC,CAAG,4EAA4E;AAErG,MAAM,CAAC,KAAK,UAAU,mBAAmB;IACvC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,MAAM,gBAAgB,CAAC,CAAC,CAAC,CAAC;IACrD,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACjC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE;QAC1B,IAAI,EAAE,CAAC,CAAC,OAAO,IAAI,GAAG,IAAI,CAAC,CAAC,MAAM,IAAI,QAAQ;QAC9C,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,OAAO,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE;KACvH,CAAC,CAAC,CAAC;IACJ,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;IAChH,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,qBAAqB,EAAE,IAAI,EAAE,OAAO,IAAI,GAAG,IAAI,OAAO,IAAI,QAAQ,EAAE,MAAM,EAAE,gBAAgB,KAAK,CAAC,IAAI,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,wBAAwB,CAAC,OAAO,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;IACjN,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC;AAClE,CAAC"}
@@ -0,0 +1,62 @@
1
+ /**
2
+ * REPLAY TOKEN — the auditor's time machine. When a regulated lab/bank gets audited, or a system behaves
3
+ * unexpectedly, the worst words are "we can't reproduce how that decision was reached." Melete's engines are
4
+ * fully DETERMINISTIC (seeded; no wall-clock, no randomness), so an analysis is exactly reproducible. The
5
+ * Replay Token captures everything needed to re-derive a verdict — the measured inputs, the goal — plus a
6
+ * per-step hash chain and an Ed25519 signature, in one self-contained, offline artifact.
7
+ *
8
+ * Hand the token to an auditor and they don't have to trust Melete (or you): they re-run it on their own
9
+ * machine and get a BYTE-IDENTICAL verdict, step by step (DISCOVER → DECIDE → DIAGNOSE). If even one input
10
+ * was altered, the signature fails; if the engine ever diverged, the replay names the exact step that
11
+ * differs. "Here is cryptographic proof of exactly how this decision was reached, re-derivable by anyone,
12
+ * forever, with no server."
13
+ *
14
+ * Honest by construction (DIAKRISIS): a Replay Token reproduces MELETE'S OWN analysis/decision from the
15
+ * signed inputs — it is the audit trail of the reasoning, NOT a recording of the customer's production RAM /
16
+ * network / environment (that is a different, kernel-level product). What it proves is real and exact:
17
+ * provenance (these inputs, this result, unaltered) + reproducibility (re-derivable offline, step by step).
18
+ */
19
+ import { type KeyObject } from "node:crypto";
20
+ import { type Space } from "./space.js";
21
+ import { type Observation, type Goal } from "./engine.js";
22
+ export interface ReplayStep {
23
+ name: string;
24
+ hash: string;
25
+ }
26
+ export interface ReplayToken {
27
+ standard: "melete-replay-token/v1";
28
+ space: Space;
29
+ goal: Goal;
30
+ observations: Observation[];
31
+ steps: ReplayStep[];
32
+ verdictHash: string;
33
+ signature: string;
34
+ publicKeyPem: string;
35
+ algo: "ed25519+sha256";
36
+ issuedAtMs: number;
37
+ }
38
+ /** Issue a self-contained, signed Replay Token for an analysis run. */
39
+ export declare function issueReplayToken(obs: ReadonlyArray<Observation>, space: Space, goal?: Goal, opts?: {
40
+ keys?: {
41
+ privateKey: KeyObject;
42
+ publicKey: KeyObject;
43
+ };
44
+ issuedAtMs?: number;
45
+ }): ReplayToken;
46
+ export interface ReplayResult {
47
+ signatureValid: boolean;
48
+ reproduced: boolean;
49
+ firstDivergingStep: string | null;
50
+ reason: string;
51
+ }
52
+ /** Re-run a Replay Token OFFLINE: check its signature, then deterministically reproduce the verdict step-by-step. */
53
+ export declare function replayToken(token: ReplayToken): ReplayResult;
54
+ export declare function replayGauntlet(): {
55
+ score: 0 | 100;
56
+ checks: Array<{
57
+ name: string;
58
+ pass: boolean;
59
+ detail: string;
60
+ }>;
61
+ };
62
+ //# sourceMappingURL=replay.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"replay.d.ts","sourceRoot":"","sources":["../src/replay.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,EAAwF,KAAK,SAAS,EAAE,MAAM,aAAa,CAAC;AACnI,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,IAAI,EAAE,MAAM,aAAa,CAAC;AAG1D,MAAM,WAAW,UAAU;IAAG,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE;AAC1D,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,wBAAwB,CAAC;IACnC,KAAK,EAAE,KAAK,CAAC;IACb,IAAI,EAAE,IAAI,CAAC;IACX,YAAY,EAAE,WAAW,EAAE,CAAC;IAC5B,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,gBAAgB,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;CACpB;AA2BD,uEAAuE;AACvE,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,aAAa,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,GAAE,IAAiB,EAAE,IAAI,GAAE;IAAE,IAAI,CAAC,EAAE;QAAE,UAAU,EAAE,SAAS,CAAC;QAAC,SAAS,EAAE,SAAS,CAAA;KAAE,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,WAAW,CAOhN;AAED,MAAM,WAAW,YAAY;IAAG,cAAc,EAAE,OAAO,CAAC;IAAC,UAAU,EAAE,OAAO,CAAC;IAAC,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE;AAEjI,qHAAqH;AACrH,wBAAgB,WAAW,CAAC,KAAK,EAAE,WAAW,GAAG,YAAY,CAc5D;AAKD,wBAAgB,cAAc,IAAI;IAAE,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC;IAAC,MAAM,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,CA4CnH"}