@claude-flow/cli 3.10.4 → 3.10.6

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 (242) hide show
  1. package/dist/src/benchmarks/capability-tasks.d.ts +126 -0
  2. package/dist/src/benchmarks/capability-tasks.d.ts.map +1 -0
  3. package/dist/src/benchmarks/capability-tasks.js +147 -0
  4. package/dist/src/benchmarks/capability-tasks.js.map +1 -0
  5. package/dist/src/benchmarks/gaia-agent-contrastive.d.ts +53 -0
  6. package/dist/src/benchmarks/gaia-agent-contrastive.d.ts.map +1 -0
  7. package/dist/src/benchmarks/gaia-agent-contrastive.js +177 -0
  8. package/dist/src/benchmarks/gaia-agent-contrastive.js.map +1 -0
  9. package/dist/src/benchmarks/gaia-agent-gemini.d.ts +51 -0
  10. package/dist/src/benchmarks/gaia-agent-gemini.d.ts.map +1 -0
  11. package/dist/src/benchmarks/gaia-agent-gemini.js +352 -0
  12. package/dist/src/benchmarks/gaia-agent-gemini.js.map +1 -0
  13. package/dist/src/benchmarks/gaia-agent-planning.smoke.d.ts +18 -0
  14. package/dist/src/benchmarks/gaia-agent-planning.smoke.d.ts.map +1 -0
  15. package/dist/src/benchmarks/gaia-agent-planning.smoke.js +253 -0
  16. package/dist/src/benchmarks/gaia-agent-planning.smoke.js.map +1 -0
  17. package/dist/src/benchmarks/gaia-agent.d.ts +198 -0
  18. package/dist/src/benchmarks/gaia-agent.d.ts.map +1 -0
  19. package/dist/src/benchmarks/gaia-agent.js +651 -0
  20. package/dist/src/benchmarks/gaia-agent.js.map +1 -0
  21. package/dist/src/benchmarks/gaia-causal-memory.d.ts +133 -0
  22. package/dist/src/benchmarks/gaia-causal-memory.d.ts.map +1 -0
  23. package/dist/src/benchmarks/gaia-causal-memory.js +281 -0
  24. package/dist/src/benchmarks/gaia-causal-memory.js.map +1 -0
  25. package/dist/src/benchmarks/gaia-causal-memory.smoke.d.ts +22 -0
  26. package/dist/src/benchmarks/gaia-causal-memory.smoke.d.ts.map +1 -0
  27. package/dist/src/benchmarks/gaia-causal-memory.smoke.js +300 -0
  28. package/dist/src/benchmarks/gaia-causal-memory.smoke.js.map +1 -0
  29. package/dist/src/benchmarks/gaia-claude-p.d.ts +105 -0
  30. package/dist/src/benchmarks/gaia-claude-p.d.ts.map +1 -0
  31. package/dist/src/benchmarks/gaia-claude-p.js +269 -0
  32. package/dist/src/benchmarks/gaia-claude-p.js.map +1 -0
  33. package/dist/src/benchmarks/gaia-claude-p.smoke.d.ts +20 -0
  34. package/dist/src/benchmarks/gaia-claude-p.smoke.d.ts.map +1 -0
  35. package/dist/src/benchmarks/gaia-claude-p.smoke.js +168 -0
  36. package/dist/src/benchmarks/gaia-claude-p.smoke.js.map +1 -0
  37. package/dist/src/benchmarks/gaia-codeagent-runner.py +556 -0
  38. package/dist/src/benchmarks/gaia-codeagent.d.ts +129 -0
  39. package/dist/src/benchmarks/gaia-codeagent.d.ts.map +1 -0
  40. package/dist/src/benchmarks/gaia-codeagent.js +590 -0
  41. package/dist/src/benchmarks/gaia-codeagent.js.map +1 -0
  42. package/dist/src/benchmarks/gaia-codeagent.smoke.d.ts +33 -0
  43. package/dist/src/benchmarks/gaia-codeagent.smoke.d.ts.map +1 -0
  44. package/dist/src/benchmarks/gaia-codeagent.smoke.js +241 -0
  45. package/dist/src/benchmarks/gaia-codeagent.smoke.js.map +1 -0
  46. package/dist/src/benchmarks/gaia-convergence.d.ts +138 -0
  47. package/dist/src/benchmarks/gaia-convergence.d.ts.map +1 -0
  48. package/dist/src/benchmarks/gaia-convergence.js +260 -0
  49. package/dist/src/benchmarks/gaia-convergence.js.map +1 -0
  50. package/dist/src/benchmarks/gaia-convergence.smoke.d.ts +19 -0
  51. package/dist/src/benchmarks/gaia-convergence.smoke.d.ts.map +1 -0
  52. package/dist/src/benchmarks/gaia-convergence.smoke.js +246 -0
  53. package/dist/src/benchmarks/gaia-convergence.smoke.js.map +1 -0
  54. package/dist/src/benchmarks/gaia-critic.d.ts +123 -0
  55. package/dist/src/benchmarks/gaia-critic.d.ts.map +1 -0
  56. package/dist/src/benchmarks/gaia-critic.js +312 -0
  57. package/dist/src/benchmarks/gaia-critic.js.map +1 -0
  58. package/dist/src/benchmarks/gaia-critic.smoke.d.ts +21 -0
  59. package/dist/src/benchmarks/gaia-critic.smoke.d.ts.map +1 -0
  60. package/dist/src/benchmarks/gaia-critic.smoke.js +327 -0
  61. package/dist/src/benchmarks/gaia-critic.smoke.js.map +1 -0
  62. package/dist/src/benchmarks/gaia-dag-pilot.d.ts +22 -0
  63. package/dist/src/benchmarks/gaia-dag-pilot.d.ts.map +1 -0
  64. package/dist/src/benchmarks/gaia-dag-pilot.js +158 -0
  65. package/dist/src/benchmarks/gaia-dag-pilot.js.map +1 -0
  66. package/dist/src/benchmarks/gaia-dag.d.ts +110 -0
  67. package/dist/src/benchmarks/gaia-dag.d.ts.map +1 -0
  68. package/dist/src/benchmarks/gaia-dag.js +658 -0
  69. package/dist/src/benchmarks/gaia-dag.js.map +1 -0
  70. package/dist/src/benchmarks/gaia-dag.smoke.d.ts +21 -0
  71. package/dist/src/benchmarks/gaia-dag.smoke.d.ts.map +1 -0
  72. package/dist/src/benchmarks/gaia-dag.smoke.js +290 -0
  73. package/dist/src/benchmarks/gaia-dag.smoke.js.map +1 -0
  74. package/dist/src/benchmarks/gaia-decomposer.d.ts +125 -0
  75. package/dist/src/benchmarks/gaia-decomposer.d.ts.map +1 -0
  76. package/dist/src/benchmarks/gaia-decomposer.js +350 -0
  77. package/dist/src/benchmarks/gaia-decomposer.js.map +1 -0
  78. package/dist/src/benchmarks/gaia-decomposer.smoke.d.ts +21 -0
  79. package/dist/src/benchmarks/gaia-decomposer.smoke.d.ts.map +1 -0
  80. package/dist/src/benchmarks/gaia-decomposer.smoke.js +228 -0
  81. package/dist/src/benchmarks/gaia-decomposer.smoke.js.map +1 -0
  82. package/dist/src/benchmarks/gaia-e2e-smoke.d.ts +27 -0
  83. package/dist/src/benchmarks/gaia-e2e-smoke.d.ts.map +1 -0
  84. package/dist/src/benchmarks/gaia-e2e-smoke.js +136 -0
  85. package/dist/src/benchmarks/gaia-e2e-smoke.js.map +1 -0
  86. package/dist/src/benchmarks/gaia-ensemble-pilot.d.ts +17 -0
  87. package/dist/src/benchmarks/gaia-ensemble-pilot.d.ts.map +1 -0
  88. package/dist/src/benchmarks/gaia-ensemble-pilot.js +106 -0
  89. package/dist/src/benchmarks/gaia-ensemble-pilot.js.map +1 -0
  90. package/dist/src/benchmarks/gaia-ensemble.d.ts +103 -0
  91. package/dist/src/benchmarks/gaia-ensemble.d.ts.map +1 -0
  92. package/dist/src/benchmarks/gaia-ensemble.js +462 -0
  93. package/dist/src/benchmarks/gaia-ensemble.js.map +1 -0
  94. package/dist/src/benchmarks/gaia-extract.smoke.d.ts +45 -0
  95. package/dist/src/benchmarks/gaia-extract.smoke.d.ts.map +1 -0
  96. package/dist/src/benchmarks/gaia-extract.smoke.js +242 -0
  97. package/dist/src/benchmarks/gaia-extract.smoke.js.map +1 -0
  98. package/dist/src/benchmarks/gaia-gemini-pilot.d.ts +17 -0
  99. package/dist/src/benchmarks/gaia-gemini-pilot.d.ts.map +1 -0
  100. package/dist/src/benchmarks/gaia-gemini-pilot.js +168 -0
  101. package/dist/src/benchmarks/gaia-gemini-pilot.js.map +1 -0
  102. package/dist/src/benchmarks/gaia-hardness/features.d.ts +46 -0
  103. package/dist/src/benchmarks/gaia-hardness/features.d.ts.map +1 -0
  104. package/dist/src/benchmarks/gaia-hardness/features.js +170 -0
  105. package/dist/src/benchmarks/gaia-hardness/features.js.map +1 -0
  106. package/dist/src/benchmarks/gaia-hardness/predictor.d.ts +105 -0
  107. package/dist/src/benchmarks/gaia-hardness/predictor.d.ts.map +1 -0
  108. package/dist/src/benchmarks/gaia-hardness/predictor.js +260 -0
  109. package/dist/src/benchmarks/gaia-hardness/predictor.js.map +1 -0
  110. package/dist/src/benchmarks/gaia-hardness/predictor.smoke.d.ts +20 -0
  111. package/dist/src/benchmarks/gaia-hardness/predictor.smoke.d.ts.map +1 -0
  112. package/dist/src/benchmarks/gaia-hardness/predictor.smoke.js +235 -0
  113. package/dist/src/benchmarks/gaia-hardness/predictor.smoke.js.map +1 -0
  114. package/dist/src/benchmarks/gaia-hardness/train-data-loader.d.ts +51 -0
  115. package/dist/src/benchmarks/gaia-hardness/train-data-loader.d.ts.map +1 -0
  116. package/dist/src/benchmarks/gaia-hardness/train-data-loader.js +179 -0
  117. package/dist/src/benchmarks/gaia-hardness/train-data-loader.js.map +1 -0
  118. package/dist/src/benchmarks/gaia-judge.d.ts +88 -0
  119. package/dist/src/benchmarks/gaia-judge.d.ts.map +1 -0
  120. package/dist/src/benchmarks/gaia-judge.js +437 -0
  121. package/dist/src/benchmarks/gaia-judge.js.map +1 -0
  122. package/dist/src/benchmarks/gaia-loader.d.ts +87 -0
  123. package/dist/src/benchmarks/gaia-loader.d.ts.map +1 -0
  124. package/dist/src/benchmarks/gaia-loader.js +326 -0
  125. package/dist/src/benchmarks/gaia-loader.js.map +1 -0
  126. package/dist/src/benchmarks/gaia-mode-router.d.ts +67 -0
  127. package/dist/src/benchmarks/gaia-mode-router.d.ts.map +1 -0
  128. package/dist/src/benchmarks/gaia-mode-router.js +126 -0
  129. package/dist/src/benchmarks/gaia-mode-router.js.map +1 -0
  130. package/dist/src/benchmarks/gaia-mode-router.smoke.d.ts +15 -0
  131. package/dist/src/benchmarks/gaia-mode-router.smoke.d.ts.map +1 -0
  132. package/dist/src/benchmarks/gaia-mode-router.smoke.js +131 -0
  133. package/dist/src/benchmarks/gaia-mode-router.smoke.js.map +1 -0
  134. package/dist/src/benchmarks/gaia-tools/file_read.d.ts +35 -0
  135. package/dist/src/benchmarks/gaia-tools/file_read.d.ts.map +1 -0
  136. package/dist/src/benchmarks/gaia-tools/file_read.js +403 -0
  137. package/dist/src/benchmarks/gaia-tools/file_read.js.map +1 -0
  138. package/dist/src/benchmarks/gaia-tools/grounded_query.d.ts +126 -0
  139. package/dist/src/benchmarks/gaia-tools/grounded_query.d.ts.map +1 -0
  140. package/dist/src/benchmarks/gaia-tools/grounded_query.js +225 -0
  141. package/dist/src/benchmarks/gaia-tools/grounded_query.js.map +1 -0
  142. package/dist/src/benchmarks/gaia-tools/grounded_query.smoke.d.ts +24 -0
  143. package/dist/src/benchmarks/gaia-tools/grounded_query.smoke.d.ts.map +1 -0
  144. package/dist/src/benchmarks/gaia-tools/grounded_query.smoke.js +276 -0
  145. package/dist/src/benchmarks/gaia-tools/grounded_query.smoke.js.map +1 -0
  146. package/dist/src/benchmarks/gaia-tools/image_describe.d.ts +45 -0
  147. package/dist/src/benchmarks/gaia-tools/image_describe.d.ts.map +1 -0
  148. package/dist/src/benchmarks/gaia-tools/image_describe.js +222 -0
  149. package/dist/src/benchmarks/gaia-tools/image_describe.js.map +1 -0
  150. package/dist/src/benchmarks/gaia-tools/image_describe.smoke.d.ts +24 -0
  151. package/dist/src/benchmarks/gaia-tools/image_describe.smoke.d.ts.map +1 -0
  152. package/dist/src/benchmarks/gaia-tools/image_describe.smoke.js +169 -0
  153. package/dist/src/benchmarks/gaia-tools/image_describe.smoke.js.map +1 -0
  154. package/dist/src/benchmarks/gaia-tools/index.d.ts +32 -0
  155. package/dist/src/benchmarks/gaia-tools/index.d.ts.map +1 -0
  156. package/dist/src/benchmarks/gaia-tools/index.js +36 -0
  157. package/dist/src/benchmarks/gaia-tools/index.js.map +1 -0
  158. package/dist/src/benchmarks/gaia-tools/pdf_read.d.ts +27 -0
  159. package/dist/src/benchmarks/gaia-tools/pdf_read.d.ts.map +1 -0
  160. package/dist/src/benchmarks/gaia-tools/pdf_read.js +226 -0
  161. package/dist/src/benchmarks/gaia-tools/pdf_read.js.map +1 -0
  162. package/dist/src/benchmarks/gaia-tools/python_exec.d.ts +31 -0
  163. package/dist/src/benchmarks/gaia-tools/python_exec.d.ts.map +1 -0
  164. package/dist/src/benchmarks/gaia-tools/python_exec.js +94 -0
  165. package/dist/src/benchmarks/gaia-tools/python_exec.js.map +1 -0
  166. package/dist/src/benchmarks/gaia-tools/python_exec.smoke.d.ts +13 -0
  167. package/dist/src/benchmarks/gaia-tools/python_exec.smoke.d.ts.map +1 -0
  168. package/dist/src/benchmarks/gaia-tools/python_exec.smoke.js +98 -0
  169. package/dist/src/benchmarks/gaia-tools/python_exec.smoke.js.map +1 -0
  170. package/dist/src/benchmarks/gaia-tools/types.d.ts +62 -0
  171. package/dist/src/benchmarks/gaia-tools/types.d.ts.map +1 -0
  172. package/dist/src/benchmarks/gaia-tools/types.js +12 -0
  173. package/dist/src/benchmarks/gaia-tools/types.js.map +1 -0
  174. package/dist/src/benchmarks/gaia-tools/visit_webpage.d.ts +52 -0
  175. package/dist/src/benchmarks/gaia-tools/visit_webpage.d.ts.map +1 -0
  176. package/dist/src/benchmarks/gaia-tools/visit_webpage.js +304 -0
  177. package/dist/src/benchmarks/gaia-tools/visit_webpage.js.map +1 -0
  178. package/dist/src/benchmarks/gaia-tools/web_browse.d.ts +61 -0
  179. package/dist/src/benchmarks/gaia-tools/web_browse.d.ts.map +1 -0
  180. package/dist/src/benchmarks/gaia-tools/web_browse.js +217 -0
  181. package/dist/src/benchmarks/gaia-tools/web_browse.js.map +1 -0
  182. package/dist/src/benchmarks/gaia-tools/web_browse.smoke.d.ts +26 -0
  183. package/dist/src/benchmarks/gaia-tools/web_browse.smoke.d.ts.map +1 -0
  184. package/dist/src/benchmarks/gaia-tools/web_browse.smoke.js +152 -0
  185. package/dist/src/benchmarks/gaia-tools/web_browse.smoke.js.map +1 -0
  186. package/dist/src/benchmarks/gaia-tools/web_search.d.ts +30 -0
  187. package/dist/src/benchmarks/gaia-tools/web_search.d.ts.map +1 -0
  188. package/dist/src/benchmarks/gaia-tools/web_search.js +210 -0
  189. package/dist/src/benchmarks/gaia-tools/web_search.js.map +1 -0
  190. package/dist/src/benchmarks/gaia-tools/web_search.smoke.d.ts +24 -0
  191. package/dist/src/benchmarks/gaia-tools/web_search.smoke.d.ts.map +1 -0
  192. package/dist/src/benchmarks/gaia-tools/web_search.smoke.js +311 -0
  193. package/dist/src/benchmarks/gaia-tools/web_search.smoke.js.map +1 -0
  194. package/dist/src/benchmarks/gaia-visit-webpage.smoke.d.ts +25 -0
  195. package/dist/src/benchmarks/gaia-visit-webpage.smoke.d.ts.map +1 -0
  196. package/dist/src/benchmarks/gaia-visit-webpage.smoke.js +304 -0
  197. package/dist/src/benchmarks/gaia-visit-webpage.smoke.js.map +1 -0
  198. package/dist/src/benchmarks/gaia-voting.d.ts +88 -0
  199. package/dist/src/benchmarks/gaia-voting.d.ts.map +1 -0
  200. package/dist/src/benchmarks/gaia-voting.js +297 -0
  201. package/dist/src/benchmarks/gaia-voting.js.map +1 -0
  202. package/dist/src/benchmarks/gaia-voting.smoke.d.ts +20 -0
  203. package/dist/src/benchmarks/gaia-voting.smoke.d.ts.map +1 -0
  204. package/dist/src/benchmarks/gaia-voting.smoke.js +332 -0
  205. package/dist/src/benchmarks/gaia-voting.smoke.js.map +1 -0
  206. package/dist/src/commands/gaia-bench.d.ts +40 -0
  207. package/dist/src/commands/gaia-bench.d.ts.map +1 -0
  208. package/dist/src/commands/gaia-bench.js +597 -0
  209. package/dist/src/commands/gaia-bench.js.map +1 -0
  210. package/dist/src/commands/index.d.ts.map +1 -1
  211. package/dist/src/commands/index.js +2 -0
  212. package/dist/src/commands/index.js.map +1 -1
  213. package/dist/src/commands/init.d.ts.map +1 -1
  214. package/dist/src/commands/init.js +41 -4
  215. package/dist/src/commands/init.js.map +1 -1
  216. package/dist/src/commands/performance-capability.d.ts +30 -0
  217. package/dist/src/commands/performance-capability.d.ts.map +1 -0
  218. package/dist/src/commands/performance-capability.js +349 -0
  219. package/dist/src/commands/performance-capability.js.map +1 -0
  220. package/dist/src/commands/route.d.ts.map +1 -1
  221. package/dist/src/commands/route.js +9 -0
  222. package/dist/src/commands/route.js.map +1 -1
  223. package/dist/src/init/executor.d.ts.map +1 -1
  224. package/dist/src/init/executor.js +25 -6
  225. package/dist/src/init/executor.js.map +1 -1
  226. package/dist/src/init/mcp-generator.d.ts.map +1 -1
  227. package/dist/src/init/mcp-generator.js +9 -4
  228. package/dist/src/init/mcp-generator.js.map +1 -1
  229. package/dist/src/init/statusline-generator.d.ts.map +1 -1
  230. package/dist/src/init/statusline-generator.js +25 -2
  231. package/dist/src/init/statusline-generator.js.map +1 -1
  232. package/dist/src/mcp-tools/agentdb-tools.d.ts.map +1 -1
  233. package/dist/src/mcp-tools/agentdb-tools.js +20 -3
  234. package/dist/src/mcp-tools/agentdb-tools.js.map +1 -1
  235. package/dist/src/mcp-tools/system-tools.d.ts.map +1 -1
  236. package/dist/src/mcp-tools/system-tools.js +12 -1
  237. package/dist/src/mcp-tools/system-tools.js.map +1 -1
  238. package/dist/src/memory/memory-bridge.d.ts.map +1 -1
  239. package/dist/src/memory/memory-bridge.js +34 -0
  240. package/dist/src/memory/memory-bridge.js.map +1 -1
  241. package/dist/tsconfig.tsbuildinfo +1 -1
  242. package/package.json +1 -1
@@ -0,0 +1,27 @@
1
+ /**
2
+ * GAIA End-to-End Smoke — ADR-133
3
+ *
4
+ * Wires gaia-agent.ts + gaia-judge.ts into a single end-to-end pipeline:
5
+ *
6
+ * for each question in SMOKE_FIXTURE:
7
+ * 1. runGaiaAgent(question) — Haiku agent loop, ≤8 turns
8
+ * 2. judgeAnswer(question, result.finalAnswer) — exact-match fast-path,
9
+ * Sonnet LLM-judge only if exact-match misses
10
+ *
11
+ * Reports: pass rate, total cost, mean turn count.
12
+ * Asserts: ≥ 3/5 questions pass (lenient — smoke fixture is not trivial).
13
+ *
14
+ * Cost discipline:
15
+ * - Agent: claude-haiku-4-5 at $0.25/$1.25 per M tokens
16
+ * - Judge: claude-sonnet-4-6 at $3/$15 per M tokens (only when needed)
17
+ * - Expected total for 5 questions × ~2 turns × Haiku + 1-2 Sonnet
18
+ * judge calls ≈ $0.02
19
+ *
20
+ * Usage:
21
+ * ANTHROPIC_API_KEY=sk-ant-... npx tsx src/benchmarks/gaia-e2e-smoke.ts
22
+ *
23
+ * Refs: ADR-133, #2156
24
+ */
25
+ declare function runE2ESmoke(): Promise<void>;
26
+ export { runE2ESmoke };
27
+ //# sourceMappingURL=gaia-e2e-smoke.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gaia-e2e-smoke.d.ts","sourceRoot":"","sources":["../../../src/benchmarks/gaia-e2e-smoke.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAqDH,iBAAe,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CA0G1C;AAiBD,OAAO,EAAE,WAAW,EAAE,CAAC"}
@@ -0,0 +1,136 @@
1
+ /**
2
+ * GAIA End-to-End Smoke — ADR-133
3
+ *
4
+ * Wires gaia-agent.ts + gaia-judge.ts into a single end-to-end pipeline:
5
+ *
6
+ * for each question in SMOKE_FIXTURE:
7
+ * 1. runGaiaAgent(question) — Haiku agent loop, ≤8 turns
8
+ * 2. judgeAnswer(question, result.finalAnswer) — exact-match fast-path,
9
+ * Sonnet LLM-judge only if exact-match misses
10
+ *
11
+ * Reports: pass rate, total cost, mean turn count.
12
+ * Asserts: ≥ 3/5 questions pass (lenient — smoke fixture is not trivial).
13
+ *
14
+ * Cost discipline:
15
+ * - Agent: claude-haiku-4-5 at $0.25/$1.25 per M tokens
16
+ * - Judge: claude-sonnet-4-6 at $3/$15 per M tokens (only when needed)
17
+ * - Expected total for 5 questions × ~2 turns × Haiku + 1-2 Sonnet
18
+ * judge calls ≈ $0.02
19
+ *
20
+ * Usage:
21
+ * ANTHROPIC_API_KEY=sk-ant-... npx tsx src/benchmarks/gaia-e2e-smoke.ts
22
+ *
23
+ * Refs: ADR-133, #2156
24
+ */
25
+ import * as os from 'node:os';
26
+ import * as path from 'node:path';
27
+ import { SMOKE_FIXTURE, } from './gaia-loader.js';
28
+ import { runGaiaAgent, } from './gaia-agent.js';
29
+ import { judgeAnswer, } from './gaia-judge.js';
30
+ // ---------------------------------------------------------------------------
31
+ // Configuration
32
+ // ---------------------------------------------------------------------------
33
+ /** Agent model — Haiku only for cost discipline. */
34
+ const AGENT_MODEL = 'claude-haiku-4-5';
35
+ /** Judge model — Sonnet for semantic judgments (only when exact-match fails). */
36
+ const JUDGE_MODEL = 'claude-sonnet-4-6';
37
+ /** Minimum pass rate for smoke to succeed. */
38
+ const MIN_PASS_RATE = 3 / 5;
39
+ // Haiku pricing ($/M tokens)
40
+ const HAIKU_IN = 0.25;
41
+ const HAIKU_OUT = 1.25;
42
+ // Sonnet pricing ($/M tokens)
43
+ const SONNET_IN = 3.0;
44
+ const SONNET_OUT = 15.0;
45
+ // ---------------------------------------------------------------------------
46
+ // Runner
47
+ // ---------------------------------------------------------------------------
48
+ async function runE2ESmoke() {
49
+ const hasKey = !!(process.env.ANTHROPIC_API_KEY?.trim());
50
+ if (!hasKey) {
51
+ console.error('ANTHROPIC_API_KEY is required for the end-to-end smoke.\n' +
52
+ 'Set it with: export ANTHROPIC_API_KEY=sk-ant-...');
53
+ process.exit(1);
54
+ }
55
+ const cacheDir = path.join(os.homedir(), '.cache', 'ruflo', 'gaia', 'judgments');
56
+ const judgeOpts = { judgeModel: JUDGE_MODEL, cacheDir };
57
+ const questions = SMOKE_FIXTURE;
58
+ const rows = [];
59
+ console.log(`\n=== GAIA End-to-End Smoke (${questions.length} questions) ===\n`);
60
+ console.log(`Agent: ${AGENT_MODEL} | Judge: ${JUDGE_MODEL}\n` +
61
+ `Questions: ${questions.length} | Min pass rate: ${(MIN_PASS_RATE * 100).toFixed(0)}%\n`);
62
+ for (const q of questions) {
63
+ process.stdout.write(`[${q.task_id}] "${q.question.slice(0, 60)}..." `);
64
+ // Run agent
65
+ const agentResult = await runGaiaAgent(q, { model: AGENT_MODEL });
66
+ // Judge
67
+ const judgeResult = await judgeAnswer({ id: q.task_id, expected: q.final_answer, questionText: q.question }, agentResult.finalAnswer, judgeOpts);
68
+ rows.push({ question: q, agentResult, judgeResult });
69
+ const verdict = judgeResult.passed ? '\x1b[32mPASS\x1b[0m' : '\x1b[31mFAIL\x1b[0m';
70
+ const path_ = judgeResult.scoringPath;
71
+ console.log(`${verdict} (turns=${agentResult.turns}, ` +
72
+ `answer="${agentResult.finalAnswer ?? 'null'}", ` +
73
+ `expected="${q.final_answer}", path=${path_})`);
74
+ }
75
+ // ── Summary ──
76
+ console.log('\n--- Summary ---\n');
77
+ const passed = rows.filter((r) => r.judgeResult.passed).length;
78
+ const total = rows.length;
79
+ const passRate = passed / total;
80
+ let totalAgentCostUsd = 0;
81
+ let totalJudgeCostUsd = 0;
82
+ let totalTurns = 0;
83
+ for (const row of rows) {
84
+ const { agentResult, judgeResult } = row;
85
+ totalTurns += agentResult.turns;
86
+ totalAgentCostUsd +=
87
+ (agentResult.totalInputTokens / 1_000_000) * HAIKU_IN +
88
+ (agentResult.totalOutputTokens / 1_000_000) * HAIKU_OUT;
89
+ totalJudgeCostUsd += judgeResult.judgeCostUsd ?? 0;
90
+ }
91
+ const totalCostUsd = totalAgentCostUsd + totalJudgeCostUsd;
92
+ const meanTurns = totalTurns / total;
93
+ console.log(`Pass rate : ${passed}/${total} (${(passRate * 100).toFixed(0)}%)`);
94
+ console.log(`Mean turns : ${meanTurns.toFixed(1)}`);
95
+ console.log(`Agent cost : $${totalAgentCostUsd.toFixed(5)} (Haiku)`);
96
+ console.log(`Judge cost : $${totalJudgeCostUsd.toFixed(5)} (Sonnet, only when needed)`);
97
+ console.log(`Total cost : $${totalCostUsd.toFixed(5)}`);
98
+ // ── Per-row detail ──
99
+ console.log('\n--- Per-question detail ---\n');
100
+ for (const row of rows) {
101
+ const { question, agentResult, judgeResult } = row;
102
+ const verdict = judgeResult.passed ? 'PASS' : 'FAIL';
103
+ console.log(` ${verdict} ${question.task_id} turns=${agentResult.turns} ` +
104
+ `path=${judgeResult.scoringPath} ` +
105
+ `answer="${agentResult.finalAnswer ?? 'null'}" ` +
106
+ `expected="${question.final_answer}"`);
107
+ if (judgeResult.judgeReason) {
108
+ console.log(` reason: ${judgeResult.judgeReason}`);
109
+ }
110
+ if (agentResult.error) {
111
+ console.log(` error : ${agentResult.error}`);
112
+ }
113
+ }
114
+ // ── Assertion ──
115
+ console.log('');
116
+ if (passRate >= MIN_PASS_RATE) {
117
+ console.log(`\x1b[32mSmoke PASSED\x1b[0m — ${passed}/${total} ≥ ${(MIN_PASS_RATE * 100).toFixed(0)}% required.\n`);
118
+ }
119
+ else {
120
+ console.error(`\x1b[31mSmoke FAILED\x1b[0m — ${passed}/${total} < ${(MIN_PASS_RATE * 100).toFixed(0)}% required.\n`);
121
+ process.exit(1);
122
+ }
123
+ }
124
+ // ---------------------------------------------------------------------------
125
+ // Entry point
126
+ // ---------------------------------------------------------------------------
127
+ const isMain = process.argv[1] && (process.argv[1].endsWith('gaia-e2e-smoke.ts') ||
128
+ process.argv[1].endsWith('gaia-e2e-smoke.js'));
129
+ if (isMain) {
130
+ runE2ESmoke().catch((err) => {
131
+ console.error('E2E smoke failed:', err);
132
+ process.exit(1);
133
+ });
134
+ }
135
+ export { runE2ESmoke };
136
+ //# sourceMappingURL=gaia-e2e-smoke.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gaia-e2e-smoke.js","sourceRoot":"","sources":["../../../src/benchmarks/gaia-e2e-smoke.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * GAIA Ensemble Pilot — ADR-139 5-question validation
3
+ *
4
+ * Runs 5 diverse GAIA L1 questions through the 2-model ensemble
5
+ * (claude-sonnet-4-6 + gemini-2.5-pro) and reports accuracy, cost, and
6
+ * projections. OpenRouter is skipped until credits are topped up.
7
+ *
8
+ * Usage:
9
+ * node dist/src/benchmarks/gaia-ensemble-pilot.js
10
+ * node dist/src/benchmarks/gaia-ensemble-pilot.js --models claude-sonnet-4-6,gemini-2.5-pro,openai/gpt-5
11
+ *
12
+ * Exit codes:
13
+ * 0 pilot passed (accuracy ≥ 3/5 AND projected 53Q cost ≤ $40)
14
+ * 1 pilot failed or cost exceeded
15
+ */
16
+ export {};
17
+ //# sourceMappingURL=gaia-ensemble-pilot.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gaia-ensemble-pilot.d.ts","sourceRoot":"","sources":["../../../src/benchmarks/gaia-ensemble-pilot.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG"}
@@ -0,0 +1,106 @@
1
+ /**
2
+ * GAIA Ensemble Pilot — ADR-139 5-question validation
3
+ *
4
+ * Runs 5 diverse GAIA L1 questions through the 2-model ensemble
5
+ * (claude-sonnet-4-6 + gemini-2.5-pro) and reports accuracy, cost, and
6
+ * projections. OpenRouter is skipped until credits are topped up.
7
+ *
8
+ * Usage:
9
+ * node dist/src/benchmarks/gaia-ensemble-pilot.js
10
+ * node dist/src/benchmarks/gaia-ensemble-pilot.js --models claude-sonnet-4-6,gemini-2.5-pro,openai/gpt-5
11
+ *
12
+ * Exit codes:
13
+ * 0 pilot passed (accuracy ≥ 3/5 AND projected 53Q cost ≤ $40)
14
+ * 1 pilot failed or cost exceeded
15
+ */
16
+ import { runEnsemblePilot } from './gaia-ensemble.js';
17
+ import * as fs from 'node:fs';
18
+ import * as path from 'node:path';
19
+ import * as os from 'node:os';
20
+ const GAIA_CACHE = path.join(os.homedir(), '.cache', 'ruflo', 'gaia', 'level1-main.json');
21
+ const PILOT_QUESTION_IDS = [
22
+ 'e1fc63a2-da7a-432f-be78-7c4a95598703', // marathon pace math
23
+ '8e867cd7-cff9-4e6c-867a-ff5ddc2550be', // discography lookup
24
+ '2d83110e-a098-4ebb-9987-066c06fa42d0', // reversed text encoding
25
+ '27d5d136-8563-469e-92bf-fd103c28b57c', // boolean logic formulas
26
+ 'dc28cf18-6431-458b-83ef-64b3ce566c10', // recipe/cooking lookup
27
+ ];
28
+ async function main() {
29
+ // Parse --models flag
30
+ const modelsArg = process.argv.find((a) => a.startsWith('--models='))?.split('=')[1];
31
+ const models = modelsArg ? modelsArg.split(',') : ['claude-sonnet-4-6', 'gemini-2.5-pro'];
32
+ console.error(`[pilot] Models: ${models.join(', ')}`);
33
+ console.error(`[pilot] Loading GAIA dataset from: ${GAIA_CACHE}`);
34
+ if (!fs.existsSync(GAIA_CACHE)) {
35
+ console.error('[pilot] ERROR: GAIA cache not found. Run a full benchmark first to populate cache.');
36
+ process.exit(1);
37
+ }
38
+ const allQuestions = JSON.parse(fs.readFileSync(GAIA_CACHE, 'utf-8'));
39
+ const pilotQuestions = allQuestions.filter((q) => PILOT_QUESTION_IDS.includes(q.task_id));
40
+ if (pilotQuestions.length !== PILOT_QUESTION_IDS.length) {
41
+ console.error(`[pilot] WARNING: Expected ${PILOT_QUESTION_IDS.length} questions, found ${pilotQuestions.length}`);
42
+ }
43
+ console.error(`[pilot] Running ${pilotQuestions.length} questions through ${models.length}-model ensemble...`);
44
+ const result = await runEnsemblePilot(pilotQuestions, {
45
+ models,
46
+ maxTurns: 10,
47
+ maxTokensPerTurn: 4096,
48
+ perTurnTimeoutMs: 90_000,
49
+ });
50
+ // Write JSON output to stdout
51
+ const output = {
52
+ pilotConfig: { models, questionCount: pilotQuestions.length },
53
+ result: {
54
+ correct: result.correct,
55
+ total: result.total,
56
+ accuracy: result.accuracy,
57
+ totalCostUsd: result.totalCostUsd,
58
+ projectedCost53Q: result.projectedCost53Q,
59
+ projectedCost300Q: result.projectedCost300Q,
60
+ meanWallMs: result.meanWallMs,
61
+ },
62
+ costGate: {
63
+ limit53Q: 40,
64
+ limit300Q: 250,
65
+ passes53Q: result.projectedCost53Q <= 40,
66
+ passes300Q: result.projectedCost300Q <= 250,
67
+ },
68
+ recommendation: buildRecommendation(result.correct, result.total, result.projectedCost53Q, result.projectedCost300Q),
69
+ perQuestion: result.perQuestion,
70
+ };
71
+ process.stdout.write(JSON.stringify(output, null, 2) + '\n');
72
+ // Human-readable summary to stderr
73
+ console.error('\n=== ENSEMBLE PILOT SUMMARY ===');
74
+ console.error(`Accuracy: ${result.correct}/${result.total} (${(result.accuracy * 100).toFixed(1)}%)`);
75
+ console.error(`Total cost: $${result.totalCostUsd.toFixed(4)}`);
76
+ console.error(`Projected 53-Q cost: $${result.projectedCost53Q.toFixed(2)} (gate: $40)`);
77
+ console.error(`Projected 300-Q cost: $${result.projectedCost300Q.toFixed(2)} (gate: $250)`);
78
+ console.error(`Mean wall time: ${(result.meanWallMs / 1000).toFixed(1)}s/Q`);
79
+ console.error('');
80
+ for (const q of result.perQuestion) {
81
+ const status = q.correct ? 'CORRECT' : 'WRONG ';
82
+ console.error(` ${status} ${q.taskId.slice(0, 8)} | got="${q.got ?? 'null'}" exp="${q.expected}" [${q.aggregationMethod}]`);
83
+ }
84
+ console.error('\n=== VERDICT ===');
85
+ console.error(output.recommendation);
86
+ const passed = result.correct >= 4 && result.projectedCost53Q <= 40;
87
+ process.exit(passed ? 0 : 1);
88
+ }
89
+ function buildRecommendation(correct, total, cost53Q, cost300Q) {
90
+ const costOk = cost53Q <= 40;
91
+ if (correct >= 4 && costOk) {
92
+ return `PROCEED: ensemble viable. ${correct}/${total} accuracy (≥4/5) and cost $${cost53Q.toFixed(2)}/53Q (≤$40). Recommend iter 64 full 53-Q validation run.`;
93
+ }
94
+ if (correct >= 4 && !costOk) {
95
+ return `COST ISSUE: accuracy ${correct}/${total} good but projected 53-Q cost $${cost53Q.toFixed(2)} exceeds $40 gate. Reduce model count or use cheaper models.`;
96
+ }
97
+ if (correct < 4 && costOk) {
98
+ return `ACCURACY ISSUE: only ${correct}/${total} correct. Consider: (a) more models, (b) higher maxTurns, (c) OpenRouter credit top-up for GPT-5/DeepSeek. Do NOT proceed to full 53-Q.`;
99
+ }
100
+ return `BLOCKED: accuracy ${correct}/${total} below threshold AND cost $${cost53Q.toFixed(2)} above gate. Reassess architecture.`;
101
+ }
102
+ main().catch((err) => {
103
+ console.error('[pilot] FATAL:', err);
104
+ process.exit(1);
105
+ });
106
+ //# sourceMappingURL=gaia-ensemble-pilot.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gaia-ensemble-pilot.js","sourceRoot":"","sources":["../../../src/benchmarks/gaia-ensemble-pilot.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,103 @@
1
+ /**
2
+ * GAIA Ensemble Runner — ADR-139
3
+ *
4
+ * Runs a GAIA question through N models in parallel, aggregates answers via
5
+ * majority vote, with a judge-model tiebreak when no consensus is reached.
6
+ *
7
+ * Architecture:
8
+ * 1. Each model runs independently using the full tool harness.
9
+ * 2. Answers are normalised (via normaliseAnswer from gaia-judge.ts).
10
+ * 3. Majority vote: if ≥2 models agree on normalised answer → that wins.
11
+ * 4. Tiebreak: when all answers differ (or N=2 with disagreement), the judge
12
+ * model picks the best answer with a brief rationale.
13
+ * 5. Abstain: if all models return null/timedOut → failed question.
14
+ *
15
+ * Supported models:
16
+ * - Claude (claude-sonnet-4-6, etc.) via Anthropic API (gaia-agent.ts)
17
+ * - Gemini (gemini-2.5-pro, etc.) via Google AI API (gaia-agent-gemini.js compiled)
18
+ * - OpenRouter (gpt-5, deepseek-v3.2, kimi-k2, etc.) via OpenAI-compatible API
19
+ * NOTE: OpenRouter requires funded account — returns 402 when credits exhausted.
20
+ *
21
+ * CLI integration:
22
+ * gaia-bench run --mode=ensemble --models=claude-sonnet-4-6,gemini-2.5-pro,openai/gpt-5
23
+ *
24
+ * Cost model (per question, typical L1 ~10k input + ~3k output tokens):
25
+ * claude-sonnet-4-6: ~$0.075
26
+ * gemini-2.5-pro: ~$0.043
27
+ * openai/gpt-5 (OR): ~$0.043
28
+ * 3-model total: ~$0.161 (53-Q: ~$8.54, 300-Q: ~$48.30)
29
+ *
30
+ * Refs: ADR-139, ADR-133, ADR-135, #2156
31
+ */
32
+ import { GaiaQuestion } from './gaia-loader.js';
33
+ export interface ModelRunResult {
34
+ model: string;
35
+ finalAnswer: string | null;
36
+ normalisedAnswer: string;
37
+ turns: number;
38
+ totalInputTokens: number;
39
+ totalOutputTokens: number;
40
+ wallMs: number;
41
+ estimatedCostUsd: number;
42
+ timedOut?: boolean;
43
+ error?: string;
44
+ }
45
+ export type AggregationMethod = 'majority' | 'judge-tiebreak' | 'abstain';
46
+ export interface EnsembleResult {
47
+ questionId: string;
48
+ finalAnswer: string | null;
49
+ aggregationMethod: AggregationMethod;
50
+ /** Rationale from the judge tiebreak (only set when method is 'judge-tiebreak'). */
51
+ judgeRationale?: string;
52
+ models: ModelRunResult[];
53
+ totalInputTokens: number;
54
+ totalOutputTokens: number;
55
+ estimatedCostUsd: number;
56
+ wallMs: number;
57
+ }
58
+ export interface EnsembleOptions {
59
+ /** Models to use (provider inferred from model ID). */
60
+ models?: string[];
61
+ /** Judge model for tiebreak (default: claude-sonnet-4-6). */
62
+ judgeModel?: string;
63
+ /** Anthropic API key (resolved from env/gcloud if not supplied). */
64
+ anthropicApiKey?: string;
65
+ /** Google AI API key (resolved from env/gcloud if not supplied). */
66
+ geminiApiKey?: string;
67
+ /** OpenRouter API key (resolved from env/gcloud if not supplied). */
68
+ openrouterApiKey?: string;
69
+ /** Per-model max turns (default: 8). */
70
+ maxTurns?: number;
71
+ /** Per-model max tokens per turn (default: 2048). */
72
+ maxTokensPerTurn?: number;
73
+ /** Per-turn timeout in ms (default: 60 000). */
74
+ perTurnTimeoutMs?: number;
75
+ }
76
+ export declare function runEnsembleQuestion(question: GaiaQuestion, options?: EnsembleOptions): Promise<EnsembleResult>;
77
+ export interface EnsemblePilotResult {
78
+ correct: number;
79
+ total: number;
80
+ accuracy: number;
81
+ perQuestion: Array<{
82
+ taskId: string;
83
+ question: string;
84
+ expected: string;
85
+ got: string | null;
86
+ correct: boolean;
87
+ aggregationMethod: AggregationMethod;
88
+ judgeRationale?: string;
89
+ costUsd: number;
90
+ wallMs: number;
91
+ perModel: Array<{
92
+ model: string;
93
+ answer: string | null;
94
+ costUsd: number;
95
+ }>;
96
+ }>;
97
+ totalCostUsd: number;
98
+ projectedCost53Q: number;
99
+ projectedCost300Q: number;
100
+ meanWallMs: number;
101
+ }
102
+ export declare function runEnsemblePilot(questions: GaiaQuestion[], options?: EnsembleOptions): Promise<EnsemblePilotResult>;
103
+ //# sourceMappingURL=gaia-ensemble.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gaia-ensemble.d.ts","sourceRoot":"","sources":["../../../src/benchmarks/gaia-ensemble.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAGH,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAmDhD,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,gBAAgB,EAAE,MAAM,CAAC;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,gBAAgB,EAAE,MAAM,CAAC;IACzB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,gBAAgB,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,MAAM,iBAAiB,GAAG,UAAU,GAAG,gBAAgB,GAAG,SAAS,CAAC;AAE1E,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,oFAAoF;IACpF,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE,cAAc,EAAE,CAAC;IACzB,gBAAgB,EAAE,MAAM,CAAC;IACzB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,gBAAgB,EAAE,MAAM,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,eAAe;IAC9B,uDAAuD;IACvD,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,6DAA6D;IAC7D,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,oEAAoE;IACpE,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,oEAAoE;IACpE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,qEAAqE;IACrE,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,wCAAwC;IACxC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,qDAAqD;IACrD,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,gDAAgD;IAChD,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAmVD,wBAAsB,mBAAmB,CACvC,QAAQ,EAAE,YAAY,EACtB,OAAO,GAAE,eAAoB,GAC5B,OAAO,CAAC,cAAc,CAAC,CAiGzB;AAkBD,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,KAAK,CAAC;QACjB,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE,MAAM,CAAC;QACjB,QAAQ,EAAE,MAAM,CAAC;QACjB,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;QACnB,OAAO,EAAE,OAAO,CAAC;QACjB,iBAAiB,EAAE,iBAAiB,CAAC;QACrC,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE,KAAK,CAAC;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;YAAC,OAAO,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KAC5E,CAAC,CAAC;IACH,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;IACzB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,wBAAsB,gBAAgB,CACpC,SAAS,EAAE,YAAY,EAAE,EACzB,OAAO,GAAE,eAAoB,GAC5B,OAAO,CAAC,mBAAmB,CAAC,CAiD9B"}