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,38 @@
1
+ /**
2
+ * ACHIEVABILITY — is the target you WANT even reachable with the knobs you have? Every optimizer chases a
3
+ * better number; none tell you when you're chasing one that the physics can't deliver. If your goal is
4
+ * "yield ≥ 95%" but the best these variables can ever produce is ~88%, you can tune forever and never get
5
+ * there — the answer isn't a better setting, it's a new lever (a variable you aren't yet controlling) or a
6
+ * relaxed target. Knowing that EARLY saves weeks of doomed experiments.
7
+ *
8
+ * ACHIEVABILITY estimates the optimistic CEILING of your response over the whole variable space — a
9
+ * Lipschitz (smoothness) upper bound built from your own measurements — and compares your target against it.
10
+ * Target already met → achieved. Target below the ceiling → reachable, keep going. Target ABOVE even the
11
+ * optimistic ceiling → likely out of reach with these variables; stop tuning, change the experiment.
12
+ *
13
+ * Honest by construction (DIAKRISIS): the ceiling is an OPTIMISTIC estimate from the smoothness of your data,
14
+ * so "unreachable" means "above what your measurements can justify" — not a theorem of impossibility (a sharp
15
+ * spike between samples could exceed it; that's exactly what exploration is for). It abstains when data is
16
+ * thin, and it never cries "impossible" for a target your data already brackets.
17
+ */
18
+ import { type Space } from "./space.js";
19
+ import { type Observation, type Goal } from "./engine.js";
20
+ export interface AchievabilityReport {
21
+ target: number;
22
+ bestSoFar: number;
23
+ ceiling: number;
24
+ feasibility: number;
25
+ verdict: "achieved" | "reachable" | "unreachable" | "unknown";
26
+ note: string;
27
+ }
28
+ /** Estimate whether `target` is reachable for this objective given the measurements so far. */
29
+ export declare function assessAchievability(obs: ReadonlyArray<Observation>, space: Space, target: number, goal?: Goal): AchievabilityReport;
30
+ export declare function achievabilityGauntlet(): {
31
+ score: 0 | 100;
32
+ checks: Array<{
33
+ name: string;
34
+ pass: boolean;
35
+ detail: string;
36
+ }>;
37
+ };
38
+ //# sourceMappingURL=achievability.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"achievability.d.ts","sourceRoot":"","sources":["../src/achievability.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,EAAE,KAAK,KAAK,EAAmB,MAAM,YAAY,CAAC;AACzD,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,IAAI,EAAE,MAAM,aAAa,CAAC;AAE1D,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,UAAU,GAAG,WAAW,GAAG,aAAa,GAAG,SAAS,CAAC;IAC9D,IAAI,EAAE,MAAM,CAAC;CACd;AAMD,+FAA+F;AAC/F,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,aAAa,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,GAAE,IAAiB,GAAG,mBAAmB,CA8C/I;AAKD,wBAAgB,qBAAqB,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,CA8C1H"}
@@ -0,0 +1,135 @@
1
+ const HB = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37];
2
+ const hal = (k, b) => { let f = 1, r = 0, i = k + 1; while (i > 0) {
3
+ f /= b;
4
+ r += f * (i % b);
5
+ i = Math.floor(i / b);
6
+ } return r; };
7
+ const dst = (a, c) => { let s = 0; for (let i = 0; i < a.length; i++)
8
+ s += (a[i] - c[i]) ** 2; return Math.sqrt(s); };
9
+ /** Estimate whether `target` is reachable for this objective given the measurements so far. */
10
+ export function assessAchievability(obs, space, target, goal = "maximize") {
11
+ const dims = space?.dims ?? [];
12
+ const D = dims.length;
13
+ const hist = (obs ?? []).filter((o) => o && o.experiment && Number.isFinite(o.value));
14
+ const n = hist.length;
15
+ if (D === 0 || n < 6 || !Number.isFinite(target)) {
16
+ return { target, bestSoFar: NaN, ceiling: NaN, feasibility: 0, verdict: "unknown", note: `need ≈6+ measurements to estimate the ceiling (have ${n})` };
17
+ }
18
+ const sgn = goal === "minimize" ? -1 : 1;
19
+ const lo = (i) => dims[i].min ?? 0, hi = (i) => dims[i].max ?? 1;
20
+ 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)); });
21
+ const npts = hist.map((o) => toN(o.experiment));
22
+ const vals = hist.map((o) => sgn * o.value); // work in "bigger is better" space
23
+ const bestSigned = Math.max(...vals);
24
+ // Lipschitz constant from the data (largest value-change per unit distance)
25
+ let L = 0;
26
+ for (let i = 0; i < npts.length; i++)
27
+ for (let j = i + 1; j < npts.length; j++) {
28
+ const dx = dst(npts[i], npts[j]);
29
+ if (dx > 1e-9)
30
+ L = Math.max(L, Math.abs(vals[i] - vals[j]) / dx);
31
+ }
32
+ L = (L > 0 ? L : 1e-6) * 1.1;
33
+ // optimistic ceiling: max over a dense space-filling grid of the Lipschitz upper bound min_i(v_i + L·dist)
34
+ let ceilingSigned = bestSigned;
35
+ for (let k = 0; k < 1500; k++) {
36
+ const c = [];
37
+ for (let d = 0; d < D; d++)
38
+ c.push(hal(k * 5 + 1, HB[d % HB.length]));
39
+ let ub = Infinity;
40
+ for (let i = 0; i < npts.length; i++) {
41
+ const b = vals[i] + L * dst(c, npts[i]);
42
+ if (b < ub)
43
+ ub = b;
44
+ }
45
+ if (ub > ceilingSigned)
46
+ ceilingSigned = ub;
47
+ }
48
+ const bestSoFar = sgn * bestSigned;
49
+ const ceiling = sgn * ceilingSigned;
50
+ const targetSigned = sgn * target;
51
+ const span = Math.max(1e-9, ceilingSigned - bestSigned);
52
+ const feasibility = Math.max(0, Math.min(1, (ceilingSigned - targetSigned) / span)); // 1 at target=best, 0 at target=ceiling, <0→unreachable
53
+ let verdict;
54
+ let note;
55
+ const cmp = goal === "minimize" ? "≤" : "≥";
56
+ const fmt = (x) => (Math.abs(x) < 1 ? +x.toFixed(3) : +x.toFixed(2));
57
+ if (targetSigned <= bestSigned + 1e-9) {
58
+ verdict = "achieved";
59
+ note = `target ${cmp} ${fmt(target)} is already met (best so far ${fmt(bestSoFar)}) — you can stop or push further`;
60
+ }
61
+ else if (targetSigned <= ceilingSigned) {
62
+ verdict = "reachable";
63
+ note = `target ${fmt(target)} is below the estimated ceiling (~${fmt(ceiling)}) — reachable; keep optimizing (${(feasibility * 100).toFixed(0)}% headroom remaining)`;
64
+ }
65
+ else {
66
+ verdict = "unreachable";
67
+ note = `target ${fmt(target)} is ABOVE the optimistic ceiling (~${fmt(ceiling)}) these variables can reach — likely out of reach; add a new lever or relax the target`;
68
+ }
69
+ return { target, bestSoFar: +fmt(bestSoFar), ceiling: +fmt(ceiling), feasibility: +feasibility.toFixed(3), verdict, note };
70
+ }
71
+ // ── gauntlet ──────────────────────────────────────────────────────────────────
72
+ import { lcg } from "./space.js";
73
+ export function achievabilityGauntlet() {
74
+ const space = { dims: [{ name: "x", type: "real", min: 0, max: 1 }, { name: "y", type: "real", min: 0, max: 1 }] };
75
+ const TRUE_MAX = 1.0;
76
+ const f = (x, y) => Math.exp(-(((x - 0.5) ** 2) + ((y - 0.5) ** 2)) / 0.08); // peak 1.0 at (0.5,0.5)
77
+ const rnd = lcg(17);
78
+ const obs = [];
79
+ for (let i = 0; i < 80; i++) {
80
+ const x = rnd(), y = rnd();
81
+ obs.push({ experiment: { x, y }, value: f(x, y) });
82
+ }
83
+ // make sure the optimum region is sampled so bestSoFar is near the true max
84
+ for (let i = 0; i < 8; i++) {
85
+ const x = 0.5 + (rnd() - 0.5) * 0.1, y = 0.5 + (rnd() - 0.5) * 0.1;
86
+ obs.push({ experiment: { x, y }, value: f(x, y) });
87
+ }
88
+ const achieved = assessAchievability(obs, space, 0.5, "maximize"); // below best → achieved
89
+ const reachable = assessAchievability(obs, space, 0.97, "maximize"); // just under the true max → reachable, NOT impossible
90
+ const unreach = assessAchievability(obs, space, 1.6, "maximize"); // well above the max → unreachable
91
+ const achievedOk = achieved.verdict === "achieved";
92
+ const reachableOk = reachable.verdict !== "unreachable"; // must NOT falsely cry impossible below the real max
93
+ const unreachOk = unreach.verdict === "unreachable" && unreach.ceiling < 1.6;
94
+ // higher target → lower feasibility
95
+ const fa = assessAchievability(obs, space, 0.9, "maximize").feasibility;
96
+ const fb = assessAchievability(obs, space, 1.1, "maximize").feasibility;
97
+ const monotone = fa >= fb;
98
+ // MINIMIZE: target floor that's unreachably low
99
+ const g = (x, y) => 1 - f(x, y); // min 0.0 at (0.5,0.5)
100
+ const rnd2 = lcg(5);
101
+ const obsMin = [];
102
+ for (let i = 0; i < 88; i++) {
103
+ const x = rnd2(), y = rnd2();
104
+ obsMin.push({ experiment: { x, y }, value: g(x, y) });
105
+ }
106
+ for (let i = 0; i < 8; i++) {
107
+ const x = 0.5 + (rnd2() - 0.5) * 0.1, y = 0.5 + (rnd2() - 0.5) * 0.1;
108
+ obsMin.push({ experiment: { x, y }, value: g(x, y) });
109
+ }
110
+ const minUnreach = assessAchievability(obsMin, space, -0.5, "minimize"); // can't get below 0 → −0.5 unreachable
111
+ const minReach = assessAchievability(obsMin, space, 0.1, "minimize"); // 0.1 is reachable
112
+ const minOk = minUnreach.verdict === "unreachable" && minReach.verdict !== "unreachable";
113
+ const det = JSON.stringify(assessAchievability(obs, space, 1.6, "maximize")) === JSON.stringify(assessAchievability(obs, space, 1.6, "maximize"));
114
+ const abstains = assessAchievability(obs.slice(0, 4), space, 0.5, "maximize").verdict === "unknown";
115
+ const total = (() => { try {
116
+ assessAchievability(null, space, 1);
117
+ assessAchievability([], space, NaN);
118
+ return true;
119
+ }
120
+ catch {
121
+ return false;
122
+ } })();
123
+ const checks = [
124
+ { name: "ACHIEVED-WHEN-MET", pass: achievedOk, detail: `target below best → achieved (best ${achieved.bestSoFar})` },
125
+ { name: "REACHABLE-BELOW-MAX", pass: reachableOk, detail: `0.97 < true max ${TRUE_MAX} is NOT called impossible (verdict ${reachable.verdict}, ceiling ${reachable.ceiling})` },
126
+ { name: "UNREACHABLE-ABOVE-MAX", pass: unreachOk, detail: `1.6 > ceiling ${unreach.ceiling} → unreachable (add a lever)` },
127
+ { name: "HIGHER-TARGET-LOWER-FEASIBILITY", pass: monotone, detail: `feasibility drops as the target rises (${fa.toFixed(2)} → ${fb.toFixed(2)})` },
128
+ { name: "MINIMIZE-DIRECTION", pass: minOk, detail: `floor 0 → −0.5 unreachable, 0.1 reachable` },
129
+ { name: "DETERMINISTIC", pass: det, detail: "same data+target → same verdict" },
130
+ { name: "ABSTAINS-WHEN-THIN", pass: abstains, detail: "too few measurements → unknown" },
131
+ { name: "TOTAL", pass: total, detail: "null / empty / NaN target never throws" },
132
+ ];
133
+ return { score: checks.every((c) => c.pass) ? 100 : 0, checks };
134
+ }
135
+ //# sourceMappingURL=achievability.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"achievability.js","sourceRoot":"","sources":["../src/achievability.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,52 @@
1
+ /**
2
+ * 🛡 AEGIS — the Self-Aware Engine. Every optimizer on earth chases the single highest number. AEGIS refuses
3
+ * to. A tall spike perched on a cliff edge is a trap: it scores beautifully in the lab and fails the morning
4
+ * the temperature drifts 1°, the reagent batch changes, the operator's hand wobbles. AEGIS optimizes for the
5
+ * value that SURVIVES the real world — it watches its own search, learns where the cliffs and fragile spikes
6
+ * are, and deliberately steers toward a broad, stable optimum, even when a more fragile setting scores
7
+ * slightly higher.
8
+ *
9
+ * This is what makes it "self-aware": the same diagnostics Melete reports to humans (local steepness, cliff
10
+ * proximity, robustness) are fed back IN to drive the engine. Its acquisition isn't "highest predicted
11
+ * value" — it's "highest predicted value that also holds when you nudge it." And its final answer isn't the
12
+ * raw maximum, it's the best ROBUST optimum. No competitor's optimizer does this: they hand you the spike,
13
+ * then act surprised when it doesn't reproduce.
14
+ *
15
+ * Honest by construction (DIAKRISIS): robustness is estimated from your real data — how much the value
16
+ * changes for a small move, measured from the nearest measurements — not assumed. AEGIS trades a little raw
17
+ * peak height for a lot of stability; if you genuinely want the absolute spike, a plain maximiser still
18
+ * exists. The gauntlet proves it head-to-head: on a tall-fragile-spike-vs-broad-stable-peak landscape, AEGIS
19
+ * returns the setting that survives a real-world wobble while a plain maximiser returns the one that collapses.
20
+ */
21
+ import { type Space, type Experiment } from "./space.js";
22
+ import { type Observation, type Goal } from "./engine.js";
23
+ export interface AegisResult {
24
+ best: Observation;
25
+ rawBest: Observation;
26
+ robustnessOfBest: number;
27
+ tradedHeight: number;
28
+ evaluations: number;
29
+ obs: Observation[];
30
+ }
31
+ /**
32
+ * Run a self-aware discovery: search with a robustness-weighted acquisition and return the best STABLE
33
+ * optimum (not the fragile spike). `robustWeight` 0 = pure height (a normal maximiser), 1 = strongly favour
34
+ * flat regions.
35
+ */
36
+ export declare function aegisDiscover(opts: {
37
+ space: Space;
38
+ oracle: (e: Experiment) => number;
39
+ budget: number;
40
+ goal?: Goal;
41
+ seed?: number;
42
+ robustWeight?: number;
43
+ }): AegisResult;
44
+ export declare function aegisGauntlet(): {
45
+ score: 0 | 100;
46
+ checks: Array<{
47
+ name: string;
48
+ pass: boolean;
49
+ detail: string;
50
+ }>;
51
+ };
52
+ //# sourceMappingURL=aegis.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aegis.d.ts","sourceRoot":"","sources":["../src/aegis.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,OAAO,EAAE,KAAK,KAAK,EAAE,KAAK,UAAU,EAAO,MAAM,YAAY,CAAC;AAC9D,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,IAAI,EAAE,MAAM,aAAa,CAAC;AAM1D,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,WAAW,CAAC;IAClB,OAAO,EAAE,WAAW,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,GAAG,EAAE,WAAW,EAAE,CAAC;CACpB;AAED;;;;GAIG;AACH,wBAAgB,aAAa,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,IAAI,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,WAAW,CA4DvK;AAGD,wBAAgB,aAAa,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,CAmClH"}
package/dist/aegis.js ADDED
@@ -0,0 +1,191 @@
1
+ /**
2
+ * 🛡 AEGIS — the Self-Aware Engine. Every optimizer on earth chases the single highest number. AEGIS refuses
3
+ * to. A tall spike perched on a cliff edge is a trap: it scores beautifully in the lab and fails the morning
4
+ * the temperature drifts 1°, the reagent batch changes, the operator's hand wobbles. AEGIS optimizes for the
5
+ * value that SURVIVES the real world — it watches its own search, learns where the cliffs and fragile spikes
6
+ * are, and deliberately steers toward a broad, stable optimum, even when a more fragile setting scores
7
+ * slightly higher.
8
+ *
9
+ * This is what makes it "self-aware": the same diagnostics Melete reports to humans (local steepness, cliff
10
+ * proximity, robustness) are fed back IN to drive the engine. Its acquisition isn't "highest predicted
11
+ * value" — it's "highest predicted value that also holds when you nudge it." And its final answer isn't the
12
+ * raw maximum, it's the best ROBUST optimum. No competitor's optimizer does this: they hand you the spike,
13
+ * then act surprised when it doesn't reproduce.
14
+ *
15
+ * Honest by construction (DIAKRISIS): robustness is estimated from your real data — how much the value
16
+ * changes for a small move, measured from the nearest measurements — not assumed. AEGIS trades a little raw
17
+ * peak height for a lot of stability; if you genuinely want the absolute spike, a plain maximiser still
18
+ * exists. The gauntlet proves it head-to-head: on a tall-fragile-spike-vs-broad-stable-peak landscape, AEGIS
19
+ * returns the setting that survives a real-world wobble while a plain maximiser returns the one that collapses.
20
+ */
21
+ import { lcg } from "./space.js";
22
+ const HB = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37];
23
+ const hal = (k, b) => { let f = 1, r = 0, i = k + 1; while (i > 0) {
24
+ f /= b;
25
+ r += f * (i % b);
26
+ i = Math.floor(i / b);
27
+ } return r; };
28
+ const dst = (a, c) => { let s = 0; for (let i = 0; i < a.length; i++)
29
+ s += (a[i] - c[i]) ** 2; return Math.sqrt(s); };
30
+ /**
31
+ * Run a self-aware discovery: search with a robustness-weighted acquisition and return the best STABLE
32
+ * optimum (not the fragile spike). `robustWeight` 0 = pure height (a normal maximiser), 1 = strongly favour
33
+ * flat regions.
34
+ */
35
+ export function aegisDiscover(opts) {
36
+ const goal = opts.goal ?? "maximize";
37
+ const sgn = goal === "minimize" ? -1 : 1;
38
+ const budget = Math.max(2, Math.floor(opts.budget));
39
+ const seed = (opts.seed ?? 1) | 0;
40
+ const rw = Math.max(0, Math.min(1, opts.robustWeight ?? 0.6));
41
+ const dims = opts.space.dims, D = dims.length;
42
+ const lo = (i) => dims[i].min ?? 0, hi = (i) => dims[i].max ?? 1;
43
+ 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)); });
44
+ const toE = (v) => { const e = {}; dims.forEach((d, i) => { let x = lo(i) + v[i] * (hi(i) - lo(i)); if (d.type === "int")
45
+ x = Math.round(x); e[d.name] = x; }); return e; };
46
+ const obs = [];
47
+ const npts = [];
48
+ const vals = [];
49
+ const rnd = lcg((seed >>> 0) || 1);
50
+ const take = (p) => { const e = toE(p); const v = opts.oracle(e); obs.push({ experiment: e, value: v }); npts.push(p); vals.push(sgn * v); };
51
+ // local steepness at p: the biggest value-change per unit distance among nearby measurements (∞-fragile)
52
+ const steepness = (p) => {
53
+ let g = 0, any = false;
54
+ for (let i = 0; i < npts.length; i++) {
55
+ const d = dst(p, npts[i]);
56
+ if (d > 1e-6 && d < 0.28) {
57
+ any = true;
58
+ const s = Math.abs(vals[i] - nearestVal(p)) / d;
59
+ if (s > g)
60
+ g = s;
61
+ }
62
+ }
63
+ return any ? g : 0;
64
+ };
65
+ const nearestVal = (p) => { let dm = Infinity, v = 0; for (let i = 0; i < npts.length; i++) {
66
+ const d = dst(p, npts[i]);
67
+ if (d < dm) {
68
+ dm = d;
69
+ v = vals[i];
70
+ }
71
+ } return v; };
72
+ // seed: a small space-filling burst so we can see the terrain before judging it
73
+ const seeds = Math.min(budget, Math.max(4, Math.round(budget * 0.4)));
74
+ for (let k = 0; k < seeds; k++) {
75
+ const p = [];
76
+ for (let d = 0; d < D; d++)
77
+ p.push(hal(k * 5 + 1, HB[d % HB.length]));
78
+ take(p);
79
+ }
80
+ while (obs.length < budget) {
81
+ // value model: optimistic Lipschitz upper bound
82
+ let L = 0;
83
+ for (let i = 0; i < npts.length; i++)
84
+ for (let j = i + 1; j < npts.length; j++) {
85
+ const dx = dst(npts[i], npts[j]);
86
+ if (dx > 1e-9)
87
+ L = Math.max(L, Math.abs(vals[i] - vals[j]) / dx);
88
+ }
89
+ L = (L > 0 ? L : 1e-6) * 1.15;
90
+ const vRange = Math.max(1e-9, Math.max(...vals) - Math.min(...vals));
91
+ const bestRobust = robustPick();
92
+ const cands = [];
93
+ for (let k = 0; k < 600; k++) {
94
+ const c = [];
95
+ for (let d = 0; d < D; d++)
96
+ c.push(hal(k * 7 + (obs.length % 5) + 1, HB[d % HB.length]));
97
+ cands.push(c);
98
+ }
99
+ if (bestRobust)
100
+ for (let k = 0; k < 120; k++)
101
+ cands.push(bestRobust.p.map((x) => Math.max(0, Math.min(1, x + (rnd() - 0.5) * 0.2))));
102
+ let pick = null, pickScore = -Infinity;
103
+ for (const c of cands) {
104
+ let ub = Infinity;
105
+ for (let i = 0; i < npts.length; i++) {
106
+ const b = vals[i] + L * dst(c, npts[i]);
107
+ if (b < ub)
108
+ ub = b;
109
+ }
110
+ const flat = 1 / (1 + (steepness(c) / vRange) * 2); // 1 = flat/robust, →0 = on a steep wall
111
+ const score = ub * (1 - rw + rw * flat); // robustness-weighted acquisition
112
+ if (score > pickScore) {
113
+ pickScore = score;
114
+ pick = c;
115
+ }
116
+ }
117
+ take(pick ?? cands[0]);
118
+ }
119
+ // final selection: the best ROBUST optimum (value × local flatness), not the raw spike
120
+ function robustPick() {
121
+ if (!npts.length)
122
+ return null;
123
+ const vRange = Math.max(1e-9, Math.max(...vals) - Math.min(...vals));
124
+ let bi = 0, bs = -Infinity;
125
+ for (let i = 0; i < npts.length; i++) {
126
+ const flat = 1 / (1 + (steepness(npts[i]) / vRange) * 2);
127
+ const s = vals[i] * (1 - rw) + vals[i] * rw * flat;
128
+ if (s > bs) {
129
+ bs = s;
130
+ bi = i;
131
+ }
132
+ }
133
+ return { i: bi, p: npts[bi], flat: 1 / (1 + (steepness(npts[bi]) / vRange) * 2) };
134
+ }
135
+ const rp = robustPick();
136
+ const vRange = Math.max(1e-9, Math.max(...vals) - Math.min(...vals));
137
+ let rawI = 0;
138
+ for (let i = 1; i < vals.length; i++)
139
+ if (vals[i] > vals[rawI])
140
+ rawI = i;
141
+ return {
142
+ best: obs[rp.i], rawBest: obs[rawI],
143
+ robustnessOfBest: +(1 / (1 + (steepness(npts[rp.i]) / vRange) * 2)).toFixed(3),
144
+ tradedHeight: +(sgn * (obs[rawI].value - obs[rp.i].value)).toFixed(4),
145
+ evaluations: obs.length, obs,
146
+ };
147
+ }
148
+ // ── gauntlet ──────────────────────────────────────────────────────────────────
149
+ export function aegisGauntlet() {
150
+ const space = { dims: [{ name: "x", type: "real", min: 0, max: 1 }, { name: "y", type: "real", min: 0, max: 1 }] };
151
+ // a TALL FRAGILE spike at (0.8,0.8) (collapses if you move a little) + a BROAD STABLE peak at (0.3,0.3)
152
+ const fragile = (x, y) => 1.05 * Math.exp(-(((x - 0.8) ** 2) + ((y - 0.8) ** 2)) / 0.03);
153
+ const stable = (x, y) => 0.9 * Math.exp(-(((x - 0.3) ** 2) + ((y - 0.3) ** 2)) / 0.25);
154
+ const f = (x, y) => Math.max(fragile(x, y), stable(x, y));
155
+ const aegis = aegisDiscover({ space, oracle: (e) => f(e.x ?? 0, e.y ?? 0), budget: 60, goal: "maximize", seed: 7, robustWeight: 0.75 });
156
+ const greedy = aegisDiscover({ space, oracle: (e) => f(e.x ?? 0, e.y ?? 0), budget: 60, goal: "maximize", seed: 7, robustWeight: 0 }); // rw=0 → pure height, no robustness
157
+ // perturbation-survival: nudge the chosen setting and see how much value is retained (worst over a ring)
158
+ const survives = (x, y) => { let worst = Infinity; for (let a = 0; a < 8; a++) {
159
+ const th = a / 8 * 2 * Math.PI;
160
+ worst = Math.min(worst, f(x + 0.14 * Math.cos(th), y + 0.14 * Math.sin(th)));
161
+ } return worst; };
162
+ const aegisSurvival = survives(aegis.best.experiment.x ?? 0, aegis.best.experiment.y ?? 0);
163
+ const spikeSurvival = survives(0.8, 0.8); // the fragile GLOBAL maximum's survival
164
+ const choosesStable = Math.abs((aegis.best.experiment.x ?? 0) - 0.3) < 0.18 && Math.abs((aegis.best.experiment.y ?? 0) - 0.3) < 0.18;
165
+ const answerIsRobust = aegisSurvival > 0.8; // AEGIS's pick barely moves under a real wobble
166
+ const beatsGlobalSpike = aegisSurvival > spikeSurvival + 0.2; // and it's far more stable than the tall spike
167
+ const weightHelps = survives(aegis.best.experiment.x ?? 0, aegis.best.experiment.y ?? 0) >= survives(greedy.best.experiment.x ?? 0, greedy.best.experiment.y ?? 0) - 1e-9; // turning robustness ON never hurts stability
168
+ const stillHigh = aegis.best.value > 0.8; // it didn't sacrifice much height
169
+ const reportsTrade = aegis.tradedHeight >= 0 && aegis.robustnessOfBest > 0.3;
170
+ const det = (() => { const a = aegisDiscover({ space, oracle: (e) => f(e.x ?? 0, e.y ?? 0), budget: 40, seed: 7, robustWeight: 0.75 }); const b = aegisDiscover({ space, oracle: (e) => f(e.x ?? 0, e.y ?? 0), budget: 40, seed: 7, robustWeight: 0.75 }); return a.best.value === b.best.value && JSON.stringify(a.best.experiment) === JSON.stringify(b.best.experiment); })();
171
+ const total = (() => { try {
172
+ aegisDiscover({ space, oracle: () => 0, budget: 3 });
173
+ aegisDiscover({ space: { dims: [{ name: "x", type: "real", min: 0, max: 1 }] }, oracle: () => 1, budget: 5 });
174
+ return true;
175
+ }
176
+ catch {
177
+ return false;
178
+ } })();
179
+ const checks = [
180
+ { name: "CHOOSES-STABLE-OPTIMUM", pass: choosesStable, detail: `AEGIS → (${(aegis.best.experiment.x ?? 0).toFixed(2)}, ${(aegis.best.experiment.y ?? 0).toFixed(2)}) ≈ the broad stable peak (0.3,0.3)` },
181
+ { name: "ANSWER-SURVIVES-WOBBLE", pass: answerIsRobust, detail: `under a 0.14 nudge AEGIS's pick still scores ${aegisSurvival.toFixed(2)} (≥0.8)` },
182
+ { name: "BEATS-THE-FRAGILE-GLOBAL-MAX", pass: beatsGlobalSpike, detail: `${aegisSurvival.toFixed(2)} survival vs the tall spike's ${spikeSurvival.toFixed(2)} — robustness ≫ raw height` },
183
+ { name: "ROBUSTNESS-KNOB-NEVER-HURTS", pass: weightHelps, detail: "turning robustness ON never lowers the answer's stability" },
184
+ { name: "DIDNT-SACRIFICE-MUCH-HEIGHT", pass: stillHigh, detail: `AEGIS best still scores ${aegis.best.value.toFixed(3)} (≥0.8)` },
185
+ { name: "REPORTS-THE-TRADE", pass: reportsTrade, detail: `robustness of the chosen optimum ${aegis.robustnessOfBest}` },
186
+ { name: "DETERMINISTIC", pass: det, detail: "same seed → same robust optimum" },
187
+ { name: "TOTAL", pass: total, detail: "tiny budget / 1-D never throws" },
188
+ ];
189
+ return { score: checks.every((c) => c.pass) ? 100 : 0, checks };
190
+ }
191
+ //# sourceMappingURL=aegis.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aegis.js","sourceRoot":"","sources":["../src/aegis.ts"],"names":[],"mappings":"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"}
package/dist/arms.d.ts ADDED
@@ -0,0 +1,70 @@
1
+ /**
2
+ * STRATEGY ARMS — interchangeable per-step experiment proposers for the portfolio brain.
3
+ *
4
+ * The No-Free-Lunch theorem is the production reality: no single optimiser is best across all landscapes
5
+ * (smooth, rugged, low-D, high-D). So Melete does not bet on one algorithm — it runs a PORTFOLIO of arms
6
+ * and lets a bandit (portfolio.ts) allocate each expensive experiment to whichever arm is winning ON THIS
7
+ * problem. An arm is a stateful proposer: given the history so far, propose the next experiment.
8
+ *
9
+ * Arms shipped:
10
+ * • kernel-ucb — Gaussian-kernel surrogate + UCB (the strong low-D Bayesian-lite core)
11
+ * • cmaes — a (1+1) self-adaptive evolution strategy (robust in higher-D and on rugged surfaces,
12
+ * where the kernel surrogate degrades — fixes the high-D failure of a pure-BO engine)
13
+ * • resonance — the wave-interference field (a diversity/exploration hedge; earns budget only when it
14
+ * actually helps — honest: it is not strong alone, but a portfolio loses nothing by
15
+ * holding a hedge that the bandit can ignore)
16
+ * • random — uniform exploration (the escape hatch / baseline)
17
+ *
18
+ * Each arm is created fresh per run via a factory (closure-held state), so a discovery is deterministic
19
+ * and reproducible. Proposers avoid already-seen experiments.
20
+ */
21
+ import { type Space, type Experiment } from "./space.js";
22
+ import { type Goal, type Observation } from "./engine.js";
23
+ export interface ArmContext {
24
+ space: Space;
25
+ obs: Observation[];
26
+ t: number;
27
+ budget: number;
28
+ rnd: () => number;
29
+ goal: Goal;
30
+ }
31
+ export interface Arm {
32
+ name: string;
33
+ propose: (ctx: ArmContext) => Experiment;
34
+ }
35
+ /** kernel-UCB: dense grid + local cloud candidates; pick argmax(surrogate mean + annealed·uncertainty). */
36
+ export declare function armKernelUCB(bandwidth?: number, kappa0?: number): Arm;
37
+ /** (1+1) self-adaptive evolution strategy — sample N(best, σ); σ grows when stuck, shrinks on success. */
38
+ export declare function armCMAES(sigma0?: number): Arm;
39
+ /** Wave-interference field (diversity hedge). Honest: weak alone; the bandit only funds it when it helps. */
40
+ export declare function armResonance(sigma?: number, k0?: number, rho?: number): Arm;
41
+ export declare function armRandom(): Arm;
42
+ /** Real GP surrogate + Expected Improvement — the gold-standard sample-efficient acquisition. */
43
+ export declare function armGP(lengthscale?: number, noise?: number): Arm;
44
+ /** Simulated annealing arm — temperature-annealed random walk from the best; escapes via occasional far jumps. */
45
+ export declare function armSimAnneal(temp0?: number): Arm;
46
+ /** Trust-region arm — coordinate steps within a region around the best; region tightens as the run progresses. */
47
+ export declare function armTrustRegion(radius0?: number): Arm;
48
+ /** Maximin space-filler — propose the point FARTHEST from every prior experiment. Pure global coverage;
49
+ * measured to materially help on rugged/multimodal surfaces (finds un-sampled basins the others miss). */
50
+ export declare function armMaximin(pool?: number): Arm;
51
+ /** Basin-hopping — restart from a fresh random anchor every few calls, then refine locally around it.
52
+ * Escapes the global-best trap by deliberately exploring OTHER basins of a multimodal surface. */
53
+ export declare function armBasinHop(restartEvery?: number, radius?: number): Arm;
54
+ /** Differential Evolution arm — DE/rand/1: combine three past experiments (a + F·(b−c)) + crossover with
55
+ * the best. A population-based global optimiser that is strong on rugged/multimodal surfaces. */
56
+ export declare function armDiffEvolution(F?: number, CR?: number): Arm;
57
+ /** The production portfolio. Curated by MEASURED robustness (see bench.robustnessBench): the strong
58
+ * convergers (gp, cmaes, kernel-ucb) + a local refiner (trust-region) + escape/diversity (anneal, random).
59
+ * resonance stays available as an arm but is not in the default set (measured weakest; keep the bandit lean). */
60
+ export declare function defaultArms(): Arm[];
61
+ export declare function allArms(): Arm[];
62
+ export declare function armsGauntlet(): {
63
+ score: 0 | 100;
64
+ checks: Array<{
65
+ name: string;
66
+ pass: boolean;
67
+ detail: string;
68
+ }>;
69
+ };
70
+ //# sourceMappingURL=arms.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"arms.d.ts","sourceRoot":"","sources":["../src/arms.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,OAAO,EAAE,KAAK,KAAK,EAAE,KAAK,UAAU,EAA4D,MAAM,YAAY,CAAC;AACnH,OAAO,EAAE,KAAK,IAAI,EAAE,KAAK,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1D,MAAM,WAAW,UAAU;IAAG,KAAK,EAAE,KAAK,CAAC;IAAC,GAAG,EAAE,WAAW,EAAE,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,MAAM,CAAC;IAAC,IAAI,EAAE,IAAI,CAAA;CAAE;AAC1H,MAAM,WAAW,GAAG;IAAG,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,CAAC,GAAG,EAAE,UAAU,KAAK,UAAU,CAAA;CAAE;AAM/E,2GAA2G;AAC3G,wBAAgB,YAAY,CAAC,SAAS,SAAQ,EAAE,MAAM,SAAM,GAAG,GAAG,CAqBjE;AAED,0GAA0G;AAC1G,wBAAgB,QAAQ,CAAC,MAAM,SAAM,GAAG,GAAG,CAgB1C;AAED,6GAA6G;AAC7G,wBAAgB,YAAY,CAAC,KAAK,SAAO,EAAE,EAAE,SAAM,EAAE,GAAG,SAAO,GAAG,GAAG,CAuBpE;AAED,wBAAgB,SAAS,IAAI,GAAG,CAE/B;AAgBD,iGAAiG;AACjG,wBAAgB,KAAK,CAAC,WAAW,SAAO,EAAE,KAAK,SAAO,GAAG,GAAG,CA2B3D;AAED,kHAAkH;AAClH,wBAAgB,YAAY,CAAC,KAAK,SAAM,GAAG,GAAG,CAe7C;AAED,kHAAkH;AAClH,wBAAgB,cAAc,CAAC,OAAO,SAAM,GAAG,GAAG,CAmBjD;AAED;0GAC0G;AAC1G,wBAAgB,UAAU,CAAC,IAAI,SAAM,GAAG,GAAG,CAc1C;AAED;kGACkG;AAClG,wBAAgB,WAAW,CAAC,YAAY,SAAI,EAAE,MAAM,SAAO,GAAG,GAAG,CAYhE;AAED;iGACiG;AACjG,wBAAgB,gBAAgB,CAAC,CAAC,SAAM,EAAE,EAAE,SAAM,GAAG,GAAG,CAmBvD;AAED;;iHAEiH;AAGjH,wBAAgB,WAAW,IAAI,GAAG,EAAE,CAA8H;AAGlK,wBAAgB,OAAO,IAAI,GAAG,EAAE,CAAkK;AAIlM,wBAAgB,YAAY,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,CA6BjH"}