@serjm/deepseek-code 0.4.2 → 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.
Files changed (72) hide show
  1. package/CHANGELOG.md +75 -0
  2. package/README.md +72 -108
  3. package/README.ru.md +73 -108
  4. package/dist/api/index.d.ts +9 -0
  5. package/dist/api/index.d.ts.map +1 -1
  6. package/dist/api/index.js +65 -2
  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 +63 -41
  17. package/dist/commands/index.js.map +1 -1
  18. package/dist/config/defaults.d.ts.map +1 -1
  19. package/dist/config/defaults.js +8 -7
  20. package/dist/config/defaults.js.map +1 -1
  21. package/dist/core/agent-loop.d.ts +44 -2
  22. package/dist/core/agent-loop.d.ts.map +1 -1
  23. package/dist/core/agent-loop.js +318 -59
  24. package/dist/core/agent-loop.js.map +1 -1
  25. package/dist/core/i18n.d.ts +3 -0
  26. package/dist/core/i18n.d.ts.map +1 -1
  27. package/dist/core/i18n.js +9 -0
  28. package/dist/core/i18n.js.map +1 -1
  29. package/dist/core/metrics.d.ts +3 -1
  30. package/dist/core/metrics.d.ts.map +1 -1
  31. package/dist/core/metrics.js +34 -5
  32. package/dist/core/metrics.js.map +1 -1
  33. package/dist/tools/bash.d.ts.map +1 -1
  34. package/dist/tools/bash.js +299 -20
  35. package/dist/tools/bash.js.map +1 -1
  36. package/dist/tools/chrome.d.ts.map +1 -1
  37. package/dist/tools/chrome.js +1 -0
  38. package/dist/tools/chrome.js.map +1 -1
  39. package/dist/tools/glob.d.ts.map +1 -1
  40. package/dist/tools/glob.js +40 -3
  41. package/dist/tools/glob.js.map +1 -1
  42. package/dist/tools/grep.d.ts.map +1 -1
  43. package/dist/tools/grep.js +69 -13
  44. package/dist/tools/grep.js.map +1 -1
  45. package/dist/tools/read.d.ts.map +1 -1
  46. package/dist/tools/read.js +91 -0
  47. package/dist/tools/read.js.map +1 -1
  48. package/dist/tools/types.d.ts +21 -1
  49. package/dist/tools/types.d.ts.map +1 -1
  50. package/dist/tools/types.js +34 -0
  51. package/dist/tools/types.js.map +1 -1
  52. package/dist/ui/app.d.ts.map +1 -1
  53. package/dist/ui/app.js +234 -162
  54. package/dist/ui/app.js.map +1 -1
  55. package/dist/ui/chat-view.d.ts +24 -3
  56. package/dist/ui/chat-view.d.ts.map +1 -1
  57. package/dist/ui/chat-view.js +116 -58
  58. package/dist/ui/chat-view.js.map +1 -1
  59. package/dist/ui/input-bar.d.ts.map +1 -1
  60. package/dist/ui/input-bar.js +38 -4
  61. package/dist/ui/input-bar.js.map +1 -1
  62. package/dist/ui/setup-wizard.js +1 -1
  63. package/dist/ui/setup-wizard.js.map +1 -1
  64. package/dist/ui/status-bar.d.ts +5 -1
  65. package/dist/ui/status-bar.d.ts.map +1 -1
  66. package/dist/ui/status-bar.js +10 -4
  67. package/dist/ui/status-bar.js.map +1 -1
  68. package/dist/utils/logger.d.ts +15 -0
  69. package/dist/utils/logger.d.ts.map +1 -1
  70. package/dist/utils/logger.js +47 -0
  71. package/dist/utils/logger.js.map +1 -1
  72. package/package.json +3 -2
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,uBAAuB,CAAA;AAC3D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAGnD,YAAY,EAAE,UAAU,EAAE,CAAA;AAE1B,MAAM,MAAM,YAAY,GACpB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAC9B;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,SAAS,EAAE;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,CAAA;AAErD,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAG,WAAW,GAAG,MAAM,CAAC;IAC/C,OAAO,EAAE,MAAM,GAAG,YAAY,EAAE,CAAC;IACjC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,KAAK,CAAC;QACjB,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,UAAU,CAAC;QACjB,QAAQ,EAAE;YACR,IAAI,EAAE,MAAM,CAAC;YACb,SAAS,EAAE,MAAM,CAAC;SACnB,CAAC;KACH,CAAC,CAAC;CACJ;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,aAAa,GAAG,WAAW,GAAG,OAAO,CAAC;IAClE,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACpC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE;QACN,KAAK,EAAE,MAAM,CAAC;QACd,aAAa,EAAE,MAAM,CAAC;QACtB,cAAc,EAAE,MAAM,CAAC;QACvB,MAAM,EAAE,MAAM,CAAC;QACf,eAAe,EAAE,MAAM,CAAC;QACxB,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;CACH;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,WAAW,CAAC;IAClB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,UAAU,EAAE,WAAW,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,CAAC;CACpD;AA8BD,qBAAa,WAAW;IACtB,OAAO,CAAC,MAAM,CAAQ;IACtB,OAAO,CAAC,KAAK,CAAQ;IACrB,OAAO,CAAC,YAAY,CAAQ;gBAEf,MAAM,EAAE,cAAc;IAS3B,UAAU,CAChB,QAAQ,EAAE,WAAW,EAAE,EACvB,KAAK,CAAC,EAAE,UAAU,EAAE,GACnB,cAAc,CAAC,WAAW,CAAC;IA2I9B;;;OAGG;IACG,IAAI,CACR,QAAQ,EAAE,WAAW,EAAE,EACvB,KAAK,CAAC,EAAE,UAAU,EAAE,GACnB,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,eAAe,CAAC,YAAY,CAAC,CAAC;QAAC,KAAK,CAAC,EAAE,WAAW,CAAC,OAAO,CAAC,CAAA;KAAE,CAAC;IAmDxG,+DAA+D;IACzD,WAAW,IAAK,OAAO,CAAC;QAAE,KAAK,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAiBjE;;OAEG;IACG,YAAY,CAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;CAOrD"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":"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"}
package/dist/api/index.js CHANGED
@@ -1,7 +1,13 @@
1
1
  import OpenAI from 'openai';
2
- // ─── Retry helpers ───────────────────────────────────────────────────────────
2
+ // Retry helpers
3
3
  const MAX_RETRY_ATTEMPTS = 3;
4
4
  const STREAM_CHUNK_TIMEOUT_MS = 60_000;
5
+ export class StreamTimeoutError extends Error {
6
+ constructor(timeoutMs) {
7
+ super(`Stream timeout: no data received for ${timeoutMs / 1000}s`);
8
+ this.name = 'StreamTimeoutError';
9
+ }
10
+ }
5
11
  function sleep(ms) {
6
12
  return new Promise(resolve => setTimeout(resolve, ms));
7
13
  }
@@ -46,13 +52,20 @@ export class DeepSeekAPI {
46
52
  ...buildMessages(messages),
47
53
  ];
48
54
  const timeoutController = new AbortController();
55
+ let timeoutError;
49
56
  let chunkTimer;
50
57
  const resetChunkTimer = () => {
51
58
  clearTimeout(chunkTimer);
52
59
  chunkTimer = setTimeout(() => {
53
- timeoutController.abort(new Error(`Stream timeout: no data received for ${STREAM_CHUNK_TIMEOUT_MS / 1000}s`));
60
+ timeoutError = new StreamTimeoutError(STREAM_CHUNK_TIMEOUT_MS);
61
+ timeoutController.abort(timeoutError);
54
62
  }, STREAM_CHUNK_TIMEOUT_MS);
55
63
  };
64
+ // NOTE: user cancellation is cooperative (the agent loop drains this stream
65
+ // to its natural end on Ctrl+C) — we intentionally do NOT abort the request
66
+ // socket here. Abruptly tearing down the streaming socket mid-flight hard-
67
+ // crashed the process on Windows (no JS exit handlers fired). Only the
68
+ // chunk-timeout aborts the socket.
56
69
  const stream = await withRetry(() => this.client.chat.completions.create({
57
70
  model: this.model,
58
71
  messages: fullMessages,
@@ -151,6 +164,12 @@ export class DeepSeekAPI {
151
164
  };
152
165
  }
153
166
  }
167
+ catch (err) {
168
+ if (timeoutError && isAbortLikeError(err)) {
169
+ throw timeoutError;
170
+ }
171
+ throw err;
172
+ }
154
173
  finally {
155
174
  clearTimeout(chunkTimer);
156
175
  }
@@ -228,8 +247,40 @@ export class DeepSeekAPI {
228
247
  }
229
248
  }
230
249
  // ─── Helper functions ────────────────────────────────────────────────────────
250
+ /**
251
+ * Convert a string that contains data: URLs into ContentBlock[] for vision models.
252
+ * If no data: URLs found, returns the original string.
253
+ * Used to upgrade read_file output (images/PDF as base64) into multimodal input.
254
+ */
255
+ export function dataUrlsToContentBlocks(text) {
256
+ const DATA_URL_RE = /!?\[.*?\]\(data:([^;]+);base64,([^)]+)\)/g;
257
+ const blocks = [];
258
+ let lastIndex = 0;
259
+ let match;
260
+ while ((match = DATA_URL_RE.exec(text)) !== null) {
261
+ if (match.index > lastIndex) {
262
+ blocks.push({ type: 'text', text: text.slice(lastIndex, match.index).trim() || '\n' });
263
+ }
264
+ const mime = match[1];
265
+ const b64 = match[2];
266
+ blocks.push({ type: 'image_url', image_url: { url: `data:${mime};base64,${b64}` } });
267
+ lastIndex = match.index + match[0].length;
268
+ }
269
+ if (blocks.length === 0)
270
+ return text;
271
+ if (lastIndex < text.length) {
272
+ const remaining = text.slice(lastIndex).trim();
273
+ if (remaining)
274
+ blocks.push({ type: 'text', text: remaining });
275
+ }
276
+ if (!blocks.some(b => b.type === 'text')) {
277
+ blocks.unshift({ type: 'text', text: 'Analyze the following image(s):' });
278
+ }
279
+ return blocks;
280
+ }
231
281
  /**
232
282
  * Build OpenAI-compatible message array from our internal ChatMessage format.
283
+ * Handles both string content and ContentBlock[] (for vision/multimodal models).
233
284
  */
234
285
  function buildMessages(messages) {
235
286
  return messages.map(m => {
@@ -255,6 +306,12 @@ function buildMessages(messages) {
255
306
  };
256
307
  }
257
308
  // Content can be string or ContentBlock[] (for vision/multimodal messages)
309
+ if (typeof m.content === 'string') {
310
+ return {
311
+ role: m.role,
312
+ content: m.content,
313
+ };
314
+ }
258
315
  return {
259
316
  role: m.role,
260
317
  content: m.content,
@@ -272,4 +329,10 @@ function safeParseJSON(str) {
272
329
  return {};
273
330
  }
274
331
  }
332
+ function isAbortLikeError(err) {
333
+ const error = err;
334
+ const name = String(error?.name ?? '');
335
+ const message = String(error?.message ?? err);
336
+ return name === 'AbortError' || /abort/i.test(message);
337
+ }
275
338
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
1
  #!/usr/bin/env node
2
2
  export declare function run(args: string[]): Promise<void>;
3
+ export declare function getCommanderParseSource(args: string[]): 'node' | 'user';
3
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AAgFA,wBAAsB,GAAG,CAAE,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAaxD"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AAgFA,wBAAsB,GAAG,CAAE,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAaxD;AAED,wBAAgB,uBAAuB,CAAE,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,GAAG,MAAM,CAExE"}
package/dist/cli/index.js CHANGED
@@ -2,7 +2,7 @@
2
2
  import { Command } from 'commander';
3
3
  import { readFileSync } from 'node:fs';
4
4
  import { fileURLToPath } from 'node:url';
5
- import { dirname, join } from 'node:path';
5
+ import { dirname, join, resolve } from 'node:path';
6
6
  const __filename = fileURLToPath(import.meta.url);
7
7
  const __dirname = dirname(__filename);
8
8
  // Read version from package.json
@@ -16,7 +16,7 @@ program
16
16
  .argument('[query...]', 'Optional query to run in non-interactive mode')
17
17
  .option('-p, --prompt <text>', 'Run a single prompt and exit (non-interactive)')
18
18
  .option('-i, --prompt-interactive <text>', 'Run a prompt then continue in interactive mode')
19
- .option('-m, --model <model>', 'Model to use (e.g. deepseek-chat)')
19
+ .option('-m, --model <model>', 'Model to use (e.g. deepseek-v4-pro)')
20
20
  .option('-t, --turbo', 'Enable Turbo mode (auto-approve all actions)')
21
21
  .option('--approval-mode <mode>', 'Set approval mode: plan, default, auto-edit, turbo')
22
22
  .option('--debug', 'Enable debug logging')
@@ -80,11 +80,18 @@ export async function run(args) {
80
80
  }
81
81
  // Handle --help passed via commander's parse
82
82
  // Commander may intercept --help before action, but we also handle it here
83
- await program.parseAsync(args, { from: 'user' });
83
+ await program.parseAsync(args, { from: getCommanderParseSource(args) });
84
+ }
85
+ export function getCommanderParseSource(args) {
86
+ return args.length >= 2 ? 'node' : 'user';
87
+ }
88
+ const isEntrypoint = process.argv[1]
89
+ ? resolve(process.argv[1]) === fileURLToPath(import.meta.url)
90
+ : false;
91
+ if (isEntrypoint) {
92
+ run(process.argv).catch((err) => {
93
+ console.error('Fatal error:', err);
94
+ process.exit(1);
95
+ });
84
96
  }
85
- // Always run when this module is loaded
86
- run(process.argv).catch((err) => {
87
- console.error('Fatal error:', err);
88
- process.exit(1);
89
- });
90
97
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"interactive.d.ts","sourceRoot":"","sources":["../../src/cli/interactive.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,UAAU;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,MAAM,cAAc,GAAG,UAAU,CAAA;AAEvC,wBAAsB,uBAAuB,CAAE,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAkFrF"}
1
+ {"version":3,"file":"interactive.d.ts","sourceRoot":"","sources":["../../src/cli/interactive.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,UAAU;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,MAAM,cAAc,GAAG,UAAU,CAAA;AAEvC,wBAAsB,uBAAuB,CAAE,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CA8IrF"}
@@ -5,6 +5,7 @@ import { ErrorBoundary } from '../ui/error-boundary.js';
5
5
  import { loadConfig } from '../config/loader.js';
6
6
  import { themeManager } from '../core/themes.js';
7
7
  import { i18n } from '../core/i18n.js';
8
+ import { logCrash, logEvent, debug } from '../utils/logger.js';
8
9
  export async function startInteractiveSession(options) {
9
10
  const config = await loadConfig();
10
11
  // Apply CLI theme/lang overrides
@@ -15,18 +16,72 @@ export async function startInteractiveSession(options) {
15
16
  i18n.setLocale(options.lang);
16
17
  }
17
18
  let cleanup = null;
18
- // Double Ctrl+C guard: first Ctrl+C in Ready shows hint, second within 2s exits.
19
+ // Global crash guard: a stray rejection (e.g. fallout from aborting an
20
+ // in-flight API stream on Ctrl+C) must never drop the user back to the shell
21
+ // mid-session. Abort-like errors are expected during cancellation and ignored;
22
+ // anything else is recorded to ~/.deepseek-code/crash.log and the session
23
+ // keeps running so no work is lost.
24
+ const isAbortLike = (err) => {
25
+ const e = err;
26
+ return e?.name === 'AbortError' || e?.code === 'ABORT_ERR' ||
27
+ /abort|cancel|The operation was aborted/i.test(e?.message ?? '');
28
+ };
29
+ const onUnhandledRejection = (reason) => {
30
+ if (isAbortLike(reason)) {
31
+ debug('ignored abort-like unhandledRejection', reason);
32
+ return;
33
+ }
34
+ logCrash('unhandledRejection', reason);
35
+ };
36
+ const onUncaughtException = (err) => {
37
+ if (isAbortLike(err)) {
38
+ debug('ignored abort-like uncaughtException', err);
39
+ return;
40
+ }
41
+ logCrash('uncaughtException', err);
42
+ };
43
+ process.on('unhandledRejection', onUnhandledRejection);
44
+ process.on('uncaughtException', onUncaughtException);
45
+ // Diagnostic: log every process exit so we can see WHY the TUI dropped to the
46
+ // shell (clean exit vs signal). Synchronous append survives the exit.
47
+ const onProcessExit = (code) => logEvent('process.exit event', { code });
48
+ const onBeforeExit = (code) => logEvent('beforeExit (event loop drained)', { code });
49
+ process.on('exit', onProcessExit);
50
+ process.on('beforeExit', onBeforeExit);
51
+ logEvent('session start', { platform: process.platform, isTTY: !!process.stdout.isTTY });
52
+ // Keep-alive: hold one ref'd handle so the event loop never drains while the
53
+ // TUI is mounted. Without this, on some Windows terminals the only thing
54
+ // keeping Node alive during an agent turn is the in-flight network socket —
55
+ // so aborting it on Ctrl+C drained the loop and dropped the user to the shell
56
+ // instead of pausing. Cleared in cleanup so real exits still work.
57
+ const keepAlive = setInterval(() => { }, 1 << 30);
58
+ // Double Ctrl+C guard: first Ctrl+C in Ready shows hint, second within 3s exits.
19
59
  // App registers process.__agentSoftCancel while isProcessing=true.
20
60
  let pendingExitTimer = null;
21
61
  const onSIGINT = () => {
22
62
  const proc = process;
63
+ logEvent('SIGINT', {
64
+ hasSoftCancel: !!proc.__agentSoftCancel,
65
+ hasAbortController: !!proc.__agentAbortController,
66
+ pendingExit: !!proc.__pendingExit,
67
+ pendingExitTimer: !!pendingExitTimer,
68
+ });
23
69
  // 1) Agent is running — soft cancel, never exit
24
70
  if (proc.__agentSoftCancel) {
71
+ logEvent('SIGINT -> softCancel');
25
72
  proc.__agentSoftCancel();
26
73
  return;
27
74
  }
75
+ // 1b) Fallback: __agentSoftCancel may not be set yet (useEffect race on Windows),
76
+ // but synchronous AbortController exists from handleSubmit
77
+ if (proc.__agentAbortController) {
78
+ logEvent('SIGINT -> abortController');
79
+ proc.__agentAbortController.abort();
80
+ return;
81
+ }
28
82
  // 2) Agent just finished (pending exit flag from app.tsx) — exit immediately
29
83
  if (proc.__pendingExit) {
84
+ logEvent('SIGINT -> pendingExit -> process.exit(0)');
30
85
  proc.__pendingExit = false;
31
86
  if (cleanup)
32
87
  cleanup();
@@ -35,7 +90,8 @@ export async function startInteractiveSession(options) {
35
90
  }
36
91
  // 3) Ready state — double Ctrl+C guard
37
92
  if (pendingExitTimer) {
38
- // Second Ctrl+C within 2s — exit
93
+ // Second Ctrl+C within 3s — exit
94
+ logEvent('SIGINT -> doublePress -> process.exit(0)');
39
95
  clearTimeout(pendingExitTimer);
40
96
  pendingExitTimer = null;
41
97
  if (cleanup)
@@ -43,10 +99,11 @@ export async function startInteractiveSession(options) {
43
99
  process.exit(0);
44
100
  return;
45
101
  }
102
+ logEvent('SIGINT -> firstPress hint');
46
103
  // First Ctrl+C — show hint, start timer
47
104
  pendingExitTimer = setTimeout(() => {
48
105
  pendingExitTimer = null;
49
- }, 2000);
106
+ }, 3000);
50
107
  // Write hint to stderr so it appears even if TUI is rendering
51
108
  process.stderr.write(`\n\x1b[33m⚠ ${i18n.t('ctrlCHint')}\x1b[0m\n`);
52
109
  };
@@ -61,6 +118,7 @@ export async function startInteractiveSession(options) {
61
118
  const { waitUntilExit, clear } = render(React.createElement(ErrorBoundary, null, React.createElement(App, { config, options })), { exitOnCtrlC: false } // App owns Ctrl+C: useInput handles raw-mode, onSIGINT handles signal
62
119
  );
63
120
  cleanup = () => {
121
+ clearInterval(keepAlive);
64
122
  clear();
65
123
  if (pendingExitTimer) {
66
124
  clearTimeout(pendingExitTimer);
@@ -68,6 +126,10 @@ export async function startInteractiveSession(options) {
68
126
  }
69
127
  process.removeListener('SIGINT', onSIGINT);
70
128
  process.removeListener('SIGTERM', onSIGTERM);
129
+ process.removeListener('unhandledRejection', onUnhandledRejection);
130
+ process.removeListener('uncaughtException', onUncaughtException);
131
+ process.removeListener('exit', onProcessExit);
132
+ process.removeListener('beforeExit', onBeforeExit);
71
133
  };
72
134
  await waitUntilExit();
73
135
  cleanup();
@@ -1 +1 @@
1
- {"version":3,"file":"interactive.js","sourceRoot":"","sources":["../../src/cli/interactive.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"interactive.js","sourceRoot":"","sources":["../../src/cli/interactive.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,KAAK,CAAA;AAC5B,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAA;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAA;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAA;AACtC,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAoB9D,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAAE,OAAuB;IACpE,MAAM,MAAM,GAAG,MAAM,UAAU,EAAE,CAAA;IAEjC,iCAAiC;IACjC,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QAClB,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;IACtC,CAAC;IACD,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACjB,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAA0B,CAAC,CAAA;IACpD,CAAC;IAED,IAAI,OAAO,GAAwB,IAAI,CAAA;IAEvC,uEAAuE;IACvE,6EAA6E;IAC7E,+EAA+E;IAC/E,0EAA0E;IAC1E,oCAAoC;IACpC,MAAM,WAAW,GAAG,CAAC,GAAY,EAAW,EAAE;QAC5C,MAAM,CAAC,GAAG,GAAyD,CAAA;QACnE,OAAO,CAAC,EAAE,IAAI,KAAK,YAAY,IAAI,CAAC,EAAE,IAAI,KAAK,WAAW;YACxD,yCAAyC,CAAC,IAAI,CAAC,CAAC,EAAE,OAAO,IAAI,EAAE,CAAC,CAAA;IACpE,CAAC,CAAA;IACD,MAAM,oBAAoB,GAAG,CAAC,MAAe,EAAE,EAAE;QAC/C,IAAI,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC;YAAC,KAAK,CAAC,uCAAuC,EAAE,MAAM,CAAC,CAAC;YAAC,OAAM;QAAC,CAAC;QAC3F,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAC,CAAA;IACxC,CAAC,CAAA;IACD,MAAM,mBAAmB,GAAG,CAAC,GAAU,EAAE,EAAE;QACzC,IAAI,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC;YAAC,KAAK,CAAC,sCAAsC,EAAE,GAAG,CAAC,CAAC;YAAC,OAAM;QAAC,CAAC;QACpF,QAAQ,CAAC,mBAAmB,EAAE,GAAG,CAAC,CAAA;IACpC,CAAC,CAAA;IACD,OAAO,CAAC,EAAE,CAAC,oBAAoB,EAAE,oBAAoB,CAAC,CAAA;IACtD,OAAO,CAAC,EAAE,CAAC,mBAAmB,EAAE,mBAAmB,CAAC,CAAA;IAEpD,8EAA8E;IAC9E,sEAAsE;IACtE,MAAM,aAAa,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,QAAQ,CAAC,oBAAoB,EAAE,EAAE,IAAI,EAAE,CAAC,CAAA;IAChF,MAAM,YAAY,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,QAAQ,CAAC,iCAAiC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAA;IAC5F,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,aAAa,CAAC,CAAA;IACjC,OAAO,CAAC,EAAE,CAAC,YAAY,EAAE,YAAY,CAAC,CAAA;IACtC,QAAQ,CAAC,eAAe,EAAE,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAA;IAExF,6EAA6E;IAC7E,yEAAyE;IACzE,4EAA4E;IAC5E,8EAA8E;IAC9E,mEAAmE;IACnE,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE,GAAE,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,CAAA;IAEhD,iFAAiF;IACjF,mEAAmE;IACnE,IAAI,gBAAgB,GAAyC,IAAI,CAAA;IAEjE,MAAM,QAAQ,GAAG,GAAG,EAAE;QACpB,MAAM,IAAI,GAAG,OAIZ,CAAA;QAED,QAAQ,CAAC,QAAQ,EAAE;YACjB,aAAa,EAAE,CAAC,CAAC,IAAI,CAAC,iBAAiB;YACvC,kBAAkB,EAAE,CAAC,CAAC,IAAI,CAAC,sBAAsB;YACjD,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,aAAa;YACjC,gBAAgB,EAAE,CAAC,CAAC,gBAAgB;SACrC,CAAC,CAAA;QAEF,gDAAgD;QAChD,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAC3B,QAAQ,CAAC,sBAAsB,CAAC,CAAA;YAChC,IAAI,CAAC,iBAAiB,EAAE,CAAA;YACxB,OAAM;QACR,CAAC;QACD,kFAAkF;QAClF,2DAA2D;QAC3D,IAAI,IAAI,CAAC,sBAAsB,EAAE,CAAC;YAChC,QAAQ,CAAC,2BAA2B,CAAC,CAAA;YACrC,IAAI,CAAC,sBAAsB,CAAC,KAAK,EAAE,CAAA;YACnC,OAAM;QACR,CAAC;QAED,6EAA6E;QAC7E,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACvB,QAAQ,CAAC,0CAA0C,CAAC,CAAA;YACpD,IAAI,CAAC,aAAa,GAAG,KAAK,CAAA;YAC1B,IAAI,OAAO;gBAAE,OAAO,EAAE,CAAA;YACtB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;YACf,OAAM;QACR,CAAC;QAED,uCAAuC;QACvC,IAAI,gBAAgB,EAAE,CAAC;YACrB,iCAAiC;YACjC,QAAQ,CAAC,0CAA0C,CAAC,CAAA;YACpD,YAAY,CAAC,gBAAgB,CAAC,CAAA;YAC9B,gBAAgB,GAAG,IAAI,CAAA;YACvB,IAAI,OAAO;gBAAE,OAAO,EAAE,CAAA;YACtB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;YACf,OAAM;QACR,CAAC;QACD,QAAQ,CAAC,2BAA2B,CAAC,CAAA;QAErC,wCAAwC;QACxC,gBAAgB,GAAG,UAAU,CAAC,GAAG,EAAE;YACjC,gBAAgB,GAAG,IAAI,CAAA;QACzB,CAAC,EAAE,IAAI,CAAC,CAAA;QAER,8DAA8D;QAC9D,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,eAAe,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,WAAW,CAAC,CAAA;IACrE,CAAC,CAAA;IAED,4DAA4D;IAC5D,MAAM,SAAS,GAAG,GAAG,EAAE;QACrB,IAAI,OAAO;YAAE,OAAO,EAAE,CAAA;QACtB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC,CAAA;IAED,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAA;IAC9B,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC,CAAA;IAEhC,MAAM,EAAE,aAAa,EAAE,KAAK,EAAE,GAAG,MAAM,CACrC,KAAK,CAAC,aAAa,CAAC,aAAa,EAAE,IAAI,EAAE,KAAK,CAAC,aAAa,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC,EACvF,EAAE,WAAW,EAAE,KAAK,EAAE,CAAE,sEAAsE;KAC/F,CAAA;IAED,OAAO,GAAG,GAAG,EAAE;QACb,aAAa,CAAC,SAAS,CAAC,CAAA;QACxB,KAAK,EAAE,CAAA;QACP,IAAI,gBAAgB,EAAE,CAAC;YACrB,YAAY,CAAC,gBAAgB,CAAC,CAAA;YAC9B,gBAAgB,GAAG,IAAI,CAAA;QACzB,CAAC;QACD,OAAO,CAAC,cAAc,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAA;QAC1C,OAAO,CAAC,cAAc,CAAC,SAAS,EAAE,SAAS,CAAC,CAAA;QAC5C,OAAO,CAAC,cAAc,CAAC,oBAAoB,EAAE,oBAAoB,CAAC,CAAA;QAClE,OAAO,CAAC,cAAc,CAAC,mBAAmB,EAAE,mBAAmB,CAAC,CAAA;QAChE,OAAO,CAAC,cAAc,CAAC,MAAM,EAAE,aAAa,CAAC,CAAA;QAC7C,OAAO,CAAC,cAAc,CAAC,YAAY,EAAE,YAAY,CAAC,CAAA;IACpD,CAAC,CAAA;IAED,MAAM,aAAa,EAAE,CAAA;IACrB,OAAO,EAAE,CAAA;AACX,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAgBlD,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AACzE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AAE1D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAA;AAItD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAMnD,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,cAAc,CAAA;IACtB,YAAY,EAAE,YAAY,CAAA;IAC1B,QAAQ,EAAE,WAAW,EAAE,CAAA;IACvB,WAAW,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,WAAW,EAAE,CAAC,CAAC,CAAA;IAChE,aAAa,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAA;IAC3D,YAAY,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK,IAAI,CAAA;IACvC,iFAAiF;IACjF,aAAa,CAAC,EAAE,MAAM,IAAI,CAAA;IAC1B,iFAAiF;IACjF,aAAa,CAAC,EAAE,MAAM,IAAI,CAAA;IAC1B,gFAAgF;IAChF,YAAY,CAAC,EAAE,MAAM,IAAI,CAAA;IACzB,kGAAkG;IAClG,gBAAgB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IACzC,iEAAiE;IACjE,UAAU,CAAC,EAAE,MAAM,gBAAgB,GAAG,SAAS,CAAA;IAC/C,yDAAyD;IACzD,SAAS,CAAC,EAAE,MAAM,UAAU,GAAG,SAAS,CAAA;IACxC,6CAA6C;IAC7C,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,UAAU,GAAG,SAAS,KAAK,IAAI,CAAA;CACrD;AA0qCD,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;IACnB,OAAO,EAAE,CAAC,GAAG,EAAE,mBAAmB,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;CACvE;AAED,eAAO,MAAM,QAAQ,EAAE,YAAY,EAkClC,CAAA;AAED,eAAO,MAAM,aAAa,EAAE,MAAM,EAA8B,CAAA;AAEhE,eAAO,MAAM,WAAW,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAEnD,CAAA;AAgBD,wBAAsB,mBAAmB,CAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,mBAAmB,GAAG,OAAO,CAAC,OAAO,CAAC,CAapG"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAgBlD,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AACzE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AAE1D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAA;AAItD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAMnD,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,cAAc,CAAA;IACtB,YAAY,EAAE,YAAY,CAAA;IAC1B,QAAQ,EAAE,WAAW,EAAE,CAAA;IACvB,WAAW,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,WAAW,EAAE,CAAC,CAAC,CAAA;IAChE,aAAa,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAA;IAC3D,YAAY,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK,IAAI,CAAA;IACvC,iFAAiF;IACjF,aAAa,CAAC,EAAE,MAAM,IAAI,CAAA;IAC1B,iFAAiF;IACjF,aAAa,CAAC,EAAE,MAAM,IAAI,CAAA;IAC1B,gFAAgF;IAChF,YAAY,CAAC,EAAE,MAAM,IAAI,CAAA;IACzB,kGAAkG;IAClG,gBAAgB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IACzC,iEAAiE;IACjE,UAAU,CAAC,EAAE,MAAM,gBAAgB,GAAG,SAAS,CAAA;IAC/C,yDAAyD;IACzD,SAAS,CAAC,EAAE,MAAM,UAAU,GAAG,SAAS,CAAA;IACxC,6CAA6C;IAC7C,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,UAAU,GAAG,SAAS,KAAK,IAAI,CAAA;CACrD;AAqsCD,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;IACnB,OAAO,EAAE,CAAC,GAAG,EAAE,mBAAmB,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;CACvE;AAED,eAAO,MAAM,QAAQ,EAAE,YAAY,EAkClC,CAAA;AAED,eAAO,MAAM,aAAa,EAAE,MAAM,EAA8B,CAAA;AAEhE,eAAO,MAAM,WAAW,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAEnD,CAAA;AAgBD,wBAAsB,mBAAmB,CAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,mBAAmB,GAAG,OAAO,CAAC,OAAO,CAAC,CAapG"}
@@ -18,7 +18,7 @@ import { saveConfig } from '../config/loader.js';
18
18
  import { getDefaultTools, getToolsForMode } from '../tools/registry.js';
19
19
  import { browserTest, getLastBrowserTestResult, browserRealTest } from '../tools/chrome.js';
20
20
  import { chromeManager } from '../tools/chrome-manager.js';
21
- import { AUDIT_BUDGET_PRESET } from '../tools/types.js';
21
+ import { AUDIT_BUDGET_PRESET, LARGE_BUDGET_PRESET, NORMAL_BUDGET_PRESET } from '../tools/types.js';
22
22
  import { checkLatestVersion } from './update-checker.js';
23
23
  // ─── Helpers ─────────────────────────────────────────────────────────────────
24
24
  function generateFollowups(lastContent) {
@@ -76,7 +76,7 @@ const RU_DESCRIPTIONS = {
76
76
  '/browser-real-test': 'Smoke-тест реальных сайтов',
77
77
  '/last-browser-test': 'Показать последний отчёт browser-test',
78
78
  '/chrome': 'Режим Chrome: --headed|--headless|-s',
79
- '/budget': 'Бюджет: /budget status|off|audit|small',
79
+ '/budget': 'Бюджет: /budget status|off|audit|small|normal|large',
80
80
  '/changelog': 'Показать изменения: /changelog [full|version]',
81
81
  '/update-check': 'Проверить новую версию',
82
82
  };
@@ -110,6 +110,7 @@ async function cmdHelp(ctx) {
110
110
  lines.push('', helpLine('Tab', 'Цикл режимов: plan → default → auto-edit → turbo'));
111
111
  lines.push('', helpLine('PageUp / PageDown', 'Прокрутка истории чата'));
112
112
  lines.push('', helpLine('End', 'Перейти к последнему сообщению'));
113
+ lines.push('', helpLine('Mouse wheel', 'Не захватывается в TUI; используйте PageUp / PageDown / End'));
113
114
  lines.push('', helpLine('Shift+Enter / Alt+Enter', 'Новая строка в поле ввода'));
114
115
  }
115
116
  else {
@@ -124,6 +125,7 @@ async function cmdHelp(ctx) {
124
125
  lines.push('', helpLine('Tab', 'Cycle approval mode: plan → default → auto-edit → turbo'));
125
126
  lines.push('', helpLine('PageUp / PageDown', 'Scroll chat history'));
126
127
  lines.push('', helpLine('End', 'Jump to latest message'));
128
+ lines.push('', helpLine('Mouse wheel', 'Not captured in TUI; use PageUp / PageDown / End'));
127
129
  lines.push('', helpLine('Shift+Enter / Alt+Enter', 'Insert newline in input'));
128
130
  }
129
131
  ctx.setMessages(prev => [...prev, { role: 'assistant', content: lines.join('\n') }]);
@@ -794,6 +796,7 @@ async function cmdTools(ctx) {
794
796
  }
795
797
  async function cmdBrowserTest(ctx, input) {
796
798
  // Parse flags: /browser-test --headed or /browser-test --headless
799
+ // Default uses the configured chromeHeadless mode
797
800
  const parts = input.trim().split(/\s+/);
798
801
  const flag = parts.length > 1 ? parts[1].toLowerCase() : '';
799
802
  let headless;
@@ -804,7 +807,7 @@ async function cmdBrowserTest(ctx, input) {
804
807
  headless = true;
805
808
  }
806
809
  else {
807
- headless = false; // default: headed (видимое окно)
810
+ headless = ctx.config.chromeHeadless ?? false; // default from config
808
811
  }
809
812
  ctx.setStatusText('Запуск browser test...');
810
813
  // Сохраняем текущий режим Chrome, чтобы восстановить после теста
@@ -836,12 +839,14 @@ async function cmdBrowserRealTest(ctx, input) {
836
839
  const parts = input.trim().split(/\s+/).slice(1);
837
840
  const saveReport = parts.includes('--save-report');
838
841
  const headless = parts.includes('--headless');
842
+ const headed = parts.includes('--headed');
843
+ const effectiveHeadless = headed ? false : headless ? true : (ctx.config.chromeHeadless ?? false);
839
844
  const siteArgs = parts.filter(p => !p.startsWith('--'));
840
845
  const sites = siteArgs.length > 0 ? siteArgs : undefined;
841
846
  ctx.setStatusText('Real site smoke-test...');
842
847
  const prevState = chromeManager.getState();
843
848
  try {
844
- const report = await browserRealTest({ sites, headless });
849
+ const report = await browserRealTest({ sites, headless: effectiveHeadless });
845
850
  if (saveReport) {
846
851
  const { writeFile } = await import('node:fs/promises');
847
852
  await writeFile('BROWSER_REAL_TEST_REPORT.md', report, 'utf8');
@@ -866,13 +871,18 @@ async function cmdBrowserRealTest(ctx, input) {
866
871
  async function cmdChrome(ctx, input) {
867
872
  const parts = input.trim().split(/\s+/);
868
873
  const flag = parts.length > 1 ? parts[1].toLowerCase() : '';
869
- // No flag — show status
874
+ // No flag — show status only
870
875
  if (!flag || flag === '--status' || flag === '-s') {
871
876
  const state = chromeManager.getState();
872
- const modeStr = state.connected
873
- ? (state.headless ? 'headless (фоновый)' : 'headed (видимое окно)')
874
- : 'не запущен';
875
- ctx.addServiceNotice?.(`Chrome: ${modeStr}${state.connected ? ` | PID: ${state.managedProcessPid ?? '—'} | Порт: ${state.debugPort}` : ''}`);
877
+ const desiredMode = ctx.config.chromeHeadless ? 'headless' : 'headed';
878
+ const runningStr = state.connected
879
+ ? (state.headless ? 'headless' : 'headed')
880
+ : 'not running';
881
+ let notice = `Browser desired mode: ${desiredMode}\nRunning Chrome: ${runningStr}`;
882
+ if (state.connected) {
883
+ notice += ` | PID: ${state.managedProcessPid ?? '—'} | Port: ${state.debugPort}`;
884
+ }
885
+ ctx.addServiceNotice?.(notice);
876
886
  return true;
877
887
  }
878
888
  // Determine desired mode
@@ -884,21 +894,30 @@ async function cmdChrome(ctx, input) {
884
894
  desiredHeadless = false;
885
895
  }
886
896
  else {
887
- ctx.addServiceNotice?.('[err] /chrome: используйте --headed, --headless или без флага для статуса');
897
+ ctx.addServiceNotice?.('[err] /chrome: use --headed, --headless or no flag for status');
888
898
  return true;
889
899
  }
890
- try {
891
- await chromeManager.ensureMode(desiredHeadless);
892
- const state = chromeManager.getState();
893
- const modeStr = state.headless ? 'headless (фоновый)' : 'headed (видимое окно)';
894
- // Save to config
895
- ctx.config.chromeHeadless = state.headless;
896
- saveConfig({ chromeHeadless: state.headless }).catch(() => { });
897
- ctx.addServiceNotice?.(`Chrome: ${modeStr} | PID: ${state.managedProcessPid ?? '—'} | Порт: ${state.debugPort}`);
898
- }
899
- catch (err) {
900
- ctx.addServiceNotice?.(`[err] Chrome: ${String(err)}`);
901
- }
900
+ // Capture runtime state BEFORE changing the desired mode
901
+ const stateBefore = chromeManager.getState();
902
+ const wasRunning = stateBefore.connected;
903
+ const actualRunningMode = wasRunning ? (stateBefore.headless ? 'headless' : 'headed') : null;
904
+ // Set the mode WITHOUT launching the browser
905
+ chromeManager.setHeadlessMode(desiredHeadless);
906
+ // Save to config
907
+ ctx.config.chromeHeadless = desiredHeadless;
908
+ saveConfig({ chromeHeadless: desiredHeadless }).catch(() => { });
909
+ // Build status message
910
+ const desiredModeStr = desiredHeadless ? 'headless' : 'headed';
911
+ const runningStr = wasRunning ? actualRunningMode : 'not running';
912
+ let notice = `Browser desired mode: ${desiredModeStr}\nRunning Chrome: ${runningStr}`;
913
+ if (wasRunning) {
914
+ notice += ` | PID: ${stateBefore.managedProcessPid ?? '—'} | Port: ${stateBefore.debugPort}`;
915
+ }
916
+ // Warn if Chrome is running in a different mode
917
+ if (wasRunning && stateBefore.headless !== desiredHeadless) {
918
+ notice += `\n\n⚠️ Chrome is currently running in ${actualRunningMode} mode.\nNew mode will be used on next browser start.`;
919
+ }
920
+ ctx.addServiceNotice?.(notice);
902
921
  return true;
903
922
  }
904
923
  async function cmdLastBrowserTest(ctx) {
@@ -977,21 +996,21 @@ async function cmdBudget(ctx, input) {
977
996
  const notice = ctx.addServiceNotice ?? ((text) => {
978
997
  ctx.setMessages(prev => [...prev, { role: 'assistant', content: text }]);
979
998
  });
999
+ const formatBudget = (label, budget) => [
1000
+ `Budget: ${label}`,
1001
+ `maxToolCalls: ${budget.maxToolCalls}`,
1002
+ `maxApiCalls: ${budget.maxApiCalls}`,
1003
+ `maxIterations: ${budget.maxIterations}`,
1004
+ `maxReadFiles: ${budget.maxReadFiles}`,
1005
+ `maxShellCommands: ${budget.maxShellCommands}`,
1006
+ ].join('\n');
980
1007
  if (sub === 'status') {
981
1008
  const budget = ctx.getBudget?.();
982
1009
  if (!budget) {
983
1010
  notice('Budget: off');
984
1011
  }
985
1012
  else {
986
- const prefix = 'Budget: active';
987
- const lines = [
988
- prefix,
989
- `maxToolCalls: ${budget.maxToolCalls}`,
990
- `maxApiCalls: ${budget.maxApiCalls}`,
991
- `maxReadFiles: ${budget.maxReadFiles}`,
992
- `maxShellCommands: ${budget.maxShellCommands}`,
993
- ];
994
- notice(lines.join('\n'));
1013
+ notice(formatBudget('active', budget));
995
1014
  }
996
1015
  return true;
997
1016
  }
@@ -1002,17 +1021,20 @@ async function cmdBudget(ctx, input) {
1002
1021
  }
1003
1022
  if (sub === 'audit' || sub === 'small') {
1004
1023
  ctx.setBudget?.({ ...AUDIT_BUDGET_PRESET });
1005
- const lines = [
1006
- 'Budget: audit enabled',
1007
- `maxToolCalls: ${AUDIT_BUDGET_PRESET.maxToolCalls}`,
1008
- `maxApiCalls: ${AUDIT_BUDGET_PRESET.maxApiCalls}`,
1009
- `maxReadFiles: ${AUDIT_BUDGET_PRESET.maxReadFiles}`,
1010
- `maxShellCommands: ${AUDIT_BUDGET_PRESET.maxShellCommands}`,
1011
- ];
1012
- notice(lines.join('\n'));
1024
+ notice(formatBudget('audit enabled', AUDIT_BUDGET_PRESET));
1025
+ return true;
1026
+ }
1027
+ if (sub === 'normal') {
1028
+ ctx.setBudget?.({ ...NORMAL_BUDGET_PRESET });
1029
+ notice(formatBudget('normal enabled', NORMAL_BUDGET_PRESET));
1030
+ return true;
1031
+ }
1032
+ if (sub === 'large') {
1033
+ ctx.setBudget?.({ ...LARGE_BUDGET_PRESET });
1034
+ notice(formatBudget('large enabled', LARGE_BUDGET_PRESET));
1013
1035
  return true;
1014
1036
  }
1015
- notice('Usage: /budget status|off|audit|small');
1037
+ notice('Usage: /budget status|off|audit|small|normal|large');
1016
1038
  return true;
1017
1039
  }
1018
1040
  // ─── Changelog and Update Check ──────────────────────────────────────────────
@@ -1168,7 +1190,7 @@ export const COMMANDS = [
1168
1190
  { name: '/browser-real-test', description: 'Smoke test on real websites', handler: cmdBrowserRealTest },
1169
1191
  { name: '/last-browser-test', description: 'Show last browser test report', handler: cmdLastBrowserTest },
1170
1192
  { name: '/chrome', description: 'Chrome mode: --headed|--headless|-s', handler: cmdChrome },
1171
- { name: '/budget', description: 'Budget: /budget status|off|audit|small', handler: cmdBudget },
1193
+ { name: '/budget', description: 'Budget: /budget status|off|audit|small|normal|large', handler: cmdBudget },
1172
1194
  { name: '/changelog', description: 'Show changelog: /changelog [full|version]', handler: cmdChangelog },
1173
1195
  { name: '/update-check', description: 'Check latest npm version', handler: cmdUpdateCheck },
1174
1196
  ];