@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,217 +0,0 @@
1
- /**
2
- * GAIA Tool: web_browse — ADR-133-PR5
3
- *
4
- * Opens a URL in a headless Chromium browser via Playwright and extracts
5
- * page content (text, HTML, or screenshot). Covers the ~10-15pp of GAIA
6
- * Level-1 questions that require navigating dynamic JS pages, video pages
7
- * (YouTube, Vimeo), and paywalled/login-required content.
8
- *
9
- * ============================================================
10
- * PLAYWRIGHT DEPENDENCY — OPT-IN INSTALL
11
- * ============================================================
12
- * Playwright is NOT a hard runtime dep of @claude-flow/cli. It is loaded
13
- * lazily via a dynamic import so the package installs cleanly without it.
14
- *
15
- * To use web_browse, run once:
16
- * npm install playwright
17
- * npx playwright install chromium
18
- *
19
- * If Playwright is not installed, execute() returns a structured error
20
- * message that Claude can relay to the user rather than crashing.
21
- *
22
- * Install size: ~80 MB for the Playwright package + Chromium binary.
23
- * Add as a devDependency in benchmark-specific contexts to avoid bloating
24
- * the production bundle.
25
- *
26
- * ============================================================
27
- * RESOURCE CAPS
28
- * ============================================================
29
- * - Text/HTML extraction capped at 8 000 characters (prevents context-window
30
- * overflow; roughly 2 000 tokens).
31
- * - Default timeout: 30 seconds.
32
- * - Screenshots returned as base64-encoded PNG strings.
33
- * - Browser instance is always closed in a `finally` block.
34
- *
35
- * Refs: ADR-133, #2156
36
- */
37
- // ---------------------------------------------------------------------------
38
- // Constants
39
- // ---------------------------------------------------------------------------
40
- const DEFAULT_TIMEOUT_MS = 30_000;
41
- const MAX_CONTENT_CHARS = 8_000;
42
- /**
43
- * Attempt to load Playwright's `chromium` launch function.
44
- * Returns a missing-result (with install instructions) if Playwright is not
45
- * installed rather than throwing — callers return the reason string to Claude.
46
- */
47
- async function loadPlaywright() {
48
- try {
49
- // Dynamic import keeps Playwright out of the static dep graph.
50
- // The string is built at runtime to prevent TS from statically resolving
51
- // the module (which would fail with TS2307 when playwright is not installed).
52
- const pwModuleName = 'play' + 'wright';
53
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
54
- const pw = await import(/* @vite-ignore */ pwModuleName);
55
- return { ok: true, chromium: pw.chromium };
56
- }
57
- catch {
58
- return {
59
- ok: false,
60
- reason: 'Playwright is not installed. Install it with:\n' +
61
- ' npm install playwright\n' +
62
- ' npx playwright install chromium\n' +
63
- 'Then retry. web_browse requires Playwright to navigate dynamic pages.',
64
- };
65
- }
66
- }
67
- // ---------------------------------------------------------------------------
68
- // Core browse logic
69
- // ---------------------------------------------------------------------------
70
- async function browseUrl(input) {
71
- const extract = input.extract ?? 'text';
72
- const timeoutMs = Math.min(Math.max(1_000, Math.round((input.timeout_seconds ?? DEFAULT_TIMEOUT_MS / 1000) * 1000)), 120_000);
73
- const pw = await loadPlaywright();
74
- if (!pw.ok) {
75
- // Return as a structured result so the agent loop can forward the error
76
- // to Claude without crashing.
77
- return {
78
- content: `[web_browse error] ${pw.reason}`,
79
- final_url: input.url,
80
- status: 0,
81
- };
82
- }
83
- const browser = await pw.chromium.launch({ headless: true });
84
- try {
85
- const page = await browser.newPage();
86
- // Capture final HTTP status from the main-frame response.
87
- let responseStatus = 200;
88
- page.on('response', (resp) => {
89
- if (resp.url() === page.url() || resp.url() === input.url) {
90
- responseStatus = resp.status();
91
- }
92
- });
93
- await page.goto(input.url, {
94
- waitUntil: 'domcontentloaded',
95
- timeout: timeoutMs,
96
- });
97
- if (input.wait_for_selector) {
98
- await page.waitForSelector(input.wait_for_selector, { timeout: timeoutMs });
99
- }
100
- let rawContent;
101
- if (extract === 'screenshot') {
102
- const buf = await page.screenshot({ type: 'png', fullPage: false });
103
- rawContent = buf.toString('base64');
104
- }
105
- else if (extract === 'html') {
106
- rawContent = await page.content();
107
- }
108
- else {
109
- // Default: extract visible text
110
- // page.evaluate runs inside the browser context (Chromium's V8 runtime),
111
- // so `document` / `window` are available there. Cast to avoid the
112
- // TypeScript "lib does not include dom" error from the Node.js tsconfig.
113
- rawContent = await page.evaluate(() => {
114
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
115
- const doc = globalThis.document;
116
- if (!doc)
117
- return '';
118
- doc
119
- .querySelectorAll('script, style, noscript, [hidden], [aria-hidden="true"]')
120
- .forEach((el) => el.remove());
121
- return (doc.body?.innerText ?? doc.documentElement?.innerText ?? '').trim();
122
- });
123
- }
124
- const finalUrl = page.url();
125
- // Cap text/html at MAX_CONTENT_CHARS; screenshots are kept as-is (base64
126
- // of a 1280×720 PNG ≈ 300–800 KB — large but necessary for vision pass).
127
- let content = rawContent;
128
- let truncated = false;
129
- if (extract !== 'screenshot' && rawContent.length > MAX_CONTENT_CHARS) {
130
- content = rawContent.slice(0, MAX_CONTENT_CHARS);
131
- truncated = true;
132
- }
133
- return { content, final_url: finalUrl, status: responseStatus, truncated };
134
- }
135
- finally {
136
- await browser.close();
137
- }
138
- }
139
- // ---------------------------------------------------------------------------
140
- // Format output for Claude
141
- // ---------------------------------------------------------------------------
142
- function formatBrowseResult(result, extract) {
143
- const lines = [];
144
- lines.push(`final_url: ${result.final_url}`);
145
- lines.push(`status: ${result.status}`);
146
- if (extract === 'screenshot') {
147
- lines.push(`extract: screenshot (base64 PNG)`);
148
- lines.push(`content:\n${result.content}`);
149
- }
150
- else {
151
- lines.push(`extract: ${extract}`);
152
- if (result.truncated) {
153
- lines.push(`[content truncated at ${MAX_CONTENT_CHARS} characters]`);
154
- }
155
- lines.push(`content:\n${result.content}`);
156
- }
157
- return lines.join('\n');
158
- }
159
- // ---------------------------------------------------------------------------
160
- // GaiaTool implementation
161
- // ---------------------------------------------------------------------------
162
- export class WebBrowseTool {
163
- name = 'web_browse';
164
- definition = {
165
- name: 'web_browse',
166
- description: 'Open a URL in a headless Chromium browser and extract page content. ' +
167
- 'Use this for dynamic JavaScript pages, video pages (YouTube, Vimeo), ' +
168
- 'or any URL that web_search cannot fetch directly. ' +
169
- 'Returns page text by default; pass extract="html" for raw HTML or ' +
170
- 'extract="screenshot" for a base64 PNG screenshot. ' +
171
- 'Requires Playwright to be installed (npm install playwright && ' +
172
- 'npx playwright install chromium).',
173
- input_schema: {
174
- type: 'object',
175
- properties: {
176
- url: {
177
- type: 'string',
178
- description: 'The URL to navigate to (http or https).',
179
- },
180
- wait_for_selector: {
181
- type: 'string',
182
- description: 'Optional CSS selector to wait for before extracting content. ' +
183
- 'Useful for SPAs that render after the initial DOM load.',
184
- },
185
- extract: {
186
- type: 'string',
187
- description: 'What to extract: "text" (default, visible text), ' +
188
- '"html" (full page HTML), or "screenshot" (base64 PNG).',
189
- },
190
- timeout_seconds: {
191
- type: 'number',
192
- description: `Navigation timeout in seconds (default: ${DEFAULT_TIMEOUT_MS / 1000}, max: 120).`,
193
- },
194
- },
195
- required: ['url'],
196
- },
197
- };
198
- async execute(input) {
199
- const url = String(input['url'] ?? '').trim();
200
- if (!url)
201
- throw new Error('web_browse: `url` input is required and must be non-empty.');
202
- const rawExtract = String(input['extract'] ?? 'text').toLowerCase();
203
- const extract = rawExtract === 'html' ? 'html' : rawExtract === 'screenshot' ? 'screenshot' : 'text';
204
- const browseInput = {
205
- url,
206
- wait_for_selector: input['wait_for_selector'] != null ? String(input['wait_for_selector']) : undefined,
207
- extract,
208
- timeout_seconds: input['timeout_seconds'] != null ? Number(input['timeout_seconds']) : undefined,
209
- };
210
- const result = await browseUrl(browseInput);
211
- return formatBrowseResult(result, extract);
212
- }
213
- }
214
- export function createWebBrowseTool(_opts) {
215
- return new WebBrowseTool();
216
- }
217
- //# sourceMappingURL=web_browse.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"web_browse.js","sourceRoot":"","sources":["../../../../src/benchmarks/gaia-tools/web_browse.ts"],"names":[],"mappings":"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"}
@@ -1,26 +0,0 @@
1
- /**
2
- * Smoke tests for web_browse — ADR-133-PR5
3
- *
4
- * Run with:
5
- * cd v3/@claude-flow/cli
6
- * npx tsx src/benchmarks/gaia-tools/web_browse.smoke.ts
7
- *
8
- * Requires Playwright to be installed:
9
- * npm install playwright
10
- * npx playwright install chromium
11
- *
12
- * If Playwright is not installed, tests that require it are skipped with
13
- * a SKIP result (not a failure) — the install instructions are printed.
14
- *
15
- * Tests:
16
- * 1. Browse Wikipedia page — content contains 'Mercedes', status 200
17
- * 2. Bad URL with short timeout — returns error message (no crash)
18
- * 3. Screenshot mode — returns non-empty base64 string
19
- * 4. HTML extract mode — content contains '<html' or '<HTML'
20
- *
21
- * Cost: $0 (all local Playwright calls — no LLM).
22
- *
23
- * Refs: ADR-133, #2156
24
- */
25
- export {};
26
- //# sourceMappingURL=web_browse.smoke.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"web_browse.smoke.d.ts","sourceRoot":"","sources":["../../../../src/benchmarks/gaia-tools/web_browse.smoke.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG"}
@@ -1,152 +0,0 @@
1
- /**
2
- * Smoke tests for web_browse — ADR-133-PR5
3
- *
4
- * Run with:
5
- * cd v3/@claude-flow/cli
6
- * npx tsx src/benchmarks/gaia-tools/web_browse.smoke.ts
7
- *
8
- * Requires Playwright to be installed:
9
- * npm install playwright
10
- * npx playwright install chromium
11
- *
12
- * If Playwright is not installed, tests that require it are skipped with
13
- * a SKIP result (not a failure) — the install instructions are printed.
14
- *
15
- * Tests:
16
- * 1. Browse Wikipedia page — content contains 'Mercedes', status 200
17
- * 2. Bad URL with short timeout — returns error message (no crash)
18
- * 3. Screenshot mode — returns non-empty base64 string
19
- * 4. HTML extract mode — content contains '<html' or '<HTML'
20
- *
21
- * Cost: $0 (all local Playwright calls — no LLM).
22
- *
23
- * Refs: ADR-133, #2156
24
- */
25
- import { createWebBrowseTool } from './web_browse.js';
26
- async function runTest(name, fn) {
27
- try {
28
- await fn();
29
- return { name, status: 'PASS', message: 'OK' };
30
- }
31
- catch (e) {
32
- const msg = String(e);
33
- // If Playwright isn't installed, mark as SKIP rather than FAIL.
34
- if (msg.includes('Playwright is not installed') ||
35
- msg.includes('Cannot find module') ||
36
- msg.includes('playwright')) {
37
- return { name, status: 'SKIP', message: `Playwright not installed — ${msg}` };
38
- }
39
- return { name, status: 'FAIL', message: msg };
40
- }
41
- }
42
- function assert(condition, msg) {
43
- if (!condition)
44
- throw new Error(`Assertion failed: ${msg}`);
45
- }
46
- // ---------------------------------------------------------------------------
47
- // Tests
48
- // ---------------------------------------------------------------------------
49
- const tool = createWebBrowseTool();
50
- // Test 1: Wikipedia text extraction
51
- async function testWikipedia() {
52
- const out = await tool.execute({
53
- url: 'https://en.wikipedia.org/wiki/Mercedes_Sosa',
54
- extract: 'text',
55
- timeout_seconds: 30,
56
- });
57
- // If Playwright is missing, execute() returns a structured error string.
58
- if (out.startsWith('[web_browse error]')) {
59
- throw new Error(out);
60
- }
61
- assert(out.toLowerCase().includes('mercedes') || out.toLowerCase().includes('sosa'), `Expected page text to contain "Mercedes" or "Sosa", got:\n${out.slice(0, 500)}`);
62
- assert(out.includes('final_url:'), `Expected final_url in output, got:\n${out.slice(0, 200)}`);
63
- }
64
- // Test 2: Bad URL with short timeout — should return gracefully, not throw
65
- async function testBadUrlTimeout() {
66
- const out = await tool.execute({
67
- url: 'https://this-domain-absolutely-does-not-exist-gaia-bench.example',
68
- extract: 'text',
69
- timeout_seconds: 5,
70
- });
71
- // Either a Playwright "not installed" error or a network error — both are
72
- // acceptable. The tool must NOT throw; it must return a string.
73
- assert(typeof out === 'string', 'Expected string output from bad-URL test');
74
- }
75
- // Test 3: Screenshot mode — returns base64 PNG
76
- async function testScreenshotMode() {
77
- const out = await tool.execute({
78
- url: 'https://en.wikipedia.org/wiki/Main_Page',
79
- extract: 'screenshot',
80
- timeout_seconds: 30,
81
- });
82
- if (out.startsWith('[web_browse error]')) {
83
- throw new Error(out);
84
- }
85
- assert(out.includes('content:'), `Expected "content:" in output, got:\n${out.slice(0, 200)}`);
86
- // Extract the base64 portion after "content:\n"
87
- const contentIdx = out.indexOf('content:\n');
88
- if (contentIdx !== -1) {
89
- const b64 = out.slice(contentIdx + 'content:\n'.length).trim();
90
- assert(b64.length > 100, `Expected non-trivial base64 data, got length ${b64.length}`);
91
- // Base64 charset only
92
- assert(/^[A-Za-z0-9+/=]+$/.test(b64.slice(0, 100)), `Expected base64-encoded output, got:\n${b64.slice(0, 100)}`);
93
- }
94
- }
95
- // Test 4: HTML extract mode
96
- async function testHtmlExtract() {
97
- const out = await tool.execute({
98
- url: 'https://en.wikipedia.org/wiki/Main_Page',
99
- extract: 'html',
100
- timeout_seconds: 30,
101
- });
102
- if (out.startsWith('[web_browse error]')) {
103
- throw new Error(out);
104
- }
105
- assert(out.toLowerCase().includes('<html') || out.includes('<!DOCTYPE'), `Expected HTML markup in output, got:\n${out.slice(0, 300)}`);
106
- }
107
- // ---------------------------------------------------------------------------
108
- // Runner
109
- // ---------------------------------------------------------------------------
110
- async function main() {
111
- console.log('web_browse smoke tests — ADR-133-PR5\n');
112
- const tests = [
113
- runTest('Test 1: Wikipedia text extraction (contains "Mercedes")', testWikipedia),
114
- runTest('Test 2: Bad URL with 5s timeout — no crash', testBadUrlTimeout),
115
- runTest('Test 3: Screenshot mode — non-empty base64', testScreenshotMode),
116
- runTest('Test 4: HTML extract mode — markup present', testHtmlExtract),
117
- ];
118
- // Run sequentially to avoid spawning 4 browser instances simultaneously.
119
- const results = [];
120
- for (const t of tests) {
121
- results.push(await t);
122
- }
123
- let passed = 0;
124
- let failed = 0;
125
- let skipped = 0;
126
- for (const r of results) {
127
- console.log(`[${r.status}] ${r.name}`);
128
- if (r.status !== 'PASS') {
129
- console.log(` ${r.message.slice(0, 300)}`);
130
- }
131
- if (r.status === 'PASS')
132
- passed++;
133
- else if (r.status === 'FAIL')
134
- failed++;
135
- else
136
- skipped++;
137
- }
138
- console.log(`\nResults: ${passed} passed, ${failed} failed, ${skipped} skipped`);
139
- if (skipped > 0) {
140
- console.log('\nInstall Playwright to run skipped tests:');
141
- console.log(' npm install playwright');
142
- console.log(' npx playwright install chromium');
143
- }
144
- if (failed > 0) {
145
- process.exit(1);
146
- }
147
- }
148
- main().catch((e) => {
149
- console.error('Fatal:', e);
150
- process.exit(1);
151
- });
152
- //# sourceMappingURL=web_browse.smoke.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"web_browse.smoke.js","sourceRoot":"","sources":["../../../../src/benchmarks/gaia-tools/web_browse.smoke.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAYtD,KAAK,UAAU,OAAO,CACpB,IAAY,EACZ,EAAuB;IAEvB,IAAI,CAAC;QACH,MAAM,EAAE,EAAE,CAAC;QACX,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IACjD,CAAC;IAAC,OAAO,CAAU,EAAE,CAAC;QACpB,MAAM,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QACtB,gEAAgE;QAChE,IACE,GAAG,CAAC,QAAQ,CAAC,6BAA6B,CAAC;YAC3C,GAAG,CAAC,QAAQ,CAAC,oBAAoB,CAAC;YAClC,GAAG,CAAC,QAAQ,CAAC,YAAY,CAAC,EAC1B,CAAC;YACD,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,8BAA8B,GAAG,EAAE,EAAE,CAAC;QAChF,CAAC;QACD,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC;IAChD,CAAC;AACH,CAAC;AAED,SAAS,MAAM,CAAC,SAAkB,EAAE,GAAW;IAC7C,IAAI,CAAC,SAAS;QAAE,MAAM,IAAI,KAAK,CAAC,qBAAqB,GAAG,EAAE,CAAC,CAAC;AAC9D,CAAC;AAED,8EAA8E;AAC9E,QAAQ;AACR,8EAA8E;AAE9E,MAAM,IAAI,GAAG,mBAAmB,EAAE,CAAC;AAEnC,oCAAoC;AACpC,KAAK,UAAU,aAAa;IAC1B,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC;QAC7B,GAAG,EAAE,6CAA6C;QAClD,OAAO,EAAE,MAAM;QACf,eAAe,EAAE,EAAE;KACpB,CAAC,CAAC;IACH,yEAAyE;IACzE,IAAI,GAAG,CAAC,UAAU,CAAC,oBAAoB,CAAC,EAAE,CAAC;QACzC,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC;IACvB,CAAC;IACD,MAAM,CACJ,GAAG,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,GAAG,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,EAC5E,6DAA6D,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CACjF,CAAC;IACF,MAAM,CACJ,GAAG,CAAC,QAAQ,CAAC,YAAY,CAAC,EAC1B,uCAAuC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAC3D,CAAC;AACJ,CAAC;AAED,2EAA2E;AAC3E,KAAK,UAAU,iBAAiB;IAC9B,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC;QAC7B,GAAG,EAAE,kEAAkE;QACvE,OAAO,EAAE,MAAM;QACf,eAAe,EAAE,CAAC;KACnB,CAAC,CAAC;IACH,0EAA0E;IAC1E,iEAAiE;IACjE,MAAM,CAAC,OAAO,GAAG,KAAK,QAAQ,EAAE,0CAA0C,CAAC,CAAC;AAC9E,CAAC;AAED,+CAA+C;AAC/C,KAAK,UAAU,kBAAkB;IAC/B,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC;QAC7B,GAAG,EAAE,yCAAyC;QAC9C,OAAO,EAAE,YAAY;QACrB,eAAe,EAAE,EAAE;KACpB,CAAC,CAAC;IACH,IAAI,GAAG,CAAC,UAAU,CAAC,oBAAoB,CAAC,EAAE,CAAC;QACzC,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC;IACvB,CAAC;IACD,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,wCAAwC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;IAC9F,gDAAgD;IAChD,MAAM,UAAU,GAAG,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IAC7C,IAAI,UAAU,KAAK,CAAC,CAAC,EAAE,CAAC;QACtB,MAAM,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,UAAU,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;QAC/D,MAAM,CAAC,GAAG,CAAC,MAAM,GAAG,GAAG,EAAE,gDAAgD,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;QACvF,sBAAsB;QACtB,MAAM,CACJ,mBAAmB,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAC3C,yCAAyC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAC7D,CAAC;IACJ,CAAC;AACH,CAAC;AAED,4BAA4B;AAC5B,KAAK,UAAU,eAAe;IAC5B,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC;QAC7B,GAAG,EAAE,yCAAyC;QAC9C,OAAO,EAAE,MAAM;QACf,eAAe,EAAE,EAAE;KACpB,CAAC,CAAC;IACH,IAAI,GAAG,CAAC,UAAU,CAAC,oBAAoB,CAAC,EAAE,CAAC;QACzC,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC;IACvB,CAAC;IACD,MAAM,CACJ,GAAG,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC,EAChE,yCAAyC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAC7D,CAAC;AACJ,CAAC;AAED,8EAA8E;AAC9E,SAAS;AACT,8EAA8E;AAE9E,KAAK,UAAU,IAAI;IACjB,OAAO,CAAC,GAAG,CAAC,wCAAwC,CAAC,CAAC;IAEtD,MAAM,KAAK,GAA+B;QACxC,OAAO,CAAC,yDAAyD,EAAE,aAAa,CAAC;QACjF,OAAO,CAAC,4CAA4C,EAAE,iBAAiB,CAAC;QACxE,OAAO,CAAC,4CAA4C,EAAE,kBAAkB,CAAC;QACzE,OAAO,CAAC,4CAA4C,EAAE,eAAe,CAAC;KACvE,CAAC;IAEF,yEAAyE;IACzE,MAAM,OAAO,GAAiB,EAAE,CAAC;IACjC,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;IACxB,CAAC;IAED,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,IAAI,OAAO,GAAG,CAAC,CAAC;IAEhB,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACxB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QACvC,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;YACxB,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;QACnD,CAAC;QACD,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM;YAAE,MAAM,EAAE,CAAC;aAC7B,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM;YAAE,MAAM,EAAE,CAAC;;YAClC,OAAO,EAAE,CAAC;IACjB,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,cAAc,MAAM,YAAY,MAAM,YAAY,OAAO,UAAU,CAAC,CAAC;IAEjF,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC;QAC1D,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;QACxC,OAAO,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC;IACnD,CAAC;IAED,IAAI,MAAM,GAAG,CAAC,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE;IACjB,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;IAC3B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
@@ -1,24 +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
- export {};
24
- //# sourceMappingURL=web_search.smoke.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"web_search.smoke.d.ts","sourceRoot":"","sources":["../../../../src/benchmarks/gaia-tools/web_search.smoke.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG"}