@claude-flow/cli 3.11.0 → 3.12.0

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 (154) 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 +11 -9
  46. package/dist/src/benchmarks/capability-tasks.d.ts +0 -126
  47. package/dist/src/benchmarks/capability-tasks.d.ts.map +0 -1
  48. package/dist/src/benchmarks/capability-tasks.js +0 -147
  49. package/dist/src/benchmarks/capability-tasks.js.map +0 -1
  50. package/dist/src/benchmarks/gaia-agent-contrastive.d.ts +0 -53
  51. package/dist/src/benchmarks/gaia-agent-contrastive.d.ts.map +0 -1
  52. package/dist/src/benchmarks/gaia-agent-contrastive.js +0 -177
  53. package/dist/src/benchmarks/gaia-agent-contrastive.js.map +0 -1
  54. package/dist/src/benchmarks/gaia-agent-gemini.d.ts +0 -51
  55. package/dist/src/benchmarks/gaia-agent-gemini.d.ts.map +0 -1
  56. package/dist/src/benchmarks/gaia-agent-gemini.js +0 -352
  57. package/dist/src/benchmarks/gaia-agent-gemini.js.map +0 -1
  58. package/dist/src/benchmarks/gaia-claude-p.d.ts +0 -105
  59. package/dist/src/benchmarks/gaia-claude-p.d.ts.map +0 -1
  60. package/dist/src/benchmarks/gaia-claude-p.js +0 -269
  61. package/dist/src/benchmarks/gaia-claude-p.js.map +0 -1
  62. package/dist/src/benchmarks/gaia-claude-p.smoke.d.ts +0 -20
  63. package/dist/src/benchmarks/gaia-claude-p.smoke.d.ts.map +0 -1
  64. package/dist/src/benchmarks/gaia-claude-p.smoke.js +0 -168
  65. package/dist/src/benchmarks/gaia-claude-p.smoke.js.map +0 -1
  66. package/dist/src/benchmarks/gaia-codeagent-runner.py +0 -556
  67. package/dist/src/benchmarks/gaia-codeagent.d.ts +0 -129
  68. package/dist/src/benchmarks/gaia-codeagent.d.ts.map +0 -1
  69. package/dist/src/benchmarks/gaia-codeagent.js +0 -590
  70. package/dist/src/benchmarks/gaia-codeagent.js.map +0 -1
  71. package/dist/src/benchmarks/gaia-codeagent.smoke.d.ts +0 -33
  72. package/dist/src/benchmarks/gaia-codeagent.smoke.d.ts.map +0 -1
  73. package/dist/src/benchmarks/gaia-codeagent.smoke.js +0 -241
  74. package/dist/src/benchmarks/gaia-codeagent.smoke.js.map +0 -1
  75. package/dist/src/benchmarks/gaia-dag-pilot.d.ts +0 -22
  76. package/dist/src/benchmarks/gaia-dag-pilot.d.ts.map +0 -1
  77. package/dist/src/benchmarks/gaia-dag-pilot.js +0 -158
  78. package/dist/src/benchmarks/gaia-dag-pilot.js.map +0 -1
  79. package/dist/src/benchmarks/gaia-dag.d.ts +0 -110
  80. package/dist/src/benchmarks/gaia-dag.d.ts.map +0 -1
  81. package/dist/src/benchmarks/gaia-dag.js +0 -658
  82. package/dist/src/benchmarks/gaia-dag.js.map +0 -1
  83. package/dist/src/benchmarks/gaia-dag.smoke.d.ts +0 -21
  84. package/dist/src/benchmarks/gaia-dag.smoke.d.ts.map +0 -1
  85. package/dist/src/benchmarks/gaia-dag.smoke.js +0 -290
  86. package/dist/src/benchmarks/gaia-dag.smoke.js.map +0 -1
  87. package/dist/src/benchmarks/gaia-ensemble-pilot.d.ts +0 -17
  88. package/dist/src/benchmarks/gaia-ensemble-pilot.d.ts.map +0 -1
  89. package/dist/src/benchmarks/gaia-ensemble-pilot.js +0 -106
  90. package/dist/src/benchmarks/gaia-ensemble-pilot.js.map +0 -1
  91. package/dist/src/benchmarks/gaia-ensemble.d.ts +0 -103
  92. package/dist/src/benchmarks/gaia-ensemble.d.ts.map +0 -1
  93. package/dist/src/benchmarks/gaia-ensemble.js +0 -462
  94. package/dist/src/benchmarks/gaia-ensemble.js.map +0 -1
  95. package/dist/src/benchmarks/gaia-gemini-pilot.d.ts +0 -17
  96. package/dist/src/benchmarks/gaia-gemini-pilot.d.ts.map +0 -1
  97. package/dist/src/benchmarks/gaia-gemini-pilot.js +0 -168
  98. package/dist/src/benchmarks/gaia-gemini-pilot.js.map +0 -1
  99. package/dist/src/benchmarks/gaia-mode-router.d.ts +0 -67
  100. package/dist/src/benchmarks/gaia-mode-router.d.ts.map +0 -1
  101. package/dist/src/benchmarks/gaia-mode-router.js +0 -126
  102. package/dist/src/benchmarks/gaia-mode-router.js.map +0 -1
  103. package/dist/src/benchmarks/gaia-mode-router.smoke.d.ts +0 -15
  104. package/dist/src/benchmarks/gaia-mode-router.smoke.d.ts.map +0 -1
  105. package/dist/src/benchmarks/gaia-mode-router.smoke.js +0 -131
  106. package/dist/src/benchmarks/gaia-mode-router.smoke.js.map +0 -1
  107. package/dist/src/benchmarks/gaia-tools/grounded_query.smoke.d.ts +0 -24
  108. package/dist/src/benchmarks/gaia-tools/grounded_query.smoke.d.ts.map +0 -1
  109. package/dist/src/benchmarks/gaia-tools/grounded_query.smoke.js +0 -276
  110. package/dist/src/benchmarks/gaia-tools/grounded_query.smoke.js.map +0 -1
  111. package/dist/src/benchmarks/gaia-tools/image_describe.d.ts +0 -45
  112. package/dist/src/benchmarks/gaia-tools/image_describe.d.ts.map +0 -1
  113. package/dist/src/benchmarks/gaia-tools/image_describe.js +0 -222
  114. package/dist/src/benchmarks/gaia-tools/image_describe.js.map +0 -1
  115. package/dist/src/benchmarks/gaia-tools/image_describe.smoke.d.ts +0 -24
  116. package/dist/src/benchmarks/gaia-tools/image_describe.smoke.d.ts.map +0 -1
  117. package/dist/src/benchmarks/gaia-tools/image_describe.smoke.js +0 -169
  118. package/dist/src/benchmarks/gaia-tools/image_describe.smoke.js.map +0 -1
  119. package/dist/src/benchmarks/gaia-tools/pdf_read.d.ts +0 -27
  120. package/dist/src/benchmarks/gaia-tools/pdf_read.d.ts.map +0 -1
  121. package/dist/src/benchmarks/gaia-tools/pdf_read.js +0 -226
  122. package/dist/src/benchmarks/gaia-tools/pdf_read.js.map +0 -1
  123. package/dist/src/benchmarks/gaia-tools/python_exec.d.ts +0 -31
  124. package/dist/src/benchmarks/gaia-tools/python_exec.d.ts.map +0 -1
  125. package/dist/src/benchmarks/gaia-tools/python_exec.js +0 -94
  126. package/dist/src/benchmarks/gaia-tools/python_exec.js.map +0 -1
  127. package/dist/src/benchmarks/gaia-tools/python_exec.smoke.d.ts +0 -13
  128. package/dist/src/benchmarks/gaia-tools/python_exec.smoke.d.ts.map +0 -1
  129. package/dist/src/benchmarks/gaia-tools/python_exec.smoke.js +0 -98
  130. package/dist/src/benchmarks/gaia-tools/python_exec.smoke.js.map +0 -1
  131. package/dist/src/benchmarks/gaia-tools/visit_webpage.d.ts +0 -52
  132. package/dist/src/benchmarks/gaia-tools/visit_webpage.d.ts.map +0 -1
  133. package/dist/src/benchmarks/gaia-tools/visit_webpage.js +0 -304
  134. package/dist/src/benchmarks/gaia-tools/visit_webpage.js.map +0 -1
  135. package/dist/src/benchmarks/gaia-tools/web_browse.d.ts +0 -61
  136. package/dist/src/benchmarks/gaia-tools/web_browse.d.ts.map +0 -1
  137. package/dist/src/benchmarks/gaia-tools/web_browse.js +0 -217
  138. package/dist/src/benchmarks/gaia-tools/web_browse.js.map +0 -1
  139. package/dist/src/benchmarks/gaia-tools/web_browse.smoke.d.ts +0 -26
  140. package/dist/src/benchmarks/gaia-tools/web_browse.smoke.d.ts.map +0 -1
  141. package/dist/src/benchmarks/gaia-tools/web_browse.smoke.js +0 -152
  142. package/dist/src/benchmarks/gaia-tools/web_browse.smoke.js.map +0 -1
  143. package/dist/src/benchmarks/gaia-tools/web_search.smoke.d.ts +0 -24
  144. package/dist/src/benchmarks/gaia-tools/web_search.smoke.d.ts.map +0 -1
  145. package/dist/src/benchmarks/gaia-tools/web_search.smoke.js +0 -311
  146. package/dist/src/benchmarks/gaia-tools/web_search.smoke.js.map +0 -1
  147. package/dist/src/benchmarks/gaia-visit-webpage.smoke.d.ts +0 -25
  148. package/dist/src/benchmarks/gaia-visit-webpage.smoke.d.ts.map +0 -1
  149. package/dist/src/benchmarks/gaia-visit-webpage.smoke.js +0 -304
  150. package/dist/src/benchmarks/gaia-visit-webpage.smoke.js.map +0 -1
  151. package/dist/src/commands/performance-capability.d.ts +0 -30
  152. package/dist/src/commands/performance-capability.d.ts.map +0 -1
  153. package/dist/src/commands/performance-capability.js +0 -349
  154. package/dist/src/commands/performance-capability.js.map +0 -1
@@ -1,311 +0,0 @@
1
- /**
2
- * Smoke tests for web_search.ts — ADR-135
3
- *
4
- * All tests are mock-based using webSearchTestHooks for ESM-safe injection.
5
- * NO live API calls are made.
6
- *
7
- * Coverage:
8
- * 1. resolveGoogleCustomSearchCredentials — env var path
9
- * 2. resolveGoogleCustomSearchCredentials — returns null when creds missing
10
- * 3. searchGoogleCustomSearch — parses items correctly (unit parse test)
11
- * 4. searchGoogleCustomSearch — throws on API error object in response
12
- * 5. searchWikipedia — strips HTML from snippet
13
- * 6. WebSearchTool.execute — Google creds present → Google used first
14
- * 7. WebSearchTool.execute — Google creds absent → Wikipedia used
15
- * 8. WebSearchTool.execute — Google throws → falls back to Wikipedia
16
- * 9. WebSearchTool.execute — Google 0 results → falls back to Wikipedia
17
- * 10. WebSearchTool.execute — Google + Wikipedia both fail → DDG used
18
- * 11. WebSearchTool.execute — rejects empty query
19
- * 12. WebSearchTool.execute — max_results capped at 10
20
- *
21
- * Run with: npx tsx web_search.smoke.ts (from gaia-tools directory)
22
- */
23
- import * as assert from 'node:assert/strict';
24
- import { WebSearchTool, webSearchTestHooks, resolveGoogleCustomSearchCredentials, } from './web_search.js';
25
- // ---------------------------------------------------------------------------
26
- // Minimal test harness (no vitest/jest dependency)
27
- // ---------------------------------------------------------------------------
28
- let passed = 0;
29
- let failed = 0;
30
- async function test(name, fn) {
31
- try {
32
- await fn();
33
- console.log(` PASS ${name}`);
34
- passed++;
35
- }
36
- catch (err) {
37
- console.error(` FAIL ${name}`);
38
- console.error(` ${err.message}`);
39
- failed++;
40
- }
41
- }
42
- /** Clear all test hooks after each test. */
43
- function clearHooks() {
44
- delete webSearchTestHooks.credentialResolver;
45
- delete webSearchTestHooks.googleSearch;
46
- delete webSearchTestHooks.wikipediaSearch;
47
- delete webSearchTestHooks.ddgFetch;
48
- }
49
- // Stub results
50
- const GOOGLE_RESULT = { title: 'Google Result', url: 'https://g.com/r', snippet: 'from google' };
51
- const WIKI_RESULT = { title: 'Wiki Result', url: 'https://en.wikipedia.org/wiki/Test', snippet: 'from wikipedia' };
52
- const DDG_HTML = `
53
- <a class="result__a" href="https://example.com/d">DDG Result</a>
54
- <a class="result__snippet">DDG snippet</a>
55
- `;
56
- // ---------------------------------------------------------------------------
57
- // Test suite
58
- // ---------------------------------------------------------------------------
59
- async function runSuite() {
60
- console.log('\nweb_search.smoke.ts — ADR-135 Google CSE backend\n');
61
- // -------------------------------------------------------------------------
62
- // 1. Env var credential resolution — happy path
63
- // -------------------------------------------------------------------------
64
- await test('resolveGoogleCustomSearchCredentials: returns creds from env vars', async () => {
65
- const savedKey = process.env['GOOGLE_CUSTOM_SEARCH_API_KEY'];
66
- const savedCx = process.env['GOOGLE_CUSTOM_SEARCH_CX'];
67
- process.env['GOOGLE_CUSTOM_SEARCH_API_KEY'] = 'test-api-key';
68
- process.env['GOOGLE_CUSTOM_SEARCH_CX'] = 'test-cx-id';
69
- try {
70
- const creds = await resolveGoogleCustomSearchCredentials();
71
- assert.ok(creds !== null, 'expected creds, got null');
72
- assert.equal(creds.apiKey, 'test-api-key');
73
- assert.equal(creds.cx, 'test-cx-id');
74
- }
75
- finally {
76
- if (savedKey === undefined)
77
- delete process.env['GOOGLE_CUSTOM_SEARCH_API_KEY'];
78
- else
79
- process.env['GOOGLE_CUSTOM_SEARCH_API_KEY'] = savedKey;
80
- if (savedCx === undefined)
81
- delete process.env['GOOGLE_CUSTOM_SEARCH_CX'];
82
- else
83
- process.env['GOOGLE_CUSTOM_SEARCH_CX'] = savedCx;
84
- }
85
- });
86
- // -------------------------------------------------------------------------
87
- // 2. Missing env vars → null (gcloud will also fail in test env)
88
- // -------------------------------------------------------------------------
89
- await test('resolveGoogleCustomSearchCredentials: returns null when env vars absent', async () => {
90
- const savedKey = process.env['GOOGLE_CUSTOM_SEARCH_API_KEY'];
91
- const savedCx = process.env['GOOGLE_CUSTOM_SEARCH_CX'];
92
- delete process.env['GOOGLE_CUSTOM_SEARCH_API_KEY'];
93
- delete process.env['GOOGLE_CUSTOM_SEARCH_CX'];
94
- try {
95
- const creds = await resolveGoogleCustomSearchCredentials();
96
- assert.equal(creds, null, `expected null, got ${JSON.stringify(creds)}`);
97
- }
98
- finally {
99
- if (savedKey !== undefined)
100
- process.env['GOOGLE_CUSTOM_SEARCH_API_KEY'] = savedKey;
101
- if (savedCx !== undefined)
102
- process.env['GOOGLE_CUSTOM_SEARCH_CX'] = savedCx;
103
- }
104
- });
105
- // -------------------------------------------------------------------------
106
- // 3. searchGoogleCustomSearch — verify it maps items correctly
107
- // (We test the exported function directly with a hook that injects data
108
- // through the module boundary without live HTTP)
109
- // -------------------------------------------------------------------------
110
- await test('searchGoogleCustomSearch: maps items from parsed JSON', async () => {
111
- // We test the function via webSearchTestHooks to verify the shape contract
112
- // without making live calls. The actual searchGoogleCustomSearch is tested
113
- // indirectly via test 6 (tool.execute with mocked googleSearch hook).
114
- // Here we verify the type signature and basic identity mapping.
115
- webSearchTestHooks.credentialResolver = async () => ({ apiKey: 'k', cx: 'c' });
116
- webSearchTestHooks.googleSearch = async (_q, _creds, _n, _t) => [GOOGLE_RESULT];
117
- webSearchTestHooks.wikipediaSearch = async () => [];
118
- webSearchTestHooks.ddgFetch = async () => DDG_HTML;
119
- const tool = new WebSearchTool();
120
- try {
121
- const output = await tool.execute({ query: 'test google parse' });
122
- assert.ok(output.includes('google-cse'), `expected google-cse backend, got: ${output}`);
123
- assert.ok(output.includes('Google Result'));
124
- assert.ok(output.includes('from google'));
125
- }
126
- finally {
127
- clearHooks();
128
- }
129
- });
130
- // -------------------------------------------------------------------------
131
- // 4. searchGoogleCustomSearch — throws on API error → fallback fires
132
- // -------------------------------------------------------------------------
133
- await test('searchGoogleCustomSearch: error in backend causes fallback to Wikipedia', async () => {
134
- webSearchTestHooks.credentialResolver = async () => ({ apiKey: 'k', cx: 'c' });
135
- webSearchTestHooks.googleSearch = async () => {
136
- throw new Error('Google CSE API error 403: Forbidden');
137
- };
138
- webSearchTestHooks.wikipediaSearch = async () => [WIKI_RESULT];
139
- webSearchTestHooks.ddgFetch = async () => DDG_HTML;
140
- const tool = new WebSearchTool();
141
- try {
142
- const output = await tool.execute({ query: 'test error fallback' });
143
- assert.ok(output.includes('wikipedia'), `expected wikipedia fallback, got: ${output}`);
144
- assert.ok(output.includes('Wiki Result'));
145
- }
146
- finally {
147
- clearHooks();
148
- }
149
- });
150
- // -------------------------------------------------------------------------
151
- // 5. searchWikipedia — HTML stripping in snippet
152
- // -------------------------------------------------------------------------
153
- await test('searchWikipedia: HTML tags stripped from snippets in output', async () => {
154
- // Inject Wikipedia results with raw HTML in snippet
155
- webSearchTestHooks.credentialResolver = async () => null; // no Google
156
- webSearchTestHooks.wikipediaSearch = async () => [
157
- {
158
- title: 'Eiffel Tower',
159
- url: 'https://en.wikipedia.org/wiki/Eiffel_Tower',
160
- snippet: 'Famous <span class="searchmatch">landmark</span> in Paris', // pre-stripped by searchWikipedia
161
- },
162
- ];
163
- webSearchTestHooks.ddgFetch = async () => '';
164
- const tool = new WebSearchTool();
165
- try {
166
- const output = await tool.execute({ query: 'eiffel tower' });
167
- assert.ok(output.includes('wikipedia'), `expected wikipedia backend, got: ${output}`);
168
- // The snippet from our stub is already stripped; verify it appears intact
169
- assert.ok(output.includes('Famous'), 'snippet content missing from output');
170
- }
171
- finally {
172
- clearHooks();
173
- }
174
- });
175
- // -------------------------------------------------------------------------
176
- // 6. Google creds present → Google used first
177
- // -------------------------------------------------------------------------
178
- await test('WebSearchTool.execute: uses Google when creds available', async () => {
179
- webSearchTestHooks.credentialResolver = async () => ({ apiKey: 'k', cx: 'cx' });
180
- webSearchTestHooks.googleSearch = async () => [GOOGLE_RESULT];
181
- webSearchTestHooks.wikipediaSearch = async () => [WIKI_RESULT]; // should NOT be called
182
- webSearchTestHooks.ddgFetch = async () => DDG_HTML;
183
- const tool = new WebSearchTool();
184
- try {
185
- const output = await tool.execute({ query: 'test google primary' });
186
- assert.ok(output.includes('google-cse'), `expected google-cse in output, got: ${output}`);
187
- assert.ok(output.includes('Google Result'), 'Google result not in output');
188
- }
189
- finally {
190
- clearHooks();
191
- }
192
- });
193
- // -------------------------------------------------------------------------
194
- // 7. Google creds absent → Wikipedia used
195
- // -------------------------------------------------------------------------
196
- await test('WebSearchTool.execute: falls back to Wikipedia when Google creds absent', async () => {
197
- webSearchTestHooks.credentialResolver = async () => null;
198
- webSearchTestHooks.googleSearch = async () => {
199
- throw new Error('should not be called');
200
- };
201
- webSearchTestHooks.wikipediaSearch = async () => [WIKI_RESULT];
202
- webSearchTestHooks.ddgFetch = async () => DDG_HTML;
203
- const tool = new WebSearchTool();
204
- try {
205
- const output = await tool.execute({ query: 'test no creds' });
206
- assert.ok(output.includes('wikipedia'), `expected wikipedia backend, got: ${output}`);
207
- assert.ok(output.includes('Wiki Result'), 'Wiki result not in output');
208
- }
209
- finally {
210
- clearHooks();
211
- }
212
- });
213
- // -------------------------------------------------------------------------
214
- // 8. Google throws → Wikipedia fallback
215
- // -------------------------------------------------------------------------
216
- await test('WebSearchTool.execute: falls back to Wikipedia when Google throws', async () => {
217
- webSearchTestHooks.credentialResolver = async () => ({ apiKey: 'k', cx: 'cx' });
218
- webSearchTestHooks.googleSearch = async () => {
219
- throw new Error('HTTP 403: Forbidden');
220
- };
221
- webSearchTestHooks.wikipediaSearch = async () => [WIKI_RESULT];
222
- webSearchTestHooks.ddgFetch = async () => DDG_HTML;
223
- const tool = new WebSearchTool();
224
- try {
225
- const output = await tool.execute({ query: 'test google throws' });
226
- assert.ok(output.includes('wikipedia'), `expected wikipedia, got: ${output}`);
227
- }
228
- finally {
229
- clearHooks();
230
- }
231
- });
232
- // -------------------------------------------------------------------------
233
- // 9. Google returns 0 results → Wikipedia fallback
234
- // -------------------------------------------------------------------------
235
- await test('WebSearchTool.execute: falls back to Wikipedia when Google returns 0 results', async () => {
236
- webSearchTestHooks.credentialResolver = async () => ({ apiKey: 'k', cx: 'cx' });
237
- webSearchTestHooks.googleSearch = async () => []; // 0 results
238
- webSearchTestHooks.wikipediaSearch = async () => [WIKI_RESULT];
239
- webSearchTestHooks.ddgFetch = async () => DDG_HTML;
240
- const tool = new WebSearchTool();
241
- try {
242
- const output = await tool.execute({ query: 'test google zero results' });
243
- assert.ok(output.includes('wikipedia'), `expected wikipedia, got: ${output}`);
244
- }
245
- finally {
246
- clearHooks();
247
- }
248
- });
249
- // -------------------------------------------------------------------------
250
- // 10. Google + Wikipedia both fail → DDG used
251
- // -------------------------------------------------------------------------
252
- await test('WebSearchTool.execute: falls back to DDG when Google + Wikipedia both fail', async () => {
253
- webSearchTestHooks.credentialResolver = async () => ({ apiKey: 'k', cx: 'cx' });
254
- webSearchTestHooks.googleSearch = async () => {
255
- throw new Error('Network failure');
256
- };
257
- webSearchTestHooks.wikipediaSearch = async () => {
258
- throw new Error('Network failure');
259
- };
260
- // Return DDG-parseable HTML with a direct URL (no //duckduckgo.com redirect)
261
- webSearchTestHooks.ddgFetch = async () => '<a class="result__a" href="https://example.com/ddg">DDG Result</a>' +
262
- '<a class="result__snippet">DDG snippet</a>';
263
- const tool = new WebSearchTool();
264
- try {
265
- const output = await tool.execute({ query: 'test all fail ddg' });
266
- assert.ok(output.includes('ddg'), `expected ddg backend, got: ${output}`);
267
- }
268
- finally {
269
- clearHooks();
270
- }
271
- });
272
- // -------------------------------------------------------------------------
273
- // 11. Empty query rejected
274
- // -------------------------------------------------------------------------
275
- await test('WebSearchTool.execute: rejects empty query', async () => {
276
- const tool = new WebSearchTool();
277
- await assert.rejects(() => tool.execute({ query: '' }), /query.*required/);
278
- });
279
- // -------------------------------------------------------------------------
280
- // 12. max_results capped at 10
281
- // -------------------------------------------------------------------------
282
- await test('WebSearchTool.execute: max_results is capped at 10 and passed to backend', async () => {
283
- let capturedMaxResults = 0;
284
- webSearchTestHooks.credentialResolver = async () => null;
285
- webSearchTestHooks.wikipediaSearch = async (_q, n, _t) => {
286
- capturedMaxResults = n;
287
- return [WIKI_RESULT];
288
- };
289
- webSearchTestHooks.ddgFetch = async () => '';
290
- const tool = new WebSearchTool();
291
- try {
292
- await tool.execute({ query: 'test max results', max_results: 99 });
293
- assert.equal(capturedMaxResults, 10, `expected maxResults=10, got ${capturedMaxResults}`);
294
- }
295
- finally {
296
- clearHooks();
297
- }
298
- });
299
- // ---------------------------------------------------------------------------
300
- // Summary
301
- // ---------------------------------------------------------------------------
302
- console.log(`\n${passed} passed, ${failed} failed\n`);
303
- if (failed > 0) {
304
- process.exit(1);
305
- }
306
- }
307
- runSuite().catch((err) => {
308
- console.error('Smoke test runner error:', err);
309
- process.exit(1);
310
- });
311
- //# sourceMappingURL=web_search.smoke.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"web_search.smoke.js","sourceRoot":"","sources":["../../../../src/benchmarks/gaia-tools/web_search.smoke.ts"],"names":[],"mappings":"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"}
@@ -1,25 +0,0 @@
1
- /**
2
- * Smoke tests for visit_webpage — iter-57
3
- *
4
- * Tests the upgraded visit_webpage implementation WITHOUT making live HTTP calls.
5
- * All fixtures use visitWebpageTestHooks.fetchHtml to inject canned HTML.
6
- *
7
- * Test fixtures:
8
- * 1. Plain HTML article — expects >500 chars, non-empty title
9
- * 2. Wikipedia-style page — expects infobox text extracted, links present
10
- * 3. JS-heavy minimal shell — falls back to regex, still returns something
11
- * 4. max_chars truncation — capped at 500 chars via parameter
12
- * 5. PDF URL (rejection) — graceful error message, not a throw to agent
13
- * 6. Invalid URL — validation rejects before fetch
14
- * 7. Link extraction — up to 30 links extracted from anchor tags
15
- * 8. extractTextFromHtml — direct test of the regex fallback path
16
- *
17
- * Run (after build):
18
- * node dist/src/benchmarks/gaia-visit-webpage.smoke.js
19
- *
20
- * Exit 0 on all pass, 1 on any failure.
21
- *
22
- * Refs: ADR-138, iter-57, #2156
23
- */
24
- export {};
25
- //# sourceMappingURL=gaia-visit-webpage.smoke.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"gaia-visit-webpage.smoke.d.ts","sourceRoot":"","sources":["../../../src/benchmarks/gaia-visit-webpage.smoke.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAIH,OAAO,EAAE,CAAC"}