@yuaone/tools 0.9.2 → 0.9.4

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/bash.d.ts ADDED
@@ -0,0 +1,17 @@
1
+ /**
2
+ * @yuaone/tools — bash tool
3
+ *
4
+ * Executes shell commands via bash -c "...".
5
+ * Supports pipes, redirects, &&, ||, env vars, subshells.
6
+ * Use when shell features are needed (shell_exec doesn't support these).
7
+ */
8
+ import type { ParameterDef, RiskLevel, ToolResult } from './types.js';
9
+ import { BaseTool } from './base-tool.js';
10
+ export declare class BashTool extends BaseTool {
11
+ readonly name = "bash";
12
+ readonly description: string;
13
+ readonly riskLevel: RiskLevel;
14
+ readonly parameters: Record<string, ParameterDef>;
15
+ execute(args: Record<string, unknown>, workDir: string): Promise<ToolResult>;
16
+ }
17
+ //# sourceMappingURL=bash.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bash.d.ts","sourceRoot":"","sources":["../src/bash.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACtE,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAgC1C,qBAAa,QAAS,SAAQ,QAAQ;IACpC,QAAQ,CAAC,IAAI,UAAU;IACvB,QAAQ,CAAC,WAAW,SAGgD;IACpE,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAc;IAE3C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAqB/C;IAEI,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;CAwFnF"}
package/dist/bash.js ADDED
@@ -0,0 +1,150 @@
1
+ /**
2
+ * @yuaone/tools — bash tool
3
+ *
4
+ * Executes shell commands via bash -c "...".
5
+ * Supports pipes, redirects, &&, ||, env vars, subshells.
6
+ * Use when shell features are needed (shell_exec doesn't support these).
7
+ */
8
+ import { spawn } from 'node:child_process';
9
+ import { mkdirSync } from 'node:fs';
10
+ import { resolve } from 'node:path';
11
+ import { BaseTool } from './base-tool.js';
12
+ const DEFAULT_TIMEOUT = 60_000;
13
+ const MAX_TIMEOUT = 600_000;
14
+ const MAX_OUTPUT = 150_000; // 150KB
15
+ // Hard-blocked patterns — catastrophic/irreversible operations
16
+ const BLOCKED_PATTERNS = [
17
+ /rm\s+-[a-z]*r[a-z]*f\s+\/(?!\w)/i, // rm -rf /
18
+ /rm\s+-[a-z]*f[a-z]*r\s+\/(?!\w)/i, // rm -fr /
19
+ /:\s*\(\s*\)\s*\{.*:\|:.*\}/, // fork bomb
20
+ /dd\s+.*of=\/dev\/(sd|nvme|hd)/i, // disk wipe
21
+ /mkfs\./i, // filesystem format
22
+ />\s*\/dev\/(sd|nvme|hd)/i, // overwrite disk
23
+ /shutdown|reboot|halt|poweroff/i, // system shutdown
24
+ /passwd\s+root/i, // root password change
25
+ ];
26
+ function isBlocked(command) {
27
+ for (const pattern of BLOCKED_PATTERNS) {
28
+ if (pattern.test(command)) {
29
+ return `Blocked dangerous pattern: ${pattern.source}`;
30
+ }
31
+ }
32
+ return null;
33
+ }
34
+ function truncate(s, max) {
35
+ if (s.length <= max)
36
+ return s;
37
+ return s.slice(0, max) + `\n...[truncated ${s.length - max} bytes]`;
38
+ }
39
+ export class BashTool extends BaseTool {
40
+ name = 'bash';
41
+ description = 'Run a bash shell command. Supports pipes (|), redirects (>), ' +
42
+ 'logical operators (&&, ||), env vars, subshells, etc. ' +
43
+ 'Use for complex shell operations that shell_exec cannot handle.';
44
+ riskLevel = 'critical';
45
+ parameters = {
46
+ command: {
47
+ type: 'string',
48
+ description: 'Shell command string to execute via bash -c',
49
+ required: true,
50
+ },
51
+ cwd: {
52
+ type: 'string',
53
+ description: 'Working directory (default: project root)',
54
+ required: false,
55
+ },
56
+ timeout: {
57
+ type: 'number',
58
+ description: `Timeout in ms (default: ${DEFAULT_TIMEOUT}, max: ${MAX_TIMEOUT})`,
59
+ required: false,
60
+ },
61
+ env: {
62
+ type: 'object',
63
+ description: 'Extra environment variables to set',
64
+ required: false,
65
+ },
66
+ };
67
+ async execute(args, workDir) {
68
+ const toolCallId = args._toolCallId ?? '';
69
+ const command = args.command;
70
+ const cwdArg = args.cwd;
71
+ const timeoutArg = args.timeout;
72
+ const envArg = args.env;
73
+ if (!command || command.trim() === '') {
74
+ return this.fail(toolCallId, 'Missing required parameter: command');
75
+ }
76
+ // Block catastrophic patterns
77
+ const blocked = isBlocked(command);
78
+ if (blocked) {
79
+ return this.fail(toolCallId, blocked);
80
+ }
81
+ const timeout = Math.min(timeoutArg ?? DEFAULT_TIMEOUT, MAX_TIMEOUT);
82
+ // Resolve cwd
83
+ let resolvedCwd = workDir;
84
+ if (cwdArg) {
85
+ try {
86
+ resolvedCwd = resolve(workDir, cwdArg);
87
+ mkdirSync(resolvedCwd, { recursive: true });
88
+ }
89
+ catch {
90
+ return this.fail(toolCallId, `Invalid cwd: ${cwdArg}`);
91
+ }
92
+ }
93
+ const env = envArg
94
+ ? { ...process.env, ...envArg }
95
+ : process.env;
96
+ const startMs = Date.now();
97
+ return new Promise((resolve_) => {
98
+ let stdout = '';
99
+ let stderr = '';
100
+ let timedOut = false;
101
+ const child = spawn('bash', ['-c', command], {
102
+ cwd: resolvedCwd,
103
+ env,
104
+ stdio: ['ignore', 'pipe', 'pipe'],
105
+ });
106
+ child.stdout.on('data', (chunk) => {
107
+ stdout += chunk.toString();
108
+ if (stdout.length > MAX_OUTPUT)
109
+ stdout = stdout.slice(-MAX_OUTPUT);
110
+ });
111
+ child.stderr.on('data', (chunk) => {
112
+ stderr += chunk.toString();
113
+ if (stderr.length > MAX_OUTPUT)
114
+ stderr = stderr.slice(-MAX_OUTPUT);
115
+ });
116
+ const timer = setTimeout(() => {
117
+ timedOut = true;
118
+ child.kill('SIGTERM');
119
+ setTimeout(() => {
120
+ if (!child.killed)
121
+ child.kill('SIGKILL');
122
+ }, 3000);
123
+ }, timeout);
124
+ child.on('close', (code) => {
125
+ clearTimeout(timer);
126
+ const durationMs = Date.now() - startMs;
127
+ const exitCode = code ?? -1;
128
+ let output = '';
129
+ if (stdout)
130
+ output += truncate(stdout, MAX_OUTPUT);
131
+ if (stderr)
132
+ output += (output ? '\n[stderr]\n' : '[stderr]\n') + truncate(stderr, MAX_OUTPUT);
133
+ if (timedOut)
134
+ output += `\n[TIMED OUT after ${timeout}ms]`;
135
+ output += `\n[exit ${exitCode}] [${durationMs}ms]`;
136
+ if (exitCode === 0) {
137
+ resolve_(this.ok(toolCallId, output.trim(), { exitCode, durationMs }));
138
+ }
139
+ else {
140
+ resolve_(this.fail(toolCallId, output.trim()));
141
+ }
142
+ });
143
+ child.on('error', (err) => {
144
+ clearTimeout(timer);
145
+ resolve_(this.fail(toolCallId, `spawn error: ${err.message}`));
146
+ });
147
+ });
148
+ }
149
+ }
150
+ //# sourceMappingURL=bash.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bash.js","sourceRoot":"","sources":["../src/bash.ts"],"names":[],"mappings":"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"}
package/dist/grep.d.ts CHANGED
@@ -1,11 +1,8 @@
1
1
  /**
2
2
  * @yuaone/tools — grep tool
3
3
  *
4
- * Searches file contents using regex patterns.
5
- * - Node.js built-in implementation (no ripgrep dependency)
6
- * - Glob-based file filtering
7
- * - Context lines support
8
- * - Max 100 result lines
4
+ * Searches file contents using ripgrep (rg) for performance.
5
+ * Falls back to Node.js built-in if rg is not available.
9
6
  */
10
7
  import type { ParameterDef, RiskLevel, ToolResult } from './types.js';
11
8
  import { BaseTool } from './base-tool.js';
@@ -1 +1 @@
1
- {"version":3,"file":"grep.d.ts","sourceRoot":"","sources":["../src/grep.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,UAAU,EAAa,MAAM,YAAY,CAAC;AACjF,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAM1C,qBAAa,QAAS,SAAQ,QAAQ;IACpC,QAAQ,CAAC,IAAI,UAAU;IACvB,QAAQ,CAAC,WAAW,SAEyC;IAC7D,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAS;IAEtC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CA4B/C;IAEI,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;CAiJnF"}
1
+ {"version":3,"file":"grep.d.ts","sourceRoot":"","sources":["../src/grep.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,UAAU,EAAa,MAAM,YAAY,CAAC;AACjF,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAiP1C,qBAAa,QAAS,SAAQ,QAAQ;IACpC,QAAQ,CAAC,IAAI,UAAU;IACvB,QAAQ,CAAC,WAAW,SAEyC;IAC7D,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAS;IAEtC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CA4B/C;IAEI,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;CAiFnF"}
package/dist/grep.js CHANGED
@@ -1,21 +1,198 @@
1
1
  /**
2
2
  * @yuaone/tools — grep tool
3
3
  *
4
- * Searches file contents using regex patterns.
5
- * - Node.js built-in implementation (no ripgrep dependency)
6
- * - Glob-based file filtering
7
- * - Context lines support
8
- * - Max 100 result lines
4
+ * Searches file contents using ripgrep (rg) for performance.
5
+ * Falls back to Node.js built-in if rg is not available.
9
6
  */
7
+ import { execFile } from 'node:child_process';
10
8
  import { readFile, stat } from 'node:fs/promises';
11
9
  import fg from 'fast-glob';
12
10
  import { BaseTool } from './base-tool.js';
13
11
  const DEFAULT_MAX_RESULTS = 50;
14
- const ABSOLUTE_MAX_RESULTS = 100;
12
+ const ABSOLUTE_MAX_RESULTS = 200;
15
13
  const DEFAULT_CONTEXT = 0;
14
+ const MAX_OUTPUT = 100_000;
15
+ // ─── ripgrep search ──────────────────────────────────────────────────────────
16
+ function runRipgrep(pattern, searchDir, globPattern, maxResults, contextLines) {
17
+ return new Promise((resolve_) => {
18
+ const args = [
19
+ '--json',
20
+ '--max-count', '1', // 1 match per line (counting happens separately)
21
+ '--glob', '!node_modules',
22
+ '--glob', '!.git',
23
+ '--glob', '!dist',
24
+ '--glob', '!build',
25
+ '--glob', '!.next',
26
+ '--glob', '!coverage',
27
+ '-e', pattern,
28
+ ];
29
+ if (globPattern) {
30
+ args.push('--glob', globPattern);
31
+ }
32
+ if (contextLines > 0) {
33
+ args.push('-C', String(contextLines));
34
+ }
35
+ args.push(searchDir);
36
+ let stdout = '';
37
+ let stderr = '';
38
+ const child = execFile('rg', args, { maxBuffer: MAX_OUTPUT * 2 }, (err, out, errOut) => {
39
+ stdout = out;
40
+ stderr = errOut;
41
+ // rg exits 1 when no matches (not an error)
42
+ if (err && err.code !== 'ENOENT' && err.code !== 1) {
43
+ // Exit code 2 = real error
44
+ if (err.code === 2) {
45
+ resolve_({ matches: [], totalMatches: 0, error: stderr.trim() });
46
+ return;
47
+ }
48
+ }
49
+ const matches = [];
50
+ let totalMatches = 0;
51
+ // Parse JSON lines
52
+ const contextBuffer = new Map();
53
+ for (const line of stdout.split('\n')) {
54
+ if (!line.trim())
55
+ continue;
56
+ let event;
57
+ try {
58
+ event = JSON.parse(line);
59
+ }
60
+ catch {
61
+ continue;
62
+ }
63
+ if (event.type === 'match') {
64
+ const ev = event;
65
+ totalMatches++;
66
+ if (matches.length >= maxResults)
67
+ continue;
68
+ const filePath = ev.data.path.text;
69
+ const lineText = ev.data.lines.text.replace(/\n$/, '');
70
+ const lineNum = ev.data.line_number;
71
+ const relativePath = filePath.startsWith(searchDir)
72
+ ? filePath.slice(searchDir.length).replace(/^[\\/]/, '')
73
+ : filePath;
74
+ const match = {
75
+ file: relativePath,
76
+ line: lineNum,
77
+ content: lineText,
78
+ };
79
+ // Attach context if collected
80
+ const ctx = contextBuffer.get(filePath);
81
+ if (ctx && contextLines > 0) {
82
+ match.contextBefore = ctx.before.slice(-contextLines);
83
+ }
84
+ contextBuffer.delete(filePath);
85
+ matches.push(match);
86
+ }
87
+ else if (event.type === 'context' && contextLines > 0) {
88
+ const ev = event;
89
+ const filePath = ev.data.path.text;
90
+ const lineText = ev.data.lines.text.replace(/\n$/, '');
91
+ const lineNum = ev.data.line_number;
92
+ const existing = contextBuffer.get(filePath) ?? { before: [], lineNum };
93
+ existing.before.push(lineText);
94
+ if (existing.before.length > contextLines)
95
+ existing.before.shift();
96
+ contextBuffer.set(filePath, existing);
97
+ // context after: attach to last match for that file
98
+ const lastMatch = [...matches].reverse().find(m => m.file === filePath.slice(searchDir.length).replace(/^[\\/]/, ''));
99
+ if (lastMatch && lastMatch.line < lineNum) {
100
+ lastMatch.contextAfter = lastMatch.contextAfter ?? [];
101
+ if (lastMatch.contextAfter.length < contextLines) {
102
+ lastMatch.contextAfter.push(lineText);
103
+ }
104
+ }
105
+ }
106
+ }
107
+ resolve_({ matches, totalMatches });
108
+ });
109
+ void child;
110
+ });
111
+ }
112
+ // ─── Node.js fallback ────────────────────────────────────────────────────────
113
+ async function searchNodeFallback(pattern, searchDir, globPattern, maxResults, contextLines, workDir) {
114
+ let regex;
115
+ try {
116
+ regex = new RegExp(pattern, 'g');
117
+ }
118
+ catch {
119
+ return { matches: [], totalMatches: 0 };
120
+ }
121
+ let isFile = false;
122
+ try {
123
+ const s = await stat(searchDir);
124
+ isFile = s.isFile();
125
+ }
126
+ catch {
127
+ return { matches: [], totalMatches: 0 };
128
+ }
129
+ let files;
130
+ if (isFile) {
131
+ files = [searchDir];
132
+ }
133
+ else {
134
+ try {
135
+ files = await fg(globPattern ?? '**/*', {
136
+ cwd: searchDir,
137
+ absolute: true,
138
+ ignore: ['**/node_modules/**', '**/.git/**', '**/dist/**', '**/build/**'],
139
+ onlyFiles: true,
140
+ followSymbolicLinks: false,
141
+ });
142
+ }
143
+ catch {
144
+ return { matches: [], totalMatches: 0 };
145
+ }
146
+ }
147
+ const matches = [];
148
+ let totalMatches = 0;
149
+ for (const filePath of files) {
150
+ if (matches.length >= maxResults)
151
+ break;
152
+ let content;
153
+ try {
154
+ content = await readFile(filePath, 'utf-8');
155
+ }
156
+ catch {
157
+ continue;
158
+ }
159
+ const lines = content.split('\n');
160
+ for (let i = 0; i < lines.length; i++) {
161
+ regex.lastIndex = 0;
162
+ if (!regex.test(lines[i]))
163
+ continue;
164
+ totalMatches++;
165
+ if (matches.length >= maxResults)
166
+ continue;
167
+ const relativePath = filePath.startsWith(workDir)
168
+ ? filePath.slice(workDir.length + 1)
169
+ : filePath;
170
+ const match = { file: relativePath, line: i + 1, content: lines[i] };
171
+ if (contextLines > 0) {
172
+ match.contextBefore = lines.slice(Math.max(0, i - contextLines), i);
173
+ match.contextAfter = lines.slice(i + 1, Math.min(lines.length, i + 1 + contextLines));
174
+ }
175
+ matches.push(match);
176
+ }
177
+ }
178
+ return { matches, totalMatches };
179
+ }
180
+ // ─── check rg availability (cached) ─────────────────────────────────────────
181
+ let rgAvailable = null;
182
+ async function hasRipgrep() {
183
+ if (rgAvailable !== null)
184
+ return rgAvailable;
185
+ return new Promise((res) => {
186
+ execFile('rg', ['--version'], (err) => {
187
+ rgAvailable = !err;
188
+ res(rgAvailable);
189
+ });
190
+ });
191
+ }
192
+ // ─── Tool ────────────────────────────────────────────────────────────────────
16
193
  export class GrepTool extends BaseTool {
17
194
  name = 'grep';
18
- description = 'Search file contents using a regex pattern. ' +
195
+ description = 'Search file contents using a regex pattern (powered by ripgrep). ' +
19
196
  'Returns matching lines with file paths and line numbers.';
20
197
  riskLevel = 'low';
21
198
  parameters = {
@@ -57,14 +234,6 @@ export class GrepTool extends BaseTool {
57
234
  if (!pattern) {
58
235
  return this.fail(toolCallId, 'Missing required parameter: pattern');
59
236
  }
60
- // Compile regex
61
- let regex;
62
- try {
63
- regex = new RegExp(pattern, 'g');
64
- }
65
- catch (err) {
66
- return this.fail(toolCallId, `Invalid regex pattern: ${err.message}`);
67
- }
68
237
  // Resolve search path
69
238
  let searchDir = workDir;
70
239
  if (searchPath) {
@@ -75,71 +244,25 @@ export class GrepTool extends BaseTool {
75
244
  return this.fail(toolCallId, err.message);
76
245
  }
77
246
  }
78
- // Check if searchDir is a file or directory
79
- let isFile = false;
80
- try {
81
- const s = await stat(searchDir);
82
- isFile = s.isFile();
83
- }
84
- catch {
85
- return this.fail(toolCallId, `Path not found: ${searchPath ?? '.'}`);
86
- }
87
- // Collect files to search
88
- let files;
89
- if (isFile) {
90
- files = [searchDir];
247
+ // Try ripgrep first, fallback to Node.js
248
+ let matches;
249
+ let totalMatches;
250
+ const useRg = await hasRipgrep();
251
+ if (useRg) {
252
+ const result = await runRipgrep(pattern, searchDir, globPattern, maxResults, contextLines);
253
+ if (result.error) {
254
+ return this.fail(toolCallId, `ripgrep error: ${result.error}`);
255
+ }
256
+ matches = result.matches;
257
+ totalMatches = result.totalMatches;
91
258
  }
92
259
  else {
93
- const fileGlob = globPattern ?? '**/*';
94
- try {
95
- files = await fg(fileGlob, {
96
- cwd: searchDir,
97
- absolute: true,
98
- ignore: ['**/node_modules/**', '**/.git/**', '**/dist/**', '**/build/**'],
99
- onlyFiles: true,
100
- followSymbolicLinks: false,
101
- });
102
- }
103
- catch (err) {
104
- return this.fail(toolCallId, `Glob error: ${err.message}`);
105
- }
260
+ const result = await searchNodeFallback(pattern, searchDir, globPattern, maxResults, contextLines, workDir);
261
+ matches = result.matches;
262
+ totalMatches = result.totalMatches;
106
263
  }
107
- // Search files
108
- const matches = [];
109
- let totalMatches = 0;
110
- for (const filePath of files) {
111
- if (matches.length >= maxResults)
112
- break;
113
- let content;
114
- try {
115
- content = await readFile(filePath, 'utf-8');
116
- }
117
- catch {
118
- continue; // Skip unreadable files (binary, permissions, etc.)
119
- }
120
- const lines = content.split('\n');
121
- for (let i = 0; i < lines.length; i++) {
122
- // Reset regex state
123
- regex.lastIndex = 0;
124
- if (!regex.test(lines[i]))
125
- continue;
126
- totalMatches++;
127
- if (matches.length >= maxResults)
128
- continue; // Keep counting but stop collecting
129
- const relativePath = filePath.startsWith(workDir)
130
- ? filePath.slice(workDir.length + 1)
131
- : filePath;
132
- const match = {
133
- file: relativePath,
134
- line: i + 1,
135
- content: lines[i],
136
- };
137
- if (contextLines > 0) {
138
- match.contextBefore = lines.slice(Math.max(0, i - contextLines), i);
139
- match.contextAfter = lines.slice(i + 1, Math.min(lines.length, i + 1 + contextLines));
140
- }
141
- matches.push(match);
142
- }
264
+ if (matches.length === 0) {
265
+ return this.ok(toolCallId, `No matches found for pattern: ${pattern}`, { totalMatches: 0 });
143
266
  }
144
267
  const truncated = totalMatches > maxResults;
145
268
  // Format output
@@ -151,26 +274,25 @@ export class GrepTool extends BaseTool {
151
274
  outputLines.push(` ${m.file}:${lineNum}: ${m.contextBefore[j]}`);
152
275
  }
153
276
  }
154
- outputLines.push(`> ${m.file}:${m.line}: ${m.content}`);
277
+ outputLines.push(`${m.file}:${m.line}: ${m.content}`);
155
278
  if (m.contextAfter && m.contextAfter.length > 0) {
156
279
  for (let j = 0; j < m.contextAfter.length; j++) {
157
- outputLines.push(` ${m.file}:${m.line + 1 + j}: ${m.contextAfter[j]}`);
280
+ outputLines.push(` ${m.file}:${m.line + j + 1}: ${m.contextAfter[j]}`);
158
281
  }
159
282
  }
160
- if (m.contextBefore || m.contextAfter) {
161
- outputLines.push('--');
162
- }
163
283
  }
284
+ let output = outputLines.join('\n');
164
285
  if (truncated) {
165
- outputLines.push(`\n... (showing ${matches.length} of ${totalMatches} total matches)`);
286
+ output += `\n\n... (showing ${maxResults} of ${totalMatches} total matches)`;
287
+ }
288
+ if (output.length > MAX_OUTPUT) {
289
+ output = output.slice(0, MAX_OUTPUT) + `\n...[truncated]`;
166
290
  }
167
- const output = outputLines.length > 0
168
- ? outputLines.join('\n')
169
- : `No matches found for pattern: ${pattern}`;
170
291
  return this.ok(toolCallId, output, {
171
292
  totalMatches,
172
293
  matchesReturned: matches.length,
173
294
  truncated,
295
+ engine: useRg ? 'ripgrep' : 'node',
174
296
  });
175
297
  }
176
298
  }
package/dist/grep.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"grep.js","sourceRoot":"","sources":["../src/grep.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,MAAM,WAAW,CAAC;AAE3B,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C,MAAM,mBAAmB,GAAG,EAAE,CAAC;AAC/B,MAAM,oBAAoB,GAAG,GAAG,CAAC;AACjC,MAAM,eAAe,GAAG,CAAC,CAAC;AAE1B,MAAM,OAAO,QAAS,SAAQ,QAAQ;IAC3B,IAAI,GAAG,MAAM,CAAC;IACd,WAAW,GAClB,8CAA8C;QAC9C,0DAA0D,CAAC;IACpD,SAAS,GAAc,KAAK,CAAC;IAE7B,UAAU,GAAiC;QAClD,OAAO,EAAE;YACP,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,0CAA0C;YACvD,QAAQ,EAAE,IAAI;SACf;QACD,IAAI,EAAE;YACJ,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,8DAA8D;YAC3E,QAAQ,EAAE,KAAK;SAChB;QACD,IAAI,EAAE;YACJ,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,kDAAkD;YAC/D,QAAQ,EAAE,KAAK;SAChB;QACD,UAAU,EAAE;YACV,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,uCAAuC,mBAAmB,UAAU,oBAAoB,GAAG;YACxG,QAAQ,EAAE,KAAK;YACf,OAAO,EAAE,mBAAmB;SAC7B;QACD,OAAO,EAAE;YACP,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,kEAAkE;YAC/E,QAAQ,EAAE,KAAK;YACf,OAAO,EAAE,eAAe;SACzB;KACF,CAAC;IAEF,KAAK,CAAC,OAAO,CAAC,IAA6B,EAAE,OAAe;QAC1D,MAAM,UAAU,GAAI,IAAI,CAAC,WAAsB,IAAI,EAAE,CAAC;QACtD,MAAM,OAAO,GAAG,IAAI,CAAC,OAA6B,CAAC;QACnD,MAAM,UAAU,GAAG,IAAI,CAAC,IAA0B,CAAC;QACnD,MAAM,WAAW,GAAG,IAAI,CAAC,IAA0B,CAAC;QACpD,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CACxB,IAAI,CAAC,UAAqB,IAAI,mBAAmB,EAClD,oBAAoB,CACrB,CAAC;QACF,MAAM,YAAY,GAAI,IAAI,CAAC,OAAkB,IAAI,eAAe,CAAC;QAEjE,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,qCAAqC,CAAC,CAAC;QACtE,CAAC;QAED,gBAAgB;QAChB,IAAI,KAAa,CAAC;QAClB,IAAI,CAAC;YACH,KAAK,GAAG,IAAI,MAAM,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QACnC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,0BAA2B,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;QACnF,CAAC;QAED,sBAAsB;QACtB,IAAI,SAAS,GAAG,OAAO,CAAC;QACxB,IAAI,UAAU,EAAE,CAAC;YACf,IAAI,CAAC;gBACH,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;YAC3D,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,EAAG,GAAa,CAAC,OAAO,CAAC,CAAC;YACvD,CAAC;QACH,CAAC;QAED,4CAA4C;QAC5C,IAAI,MAAM,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC;YACH,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,CAAC;YAChC,MAAM,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC;QACtB,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,mBAAmB,UAAU,IAAI,GAAG,EAAE,CAAC,CAAC;QACvE,CAAC;QAED,0BAA0B;QAC1B,IAAI,KAAe,CAAC;QACpB,IAAI,MAAM,EAAE,CAAC;YACX,KAAK,GAAG,CAAC,SAAS,CAAC,CAAC;QACtB,CAAC;aAAM,CAAC;YACN,MAAM,QAAQ,GAAG,WAAW,IAAI,MAAM,CAAC;YACvC,IAAI,CAAC;gBACH,KAAK,GAAG,MAAM,EAAE,CAAC,QAAQ,EAAE;oBACzB,GAAG,EAAE,SAAS;oBACd,QAAQ,EAAE,IAAI;oBACd,MAAM,EAAE,CAAC,oBAAoB,EAAE,YAAY,EAAE,YAAY,EAAE,aAAa,CAAC;oBACzE,SAAS,EAAE,IAAI;oBACf,mBAAmB,EAAE,KAAK;iBAC3B,CAAC,CAAC;YACL,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,eAAgB,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;YACxE,CAAC;QACH,CAAC;QAED,eAAe;QACf,MAAM,OAAO,GAAgB,EAAE,CAAC;QAChC,IAAI,YAAY,GAAG,CAAC,CAAC;QAErB,KAAK,MAAM,QAAQ,IAAI,KAAK,EAAE,CAAC;YAC7B,IAAI,OAAO,CAAC,MAAM,IAAI,UAAU;gBAAE,MAAM;YAExC,IAAI,OAAe,CAAC;YACpB,IAAI,CAAC;gBACH,OAAO,GAAG,MAAM,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YAC9C,CAAC;YAAC,MAAM,CAAC;gBACP,SAAS,CAAC,oDAAoD;YAChE,CAAC;YAED,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAClC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBACtC,oBAAoB;gBACpB,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC;gBACpB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;oBAAE,SAAS;gBAEpC,YAAY,EAAE,CAAC;gBACf,IAAI,OAAO,CAAC,MAAM,IAAI,UAAU;oBAAE,SAAS,CAAC,oCAAoC;gBAEhF,MAAM,YAAY,GAAG,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC;oBAC/C,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;oBACpC,CAAC,CAAC,QAAQ,CAAC;gBAEb,MAAM,KAAK,GAAc;oBACvB,IAAI,EAAE,YAAY;oBAClB,IAAI,EAAE,CAAC,GAAG,CAAC;oBACX,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;iBAClB,CAAC;gBAEF,IAAI,YAAY,GAAG,CAAC,EAAE,CAAC;oBACrB,KAAK,CAAC,aAAa,GAAG,KAAK,CAAC,KAAK,CAC/B,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,EAC7B,CAAC,CACF,CAAC;oBACF,KAAK,CAAC,YAAY,GAAG,KAAK,CAAC,KAAK,CAC9B,CAAC,GAAG,CAAC,EACL,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,CAC7C,CAAC;gBACJ,CAAC;gBAED,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACtB,CAAC;QACH,CAAC;QAED,MAAM,SAAS,GAAG,YAAY,GAAG,UAAU,CAAC;QAE5C,gBAAgB;QAChB,MAAM,WAAW,GAAa,EAAE,CAAC;QACjC,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;YACxB,IAAI,CAAC,CAAC,aAAa,IAAI,CAAC,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAClD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;oBAChD,MAAM,OAAO,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC;oBACpD,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,IAAI,OAAO,KAAK,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;gBACpE,CAAC;YACH,CAAC;YACD,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;YACxD,IAAI,CAAC,CAAC,YAAY,IAAI,CAAC,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAChD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;oBAC/C,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;gBAC1E,CAAC;YACH,CAAC;YACD,IAAI,CAAC,CAAC,aAAa,IAAI,CAAC,CAAC,YAAY,EAAE,CAAC;gBACtC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACzB,CAAC;QACH,CAAC;QAED,IAAI,SAAS,EAAE,CAAC;YACd,WAAW,CAAC,IAAI,CAAC,kBAAkB,OAAO,CAAC,MAAM,OAAO,YAAY,iBAAiB,CAAC,CAAC;QACzF,CAAC;QAED,MAAM,MAAM,GAAG,WAAW,CAAC,MAAM,GAAG,CAAC;YACnC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;YACxB,CAAC,CAAC,iCAAiC,OAAO,EAAE,CAAC;QAE/C,OAAO,IAAI,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE;YACjC,YAAY;YACZ,eAAe,EAAE,OAAO,CAAC,MAAM;YAC/B,SAAS;SACV,CAAC,CAAC;IACL,CAAC;CACF"}
1
+ {"version":3,"file":"grep.js","sourceRoot":"","sources":["../src/grep.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -11,6 +11,7 @@ export { FileReadTool } from './file-read.js';
11
11
  export { FileWriteTool } from './file-write.js';
12
12
  export { FileEditTool } from './file-edit.js';
13
13
  export { ShellExecTool } from './shell-exec.js';
14
+ export { BashTool } from './bash.js';
14
15
  export { GrepTool } from './grep.js';
15
16
  export { GlobTool } from './glob.js';
16
17
  export { GitOpsTool } from './git-ops.js';
@@ -20,7 +21,10 @@ export { SecurityScanTool } from './security-scan.js';
20
21
  export type { SecurityFinding, SecurityReport, FindingSeverity } from './security-scan.js';
21
22
  export { BrowserTool } from './browser-tool.js';
22
23
  export { WebSearchTool } from './web-search.js';
24
+ export type { GeminiSearchConfig } from './web-search.js';
25
+ export { ParallelWebSearchTool } from './parallel-web-search.js';
23
26
  export { ToolRegistry, createDefaultRegistry, createDesignRegistry } from './tool-registry.js';
27
+ export type { RegistryOptions } from './tool-registry.js';
24
28
  export { DevServerManager } from './dev-server-manager.js';
25
29
  export type { DevServerManagerEvents } from './dev-server-manager.js';
26
30
  export { DesignSnapshotTool, DesignScreenshotTool, DesignNavigateTool, DesignResizeTool, DesignInspectTool, DesignScrollTool, createDesignTools, setDesignBrowserSession, clearDesignBrowserSession, } from './design-tools.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,YAAY,EACV,cAAc,EACd,QAAQ,EACR,UAAU,EACV,mBAAmB,GACpB,MAAM,cAAc,CAAC;AAGtB,YAAY,EACV,YAAY,EACZ,SAAS,EACT,aAAa,EACb,cAAc,EACd,cAAc,EACd,eAAe,EACf,aAAa,EACb,cAAc,EACd,cAAc,EACd,eAAe,EACf,SAAS,EACT,SAAS,EACT,UAAU,EACV,SAAS,EACT,UAAU,EACV,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,cAAc,EACd,eAAe,EACf,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAG1C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,YAAY,EAAE,eAAe,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC3F,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAGhD,OAAO,EAAE,YAAY,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAG/F,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,YAAY,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AAGtE,OAAO,EACL,kBAAkB,EAClB,oBAAoB,EACpB,kBAAkB,EAClB,gBAAgB,EAChB,iBAAiB,EACjB,gBAAgB,EAChB,iBAAiB,EACjB,uBAAuB,EACvB,yBAAyB,GAC1B,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EACL,YAAY,EACZ,mBAAmB,EACnB,eAAe,EACf,eAAe,EACf,YAAY,EACZ,WAAW,EACX,cAAc,EACd,cAAc,GACf,MAAM,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,YAAY,EACV,cAAc,EACd,QAAQ,EACR,UAAU,EACV,mBAAmB,GACpB,MAAM,cAAc,CAAC;AAGtB,YAAY,EACV,YAAY,EACZ,SAAS,EACT,aAAa,EACb,cAAc,EACd,cAAc,EACd,eAAe,EACf,aAAa,EACb,cAAc,EACd,cAAc,EACd,eAAe,EACf,SAAS,EACT,SAAS,EACT,UAAU,EACV,SAAS,EACT,UAAU,EACV,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,cAAc,EACd,eAAe,EACf,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAG1C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,YAAY,EAAE,eAAe,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC3F,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,YAAY,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAC1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAGjE,OAAO,EAAE,YAAY,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC/F,YAAY,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAG1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,YAAY,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AAGtE,OAAO,EACL,kBAAkB,EAClB,oBAAoB,EACpB,kBAAkB,EAClB,gBAAgB,EAChB,iBAAiB,EACjB,gBAAgB,EAChB,iBAAiB,EACjB,uBAAuB,EACvB,yBAAyB,GAC1B,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EACL,YAAY,EACZ,mBAAmB,EACnB,eAAe,EACf,eAAe,EACf,YAAY,EACZ,WAAW,EACX,cAAc,EACd,cAAc,GACf,MAAM,iBAAiB,CAAC"}
package/dist/index.js CHANGED
@@ -11,6 +11,7 @@ export { FileReadTool } from './file-read.js';
11
11
  export { FileWriteTool } from './file-write.js';
12
12
  export { FileEditTool } from './file-edit.js';
13
13
  export { ShellExecTool } from './shell-exec.js';
14
+ export { BashTool } from './bash.js';
14
15
  export { GrepTool } from './grep.js';
15
16
  export { GlobTool } from './glob.js';
16
17
  export { GitOpsTool } from './git-ops.js';
@@ -19,6 +20,7 @@ export { CodeSearchTool } from './code-search.js';
19
20
  export { SecurityScanTool } from './security-scan.js';
20
21
  export { BrowserTool } from './browser-tool.js';
21
22
  export { WebSearchTool } from './web-search.js';
23
+ export { ParallelWebSearchTool } from './parallel-web-search.js';
22
24
  // Registry
23
25
  export { ToolRegistry, createDefaultRegistry, createDesignRegistry } from './tool-registry.js';
24
26
  // Dev Server Manager (Design Mode)
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAsCH,aAAa;AACb,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C,uBAAuB;AACvB,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,WAAW;AACX,OAAO,EAAE,YAAY,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAE/F,mCAAmC;AACnC,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAG3D,oBAAoB;AACpB,OAAO,EACL,kBAAkB,EAClB,oBAAoB,EACpB,kBAAkB,EAClB,gBAAgB,EAChB,iBAAiB,EACjB,gBAAgB,EAChB,iBAAiB,EACjB,uBAAuB,EACvB,yBAAyB,GAC1B,MAAM,mBAAmB,CAAC;AAE3B,aAAa;AACb,OAAO,EACL,YAAY,EACZ,mBAAmB,EACnB,eAAe,EACf,eAAe,EACf,YAAY,EACZ,WAAW,EACX,cAAc,EACd,cAAc,GACf,MAAM,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAsCH,aAAa;AACb,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C,uBAAuB;AACvB,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAEjE,WAAW;AACX,OAAO,EAAE,YAAY,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAG/F,mCAAmC;AACnC,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAG3D,oBAAoB;AACpB,OAAO,EACL,kBAAkB,EAClB,oBAAoB,EACpB,kBAAkB,EAClB,gBAAgB,EAChB,iBAAiB,EACjB,gBAAgB,EAChB,iBAAiB,EACjB,uBAAuB,EACvB,yBAAyB,GAC1B,MAAM,mBAAmB,CAAC;AAE3B,aAAa;AACb,OAAO,EACL,YAAY,EACZ,mBAAmB,EACnB,eAAe,EACf,eAAe,EACf,YAAY,EACZ,WAAW,EACX,cAAc,EACd,cAAc,GACf,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * @yuaone/tools — parallel_web_search tool
3
+ *
4
+ * Runs multiple web searches in parallel (up to 5 queries simultaneously).
5
+ * Delegates each query to WebSearchTool, which uses:
6
+ * 1. Gemini native Google Search (if configured)
7
+ * 2. DuckDuckGo HTML fallback
8
+ * 3. SearX fallback
9
+ */
10
+ import type { ParameterDef, RiskLevel, ToolResult } from './types.js';
11
+ import { BaseTool } from './base-tool.js';
12
+ import { type GeminiSearchConfig } from './web-search.js';
13
+ export declare class ParallelWebSearchTool extends BaseTool {
14
+ readonly name = "parallel_web_search";
15
+ readonly description = "Search the web for multiple queries in parallel. Returns combined results. Use when you need to research several different topics or compare sources simultaneously.";
16
+ readonly riskLevel: RiskLevel;
17
+ readonly parameters: Record<string, ParameterDef>;
18
+ private readonly searcher;
19
+ constructor(geminiConfig?: GeminiSearchConfig);
20
+ execute(args: Record<string, unknown>, workDir: string, abortSignal?: AbortSignal): Promise<ToolResult>;
21
+ }
22
+ //# sourceMappingURL=parallel-web-search.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parallel-web-search.d.ts","sourceRoot":"","sources":["../src/parallel-web-search.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACtE,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAiB,KAAK,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAIzE,qBAAa,qBAAsB,SAAQ,QAAQ;IACjD,QAAQ,CAAC,IAAI,yBAAyB;IACtC,QAAQ,CAAC,WAAW,0KACqJ;IACzK,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAS;IAEtC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAO/C;IAEF,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAgB;gBAE7B,YAAY,CAAC,EAAE,kBAAkB;IAKvC,OAAO,CACX,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,OAAO,EAAE,MAAM,EACf,WAAW,CAAC,EAAE,WAAW,GACxB,OAAO,CAAC,UAAU,CAAC;CA4CvB"}
@@ -0,0 +1,64 @@
1
+ /**
2
+ * @yuaone/tools — parallel_web_search tool
3
+ *
4
+ * Runs multiple web searches in parallel (up to 5 queries simultaneously).
5
+ * Delegates each query to WebSearchTool, which uses:
6
+ * 1. Gemini native Google Search (if configured)
7
+ * 2. DuckDuckGo HTML fallback
8
+ * 3. SearX fallback
9
+ */
10
+ import { BaseTool } from './base-tool.js';
11
+ import { WebSearchTool } from './web-search.js';
12
+ const MAX_PARALLEL_QUERIES = 5;
13
+ export class ParallelWebSearchTool extends BaseTool {
14
+ name = 'parallel_web_search';
15
+ description = 'Search the web for multiple queries in parallel. Returns combined results. Use when you need to research several different topics or compare sources simultaneously.';
16
+ riskLevel = 'low';
17
+ parameters = {
18
+ queries: {
19
+ type: 'array',
20
+ description: `List of search queries to run in parallel (max ${MAX_PARALLEL_QUERIES})`,
21
+ required: true,
22
+ items: { type: 'string', description: 'A search query' },
23
+ },
24
+ };
25
+ searcher;
26
+ constructor(geminiConfig) {
27
+ super();
28
+ this.searcher = new WebSearchTool(geminiConfig);
29
+ }
30
+ async execute(args, workDir, abortSignal) {
31
+ const toolCallId = args._toolCallId ?? '';
32
+ const rawQueries = args.queries;
33
+ if (!Array.isArray(rawQueries) || rawQueries.length === 0) {
34
+ return this.fail(toolCallId, 'queries must be a non-empty array of strings');
35
+ }
36
+ const queries = rawQueries
37
+ .filter((q) => typeof q === 'string' && q.trim().length > 0)
38
+ .slice(0, MAX_PARALLEL_QUERIES);
39
+ if (queries.length === 0) {
40
+ return this.fail(toolCallId, 'queries array must contain at least one non-empty string');
41
+ }
42
+ // Run all searches in parallel
43
+ const settled = await Promise.allSettled(queries.map((q) => this.searcher.searchQuery(toolCallId, q, abortSignal)));
44
+ const lines = [
45
+ `Parallel search — ${queries.length} quer${queries.length === 1 ? 'y' : 'ies'}\n`,
46
+ ];
47
+ for (let i = 0; i < settled.length; i++) {
48
+ lines.push(`${'─'.repeat(60)}`);
49
+ lines.push(`Query ${i + 1}: "${queries[i]}"`);
50
+ lines.push('');
51
+ const r = settled[i];
52
+ if (r.status === 'fulfilled') {
53
+ lines.push(r.value.output);
54
+ }
55
+ else {
56
+ const msg = r.reason instanceof Error ? r.reason.message : String(r.reason);
57
+ lines.push(`Error: ${msg}`);
58
+ }
59
+ lines.push('');
60
+ }
61
+ return this.ok(toolCallId, lines.join('\n'));
62
+ }
63
+ }
64
+ //# sourceMappingURL=parallel-web-search.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parallel-web-search.js","sourceRoot":"","sources":["../src/parallel-web-search.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import { BaseTool } from './base-tool.js';
2
+ import type { ToolResult } from '@yuaone/core';
3
+ import type { ParameterDef, RiskLevel } from './types.js';
4
+ /**
5
+ * task_complete — signals that the agent has finished its task.
6
+ * The agent MUST call this tool when done. The loop intercepts this
7
+ * call and terminates with GOAL_ACHIEVED, using `summary` as the
8
+ * final response shown to the user.
9
+ *
10
+ * Protocol-level completion signal: language-agnostic, CoT-safe.
11
+ */
12
+ export declare class TaskCompleteTool extends BaseTool {
13
+ readonly name = "task_complete";
14
+ readonly description: string;
15
+ readonly riskLevel: RiskLevel;
16
+ readonly parameters: Record<string, ParameterDef>;
17
+ execute(args: Record<string, unknown>, _workDir: string, _abortSignal?: AbortSignal): Promise<ToolResult>;
18
+ }
19
+ //# sourceMappingURL=task-complete.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task-complete.d.ts","sourceRoot":"","sources":["../src/task-complete.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE1D;;;;;;;GAOG;AACH,qBAAa,gBAAiB,SAAQ,QAAQ;IAC5C,QAAQ,CAAC,IAAI,mBAAmB;IAChC,QAAQ,CAAC,WAAW,SAGqE;IACzF,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAS;IAEtC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAM/C;IAEI,OAAO,CACX,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,QAAQ,EAAE,MAAM,EAChB,YAAY,CAAC,EAAE,WAAW,GACzB,OAAO,CAAC,UAAU,CAAC;CAMvB"}
@@ -0,0 +1,30 @@
1
+ import { BaseTool } from './base-tool.js';
2
+ /**
3
+ * task_complete — signals that the agent has finished its task.
4
+ * The agent MUST call this tool when done. The loop intercepts this
5
+ * call and terminates with GOAL_ACHIEVED, using `summary` as the
6
+ * final response shown to the user.
7
+ *
8
+ * Protocol-level completion signal: language-agnostic, CoT-safe.
9
+ */
10
+ export class TaskCompleteTool extends BaseTool {
11
+ name = 'task_complete';
12
+ description = 'Signal that your task is fully complete. Call this ONLY when you have finished all work. ' +
13
+ 'Provide a concise summary of what was accomplished. ' +
14
+ 'DO NOT call this if you still have pending actions or need to use other tools first.';
15
+ riskLevel = 'low';
16
+ parameters = {
17
+ summary: {
18
+ type: 'string',
19
+ description: 'A concise summary of the completed work (1-3 sentences).',
20
+ required: true,
21
+ },
22
+ };
23
+ async execute(args, _workDir, _abortSignal) {
24
+ const summary = String(args['summary'] ?? '');
25
+ // The actual loop termination is handled by the agent-loop intercepting this tool call.
26
+ // This execute() is a fallback that should not normally be reached.
27
+ return this.ok('', `task_complete: ${summary}`);
28
+ }
29
+ }
30
+ //# sourceMappingURL=task-complete.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task-complete.js","sourceRoot":"","sources":["../src/task-complete.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAI1C;;;;;;;GAOG;AACH,MAAM,OAAO,gBAAiB,SAAQ,QAAQ;IACnC,IAAI,GAAG,eAAe,CAAC;IACvB,WAAW,GAClB,2FAA2F;QAC3F,sDAAsD;QACtD,sFAAsF,CAAC;IAChF,SAAS,GAAc,KAAK,CAAC;IAE7B,UAAU,GAAiC;QAClD,OAAO,EAAE;YACP,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,0DAA0D;YACvE,QAAQ,EAAE,IAAI;SACf;KACF,CAAC;IAEF,KAAK,CAAC,OAAO,CACX,IAA6B,EAC7B,QAAgB,EAChB,YAA0B;QAE1B,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC;QAC9C,wFAAwF;QACxF,oEAAoE;QACpE,OAAO,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,kBAAkB,OAAO,EAAE,CAAC,CAAC;IAClD,CAAC;CACF"}
@@ -54,10 +54,16 @@ export declare class ToolRegistry {
54
54
  /** Get the number of registered tools. */
55
55
  get size(): number;
56
56
  }
57
+ import { type GeminiSearchConfig } from './web-search.js';
58
+ export interface RegistryOptions {
59
+ /** Pass Gemini config to enable native Google Search for web_search and parallel_web_search */
60
+ geminiSearch?: GeminiSearchConfig;
61
+ }
57
62
  /**
58
63
  * Create a ToolRegistry pre-loaded with all built-in YUAN tools.
64
+ * Pass `opts.geminiSearch` to enable Gemini native Google Search as the search backend.
59
65
  */
60
- export declare function createDefaultRegistry(): ToolRegistry;
66
+ export declare function createDefaultRegistry(opts?: RegistryOptions): ToolRegistry;
61
67
  /**
62
68
  * Create a ToolRegistry with all standard tools + design mode tools.
63
69
  *
@@ -1 +1 @@
1
- {"version":3,"file":"tool-registry.d.ts","sourceRoot":"","sources":["../src/tool-registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAY,YAAY,EAAE,MAAM,cAAc,CAAC;AACvF,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE/C,qBAAa,YAAY;IACvB,OAAO,CAAC,KAAK,CAA+B;IAE5C,gCAAgC;IAChC,QAAQ,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI;IAO9B,uCAAuC;IACvC,WAAW,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,IAAI;IAMpC,0BAA0B;IAC1B,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS;IAIvC,qCAAqC;IACrC,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAI1B,sCAAsC;IACtC,SAAS,IAAI,MAAM,EAAE;IAIrB,mFAAmF;IACnF,aAAa,IAAI,cAAc,EAAE;IAIjC;;;;;OAKG;IACG,OAAO,CACX,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,UAAU,CAAC;IAetB;;;;;;OAMG;IACG,iBAAiB,CACrB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,OAAO,EAAE,MAAM,EACf,WAAW,CAAC,EAAE,WAAW,GACxB,OAAO,CAAC,UAAU,CAAC;IAetB;;;;;;;;;;;OAWG;IACH,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,YAAY;IA0CzC,0CAA0C;IAC1C,IAAI,IAAI,IAAI,MAAM,CAEjB;CACF;AAgBD;;GAEG;AACH,wBAAgB,qBAAqB,IAAI,YAAY,CAgBpD;AAED;;;;;;;GAOG;AACH,wBAAsB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAOjF"}
1
+ {"version":3,"file":"tool-registry.d.ts","sourceRoot":"","sources":["../src/tool-registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAY,YAAY,EAAE,MAAM,cAAc,CAAC;AACvF,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE/C,qBAAa,YAAY;IACvB,OAAO,CAAC,KAAK,CAA+B;IAE5C,gCAAgC;IAChC,QAAQ,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI;IAO9B,uCAAuC;IACvC,WAAW,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,IAAI;IAMpC,0BAA0B;IAC1B,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS;IAIvC,qCAAqC;IACrC,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAI1B,sCAAsC;IACtC,SAAS,IAAI,MAAM,EAAE;IAIrB,mFAAmF;IACnF,aAAa,IAAI,cAAc,EAAE;IAIjC;;;;;OAKG;IACG,OAAO,CACX,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,UAAU,CAAC;IAetB;;;;;;OAMG;IACG,iBAAiB,CACrB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,OAAO,EAAE,MAAM,EACf,WAAW,CAAC,EAAE,WAAW,GACxB,OAAO,CAAC,UAAU,CAAC;IAetB;;;;;;;;;;;OAWG;IACH,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,YAAY;IA0CzC,0CAA0C;IAC1C,IAAI,IAAI,IAAI,MAAM,CAEjB;CACF;AAeD,OAAO,EAAiB,KAAK,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAIzE,MAAM,WAAW,eAAe;IAC9B,+FAA+F;IAC/F,YAAY,CAAC,EAAE,kBAAkB,CAAC;CACnC;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,CAAC,EAAE,eAAe,GAAG,YAAY,CAmB1E;AAED;;;;;;;GAOG;AACH,wBAAsB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAOjF"}
@@ -137,6 +137,7 @@ import { FileReadTool } from './file-read.js';
137
137
  import { FileWriteTool } from './file-write.js';
138
138
  import { FileEditTool } from './file-edit.js';
139
139
  import { ShellExecTool } from './shell-exec.js';
140
+ import { BashTool } from './bash.js';
140
141
  import { GrepTool } from './grep.js';
141
142
  import { GlobTool } from './glob.js';
142
143
  import { GitOpsTool } from './git-ops.js';
@@ -144,23 +145,29 @@ import { TestRunTool } from './test-run.js';
144
145
  import { CodeSearchTool } from './code-search.js';
145
146
  import { SecurityScanTool } from './security-scan.js';
146
147
  import { WebSearchTool } from './web-search.js';
148
+ import { ParallelWebSearchTool } from './parallel-web-search.js';
149
+ import { TaskCompleteTool } from './task-complete.js';
147
150
  /**
148
151
  * Create a ToolRegistry pre-loaded with all built-in YUAN tools.
152
+ * Pass `opts.geminiSearch` to enable Gemini native Google Search as the search backend.
149
153
  */
150
- export function createDefaultRegistry() {
154
+ export function createDefaultRegistry(opts) {
151
155
  const registry = new ToolRegistry();
152
156
  registry.registerAll([
153
157
  new FileReadTool(),
154
158
  new FileWriteTool(),
155
159
  new FileEditTool(),
156
160
  new ShellExecTool(),
161
+ new BashTool(),
157
162
  new GrepTool(),
158
163
  new GlobTool(),
159
164
  new GitOpsTool(),
160
165
  new TestRunTool(),
161
166
  new CodeSearchTool(),
162
167
  new SecurityScanTool(),
163
- new WebSearchTool(),
168
+ new WebSearchTool(opts?.geminiSearch),
169
+ new ParallelWebSearchTool(opts?.geminiSearch),
170
+ new TaskCompleteTool(),
164
171
  ]);
165
172
  return registry;
166
173
  }
@@ -1 +1 @@
1
- {"version":3,"file":"tool-registry.js","sourceRoot":"","sources":["../src/tool-registry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tool-registry.js","sourceRoot":"","sources":["../src/tool-registry.ts"],"names":[],"mappings":"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"}
@@ -2,19 +2,30 @@
2
2
  * @yuaone/tools — web_search tool
3
3
  *
4
4
  * Searches the web or fetches a URL and returns readable text.
5
- * - search: DuckDuckGo Instant Answer API (no key required), fallback to SearX
5
+ * - search: Gemini google_search grounding (if geminiConfig provided), else DDG HTML, else SearX
6
6
  * - fetch: Node.js built-in fetch, strips HTML, 50 000 char limit
7
7
  */
8
8
  import type { ParameterDef, RiskLevel, ToolResult } from './types.js';
9
9
  import { BaseTool } from './base-tool.js';
10
+ /** Optional Gemini backend — uses native Google Search grounding (no API key needed beyond the Gemini key) */
11
+ export interface GeminiSearchConfig {
12
+ apiKey: string;
13
+ /** gemini-2.0-flash or gemini-2.5-pro recommended */
14
+ model: string;
15
+ }
10
16
  export declare class WebSearchTool extends BaseTool {
17
+ private readonly geminiConfig?;
11
18
  readonly name = "web_search";
12
19
  readonly description = "Search the web or fetch a URL. Use for researching libraries, APIs, error messages, or documentation.";
13
20
  readonly riskLevel: RiskLevel;
21
+ constructor(geminiConfig?: GeminiSearchConfig | undefined);
14
22
  readonly parameters: Record<string, ParameterDef>;
15
23
  execute(args: Record<string, unknown>, _workDir: string, abortSignal?: AbortSignal): Promise<ToolResult>;
24
+ /** Exposed for parallel_web_search to reuse */
25
+ searchQuery(toolCallId: string, query: string, abortSignal?: AbortSignal): Promise<ToolResult>;
16
26
  private runSearch;
17
- private duckDuckGo;
27
+ private geminiSearch;
28
+ private duckDuckGoHtml;
18
29
  private searx;
19
30
  private formatResults;
20
31
  private runFetch;
@@ -1 +1 @@
1
- {"version":3,"file":"web-search.d.ts","sourceRoot":"","sources":["../src/web-search.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACtE,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAiE1C,qBAAa,aAAc,SAAQ,QAAQ;IACzC,QAAQ,CAAC,IAAI,gBAAgB;IAC7B,QAAQ,CAAC,WAAW,2GACsF;IAC1G,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAS;IAEtC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAiB/C;IAEI,OAAO,CACX,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,QAAQ,EAAE,MAAM,EAChB,WAAW,CAAC,EAAE,WAAW,GACxB,OAAO,CAAC,UAAU,CAAC;YA6BR,SAAS;YA+BT,UAAU;YAmCV,KAAK;IAuBnB,OAAO,CAAC,aAAa;YAkBP,QAAQ;CA6CvB"}
1
+ {"version":3,"file":"web-search.d.ts","sourceRoot":"","sources":["../src/web-search.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACtE,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAQ1C,8GAA8G;AAC9G,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,qDAAqD;IACrD,KAAK,EAAE,MAAM,CAAC;CACf;AAiED,qBAAa,aAAc,SAAQ,QAAQ;IAM7B,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC;IAL1C,QAAQ,CAAC,IAAI,gBAAgB;IAC7B,QAAQ,CAAC,WAAW,2GACsF;IAC1G,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAS;gBAET,YAAY,CAAC,EAAE,kBAAkB,YAAA;IAI9D,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAiB/C;IAEI,OAAO,CACX,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,QAAQ,EAAE,MAAM,EAChB,WAAW,CAAC,EAAE,WAAW,GACxB,OAAO,CAAC,UAAU,CAAC;IA6BtB,+CAA+C;IACzC,WAAW,CACf,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,EACb,WAAW,CAAC,EAAE,WAAW,GACxB,OAAO,CAAC,UAAU,CAAC;YAIR,SAAS;YA2CT,YAAY;YAqDZ,cAAc;YA4Dd,KAAK;IAuBnB,OAAO,CAAC,aAAa;YAkBP,QAAQ;CA6CvB"}
@@ -2,14 +2,14 @@
2
2
  * @yuaone/tools — web_search tool
3
3
  *
4
4
  * Searches the web or fetches a URL and returns readable text.
5
- * - search: DuckDuckGo Instant Answer API (no key required), fallback to SearX
5
+ * - search: Gemini google_search grounding (if geminiConfig provided), else DDG HTML, else SearX
6
6
  * - fetch: Node.js built-in fetch, strips HTML, 50 000 char limit
7
7
  */
8
8
  import { BaseTool } from './base-tool.js';
9
9
  const FETCH_TIMEOUT_MS = 15_000;
10
10
  const FETCH_MAX_CHARS = 50_000;
11
- const USER_AGENT = 'yuan-agent/1.0 (+https://github.com/yuaone/yuan)';
12
- const DDG_URL = 'https://api.duckduckgo.com/?q={query}&format=json&no_html=1&skip_disambig=1';
11
+ const USER_AGENT = 'Mozilla/5.0 (compatible; yuan-agent/1.0; +https://github.com/yuaone/yuan)';
12
+ const DDG_HTML_URL = 'https://html.duckduckgo.com/html/';
13
13
  const SEARX_URL = 'https://searx.be/search?q={query}&format=json';
14
14
  // ─── Helpers ─────────────────────────────────────────────────────────
15
15
  function stripHtml(html) {
@@ -33,9 +33,14 @@ async function fetchWithTimeout(url, timeoutMs) {
33
33
  }
34
34
  // ─── Tool ────────────────────────────────────────────────────────────
35
35
  export class WebSearchTool extends BaseTool {
36
+ geminiConfig;
36
37
  name = 'web_search';
37
38
  description = 'Search the web or fetch a URL. Use for researching libraries, APIs, error messages, or documentation.';
38
39
  riskLevel = 'low';
40
+ constructor(geminiConfig) {
41
+ super();
42
+ this.geminiConfig = geminiConfig;
43
+ }
39
44
  parameters = {
40
45
  operation: {
41
46
  type: 'string',
@@ -77,10 +82,26 @@ export class WebSearchTool extends BaseTool {
77
82
  return this.fail(toolCallId, `Unknown operation: ${operation}. Must be "search" or "fetch".`);
78
83
  }
79
84
  // ─── search ────────────────────────────────────────────────────────
85
+ /** Exposed for parallel_web_search to reuse */
86
+ async searchQuery(toolCallId, query, abortSignal) {
87
+ return this.runSearch(toolCallId, query, abortSignal);
88
+ }
80
89
  async runSearch(toolCallId, query, abortSignal) {
81
- // 1. Try DuckDuckGo
90
+ // 1. Gemini native Google Search (best quality — uses Google's index)
91
+ if (this.geminiConfig) {
92
+ try {
93
+ const results = await this.geminiSearch(query, this.geminiConfig);
94
+ if (results.length > 0) {
95
+ return this.ok(toolCallId, this.formatResults(results, query, 'Google'));
96
+ }
97
+ }
98
+ catch {
99
+ // fall through to DDG
100
+ }
101
+ }
102
+ // 2. Try DuckDuckGo HTML (real web results)
82
103
  try {
83
- const results = await this.duckDuckGo(query, abortSignal);
104
+ const results = await this.duckDuckGoHtml(query, abortSignal);
84
105
  if (results.length > 0) {
85
106
  return this.ok(toolCallId, this.formatResults(results, query, 'DuckDuckGo'));
86
107
  }
@@ -100,34 +121,104 @@ export class WebSearchTool extends BaseTool {
100
121
  }
101
122
  return this.ok(toolCallId, `No results found for: ${query}`);
102
123
  }
103
- async duckDuckGo(query, abortSignal) {
104
- const url = buildUrl(DDG_URL, query);
105
- const resp = await fetchWithTimeout(url, FETCH_TIMEOUT_MS);
124
+ async geminiSearch(query, config) {
125
+ const endpoint = `https://generativelanguage.googleapis.com/v1beta/models/${config.model}:generateContent?key=${config.apiKey}`;
126
+ const controller = new AbortController();
127
+ const timer = setTimeout(() => controller.abort(), FETCH_TIMEOUT_MS);
128
+ let resp;
129
+ try {
130
+ resp = await fetch(endpoint, {
131
+ method: 'POST',
132
+ headers: { 'Content-Type': 'application/json' },
133
+ signal: controller.signal,
134
+ body: JSON.stringify({
135
+ contents: [{ role: 'user', parts: [{ text: query }] }],
136
+ tools: [{ google_search: {} }],
137
+ generationConfig: { maxOutputTokens: 1024 },
138
+ }),
139
+ });
140
+ }
141
+ finally {
142
+ clearTimeout(timer);
143
+ }
106
144
  if (!resp.ok)
107
- throw new Error(`DuckDuckGo HTTP ${resp.status}`);
145
+ throw new Error(`Gemini search HTTP ${resp.status}`);
108
146
  const data = (await resp.json());
147
+ const candidate = data?.candidates?.[0];
148
+ const meta = candidate?.groundingMetadata;
149
+ if (!meta?.groundingChunks?.length)
150
+ return [];
109
151
  const items = [];
110
- // Abstract (top answer)
111
- if (data.AbstractText) {
112
- items.push({ title: 'Abstract', url: data.AbstractURL ?? '', snippet: data.AbstractText });
113
- }
114
- // Instant results
115
- for (const r of data.Results ?? []) {
116
- if (r.Text) {
117
- items.push({ title: r.Text.slice(0, 80), url: r.FirstURL ?? '', snippet: r.Text });
118
- }
152
+ for (let i = 0; i < meta.groundingChunks.length; i++) {
153
+ const chunk = meta.groundingChunks[i];
154
+ if (!chunk?.web)
155
+ continue;
156
+ // Find snippet from groundingSupports that references this chunk
157
+ const support = meta.groundingSupports?.find((s) => s.groundingChunkIndices?.includes(i));
158
+ const snippet = support?.segment?.text ?? '';
159
+ items.push({
160
+ title: chunk.web.title ?? chunk.web.uri ?? '',
161
+ url: chunk.web.uri ?? '',
162
+ snippet,
163
+ });
119
164
  if (items.length >= 5)
120
165
  break;
121
166
  }
122
- // Related topics
123
- for (const t of data.RelatedTopics ?? []) {
167
+ return items;
168
+ }
169
+ async duckDuckGoHtml(query, _abortSignal) {
170
+ const controller = new AbortController();
171
+ const timer = setTimeout(() => controller.abort(), FETCH_TIMEOUT_MS);
172
+ let resp;
173
+ try {
174
+ resp = await fetch(DDG_HTML_URL, {
175
+ method: 'POST',
176
+ headers: {
177
+ 'User-Agent': USER_AGENT,
178
+ 'Content-Type': 'application/x-www-form-urlencoded',
179
+ 'Accept': 'text/html,application/xhtml+xml',
180
+ },
181
+ body: `q=${encodeURIComponent(query)}&b=&kl=us-en`,
182
+ signal: controller.signal,
183
+ });
184
+ }
185
+ finally {
186
+ clearTimeout(timer);
187
+ }
188
+ if (!resp.ok)
189
+ throw new Error(`DuckDuckGo HTTP ${resp.status}`);
190
+ const html = await resp.text();
191
+ const items = [];
192
+ // Extract result links: <a class="result__a" href="/l/?uddg=...">Title</a>
193
+ const linkPattern = /class="result__a"[^>]*href="([^"]*)"[^>]*>([\s\S]*?)<\/a>/g;
194
+ // Extract snippets: <a class="result__snippet"...>...</a>
195
+ const snippetPattern = /class="result__snippet"[^>]*>([\s\S]*?)<\/a>/g;
196
+ const links = [...html.matchAll(linkPattern)];
197
+ const snippets = [...html.matchAll(snippetPattern)];
198
+ for (let i = 0; i < Math.min(links.length, 8); i++) {
199
+ const [, rawHref, rawTitle] = links[i];
200
+ const rawSnippet = snippets[i]?.[1] ?? '';
201
+ // DDG wraps URLs: /l/?uddg=<encoded> or /l/?kh=-1&uddg=<encoded>
202
+ let url = rawHref;
203
+ const uddgMatch = url.match(/[?&]uddg=([^&]+)/);
204
+ if (uddgMatch) {
205
+ try {
206
+ url = decodeURIComponent(uddgMatch[1]);
207
+ }
208
+ catch { /* keep raw */ }
209
+ }
210
+ // Skip DDG internal URLs
211
+ if (url.startsWith('/') && !uddgMatch)
212
+ continue;
213
+ const title = stripHtml(rawTitle).trim();
214
+ const snippet = stripHtml(rawSnippet).trim();
215
+ if (!title && !snippet)
216
+ continue;
217
+ items.push({ title: title || url, url, snippet });
124
218
  if (items.length >= 5)
125
219
  break;
126
- if (t.Text) {
127
- items.push({ title: t.Text.slice(0, 80), url: t.FirstURL ?? '', snippet: t.Text });
128
- }
129
220
  }
130
- return items.slice(0, 5);
221
+ return items;
131
222
  }
132
223
  async searx(query, _abortSignal) {
133
224
  const url = buildUrl(SEARX_URL, query);
@@ -1 +1 @@
1
- {"version":3,"file":"web-search.js","sourceRoot":"","sources":["../src/web-search.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"web-search.js","sourceRoot":"","sources":["../src/web-search.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@yuaone/tools",
3
- "version": "0.9.2",
3
+ "version": "0.9.4",
4
4
  "description": "YUAN Agent Tool Implementations",
5
5
  "license": "AGPL-3.0",
6
6
  "type": "module",
@@ -37,7 +37,7 @@
37
37
  "fast-glob": "^3.3.3",
38
38
  "node-pty": "^1.1.0",
39
39
  "playwright": "^1.52.0",
40
- "@yuaone/core": "0.9.15"
40
+ "@yuaone/core": "0.9.24"
41
41
  },
42
42
  "devDependencies": {
43
43
  "@types/node": "^25.3.5",