@serjm/deepseek-code 0.3.1 → 0.4.0

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 (68) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/README.md +12 -0
  3. package/README.ru.md +12 -0
  4. package/dist/api/index.d.ts +4 -4
  5. package/dist/api/index.d.ts.map +1 -1
  6. package/dist/api/index.js +17 -5
  7. package/dist/api/index.js.map +1 -1
  8. package/dist/cli/headless.d.ts.map +1 -1
  9. package/dist/cli/headless.js +2 -0
  10. package/dist/cli/headless.js.map +1 -1
  11. package/dist/commands/index.d.ts +7 -0
  12. package/dist/commands/index.d.ts.map +1 -1
  13. package/dist/commands/index.js +188 -79
  14. package/dist/commands/index.js.map +1 -1
  15. package/dist/config/defaults.d.ts +2 -1
  16. package/dist/config/defaults.d.ts.map +1 -1
  17. package/dist/config/defaults.js +4 -2
  18. package/dist/config/defaults.js.map +1 -1
  19. package/dist/core/agent-loop.d.ts +27 -1
  20. package/dist/core/agent-loop.d.ts.map +1 -1
  21. package/dist/core/agent-loop.js +165 -10
  22. package/dist/core/agent-loop.js.map +1 -1
  23. package/dist/core/i18n.d.ts +2 -0
  24. package/dist/core/i18n.d.ts.map +1 -1
  25. package/dist/core/i18n.js +15 -9
  26. package/dist/core/i18n.js.map +1 -1
  27. package/dist/core/metrics.d.ts +53 -0
  28. package/dist/core/metrics.d.ts.map +1 -1
  29. package/dist/core/metrics.js +205 -6
  30. package/dist/core/metrics.js.map +1 -1
  31. package/dist/tools/chrome.js +53 -53
  32. package/dist/tools/edit.d.ts.map +1 -1
  33. package/dist/tools/edit.js +30 -8
  34. package/dist/tools/edit.js.map +1 -1
  35. package/dist/tools/types.d.ts +28 -0
  36. package/dist/tools/types.d.ts.map +1 -1
  37. package/dist/tools/types.js +10 -0
  38. package/dist/tools/types.js.map +1 -1
  39. package/dist/tools/write.d.ts.map +1 -1
  40. package/dist/tools/write.js +13 -1
  41. package/dist/tools/write.js.map +1 -1
  42. package/dist/ui/activity-cards.js +9 -9
  43. package/dist/ui/activity-cards.js.map +1 -1
  44. package/dist/ui/app.d.ts.map +1 -1
  45. package/dist/ui/app.js +59 -14
  46. package/dist/ui/app.js.map +1 -1
  47. package/dist/ui/chat-view.js +2 -2
  48. package/dist/ui/chat-view.js.map +1 -1
  49. package/dist/ui/input-bar.d.ts.map +1 -1
  50. package/dist/ui/input-bar.js +268 -70
  51. package/dist/ui/input-bar.js.map +1 -1
  52. package/dist/ui/markdown-view.d.ts +9 -0
  53. package/dist/ui/markdown-view.d.ts.map +1 -1
  54. package/dist/ui/markdown-view.js +70 -34
  55. package/dist/ui/markdown-view.js.map +1 -1
  56. package/dist/ui/reasoning-view.js +1 -1
  57. package/dist/ui/reasoning-view.js.map +1 -1
  58. package/dist/ui/results-panel.js +1 -1
  59. package/dist/ui/results-panel.js.map +1 -1
  60. package/dist/ui/setup-wizard.js +5 -5
  61. package/dist/ui/setup-wizard.js.map +1 -1
  62. package/dist/ui/status-bar.js +1 -1
  63. package/dist/ui/status-bar.js.map +1 -1
  64. package/dist/ui/tool-activity-card.js +9 -9
  65. package/dist/ui/tool-activity-card.js.map +1 -1
  66. package/dist/ui/tool-call-view.js +7 -7
  67. package/dist/ui/tool-call-view.js.map +1 -1
  68. package/package.json +2 -1
@@ -14,12 +14,40 @@ export interface ToolResult {
14
14
  success: boolean;
15
15
  output: string;
16
16
  error?: string;
17
+ /** Whether the tool actually changed something (e.g., file written/modified) */
18
+ changed?: boolean;
19
+ /** Whether the change was verified by re-reading from disk */
20
+ verified?: boolean;
21
+ /** List of files that were changed */
22
+ changedFiles?: string[];
17
23
  }
18
24
  export type ApprovalRequirement = 'always' | 'auto' | 'never';
25
+ /**
26
+ * Budget limits for a task session.
27
+ * All values are optional — unset means unlimited.
28
+ * 0 is treated as "no limit" (falsy check).
29
+ */
30
+ export interface TaskBudget {
31
+ /** Maximum total tool calls across all iterations */
32
+ maxToolCalls?: number;
33
+ /** Maximum API calls (round trips to model) */
34
+ maxApiCalls?: number;
35
+ /** Maximum iterations (overrides AgentLoopOptions.maxIterations if set) */
36
+ maxIterations?: number;
37
+ /** Maximum calls to read_file tool */
38
+ maxReadFiles?: number;
39
+ /** Maximum calls to shell/bash/run_shell_command tools */
40
+ maxShellCommands?: number;
41
+ }
19
42
  export interface ToolDefinition {
20
43
  tool: Tool;
21
44
  approval: ApprovalRequirement;
22
45
  }
46
+ /**
47
+ * Preset budget for small/audit tasks (headless mode).
48
+ * Limits tool calls, API calls, read_file, and shell commands.
49
+ */
50
+ export declare const AUDIT_BUDGET_PRESET: TaskBudget;
23
51
  /**
24
52
  * OpenAI-compatible tool format for DeepSeek API function calling.
25
53
  */
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/tools/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,IAAI;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,aAAa,EAAE,CAAC;IAC5B,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;CAC7D;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,OAAO,GAAG,QAAQ,CAAC;IAC3D,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,MAAM,mBAAmB,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAA;AAE7D,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,IAAI,CAAC;IACX,QAAQ,EAAE,mBAAmB,CAAC;CAC/B;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,UAAU,CAAC;IACjB,QAAQ,EAAE;QACR,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,EAAE,MAAM,CAAC;QACpB,UAAU,EAAE;YACV,IAAI,EAAE,QAAQ,CAAC;YACf,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YACpC,QAAQ,EAAE,MAAM,EAAE,CAAC;SACpB,CAAC;KACH,CAAC;CACH;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAE,WAAW,EAAE,cAAc,EAAE,GAAG,UAAU,EAAE,CA4B1E;AAKD;;;GAGG;AACH,wBAAgB,YAAY,CAC1B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,MAAM,EAAE,aAAa,EAAE,GACtB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAyDzB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/tools/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,IAAI;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,aAAa,EAAE,CAAC;IAC5B,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;CAC7D;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,OAAO,GAAG,QAAQ,CAAC;IAC3D,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gFAAgF;IAChF,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,8DAA8D;IAC9D,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,sCAAsC;IACtC,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB;AAED,MAAM,MAAM,mBAAmB,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAA;AAE7D;;;;GAIG;AACH,MAAM,WAAW,UAAU;IACzB,qDAAqD;IACrD,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,+CAA+C;IAC/C,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,2EAA2E;IAC3E,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,sCAAsC;IACtC,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,0DAA0D;IAC1D,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAC1B;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,IAAI,CAAC;IACX,QAAQ,EAAE,mBAAmB,CAAC;CAC/B;AAED;;;GAGG;AACH,eAAO,MAAM,mBAAmB,EAAE,UAKjC,CAAA;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,UAAU,CAAC;IACjB,QAAQ,EAAE;QACR,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,EAAE,MAAM,CAAC;QACpB,UAAU,EAAE;YACV,IAAI,EAAE,QAAQ,CAAC;YACf,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YACpC,QAAQ,EAAE,MAAM,EAAE,CAAC;SACpB,CAAC;KACH,CAAC;CACH;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAE,WAAW,EAAE,cAAc,EAAE,GAAG,UAAU,EAAE,CA4B1E;AAKD;;;GAGG;AACH,wBAAgB,YAAY,CAC1B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,MAAM,EAAE,aAAa,EAAE,GACtB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAyDzB"}
@@ -1,3 +1,13 @@
1
+ /**
2
+ * Preset budget for small/audit tasks (headless mode).
3
+ * Limits tool calls, API calls, read_file, and shell commands.
4
+ */
5
+ export const AUDIT_BUDGET_PRESET = {
6
+ maxToolCalls: 12,
7
+ maxApiCalls: 6,
8
+ maxReadFiles: 5,
9
+ maxShellCommands: 4,
10
+ };
1
11
  /**
2
12
  * Convert our internal ToolDefinition[] to OpenAI-compatible tool format.
3
13
  */
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/tools/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/tools/types.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"write.d.ts","sourceRoot":"","sources":["../../src/tools/write.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,IAAI,EAAmB,MAAM,YAAY,CAAA;AAKvD,eAAO,MAAM,SAAS,EAAE,IA8CvB,CAAA"}
1
+ {"version":3,"file":"write.d.ts","sourceRoot":"","sources":["../../src/tools/write.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,IAAI,EAAmB,MAAM,YAAY,CAAA;AAKvD,eAAO,MAAM,SAAS,EAAE,IA4DvB,CAAA"}
@@ -1,4 +1,4 @@
1
- import { writeFile, mkdir } from 'node:fs/promises';
1
+ import { writeFile, readFile, mkdir } from 'node:fs/promises';
2
2
  import { dirname } from 'node:path';
3
3
  import { assertPathInWorkspace } from './path-safety.js';
4
4
  const MAX_FILE_SIZE = 1_048_576; // 1MB limit
@@ -28,15 +28,24 @@ export const writeTool = {
28
28
  success: false,
29
29
  output: '',
30
30
  error: `File too large: ${content.length} bytes exceeds the maximum of ${MAX_FILE_SIZE} bytes (1MB). Use run_shell_command to write large files.`,
31
+ changed: false,
32
+ verified: false,
33
+ changedFiles: [],
31
34
  };
32
35
  }
33
36
  try {
34
37
  assertPathInWorkspace(filePath);
35
38
  await mkdir(dirname(filePath), { recursive: true });
36
39
  await writeFile(filePath, content, 'utf-8');
40
+ // Verify by re-reading the file
41
+ const writtenContent = await readFile(filePath, 'utf-8');
42
+ const verified = writtenContent === content;
37
43
  return {
38
44
  success: true,
39
45
  output: `Successfully wrote ${content.length} bytes to ${filePath}`,
46
+ changed: true,
47
+ verified,
48
+ changedFiles: [filePath],
40
49
  };
41
50
  }
42
51
  catch (err) {
@@ -44,6 +53,9 @@ export const writeTool = {
44
53
  success: false,
45
54
  output: '',
46
55
  error: `Failed to write file: ${err.message}`,
56
+ changed: false,
57
+ verified: false,
58
+ changedFiles: [],
47
59
  };
48
60
  }
49
61
  },
@@ -1 +1 @@
1
- {"version":3,"file":"write.js","sourceRoot":"","sources":["../../src/tools/write.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAA;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAEnC,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAA;AAExD,MAAM,aAAa,GAAG,SAAS,CAAA,CAAC,YAAY;AAE5C,MAAM,CAAC,MAAM,SAAS,GAAS;IAC7B,IAAI,EAAE,YAAY;IAClB,WAAW,EAAE,iFAAiF;IAC9F,UAAU,EAAE;QACV;YACE,IAAI,EAAE,WAAW;YACjB,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,wCAAwC;YACrD,QAAQ,EAAE,IAAI;SACf;QACD;YACE,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,kCAAkC;YAC/C,QAAQ,EAAE,IAAI;SACf;KACF;IACD,KAAK,CAAC,OAAO,CAAE,IAA6B;QAC1C,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAmB,CAAA;QACzC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAiB,CAAA;QAEtC,mBAAmB;QACnB,IAAI,OAAO,CAAC,MAAM,GAAG,aAAa,EAAE,CAAC;YACnC,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,MAAM,EAAE,EAAE;gBACV,KAAK,EAAE,mBAAmB,OAAO,CAAC,MAAM,iCAAiC,aAAa,2DAA2D;aAClJ,CAAA;QACH,CAAC;QAED,IAAI,CAAC;YACH,qBAAqB,CAAC,QAAQ,CAAC,CAAA;YAC/B,MAAM,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;YACnD,MAAM,SAAS,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,CAAA;YAC3C,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,MAAM,EAAE,sBAAsB,OAAO,CAAC,MAAM,aAAa,QAAQ,EAAE;aACpE,CAAA;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,MAAM,EAAE,EAAE;gBACV,KAAK,EAAE,yBAA0B,GAAa,CAAC,OAAO,EAAE;aACzD,CAAA;QACH,CAAC;IACH,CAAC;CACF,CAAA"}
1
+ {"version":3,"file":"write.js","sourceRoot":"","sources":["../../src/tools/write.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAA;AAC7D,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAEnC,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAA;AAExD,MAAM,aAAa,GAAG,SAAS,CAAA,CAAC,YAAY;AAE5C,MAAM,CAAC,MAAM,SAAS,GAAS;IAC7B,IAAI,EAAE,YAAY;IAClB,WAAW,EAAE,iFAAiF;IAC9F,UAAU,EAAE;QACV;YACE,IAAI,EAAE,WAAW;YACjB,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,wCAAwC;YACrD,QAAQ,EAAE,IAAI;SACf;QACD;YACE,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,kCAAkC;YAC/C,QAAQ,EAAE,IAAI;SACf;KACF;IACD,KAAK,CAAC,OAAO,CAAE,IAA6B;QAC1C,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAmB,CAAA;QACzC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAiB,CAAA;QAEtC,mBAAmB;QACnB,IAAI,OAAO,CAAC,MAAM,GAAG,aAAa,EAAE,CAAC;YACnC,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,MAAM,EAAE,EAAE;gBACV,KAAK,EAAE,mBAAmB,OAAO,CAAC,MAAM,iCAAiC,aAAa,2DAA2D;gBACjJ,OAAO,EAAE,KAAK;gBACd,QAAQ,EAAE,KAAK;gBACf,YAAY,EAAE,EAAE;aACjB,CAAA;QACH,CAAC;QAED,IAAI,CAAC;YACH,qBAAqB,CAAC,QAAQ,CAAC,CAAA;YAC/B,MAAM,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;YACnD,MAAM,SAAS,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,CAAA;YAE3C,gCAAgC;YAChC,MAAM,cAAc,GAAG,MAAM,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;YACxD,MAAM,QAAQ,GAAG,cAAc,KAAK,OAAO,CAAA;YAE3C,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,MAAM,EAAE,sBAAsB,OAAO,CAAC,MAAM,aAAa,QAAQ,EAAE;gBACnE,OAAO,EAAE,IAAI;gBACb,QAAQ;gBACR,YAAY,EAAE,CAAC,QAAQ,CAAC;aACzB,CAAA;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,MAAM,EAAE,EAAE;gBACV,KAAK,EAAE,yBAA0B,GAAa,CAAC,OAAO,EAAE;gBACxD,OAAO,EAAE,KAAK;gBACd,QAAQ,EAAE,KAAK;gBACf,YAAY,EAAE,EAAE;aACjB,CAAA;QACH,CAAC;IACH,CAAC;CACF,CAAA"}
@@ -21,10 +21,10 @@ function ShellCard({ data }) {
21
21
  ? colors.error
22
22
  : colors.info;
23
23
  const statusIcon = data.status === 'success'
24
- ? ''
24
+ ? '[ok]'
25
25
  : data.status === 'failed'
26
- ? ''
27
- : '🔄';
26
+ ? '[err]'
27
+ : '[run]';
28
28
  return (_jsx(Box, { flexDirection: 'column', marginLeft: 2, marginBottom: 1, children: _jsx(Box, { borderStyle: 'round', borderColor: colors.border, paddingX: 1, paddingY: 0, children: _jsxs(Box, { flexDirection: 'column', children: [_jsx(Box, { children: _jsx(Text, { bold: true, color: colors.info, children: "Shell" }) }), _jsx(Box, { children: _jsx(Text, { dimColor: true, children: data.command }) }), data.cwd && (_jsx(Box, { children: _jsxs(Text, { dimColor: true, children: ["\u043F\u0430\u043F\u043A\u0430: ", data.cwd] }) })), _jsxs(Box, { children: [_jsxs(Text, { color: statusColor, children: [statusIcon, " \u0421\u0442\u0430\u0442\u0443\u0441: ", data.status === 'success' ? 'успешно' : data.status === 'failed' ? 'ошибка' : 'выполняется'] }), data.durationMs !== undefined && (_jsxs(Text, { dimColor: true, children: [" \u00B7 ", formatDuration(data.durationMs)] }))] }), data.output && data.output.length > 0 && (_jsx(Box, { children: _jsxs(Text, { color: colors.textMuted, children: [data.output.slice(0, 200), data.output.length > 200 ? '…' : ''] }) })), data.error && (_jsx(Box, { children: _jsxs(Text, { color: colors.error, children: ["\u041E\u0448\u0438\u0431\u043A\u0430: ", data.error.slice(0, 200)] }) }))] }) }) }));
29
29
  }
30
30
  // ─── File Card ───────────────────────────────────────────────────────────────
@@ -36,10 +36,10 @@ function FileCard({ data }) {
36
36
  ? colors.error
37
37
  : colors.info;
38
38
  const statusIcon = data.status === 'success'
39
- ? ''
39
+ ? '[ok]'
40
40
  : data.status === 'failed'
41
- ? ''
42
- : '🔄';
41
+ ? '[err]'
42
+ : '[run]';
43
43
  const toolLabel = data.toolName === 'read_file'
44
44
  ? 'ReadFile'
45
45
  : data.toolName === 'write_file'
@@ -56,17 +56,17 @@ function FileCard({ data }) {
56
56
  // ─── Error Card ──────────────────────────────────────────────────────────────
57
57
  function ErrorCard({ data }) {
58
58
  const colors = themeManager.getColors();
59
- return (_jsx(Box, { flexDirection: 'column', marginLeft: 2, marginBottom: 1, children: _jsx(Box, { borderStyle: 'round', borderColor: colors.error, paddingX: 1, paddingY: 0, children: _jsxs(Box, { flexDirection: 'column', children: [_jsx(Box, { children: _jsx(Text, { bold: true, color: colors.error, children: "\u274C \u041E\u0448\u0438\u0431\u043A\u0430" }) }), _jsx(Box, { children: _jsxs(Text, { color: colors.error, children: ["\u0418\u043D\u0441\u0442\u0440\u0443\u043C\u0435\u043D\u0442: ", data.toolName] }) }), data.path && (_jsx(Box, { children: _jsxs(Text, { color: colors.error, children: ["\u0424\u0430\u0439\u043B: ", data.path] }) })), _jsx(Box, { children: _jsxs(Text, { color: colors.error, children: ["\u041F\u0440\u0438\u0447\u0438\u043D\u0430: ", data.reason] }) }), data.suggestion && (_jsx(Box, { children: _jsxs(Text, { color: colors.warning, children: ["\u0427\u0442\u043E \u0441\u0434\u0435\u043B\u0430\u0442\u044C: ", data.suggestion] }) }))] }) }) }));
59
+ return (_jsx(Box, { flexDirection: 'column', marginLeft: 2, marginBottom: 1, children: _jsx(Box, { borderStyle: 'round', borderColor: colors.error, paddingX: 1, paddingY: 0, children: _jsxs(Box, { flexDirection: 'column', children: [_jsx(Box, { children: _jsx(Text, { bold: true, color: colors.error, children: "[err] \u041E\u0448\u0438\u0431\u043A\u0430" }) }), _jsx(Box, { children: _jsxs(Text, { color: colors.error, children: ["\u0418\u043D\u0441\u0442\u0440\u0443\u043C\u0435\u043D\u0442: ", data.toolName] }) }), data.path && (_jsx(Box, { children: _jsxs(Text, { color: colors.error, children: ["\u0424\u0430\u0439\u043B: ", data.path] }) })), _jsx(Box, { children: _jsxs(Text, { color: colors.error, children: ["\u041F\u0440\u0438\u0447\u0438\u043D\u0430: ", data.reason] }) }), data.suggestion && (_jsx(Box, { children: _jsxs(Text, { color: colors.warning, children: ["\u0427\u0442\u043E \u0441\u0434\u0435\u043B\u0430\u0442\u044C: ", data.suggestion] }) }))] }) }) }));
60
60
  }
61
61
  // ─── Unsupported Card ────────────────────────────────────────────────────────
62
62
  function UnsupportedCard({ data }) {
63
63
  const colors = themeManager.getColors();
64
- return (_jsx(Box, { flexDirection: 'column', marginLeft: 2, marginBottom: 1, children: _jsx(Box, { borderStyle: 'round', borderColor: colors.warning, paddingX: 1, paddingY: 0, children: _jsxs(Box, { flexDirection: 'column', children: [_jsx(Box, { children: _jsxs(Text, { bold: true, color: colors.warning, children: ["\u26A0\uFE0F ", data.feature, " \u043D\u0435\u0434\u043E\u0441\u0442\u0443\u043F\u0435\u043D"] }) }), _jsx(Box, { children: _jsxs(Text, { color: colors.textMuted, children: ["\u041E\u0421: ", data.os] }) }), _jsx(Box, { children: _jsxs(Text, { color: colors.textMuted, children: ["\u041F\u0440\u0438\u0447\u0438\u043D\u0430: ", data.reason] }) }), _jsx(Box, { children: _jsxs(Text, { color: colors.info, children: ["\u0427\u0442\u043E \u0441\u0434\u0435\u043B\u0430\u0442\u044C: ", data.action] }) })] }) }) }));
64
+ return (_jsx(Box, { flexDirection: 'column', marginLeft: 2, marginBottom: 1, children: _jsx(Box, { borderStyle: 'round', borderColor: colors.warning, paddingX: 1, paddingY: 0, children: _jsxs(Box, { flexDirection: 'column', children: [_jsx(Box, { children: _jsxs(Text, { bold: true, color: colors.warning, children: ["[warn] ", data.feature, " \u043D\u0435\u0434\u043E\u0441\u0442\u0443\u043F\u0435\u043D"] }) }), _jsx(Box, { children: _jsxs(Text, { color: colors.textMuted, children: ["\u041E\u0421: ", data.os] }) }), _jsx(Box, { children: _jsxs(Text, { color: colors.textMuted, children: ["\u041F\u0440\u0438\u0447\u0438\u043D\u0430: ", data.reason] }) }), _jsx(Box, { children: _jsxs(Text, { color: colors.info, children: ["\u0427\u0442\u043E \u0441\u0434\u0435\u043B\u0430\u0442\u044C: ", data.action] }) })] }) }) }));
65
65
  }
66
66
  // ─── Tasks Card ──────────────────────────────────────────────────────────────
67
67
  function TasksCard({ data }) {
68
68
  const colors = themeManager.getColors();
69
- return (_jsx(Box, { flexDirection: 'column', marginLeft: 2, marginBottom: 1, children: _jsx(Box, { borderStyle: 'round', borderColor: colors.border, paddingX: 1, paddingY: 0, children: _jsxs(Box, { flexDirection: 'column', children: [_jsx(Box, { children: _jsx(Text, { bold: true, color: colors.info, children: "\uD83D\uDCCB \u041F\u043B\u0430\u043D" }) }), data.current && (_jsx(Box, { children: _jsxs(Text, { color: colors.warning, children: ["\uD83D\uDD04 \u0422\u0435\u043A\u0443\u0449\u0435\u0435: ", data.current] }) })), data.completed.length > 0 && (_jsxs(Box, { flexDirection: 'column', children: [_jsx(Text, { color: colors.success, children: "\u2705 \u0417\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u043E:" }), data.completed.map((item, i) => (_jsx(Box, { marginLeft: 1, children: _jsxs(Text, { color: colors.success, children: ["\u00B7 ", item] }) }, i)))] })), data.next.length > 0 && (_jsxs(Box, { flexDirection: 'column', children: [_jsx(Text, { color: colors.textMuted, children: "\u2B1C \u0414\u0430\u043B\u0435\u0435:" }), data.next.map((item, i) => (_jsx(Box, { marginLeft: 1, children: _jsxs(Text, { color: colors.textMuted, children: ["\u00B7 ", item] }) }, i)))] })), data.errors && data.errors.length > 0 && (_jsxs(Box, { flexDirection: 'column', children: [_jsx(Text, { color: colors.error, children: "\u274C \u041E\u0448\u0438\u0431\u043A\u0438:" }), data.errors.map((item, i) => (_jsx(Box, { marginLeft: 1, children: _jsxs(Text, { color: colors.error, children: ["\u00B7 ", item] }) }, i)))] }))] }) }) }));
69
+ return (_jsx(Box, { flexDirection: 'column', marginLeft: 2, marginBottom: 1, children: _jsx(Box, { borderStyle: 'round', borderColor: colors.border, paddingX: 1, paddingY: 0, children: _jsxs(Box, { flexDirection: 'column', children: [_jsx(Box, { children: _jsx(Text, { bold: true, color: colors.info, children: "[plan] \u041F\u043B\u0430\u043D" }) }), data.current && (_jsx(Box, { children: _jsxs(Text, { color: colors.warning, children: ["[run] \u0422\u0435\u043A\u0443\u0449\u0435\u0435: ", data.current] }) })), data.completed.length > 0 && (_jsxs(Box, { flexDirection: 'column', children: [_jsx(Text, { color: colors.success, children: "[ok] \u0417\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u043E:" }), data.completed.map((item, i) => (_jsx(Box, { marginLeft: 1, children: _jsxs(Text, { color: colors.success, children: ["- ", item] }) }, i)))] })), data.next.length > 0 && (_jsxs(Box, { flexDirection: 'column', children: [_jsx(Text, { color: colors.textMuted, children: "\u2B1C \u0414\u0430\u043B\u0435\u0435:" }), data.next.map((item, i) => (_jsx(Box, { marginLeft: 1, children: _jsxs(Text, { color: colors.textMuted, children: ["- ", item] }) }, i)))] })), data.errors && data.errors.length > 0 && (_jsxs(Box, { flexDirection: 'column', children: [_jsx(Text, { color: colors.error, children: "[err] \u041E\u0448\u0438\u0431\u043A\u0438:" }), data.errors.map((item, i) => (_jsx(Box, { marginLeft: 1, children: _jsxs(Text, { color: colors.error, children: ["- ", item] }) }, i)))] }))] }) }) }));
70
70
  }
71
71
  // ─── Router ──────────────────────────────────────────────────────────────────
72
72
  export function ActivityCard({ data }) {
@@ -1 +1 @@
1
- {"version":3,"file":"activity-cards.js","sourceRoot":"","sources":["../../src/ui/activity-cards.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"activity-cards.js","sourceRoot":"","sources":["../../src/ui/activity-cards.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAA;AAE/B,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAA;AAsDzD,gFAAgF;AAEhF,SAAS,cAAc,CAAE,CAAS,EAAE,OAAe;IACjD,MAAM,IAAI,GAAG,OAAO,EAAE,CAAA;IACtB,MAAM,WAAW,GAAG,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IACvE,IAAI,WAAW,CAAC,MAAM,IAAI,OAAO;QAAE,OAAO,WAAW,CAAA;IACrD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;IAC1C,OAAO,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAA;AACtE,CAAC;AAED,gFAAgF;AAEhF,SAAS,SAAS,CAAE,EAAE,IAAI,EAA2B;IACnD,MAAM,MAAM,GAAG,YAAY,CAAC,SAAS,EAAE,CAAA;IACvC,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,KAAK,SAAS;QAC3C,CAAC,CAAC,MAAM,CAAC,OAAO;QAChB,CAAC,CAAC,IAAI,CAAC,MAAM,KAAK,QAAQ;YACxB,CAAC,CAAC,MAAM,CAAC,KAAK;YACd,CAAC,CAAC,MAAM,CAAC,IAAI,CAAA;IACjB,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,KAAK,SAAS;QAC1C,CAAC,CAAC,MAAM;QACR,CAAC,CAAC,IAAI,CAAC,MAAM,KAAK,QAAQ;YACxB,CAAC,CAAC,OAAO;YACT,CAAC,CAAC,OAAO,CAAA;IAEb,OAAO,CACL,KAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,UAAU,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,YACxD,KAAC,GAAG,IAAC,WAAW,EAAC,OAAO,EAAC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,YAC3E,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,aACzB,KAAC,GAAG,cACF,KAAC,IAAI,IAAC,IAAI,QAAC,KAAK,EAAE,MAAM,CAAC,IAAI,sBAAc,GACvC,EACN,KAAC,GAAG,cACF,KAAC,IAAI,IAAC,QAAQ,kBAAE,IAAI,CAAC,OAAO,GAAQ,GAChC,EACL,IAAI,CAAC,GAAG,IAAI,CACX,KAAC,GAAG,cACF,MAAC,IAAI,IAAC,QAAQ,uDAAS,IAAI,CAAC,GAAG,IAAQ,GACnC,CACP,EACD,MAAC,GAAG,eACF,MAAC,IAAI,IAAC,KAAK,EAAE,WAAW,aACrB,UAAU,6CAAW,IAAI,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,aAAa,IAC5G,EACN,IAAI,CAAC,UAAU,KAAK,SAAS,IAAI,CAChC,MAAC,IAAI,IAAC,QAAQ,+BAAK,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,IAAQ,CAC3D,IACG,EACL,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,CACxC,KAAC,GAAG,cACF,MAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,SAAS,aAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAQ,GAClG,CACP,EACA,IAAI,CAAC,KAAK,IAAI,CACb,KAAC,GAAG,cACF,MAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,KAAK,uDAAW,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,IAAQ,GAChE,CACP,IACG,GACF,GACF,CACP,CAAA;AACH,CAAC;AAED,gFAAgF;AAEhF,SAAS,QAAQ,CAAE,EAAE,IAAI,EAA0B;IACjD,MAAM,MAAM,GAAG,YAAY,CAAC,SAAS,EAAE,CAAA;IACvC,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,KAAK,SAAS;QAC3C,CAAC,CAAC,MAAM,CAAC,OAAO;QAChB,CAAC,CAAC,IAAI,CAAC,MAAM,KAAK,QAAQ;YACxB,CAAC,CAAC,MAAM,CAAC,KAAK;YACd,CAAC,CAAC,MAAM,CAAC,IAAI,CAAA;IACjB,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,KAAK,SAAS;QAC1C,CAAC,CAAC,MAAM;QACR,CAAC,CAAC,IAAI,CAAC,MAAM,KAAK,QAAQ;YACxB,CAAC,CAAC,OAAO;YACT,CAAC,CAAC,OAAO,CAAA;IAEb,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,KAAK,WAAW;QAC7C,CAAC,CAAC,UAAU;QACZ,CAAC,CAAC,IAAI,CAAC,QAAQ,KAAK,YAAY;YAC9B,CAAC,CAAC,WAAW;YACb,CAAC,CAAC,IAAI,CAAC,QAAQ,KAAK,MAAM;gBACxB,CAAC,CAAC,MAAM;gBACR,CAAC,CAAC,IAAI,CAAC,QAAQ,KAAK,MAAM;oBACxB,CAAC,CAAC,MAAM;oBACR,CAAC,CAAC,IAAI,CAAC,QAAQ,KAAK,aAAa;wBAC/B,CAAC,CAAC,MAAM;wBACR,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAA;IAEzB,OAAO,CACL,KAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,UAAU,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,YACxD,KAAC,GAAG,IAAC,WAAW,EAAC,OAAO,EAAC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,YAC3E,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,aACzB,KAAC,GAAG,cACF,KAAC,IAAI,IAAC,IAAI,QAAC,KAAK,EAAE,MAAM,CAAC,IAAI,YAAG,SAAS,GAAQ,GAC7C,EACN,KAAC,GAAG,cACF,KAAC,IAAI,IAAC,QAAQ,kBAAE,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC,GAAG,EAAE,CAAC,GAAQ,GAClF,EACN,KAAC,GAAG,cACF,MAAC,IAAI,IAAC,KAAK,EAAE,WAAW,aACrB,UAAU,6CAAW,IAAI,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,aAAa,IAC5G,GACH,EACL,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,CACxC,KAAC,GAAG,cACF,MAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,SAAS,aAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAQ,GAClG,CACP,EACA,IAAI,CAAC,KAAK,IAAI,CACb,KAAC,GAAG,cACF,MAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,KAAK,6DACb,IAAI,CAAC,KAAK,IACf,GACH,CACP,IACG,GACF,GACF,CACP,CAAA;AACH,CAAC;AAED,gFAAgF;AAEhF,SAAS,SAAS,CAAE,EAAE,IAAI,EAA2B;IACnD,MAAM,MAAM,GAAG,YAAY,CAAC,SAAS,EAAE,CAAA;IAEvC,OAAO,CACL,KAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,UAAU,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,YACxD,KAAC,GAAG,IAAC,WAAW,EAAC,OAAO,EAAC,WAAW,EAAE,MAAM,CAAC,KAAK,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,YAC1E,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,aACzB,KAAC,GAAG,cACF,KAAC,IAAI,IAAC,IAAI,QAAC,KAAK,EAAE,MAAM,CAAC,KAAK,2DAAqB,GAC/C,EACN,KAAC,GAAG,cACF,MAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,KAAK,+EAAe,IAAI,CAAC,QAAQ,IAAQ,GACzD,EACL,IAAI,CAAC,IAAI,IAAI,CACZ,KAAC,GAAG,cACF,MAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,KAAK,2CAAS,IAAI,CAAC,IAAI,IAAQ,GAC/C,CACP,EACD,KAAC,GAAG,cACF,MAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,KAAK,6DAAY,IAAI,CAAC,MAAM,IAAQ,GACpD,EACL,IAAI,CAAC,UAAU,IAAI,CAClB,KAAC,GAAG,cACF,MAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,OAAO,gFAAgB,IAAI,CAAC,UAAU,IAAQ,GAC9D,CACP,IACG,GACF,GACF,CACP,CAAA;AACH,CAAC;AAED,gFAAgF;AAEhF,SAAS,eAAe,CAAE,EAAE,IAAI,EAAiC;IAC/D,MAAM,MAAM,GAAG,YAAY,CAAC,SAAS,EAAE,CAAA;IAEvC,OAAO,CACL,KAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,UAAU,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,YACxD,KAAC,GAAG,IAAC,WAAW,EAAC,OAAO,EAAC,WAAW,EAAE,MAAM,CAAC,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,YAC5E,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,aACzB,KAAC,GAAG,cACF,MAAC,IAAI,IAAC,IAAI,QAAC,KAAK,EAAE,MAAM,CAAC,OAAO,wBAAU,IAAI,CAAC,OAAO,qEAAmB,GACrE,EACN,KAAC,GAAG,cACF,MAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,SAAS,+BAAO,IAAI,CAAC,EAAE,IAAQ,GAC/C,EACN,KAAC,GAAG,cACF,MAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,SAAS,6DAAY,IAAI,CAAC,MAAM,IAAQ,GACxD,EACN,KAAC,GAAG,cACF,MAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,IAAI,gFAAgB,IAAI,CAAC,MAAM,IAAQ,GACvD,IACF,GACF,GACF,CACP,CAAA;AACH,CAAC;AAED,gFAAgF;AAEhF,SAAS,SAAS,CAAE,EAAE,IAAI,EAA2B;IACnD,MAAM,MAAM,GAAG,YAAY,CAAC,SAAS,EAAE,CAAA;IAEvC,OAAO,CACL,KAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,UAAU,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,YACxD,KAAC,GAAG,IAAC,WAAW,EAAC,OAAO,EAAC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,YAC3E,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,aACzB,KAAC,GAAG,cACF,KAAC,IAAI,IAAC,IAAI,QAAC,KAAK,EAAE,MAAM,CAAC,IAAI,gDAAoB,GAC7C,EACL,IAAI,CAAC,OAAO,IAAI,CACf,KAAC,GAAG,cACF,MAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,OAAO,mEAAkB,IAAI,CAAC,OAAO,IAAQ,GAC7D,CACP,EACA,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,IAAI,CAC5B,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,aACzB,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,OAAO,6EAAwB,EAClD,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAC/B,KAAC,GAAG,IAAS,UAAU,EAAE,CAAC,YACxB,MAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,OAAO,mBAAK,IAAI,IAAQ,IADpC,CAAC,CAEL,CACP,CAAC,IACE,CACP,EACA,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CACvB,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,aACzB,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,SAAS,uDAAiB,EAC7C,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAC1B,KAAC,GAAG,IAAS,UAAU,EAAE,CAAC,YACxB,MAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,SAAS,mBAAK,IAAI,IAAQ,IADtC,CAAC,CAEL,CACP,CAAC,IACE,CACP,EACA,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,CACxC,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,aACzB,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,KAAK,4DAAsB,EAC9C,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAC5B,KAAC,GAAG,IAAS,UAAU,EAAE,CAAC,YACxB,MAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,KAAK,mBAAK,IAAI,IAAQ,IADlC,CAAC,CAEL,CACP,CAAC,IACE,CACP,IACG,GACF,GACF,CACP,CAAA;AACH,CAAC;AAED,gFAAgF;AAEhF,MAAM,UAAU,YAAY,CAAE,EAAE,IAAI,EAA8B;IAChE,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;QAClB,KAAK,OAAO;YACV,OAAO,KAAC,SAAS,IAAC,IAAI,EAAE,IAAI,GAAI,CAAA;QAClC,KAAK,MAAM;YACT,OAAO,KAAC,QAAQ,IAAC,IAAI,EAAE,IAAI,GAAI,CAAA;QACjC,KAAK,OAAO;YACV,OAAO,KAAC,SAAS,IAAC,IAAI,EAAE,IAAI,GAAI,CAAA;QAClC,KAAK,aAAa;YAChB,OAAO,KAAC,eAAe,IAAC,IAAI,EAAE,IAAI,GAAI,CAAA;QACxC,KAAK,OAAO;YACV,OAAO,KAAC,SAAS,IAAC,IAAI,EAAE,IAAI,GAAI,CAAA;QAClC;YACE,OAAO,IAAI,CAAA;IACf,CAAC;AACH,CAAC;AAED,gFAAgF;AAEhF;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAE,EAAiB;IAChD,MAAM,KAAK,GAAuB,EAAE,CAAA;IAEpC,yCAAyC;IACzC,IAAI,EAAE,CAAC,MAAM,KAAK,QAAQ,IAAI,EAAE,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;QACvD,MAAM,UAAU,GAAG,CAAC,WAAW,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,CAAA;QAC/F,MAAM,IAAI,GAAG,CAAC,EAAE,CAAC,SAAS,CAAC,SAAS,IAAI,EAAE,CAAC,SAAS,CAAC,OAAO,IAAI,EAAE,CAAC,SAAS,CAAC,IAAI,IAAI,EAAE,CAAW,CAAA;QAElG,iDAAiD;QACjD,IAAI,UAA8B,CAAA;QAClC,IAAI,EAAE,CAAC,KAAK,IAAI,kCAAkC,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,UAAU,IAAI,IAAI,EAAE,CAAC;YACxF,MAAM,GAAG,GAAI,IAAe,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAA;YAC7C,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;gBACjC,MAAM,MAAM,GAAG,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAA;gBACzC,MAAM,OAAO,GAAI,IAAe,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC,EAAE,IAAI,MAAM,EAAE,CAAC,CAAA;gBAChF,UAAU,GAAG,uBAAuB,OAAO,EAAE,CAAA;YAC/C,CAAC;QACH,CAAC;QAED,KAAK,CAAC,IAAI,CAAC;YACT,IAAI,EAAE,OAAO;YACb,QAAQ,EAAE,EAAE,CAAC,IAAI;YACjB,IAAI,EAAE,IAAI,IAAI,SAAS;YACvB,MAAM,EAAE,EAAE,CAAC,KAAK,IAAI,eAAe;YACnC,UAAU;SACX,CAAC,CAAA;QACF,OAAO,KAAK,CAAA;IACd,CAAC;IAED,mCAAmC;IACnC,IAAI,EAAE,CAAC,IAAI,KAAK,mBAAmB,EAAE,CAAC;QACpC,MAAM,OAAO,GAAI,EAAE,CAAC,SAAS,CAAC,OAAkB,IAAI,EAAE,CAAA;QACtD,MAAM,GAAG,GAAG,EAAE,CAAC,SAAS,CAAC,GAAyB,CAAA;QAClD,KAAK,CAAC,IAAI,CAAC;YACT,IAAI,EAAE,OAAO;YACb,OAAO;YACP,GAAG;YACH,MAAM,EAAE,EAAE,CAAC,MAAM,KAAK,SAAS;gBAC7B,CAAC,CAAC,SAAS;gBACX,CAAC,CAAC,EAAE,CAAC,MAAM,KAAK,WAAW;oBACzB,CAAC,CAAC,SAAS;oBACX,CAAC,CAAC,QAAQ;YACd,UAAU,EAAE,EAAE,CAAC,UAAU;YACzB,MAAM,EAAE,EAAE,CAAC,MAAM;YACjB,KAAK,EAAE,EAAE,CAAC,KAAK;SAChB,CAAC,CAAA;QACF,OAAO,KAAK,CAAA;IACd,CAAC;IAED,8BAA8B;IAC9B,MAAM,SAAS,GAAG,CAAC,WAAW,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,CAAC,CAAA;IAC5E,IAAI,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QAChC,MAAM,IAAI,GAAG,CAAC,EAAE,CAAC,SAAS,CAAC,SAAS,IAAI,EAAE,CAAC,SAAS,CAAC,OAAO,IAAI,EAAE,CAAW,CAAA;QAC7E,KAAK,CAAC,IAAI,CAAC;YACT,IAAI,EAAE,MAAM;YACZ,QAAQ,EAAE,EAAE,CAAC,IAAI;YACjB,IAAI;YACJ,MAAM,EAAE,EAAE,CAAC,MAAM,KAAK,SAAS;gBAC7B,CAAC,CAAC,SAAS;gBACX,CAAC,CAAC,EAAE,CAAC,MAAM,KAAK,WAAW;oBACzB,CAAC,CAAC,SAAS;oBACX,CAAC,CAAC,QAAQ;YACd,MAAM,EAAE,EAAE,CAAC,MAAM;YACjB,KAAK,EAAE,EAAE,CAAC,KAAK;SAChB,CAAC,CAAA;QACF,OAAO,KAAK,CAAA;IACd,CAAC;IAED,kCAAkC;IAClC,KAAK,CAAC,IAAI,CAAC;QACT,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,EAAE,CAAC,IAAI;QACjB,IAAI,EAAE,EAAE;QACR,MAAM,EAAE,EAAE,CAAC,MAAM,KAAK,SAAS;YAC7B,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,EAAE,CAAC,MAAM,KAAK,WAAW;gBACzB,CAAC,CAAC,SAAS;gBACX,CAAC,CAAC,QAAQ;QACd,MAAM,EAAE,EAAE,CAAC,MAAM;QACjB,KAAK,EAAE,EAAE,CAAC,KAAK;KAChB,CAAC,CAAA;IAEF,OAAO,KAAK,CAAA;AACd,CAAC;AAED,gFAAgF;AAEhF,MAAM,UAAU,yBAAyB;IACvC,MAAM,EAAE,GAAG,QAAQ,EAAE,CAAA;IACrB,OAAO;QACL,IAAI,EAAE,aAAa;QACnB,OAAO,EAAE,SAAS;QAClB,EAAE;QACF,MAAM,EAAE,EAAE,KAAK,OAAO;YACpB,CAAC,CAAC,uDAAuD;YACzD,CAAC,CAAC,2BAA2B;QAC/B,MAAM,EAAE,EAAE,KAAK,OAAO;YACpB,CAAC,CAAC,oDAAoD;YACtD,CAAC,CAAC,2CAA2C;KAChD,CAAA;AACH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../../src/ui/app.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,cAAc,EAAgB,MAAM,uBAAuB,CAAA;AAGzE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AAkB3D,UAAU,QAAQ;IAChB,MAAM,EAAE,cAAc,CAAC;IACvB,OAAO,EAAE,cAAc,CAAC;CACzB;AA4BD,wBAAgB,GAAG,CAAE,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,QAAQ,2CAg7BjD"}
1
+ {"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../../src/ui/app.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,cAAc,EAAgB,MAAM,uBAAuB,CAAA;AAGzE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AAmB3D,UAAU,QAAQ;IAChB,MAAM,EAAE,cAAc,CAAC;IACvB,OAAO,EAAE,cAAc,CAAC;CACzB;AA4BD,wBAAgB,GAAG,CAAE,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,QAAQ,2CAm/BjD"}
package/dist/ui/app.js CHANGED
@@ -76,8 +76,10 @@ export function App({ config, options }) {
76
76
  const [pendingImage, setPendingImage] = useState(null);
77
77
  const [themePicker, setThemePicker] = useState(null);
78
78
  const [modelPicker, setModelPicker] = useState(null);
79
+ const [langPicker, setLangPicker] = useState(null);
79
80
  const [serviceNotice, setServiceNotice] = useState(null);
80
81
  const serviceNoticeTimerRef = useRef(null);
82
+ const budgetRef = useRef(undefined);
81
83
  const addServiceNotice = useCallback((text) => {
82
84
  setServiceNotice(text);
83
85
  if (serviceNoticeTimerRef.current)
@@ -209,6 +211,8 @@ export function App({ config, options }) {
209
211
  setSetupStep,
210
212
  addServiceNotice,
211
213
  getMetrics: () => agentLoopRef.current?.getMetrics(),
214
+ getBudget: () => budgetRef.current,
215
+ setBudget: (budget) => { budgetRef.current = budget; },
212
216
  onThemePicker: () => {
213
217
  const themes = themeManager.listThemes();
214
218
  const currentName = themeManager.theme.name;
@@ -219,6 +223,11 @@ export function App({ config, options }) {
219
223
  const idx = DEEPSEEK_MODELS.findIndex(m => m.id === config.model);
220
224
  setModelPicker({ selectedIndex: Math.max(0, idx) });
221
225
  },
226
+ onLangPicker: () => {
227
+ const loc = i18n.listLocales();
228
+ const idx = loc.findIndex(l => l.code === i18n.getLocale());
229
+ setLangPicker({ selectedIndex: Math.max(0, idx) });
230
+ },
222
231
  };
223
232
  return executeSlashCommand(input, ctx);
224
233
  }, [config, approvalMode, messages, addServiceNotice]);
@@ -282,6 +291,13 @@ export function App({ config, options }) {
282
291
  ];
283
292
  setPendingImage(null);
284
293
  }
294
+ // Show local diagnostic notice for large prompts (not sent to model)
295
+ const charCount = input.length;
296
+ const lineCount = (input.match(/\r\n|\r|\n/g) || []).length + 1;
297
+ if (charCount > 500 || lineCount > 5) {
298
+ const msg = i18n.t('promptSending').replace('{chars}', String(charCount)).replace('{lines}', String(lineCount));
299
+ addServiceNotice(msg);
300
+ }
285
301
  const userMessage = { role: 'user', content: userContent };
286
302
  setMessages(prev => [...prev, userMessage]);
287
303
  setIsProcessing(true);
@@ -301,11 +317,12 @@ export function App({ config, options }) {
301
317
  approvalMode,
302
318
  cwd: process.cwd(),
303
319
  signal: abortController.signal,
320
+ budget: budgetRef.current,
304
321
  onToolCall: (tc) => {
305
322
  const updatedCalls = [...prevToolCallsRef.current, tc];
306
323
  prevToolCallsRef.current = updatedCalls;
307
324
  setToolCalls(updatedCalls);
308
- setStatusText(`🔧 ${tc.name}...`);
325
+ setStatusText(`[tool] ${tc.name}...`);
309
326
  // Add/update live tool activity card in chat messages
310
327
  setMessages(prev => {
311
328
  const idx = liveToolMessageIndexRef.current;
@@ -322,7 +339,7 @@ export function App({ config, options }) {
322
339
  });
323
340
  },
324
341
  onToolResult: (result) => {
325
- setStatusText(result.success ? `✅ ${result.toolName} ${i18n.t('toolDone')}` : `❌ ${result.toolName} ${i18n.t('toolError')}`);
342
+ setStatusText(result.success ? `[ok] ${result.toolName} ${i18n.t('toolDone')}` : `[err] ${result.toolName} ${i18n.t('toolError')}`);
326
343
  },
327
344
  onReasoningChunk: () => { },
328
345
  onStreamChunk: (chunk) => {
@@ -554,13 +571,13 @@ export function App({ config, options }) {
554
571
  }
555
572
  else if (cursor === 2) {
556
573
  exemptedToolsRef.current.add(toolName);
557
- addServiceNotice(`🔇 ${toolName}: больше не спрашивать в этой сессии`);
574
+ addServiceNotice(`[mute] ${toolName}: больше не спрашивать в этой сессии`);
558
575
  resolve(true);
559
576
  }
560
577
  else {
561
578
  setApprovalMode('turbo');
562
579
  saveConfig({ ...config, approvalMode: 'turbo' }).catch(() => { });
563
- addServiceNotice(' Turbo режим включён: инструменты выполняются без подтверждения.');
580
+ addServiceNotice('[turbo] Turbo режим включён: инструменты выполняются без подтверждения.');
564
581
  resolve(true);
565
582
  }
566
583
  }
@@ -582,7 +599,7 @@ export function App({ config, options }) {
582
599
  saveConfig({ ...config, approvalMode: newMode }).catch(() => { });
583
600
  // Local warning — NOT an agent message, NOT sent to model
584
601
  if (newMode === 'turbo') {
585
- addServiceNotice(' Включён режим Turbo: инструменты будут выполняться без подтверждения.');
602
+ addServiceNotice('[turbo] Включён режим Turbo: инструменты будут выполняться без подтверждения.');
586
603
  }
587
604
  else if (prev === 'turbo') {
588
605
  addServiceNotice('Режим Turbo выключен.');
@@ -641,7 +658,7 @@ export function App({ config, options }) {
641
658
  const chosen = picker.themes[picker.selectedIndex];
642
659
  themeManager.setTheme(chosen.name);
643
660
  setThemePicker(null);
644
- addServiceNotice(`🎨 Тема изменена: ${chosen.name}`);
661
+ addServiceNotice(`[theme] Тема изменена: ${chosen.name}`);
645
662
  return;
646
663
  }
647
664
  return;
@@ -666,7 +683,35 @@ export function App({ config, options }) {
666
683
  saveConfig({ ...config, model: chosen.id }).catch(() => { });
667
684
  config.model = chosen.id;
668
685
  setModelPicker(null);
669
- addServiceNotice(`🤖 Модель: ${chosen.label} (${chosen.id})`);
686
+ addServiceNotice(`[model] Модель: ${chosen.label} (${chosen.id})`);
687
+ }
688
+ return;
689
+ }
690
+ return;
691
+ }
692
+ // Language picker: interactive selection
693
+ if (langPicker) {
694
+ if (key.escape) {
695
+ setLangPicker(null);
696
+ return;
697
+ }
698
+ if (key.upArrow) {
699
+ setLangPicker(prev => prev ? { selectedIndex: Math.max(0, prev.selectedIndex - 1) } : null);
700
+ return;
701
+ }
702
+ if (key.downArrow) {
703
+ const locales = i18n.listLocales();
704
+ setLangPicker(prev => prev ? { selectedIndex: Math.min(locales.length - 1, prev.selectedIndex + 1) } : null);
705
+ return;
706
+ }
707
+ if (key.return) {
708
+ const locales = i18n.listLocales();
709
+ const chosen = locales[langPicker.selectedIndex];
710
+ if (chosen) {
711
+ i18n.setLocale(chosen.code);
712
+ saveConfig({ ...config, language: chosen.code }).catch(() => { });
713
+ setLangPicker(null);
714
+ addServiceNotice(`[lang] Язык изменён: ${chosen.name} (${chosen.code})`);
670
715
  }
671
716
  return;
672
717
  }
@@ -832,17 +877,17 @@ export function App({ config, options }) {
832
877
  langOptions,
833
878
  modeOptions,
834
879
  } })
835
- : (_jsxs(Box, { flexDirection: 'column', flexGrow: 1, children: [_jsx(Logo, {}), _jsx(ChatView, { messages: messages, scrollOffset: chatScrollOffset, hasNewMessages: newMessagesWhilePaused }), serviceNotice && (_jsx(Box, { marginLeft: 2, marginBottom: 1, children: _jsx(Text, { color: colors.primary, children: serviceNotice }) })), themePicker && (_jsxs(Box, { flexDirection: 'column', marginLeft: 2, marginBottom: 1, borderStyle: 'round', borderColor: colors.primary, children: [_jsx(Box, { marginLeft: 1, marginTop: 1, children: _jsx(Text, { bold: true, color: colors.primary, children: "\uD83C\uDFA8 \u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435 \u0442\u0435\u043C\u0443" }) }), _jsx(Box, { marginLeft: 1, marginTop: 1, flexDirection: 'column', children: themePicker.themes.map((t, i) => (_jsx(Box, { children: _jsxs(Text, { color: i === themePicker.selectedIndex ? colors.primary : colors.textMuted, children: [i === themePicker.selectedIndex ? '▸ ' : ' ', t.name, t.name === themeManager.theme.name ? ' (текущая)' : ''] }) }, t.name))) }), _jsx(Box, { marginLeft: 1, marginBottom: 1, marginTop: 1, children: _jsx(Text, { color: colors.textMuted, children: "\u2191\u2193 \u2014 \u043D\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u044F Enter \u2014 \u043F\u0440\u0438\u043C\u0435\u043D\u0438\u0442\u044C Esc \u2014 \u043E\u0442\u043C\u0435\u043D\u0430" }) })] })), modelPicker && (_jsxs(Box, { flexDirection: 'column', marginLeft: 2, marginBottom: 1, borderStyle: 'round', borderColor: colors.primary, children: [_jsx(Box, { marginLeft: 1, marginTop: 1, children: _jsx(Text, { bold: true, color: colors.primary, children: "\uD83E\uDD16 \u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435 \u043C\u043E\u0434\u0435\u043B\u044C" }) }), _jsx(Box, { marginLeft: 1, marginTop: 1, flexDirection: 'column', children: DEEPSEEK_MODELS.map((m, i) => (_jsxs(Box, { flexDirection: 'column', children: [_jsxs(Text, { color: i === modelPicker.selectedIndex ? colors.primary : colors.textMuted, children: [i === modelPicker.selectedIndex ? '▸ ' : ' ', _jsx(Text, { bold: i === modelPicker.selectedIndex, children: m.label }), m.id === config.model ? _jsx(Text, { dimColor: true, children: " (\u0442\u0435\u043A\u0443\u0449\u0430\u044F)" }) : null] }), _jsxs(Text, { dimColor: true, children: [' ', m.description] })] }, m.id))) }), _jsx(Box, { marginLeft: 1, marginBottom: 1, marginTop: 1, children: _jsx(Text, { color: colors.textMuted, children: "\u2191\u2193 \u2014 \u043D\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u044F Enter \u2014 \u043F\u0440\u0438\u043C\u0435\u043D\u0438\u0442\u044C Esc \u2014 \u043E\u0442\u043C\u0435\u043D\u0430" }) })] })), pendingApproval && (_jsxs(Box, { flexDirection: 'column', marginLeft: 2, marginBottom: 1, borderStyle: 'round', borderColor: colors.warning, children: [_jsx(Box, { children: _jsx(Text, { bold: true, color: colors.warning, children: "\uD83D\uDD14 \u041F\u043E\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u044C \u0432\u044B\u0437\u043E\u0432 \u0438\u043D\u0441\u0442\u0440\u0443\u043C\u0435\u043D\u0442\u0430?" }) }), _jsx(Box, { marginLeft: 1, children: _jsx(Text, { bold: true, color: colors.text, children: pendingApproval.toolName }) }), _jsx(Box, { marginLeft: 1, children: _jsx(Text, { color: colors.textMuted, children: JSON.stringify(pendingApproval.args, null, 2).slice(0, 200) }) }), _jsxs(Box, { flexDirection: 'column', marginTop: 1, children: [[
836
- 'Подтвердить',
837
- 'Отклонить',
838
- `🔇 Не спрашивать для "${pendingApproval.toolName}"`,
839
- '⚡ Turbo выполнять всё без вопросов',
840
- ].map((label, i) => (_jsx(Box, { marginLeft: 1, children: _jsxs(Text, { color: approvalCursor === i ? colors.primary : colors.text, children: [approvalCursor === i ? ' ' : ' ', label] }) }, i))), _jsx(Box, { marginLeft: 1, marginTop: 1, children: _jsx(Text, { color: colors.textMuted, children: "\u2191\u2193 \u2014 \u043D\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u044F Enter \u2014 \u0432\u044B\u0431\u0440\u0430\u0442\u044C Esc \u2014 \u043E\u0442\u043A\u043B\u043E\u043D\u0438\u0442\u044C" }) })] })] })), pendingClear && (_jsxs(Box, { flexDirection: 'column', marginLeft: 2, marginBottom: 1, borderStyle: 'round', borderColor: colors.warning, children: [_jsx(Box, { children: _jsx(Text, { bold: true, color: colors.warning, children: "\u26A0\uFE0F \u041E\u0447\u0438\u0441\u0442\u0438\u0442\u044C \u0438\u0441\u0442\u043E\u0440\u0438\u044E \u0447\u0430\u0442\u0430?" }) }), _jsx(Box, { marginLeft: 1, children: _jsxs(Text, { color: colors.textMuted, children: [messages.length, " \u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u0439 \u0431\u0443\u0434\u0435\u0442 \u0443\u0434\u0430\u043B\u0435\u043D\u043E. \u041E\u0442\u043C\u0435\u043D\u0443 \u043D\u0435\u043B\u044C\u0437\u044F."] }) }), _jsxs(Box, { flexDirection: 'column', marginTop: 1, children: [['Да, очистить', 'Отмена'].map((label, i) => (_jsx(Box, { marginLeft: 1, children: _jsxs(Text, { color: clearCursor === i ? colors.primary : colors.text, children: [clearCursor === i ? ' ' : ' ', label] }) }, i))), _jsx(Box, { marginLeft: 1, marginTop: 1, children: _jsx(Text, { color: colors.textMuted, children: "\u2191\u2193 \u2014 \u043D\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u044F Enter \u2014 \u0432\u044B\u0431\u0440\u0430\u0442\u044C Esc \u2014 \u043E\u0442\u043C\u0435\u043D\u0430" }) })] })] }))] })), _jsx(InputBar, { onSubmit: handleSubmit, disabled: isProcessing, onClear: handleClear, onExit: handleExit, isMasked: setupStep === 'apikey', isSetupMode: setupStep !== 'done', blockInput: setupStep === 'done' && (pendingApproval !== null || pendingClear), emptyHint: emptyInputHint, onImagePaste: (base64, mimeType) => {
880
+ : (_jsxs(Box, { flexDirection: 'column', flexGrow: 1, children: [_jsx(Logo, {}), _jsx(ChatView, { messages: messages, scrollOffset: chatScrollOffset, hasNewMessages: newMessagesWhilePaused }), serviceNotice && (_jsx(Box, { marginLeft: 2, marginBottom: 1, children: _jsx(Text, { color: colors.primary, children: serviceNotice }) })), themePicker && (_jsxs(Box, { flexDirection: 'column', marginLeft: 2, marginBottom: 1, borderStyle: 'round', borderColor: colors.primary, children: [_jsx(Box, { marginLeft: 1, marginTop: 1, children: _jsx(Text, { bold: true, color: colors.primary, children: "\u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435 \u0442\u0435\u043C\u0443" }) }), _jsx(Box, { marginLeft: 1, marginTop: 1, flexDirection: 'column', children: themePicker.themes.map((t, i) => (_jsx(Box, { children: _jsxs(Text, { color: i === themePicker.selectedIndex ? colors.primary : colors.textMuted, children: [i === themePicker.selectedIndex ? '▸ ' : ' ', t.name, t.name === themeManager.theme.name ? ' (текущая)' : ''] }) }, t.name))) }), _jsx(Box, { marginLeft: 1, marginBottom: 1, marginTop: 1, children: _jsx(Text, { color: colors.textMuted, children: "\u2191\u2193 \u2014 \u043D\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u044F Enter \u2014 \u043F\u0440\u0438\u043C\u0435\u043D\u0438\u0442\u044C Esc \u2014 \u043E\u0442\u043C\u0435\u043D\u0430" }) })] })), modelPicker && (_jsxs(Box, { flexDirection: 'column', marginLeft: 2, marginBottom: 1, borderStyle: 'round', borderColor: colors.primary, children: [_jsx(Box, { marginLeft: 1, marginTop: 1, children: _jsx(Text, { bold: true, color: colors.primary, children: "\u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435 \u043C\u043E\u0434\u0435\u043B\u044C" }) }), _jsx(Box, { marginLeft: 1, marginTop: 1, flexDirection: 'column', children: DEEPSEEK_MODELS.map((m, i) => (_jsxs(Box, { flexDirection: 'column', children: [_jsxs(Text, { color: i === modelPicker.selectedIndex ? colors.primary : colors.textMuted, children: [i === modelPicker.selectedIndex ? '▸ ' : ' ', _jsx(Text, { bold: i === modelPicker.selectedIndex, children: m.label }), m.id === config.model ? _jsx(Text, { dimColor: true, children: " (\u0442\u0435\u043A\u0443\u0449\u0430\u044F)" }) : null] }), _jsxs(Text, { dimColor: true, children: [' ', m.description] })] }, m.id))) }), _jsx(Box, { marginLeft: 1, marginBottom: 1, marginTop: 1, children: _jsx(Text, { color: colors.textMuted, children: "\u2191\u2193 \u2014 \u043D\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u044F Enter \u2014 \u043F\u0440\u0438\u043C\u0435\u043D\u0438\u0442\u044C Esc \u2014 \u043E\u0442\u043C\u0435\u043D\u0430" }) })] })), langPicker && (_jsxs(Box, { flexDirection: 'column', marginLeft: 2, marginBottom: 1, borderStyle: 'round', borderColor: colors.primary, children: [_jsx(Box, { marginLeft: 1, marginTop: 1, children: _jsx(Text, { bold: true, color: colors.primary, children: "\u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435 \u044F\u0437\u044B\u043A / Select language / \u9009\u62E9\u8BED\u8A00" }) }), _jsx(Box, { marginLeft: 1, marginTop: 1, flexDirection: 'column', children: i18n.listLocales().map((loc, i) => (_jsx(Box, { children: _jsxs(Text, { color: i === langPicker.selectedIndex ? colors.primary : colors.textMuted, children: [i === langPicker.selectedIndex ? '▸ ' : ' ', loc.name, loc.code === i18n.getLocale() ? _jsx(Text, { dimColor: true, children: " (\u0442\u0435\u043A\u0443\u0449\u0438\u0439)" }) : null] }) }, loc.code))) }), _jsx(Box, { marginLeft: 1, marginBottom: 1, marginTop: 1, children: _jsx(Text, { color: colors.textMuted, children: "\u2191\u2193 \u2014 \u043D\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u044F Enter \u2014 \u043F\u0440\u0438\u043C\u0435\u043D\u0438\u0442\u044C Esc \u2014 \u043E\u0442\u043C\u0435\u043D\u0430" }) })] })), pendingApproval && (_jsxs(Box, { flexDirection: 'column', marginLeft: 2, marginBottom: 1, borderStyle: 'round', borderColor: colors.warning, children: [_jsx(Box, { children: _jsx(Text, { bold: true, color: colors.warning, children: "\u041F\u043E\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u044C \u0432\u044B\u0437\u043E\u0432 \u0438\u043D\u0441\u0442\u0440\u0443\u043C\u0435\u043D\u0442\u0430?" }) }), _jsx(Box, { marginLeft: 1, children: _jsx(Text, { bold: true, color: colors.text, children: pendingApproval.toolName }) }), _jsx(Box, { marginLeft: 1, children: _jsx(Text, { color: colors.textMuted, children: JSON.stringify(pendingApproval.args, null, 2).slice(0, 200) }) }), _jsxs(Box, { flexDirection: 'column', marginTop: 1, children: [[
881
+ '[ok] Подтвердить',
882
+ '[no] Отклонить',
883
+ `[mute] Не спрашивать для "${pendingApproval.toolName}"`,
884
+ '[turbo] Выполнять всё без вопросов',
885
+ ].map((label, i) => (_jsx(Box, { marginLeft: 1, children: _jsxs(Text, { color: approvalCursor === i ? colors.primary : colors.text, children: [approvalCursor === i ? '> ' : ' ', label] }) }, i))), _jsx(Box, { marginLeft: 1, marginTop: 1, children: _jsx(Text, { color: colors.textMuted, children: "\u2191\u2193 \u2014 \u043D\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u044F Enter \u2014 \u0432\u044B\u0431\u0440\u0430\u0442\u044C Esc \u2014 \u043E\u0442\u043A\u043B\u043E\u043D\u0438\u0442\u044C" }) })] })] })), pendingClear && (_jsxs(Box, { flexDirection: 'column', marginLeft: 2, marginBottom: 1, borderStyle: 'round', borderColor: colors.warning, children: [_jsx(Box, { children: _jsx(Text, { bold: true, color: colors.warning, children: "\u041E\u0447\u0438\u0441\u0442\u0438\u0442\u044C \u0438\u0441\u0442\u043E\u0440\u0438\u044E \u0447\u0430\u0442\u0430?" }) }), _jsx(Box, { marginLeft: 1, children: _jsxs(Text, { color: colors.textMuted, children: [messages.length, " \u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u0439 \u0431\u0443\u0434\u0435\u0442 \u0443\u0434\u0430\u043B\u0435\u043D\u043E. \u041E\u0442\u043C\u0435\u043D\u0443 \u043D\u0435\u043B\u044C\u0437\u044F."] }) }), _jsxs(Box, { flexDirection: 'column', marginTop: 1, children: [['[ok] Да, очистить', '[no] Отмена'].map((label, i) => (_jsx(Box, { marginLeft: 1, children: _jsxs(Text, { color: clearCursor === i ? colors.primary : colors.text, children: [clearCursor === i ? '> ' : ' ', label] }) }, i))), _jsx(Box, { marginLeft: 1, marginTop: 1, children: _jsx(Text, { color: colors.textMuted, children: "\u2191\u2193 \u2014 \u043D\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u044F Enter \u2014 \u0432\u044B\u0431\u0440\u0430\u0442\u044C Esc \u2014 \u043E\u0442\u043C\u0435\u043D\u0430" }) })] })] }))] })), _jsx(InputBar, { onSubmit: handleSubmit, disabled: isProcessing, onClear: handleClear, onExit: handleExit, isMasked: setupStep === 'apikey', isSetupMode: setupStep !== 'done', blockInput: setupStep === 'done' && (pendingApproval !== null || pendingClear), emptyHint: emptyInputHint, onImagePaste: (base64, mimeType) => {
841
886
  const model = config.model ?? '';
842
887
  if (!model.includes('vl') && !model.includes('vision')) {
843
888
  setMessages(prev => [...prev, {
844
889
  role: 'assistant',
845
- content: `⚠️ Вставка изображения требует модель с поддержкой vision.\nТекущая модель: ${model || 'неизвестно'}\nИспользуйте модель с "vl" или "vision" в названии.`,
890
+ content: `[warn] Вставка изображения требует модель с поддержкой vision.\nТекущая модель: ${model || 'неизвестно'}\nИспользуйте модель с "vl" или "vision" в названии.`,
846
891
  }]);
847
892
  return;
848
893
  }