@serjm/deepseek-code 0.4.3 → 0.4.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (88) hide show
  1. package/CHANGELOG.md +85 -0
  2. package/README.md +72 -109
  3. package/README.ru.md +73 -109
  4. package/dist/api/index.d.ts +5 -0
  5. package/dist/api/index.d.ts.map +1 -1
  6. package/dist/api/index.js +42 -4
  7. package/dist/api/index.js.map +1 -1
  8. package/dist/cli/index.d.ts +1 -0
  9. package/dist/cli/index.d.ts.map +1 -1
  10. package/dist/cli/index.js +15 -8
  11. package/dist/cli/index.js.map +1 -1
  12. package/dist/cli/interactive.d.ts.map +1 -1
  13. package/dist/cli/interactive.js +65 -3
  14. package/dist/cli/interactive.js.map +1 -1
  15. package/dist/commands/index.d.ts.map +1 -1
  16. package/dist/commands/index.js +26 -21
  17. package/dist/commands/index.js.map +1 -1
  18. package/dist/config/defaults.d.ts +9 -0
  19. package/dist/config/defaults.d.ts.map +1 -1
  20. package/dist/config/defaults.js +25 -7
  21. package/dist/config/defaults.js.map +1 -1
  22. package/dist/core/agent-loop.d.ts +56 -3
  23. package/dist/core/agent-loop.d.ts.map +1 -1
  24. package/dist/core/agent-loop.js +458 -104
  25. package/dist/core/agent-loop.js.map +1 -1
  26. package/dist/core/i18n.d.ts +3 -0
  27. package/dist/core/i18n.d.ts.map +1 -1
  28. package/dist/core/i18n.js +9 -0
  29. package/dist/core/i18n.js.map +1 -1
  30. package/dist/core/mcp-tools.d.ts +15 -0
  31. package/dist/core/mcp-tools.d.ts.map +1 -0
  32. package/dist/core/mcp-tools.js +94 -0
  33. package/dist/core/mcp-tools.js.map +1 -0
  34. package/dist/core/metrics.d.ts +9 -2
  35. package/dist/core/metrics.d.ts.map +1 -1
  36. package/dist/core/metrics.js +51 -9
  37. package/dist/core/metrics.js.map +1 -1
  38. package/dist/tools/bash.d.ts.map +1 -1
  39. package/dist/tools/bash.js +317 -23
  40. package/dist/tools/bash.js.map +1 -1
  41. package/dist/tools/chrome-manager.d.ts.map +1 -1
  42. package/dist/tools/chrome-manager.js +5 -2
  43. package/dist/tools/chrome-manager.js.map +1 -1
  44. package/dist/tools/chrome.d.ts.map +1 -1
  45. package/dist/tools/chrome.js +8 -3
  46. package/dist/tools/chrome.js.map +1 -1
  47. package/dist/tools/glob.d.ts.map +1 -1
  48. package/dist/tools/glob.js +40 -3
  49. package/dist/tools/glob.js.map +1 -1
  50. package/dist/tools/grep.d.ts.map +1 -1
  51. package/dist/tools/grep.js +69 -13
  52. package/dist/tools/grep.js.map +1 -1
  53. package/dist/tools/process-manager.d.ts +17 -0
  54. package/dist/tools/process-manager.d.ts.map +1 -0
  55. package/dist/tools/process-manager.js +94 -0
  56. package/dist/tools/process-manager.js.map +1 -0
  57. package/dist/tools/read.d.ts.map +1 -1
  58. package/dist/tools/read.js +94 -0
  59. package/dist/tools/read.js.map +1 -1
  60. package/dist/tools/shell.d.ts +20 -0
  61. package/dist/tools/shell.d.ts.map +1 -0
  62. package/dist/tools/shell.js +100 -0
  63. package/dist/tools/shell.js.map +1 -0
  64. package/dist/tools/types.d.ts +27 -1
  65. package/dist/tools/types.d.ts.map +1 -1
  66. package/dist/tools/types.js +43 -1
  67. package/dist/tools/types.js.map +1 -1
  68. package/dist/ui/app.d.ts.map +1 -1
  69. package/dist/ui/app.js +219 -178
  70. package/dist/ui/app.js.map +1 -1
  71. package/dist/ui/chat-view.d.ts +24 -3
  72. package/dist/ui/chat-view.d.ts.map +1 -1
  73. package/dist/ui/chat-view.js +116 -58
  74. package/dist/ui/chat-view.js.map +1 -1
  75. package/dist/ui/input-bar.d.ts.map +1 -1
  76. package/dist/ui/input-bar.js +38 -4
  77. package/dist/ui/input-bar.js.map +1 -1
  78. package/dist/ui/setup-wizard.js +1 -1
  79. package/dist/ui/setup-wizard.js.map +1 -1
  80. package/dist/ui/status-bar.d.ts +5 -1
  81. package/dist/ui/status-bar.d.ts.map +1 -1
  82. package/dist/ui/status-bar.js +10 -4
  83. package/dist/ui/status-bar.js.map +1 -1
  84. package/dist/utils/logger.d.ts +15 -0
  85. package/dist/utils/logger.d.ts.map +1 -1
  86. package/dist/utils/logger.js +47 -0
  87. package/dist/utils/logger.js.map +1 -1
  88. package/package.json +3 -2
@@ -1,4 +1,7 @@
1
- import { execSync } from 'node:child_process';
1
+ import { platform } from 'node:os';
2
+ import { spawnShellCommand, killProcessTree, resolveWindowsShell } from './shell.js';
3
+ import { startBackground, stopBackground, getBackgroundOutput, isBackgroundRunning, getBackgroundExitInfo, waitForPort } from './process-manager.js';
4
+ import { isAbsolute, relative } from 'node:path';
2
5
  /**
3
6
  * Dangerous commands that should never be auto-approved.
4
7
  * These can destroy the system or data.
@@ -10,18 +13,68 @@ const DANGEROUS_PATTERNS = [
10
13
  /^\s*format\s/m,
11
14
  /^\s*del\s+\/f\s+\/s\s/m,
12
15
  /^\s*rd\s+\/s\s+\/q\s/m,
13
- /^\s*remove-item\b.*\s-(?:recurse|r)\b/im,
14
- /^\s*rm\b.*\s-(?:recurse|r)\b/im,
16
+ /^\s*remove-item\b\s+["']?(?:[A-Z]:\\|\/)["']?\s+-(?:recurse|r)\b/im,
17
+ /^\s*rm\b\s+["']?(?:[A-Z]:\\|\/)["']?\s+-(?:recurse|r)\b/im,
15
18
  /^\s*clear-disk\b/im,
16
19
  /^\s*format-volume\b/im,
17
20
  /^\s*stop-computer\b/im,
18
21
  /^\s*restart-computer\b/im,
22
+ /^\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,
23
+ /^\s*taskkill\b(?=.*(?:\/im|-im)\s+\*)/im,
24
+ /^\s*stop-process\b(?=.*-(?:name|processname)\s+(?:node|npm|pnpm|yarn|tsx|vite|nuxt|next|react-scripts|powershell|cmd)\b)/im,
25
+ /^\s*(?:kill|pkill|killall)\b.*\b(?:node|npm|pnpm|yarn|tsx|vite|nuxt|next|react-scripts)\b/im,
19
26
  /^\s*shutdown\s/m,
20
27
  /^\s*reboot\s/m,
21
28
  /^\s*init\s+0/m,
22
29
  /^\s*:\(\)\s*\{/m, // fork bomb
23
30
  /^\s*>+\s+\/dev\//m, // destructive redirects
24
31
  ];
32
+ // Commands with NO Windows PowerShell 5.1 equivalent (would just fail). Note we
33
+ // no longer list cat/rm/ls/cp/mv/echo here: under PowerShell those are aliases
34
+ // (Get-Content/Remove-Item/Get-ChildItem/...) and work fine.
35
+ const WINDOWS_UNIX_COMMAND_REPLACEMENTS = {
36
+ sed: 'Use PowerShell string replacement, Select-String, or read_file/edit instead.',
37
+ head: 'Use Get-Content <path> -TotalCount <n>.',
38
+ tail: 'Use Get-Content <path> -Tail <n>.',
39
+ grep: 'Use grep_search, Select-String, or rg if available.',
40
+ xargs: 'Use PowerShell pipelines with ForEach-Object.',
41
+ touch: 'Use New-Item -ItemType File or Set-Content.',
42
+ };
43
+ function findBareCommandAtSegmentStart(command, names) {
44
+ let atSegmentStart = true;
45
+ let quote = null;
46
+ for (let i = 0; i < command.length; i++) {
47
+ const char = command[i];
48
+ if (quote) {
49
+ if (char === quote)
50
+ quote = null;
51
+ continue;
52
+ }
53
+ if (char === '"' || char === "'") {
54
+ quote = char;
55
+ continue;
56
+ }
57
+ if (/[|&;()]/.test(char)) {
58
+ atSegmentStart = true;
59
+ continue;
60
+ }
61
+ if (/\s/.test(char))
62
+ continue;
63
+ if (!atSegmentStart)
64
+ continue;
65
+ const rest = command.slice(i);
66
+ const match = rest.match(/^([A-Za-z][\w.-]*)\b/);
67
+ if (!match) {
68
+ atSegmentStart = false;
69
+ continue;
70
+ }
71
+ const name = match[1].toLowerCase();
72
+ if (names.has(name))
73
+ return name;
74
+ atSegmentStart = false;
75
+ }
76
+ return null;
77
+ }
25
78
  function isDangerousCommand(command) {
26
79
  for (const pattern of DANGEROUS_PATTERNS) {
27
80
  if (pattern.test(command)) {
@@ -30,20 +83,169 @@ function isDangerousCommand(command) {
30
83
  }
31
84
  return null;
32
85
  }
86
+ function isInsideWorkspace(targetPath) {
87
+ if (!isAbsolute(targetPath))
88
+ return true;
89
+ const rel = relative(process.cwd(), targetPath);
90
+ return rel === '' || (!rel.startsWith('..') && !isAbsolute(rel));
91
+ }
92
+ function extractFirstPathArgument(rest) {
93
+ const trimmed = rest.trim();
94
+ const quoted = trimmed.match(/^["']([^"']+)["']/u);
95
+ if (quoted)
96
+ return quoted[1];
97
+ const bare = trimmed.match(/^([^\s;|&]+)/u);
98
+ return bare?.[1] ?? null;
99
+ }
100
+ function getWorkspacePolicyError(command) {
101
+ const cdPattern = /(?:^|[;&|()])\s*(?:cd|chdir|set-location)\s+((?:"[^"]+")|(?:'[^']+')|[^\s;&|)]+)/gim;
102
+ let match;
103
+ while ((match = cdPattern.exec(command)) !== null) {
104
+ const target = match[1].replace(/^["']|["']$/g, '');
105
+ if (isAbsolute(target) && !isInsideWorkspace(target)) {
106
+ 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.`;
107
+ }
108
+ }
109
+ if (platform() !== 'win32')
110
+ return null;
111
+ const mutatingCmdletPattern = /(?:^|[;&|()])\s*(remove-item|new-item|set-content|add-content|copy-item|move-item)\b([^;&|)]*)/gim;
112
+ while ((match = mutatingCmdletPattern.exec(command)) !== null) {
113
+ const target = extractFirstPathArgument(match[2]);
114
+ if (target && isAbsolute(target) && !isInsideWorkspace(target)) {
115
+ 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.`;
116
+ }
117
+ }
118
+ return null;
119
+ }
120
+ function getWindowsShellPolicyError(command) {
121
+ if (platform() !== 'win32')
122
+ return null;
123
+ const commandName = findBareCommandAtSegmentStart(command, new Set(Object.keys(WINDOWS_UNIX_COMMAND_REPLACEMENTS)));
124
+ if (!commandName)
125
+ return null;
126
+ return `Windows shell policy: '${commandName}' is usually a Unix command and may fail in cmd/PowerShell. ${WINDOWS_UNIX_COMMAND_REPLACEMENTS[commandName]}`;
127
+ }
128
+ function getWindowsUnixFlagPolicyError(command) {
129
+ if (platform() !== 'win32')
130
+ return null;
131
+ const mkdirP = /(?:^|[;&|()])\s*mkdir\s+-p(?:\s|$)/im;
132
+ if (mkdirP.test(command)) {
133
+ 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.';
134
+ }
135
+ return null;
136
+ }
137
+ function hasUnquotedWindowsShellChaining(command) {
138
+ let quote = null;
139
+ for (let i = 0; i < command.length - 1; i++) {
140
+ const char = command[i];
141
+ if (quote) {
142
+ if (char === quote)
143
+ quote = null;
144
+ continue;
145
+ }
146
+ if (char === '"' || char === "'") {
147
+ quote = char;
148
+ continue;
149
+ }
150
+ const pair = command.slice(i, i + 2);
151
+ if (pair === '&&' || pair === '||')
152
+ return true;
153
+ }
154
+ return false;
155
+ }
156
+ function getPowerShellSyntaxPolicyError(command) {
157
+ if (platform() !== 'win32')
158
+ return null;
159
+ if (resolveWindowsShell() !== 'powershell')
160
+ return null;
161
+ if (!hasUnquotedWindowsShellChaining(command))
162
+ return null;
163
+ return 'Windows shell policy: commands run through Windows PowerShell 5.1, which does NOT support the && or || operators. Use ; to run sequentially, or "; if ($?) { <next> }" to run the next command only if the previous one succeeded. Or split into separate tool calls.';
164
+ }
165
+ const MAX_OUTPUT_BYTES = 10 * 1024 * 1024;
166
+ /**
167
+ * Run a shell command asynchronously so the event loop (and therefore the TUI
168
+ * and Ctrl+C handling) stays responsive while the command runs. The command is
169
+ * killed if `signal` aborts (user cancellation) or the timeout elapses.
170
+ */
171
+ function executeCommand(command, timeout, signal) {
172
+ return new Promise((resolve, reject) => {
173
+ if (signal?.aborted) {
174
+ resolve({ stdout: '', stderr: '', code: null, aborted: true, timedOut: false });
175
+ return;
176
+ }
177
+ // detached on POSIX makes the child a process-group leader so the whole
178
+ // group can be killed; on Windows the tree is killed via taskkill /t.
179
+ const child = spawnShellCommand(command, platform() !== 'win32');
180
+ let stdout = '';
181
+ let stderr = '';
182
+ let stdoutBytes = 0;
183
+ let truncated = false;
184
+ let aborted = false;
185
+ let timedOut = false;
186
+ const onAbort = () => { aborted = true; killProcessTree(child); };
187
+ if (signal)
188
+ signal.addEventListener('abort', onAbort, { once: true });
189
+ const timer = setTimeout(() => { timedOut = true; killProcessTree(child); }, timeout);
190
+ child.stdout?.setEncoding('utf8');
191
+ child.stderr?.setEncoding('utf8');
192
+ child.stdout?.on('data', (chunk) => {
193
+ stdoutBytes += Buffer.byteLength(chunk);
194
+ if (stdoutBytes <= MAX_OUTPUT_BYTES)
195
+ stdout += chunk;
196
+ else
197
+ truncated = true;
198
+ });
199
+ child.stderr?.on('data', (chunk) => { stderr += chunk; });
200
+ const cleanup = () => {
201
+ clearTimeout(timer);
202
+ if (signal)
203
+ signal.removeEventListener('abort', onAbort);
204
+ };
205
+ child.on('error', (err) => {
206
+ cleanup();
207
+ reject(err);
208
+ });
209
+ child.on('close', (code) => {
210
+ cleanup();
211
+ if (truncated)
212
+ stdout += `\n\n... [output truncated at ${MAX_OUTPUT_BYTES} bytes]`;
213
+ resolve({ stdout, stderr, code, aborted, timedOut });
214
+ });
215
+ });
216
+ }
33
217
  export const bashTool = {
34
218
  name: 'run_shell_command',
35
- description: 'Execute a shell command. Use for running build tools, tests, git operations, etc.',
219
+ description: 'Execute an OS-compatible shell command (build/test/git). Prefer read_file, grep_search, glob for inspection. For long-running processes like dev/preview servers, set background:true (optionally with wait_for_port) so the call returns instead of hanging; later stop it with stop_pid. The active shell dialect is described in the system prompt.',
36
220
  parameters: [
37
221
  {
38
222
  name: 'command',
39
223
  type: 'string',
40
- description: 'The shell command to execute',
41
- required: true,
224
+ description: 'The shell command to execute. Omit only when using stop_pid, or wait_for_port alone.',
225
+ required: false,
42
226
  },
43
227
  {
44
228
  name: 'timeout',
45
229
  type: 'number',
46
- description: 'Optional timeout in milliseconds (default: 120000)',
230
+ description: 'Timeout in ms (default 120000 for normal commands; 30000 for wait_for_port).',
231
+ required: false,
232
+ },
233
+ {
234
+ name: 'background',
235
+ type: 'boolean',
236
+ description: 'Run the command as a long-running background process (e.g. a dev server) and return immediately with its pid instead of waiting for it to finish.',
237
+ required: false,
238
+ },
239
+ {
240
+ name: 'wait_for_port',
241
+ type: 'number',
242
+ description: 'After starting (or by itself), poll this localhost TCP port until it accepts connections or the timeout elapses. Use to wait for a dev server before a browser check.',
243
+ required: false,
244
+ },
245
+ {
246
+ name: 'stop_pid',
247
+ type: 'number',
248
+ description: 'Stop a previously started background process by its pid (kills the whole process tree). No command needed.',
47
249
  required: false,
48
250
  },
49
251
  {
@@ -53,40 +255,132 @@ export const bashTool = {
53
255
  required: false,
54
256
  },
55
257
  ],
56
- async execute(args) {
258
+ async execute(args, signal) {
57
259
  const command = args.command;
58
260
  const timeout = args.timeout ?? 120_000;
261
+ const background = args.background === true;
262
+ const waitForPortNum = args.wait_for_port;
263
+ const stopPid = args.stop_pid;
264
+ // ── Stop a background process ──────────────────────────────────────────
265
+ if (typeof stopPid === 'number') {
266
+ const result = stopBackground(stopPid);
267
+ if (!result.stopped)
268
+ return { success: false, output: '', error: result.error };
269
+ const tail = result.output ? `\n--- last output ---\n${result.output.slice(-4000)}` : '';
270
+ return { success: true, output: `Stopped background process pid=${stopPid}.${tail}` };
271
+ }
272
+ // ── Wait for a port with no command (server already started elsewhere) ──
273
+ if (!command && typeof waitForPortNum === 'number') {
274
+ const portTimeout = args.timeout ?? 30_000;
275
+ const ready = await waitForPort(waitForPortNum, '127.0.0.1', portTimeout);
276
+ return ready
277
+ ? { success: true, output: `Port ${waitForPortNum} is accepting connections.` }
278
+ : { success: false, output: '', error: `Port ${waitForPortNum} not ready within ${portTimeout}ms.` };
279
+ }
280
+ if (!command) {
281
+ return { success: false, output: '', error: 'No command provided. Pass `command`, or use `stop_pid` / `wait_for_port`.' };
282
+ }
59
283
  // Security check — reject dangerous commands
60
284
  const danger = isDangerousCommand(command);
61
285
  if (danger) {
286
+ const isBroadProcessKill = /\b(?:taskkill|stop-process|pkill|killall)\b/iu.test(command);
62
287
  return {
63
288
  success: false,
64
289
  output: '',
65
- error: `Blocked for security: ${danger}`,
290
+ error: isBroadProcessKill
291
+ ? `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.`
292
+ : `Blocked for security: ${danger}. This command is potentially destructive. Use explicit safe paths inside the current workspace and avoid broad recursive deletion.`,
66
293
  };
67
294
  }
68
- try {
69
- const output = execSync(command, {
70
- timeout,
71
- encoding: 'utf-8',
72
- maxBuffer: 10 * 1024 * 1024, // 10MB
73
- windowsHide: true,
74
- });
295
+ const windowsPolicyError = getWindowsShellPolicyError(command);
296
+ if (windowsPolicyError) {
75
297
  return {
76
- success: true,
77
- output: output || '(command completed with no output)',
298
+ success: false,
299
+ output: '',
300
+ error: windowsPolicyError,
78
301
  };
79
302
  }
80
- catch (err) {
81
- const error = err;
82
- const stdout = error.stdout ?? '';
83
- const stderr = error.stderr ?? '';
303
+ const windowsUnixFlagPolicyError = getWindowsUnixFlagPolicyError(command);
304
+ if (windowsUnixFlagPolicyError) {
305
+ return {
306
+ success: false,
307
+ output: '',
308
+ error: windowsUnixFlagPolicyError,
309
+ };
310
+ }
311
+ const workspacePolicyError = getWorkspacePolicyError(command);
312
+ if (workspacePolicyError) {
313
+ return {
314
+ success: false,
315
+ output: '',
316
+ error: workspacePolicyError,
317
+ };
318
+ }
319
+ const powershellSyntaxPolicyError = getPowerShellSyntaxPolicyError(command);
320
+ if (powershellSyntaxPolicyError) {
321
+ return {
322
+ success: false,
323
+ output: '',
324
+ error: powershellSyntaxPolicyError,
325
+ };
326
+ }
327
+ // ── Background process (dev/preview servers etc.) ──────────────────────
328
+ if (background) {
329
+ const { pid, error } = startBackground(command);
330
+ if (pid == null)
331
+ return { success: false, output: '', error };
332
+ let portMsg = '';
333
+ let portReady = true;
334
+ if (typeof waitForPortNum === 'number') {
335
+ const portTimeout = args.timeout ?? 30_000;
336
+ portReady = await waitForPort(waitForPortNum, '127.0.0.1', portTimeout);
337
+ portMsg = portReady
338
+ ? `\nPort ${waitForPortNum} is ready.`
339
+ : `\nWARNING: port ${waitForPortNum} did not become ready within ${portTimeout}ms.`;
340
+ }
341
+ else {
342
+ // brief grace period to surface startup output / immediate crashes
343
+ await new Promise(resolve => setTimeout(resolve, 800));
344
+ }
345
+ const running = isBackgroundRunning(pid);
346
+ const exitInfo = getBackgroundExitInfo(pid);
347
+ const out = getBackgroundOutput(pid);
348
+ const tail = out ? `\n--- output so far ---\n${out.slice(-4000)}` : '';
349
+ const success = running && portReady;
350
+ return {
351
+ success,
352
+ output: `Started background process pid=${pid}.${running ? '' : ` Process already ${exitInfo}.`}${portMsg}\nStop it later with stop_pid=${pid}.${tail}`,
353
+ error: success ? undefined : (running ? `Port ${waitForPortNum} not ready.` : `Background process exited immediately: ${exitInfo}`),
354
+ };
355
+ }
356
+ try {
357
+ const { stdout, stderr, code, aborted, timedOut } = await executeCommand(command, timeout, signal);
358
+ if (aborted) {
359
+ return { success: false, output: stdout, error: 'Command aborted by user (Ctrl+C).' };
360
+ }
361
+ if (timedOut) {
362
+ return {
363
+ success: false,
364
+ output: stdout,
365
+ error: `Command timed out after ${timeout}ms.${stderr ? `\n${stderr}` : ''}`,
366
+ };
367
+ }
368
+ if (code === 0) {
369
+ return { success: true, output: stdout || '(command completed with no output)' };
370
+ }
84
371
  return {
85
372
  success: false,
86
373
  output: stdout,
87
- error: stderr || error.message,
374
+ error: stderr || `Command exited with code ${code}`,
88
375
  };
89
376
  }
377
+ catch (err) {
378
+ const error = err;
379
+ if (signal?.aborted || error.code === 'ABORT_ERR' || error.name === 'AbortError') {
380
+ return { success: false, output: '', error: 'Command aborted by user (Ctrl+C).' };
381
+ }
382
+ return { success: false, output: '', error: error.message };
383
+ }
90
384
  },
91
385
  };
92
386
  //# sourceMappingURL=bash.js.map
@@ -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":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"chrome-manager.d.ts","sourceRoot":"","sources":["../../src/tools/chrome-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAK1C,OAAO,EAAE,KAAK,OAAO,EAAE,KAAK,IAAI,EAAE,KAAK,aAAa,EAAU,MAAM,WAAW,CAAA;AAE/E,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAkBD,cAAM,aAAc,SAAQ,YAAY;IACtC,OAAO,CAAC,OAAO,CAAuB;IACtC,OAAO,CAAC,WAAW,CAAoB;IACvC,OAAO,CAAC,SAAS,CAAO;IACxB,OAAO,CAAC,YAAY,CAAQ;IAC5B,OAAO,CAAC,WAAW,CAAsB;IAEzC,QAAQ,IAAK,kBAAkB;IAY/B;;;;OAIG;IACG,UAAU,CAAE,eAAe,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAoBpD,UAAU,IAAK,OAAO,CAAC,OAAO,CAAC;IAO/B,MAAM,CAAE,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC;IAsClD,OAAO,CAAE,OAAO,UAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAsBxC,KAAK,IAAK,OAAO,CAAC,IAAI,CAAC;IA6B7B,WAAW,IAAK,OAAO;IAIvB,YAAY,CAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IAKjC,eAAe,CAAE,QAAQ,EAAE,OAAO,GAAG,IAAI;IAKnC,QAAQ,CAAE,GAAG,EAAE,MAAM,EAAE,OAAO,UAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAO5D,OAAO,CAAC,SAAS;CAIlB;AAED,eAAO,MAAM,aAAa,eAAsB,CAAA"}
1
+ {"version":3,"file":"chrome-manager.d.ts","sourceRoot":"","sources":["../../src/tools/chrome-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAK1C,OAAO,EAAE,KAAK,OAAO,EAAE,KAAK,IAAI,EAAE,KAAK,aAAa,EAAU,MAAM,WAAW,CAAA;AAE/E,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAkBD,cAAM,aAAc,SAAQ,YAAY;IACtC,OAAO,CAAC,OAAO,CAAuB;IACtC,OAAO,CAAC,WAAW,CAAoB;IACvC,OAAO,CAAC,SAAS,CAAO;IACxB,OAAO,CAAC,YAAY,CAAQ;IAC5B,OAAO,CAAC,WAAW,CAAsB;IAEzC,QAAQ,IAAK,kBAAkB;IAY/B;;;;OAIG;IACG,UAAU,CAAE,eAAe,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAoBpD,UAAU,IAAK,OAAO,CAAC,OAAO,CAAC;IAO/B,MAAM,CAAE,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC;IAsClD,OAAO,CAAE,OAAO,UAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAyBvC,KAAK,IAAK,OAAO,CAAC,IAAI,CAAC;IA6B7B,WAAW,IAAK,OAAO;IAIvB,YAAY,CAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IAKjC,eAAe,CAAE,QAAQ,EAAE,OAAO,GAAG,IAAI;IAKnC,QAAQ,CAAE,GAAG,EAAE,MAAM,EAAE,OAAO,UAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAO3D,OAAO,CAAC,SAAS;CAIlB;AAED,eAAO,MAAM,aAAa,eAAsB,CAAA"}
@@ -94,8 +94,11 @@ class ChromeManager extends EventEmitter {
94
94
  });
95
95
  return this.browser;
96
96
  }
97
- async getPage(sameTab = false) {
97
+ async getPage(sameTab = true) {
98
98
  const browser = await this.getBrowser();
99
+ // Default: reuse the current tab. A fresh tab per navigation spawned dozens
100
+ // of tabs for what is usually the same site. Pass sameTab=false only when a
101
+ // genuinely separate tab is intended.
99
102
  if (sameTab && this.currentPage && !this.currentPage.isClosed()) {
100
103
  this.emitState();
101
104
  return this.currentPage;
@@ -148,7 +151,7 @@ class ChromeManager extends EventEmitter {
148
151
  this.headlessMode = headless;
149
152
  this.emitState();
150
153
  }
151
- async navigate(url, sameTab = false) {
154
+ async navigate(url, sameTab = true) {
152
155
  const page = await this.getPage(sameTab);
153
156
  await page.goto(url, { waitUntil: 'domcontentloaded', timeout: 30000 });
154
157
  this.currentPage = page;
@@ -1 +1 @@
1
- {"version":3,"file":"chrome-manager.js","sourceRoot":"","sources":["../../src/tools/chrome-manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"chrome-manager.js","sourceRoot":"","sources":["../../src/tools/chrome-manager.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"chrome.d.ts","sourceRoot":"","sources":["../../src/tools/chrome.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,IAAI,EAA6B,MAAM,YAAY,CAAA;AAGjE,MAAM,MAAM,YAAY,GACpB,MAAM,GACN,OAAO,GACP,MAAM,GACN,MAAM,GACN,MAAM,GACN,MAAM,GACN,SAAS,GACT,SAAS,GACT,OAAO,GACP,MAAM,GACN,KAAK,GACL,MAAM,GACN,QAAQ,GACR,SAAS,GACT,SAAS,GACT,SAAS,GACT,MAAM,CAAA;AAEV,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,YAAY,CAAC;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,YAAY,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAC;CACnC;AA6nBD,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAC;IACxC,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,UAAU,GAAG,QAAQ,CAAC;IAC5B,KAAK,EAAE,eAAe,EAAE,CAAC;IACzB,OAAO,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAC7D,YAAY,EAAE,OAAO,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAID,wBAAgB,wBAAwB,IAAK,iBAAiB,GAAG,IAAI,CAEpE;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAgDD;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,WAAW,CAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,MAAM,CAAC,CAsKhF;AAoID,MAAM,WAAW,sBAAsB;IACrC,KAAK,CAAC,EAAE,MAAM,EAAE,CAAA;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,MAAM,CAAC,EAAE,WAAW,CAAA;CACrB;AAeD,wBAAsB,eAAe,CAAE,OAAO,CAAC,EAAE,sBAAsB,GAAG,OAAO,CAAC,MAAM,CAAC,CA8ExF;AAmED,eAAO,MAAM,UAAU,EAAE,IAiCxB,CAAA"}
1
+ {"version":3,"file":"chrome.d.ts","sourceRoot":"","sources":["../../src/tools/chrome.ts"],"names":[],"mappings":"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"}
@@ -58,7 +58,7 @@ async function resolveArtifactPath(output) {
58
58
  }
59
59
  async function navigateIfNeeded(args, page) {
60
60
  if (args.url) {
61
- await chromeManager.navigate(args.url, args.sameTab ?? false);
61
+ await chromeManager.navigate(args.url, args.sameTab ?? true);
62
62
  return;
63
63
  }
64
64
  if (page.url() === 'about:blank') {
@@ -221,7 +221,7 @@ async function executeAction(args) {
221
221
  });
222
222
  return {
223
223
  success: true,
224
- output: `Screenshot saved: ${shotPath}\nPage: ${page.url()}`,
224
+ output: `Screenshot saved for the user to view: ${shotPath}\nPage: ${page.url()}\nNote: this model cannot see the image. To VERIFY rendered state yourself, use action 'read'/'eval' (DOM, computed styles, element counts) and 'console' (errors) — do not claim what the screenshot shows.`,
225
225
  };
226
226
  }
227
227
  case 'nav': {
@@ -449,7 +449,7 @@ const chromeParameters = [
449
449
  {
450
450
  name: 'sameTab',
451
451
  type: 'boolean',
452
- description: 'Reuse the current tab for multi-step browser flows',
452
+ description: 'Reuse the current tab (DEFAULT true). Navigations and reloads stay in one tab. Set false ONLY to intentionally open a separate tab for a different site.',
453
453
  required: false,
454
454
  },
455
455
  {
@@ -1032,6 +1032,11 @@ Use it for UI validation, rendered DOM inspection, console and network debugging
1032
1032
  screenshots, and multi-step browser workflows when terminal tools are not enough.
1033
1033
  If the task mentions localhost pages, forms, browser bugs, screenshots, rendered state,
1034
1034
  console output, or network requests, this is the primary tool.
1035
+ This model has NO vision: a screenshot is saved for the user but you cannot read it.
1036
+ VERIFY rendered state with action 'read'/'eval' (DOM, text, computed styles, element
1037
+ counts) and 'console' (errors) — never claim what a screenshot "shows".
1038
+ Navigation reuses ONE tab by default (sameTab); do not reopen a new tab for the
1039
+ same site — navigate/refresh in place. Use sameTab:false only for a different site.
1035
1040
 
1036
1041
  Examples:
1037
1042
  - { "action": "open", "url": "https://example.com" }