@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 +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/task-complete.d.ts +19 -0
- package/dist/task-complete.d.ts.map +1 -0
- package/dist/task-complete.js +30 -0
- package/dist/task-complete.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 +9 -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":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAElD,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;AAC1B,MAAM,UAAU,GAAG,OAAO,CAAC;AAyB3B,gFAAgF;AAEhF,SAAS,UAAU,CACjB,OAAe,EACf,SAAiB,EACjB,WAA+B,EAC/B,UAAkB,EAClB,YAAoB;IAEpB,OAAO,IAAI,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE;QAC9B,MAAM,IAAI,GAAa;YACrB,QAAQ;YACR,aAAa,EAAE,GAAG,EAAW,iDAAiD;YAC9E,QAAQ,EAAE,eAAe;YACzB,QAAQ,EAAE,OAAO;YACjB,QAAQ,EAAE,OAAO;YACjB,QAAQ,EAAE,QAAQ;YAClB,QAAQ,EAAE,QAAQ;YAClB,QAAQ,EAAE,WAAW;YACrB,IAAI,EAAE,OAAO;SACd,CAAC;QAEF,IAAI,WAAW,EAAE,CAAC;YAChB,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;QACnC,CAAC;QACD,IAAI,YAAY,GAAG,CAAC,EAAE,CAAC;YACrB,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC;QACxC,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAErB,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,IAAI,MAAM,GAAG,EAAE,CAAC;QAEhB,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,SAAS,EAAE,UAAU,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE;YACrF,MAAM,GAAG,GAAG,CAAC;YACb,MAAM,GAAG,MAAM,CAAC;YAEhB,4CAA4C;YAC5C,IAAI,GAAG,IAAK,GAA6B,CAAC,IAAI,KAAK,QAAQ,IAAK,GAAyB,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;gBACrG,2BAA2B;gBAC3B,IAAK,GAAyB,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;oBAC1C,QAAQ,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,YAAY,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;oBACjE,OAAO;gBACT,CAAC;YACH,CAAC;YAED,MAAM,OAAO,GAAgB,EAAE,CAAC;YAChC,IAAI,YAAY,GAAG,CAAC,CAAC;YAErB,mBAAmB;YACnB,MAAM,aAAa,GAAuD,IAAI,GAAG,EAAE,CAAC;YAEpF,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;gBACtC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;oBAAE,SAAS;gBAC3B,IAAI,KAAc,CAAC;gBACnB,IAAI,CAAC;oBACH,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAY,CAAC;gBACtC,CAAC;gBAAC,MAAM,CAAC;oBACP,SAAS;gBACX,CAAC;gBAED,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;oBAC3B,MAAM,EAAE,GAAG,KAAqB,CAAC;oBACjC,YAAY,EAAE,CAAC;oBACf,IAAI,OAAO,CAAC,MAAM,IAAI,UAAU;wBAAE,SAAS;oBAE3C,MAAM,QAAQ,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;oBACnC,MAAM,QAAQ,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;oBACvD,MAAM,OAAO,GAAG,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC;oBAEpC,MAAM,YAAY,GAAG,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC;wBACjD,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC;wBACxD,CAAC,CAAC,QAAQ,CAAC;oBAEb,MAAM,KAAK,GAAc;wBACvB,IAAI,EAAE,YAAY;wBAClB,IAAI,EAAE,OAAO;wBACb,OAAO,EAAE,QAAQ;qBAClB,CAAC;oBAEF,8BAA8B;oBAC9B,MAAM,GAAG,GAAG,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;oBACxC,IAAI,GAAG,IAAI,YAAY,GAAG,CAAC,EAAE,CAAC;wBAC5B,KAAK,CAAC,aAAa,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,CAAC;oBACxD,CAAC;oBACD,aAAa,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;oBAE/B,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACtB,CAAC;qBAAM,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,IAAI,YAAY,GAAG,CAAC,EAAE,CAAC;oBACxD,MAAM,EAAE,GAAG,KAAuB,CAAC;oBACnC,MAAM,QAAQ,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;oBACnC,MAAM,QAAQ,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;oBACvD,MAAM,OAAO,GAAG,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC;oBAEpC,MAAM,QAAQ,GAAG,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC;oBACxE,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;oBAC/B,IAAI,QAAQ,CAAC,MAAM,CAAC,MAAM,GAAG,YAAY;wBAAE,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;oBACnE,aAAa,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;oBAEtC,oDAAoD;oBACpD,MAAM,SAAS,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAE,CAAC;oBACvH,IAAI,SAAS,IAAI,SAAS,CAAC,IAAI,GAAG,OAAO,EAAE,CAAC;wBAC1C,SAAS,CAAC,YAAY,GAAG,SAAS,CAAC,YAAY,IAAI,EAAE,CAAC;wBACtD,IAAI,SAAS,CAAC,YAAY,CAAC,MAAM,GAAG,YAAY,EAAE,CAAC;4BACjD,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;wBACxC,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;YAED,QAAQ,CAAC,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC,CAAC;QACtC,CAAC,CAAC,CAAC;QAEH,KAAK,KAAK,CAAC;IACb,CAAC,CAAC,CAAC;AACL,CAAC;AAED,gFAAgF;AAEhF,KAAK,UAAU,kBAAkB,CAC/B,OAAe,EACf,SAAiB,EACjB,WAA+B,EAC/B,UAAkB,EAClB,YAAoB,EACpB,OAAe;IAEf,IAAI,KAAa,CAAC;IAClB,IAAI,CAAC;QACH,KAAK,GAAG,IAAI,MAAM,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IACnC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,YAAY,EAAE,CAAC,EAAE,CAAC;IAC1C,CAAC;IAED,IAAI,MAAM,GAAG,KAAK,CAAC;IACnB,IAAI,CAAC;QACH,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,CAAC;QAChC,MAAM,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC;IACtB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,YAAY,EAAE,CAAC,EAAE,CAAC;IAC1C,CAAC;IAED,IAAI,KAAe,CAAC;IACpB,IAAI,MAAM,EAAE,CAAC;QACX,KAAK,GAAG,CAAC,SAAS,CAAC,CAAC;IACtB,CAAC;SAAM,CAAC;QACN,IAAI,CAAC;YACH,KAAK,GAAG,MAAM,EAAE,CAAC,WAAW,IAAI,MAAM,EAAE;gBACtC,GAAG,EAAE,SAAS;gBACd,QAAQ,EAAE,IAAI;gBACd,MAAM,EAAE,CAAC,oBAAoB,EAAE,YAAY,EAAE,YAAY,EAAE,aAAa,CAAC;gBACzE,SAAS,EAAE,IAAI;gBACf,mBAAmB,EAAE,KAAK;aAC3B,CAAC,CAAC;QACL,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,YAAY,EAAE,CAAC,EAAE,CAAC;QAC1C,CAAC;IACH,CAAC;IAED,MAAM,OAAO,GAAgB,EAAE,CAAC;IAChC,IAAI,YAAY,GAAG,CAAC,CAAC;IAErB,KAAK,MAAM,QAAQ,IAAI,KAAK,EAAE,CAAC;QAC7B,IAAI,OAAO,CAAC,MAAM,IAAI,UAAU;YAAE,MAAM;QACxC,IAAI,OAAe,CAAC;QACpB,IAAI,CAAC;YACH,OAAO,GAAG,MAAM,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAC9C,CAAC;QAAC,MAAM,CAAC;YACP,SAAS;QACX,CAAC;QAED,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAClC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACtC,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC;YACpB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBAAE,SAAS;YACpC,YAAY,EAAE,CAAC;YACf,IAAI,OAAO,CAAC,MAAM,IAAI,UAAU;gBAAE,SAAS;YAE3C,MAAM,YAAY,GAAG,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC;gBAC/C,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;gBACpC,CAAC,CAAC,QAAQ,CAAC;YAEb,MAAM,KAAK,GAAc,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;YAChF,IAAI,YAAY,GAAG,CAAC,EAAE,CAAC;gBACrB,KAAK,CAAC,aAAa,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC;gBACpE,KAAK,CAAC,YAAY,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC;YACxF,CAAC;YACD,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACtB,CAAC;IACH,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC;AACnC,CAAC;AAED,+EAA+E;AAE/E,IAAI,WAAW,GAAmB,IAAI,CAAC;AAEvC,KAAK,UAAU,UAAU;IACvB,IAAI,WAAW,KAAK,IAAI;QAAE,OAAO,WAAW,CAAC;IAC7C,OAAO,IAAI,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;QACzB,QAAQ,CAAC,IAAI,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE;YACpC,WAAW,GAAG,CAAC,GAAG,CAAC;YACnB,GAAG,CAAC,WAAW,CAAC,CAAC;QACnB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED,gFAAgF;AAEhF,MAAM,OAAO,QAAS,SAAQ,QAAQ;IAC3B,IAAI,GAAG,MAAM,CAAC;IACd,WAAW,GAClB,mEAAmE;QACnE,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,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,yCAAyC;QACzC,IAAI,OAAoB,CAAC;QACzB,IAAI,YAAoB,CAAC;QAEzB,MAAM,KAAK,GAAG,MAAM,UAAU,EAAE,CAAC;QACjC,IAAI,KAAK,EAAE,CAAC;YACV,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,YAAY,CAAC,CAAC;YAC3F,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;gBACjB,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,kBAAkB,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;YACjE,CAAC;YACD,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;YACzB,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;QACrC,CAAC;aAAM,CAAC;YACN,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAAC,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;YAC5G,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;YACzB,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;QACrC,CAAC;QAED,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,OAAO,IAAI,CAAC,EAAE,CAAC,UAAU,EAAE,iCAAiC,OAAO,EAAE,EAAE,EAAE,YAAY,EAAE,CAAC,EAAE,CAAC,CAAC;QAC9F,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,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;YACtD,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;QACH,CAAC;QAED,IAAI,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpC,IAAI,SAAS,EAAE,CAAC;YACd,MAAM,IAAI,oBAAoB,UAAU,OAAO,YAAY,iBAAiB,CAAC;QAC/E,CAAC;QACD,IAAI,MAAM,CAAC,MAAM,GAAG,UAAU,EAAE,CAAC;YAC/B,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,GAAG,kBAAkB,CAAC;QAC5D,CAAC;QAED,OAAO,IAAI,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE;YACjC,YAAY;YACZ,eAAe,EAAE,OAAO,CAAC,MAAM;YAC/B,SAAS;YACT,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM;SACnC,CAAC,CAAC;IACL,CAAC;CACF"}
|
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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"}
|
|
@@ -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"}
|
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,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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"}
|
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.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.
|
|
40
|
+
"@yuaone/core": "0.9.24"
|
|
41
41
|
},
|
|
42
42
|
"devDependencies": {
|
|
43
43
|
"@types/node": "^25.3.5",
|