@serjm/deepseek-code 0.4.3 → 0.4.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/CHANGELOG.md +61 -0
- package/README.md +72 -109
- package/README.ru.md +73 -109
- package/dist/api/index.d.ts +9 -0
- package/dist/api/index.d.ts.map +1 -1
- package/dist/api/index.js +65 -2
- package/dist/api/index.js.map +1 -1
- package/dist/cli/index.d.ts +1 -0
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +15 -8
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/interactive.d.ts.map +1 -1
- package/dist/cli/interactive.js +65 -3
- package/dist/cli/interactive.js.map +1 -1
- package/dist/commands/index.d.ts.map +1 -1
- package/dist/commands/index.js +26 -21
- package/dist/commands/index.js.map +1 -1
- package/dist/config/defaults.js +7 -7
- package/dist/config/defaults.js.map +1 -1
- package/dist/core/agent-loop.d.ts +44 -2
- package/dist/core/agent-loop.d.ts.map +1 -1
- package/dist/core/agent-loop.js +317 -102
- package/dist/core/agent-loop.js.map +1 -1
- package/dist/core/i18n.d.ts +3 -0
- package/dist/core/i18n.d.ts.map +1 -1
- package/dist/core/i18n.js +9 -0
- package/dist/core/i18n.js.map +1 -1
- package/dist/core/metrics.d.ts +3 -1
- package/dist/core/metrics.d.ts.map +1 -1
- package/dist/core/metrics.js +34 -5
- package/dist/core/metrics.js.map +1 -1
- package/dist/tools/bash.d.ts.map +1 -1
- package/dist/tools/bash.js +299 -20
- package/dist/tools/bash.js.map +1 -1
- package/dist/tools/glob.d.ts.map +1 -1
- package/dist/tools/glob.js +40 -3
- package/dist/tools/glob.js.map +1 -1
- package/dist/tools/grep.d.ts.map +1 -1
- package/dist/tools/grep.js +69 -13
- package/dist/tools/grep.js.map +1 -1
- package/dist/tools/read.d.ts.map +1 -1
- package/dist/tools/read.js +91 -0
- package/dist/tools/read.js.map +1 -1
- package/dist/tools/types.d.ts +21 -1
- package/dist/tools/types.d.ts.map +1 -1
- package/dist/tools/types.js +34 -0
- package/dist/tools/types.js.map +1 -1
- package/dist/ui/app.d.ts.map +1 -1
- package/dist/ui/app.js +229 -162
- package/dist/ui/app.js.map +1 -1
- package/dist/ui/chat-view.d.ts +24 -3
- package/dist/ui/chat-view.d.ts.map +1 -1
- package/dist/ui/chat-view.js +116 -58
- package/dist/ui/chat-view.js.map +1 -1
- package/dist/ui/input-bar.d.ts.map +1 -1
- package/dist/ui/input-bar.js +38 -4
- package/dist/ui/input-bar.js.map +1 -1
- package/dist/ui/setup-wizard.js +1 -1
- package/dist/ui/setup-wizard.js.map +1 -1
- package/dist/ui/status-bar.d.ts +5 -1
- package/dist/ui/status-bar.d.ts.map +1 -1
- package/dist/ui/status-bar.js +10 -4
- package/dist/ui/status-bar.js.map +1 -1
- package/dist/utils/logger.d.ts +15 -0
- package/dist/utils/logger.d.ts.map +1 -1
- package/dist/utils/logger.js +47 -0
- package/dist/utils/logger.js.map +1 -1
- package/package.json +3 -2
package/dist/tools/bash.js
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { spawn } from 'node:child_process';
|
|
2
|
+
import { platform } from 'node:os';
|
|
3
|
+
import { isAbsolute, relative } from 'node:path';
|
|
2
4
|
/**
|
|
3
5
|
* Dangerous commands that should never be auto-approved.
|
|
4
6
|
* These can destroy the system or data.
|
|
@@ -10,18 +12,83 @@ const DANGEROUS_PATTERNS = [
|
|
|
10
12
|
/^\s*format\s/m,
|
|
11
13
|
/^\s*del\s+\/f\s+\/s\s/m,
|
|
12
14
|
/^\s*rd\s+\/s\s+\/q\s/m,
|
|
13
|
-
/^\s*remove-item\b
|
|
14
|
-
/^\s*rm\b
|
|
15
|
+
/^\s*remove-item\b\s+["']?(?:[A-Z]:\\|\/)["']?\s+-(?:recurse|r)\b/im,
|
|
16
|
+
/^\s*rm\b\s+["']?(?:[A-Z]:\\|\/)["']?\s+-(?:recurse|r)\b/im,
|
|
15
17
|
/^\s*clear-disk\b/im,
|
|
16
18
|
/^\s*format-volume\b/im,
|
|
17
19
|
/^\s*stop-computer\b/im,
|
|
18
20
|
/^\s*restart-computer\b/im,
|
|
21
|
+
/^\s*taskkill\b(?=.*(?:\/f|-f)\b)(?=.*(?:\/im|-im)\s+(?:node(?:\.exe)?|npm(?:\.cmd)?|pnpm(?:\.cmd)?|yarn(?:\.cmd)?|tsx(?:\.cmd)?|vite(?:\.cmd)?|nuxt(?:\.cmd)?|next(?:\.cmd)?|react-scripts(?:\.cmd)?|powershell(?:\.exe)?|cmd(?:\.exe)?))\b/im,
|
|
22
|
+
/^\s*taskkill\b(?=.*(?:\/im|-im)\s+\*)/im,
|
|
23
|
+
/^\s*stop-process\b(?=.*-(?:name|processname)\s+(?:node|npm|pnpm|yarn|tsx|vite|nuxt|next|react-scripts|powershell|cmd)\b)/im,
|
|
24
|
+
/^\s*(?:kill|pkill|killall)\b.*\b(?:node|npm|pnpm|yarn|tsx|vite|nuxt|next|react-scripts)\b/im,
|
|
19
25
|
/^\s*shutdown\s/m,
|
|
20
26
|
/^\s*reboot\s/m,
|
|
21
27
|
/^\s*init\s+0/m,
|
|
22
28
|
/^\s*:\(\)\s*\{/m, // fork bomb
|
|
23
29
|
/^\s*>+\s+\/dev\//m, // destructive redirects
|
|
24
30
|
];
|
|
31
|
+
const WINDOWS_UNIX_COMMAND_REPLACEMENTS = {
|
|
32
|
+
sed: 'Use PowerShell string replacement, Select-String, or read_file/edit instead.',
|
|
33
|
+
head: 'Use Get-Content <path> -TotalCount <n>.',
|
|
34
|
+
tail: 'Use Get-Content <path> -Tail <n>.',
|
|
35
|
+
cat: 'Use Get-Content <path>.',
|
|
36
|
+
grep: 'Use grep_search, Select-String, or rg if available.',
|
|
37
|
+
xargs: 'Use PowerShell pipelines with ForEach-Object.',
|
|
38
|
+
touch: 'Use New-Item -ItemType File or Set-Content.',
|
|
39
|
+
rm: 'Use Remove-Item with an explicit safe path.',
|
|
40
|
+
};
|
|
41
|
+
const POWERSHELL_COMMANDS = new Set([
|
|
42
|
+
'add-content',
|
|
43
|
+
'copy-item',
|
|
44
|
+
'get-childitem',
|
|
45
|
+
'get-content',
|
|
46
|
+
'move-item',
|
|
47
|
+
'new-item',
|
|
48
|
+
'remove-item',
|
|
49
|
+
'select-object',
|
|
50
|
+
'select-string',
|
|
51
|
+
'set-content',
|
|
52
|
+
'test-path',
|
|
53
|
+
'foreach-object',
|
|
54
|
+
'where-object',
|
|
55
|
+
'write-output',
|
|
56
|
+
]);
|
|
57
|
+
function findBareCommandAtSegmentStart(command, names) {
|
|
58
|
+
let atSegmentStart = true;
|
|
59
|
+
let quote = null;
|
|
60
|
+
for (let i = 0; i < command.length; i++) {
|
|
61
|
+
const char = command[i];
|
|
62
|
+
if (quote) {
|
|
63
|
+
if (char === quote)
|
|
64
|
+
quote = null;
|
|
65
|
+
continue;
|
|
66
|
+
}
|
|
67
|
+
if (char === '"' || char === "'") {
|
|
68
|
+
quote = char;
|
|
69
|
+
continue;
|
|
70
|
+
}
|
|
71
|
+
if (/[|&;()]/.test(char)) {
|
|
72
|
+
atSegmentStart = true;
|
|
73
|
+
continue;
|
|
74
|
+
}
|
|
75
|
+
if (/\s/.test(char))
|
|
76
|
+
continue;
|
|
77
|
+
if (!atSegmentStart)
|
|
78
|
+
continue;
|
|
79
|
+
const rest = command.slice(i);
|
|
80
|
+
const match = rest.match(/^([A-Za-z][\w.-]*)\b/);
|
|
81
|
+
if (!match) {
|
|
82
|
+
atSegmentStart = false;
|
|
83
|
+
continue;
|
|
84
|
+
}
|
|
85
|
+
const name = match[1].toLowerCase();
|
|
86
|
+
if (names.has(name))
|
|
87
|
+
return name;
|
|
88
|
+
atSegmentStart = false;
|
|
89
|
+
}
|
|
90
|
+
return null;
|
|
91
|
+
}
|
|
25
92
|
function isDangerousCommand(command) {
|
|
26
93
|
for (const pattern of DANGEROUS_PATTERNS) {
|
|
27
94
|
if (pattern.test(command)) {
|
|
@@ -30,9 +97,180 @@ function isDangerousCommand(command) {
|
|
|
30
97
|
}
|
|
31
98
|
return null;
|
|
32
99
|
}
|
|
100
|
+
function isInsideWorkspace(targetPath) {
|
|
101
|
+
if (!isAbsolute(targetPath))
|
|
102
|
+
return true;
|
|
103
|
+
const rel = relative(process.cwd(), targetPath);
|
|
104
|
+
return rel === '' || (!rel.startsWith('..') && !isAbsolute(rel));
|
|
105
|
+
}
|
|
106
|
+
function extractFirstPathArgument(rest) {
|
|
107
|
+
const trimmed = rest.trim();
|
|
108
|
+
const quoted = trimmed.match(/^["']([^"']+)["']/u);
|
|
109
|
+
if (quoted)
|
|
110
|
+
return quoted[1];
|
|
111
|
+
const bare = trimmed.match(/^([^\s;|&]+)/u);
|
|
112
|
+
return bare?.[1] ?? null;
|
|
113
|
+
}
|
|
114
|
+
function getWorkspacePolicyError(command) {
|
|
115
|
+
const cdPattern = /(?:^|[;&|()])\s*(?:cd|chdir|set-location)\s+((?:"[^"]+")|(?:'[^']+')|[^\s;&|)]+)/gim;
|
|
116
|
+
let match;
|
|
117
|
+
while ((match = cdPattern.exec(command)) !== null) {
|
|
118
|
+
const target = match[1].replace(/^["']|["']$/g, '');
|
|
119
|
+
if (isAbsolute(target) && !isInsideWorkspace(target)) {
|
|
120
|
+
return `Workspace policy: refusing to change directory outside the current workspace (${process.cwd()}): ${target}. Start the CLI in the intended project directory instead of switching projects inside a shell command.`;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
if (platform() !== 'win32')
|
|
124
|
+
return null;
|
|
125
|
+
const mutatingCmdletPattern = /(?:^|[;&|()])\s*(remove-item|new-item|set-content|add-content|copy-item|move-item)\b([^;&|)]*)/gim;
|
|
126
|
+
while ((match = mutatingCmdletPattern.exec(command)) !== null) {
|
|
127
|
+
const target = extractFirstPathArgument(match[2]);
|
|
128
|
+
if (target && isAbsolute(target) && !isInsideWorkspace(target)) {
|
|
129
|
+
return `Workspace policy: refusing to run ${match[1]} on a path outside the current workspace (${process.cwd()}): ${target}. Use the CLI from that project directory or ask for confirmation with the correct workspace.`;
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
return null;
|
|
133
|
+
}
|
|
134
|
+
function getWindowsShellPolicyError(command) {
|
|
135
|
+
if (platform() !== 'win32')
|
|
136
|
+
return null;
|
|
137
|
+
const commandName = findBareCommandAtSegmentStart(command, new Set(Object.keys(WINDOWS_UNIX_COMMAND_REPLACEMENTS)));
|
|
138
|
+
if (!commandName)
|
|
139
|
+
return null;
|
|
140
|
+
return `Windows shell policy: '${commandName}' is usually a Unix command and may fail in cmd/PowerShell. ${WINDOWS_UNIX_COMMAND_REPLACEMENTS[commandName]}`;
|
|
141
|
+
}
|
|
142
|
+
function getWindowsUnixFlagPolicyError(command) {
|
|
143
|
+
if (platform() !== 'win32')
|
|
144
|
+
return null;
|
|
145
|
+
const mkdirP = /(?:^|[;&|()])\s*mkdir\s+-p(?:\s|$)/im;
|
|
146
|
+
if (mkdirP.test(command)) {
|
|
147
|
+
return 'Windows shell policy: mkdir -p is Unix syntax and can create a literal "-p" directory in Windows shells. Use New-Item -ItemType Directory -Force <path> or mkdir <path> without -p.';
|
|
148
|
+
}
|
|
149
|
+
return null;
|
|
150
|
+
}
|
|
151
|
+
function shouldRunWithPowerShell(command) {
|
|
152
|
+
if (platform() !== 'win32')
|
|
153
|
+
return false;
|
|
154
|
+
return findBareCommandAtSegmentStart(command, POWERSHELL_COMMANDS) !== null;
|
|
155
|
+
}
|
|
156
|
+
function hasUnquotedWindowsShellChaining(command) {
|
|
157
|
+
let quote = null;
|
|
158
|
+
for (let i = 0; i < command.length - 1; i++) {
|
|
159
|
+
const char = command[i];
|
|
160
|
+
if (quote) {
|
|
161
|
+
if (char === quote)
|
|
162
|
+
quote = null;
|
|
163
|
+
continue;
|
|
164
|
+
}
|
|
165
|
+
if (char === '"' || char === "'") {
|
|
166
|
+
quote = char;
|
|
167
|
+
continue;
|
|
168
|
+
}
|
|
169
|
+
const pair = command.slice(i, i + 2);
|
|
170
|
+
if (pair === '&&' || pair === '||')
|
|
171
|
+
return true;
|
|
172
|
+
}
|
|
173
|
+
return false;
|
|
174
|
+
}
|
|
175
|
+
function getPowerShellSyntaxPolicyError(command) {
|
|
176
|
+
if (!shouldRunWithPowerShell(command))
|
|
177
|
+
return null;
|
|
178
|
+
if (!hasUnquotedWindowsShellChaining(command))
|
|
179
|
+
return null;
|
|
180
|
+
return 'Windows shell policy: this command uses PowerShell cmdlets together with cmd/bash chaining operators && or ||. Use separate tool calls, or PowerShell-compatible separators such as ; with explicit error checks.';
|
|
181
|
+
}
|
|
182
|
+
const MAX_OUTPUT_BYTES = 10 * 1024 * 1024;
|
|
183
|
+
/**
|
|
184
|
+
* Kill a child and its whole process tree. A bare `child.kill()` only signals
|
|
185
|
+
* the direct child (the shell wrapper); on Windows the actual command keeps the
|
|
186
|
+
* stdout pipe open so the `close` event never fires, and on Unix the command is
|
|
187
|
+
* orphaned. We therefore kill the entire tree/process group.
|
|
188
|
+
*/
|
|
189
|
+
function killProcessTree(child) {
|
|
190
|
+
const pid = child.pid;
|
|
191
|
+
if (pid == null)
|
|
192
|
+
return;
|
|
193
|
+
if (platform() === 'win32') {
|
|
194
|
+
try {
|
|
195
|
+
spawn('taskkill', ['/pid', String(pid), '/t', '/f'], { windowsHide: true });
|
|
196
|
+
}
|
|
197
|
+
catch {
|
|
198
|
+
try {
|
|
199
|
+
child.kill('SIGKILL');
|
|
200
|
+
}
|
|
201
|
+
catch { /* already gone */ }
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
else {
|
|
205
|
+
try {
|
|
206
|
+
// Negative pid targets the process group (requires detached spawn).
|
|
207
|
+
process.kill(-pid, 'SIGTERM');
|
|
208
|
+
}
|
|
209
|
+
catch {
|
|
210
|
+
try {
|
|
211
|
+
child.kill('SIGKILL');
|
|
212
|
+
}
|
|
213
|
+
catch { /* already gone */ }
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
/**
|
|
218
|
+
* Run a shell command asynchronously so the event loop (and therefore the TUI
|
|
219
|
+
* and Ctrl+C handling) stays responsive while the command runs. The command is
|
|
220
|
+
* killed if `signal` aborts (user cancellation) or the timeout elapses.
|
|
221
|
+
*/
|
|
222
|
+
function executeCommand(command, timeout, signal) {
|
|
223
|
+
return new Promise((resolve, reject) => {
|
|
224
|
+
if (signal?.aborted) {
|
|
225
|
+
resolve({ stdout: '', stderr: '', code: null, aborted: true, timedOut: false });
|
|
226
|
+
return;
|
|
227
|
+
}
|
|
228
|
+
// detached on POSIX makes the child a process-group leader so the whole
|
|
229
|
+
// group can be killed; on Windows the tree is killed via taskkill /t.
|
|
230
|
+
const detached = platform() !== 'win32';
|
|
231
|
+
const child = shouldRunWithPowerShell(command)
|
|
232
|
+
? spawn('powershell.exe', ['-NoProfile', '-ExecutionPolicy', 'Bypass', '-Command', command], { windowsHide: true, detached })
|
|
233
|
+
: spawn(command, { shell: true, windowsHide: true, detached });
|
|
234
|
+
let stdout = '';
|
|
235
|
+
let stderr = '';
|
|
236
|
+
let stdoutBytes = 0;
|
|
237
|
+
let truncated = false;
|
|
238
|
+
let aborted = false;
|
|
239
|
+
let timedOut = false;
|
|
240
|
+
const onAbort = () => { aborted = true; killProcessTree(child); };
|
|
241
|
+
if (signal)
|
|
242
|
+
signal.addEventListener('abort', onAbort, { once: true });
|
|
243
|
+
const timer = setTimeout(() => { timedOut = true; killProcessTree(child); }, timeout);
|
|
244
|
+
child.stdout?.setEncoding('utf8');
|
|
245
|
+
child.stderr?.setEncoding('utf8');
|
|
246
|
+
child.stdout?.on('data', (chunk) => {
|
|
247
|
+
stdoutBytes += Buffer.byteLength(chunk);
|
|
248
|
+
if (stdoutBytes <= MAX_OUTPUT_BYTES)
|
|
249
|
+
stdout += chunk;
|
|
250
|
+
else
|
|
251
|
+
truncated = true;
|
|
252
|
+
});
|
|
253
|
+
child.stderr?.on('data', (chunk) => { stderr += chunk; });
|
|
254
|
+
const cleanup = () => {
|
|
255
|
+
clearTimeout(timer);
|
|
256
|
+
if (signal)
|
|
257
|
+
signal.removeEventListener('abort', onAbort);
|
|
258
|
+
};
|
|
259
|
+
child.on('error', (err) => {
|
|
260
|
+
cleanup();
|
|
261
|
+
reject(err);
|
|
262
|
+
});
|
|
263
|
+
child.on('close', (code) => {
|
|
264
|
+
cleanup();
|
|
265
|
+
if (truncated)
|
|
266
|
+
stdout += `\n\n... [output truncated at ${MAX_OUTPUT_BYTES} bytes]`;
|
|
267
|
+
resolve({ stdout, stderr, code, aborted, timedOut });
|
|
268
|
+
});
|
|
269
|
+
});
|
|
270
|
+
}
|
|
33
271
|
export const bashTool = {
|
|
34
272
|
name: 'run_shell_command',
|
|
35
|
-
description: 'Execute
|
|
273
|
+
description: 'Execute an OS-compatible shell command. Use for build/test/git commands; prefer read_file, grep_search, and glob for repository inspection. On Windows, use PowerShell/cmd-compatible commands unless Unix tools were verified.',
|
|
36
274
|
parameters: [
|
|
37
275
|
{
|
|
38
276
|
name: 'command',
|
|
@@ -53,40 +291,81 @@ export const bashTool = {
|
|
|
53
291
|
required: false,
|
|
54
292
|
},
|
|
55
293
|
],
|
|
56
|
-
async execute(args) {
|
|
294
|
+
async execute(args, signal) {
|
|
57
295
|
const command = args.command;
|
|
58
296
|
const timeout = args.timeout ?? 120_000;
|
|
59
297
|
// Security check — reject dangerous commands
|
|
60
298
|
const danger = isDangerousCommand(command);
|
|
61
299
|
if (danger) {
|
|
300
|
+
const isBroadProcessKill = /\b(?:taskkill|stop-process|pkill|killall)\b/iu.test(command);
|
|
62
301
|
return {
|
|
63
302
|
success: false,
|
|
64
303
|
output: '',
|
|
65
|
-
error:
|
|
304
|
+
error: isBroadProcessKill
|
|
305
|
+
? `Blocked for security: ${danger}. Avoid broad process-kill commands. If you started a dev server, stop only that specific process by its known PID or use the child process handle managed by the tool.`
|
|
306
|
+
: `Blocked for security: ${danger}. This command is potentially destructive. Use explicit safe paths inside the current workspace and avoid broad recursive deletion.`,
|
|
66
307
|
};
|
|
67
308
|
}
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
timeout,
|
|
71
|
-
encoding: 'utf-8',
|
|
72
|
-
maxBuffer: 10 * 1024 * 1024, // 10MB
|
|
73
|
-
windowsHide: true,
|
|
74
|
-
});
|
|
309
|
+
const windowsPolicyError = getWindowsShellPolicyError(command);
|
|
310
|
+
if (windowsPolicyError) {
|
|
75
311
|
return {
|
|
76
|
-
success:
|
|
77
|
-
output:
|
|
312
|
+
success: false,
|
|
313
|
+
output: '',
|
|
314
|
+
error: windowsPolicyError,
|
|
78
315
|
};
|
|
79
316
|
}
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
317
|
+
const windowsUnixFlagPolicyError = getWindowsUnixFlagPolicyError(command);
|
|
318
|
+
if (windowsUnixFlagPolicyError) {
|
|
319
|
+
return {
|
|
320
|
+
success: false,
|
|
321
|
+
output: '',
|
|
322
|
+
error: windowsUnixFlagPolicyError,
|
|
323
|
+
};
|
|
324
|
+
}
|
|
325
|
+
const workspacePolicyError = getWorkspacePolicyError(command);
|
|
326
|
+
if (workspacePolicyError) {
|
|
327
|
+
return {
|
|
328
|
+
success: false,
|
|
329
|
+
output: '',
|
|
330
|
+
error: workspacePolicyError,
|
|
331
|
+
};
|
|
332
|
+
}
|
|
333
|
+
const powershellSyntaxPolicyError = getPowerShellSyntaxPolicyError(command);
|
|
334
|
+
if (powershellSyntaxPolicyError) {
|
|
335
|
+
return {
|
|
336
|
+
success: false,
|
|
337
|
+
output: '',
|
|
338
|
+
error: powershellSyntaxPolicyError,
|
|
339
|
+
};
|
|
340
|
+
}
|
|
341
|
+
try {
|
|
342
|
+
const { stdout, stderr, code, aborted, timedOut } = await executeCommand(command, timeout, signal);
|
|
343
|
+
if (aborted) {
|
|
344
|
+
return { success: false, output: stdout, error: 'Command aborted by user (Ctrl+C).' };
|
|
345
|
+
}
|
|
346
|
+
if (timedOut) {
|
|
347
|
+
return {
|
|
348
|
+
success: false,
|
|
349
|
+
output: stdout,
|
|
350
|
+
error: `Command timed out after ${timeout}ms.${stderr ? `\n${stderr}` : ''}`,
|
|
351
|
+
};
|
|
352
|
+
}
|
|
353
|
+
if (code === 0) {
|
|
354
|
+
return { success: true, output: stdout || '(command completed with no output)' };
|
|
355
|
+
}
|
|
84
356
|
return {
|
|
85
357
|
success: false,
|
|
86
358
|
output: stdout,
|
|
87
|
-
error: stderr ||
|
|
359
|
+
error: stderr || `Command exited with code ${code}`,
|
|
88
360
|
};
|
|
89
361
|
}
|
|
362
|
+
catch (err) {
|
|
363
|
+
const error = err;
|
|
364
|
+
if (signal?.aborted || error.code === 'ABORT_ERR' || error.name === 'AbortError') {
|
|
365
|
+
return { success: false, output: '', error: 'Command aborted by user (Ctrl+C).' };
|
|
366
|
+
}
|
|
367
|
+
return { success: false, output: '', error: error.message };
|
|
368
|
+
}
|
|
90
369
|
},
|
|
91
370
|
};
|
|
92
371
|
//# sourceMappingURL=bash.js.map
|
package/dist/tools/bash.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bash.js","sourceRoot":"","sources":["../../src/tools/bash.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAG7C;;;GAGG;AACH,MAAM,kBAAkB,GAAG;IACzB,wBAAwB;IACxB,aAAa;IACb,0BAA0B;IAC1B,eAAe;IACf,wBAAwB;IACxB,uBAAuB;IACvB,yCAAyC;IACzC,gCAAgC;IAChC,oBAAoB;IACpB,uBAAuB;IACvB,uBAAuB;IACvB,0BAA0B;IAC1B,iBAAiB;IACjB,eAAe;IACf,eAAe;IACf,iBAAiB,EAAE,YAAY;IAC/B,mBAAmB,EAAE,wBAAwB;CAC9C,CAAA;AAED,SAAS,kBAAkB,CAAE,OAAe;IAC1C,KAAK,MAAM,OAAO,IAAI,kBAAkB,EAAE,CAAC;QACzC,IAAI,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YAC1B,OAAO,sCAAsC,OAAO,EAAE,CAAA;QACxD,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC;AAED,MAAM,CAAC,MAAM,QAAQ,GAAS;IAC5B,IAAI,EAAE,mBAAmB;IACzB,WAAW,EAAE,mFAAmF;IAChG,UAAU,EAAE;QACV;YACE,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,8BAA8B;YAC3C,QAAQ,EAAE,IAAI;SACf;QACD;YACE,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,oDAAoD;YACjE,QAAQ,EAAE,KAAK;SAChB;QACD;YACE,IAAI,EAAE,aAAa;YACnB,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,4CAA4C;YACzD,QAAQ,EAAE,KAAK;SAChB;KACF;IACD,KAAK,CAAC,OAAO,CAAE,IAA6B;QAC1C,MAAM,OAAO,GAAG,IAAI,CAAC,OAAiB,CAAA;QACtC,MAAM,OAAO,GAAI,IAAI,CAAC,OAAkB,IAAI,OAAO,CAAA;QAEnD,6CAA6C;QAC7C,MAAM,MAAM,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAA;QAC1C,IAAI,MAAM,EAAE,CAAC;YACX,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,MAAM,EAAE,EAAE;gBACV,KAAK,EAAE,yBAAyB,MAAM,EAAE;aACzC,CAAA;QACH,CAAC;QAED,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,QAAQ,CAAC,OAAO,EAAE;gBAC/B,OAAO;gBACP,QAAQ,EAAE,OAAO;gBACjB,SAAS,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI,EAAE,OAAO;gBACpC,WAAW,EAAE,IAAI;aAClB,CAAC,CAAA;YAEF,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,MAAM,EAAE,MAAM,IAAI,oCAAoC;aACvD,CAAA;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,KAAK,GAAG,GAAmD,CAAA;YACjE,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,IAAI,EAAE,CAAA;YACjC,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,IAAI,EAAE,CAAA;YACjC,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,MAAM,EAAE,MAAM;gBACd,KAAK,EAAE,MAAM,IAAI,KAAK,CAAC,OAAO;aAC/B,CAAA;QACH,CAAC;IACH,CAAC;CACF,CAAA"}
|
|
1
|
+
{"version":3,"file":"bash.js","sourceRoot":"","sources":["../../src/tools/bash.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAqB,MAAM,oBAAoB,CAAA;AAC7D,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAClC,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AAGhD;;;GAGG;AACH,MAAM,kBAAkB,GAAG;IACzB,wBAAwB;IACxB,aAAa;IACb,0BAA0B;IAC1B,eAAe;IACf,wBAAwB;IACxB,uBAAuB;IACvB,oEAAoE;IACpE,2DAA2D;IAC3D,oBAAoB;IACpB,uBAAuB;IACvB,uBAAuB;IACvB,0BAA0B;IAC1B,+OAA+O;IAC/O,yCAAyC;IACzC,4HAA4H;IAC5H,6FAA6F;IAC7F,iBAAiB;IACjB,eAAe;IACf,eAAe;IACf,iBAAiB,EAAE,YAAY;IAC/B,mBAAmB,EAAE,wBAAwB;CAC9C,CAAA;AAED,MAAM,iCAAiC,GAA2B;IAChE,GAAG,EAAE,8EAA8E;IACnF,IAAI,EAAE,yCAAyC;IAC/C,IAAI,EAAE,mCAAmC;IACzC,GAAG,EAAE,yBAAyB;IAC9B,IAAI,EAAE,qDAAqD;IAC3D,KAAK,EAAE,+CAA+C;IACtD,KAAK,EAAE,6CAA6C;IACpD,EAAE,EAAE,6CAA6C;CAClD,CAAA;AAED,MAAM,mBAAmB,GAAG,IAAI,GAAG,CAAC;IAClC,aAAa;IACb,WAAW;IACX,eAAe;IACf,aAAa;IACb,WAAW;IACX,UAAU;IACV,aAAa;IACb,eAAe;IACf,eAAe;IACf,aAAa;IACb,WAAW;IACX,gBAAgB;IAChB,cAAc;IACd,cAAc;CACf,CAAC,CAAA;AAEF,SAAS,6BAA6B,CAAE,OAAe,EAAE,KAAkB;IACzE,IAAI,cAAc,GAAG,IAAI,CAAA;IACzB,IAAI,KAAK,GAAqB,IAAI,CAAA;IAElC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACxC,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;QAEvB,IAAI,KAAK,EAAE,CAAC;YACV,IAAI,IAAI,KAAK,KAAK;gBAAE,KAAK,GAAG,IAAI,CAAA;YAChC,SAAQ;QACV,CAAC;QAED,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;YACjC,KAAK,GAAG,IAAI,CAAA;YACZ,SAAQ;QACV,CAAC;QAED,IAAI,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACzB,cAAc,GAAG,IAAI,CAAA;YACrB,SAAQ;QACV,CAAC;QAED,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,SAAQ;QAE7B,IAAI,CAAC,cAAc;YAAE,SAAQ;QAE7B,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;QAC7B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAA;QAChD,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,cAAc,GAAG,KAAK,CAAA;YACtB,SAAQ;QACV,CAAC;QAED,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAA;QACnC,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC;YAAE,OAAO,IAAI,CAAA;QAChC,cAAc,GAAG,KAAK,CAAA;IACxB,CAAC;IAED,OAAO,IAAI,CAAA;AACb,CAAC;AAED,SAAS,kBAAkB,CAAE,OAAe;IAC1C,KAAK,MAAM,OAAO,IAAI,kBAAkB,EAAE,CAAC;QACzC,IAAI,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YAC1B,OAAO,sCAAsC,OAAO,EAAE,CAAA;QACxD,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC;AAED,SAAS,iBAAiB,CAAE,UAAkB;IAC5C,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC;QAAE,OAAO,IAAI,CAAA;IACxC,MAAM,GAAG,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,UAAU,CAAC,CAAA;IAC/C,OAAO,GAAG,KAAK,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAA;AAClE,CAAC;AAED,SAAS,wBAAwB,CAAE,IAAY;IAC7C,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAA;IAC3B,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAA;IAClD,IAAI,MAAM;QAAE,OAAO,MAAM,CAAC,CAAC,CAAC,CAAA;IAC5B,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,eAAe,CAAC,CAAA;IAC3C,OAAO,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAA;AAC1B,CAAC;AAED,SAAS,uBAAuB,CAAE,OAAe;IAC/C,MAAM,SAAS,GAAG,qFAAqF,CAAA;IACvG,IAAI,KAA6B,CAAA;IACjC,OAAO,CAAC,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QAClD,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAA;QACnD,IAAI,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAAE,CAAC;YACrD,OAAO,iFAAiF,OAAO,CAAC,GAAG,EAAE,MAAM,MAAM,yGAAyG,CAAA;QAC5N,CAAC;IACH,CAAC;IAED,IAAI,QAAQ,EAAE,KAAK,OAAO;QAAE,OAAO,IAAI,CAAA;IAEvC,MAAM,qBAAqB,GAAG,mGAAmG,CAAA;IACjI,OAAO,CAAC,KAAK,GAAG,qBAAqB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QAC9D,MAAM,MAAM,GAAG,wBAAwB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;QACjD,IAAI,MAAM,IAAI,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAAE,CAAC;YAC/D,OAAO,qCAAqC,KAAK,CAAC,CAAC,CAAC,6CAA6C,OAAO,CAAC,GAAG,EAAE,MAAM,MAAM,+FAA+F,CAAA;QAC3N,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAA;AACb,CAAC;AAED,SAAS,0BAA0B,CAAE,OAAe;IAClD,IAAI,QAAQ,EAAE,KAAK,OAAO;QAAE,OAAO,IAAI,CAAA;IAEvC,MAAM,WAAW,GAAG,6BAA6B,CAAC,OAAO,EAAE,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC,CAAC,CAAA;IACnH,IAAI,CAAC,WAAW;QAAE,OAAO,IAAI,CAAA;IAE7B,OAAO,0BAA0B,WAAW,+DAA+D,iCAAiC,CAAC,WAAW,CAAC,EAAE,CAAA;AAC7J,CAAC;AAED,SAAS,6BAA6B,CAAE,OAAe;IACrD,IAAI,QAAQ,EAAE,KAAK,OAAO;QAAE,OAAO,IAAI,CAAA;IAEvC,MAAM,MAAM,GAAG,sCAAsC,CAAA;IACrD,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QACzB,OAAO,qLAAqL,CAAA;IAC9L,CAAC;IAED,OAAO,IAAI,CAAA;AACb,CAAC;AAED,SAAS,uBAAuB,CAAE,OAAe;IAC/C,IAAI,QAAQ,EAAE,KAAK,OAAO;QAAE,OAAO,KAAK,CAAA;IACxC,OAAO,6BAA6B,CAAC,OAAO,EAAE,mBAAmB,CAAC,KAAK,IAAI,CAAA;AAC7E,CAAC;AAED,SAAS,+BAA+B,CAAE,OAAe;IACvD,IAAI,KAAK,GAAqB,IAAI,CAAA;IAElC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5C,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;QAEvB,IAAI,KAAK,EAAE,CAAC;YACV,IAAI,IAAI,KAAK,KAAK;gBAAE,KAAK,GAAG,IAAI,CAAA;YAChC,SAAQ;QACV,CAAC;QAED,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;YACjC,KAAK,GAAG,IAAI,CAAA;YACZ,SAAQ;QACV,CAAC;QAED,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAA;QACpC,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI;YAAE,OAAO,IAAI,CAAA;IACjD,CAAC;IAED,OAAO,KAAK,CAAA;AACd,CAAC;AAED,SAAS,8BAA8B,CAAE,OAAe;IACtD,IAAI,CAAC,uBAAuB,CAAC,OAAO,CAAC;QAAE,OAAO,IAAI,CAAA;IAClD,IAAI,CAAC,+BAA+B,CAAC,OAAO,CAAC;QAAE,OAAO,IAAI,CAAA;IAE1D,OAAO,mNAAmN,CAAA;AAC5N,CAAC;AAED,MAAM,gBAAgB,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAA;AAUzC;;;;;GAKG;AACH,SAAS,eAAe,CAAE,KAAmB;IAC3C,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAA;IACrB,IAAI,GAAG,IAAI,IAAI;QAAE,OAAM;IACvB,IAAI,QAAQ,EAAE,KAAK,OAAO,EAAE,CAAC;QAC3B,IAAI,CAAC;YACH,KAAK,CAAC,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAA;QAC7E,CAAC;QAAC,MAAM,CAAC;YACP,IAAI,CAAC;gBAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,kBAAkB,CAAC,CAAC;QAC5D,CAAC;IACH,CAAC;SAAM,CAAC;QACN,IAAI,CAAC;YACH,oEAAoE;YACpE,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,SAAS,CAAC,CAAA;QAC/B,CAAC;QAAC,MAAM,CAAC;YACP,IAAI,CAAC;gBAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,kBAAkB,CAAC,CAAC;QAC5D,CAAC;IACH,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,SAAS,cAAc,CAAE,OAAe,EAAE,OAAe,EAAE,MAAoB;IAC7E,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,IAAI,MAAM,EAAE,OAAO,EAAE,CAAC;YACpB,OAAO,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAA;YAC/E,OAAM;QACR,CAAC;QAED,wEAAwE;QACxE,sEAAsE;QACtE,MAAM,QAAQ,GAAG,QAAQ,EAAE,KAAK,OAAO,CAAA;QACvC,MAAM,KAAK,GAAG,uBAAuB,CAAC,OAAO,CAAC;YAC5C,CAAC,CAAC,KAAK,CAAC,gBAAgB,EAAE,CAAC,YAAY,EAAE,kBAAkB,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;YAC7H,CAAC,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAA;QAEhE,IAAI,MAAM,GAAG,EAAE,CAAA;QACf,IAAI,MAAM,GAAG,EAAE,CAAA;QACf,IAAI,WAAW,GAAG,CAAC,CAAA;QACnB,IAAI,SAAS,GAAG,KAAK,CAAA;QACrB,IAAI,OAAO,GAAG,KAAK,CAAA;QACnB,IAAI,QAAQ,GAAG,KAAK,CAAA;QAEpB,MAAM,OAAO,GAAG,GAAG,EAAE,GAAG,OAAO,GAAG,IAAI,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,CAAA,CAAC,CAAC,CAAA;QAChE,IAAI,MAAM;YAAE,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAA;QAErE,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,GAAG,QAAQ,GAAG,IAAI,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,CAAA,CAAC,CAAC,EAAE,OAAO,CAAC,CAAA;QAEpF,KAAK,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,CAAA;QACjC,KAAK,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,CAAA;QACjC,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE;YACzC,WAAW,IAAI,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAA;YACvC,IAAI,WAAW,IAAI,gBAAgB;gBAAE,MAAM,IAAI,KAAK,CAAA;;gBAC/C,SAAS,GAAG,IAAI,CAAA;QACvB,CAAC,CAAC,CAAA;QACF,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE,GAAG,MAAM,IAAI,KAAK,CAAA,CAAC,CAAC,CAAC,CAAA;QAEhE,MAAM,OAAO,GAAG,GAAG,EAAE;YACnB,YAAY,CAAC,KAAK,CAAC,CAAA;YACnB,IAAI,MAAM;gBAAE,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;QAC1D,CAAC,CAAA;QAED,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;YACxB,OAAO,EAAE,CAAA;YACT,MAAM,CAAC,GAAG,CAAC,CAAA;QACb,CAAC,CAAC,CAAA;QACF,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;YACzB,OAAO,EAAE,CAAA;YACT,IAAI,SAAS;gBAAE,MAAM,IAAI,gCAAgC,gBAAgB,SAAS,CAAA;YAClF,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAA;QACtD,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,QAAQ,GAAS;IAC5B,IAAI,EAAE,mBAAmB;IACzB,WAAW,EAAE,iOAAiO;IAC9O,UAAU,EAAE;QACV;YACE,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,8BAA8B;YAC3C,QAAQ,EAAE,IAAI;SACf;QACD;YACE,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,oDAAoD;YACjE,QAAQ,EAAE,KAAK;SAChB;QACD;YACE,IAAI,EAAE,aAAa;YACnB,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,4CAA4C;YACzD,QAAQ,EAAE,KAAK;SAChB;KACF;IACD,KAAK,CAAC,OAAO,CAAE,IAA6B,EAAE,MAAoB;QAChE,MAAM,OAAO,GAAG,IAAI,CAAC,OAAiB,CAAA;QACtC,MAAM,OAAO,GAAI,IAAI,CAAC,OAAkB,IAAI,OAAO,CAAA;QAEnD,6CAA6C;QAC7C,MAAM,MAAM,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAA;QAC1C,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,kBAAkB,GAAG,+CAA+C,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;YACxF,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,MAAM,EAAE,EAAE;gBACV,KAAK,EAAE,kBAAkB;oBACvB,CAAC,CAAC,yBAAyB,MAAM,yKAAyK;oBAC1M,CAAC,CAAC,yBAAyB,MAAM,qIAAqI;aACzK,CAAA;QACH,CAAC;QAED,MAAM,kBAAkB,GAAG,0BAA0B,CAAC,OAAO,CAAC,CAAA;QAC9D,IAAI,kBAAkB,EAAE,CAAC;YACvB,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,MAAM,EAAE,EAAE;gBACV,KAAK,EAAE,kBAAkB;aAC1B,CAAA;QACH,CAAC;QAED,MAAM,0BAA0B,GAAG,6BAA6B,CAAC,OAAO,CAAC,CAAA;QACzE,IAAI,0BAA0B,EAAE,CAAC;YAC/B,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,MAAM,EAAE,EAAE;gBACV,KAAK,EAAE,0BAA0B;aAClC,CAAA;QACH,CAAC;QAED,MAAM,oBAAoB,GAAG,uBAAuB,CAAC,OAAO,CAAC,CAAA;QAC7D,IAAI,oBAAoB,EAAE,CAAC;YACzB,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,MAAM,EAAE,EAAE;gBACV,KAAK,EAAE,oBAAoB;aAC5B,CAAA;QACH,CAAC;QAED,MAAM,2BAA2B,GAAG,8BAA8B,CAAC,OAAO,CAAC,CAAA;QAC3E,IAAI,2BAA2B,EAAE,CAAC;YAChC,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,MAAM,EAAE,EAAE;gBACV,KAAK,EAAE,2BAA2B;aACnC,CAAA;QACH,CAAC;QAED,IAAI,CAAC;YACH,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,MAAM,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,CAAA;YAElG,IAAI,OAAO,EAAE,CAAC;gBACZ,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,mCAAmC,EAAE,CAAA;YACvF,CAAC;YACD,IAAI,QAAQ,EAAE,CAAC;gBACb,OAAO;oBACL,OAAO,EAAE,KAAK;oBACd,MAAM,EAAE,MAAM;oBACd,KAAK,EAAE,2BAA2B,OAAO,MAAM,MAAM,CAAC,CAAC,CAAC,KAAK,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE;iBAC7E,CAAA;YACH,CAAC;YACD,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;gBACf,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,IAAI,oCAAoC,EAAE,CAAA;YAClF,CAAC;YACD,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,MAAM,EAAE,MAAM;gBACd,KAAK,EAAE,MAAM,IAAI,4BAA4B,IAAI,EAAE;aACpD,CAAA;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,KAAK,GAAG,GAAgC,CAAA;YAC9C,IAAI,MAAM,EAAE,OAAO,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;gBACjF,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,mCAAmC,EAAE,CAAA;YACnF,CAAC;YACD,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,CAAA;QAC7D,CAAC;IACH,CAAC;CACF,CAAA"}
|
package/dist/tools/glob.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"glob.d.ts","sourceRoot":"","sources":["../../src/tools/glob.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"glob.d.ts","sourceRoot":"","sources":["../../src/tools/glob.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,IAAI,EAAmB,MAAM,YAAY,CAAA;AA0CvD,eAAO,MAAM,QAAQ,EAAE,IAyCtB,CAAA"}
|
package/dist/tools/glob.js
CHANGED
|
@@ -1,4 +1,40 @@
|
|
|
1
1
|
import { globby } from 'globby';
|
|
2
|
+
import { isAbsolute, join, parse, relative, sep } from 'node:path';
|
|
3
|
+
function normalizeGlobInput(pattern) {
|
|
4
|
+
if (!isAbsolute(pattern)) {
|
|
5
|
+
return { cwd: process.cwd(), pattern };
|
|
6
|
+
}
|
|
7
|
+
const normalized = pattern.replaceAll('\\', '/');
|
|
8
|
+
const root = parse(pattern).root;
|
|
9
|
+
const rootNormalized = root.replaceAll('\\', '/');
|
|
10
|
+
const withoutRoot = normalized.slice(rootNormalized.length);
|
|
11
|
+
const segments = withoutRoot.split('/').filter(Boolean);
|
|
12
|
+
const firstGlobIndex = segments.findIndex(segment => /[*?[\]{}()!+@]/u.test(segment));
|
|
13
|
+
if (firstGlobIndex === -1) {
|
|
14
|
+
const fileName = segments.at(-1) ?? '';
|
|
15
|
+
const baseSegments = segments.slice(0, -1);
|
|
16
|
+
return {
|
|
17
|
+
cwd: join(root, ...baseSegments),
|
|
18
|
+
pattern: fileName || '*',
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
const baseSegments = segments.slice(0, firstGlobIndex);
|
|
22
|
+
const globSegments = segments.slice(firstGlobIndex);
|
|
23
|
+
const cwd = baseSegments.length > 0 ? join(root, ...baseSegments) : root;
|
|
24
|
+
return {
|
|
25
|
+
cwd,
|
|
26
|
+
pattern: globSegments.join('/'),
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
function toDisplayPath(path, cwd) {
|
|
30
|
+
if (isAbsolute(path))
|
|
31
|
+
return path;
|
|
32
|
+
const abs = join(cwd, path);
|
|
33
|
+
const rel = relative(process.cwd(), abs);
|
|
34
|
+
return rel && !rel.startsWith('..' + sep) && rel !== '..'
|
|
35
|
+
? rel
|
|
36
|
+
: abs;
|
|
37
|
+
}
|
|
2
38
|
export const globTool = {
|
|
3
39
|
name: 'glob',
|
|
4
40
|
description: 'Find files matching a glob pattern. Supports **/*.ts, src/**/*.tsx, etc.',
|
|
@@ -13,8 +49,9 @@ export const globTool = {
|
|
|
13
49
|
async execute(args) {
|
|
14
50
|
const pattern = args.pattern;
|
|
15
51
|
try {
|
|
16
|
-
const
|
|
17
|
-
|
|
52
|
+
const normalized = normalizeGlobInput(pattern);
|
|
53
|
+
const paths = await globby(normalized.pattern, {
|
|
54
|
+
cwd: normalized.cwd,
|
|
18
55
|
onlyFiles: true,
|
|
19
56
|
gitignore: true,
|
|
20
57
|
});
|
|
@@ -26,7 +63,7 @@ export const globTool = {
|
|
|
26
63
|
}
|
|
27
64
|
return {
|
|
28
65
|
success: true,
|
|
29
|
-
output: paths.join('\n'),
|
|
66
|
+
output: paths.map(path => toDisplayPath(path, normalized.cwd)).join('\n'),
|
|
30
67
|
};
|
|
31
68
|
}
|
|
32
69
|
catch (err) {
|
package/dist/tools/glob.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"glob.js","sourceRoot":"","sources":["../../src/tools/glob.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;
|
|
1
|
+
{"version":3,"file":"glob.js","sourceRoot":"","sources":["../../src/tools/glob.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/grep.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"grep.d.ts","sourceRoot":"","sources":["../../src/tools/grep.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"grep.d.ts","sourceRoot":"","sources":["../../src/tools/grep.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,IAAI,EAAmB,MAAM,YAAY,CAAA;AAOvD,eAAO,MAAM,QAAQ,EAAE,IAgEtB,CAAA"}
|
package/dist/tools/grep.js
CHANGED
|
@@ -1,4 +1,11 @@
|
|
|
1
1
|
import { execSync } from 'node:child_process';
|
|
2
|
+
import { readFile, readdir } from 'node:fs/promises';
|
|
3
|
+
import { join, relative } from 'node:path';
|
|
4
|
+
import { minimatch } from 'minimatch';
|
|
5
|
+
import { assertPathInWorkspace } from './path-safety.js';
|
|
6
|
+
const MAX_MATCHES = 200;
|
|
7
|
+
const MAX_FILE_BYTES = 1024 * 1024;
|
|
8
|
+
const SKIP_DIRS = new Set(['.git', 'node_modules', 'dist', '.next', '.nuxt', '.output', 'coverage']);
|
|
2
9
|
export const grepTool = {
|
|
3
10
|
name: 'grep_search',
|
|
4
11
|
description: 'Search file contents using regular expressions. Uses ripgrep for fast searching.',
|
|
@@ -42,16 +49,9 @@ export const grepTool = {
|
|
|
42
49
|
output: 'No matches found',
|
|
43
50
|
};
|
|
44
51
|
}
|
|
45
|
-
// Limit output to avoid huge responses
|
|
46
|
-
const lines = output.split('\n');
|
|
47
|
-
const limited = lines.slice(0, 200);
|
|
48
|
-
let result = limited.join('\n');
|
|
49
|
-
if (lines.length > 200) {
|
|
50
|
-
result += `\n... and ${lines.length - 200} more matches`;
|
|
51
|
-
}
|
|
52
52
|
return {
|
|
53
53
|
success: true,
|
|
54
|
-
output:
|
|
54
|
+
output: limitMatches(output.split('\n').filter(Boolean)),
|
|
55
55
|
};
|
|
56
56
|
}
|
|
57
57
|
catch (err) {
|
|
@@ -63,12 +63,68 @@ export const grepTool = {
|
|
|
63
63
|
output: 'No matches found',
|
|
64
64
|
};
|
|
65
65
|
}
|
|
66
|
-
return
|
|
67
|
-
success: false,
|
|
68
|
-
output: '',
|
|
69
|
-
error: `Failed to search: ${error.message}`,
|
|
70
|
-
};
|
|
66
|
+
return nodeGrep(pattern, searchPath, glob);
|
|
71
67
|
}
|
|
72
68
|
},
|
|
73
69
|
};
|
|
70
|
+
async function nodeGrep(pattern, searchPath, glob) {
|
|
71
|
+
try {
|
|
72
|
+
assertPathInWorkspace(searchPath);
|
|
73
|
+
const regex = new RegExp(pattern);
|
|
74
|
+
const matches = [];
|
|
75
|
+
for await (const filePath of walkFiles(searchPath)) {
|
|
76
|
+
if (glob) {
|
|
77
|
+
const rel = relative(searchPath, filePath).replace(/\\/g, '/');
|
|
78
|
+
if (!minimatch(rel, glob, { matchBase: true }))
|
|
79
|
+
continue;
|
|
80
|
+
}
|
|
81
|
+
const content = await readFile(filePath);
|
|
82
|
+
if (content.length > MAX_FILE_BYTES || content.includes(0))
|
|
83
|
+
continue;
|
|
84
|
+
const text = content.toString('utf8');
|
|
85
|
+
const lines = text.split(/\r?\n/);
|
|
86
|
+
for (let index = 0; index < lines.length; index++) {
|
|
87
|
+
if (regex.test(lines[index])) {
|
|
88
|
+
matches.push(`${filePath}:${index + 1}:${lines[index]}`);
|
|
89
|
+
if (matches.length >= MAX_MATCHES) {
|
|
90
|
+
return { success: true, output: limitMatches(matches, true) };
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
return {
|
|
96
|
+
success: true,
|
|
97
|
+
output: matches.length > 0 ? matches.join('\n') : 'No matches found',
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
catch (err) {
|
|
101
|
+
return {
|
|
102
|
+
success: false,
|
|
103
|
+
output: '',
|
|
104
|
+
error: `Failed to search: ${err.message}`,
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
async function* walkFiles(dir) {
|
|
109
|
+
const entries = await readdir(dir, { withFileTypes: true });
|
|
110
|
+
for (const entry of entries) {
|
|
111
|
+
if (entry.isDirectory()) {
|
|
112
|
+
if (SKIP_DIRS.has(entry.name))
|
|
113
|
+
continue;
|
|
114
|
+
yield* walkFiles(join(dir, entry.name));
|
|
115
|
+
}
|
|
116
|
+
else if (entry.isFile()) {
|
|
117
|
+
yield join(dir, entry.name);
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
function limitMatches(lines, alreadyLimited = false) {
|
|
122
|
+
const limited = lines.slice(0, MAX_MATCHES);
|
|
123
|
+
let result = limited.join('\n');
|
|
124
|
+
if (alreadyLimited || lines.length > MAX_MATCHES) {
|
|
125
|
+
const remaining = alreadyLimited ? 'more' : String(lines.length - MAX_MATCHES);
|
|
126
|
+
result += `\n... and ${remaining} more matches`;
|
|
127
|
+
}
|
|
128
|
+
return result || 'No matches found';
|
|
129
|
+
}
|
|
74
130
|
//# sourceMappingURL=grep.js.map
|
package/dist/tools/grep.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"grep.js","sourceRoot":"","sources":["../../src/tools/grep.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;
|
|
1
|
+
{"version":3,"file":"grep.js","sourceRoot":"","sources":["../../src/tools/grep.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/read.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"read.d.ts","sourceRoot":"","sources":["../../src/tools/read.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"read.d.ts","sourceRoot":"","sources":["../../src/tools/read.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,IAAI,EAAmB,MAAM,YAAY,CAAA;AAqFvD,eAAO,MAAM,QAAQ,EAAE,IAwEtB,CAAA"}
|