@claude-flow/cli 3.11.0 → 3.12.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (192) hide show
  1. package/dist/src/commands/doctor.d.ts.map +1 -1
  2. package/dist/src/commands/doctor.js +175 -1
  3. package/dist/src/commands/doctor.js.map +1 -1
  4. package/dist/src/commands/eject.d.ts +33 -0
  5. package/dist/src/commands/eject.d.ts.map +1 -0
  6. package/dist/src/commands/eject.js +195 -0
  7. package/dist/src/commands/eject.js.map +1 -0
  8. package/dist/src/commands/hooks.d.ts.map +1 -1
  9. package/dist/src/commands/hooks.js +2 -1
  10. package/dist/src/commands/hooks.js.map +1 -1
  11. package/dist/src/commands/index.d.ts.map +1 -1
  12. package/dist/src/commands/index.js +4 -0
  13. package/dist/src/commands/index.js.map +1 -1
  14. package/dist/src/commands/init.d.ts.map +1 -1
  15. package/dist/src/commands/init.js +3 -0
  16. package/dist/src/commands/init.js.map +1 -1
  17. package/dist/src/commands/metaharness.d.ts +39 -0
  18. package/dist/src/commands/metaharness.d.ts.map +1 -0
  19. package/dist/src/commands/metaharness.js +194 -0
  20. package/dist/src/commands/metaharness.js.map +1 -0
  21. package/dist/src/mcp-client.d.ts.map +1 -1
  22. package/dist/src/mcp-client.js +4 -0
  23. package/dist/src/mcp-client.js.map +1 -1
  24. package/dist/src/mcp-tools/index.d.ts +1 -0
  25. package/dist/src/mcp-tools/index.d.ts.map +1 -1
  26. package/dist/src/mcp-tools/index.js +2 -0
  27. package/dist/src/mcp-tools/index.js.map +1 -1
  28. package/dist/src/mcp-tools/metaharness-tools.d.ts +31 -0
  29. package/dist/src/mcp-tools/metaharness-tools.d.ts.map +1 -0
  30. package/dist/src/mcp-tools/metaharness-tools.js +372 -0
  31. package/dist/src/mcp-tools/metaharness-tools.js.map +1 -0
  32. package/dist/src/plugins/store/discovery.d.ts.map +1 -1
  33. package/dist/src/plugins/store/discovery.js +3 -0
  34. package/dist/src/plugins/store/discovery.js.map +1 -1
  35. package/dist/src/plugins/store/types.d.ts +6 -1
  36. package/dist/src/plugins/store/types.d.ts.map +1 -1
  37. package/dist/src/ruvector/model-router.d.ts.map +1 -1
  38. package/dist/src/ruvector/model-router.js +37 -0
  39. package/dist/src/ruvector/model-router.js.map +1 -1
  40. package/dist/src/ruvector/router-parallel-recorder.d.ts +127 -0
  41. package/dist/src/ruvector/router-parallel-recorder.d.ts.map +1 -0
  42. package/dist/src/ruvector/router-parallel-recorder.js +183 -0
  43. package/dist/src/ruvector/router-parallel-recorder.js.map +1 -0
  44. package/dist/tsconfig.tsbuildinfo +1 -1
  45. package/package.json +13 -10
  46. package/plugins/ruflo-metaharness/.claude-flow/data/pending-insights.jsonl +1 -0
  47. package/plugins/ruflo-metaharness/.claude-flow/neural/stats.json +6 -0
  48. package/plugins/ruflo-metaharness/.claude-plugin/plugin.json +32 -0
  49. package/plugins/ruflo-metaharness/README.md +64 -0
  50. package/plugins/ruflo-metaharness/agents/metaharness-architect.md +58 -0
  51. package/plugins/ruflo-metaharness/commands/ruflo-metaharness.md +46 -0
  52. package/plugins/ruflo-metaharness/scripts/_harness.mjs +261 -0
  53. package/plugins/ruflo-metaharness/scripts/_similarity.mjs +161 -0
  54. package/plugins/ruflo-metaharness/scripts/_spike-similarity.mjs +223 -0
  55. package/plugins/ruflo-metaharness/scripts/audit-list.mjs +158 -0
  56. package/plugins/ruflo-metaharness/scripts/audit-trend.mjs +272 -0
  57. package/plugins/ruflo-metaharness/scripts/bench-parse-mcp-scan.mjs +146 -0
  58. package/plugins/ruflo-metaharness/scripts/bench-recordpair-overhead.mjs +186 -0
  59. package/plugins/ruflo-metaharness/scripts/bench-similarity.mjs +177 -0
  60. package/plugins/ruflo-metaharness/scripts/drift-from-history.mjs +363 -0
  61. package/plugins/ruflo-metaharness/scripts/genome.mjs +80 -0
  62. package/plugins/ruflo-metaharness/scripts/mcp-scan.mjs +111 -0
  63. package/plugins/ruflo-metaharness/scripts/mint.mjs +119 -0
  64. package/plugins/ruflo-metaharness/scripts/oia-audit.mjs +228 -0
  65. package/plugins/ruflo-metaharness/scripts/router-parallel-analyze.mjs +250 -0
  66. package/plugins/ruflo-metaharness/scripts/score.mjs +92 -0
  67. package/plugins/ruflo-metaharness/scripts/similarity.mjs +158 -0
  68. package/plugins/ruflo-metaharness/scripts/smoke.sh +2268 -0
  69. package/plugins/ruflo-metaharness/scripts/test-graceful-degradation.mjs +141 -0
  70. package/plugins/ruflo-metaharness/scripts/test-mcp-tools.mjs +437 -0
  71. package/plugins/ruflo-metaharness/scripts/test-parallel-pipeline.mjs +204 -0
  72. package/plugins/ruflo-metaharness/scripts/test-pipeline-roundtrip.mjs +586 -0
  73. package/plugins/ruflo-metaharness/scripts/test-similarity.mjs +334 -0
  74. package/plugins/ruflo-metaharness/scripts/test-with-openrouter.mjs +229 -0
  75. package/plugins/ruflo-metaharness/scripts/threat-model.mjs +59 -0
  76. package/plugins/ruflo-metaharness/skills/harness-drift-from-history/SKILL.md +65 -0
  77. package/plugins/ruflo-metaharness/skills/harness-genome/SKILL.md +54 -0
  78. package/plugins/ruflo-metaharness/skills/harness-mcp-scan/SKILL.md +47 -0
  79. package/plugins/ruflo-metaharness/skills/harness-mint/SKILL.md +72 -0
  80. package/plugins/ruflo-metaharness/skills/harness-oia-audit/SKILL.md +79 -0
  81. package/plugins/ruflo-metaharness/skills/harness-score/SKILL.md +66 -0
  82. package/plugins/ruflo-metaharness/skills/harness-similarity/SKILL.md +67 -0
  83. package/plugins/ruflo-metaharness/skills/harness-threat-model/SKILL.md +39 -0
  84. package/dist/src/benchmarks/capability-tasks.d.ts +0 -126
  85. package/dist/src/benchmarks/capability-tasks.d.ts.map +0 -1
  86. package/dist/src/benchmarks/capability-tasks.js +0 -147
  87. package/dist/src/benchmarks/capability-tasks.js.map +0 -1
  88. package/dist/src/benchmarks/gaia-agent-contrastive.d.ts +0 -53
  89. package/dist/src/benchmarks/gaia-agent-contrastive.d.ts.map +0 -1
  90. package/dist/src/benchmarks/gaia-agent-contrastive.js +0 -177
  91. package/dist/src/benchmarks/gaia-agent-contrastive.js.map +0 -1
  92. package/dist/src/benchmarks/gaia-agent-gemini.d.ts +0 -51
  93. package/dist/src/benchmarks/gaia-agent-gemini.d.ts.map +0 -1
  94. package/dist/src/benchmarks/gaia-agent-gemini.js +0 -352
  95. package/dist/src/benchmarks/gaia-agent-gemini.js.map +0 -1
  96. package/dist/src/benchmarks/gaia-claude-p.d.ts +0 -105
  97. package/dist/src/benchmarks/gaia-claude-p.d.ts.map +0 -1
  98. package/dist/src/benchmarks/gaia-claude-p.js +0 -269
  99. package/dist/src/benchmarks/gaia-claude-p.js.map +0 -1
  100. package/dist/src/benchmarks/gaia-claude-p.smoke.d.ts +0 -20
  101. package/dist/src/benchmarks/gaia-claude-p.smoke.d.ts.map +0 -1
  102. package/dist/src/benchmarks/gaia-claude-p.smoke.js +0 -168
  103. package/dist/src/benchmarks/gaia-claude-p.smoke.js.map +0 -1
  104. package/dist/src/benchmarks/gaia-codeagent-runner.py +0 -556
  105. package/dist/src/benchmarks/gaia-codeagent.d.ts +0 -129
  106. package/dist/src/benchmarks/gaia-codeagent.d.ts.map +0 -1
  107. package/dist/src/benchmarks/gaia-codeagent.js +0 -590
  108. package/dist/src/benchmarks/gaia-codeagent.js.map +0 -1
  109. package/dist/src/benchmarks/gaia-codeagent.smoke.d.ts +0 -33
  110. package/dist/src/benchmarks/gaia-codeagent.smoke.d.ts.map +0 -1
  111. package/dist/src/benchmarks/gaia-codeagent.smoke.js +0 -241
  112. package/dist/src/benchmarks/gaia-codeagent.smoke.js.map +0 -1
  113. package/dist/src/benchmarks/gaia-dag-pilot.d.ts +0 -22
  114. package/dist/src/benchmarks/gaia-dag-pilot.d.ts.map +0 -1
  115. package/dist/src/benchmarks/gaia-dag-pilot.js +0 -158
  116. package/dist/src/benchmarks/gaia-dag-pilot.js.map +0 -1
  117. package/dist/src/benchmarks/gaia-dag.d.ts +0 -110
  118. package/dist/src/benchmarks/gaia-dag.d.ts.map +0 -1
  119. package/dist/src/benchmarks/gaia-dag.js +0 -658
  120. package/dist/src/benchmarks/gaia-dag.js.map +0 -1
  121. package/dist/src/benchmarks/gaia-dag.smoke.d.ts +0 -21
  122. package/dist/src/benchmarks/gaia-dag.smoke.d.ts.map +0 -1
  123. package/dist/src/benchmarks/gaia-dag.smoke.js +0 -290
  124. package/dist/src/benchmarks/gaia-dag.smoke.js.map +0 -1
  125. package/dist/src/benchmarks/gaia-ensemble-pilot.d.ts +0 -17
  126. package/dist/src/benchmarks/gaia-ensemble-pilot.d.ts.map +0 -1
  127. package/dist/src/benchmarks/gaia-ensemble-pilot.js +0 -106
  128. package/dist/src/benchmarks/gaia-ensemble-pilot.js.map +0 -1
  129. package/dist/src/benchmarks/gaia-ensemble.d.ts +0 -103
  130. package/dist/src/benchmarks/gaia-ensemble.d.ts.map +0 -1
  131. package/dist/src/benchmarks/gaia-ensemble.js +0 -462
  132. package/dist/src/benchmarks/gaia-ensemble.js.map +0 -1
  133. package/dist/src/benchmarks/gaia-gemini-pilot.d.ts +0 -17
  134. package/dist/src/benchmarks/gaia-gemini-pilot.d.ts.map +0 -1
  135. package/dist/src/benchmarks/gaia-gemini-pilot.js +0 -168
  136. package/dist/src/benchmarks/gaia-gemini-pilot.js.map +0 -1
  137. package/dist/src/benchmarks/gaia-mode-router.d.ts +0 -67
  138. package/dist/src/benchmarks/gaia-mode-router.d.ts.map +0 -1
  139. package/dist/src/benchmarks/gaia-mode-router.js +0 -126
  140. package/dist/src/benchmarks/gaia-mode-router.js.map +0 -1
  141. package/dist/src/benchmarks/gaia-mode-router.smoke.d.ts +0 -15
  142. package/dist/src/benchmarks/gaia-mode-router.smoke.d.ts.map +0 -1
  143. package/dist/src/benchmarks/gaia-mode-router.smoke.js +0 -131
  144. package/dist/src/benchmarks/gaia-mode-router.smoke.js.map +0 -1
  145. package/dist/src/benchmarks/gaia-tools/grounded_query.smoke.d.ts +0 -24
  146. package/dist/src/benchmarks/gaia-tools/grounded_query.smoke.d.ts.map +0 -1
  147. package/dist/src/benchmarks/gaia-tools/grounded_query.smoke.js +0 -276
  148. package/dist/src/benchmarks/gaia-tools/grounded_query.smoke.js.map +0 -1
  149. package/dist/src/benchmarks/gaia-tools/image_describe.d.ts +0 -45
  150. package/dist/src/benchmarks/gaia-tools/image_describe.d.ts.map +0 -1
  151. package/dist/src/benchmarks/gaia-tools/image_describe.js +0 -222
  152. package/dist/src/benchmarks/gaia-tools/image_describe.js.map +0 -1
  153. package/dist/src/benchmarks/gaia-tools/image_describe.smoke.d.ts +0 -24
  154. package/dist/src/benchmarks/gaia-tools/image_describe.smoke.d.ts.map +0 -1
  155. package/dist/src/benchmarks/gaia-tools/image_describe.smoke.js +0 -169
  156. package/dist/src/benchmarks/gaia-tools/image_describe.smoke.js.map +0 -1
  157. package/dist/src/benchmarks/gaia-tools/pdf_read.d.ts +0 -27
  158. package/dist/src/benchmarks/gaia-tools/pdf_read.d.ts.map +0 -1
  159. package/dist/src/benchmarks/gaia-tools/pdf_read.js +0 -226
  160. package/dist/src/benchmarks/gaia-tools/pdf_read.js.map +0 -1
  161. package/dist/src/benchmarks/gaia-tools/python_exec.d.ts +0 -31
  162. package/dist/src/benchmarks/gaia-tools/python_exec.d.ts.map +0 -1
  163. package/dist/src/benchmarks/gaia-tools/python_exec.js +0 -94
  164. package/dist/src/benchmarks/gaia-tools/python_exec.js.map +0 -1
  165. package/dist/src/benchmarks/gaia-tools/python_exec.smoke.d.ts +0 -13
  166. package/dist/src/benchmarks/gaia-tools/python_exec.smoke.d.ts.map +0 -1
  167. package/dist/src/benchmarks/gaia-tools/python_exec.smoke.js +0 -98
  168. package/dist/src/benchmarks/gaia-tools/python_exec.smoke.js.map +0 -1
  169. package/dist/src/benchmarks/gaia-tools/visit_webpage.d.ts +0 -52
  170. package/dist/src/benchmarks/gaia-tools/visit_webpage.d.ts.map +0 -1
  171. package/dist/src/benchmarks/gaia-tools/visit_webpage.js +0 -304
  172. package/dist/src/benchmarks/gaia-tools/visit_webpage.js.map +0 -1
  173. package/dist/src/benchmarks/gaia-tools/web_browse.d.ts +0 -61
  174. package/dist/src/benchmarks/gaia-tools/web_browse.d.ts.map +0 -1
  175. package/dist/src/benchmarks/gaia-tools/web_browse.js +0 -217
  176. package/dist/src/benchmarks/gaia-tools/web_browse.js.map +0 -1
  177. package/dist/src/benchmarks/gaia-tools/web_browse.smoke.d.ts +0 -26
  178. package/dist/src/benchmarks/gaia-tools/web_browse.smoke.d.ts.map +0 -1
  179. package/dist/src/benchmarks/gaia-tools/web_browse.smoke.js +0 -152
  180. package/dist/src/benchmarks/gaia-tools/web_browse.smoke.js.map +0 -1
  181. package/dist/src/benchmarks/gaia-tools/web_search.smoke.d.ts +0 -24
  182. package/dist/src/benchmarks/gaia-tools/web_search.smoke.d.ts.map +0 -1
  183. package/dist/src/benchmarks/gaia-tools/web_search.smoke.js +0 -311
  184. package/dist/src/benchmarks/gaia-tools/web_search.smoke.js.map +0 -1
  185. package/dist/src/benchmarks/gaia-visit-webpage.smoke.d.ts +0 -25
  186. package/dist/src/benchmarks/gaia-visit-webpage.smoke.d.ts.map +0 -1
  187. package/dist/src/benchmarks/gaia-visit-webpage.smoke.js +0 -304
  188. package/dist/src/benchmarks/gaia-visit-webpage.smoke.js.map +0 -1
  189. package/dist/src/commands/performance-capability.d.ts +0 -30
  190. package/dist/src/commands/performance-capability.d.ts.map +0 -1
  191. package/dist/src/commands/performance-capability.js +0 -349
  192. package/dist/src/commands/performance-capability.js.map +0 -1
@@ -1,168 +0,0 @@
1
- /**
2
- * GAIA Phase 2 — Gemini 2.5 Pro Thinking 5-Question Pilot
3
- *
4
- * Runs 5 diverse questions through the Gemini adapter to evaluate:
5
- * - Per-question cost vs $0.12 gate
6
- * - Pass rate vs 3/5 gate
7
- *
8
- * If both gates pass, authorizes full 53Q run.
9
- *
10
- * Usage:
11
- * npx tsx src/benchmarks/gaia-gemini-pilot.ts
12
- * node dist/benchmarks/gaia-gemini-pilot.js
13
- *
14
- * Refs: ADR-133, #2156 Phase 2
15
- */
16
- import * as fs from 'node:fs';
17
- import * as os from 'node:os';
18
- import * as path from 'node:path';
19
- import { runGeminiAgent, isGeminiAnswerCorrect, DEFAULT_GEMINI_MODEL } from './gaia-agent-gemini.js';
20
- // ---------------------------------------------------------------------------
21
- // Cost gate constants
22
- // ---------------------------------------------------------------------------
23
- const COST_GATE_PER_Q_USD = 0.12;
24
- const PASS_RATE_GATE = 3; // out of 5
25
- // ---------------------------------------------------------------------------
26
- // Load pilot questions from cache
27
- // ---------------------------------------------------------------------------
28
- const PILOT_IDS = [
29
- '9318445f-fe6a-4e1b-acbf-c68228c9906a', // PNG image: fractions worksheet
30
- '7bd855d8-463d-4ed5-93ca-5fe35145f733', // XLSX: fast-food sales
31
- '5188369a-3bbe-43d8-8b94-11558f909a08', // Retrieval: Merriam-Webster word-of-day writer
32
- '5d0080cb-90d7-4712-bc33-848150e917d3', // Calculation: fish bag volume
33
- '840bfca7-4f7b-481a-8794-c560c340185d', // Retrieval: NASA contract number
34
- ];
35
- function loadPilotQuestions() {
36
- const cacheDir = path.join(os.homedir(), '.cache', 'ruflo', 'gaia');
37
- const dataPath = path.join(cacheDir, 'level1-main.json');
38
- if (!fs.existsSync(dataPath)) {
39
- throw new Error(`GAIA cache not found at ${dataPath}. Run a full bench first.`);
40
- }
41
- const data = JSON.parse(fs.readFileSync(dataPath, 'utf-8'));
42
- const byId = new Map(data.map((q) => [q.task_id, q]));
43
- const questions = [];
44
- for (const id of PILOT_IDS) {
45
- const q = byId.get(id);
46
- if (!q)
47
- throw new Error(`Pilot question ${id} not found in cache`);
48
- // Resolve file_path from cache
49
- if (q.file_name && !q.file_path) {
50
- const fp = path.join(cacheDir, 'files', q.file_name);
51
- if (fs.existsSync(fp)) {
52
- q.file_path = fp;
53
- }
54
- }
55
- questions.push(q);
56
- }
57
- return questions;
58
- }
59
- // ---------------------------------------------------------------------------
60
- // Main pilot runner
61
- // ---------------------------------------------------------------------------
62
- async function runPilot() {
63
- console.log('');
64
- console.log('=== GAIA Phase 2 Pilot — Gemini 2.5 Pro Thinking ===');
65
- console.log(`Model: ${DEFAULT_GEMINI_MODEL}`);
66
- console.log(`Questions: ${PILOT_IDS.length}`);
67
- console.log(`Cost gate: $${COST_GATE_PER_Q_USD}/question`);
68
- console.log(`Pass rate gate: ${PASS_RATE_GATE}/${PILOT_IDS.length}`);
69
- console.log('');
70
- const questions = loadPilotQuestions();
71
- let passed = 0;
72
- let totalCost = 0;
73
- let totalInputTokens = 0;
74
- let totalOutputTokens = 0;
75
- let totalThinkingTokens = 0;
76
- const perQResults = [];
77
- for (let i = 0; i < questions.length; i++) {
78
- const q = questions[i];
79
- console.log(`[Q${i + 1}/5] ${q.task_id}`);
80
- console.log(` Question: ${q.question.slice(0, 100)}${q.question.length > 100 ? '...' : ''}`);
81
- console.log(` File: ${q.file_name ?? 'none'}`);
82
- const result = await runGeminiAgent(q, {
83
- model: DEFAULT_GEMINI_MODEL,
84
- maxTurns: 12,
85
- maxTokensPerTurn: 8192,
86
- });
87
- const correct = result.finalAnswer !== null &&
88
- isGeminiAnswerCorrect(result.finalAnswer, q.final_answer);
89
- if (correct)
90
- passed++;
91
- totalCost += result.estimatedCostUsd;
92
- totalInputTokens += result.totalInputTokens;
93
- totalOutputTokens += result.totalOutputTokens;
94
- totalThinkingTokens += result.totalThinkingTokens;
95
- perQResults.push({
96
- taskId: q.task_id,
97
- correct,
98
- answer: result.finalAnswer,
99
- expected: q.final_answer,
100
- cost: result.estimatedCostUsd,
101
- turns: result.turns,
102
- thinkingTokens: result.totalThinkingTokens,
103
- wallMs: result.wallMs,
104
- });
105
- const status = correct ? 'PASS' : 'FAIL';
106
- console.log(` Expected: "${q.final_answer}"`);
107
- console.log(` Got: "${result.finalAnswer ?? 'null'}"`);
108
- console.log(` Status: ${status} | turns=${result.turns} | ` +
109
- `input=${result.totalInputTokens.toLocaleString()} | ` +
110
- `output=${result.totalOutputTokens.toLocaleString()} | ` +
111
- `thinking=${result.totalThinkingTokens.toLocaleString()} | ` +
112
- `cost=$${result.estimatedCostUsd.toFixed(4)} | ` +
113
- `wall=${(result.wallMs / 1000).toFixed(1)}s`);
114
- if (result.error)
115
- console.log(` Error: ${result.error}`);
116
- if (result.timedOut)
117
- console.log(` TIMED OUT`);
118
- console.log('');
119
- }
120
- const avgCost = totalCost / PILOT_IDS.length;
121
- const passRate = passed / PILOT_IDS.length;
122
- const costGatePasses = avgCost <= COST_GATE_PER_Q_USD;
123
- const passRateGatePasses = passed >= PASS_RATE_GATE;
124
- const bothGatesPass = costGatePasses && passRateGatePasses;
125
- console.log('=== Pilot Results ===');
126
- console.log(`Pass rate: ${passed}/${PILOT_IDS.length} (${(passRate * 100).toFixed(0)}%)`);
127
- console.log(`Avg cost/Q: $${avgCost.toFixed(4)}`);
128
- console.log(`Total cost: $${totalCost.toFixed(4)}`);
129
- console.log(`Input tokens: ${totalInputTokens.toLocaleString()}`);
130
- console.log(`Output tokens: ${totalOutputTokens.toLocaleString()}`);
131
- console.log(`Thinking tokens: ${totalThinkingTokens.toLocaleString()}`);
132
- console.log('');
133
- console.log(`Cost gate ($${COST_GATE_PER_Q_USD}/Q): ${costGatePasses ? 'PASS' : 'FAIL'} (avg $${avgCost.toFixed(4)})`);
134
- console.log(`Pass rate gate (${PASS_RATE_GATE}/5): ${passRateGatePasses ? 'PASS' : 'FAIL'} (${passed}/${PILOT_IDS.length})`);
135
- console.log(`Gate verdict: ${bothGatesPass ? 'BOTH GATES PASS — authorize full 53Q run' : 'GATE FAILED — do NOT run full 53Q'}`);
136
- console.log('');
137
- // Emit machine-readable JSON artifact
138
- const artifact = {
139
- pilot: 'phase2-gemini-thinking',
140
- model: DEFAULT_GEMINI_MODEL,
141
- timestamp: new Date().toISOString(),
142
- summary: {
143
- passed,
144
- total: PILOT_IDS.length,
145
- passRate: (passRate * 100).toFixed(1),
146
- avgCostUsd: avgCost,
147
- totalCostUsd: totalCost,
148
- totalInputTokens,
149
- totalOutputTokens,
150
- totalThinkingTokens,
151
- costGate: { threshold: COST_GATE_PER_Q_USD, value: avgCost, passed: costGatePasses },
152
- passRateGate: { threshold: PASS_RATE_GATE, value: passed, passed: passRateGatePasses },
153
- bothGatesPass,
154
- },
155
- questions: perQResults,
156
- };
157
- const outPath = path.join(process.cwd(), 'docs/benchmarks/runs/gaia-l1-phase2-gemini-pilot.json');
158
- fs.writeFileSync(outPath, JSON.stringify(artifact, null, 2));
159
- console.log(`Artifact written to: ${outPath}`);
160
- if (!bothGatesPass) {
161
- process.exit(1);
162
- }
163
- }
164
- runPilot().catch((err) => {
165
- console.error('Pilot crashed:', err);
166
- process.exit(2);
167
- });
168
- //# sourceMappingURL=gaia-gemini-pilot.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"gaia-gemini-pilot.js","sourceRoot":"","sources":["../../../src/benchmarks/gaia-gemini-pilot.ts"],"names":[],"mappings":"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"}
@@ -1,67 +0,0 @@
1
- /**
2
- * GAIA Mode Router — iter 58 (#2156)
3
- *
4
- * Rule-based classifier that maps each GAIA question to the appropriate
5
- * agent mode. Empirical basis from iter 57:
6
- * - ToolCalling (gaia-agent.ts) wins retrieval/attachment questions
7
- * - CodeAgent (gaia-claude-p.ts) wins pure-reasoning questions
8
- * - Naïve combination regressed by -10q, so routing is required
9
- *
10
- * Decision rules (evaluated in priority order):
11
- *
12
- * 1. ATTACHMENT — question has file_name → ToolCalling
13
- * CodeAgent struggles with attachment piping; ToolCalling natively
14
- * handles XLSX/PPTX/images/audio via attachment tools.
15
- *
16
- * 2. WEB_RETRIEVAL — question text matches retrieval keywords →
17
- * ToolCalling (has WebSearch/WebFetch in the tool catalogue)
18
- *
19
- * 3. PURE_REASONING — question text matches computation/logic keywords →
20
- * CodeAgent (executes arbitrary Python, no web round-trip needed)
21
- *
22
- * 4. LONG_QUESTION — question length > 400 chars → ToolCalling
23
- * Long questions typically involve multi-hop retrieval steps.
24
- *
25
- * 5. DEFAULT — ToolCalling (higher baseline per iter 56b)
26
- *
27
- * Each decision is logged with the rule that fired so per-Q audit is trivial.
28
- *
29
- * Refs: iter 57 architectural finding, iter 58, #2156
30
- */
31
- import type { GaiaQuestion } from './gaia-loader.js';
32
- /** The two agent modes the hybrid router can dispatch to. */
33
- export type GaiaMode = 'ToolCalling' | 'CodeAgent';
34
- /** Routing rule identifiers (used for audit logging). */
35
- export type RoutingRule = 'attachment' | 'web_retrieval' | 'pure_reasoning' | 'long_question' | 'default';
36
- /** Result of classifying a single question. */
37
- export interface RoutingDecision {
38
- /** Chosen agent mode. */
39
- mode: GaiaMode;
40
- /** The rule that fired and determined the mode. */
41
- rule: RoutingRule;
42
- /** Human-readable explanation (suitable for per-Q log). */
43
- reason: string;
44
- }
45
- /**
46
- * Classify a GAIA question into a mode + rule pair.
47
- *
48
- * Rules are evaluated in strict priority order — the first matching rule wins.
49
- */
50
- export declare function routeQuestion(question: GaiaQuestion): RoutingDecision;
51
- /** Summary produced by routeQuestions for logging purposes. */
52
- export interface RoutingSummary {
53
- total: number;
54
- toolCalling: number;
55
- codeAgent: number;
56
- /** Questions routed to ToolCalling, sorted by rule. */
57
- byRule: Record<RoutingRule, number>;
58
- }
59
- /**
60
- * Route an array of questions and return per-Q decisions plus a summary.
61
- * Zero-allocation: decisions array is returned in input order.
62
- */
63
- export declare function routeQuestions(questions: GaiaQuestion[]): {
64
- decisions: RoutingDecision[];
65
- summary: RoutingSummary;
66
- };
67
- //# sourceMappingURL=gaia-mode-router.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"gaia-mode-router.d.ts","sourceRoot":"","sources":["../../../src/benchmarks/gaia-mode-router.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAMrD,6DAA6D;AAC7D,MAAM,MAAM,QAAQ,GAAG,aAAa,GAAG,WAAW,CAAC;AAEnD,yDAAyD;AACzD,MAAM,MAAM,WAAW,GACnB,YAAY,GACZ,eAAe,GACf,gBAAgB,GAChB,eAAe,GACf,SAAS,CAAC;AAEd,+CAA+C;AAC/C,MAAM,WAAW,eAAe;IAC9B,yBAAyB;IACzB,IAAI,EAAE,QAAQ,CAAC;IACf,mDAAmD;IACnD,IAAI,EAAE,WAAW,CAAC;IAClB,2DAA2D;IAC3D,MAAM,EAAE,MAAM,CAAC;CAChB;AA2BD;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,YAAY,GAAG,eAAe,CA+CrE;AAMD,+DAA+D;AAC/D,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,uDAAuD;IACvD,MAAM,EAAE,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;CACrC;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,SAAS,EAAE,YAAY,EAAE,GAAG;IACzD,SAAS,EAAE,eAAe,EAAE,CAAC;IAC7B,OAAO,EAAE,cAAc,CAAC;CACzB,CAwBA"}
@@ -1,126 +0,0 @@
1
- /**
2
- * GAIA Mode Router — iter 58 (#2156)
3
- *
4
- * Rule-based classifier that maps each GAIA question to the appropriate
5
- * agent mode. Empirical basis from iter 57:
6
- * - ToolCalling (gaia-agent.ts) wins retrieval/attachment questions
7
- * - CodeAgent (gaia-claude-p.ts) wins pure-reasoning questions
8
- * - Naïve combination regressed by -10q, so routing is required
9
- *
10
- * Decision rules (evaluated in priority order):
11
- *
12
- * 1. ATTACHMENT — question has file_name → ToolCalling
13
- * CodeAgent struggles with attachment piping; ToolCalling natively
14
- * handles XLSX/PPTX/images/audio via attachment tools.
15
- *
16
- * 2. WEB_RETRIEVAL — question text matches retrieval keywords →
17
- * ToolCalling (has WebSearch/WebFetch in the tool catalogue)
18
- *
19
- * 3. PURE_REASONING — question text matches computation/logic keywords →
20
- * CodeAgent (executes arbitrary Python, no web round-trip needed)
21
- *
22
- * 4. LONG_QUESTION — question length > 400 chars → ToolCalling
23
- * Long questions typically involve multi-hop retrieval steps.
24
- *
25
- * 5. DEFAULT — ToolCalling (higher baseline per iter 56b)
26
- *
27
- * Each decision is logged with the rule that fired so per-Q audit is trivial.
28
- *
29
- * Refs: iter 57 architectural finding, iter 58, #2156
30
- */
31
- // ---------------------------------------------------------------------------
32
- // Regex patterns
33
- // ---------------------------------------------------------------------------
34
- /**
35
- * Keywords that indicate the question requires live web retrieval.
36
- * ToolCalling has WebSearch + WebFetch in its catalogue.
37
- */
38
- const WEB_RETRIEVAL_RE = /website|webpage|visit|browse|wikipedia|article|page about|paper titled|published in|according to|the.*\bsite\b|link|url|online|source|reference|official|org\b|\.com\b|\.gov\b|based on the.*page/i;
39
- /**
40
- * Keywords that indicate the question is a pure computation / logic problem.
41
- * CodeAgent runs Python via `claude -p` Bash tool and handles these well.
42
- */
43
- const PURE_REASONING_RE = /calculate|compute|math|equation|how many|distance|volume|combinations|permutations|logic puzzle|deduction|deduce|sequence|series|prove|derivat|integral|differential|probability|odds|fraction|percentage of|modulo|prime\b|fibonacci|recursive|recurrence|sorting|algorithm|big-?o|time complexity|bits?|bytes?|binary|hexadecimal|base \d/i;
44
- /** Maximum question length before we treat it as a retrieval question. */
45
- const LONG_QUESTION_THRESHOLD = 400;
46
- // ---------------------------------------------------------------------------
47
- // Core classifier
48
- // ---------------------------------------------------------------------------
49
- /**
50
- * Classify a GAIA question into a mode + rule pair.
51
- *
52
- * Rules are evaluated in strict priority order — the first matching rule wins.
53
- */
54
- export function routeQuestion(question) {
55
- // Rule 1: attachment present → ToolCalling
56
- if (question.file_name) {
57
- return {
58
- mode: 'ToolCalling',
59
- rule: 'attachment',
60
- reason: `file_name="${question.file_name}" — attachment tools in ToolCalling`,
61
- };
62
- }
63
- const text = question.question;
64
- // Rule 2: web retrieval keywords → ToolCalling
65
- if (WEB_RETRIEVAL_RE.test(text)) {
66
- const match = text.match(WEB_RETRIEVAL_RE);
67
- return {
68
- mode: 'ToolCalling',
69
- rule: 'web_retrieval',
70
- reason: `web-retrieval keyword "${match?.[0]}" detected`,
71
- };
72
- }
73
- // Rule 3: pure reasoning / computation keywords → CodeAgent
74
- if (PURE_REASONING_RE.test(text)) {
75
- const match = text.match(PURE_REASONING_RE);
76
- return {
77
- mode: 'CodeAgent',
78
- rule: 'pure_reasoning',
79
- reason: `reasoning keyword "${match?.[0]}" detected`,
80
- };
81
- }
82
- // Rule 4: long question → ToolCalling
83
- if (text.length > LONG_QUESTION_THRESHOLD) {
84
- return {
85
- mode: 'ToolCalling',
86
- rule: 'long_question',
87
- reason: `question length ${text.length} > ${LONG_QUESTION_THRESHOLD} chars`,
88
- };
89
- }
90
- // Rule 5: default → ToolCalling (higher baseline per iter 56b)
91
- return {
92
- mode: 'ToolCalling',
93
- rule: 'default',
94
- reason: 'no specific signal — defaulting to ToolCalling (iter 56b baseline)',
95
- };
96
- }
97
- /**
98
- * Route an array of questions and return per-Q decisions plus a summary.
99
- * Zero-allocation: decisions array is returned in input order.
100
- */
101
- export function routeQuestions(questions) {
102
- const decisions = [];
103
- const byRule = {
104
- attachment: 0,
105
- web_retrieval: 0,
106
- pure_reasoning: 0,
107
- long_question: 0,
108
- default: 0,
109
- };
110
- let toolCalling = 0;
111
- let codeAgent = 0;
112
- for (const q of questions) {
113
- const decision = routeQuestion(q);
114
- decisions.push(decision);
115
- byRule[decision.rule]++;
116
- if (decision.mode === 'ToolCalling')
117
- toolCalling++;
118
- else
119
- codeAgent++;
120
- }
121
- return {
122
- decisions,
123
- summary: { total: questions.length, toolCalling, codeAgent, byRule },
124
- };
125
- }
126
- //# sourceMappingURL=gaia-mode-router.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"gaia-mode-router.js","sourceRoot":"","sources":["../../../src/benchmarks/gaia-mode-router.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AA6BH,8EAA8E;AAC9E,iBAAiB;AACjB,8EAA8E;AAE9E;;;GAGG;AACH,MAAM,gBAAgB,GACpB,oMAAoM,CAAC;AAEvM;;;GAGG;AACH,MAAM,iBAAiB,GACrB,8UAA8U,CAAC;AAEjV,0EAA0E;AAC1E,MAAM,uBAAuB,GAAG,GAAG,CAAC;AAEpC,8EAA8E;AAC9E,kBAAkB;AAClB,8EAA8E;AAE9E;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAC,QAAsB;IAClD,2CAA2C;IAC3C,IAAI,QAAQ,CAAC,SAAS,EAAE,CAAC;QACvB,OAAO;YACL,IAAI,EAAE,aAAa;YACnB,IAAI,EAAE,YAAY;YAClB,MAAM,EAAE,cAAc,QAAQ,CAAC,SAAS,qCAAqC;SAC9E,CAAC;IACJ,CAAC;IAED,MAAM,IAAI,GAAG,QAAQ,CAAC,QAAQ,CAAC;IAE/B,+CAA+C;IAC/C,IAAI,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAChC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;QAC3C,OAAO;YACL,IAAI,EAAE,aAAa;YACnB,IAAI,EAAE,eAAe;YACrB,MAAM,EAAE,0BAA0B,KAAK,EAAE,CAAC,CAAC,CAAC,YAAY;SACzD,CAAC;IACJ,CAAC;IAED,4DAA4D;IAC5D,IAAI,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACjC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;QAC5C,OAAO;YACL,IAAI,EAAE,WAAW;YACjB,IAAI,EAAE,gBAAgB;YACtB,MAAM,EAAE,sBAAsB,KAAK,EAAE,CAAC,CAAC,CAAC,YAAY;SACrD,CAAC;IACJ,CAAC;IAED,sCAAsC;IACtC,IAAI,IAAI,CAAC,MAAM,GAAG,uBAAuB,EAAE,CAAC;QAC1C,OAAO;YACL,IAAI,EAAE,aAAa;YACnB,IAAI,EAAE,eAAe;YACrB,MAAM,EAAE,mBAAmB,IAAI,CAAC,MAAM,MAAM,uBAAuB,QAAQ;SAC5E,CAAC;IACJ,CAAC;IAED,+DAA+D;IAC/D,OAAO;QACL,IAAI,EAAE,aAAa;QACnB,IAAI,EAAE,SAAS;QACf,MAAM,EAAE,oEAAoE;KAC7E,CAAC;AACJ,CAAC;AAeD;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,SAAyB;IAItD,MAAM,SAAS,GAAsB,EAAE,CAAC;IACxC,MAAM,MAAM,GAAgC;QAC1C,UAAU,EAAE,CAAC;QACb,aAAa,EAAE,CAAC;QAChB,cAAc,EAAE,CAAC;QACjB,aAAa,EAAE,CAAC;QAChB,OAAO,EAAE,CAAC;KACX,CAAC;IACF,IAAI,WAAW,GAAG,CAAC,CAAC;IACpB,IAAI,SAAS,GAAG,CAAC,CAAC;IAElB,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE,CAAC;QAC1B,MAAM,QAAQ,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;QAClC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACzB,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACxB,IAAI,QAAQ,CAAC,IAAI,KAAK,aAAa;YAAE,WAAW,EAAE,CAAC;;YAC9C,SAAS,EAAE,CAAC;IACnB,CAAC;IAED,OAAO;QACL,SAAS;QACT,OAAO,EAAE,EAAE,KAAK,EAAE,SAAS,CAAC,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE;KACrE,CAAC;AACJ,CAAC"}
@@ -1,15 +0,0 @@
1
- /**
2
- * Smoke tests for gaia-mode-router.ts — iter 58 (#2156)
3
- *
4
- * Synthetic question texts covering each routing rule.
5
- * All 10 cases must pass (no API calls — purely rule-based).
6
- *
7
- * Run:
8
- * npx ts-node src/benchmarks/gaia-mode-router.smoke.ts
9
- * # or after build:
10
- * node dist/src/benchmarks/gaia-mode-router.smoke.js
11
- *
12
- * Refs: iter 58, #2156
13
- */
14
- export {};
15
- //# sourceMappingURL=gaia-mode-router.smoke.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"gaia-mode-router.smoke.d.ts","sourceRoot":"","sources":["../../../src/benchmarks/gaia-mode-router.smoke.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG"}
@@ -1,131 +0,0 @@
1
- /**
2
- * Smoke tests for gaia-mode-router.ts — iter 58 (#2156)
3
- *
4
- * Synthetic question texts covering each routing rule.
5
- * All 10 cases must pass (no API calls — purely rule-based).
6
- *
7
- * Run:
8
- * npx ts-node src/benchmarks/gaia-mode-router.smoke.ts
9
- * # or after build:
10
- * node dist/src/benchmarks/gaia-mode-router.smoke.js
11
- *
12
- * Refs: iter 58, #2156
13
- */
14
- import { routeQuestion, routeQuestions } from './gaia-mode-router.js';
15
- // ---------------------------------------------------------------------------
16
- // Helpers
17
- // ---------------------------------------------------------------------------
18
- let passed = 0;
19
- let failed = 0;
20
- function assert(condition, label, detail) {
21
- if (condition) {
22
- console.log(` PASS ${label}`);
23
- passed++;
24
- }
25
- else {
26
- console.error(` FAIL ${label}${detail ? ': ' + detail : ''}`);
27
- failed++;
28
- }
29
- }
30
- /** Build a minimal GaiaQuestion for routing tests. */
31
- function q(text, fileName = null) {
32
- return {
33
- task_id: 'smoke-' + text.slice(0, 12).replace(/\W/g, '-'),
34
- level: 1,
35
- question: text,
36
- final_answer: 'irrelevant',
37
- file_name: fileName,
38
- file_path: fileName ? `/tmp/${fileName}` : null,
39
- };
40
- }
41
- // ---------------------------------------------------------------------------
42
- // Test cases — one per routing rule plus edge cases
43
- // ---------------------------------------------------------------------------
44
- function testAttachmentRule() {
45
- console.log('\n-- Rule 1: attachment → ToolCalling --');
46
- const d = routeQuestion(q('What is the total in column B of the spreadsheet?', 'data.xlsx'));
47
- assert(d.mode === 'ToolCalling', 'xlsx attachment → ToolCalling', `got mode=${d.mode}`);
48
- assert(d.rule === 'attachment', 'rule is attachment', `got rule=${d.rule}`);
49
- const d2 = routeQuestion(q('Describe the image shown.', 'photo.png'));
50
- assert(d2.mode === 'ToolCalling', 'png attachment → ToolCalling', `got mode=${d2.mode}`);
51
- assert(d2.rule === 'attachment', 'rule is attachment for image', `got rule=${d2.rule}`);
52
- }
53
- function testWebRetrievalRule() {
54
- console.log('\n-- Rule 2: web retrieval → ToolCalling --');
55
- const d1 = routeQuestion(q('According to Wikipedia, what year was the Eiffel Tower built?'));
56
- assert(d1.mode === 'ToolCalling', 'wikipedia keyword → ToolCalling', `got mode=${d1.mode}`);
57
- assert(d1.rule === 'web_retrieval', 'rule is web_retrieval', `got rule=${d1.rule}`);
58
- const d2 = routeQuestion(q('Visit the website and find the CEO of the company listed.'));
59
- assert(d2.mode === 'ToolCalling', 'visit/website keyword → ToolCalling', `got mode=${d2.mode}`);
60
- assert(d2.rule === 'web_retrieval', 'rule is web_retrieval for browse', `got rule=${d2.rule}`);
61
- const d3 = routeQuestion(q('Based on the article published in Nature in 2021, what was the main finding?'));
62
- assert(d3.mode === 'ToolCalling', 'article/published → ToolCalling', `got mode=${d3.mode}`);
63
- }
64
- function testPureReasoningRule() {
65
- console.log('\n-- Rule 3: pure reasoning → CodeAgent --');
66
- const d1 = routeQuestion(q('Calculate the volume of a sphere with radius 7.'));
67
- assert(d1.mode === 'CodeAgent', 'calculate keyword → CodeAgent', `got mode=${d1.mode}`);
68
- assert(d1.rule === 'pure_reasoning', 'rule is pure_reasoning', `got rule=${d1.rule}`);
69
- const d2 = routeQuestion(q('How many combinations of 3 items can be chosen from a set of 10?'));
70
- assert(d2.mode === 'CodeAgent', 'combinations keyword → CodeAgent', `got mode=${d2.mode}`);
71
- const d3 = routeQuestion(q('Solve the logic puzzle: Alice is taller than Bob. Bob is shorter than Carol. Who is tallest?'));
72
- assert(d3.mode === 'CodeAgent', 'logic puzzle keyword → CodeAgent', `got mode=${d3.mode}`);
73
- }
74
- function testLongQuestionRule() {
75
- console.log('\n-- Rule 4: long question → ToolCalling --');
76
- // Build a question > 400 chars with no explicit keywords
77
- const longText = 'A researcher is studying the behavior of a particular bird species that lives in a mountainous region. ' +
78
- 'The researcher has collected data over five years and wants to understand the migration patterns. ' +
79
- 'Using the provided observations, determine whether the species migrates seasonally or stays year-round. ' +
80
- 'Provide the specific months during which migration occurs based on the data collected. ' +
81
- 'Be precise about the start and end months for each migratory period.';
82
- assert(longText.length > 400, 'sanity: text is > 400 chars', `length=${longText.length}`);
83
- const d = routeQuestion(q(longText));
84
- assert(d.mode === 'ToolCalling', 'long question → ToolCalling', `got mode=${d.mode}`);
85
- assert(d.rule === 'long_question', 'rule is long_question', `got rule=${d.rule}`);
86
- }
87
- function testDefaultRule() {
88
- console.log('\n-- Rule 5: default → ToolCalling --');
89
- const d = routeQuestion(q('What is the capital of France?'));
90
- assert(d.mode === 'ToolCalling', 'short factual → ToolCalling (default)', `got mode=${d.mode}`);
91
- assert(d.rule === 'default', 'rule is default', `got rule=${d.rule}`);
92
- }
93
- function testBatchRouting() {
94
- console.log('\n-- Batch: routeQuestions summary --');
95
- const questions = [
96
- q('What is the capital of France?'), // default → ToolCalling
97
- q('Calculate the sum of 1 to 100 using Gauss formula.'), // pure_reasoning → CodeAgent
98
- q('Visit the NASA website and find the most recent mission.'), // web_retrieval → ToolCalling
99
- q('What is the total in the file?', 'data.xlsx'), // attachment → ToolCalling
100
- ];
101
- const { decisions, summary } = routeQuestions(questions);
102
- assert(summary.total === 4, 'summary.total = 4', `got ${summary.total}`);
103
- assert(summary.codeAgent === 1, 'exactly 1 CodeAgent', `got ${summary.codeAgent}`);
104
- assert(summary.toolCalling === 3, 'exactly 3 ToolCalling', `got ${summary.toolCalling}`);
105
- assert(decisions.length === 4, 'decisions length = 4', `got ${decisions.length}`);
106
- assert(summary.byRule.pure_reasoning === 1, 'byRule.pure_reasoning = 1');
107
- assert(summary.byRule.attachment === 1, 'byRule.attachment = 1');
108
- assert(summary.byRule.web_retrieval === 1, 'byRule.web_retrieval = 1');
109
- assert(summary.byRule.default === 1, 'byRule.default = 1');
110
- }
111
- // ---------------------------------------------------------------------------
112
- // Main
113
- // ---------------------------------------------------------------------------
114
- function main() {
115
- console.log('=== gaia-mode-router smoke tests ===');
116
- console.log('(no API calls — rule-based only)\n');
117
- testAttachmentRule();
118
- testWebRetrievalRule();
119
- testPureReasoningRule();
120
- testLongQuestionRule();
121
- testDefaultRule();
122
- testBatchRouting();
123
- const total = passed + failed;
124
- console.log(`\n=== Results: ${passed}/${total} passed ===`);
125
- if (failed > 0) {
126
- console.error(`${failed} tests FAILED`);
127
- process.exit(1);
128
- }
129
- }
130
- main();
131
- //# sourceMappingURL=gaia-mode-router.smoke.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"gaia-mode-router.smoke.js","sourceRoot":"","sources":["../../../src/benchmarks/gaia-mode-router.smoke.ts"],"names":[],"mappings":"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"}
@@ -1,24 +0,0 @@
1
- /**
2
- * Smoke tests for grounded_query.ts — ADR-135 / iter-33
3
- *
4
- * All tests are mock-based using groundedQueryTestHooks for ESM-safe injection.
5
- * NO live API calls are made.
6
- *
7
- * Coverage:
8
- * 1. resolveGoogleAIApiKey — returns key from env var
9
- * 2. resolveGoogleAIApiKey — throws when env var absent and gcloud unavailable
10
- * 3. parseGeminiResponse — well-formed response → correct GroundedQueryResult shape
11
- * 4. parseGeminiResponse — empty grounding metadata → grounded=false, empty sources
12
- * 5. parseGeminiResponse — deduplicates sources by URI
13
- * 6. parseGeminiResponse — cost calculation uses token counts
14
- * 7. GroundedQueryTool.execute — happy path: answer + sources in output
15
- * 8. GroundedQueryTool.execute — HTTP 4xx surfaces useful error message
16
- * 9. GroundedQueryTool.execute — ungrounded response includes note in output
17
- * 10. GroundedQueryTool.execute — rejects empty query
18
- * 11. GroundedQueryTool.execute — max_tokens clamped to 8192
19
- * 12. GroundedQueryTool.execute — uses injected apiKey from constructor
20
- *
21
- * Run with: npx tsx grounded_query.smoke.ts (from gaia-tools directory)
22
- */
23
- export {};
24
- //# sourceMappingURL=grounded_query.smoke.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"grounded_query.smoke.d.ts","sourceRoot":"","sources":["../../../../src/benchmarks/gaia-tools/grounded_query.smoke.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG"}