@yuaone/tools 0.9.3 → 0.9.5
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 +17 -0
- package/dist/bash.d.ts.map +1 -0
- package/dist/bash.js +150 -0
- package/dist/bash.js.map +1 -0
- package/dist/grep.d.ts +2 -5
- package/dist/grep.d.ts.map +1 -1
- package/dist/grep.js +208 -86
- package/dist/grep.js.map +1 -1
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/parallel-web-search.d.ts +22 -0
- package/dist/parallel-web-search.d.ts.map +1 -0
- package/dist/parallel-web-search.js +64 -0
- package/dist/parallel-web-search.js.map +1 -0
- package/dist/tool-registry.d.ts +7 -1
- package/dist/tool-registry.d.ts.map +1 -1
- package/dist/tool-registry.js +7 -2
- package/dist/tool-registry.js.map +1 -1
- package/dist/web-search.d.ts +13 -2
- package/dist/web-search.d.ts.map +1 -1
- package/dist/web-search.js +115 -24
- package/dist/web-search.js.map +1 -1
- package/package.json +2 -2
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
|
package/dist/bash.js.map
ADDED
|
@@ -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
|
|
5
|
-
*
|
|
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';
|
package/dist/grep.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"grep.d.ts","sourceRoot":"","sources":["../src/grep.ts"],"names":[],"mappings":"AAAA
|
|
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
|
|
5
|
-
*
|
|
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 =
|
|
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
|
-
//
|
|
79
|
-
let
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
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
|
|
94
|
-
|
|
95
|
-
|
|
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
|
-
|
|
108
|
-
|
|
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(
|
|
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 +
|
|
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
|
-
|
|
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":"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"}
|
|
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';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -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;
|
|
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;
|
|
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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"}
|
package/dist/tool-registry.d.ts
CHANGED
|
@@ -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;
|
|
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"}
|
package/dist/tool-registry.js
CHANGED
|
@@ -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,24 +145,28 @@ 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';
|
|
147
149
|
import { TaskCompleteTool } from './task-complete.js';
|
|
148
150
|
/**
|
|
149
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.
|
|
150
153
|
*/
|
|
151
|
-
export function createDefaultRegistry() {
|
|
154
|
+
export function createDefaultRegistry(opts) {
|
|
152
155
|
const registry = new ToolRegistry();
|
|
153
156
|
registry.registerAll([
|
|
154
157
|
new FileReadTool(),
|
|
155
158
|
new FileWriteTool(),
|
|
156
159
|
new FileEditTool(),
|
|
157
160
|
new ShellExecTool(),
|
|
161
|
+
new BashTool(),
|
|
158
162
|
new GrepTool(),
|
|
159
163
|
new GlobTool(),
|
|
160
164
|
new GitOpsTool(),
|
|
161
165
|
new TestRunTool(),
|
|
162
166
|
new CodeSearchTool(),
|
|
163
167
|
new SecurityScanTool(),
|
|
164
|
-
new WebSearchTool(),
|
|
168
|
+
new WebSearchTool(opts?.geminiSearch),
|
|
169
|
+
new ParallelWebSearchTool(opts?.geminiSearch),
|
|
165
170
|
new TaskCompleteTool(),
|
|
166
171
|
]);
|
|
167
172
|
return registry;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-registry.js","sourceRoot":"","sources":["../src/tool-registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAKH,MAAM,OAAO,YAAY;IACf,KAAK,GAAG,IAAI,GAAG,EAAoB,CAAC;IAE5C,gCAAgC;IAChC,QAAQ,CAAC,IAAc;QACrB,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAC9B,MAAM,IAAI,KAAK,CAAC,4BAA4B,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QAC3D,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAClC,CAAC;IAED,uCAAuC;IACvC,WAAW,CAAC,KAAiB;QAC3B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACtB,CAAC;IACH,CAAC;IAED,0BAA0B;IAC1B,GAAG,CAAC,IAAY;QACd,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;IAED,qCAAqC;IACrC,GAAG,CAAC,IAAY;QACd,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;IAED,sCAAsC;IACtC,SAAS;QACP,OAAO,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;IAChC,CAAC;IAED,mFAAmF;IACnF,aAAa;QACX,OAAO,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC;IAC/D,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,OAAO,CACX,IAAY,EACZ,IAA6B,EAC7B,OAAe;QAEf,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAClC,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO;gBACL,YAAY,EAAG,IAAI,CAAC,WAAsB,IAAI,EAAE;gBAChD,IAAI;gBACJ,OAAO,EAAE,KAAK;gBACd,MAAM,EAAE,wBAAwB,IAAI,sBAAsB,IAAI,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;gBACvF,UAAU,EAAE,CAAC;aACd,CAAC;QACJ,CAAC;QAED,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACrC,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,iBAAiB,CACrB,IAAY,EACZ,IAA6B,EAC7B,OAAe,EACf,WAAyB;QAEzB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAClC,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO;gBACL,YAAY,EAAG,IAAI,CAAC,WAAsB,IAAI,EAAE;gBAChD,IAAI;gBACJ,OAAO,EAAE,KAAK;gBACd,MAAM,EAAE,wBAAwB,IAAI,sBAAsB,IAAI,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;gBACvF,UAAU,EAAE,CAAC;aACd,CAAC;QACJ,CAAC;QAED,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;IAClD,CAAC;IAED;;;;;;;;;;;OAWG;IACH,UAAU,CAAC,OAAe;QACxB,MAAM,QAAQ,GAAG,IAAI,CAAC;QACtB,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;QAEzC,OAAO;YACL,WAAW;YAEX,KAAK,CAAC,OAAO,CAAC,IAAc,EAAE,WAAyB;gBACrD,mEAAmE;gBACnE,IAAI,IAA6B,CAAC;gBAClC,IAAI,OAAO,IAAI,CAAC,SAAS,KAAK,QAAQ,EAAE,CAAC;oBACvC,IAAI,CAAC;wBACH,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAA4B,CAAC;oBAC/D,CAAC;oBAAC,MAAM,CAAC;wBACP,OAAO;4BACL,YAAY,EAAE,IAAI,CAAC,EAAE;4BACrB,IAAI,EAAE,IAAI,CAAC,IAAI;4BACf,MAAM,EAAE,kDAAkD,IAAI,CAAC,SAAS,EAAE;4BAC1E,OAAO,EAAE,KAAK;4BACd,UAAU,EAAE,CAAC;yBACd,CAAC;oBACJ,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACN,IAAI,GAAG,EAAE,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;gBAC/B,CAAC;gBAED,yCAAyC;gBACzC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,EAAE,CAAC;gBAE3B,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;gBAC7B,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;gBACvF,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;gBAE1C,uCAAuC;gBACvC,OAAO;oBACL,GAAG,MAAM;oBACT,UAAU;iBACX,CAAC;YACJ,CAAC;SACF,CAAC;IACJ,CAAC;IAED,0CAA0C;IAC1C,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;IACzB,CAAC;CACF;AAED,wEAAwE;AAExE,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,OAAO,EAAE,aAAa,
|
|
1
|
+
{"version":3,"file":"tool-registry.js","sourceRoot":"","sources":["../src/tool-registry.ts"],"names":[],"mappings":"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"}
|
package/dist/web-search.d.ts
CHANGED
|
@@ -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:
|
|
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
|
|
27
|
+
private geminiSearch;
|
|
28
|
+
private duckDuckGoHtml;
|
|
18
29
|
private searx;
|
|
19
30
|
private formatResults;
|
|
20
31
|
private runFetch;
|
package/dist/web-search.d.ts.map
CHANGED
|
@@ -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;
|
|
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"}
|
package/dist/web-search.js
CHANGED
|
@@ -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:
|
|
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
|
|
12
|
-
const
|
|
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.
|
|
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.
|
|
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
|
|
104
|
-
const
|
|
105
|
-
const
|
|
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(`
|
|
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
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
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
|
-
|
|
123
|
-
|
|
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
|
|
221
|
+
return items;
|
|
131
222
|
}
|
|
132
223
|
async searx(query, _abortSignal) {
|
|
133
224
|
const url = buildUrl(SEARX_URL, query);
|
package/dist/web-search.js.map
CHANGED
|
@@ -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.
|
|
3
|
+
"version": "0.9.5",
|
|
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.
|
|
40
|
+
"@yuaone/core": "0.9.39"
|
|
41
41
|
},
|
|
42
42
|
"devDependencies": {
|
|
43
43
|
"@types/node": "^25.3.5",
|