@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.
- package/dist/src/commands/doctor.d.ts.map +1 -1
- package/dist/src/commands/doctor.js +175 -1
- package/dist/src/commands/doctor.js.map +1 -1
- package/dist/src/commands/eject.d.ts +33 -0
- package/dist/src/commands/eject.d.ts.map +1 -0
- package/dist/src/commands/eject.js +195 -0
- package/dist/src/commands/eject.js.map +1 -0
- package/dist/src/commands/hooks.d.ts.map +1 -1
- package/dist/src/commands/hooks.js +2 -1
- package/dist/src/commands/hooks.js.map +1 -1
- package/dist/src/commands/index.d.ts.map +1 -1
- package/dist/src/commands/index.js +4 -0
- package/dist/src/commands/index.js.map +1 -1
- package/dist/src/commands/init.d.ts.map +1 -1
- package/dist/src/commands/init.js +3 -0
- package/dist/src/commands/init.js.map +1 -1
- package/dist/src/commands/metaharness.d.ts +39 -0
- package/dist/src/commands/metaharness.d.ts.map +1 -0
- package/dist/src/commands/metaharness.js +194 -0
- package/dist/src/commands/metaharness.js.map +1 -0
- package/dist/src/mcp-client.d.ts.map +1 -1
- package/dist/src/mcp-client.js +4 -0
- package/dist/src/mcp-client.js.map +1 -1
- package/dist/src/mcp-tools/index.d.ts +1 -0
- package/dist/src/mcp-tools/index.d.ts.map +1 -1
- package/dist/src/mcp-tools/index.js +2 -0
- package/dist/src/mcp-tools/index.js.map +1 -1
- package/dist/src/mcp-tools/metaharness-tools.d.ts +31 -0
- package/dist/src/mcp-tools/metaharness-tools.d.ts.map +1 -0
- package/dist/src/mcp-tools/metaharness-tools.js +372 -0
- package/dist/src/mcp-tools/metaharness-tools.js.map +1 -0
- package/dist/src/plugins/store/discovery.d.ts.map +1 -1
- package/dist/src/plugins/store/discovery.js +3 -0
- package/dist/src/plugins/store/discovery.js.map +1 -1
- package/dist/src/plugins/store/types.d.ts +6 -1
- package/dist/src/plugins/store/types.d.ts.map +1 -1
- package/dist/src/ruvector/model-router.d.ts.map +1 -1
- package/dist/src/ruvector/model-router.js +37 -0
- package/dist/src/ruvector/model-router.js.map +1 -1
- package/dist/src/ruvector/router-parallel-recorder.d.ts +127 -0
- package/dist/src/ruvector/router-parallel-recorder.d.ts.map +1 -0
- package/dist/src/ruvector/router-parallel-recorder.js +183 -0
- package/dist/src/ruvector/router-parallel-recorder.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +11 -9
- package/dist/src/benchmarks/capability-tasks.d.ts +0 -126
- package/dist/src/benchmarks/capability-tasks.d.ts.map +0 -1
- package/dist/src/benchmarks/capability-tasks.js +0 -147
- package/dist/src/benchmarks/capability-tasks.js.map +0 -1
- package/dist/src/benchmarks/gaia-agent-contrastive.d.ts +0 -53
- package/dist/src/benchmarks/gaia-agent-contrastive.d.ts.map +0 -1
- package/dist/src/benchmarks/gaia-agent-contrastive.js +0 -177
- package/dist/src/benchmarks/gaia-agent-contrastive.js.map +0 -1
- package/dist/src/benchmarks/gaia-agent-gemini.d.ts +0 -51
- package/dist/src/benchmarks/gaia-agent-gemini.d.ts.map +0 -1
- package/dist/src/benchmarks/gaia-agent-gemini.js +0 -352
- package/dist/src/benchmarks/gaia-agent-gemini.js.map +0 -1
- package/dist/src/benchmarks/gaia-claude-p.d.ts +0 -105
- package/dist/src/benchmarks/gaia-claude-p.d.ts.map +0 -1
- package/dist/src/benchmarks/gaia-claude-p.js +0 -269
- package/dist/src/benchmarks/gaia-claude-p.js.map +0 -1
- package/dist/src/benchmarks/gaia-claude-p.smoke.d.ts +0 -20
- package/dist/src/benchmarks/gaia-claude-p.smoke.d.ts.map +0 -1
- package/dist/src/benchmarks/gaia-claude-p.smoke.js +0 -168
- package/dist/src/benchmarks/gaia-claude-p.smoke.js.map +0 -1
- package/dist/src/benchmarks/gaia-codeagent-runner.py +0 -556
- package/dist/src/benchmarks/gaia-codeagent.d.ts +0 -129
- package/dist/src/benchmarks/gaia-codeagent.d.ts.map +0 -1
- package/dist/src/benchmarks/gaia-codeagent.js +0 -590
- package/dist/src/benchmarks/gaia-codeagent.js.map +0 -1
- package/dist/src/benchmarks/gaia-codeagent.smoke.d.ts +0 -33
- package/dist/src/benchmarks/gaia-codeagent.smoke.d.ts.map +0 -1
- package/dist/src/benchmarks/gaia-codeagent.smoke.js +0 -241
- package/dist/src/benchmarks/gaia-codeagent.smoke.js.map +0 -1
- package/dist/src/benchmarks/gaia-dag-pilot.d.ts +0 -22
- package/dist/src/benchmarks/gaia-dag-pilot.d.ts.map +0 -1
- package/dist/src/benchmarks/gaia-dag-pilot.js +0 -158
- package/dist/src/benchmarks/gaia-dag-pilot.js.map +0 -1
- package/dist/src/benchmarks/gaia-dag.d.ts +0 -110
- package/dist/src/benchmarks/gaia-dag.d.ts.map +0 -1
- package/dist/src/benchmarks/gaia-dag.js +0 -658
- package/dist/src/benchmarks/gaia-dag.js.map +0 -1
- package/dist/src/benchmarks/gaia-dag.smoke.d.ts +0 -21
- package/dist/src/benchmarks/gaia-dag.smoke.d.ts.map +0 -1
- package/dist/src/benchmarks/gaia-dag.smoke.js +0 -290
- package/dist/src/benchmarks/gaia-dag.smoke.js.map +0 -1
- package/dist/src/benchmarks/gaia-ensemble-pilot.d.ts +0 -17
- package/dist/src/benchmarks/gaia-ensemble-pilot.d.ts.map +0 -1
- package/dist/src/benchmarks/gaia-ensemble-pilot.js +0 -106
- package/dist/src/benchmarks/gaia-ensemble-pilot.js.map +0 -1
- package/dist/src/benchmarks/gaia-ensemble.d.ts +0 -103
- package/dist/src/benchmarks/gaia-ensemble.d.ts.map +0 -1
- package/dist/src/benchmarks/gaia-ensemble.js +0 -462
- package/dist/src/benchmarks/gaia-ensemble.js.map +0 -1
- package/dist/src/benchmarks/gaia-gemini-pilot.d.ts +0 -17
- package/dist/src/benchmarks/gaia-gemini-pilot.d.ts.map +0 -1
- package/dist/src/benchmarks/gaia-gemini-pilot.js +0 -168
- package/dist/src/benchmarks/gaia-gemini-pilot.js.map +0 -1
- package/dist/src/benchmarks/gaia-mode-router.d.ts +0 -67
- package/dist/src/benchmarks/gaia-mode-router.d.ts.map +0 -1
- package/dist/src/benchmarks/gaia-mode-router.js +0 -126
- package/dist/src/benchmarks/gaia-mode-router.js.map +0 -1
- package/dist/src/benchmarks/gaia-mode-router.smoke.d.ts +0 -15
- package/dist/src/benchmarks/gaia-mode-router.smoke.d.ts.map +0 -1
- package/dist/src/benchmarks/gaia-mode-router.smoke.js +0 -131
- package/dist/src/benchmarks/gaia-mode-router.smoke.js.map +0 -1
- package/dist/src/benchmarks/gaia-tools/grounded_query.smoke.d.ts +0 -24
- package/dist/src/benchmarks/gaia-tools/grounded_query.smoke.d.ts.map +0 -1
- package/dist/src/benchmarks/gaia-tools/grounded_query.smoke.js +0 -276
- package/dist/src/benchmarks/gaia-tools/grounded_query.smoke.js.map +0 -1
- package/dist/src/benchmarks/gaia-tools/image_describe.d.ts +0 -45
- package/dist/src/benchmarks/gaia-tools/image_describe.d.ts.map +0 -1
- package/dist/src/benchmarks/gaia-tools/image_describe.js +0 -222
- package/dist/src/benchmarks/gaia-tools/image_describe.js.map +0 -1
- package/dist/src/benchmarks/gaia-tools/image_describe.smoke.d.ts +0 -24
- package/dist/src/benchmarks/gaia-tools/image_describe.smoke.d.ts.map +0 -1
- package/dist/src/benchmarks/gaia-tools/image_describe.smoke.js +0 -169
- package/dist/src/benchmarks/gaia-tools/image_describe.smoke.js.map +0 -1
- package/dist/src/benchmarks/gaia-tools/pdf_read.d.ts +0 -27
- package/dist/src/benchmarks/gaia-tools/pdf_read.d.ts.map +0 -1
- package/dist/src/benchmarks/gaia-tools/pdf_read.js +0 -226
- package/dist/src/benchmarks/gaia-tools/pdf_read.js.map +0 -1
- package/dist/src/benchmarks/gaia-tools/python_exec.d.ts +0 -31
- package/dist/src/benchmarks/gaia-tools/python_exec.d.ts.map +0 -1
- package/dist/src/benchmarks/gaia-tools/python_exec.js +0 -94
- package/dist/src/benchmarks/gaia-tools/python_exec.js.map +0 -1
- package/dist/src/benchmarks/gaia-tools/python_exec.smoke.d.ts +0 -13
- package/dist/src/benchmarks/gaia-tools/python_exec.smoke.d.ts.map +0 -1
- package/dist/src/benchmarks/gaia-tools/python_exec.smoke.js +0 -98
- package/dist/src/benchmarks/gaia-tools/python_exec.smoke.js.map +0 -1
- package/dist/src/benchmarks/gaia-tools/visit_webpage.d.ts +0 -52
- package/dist/src/benchmarks/gaia-tools/visit_webpage.d.ts.map +0 -1
- package/dist/src/benchmarks/gaia-tools/visit_webpage.js +0 -304
- package/dist/src/benchmarks/gaia-tools/visit_webpage.js.map +0 -1
- package/dist/src/benchmarks/gaia-tools/web_browse.d.ts +0 -61
- package/dist/src/benchmarks/gaia-tools/web_browse.d.ts.map +0 -1
- package/dist/src/benchmarks/gaia-tools/web_browse.js +0 -217
- package/dist/src/benchmarks/gaia-tools/web_browse.js.map +0 -1
- package/dist/src/benchmarks/gaia-tools/web_browse.smoke.d.ts +0 -26
- package/dist/src/benchmarks/gaia-tools/web_browse.smoke.d.ts.map +0 -1
- package/dist/src/benchmarks/gaia-tools/web_browse.smoke.js +0 -152
- package/dist/src/benchmarks/gaia-tools/web_browse.smoke.js.map +0 -1
- package/dist/src/benchmarks/gaia-tools/web_search.smoke.d.ts +0 -24
- package/dist/src/benchmarks/gaia-tools/web_search.smoke.d.ts.map +0 -1
- package/dist/src/benchmarks/gaia-tools/web_search.smoke.js +0 -311
- package/dist/src/benchmarks/gaia-tools/web_search.smoke.js.map +0 -1
- package/dist/src/benchmarks/gaia-visit-webpage.smoke.d.ts +0 -25
- package/dist/src/benchmarks/gaia-visit-webpage.smoke.d.ts.map +0 -1
- package/dist/src/benchmarks/gaia-visit-webpage.smoke.js +0 -304
- package/dist/src/benchmarks/gaia-visit-webpage.smoke.js.map +0 -1
- package/dist/src/commands/performance-capability.d.ts +0 -30
- package/dist/src/commands/performance-capability.d.ts.map +0 -1
- package/dist/src/commands/performance-capability.js +0 -349
- 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"}
|