micro-models-agent 0.4.0 → 0.6.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 (119) hide show
  1. package/dist/agent/context.d.ts +3 -6
  2. package/dist/agent/context.d.ts.map +1 -1
  3. package/dist/agent/context.js +8 -41
  4. package/dist/agent/context.js.map +1 -1
  5. package/dist/agent/error-escalation.d.ts +6 -6
  6. package/dist/agent/error-escalation.d.ts.map +1 -1
  7. package/dist/agent/error-escalation.js +67 -34
  8. package/dist/agent/error-escalation.js.map +1 -1
  9. package/dist/agent/loop.d.ts.map +1 -1
  10. package/dist/agent/loop.js +14 -79
  11. package/dist/agent/loop.js.map +1 -1
  12. package/dist/agent/memory.d.ts +0 -29
  13. package/dist/agent/memory.d.ts.map +1 -1
  14. package/dist/agent/memory.js +1 -78
  15. package/dist/agent/memory.js.map +1 -1
  16. package/dist/agent/modes/registry.d.ts +1 -1
  17. package/dist/agent/modes/registry.d.ts.map +1 -1
  18. package/dist/agent/modes/registry.js +26 -27
  19. package/dist/agent/modes/registry.js.map +1 -1
  20. package/dist/agent/modes/types.d.ts +0 -5
  21. package/dist/agent/modes/types.d.ts.map +1 -1
  22. package/dist/agent/system-prompt.d.ts +1 -1
  23. package/dist/agent/system-prompt.d.ts.map +1 -1
  24. package/dist/agent/system-prompt.js +95 -147
  25. package/dist/agent/system-prompt.js.map +1 -1
  26. package/dist/agent/tool-executor.d.ts +2 -6
  27. package/dist/agent/tool-executor.d.ts.map +1 -1
  28. package/dist/agent/tool-executor.js +79 -65
  29. package/dist/agent/tool-executor.js.map +1 -1
  30. package/dist/agent/user-profile.d.ts +1 -21
  31. package/dist/agent/user-profile.d.ts.map +1 -1
  32. package/dist/agent/user-profile.js +41 -174
  33. package/dist/agent/user-profile.js.map +1 -1
  34. package/dist/agent/write-enforcer.d.ts +3 -7
  35. package/dist/agent/write-enforcer.d.ts.map +1 -1
  36. package/dist/agent/write-enforcer.js +7 -71
  37. package/dist/agent/write-enforcer.js.map +1 -1
  38. package/dist/cli/config.d.ts.map +1 -1
  39. package/dist/cli/config.js +2 -25
  40. package/dist/cli/config.js.map +1 -1
  41. package/dist/cli.d.ts +1 -1
  42. package/dist/cli.d.ts.map +1 -1
  43. package/dist/cli.js +102 -139
  44. package/dist/cli.js.map +1 -1
  45. package/dist/config/config.d.ts +15 -0
  46. package/dist/config/config.d.ts.map +1 -1
  47. package/dist/config/config.js +4 -38
  48. package/dist/config/config.js.map +1 -1
  49. package/dist/config/types.d.ts +0 -2
  50. package/dist/config/types.d.ts.map +1 -1
  51. package/dist/logger.d.ts +10 -3
  52. package/dist/logger.d.ts.map +1 -1
  53. package/dist/logger.js +89 -38
  54. package/dist/logger.js.map +1 -1
  55. package/dist/repl/commands.d.ts +16 -16
  56. package/dist/repl/commands.d.ts.map +1 -1
  57. package/dist/repl/commands.js +474 -321
  58. package/dist/repl/commands.js.map +1 -1
  59. package/dist/repl/index.d.ts +4 -4
  60. package/dist/repl/index.d.ts.map +1 -1
  61. package/dist/repl/index.js +60 -56
  62. package/dist/repl/index.js.map +1 -1
  63. package/dist/session/store.d.ts +4 -7
  64. package/dist/session/store.d.ts.map +1 -1
  65. package/dist/session/store.js +35 -71
  66. package/dist/session/store.js.map +1 -1
  67. package/dist/setup-wizard.d.ts.map +1 -1
  68. package/dist/setup-wizard.js +5 -23
  69. package/dist/setup-wizard.js.map +1 -1
  70. package/dist/styling/engine.d.ts +7 -12
  71. package/dist/styling/engine.d.ts.map +1 -1
  72. package/dist/styling/engine.js +85 -134
  73. package/dist/styling/engine.js.map +1 -1
  74. package/dist/styling/index.d.ts +2 -2
  75. package/dist/styling/index.d.ts.map +1 -1
  76. package/dist/styling/index.js +0 -1
  77. package/dist/styling/index.js.map +1 -1
  78. package/dist/styling/loader.d.ts +2 -2
  79. package/dist/styling/loader.d.ts.map +1 -1
  80. package/dist/styling/loader.js +99 -47
  81. package/dist/styling/loader.js.map +1 -1
  82. package/dist/subagent/chat.d.ts +19 -0
  83. package/dist/subagent/chat.d.ts.map +1 -0
  84. package/dist/subagent/chat.js +279 -0
  85. package/dist/subagent/chat.js.map +1 -0
  86. package/dist/subagent/context.d.ts +9 -0
  87. package/dist/subagent/context.d.ts.map +1 -0
  88. package/dist/subagent/context.js +75 -0
  89. package/dist/subagent/context.js.map +1 -0
  90. package/dist/subagent/definition.d.ts +7 -0
  91. package/dist/subagent/definition.d.ts.map +1 -0
  92. package/dist/subagent/definition.js +26 -0
  93. package/dist/subagent/definition.js.map +1 -0
  94. package/dist/subagent/errors.d.ts +24 -0
  95. package/dist/subagent/errors.d.ts.map +1 -0
  96. package/dist/subagent/errors.js +85 -0
  97. package/dist/subagent/errors.js.map +1 -0
  98. package/dist/subagent/validation.d.ts +17 -0
  99. package/dist/subagent/validation.d.ts.map +1 -0
  100. package/dist/subagent/validation.js +83 -0
  101. package/dist/subagent/validation.js.map +1 -0
  102. package/dist/tools/hooks.d.ts +2 -0
  103. package/dist/tools/hooks.d.ts.map +1 -1
  104. package/dist/tools/hooks.js +118 -16
  105. package/dist/tools/hooks.js.map +1 -1
  106. package/dist/tools/parse-tool-call.d.ts.map +1 -1
  107. package/dist/tools/parse-tool-call.js +16 -14
  108. package/dist/tools/parse-tool-call.js.map +1 -1
  109. package/dist/tools/registry.d.ts +5 -3
  110. package/dist/tools/registry.d.ts.map +1 -1
  111. package/dist/tools/registry.js +47 -28
  112. package/dist/tools/registry.js.map +1 -1
  113. package/dist/tools/subagent.d.ts +4 -57
  114. package/dist/tools/subagent.d.ts.map +1 -1
  115. package/dist/tools/subagent.js +112 -556
  116. package/dist/tools/subagent.js.map +1 -1
  117. package/dist/tools/types.d.ts +2 -10
  118. package/dist/tools/types.d.ts.map +1 -1
  119. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"engine.js","sourceRoot":"","sources":["../../src/styling/engine.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"engine.js","sourceRoot":"","sources":["../../src/styling/engine.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { ThemeEngine } from './engine.js';
1
+ import type { ThemeEngine } from './engine.js';
2
2
  /** Инициализирует тему по имени (по умолчанию light) */
3
3
  export declare function initTheme(name?: string): ThemeEngine;
4
4
  /** Возвращает текущую тему (создаёт light если не инициализирована) */
@@ -9,7 +9,7 @@ export declare function listThemes(): string[];
9
9
  export declare function switchTheme(name: string): ThemeEngine;
10
10
  /** Сбрасывает тему (следующий getTheme создаст light) */
11
11
  export declare function resetTheme(): void;
12
- export { ThemeEngine } from './engine.js';
13
12
  export { loadTheme, loadThemeConfig, ensureThemeDir } from './loader.js';
13
+ export type { ThemeEngine } from './engine.js';
14
14
  export type { ThemeConfig, ThemeColors, ThemeIcons, ThemeFormat } from './types.js';
15
15
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/styling/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAiB1C,wDAAwD;AACxD,wBAAgB,SAAS,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,WAAW,CAGpD;AAED,uEAAuE;AACvE,wBAAgB,QAAQ,IAAI,WAAW,CAKtC;AAED,sCAAsC;AACtC,wBAAgB,UAAU,IAAI,MAAM,EAAE,CAErC;AAED,gCAAgC;AAChC,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,CAGrD;AAED,yDAAyD;AACzD,wBAAgB,UAAU,IAAI,IAAI,CAEjC;AAED,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AACzE,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/styling/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAiB/C,wDAAwD;AACxD,wBAAgB,SAAS,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,WAAW,CAGpD;AAED,uEAAuE;AACvE,wBAAgB,QAAQ,IAAI,WAAW,CAKtC;AAED,sCAAsC;AACtC,wBAAgB,UAAU,IAAI,MAAM,EAAE,CAErC;AAED,gCAAgC;AAChC,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,CAGrD;AAED,yDAAyD;AACzD,wBAAgB,UAAU,IAAI,IAAI,CAEjC;AAED,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AACzE,YAAY,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC"}
@@ -36,6 +36,5 @@ export function switchTheme(name) {
36
36
  export function resetTheme() {
37
37
  _theme = null;
38
38
  }
39
- export { ThemeEngine } from './engine.js';
40
39
  export { loadTheme, loadThemeConfig, ensureThemeDir } from './loader.js';
41
40
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/styling/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAmB,UAAU,IAAI,cAAc,EAAkB,MAAM,aAAa,CAAC;AAEvG;;;;;;;;;;GAUG;AAEH,IAAI,MAAM,GAAuB,IAAI,CAAC;AAEtC,wDAAwD;AACxD,MAAM,UAAU,SAAS,CAAC,IAAa;IACrC,MAAM,GAAG,SAAS,CAAC,IAAI,IAAI,OAAO,CAAC,CAAC;IACpC,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,uEAAuE;AACvE,MAAM,UAAU,QAAQ;IACtB,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;IAC9B,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,sCAAsC;AACtC,MAAM,UAAU,UAAU;IACxB,OAAO,cAAc,EAAE,CAAC;AAC1B,CAAC;AAED,gCAAgC;AAChC,MAAM,UAAU,WAAW,CAAC,IAAY;IACtC,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IACzB,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,yDAAyD;AACzD,MAAM,UAAU,UAAU;IACxB,MAAM,GAAG,IAAI,CAAC;AAChB,CAAC;AAED,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/styling/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAmB,UAAU,IAAI,cAAc,EAAkB,MAAM,aAAa,CAAC;AAEvG;;;;;;;;;;GAUG;AAEH,IAAI,MAAM,GAAuB,IAAI,CAAC;AAEtC,wDAAwD;AACxD,MAAM,UAAU,SAAS,CAAC,IAAa;IACrC,MAAM,GAAG,SAAS,CAAC,IAAI,IAAI,OAAO,CAAC,CAAC;IACpC,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,uEAAuE;AACvE,MAAM,UAAU,QAAQ;IACtB,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;IAC9B,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,sCAAsC;AACtC,MAAM,UAAU,UAAU;IACxB,OAAO,cAAc,EAAE,CAAC;AAC1B,CAAC;AAED,gCAAgC;AAChC,MAAM,UAAU,WAAW,CAAC,IAAY;IACtC,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IACzB,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,yDAAyD;AACzD,MAAM,UAAU,UAAU;IACxB,MAAM,GAAG,IAAI,CAAC;AAChB,CAAC;AAED,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC"}
@@ -1,5 +1,5 @@
1
- import type { ThemeConfig } from './types.js';
2
- import { ThemeEngine } from './engine.js';
1
+ import type { ThemeConfig } from "./types.js";
2
+ import type { ThemeEngine } from "./engine.js";
3
3
  export declare function loadThemeConfig(name?: string): ThemeConfig;
4
4
  export declare function loadTheme(name?: string): ThemeEngine;
5
5
  export declare function listThemes(): string[];
@@ -1 +1 @@
1
- {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../src/styling/loader.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAiF1C,wBAAgB,eAAe,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,WAAW,CAI1D;AAED,wBAAgB,SAAS,CAAC,IAAI,GAAE,MAAgB,GAAG,WAAW,CAE7D;AAED,wBAAgB,UAAU,IAAI,MAAM,EAAE,CASrC;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAKlE;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAKjD;AAED,wBAAgB,cAAc,IAAI,IAAI,CAIrC"}
1
+ {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../src/styling/loader.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAsI/C,wBAAgB,eAAe,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,WAAW,CAI1D;AAED,wBAAgB,SAAS,CAAC,IAAI,GAAE,MAAgB,GAAG,WAAW,CAE7D;AAED,wBAAgB,UAAU,IAAI,MAAM,EAAE,CAWrC;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAKlE;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAKjD;AAED,wBAAgB,cAAc,IAAI,IAAI,CAIrC"}
@@ -1,60 +1,110 @@
1
- import { readFileSync, existsSync, mkdirSync, writeFileSync, readdirSync, unlinkSync } from 'node:fs';
2
- import { join } from 'node:path';
3
- import { homedir } from 'node:os';
4
- import { ThemeEngine } from './engine.js';
5
- import { fileURLToPath } from 'node:url';
6
- import { dirname } from 'node:path';
1
+ import { readFileSync, existsSync, mkdirSync, writeFileSync, readdirSync, unlinkSync, } from "node:fs";
2
+ import { join } from "node:path";
3
+ import { homedir } from "node:os";
4
+ import { createThemeEngine } from "./engine.js";
5
+ import { fileURLToPath } from "node:url";
6
+ import { dirname } from "node:path";
7
7
  const __filename = fileURLToPath(import.meta.url);
8
8
  const __dirname = dirname(__filename);
9
9
  /**
10
- * Загрузчик и менеджер тем.
10
+ * Загрузчик и менеджер тем.
11
11
  *
12
- * Управляет:
13
- * - Встроенными темами (light, dark)
14
- * - Пользовательскими темами из ~/.mma/themes/
15
- * - Установкой/удалением тем из URL
16
- * - Переключением активной темы
12
+ * Управляет:
13
+ * - Встроенными темами (light, dark)
14
+ * - Пользовательскими темами из ~/.mma/themes/
15
+ * - Установкой/удалением тем из URL
16
+ * - Переключением активной темы
17
17
  *
18
18
  * @module styling/loader
19
19
  */
20
- const MMA_DIR = join(homedir(), '.mma');
21
- const THEMES_DIR = join(MMA_DIR, 'themes');
20
+ const MMA_DIR = join(homedir(), ".mma");
21
+ const THEMES_DIR = join(MMA_DIR, "themes");
22
22
  const BUILT_IN_THEMES = {
23
23
  light: {
24
- name: 'light',
24
+ name: "light",
25
25
  colors: {
26
- prompt: 'cyan', success: 'green', error: 'red', warning: 'yellow',
27
- info: 'blue', dim: 'dim', toolName: 'magenta', timing: 'yellow',
28
- contextBar: 'cyan', highlight: 'bold', lineNumbers: 'dim',
29
- filePath: 'cyan', link: 'underline', heading: 'bold',
30
- symbolName: 'yellow', symbolType: 'dim', bracket: 'dim',
31
- user: 'yellow', assistant: 'blue', subagent: 'magenta', expert: 'green',
26
+ prompt: "cyan",
27
+ success: "green",
28
+ error: "red",
29
+ warning: "yellow",
30
+ info: "blue",
31
+ dim: "dim",
32
+ toolName: "magenta",
33
+ timing: "yellow",
34
+ contextBar: "cyan",
35
+ highlight: "bold",
36
+ lineNumbers: "dim",
37
+ filePath: "cyan",
38
+ link: "underline",
39
+ heading: "bold",
40
+ symbolName: "yellow",
41
+ symbolType: "dim",
42
+ bracket: "dim",
43
+ user: "yellow",
44
+ assistant: "blue",
45
+ subagent: "magenta",
46
+ expert: "green",
32
47
  },
33
48
  icons: {
34
- success: '✓', failure: '✗', spinner: '⏳', inProgress: '~',
35
- pending: ' ', separator: '──', arrow: '→',
36
- barFill: '█', barEmpty: '░', check: '✓', cross: '✗',
37
- bullet: '├──', subBullet: '│ ├──', pipe: '│',
49
+ success: "\u2713",
50
+ failure: "\u2717",
51
+ spinner: "\u231B",
52
+ inProgress: "~",
53
+ pending: " ",
54
+ separator: "\u2501\u2501",
55
+ arrow: "\u2192",
56
+ barFill: "\u2588",
57
+ barEmpty: "\u2591",
58
+ check: "\u2713",
59
+ cross: "\u2717",
60
+ bullet: "\u251C\u2500\u2500",
61
+ subBullet: "\u2502 \u251C\u2500\u2500",
62
+ pipe: "\u2502",
38
63
  },
39
- format: { indent: ' ', indentSize: 2 },
64
+ format: { indent: " ", indentSize: 2 },
40
65
  },
41
66
  dark: {
42
- name: 'dark',
67
+ name: "dark",
43
68
  colors: {
44
- prompt: 'cyan', success: 'green', error: 'red', warning: 'yellow',
45
- info: 'cyan', dim: 'dim', toolName: 'magenta', timing: 'yellow',
46
- contextBar: 'cyan', highlight: 'bold', lineNumbers: 'dim',
47
- filePath: 'cyan', link: 'underline', heading: 'bold',
48
- symbolName: 'yellow', symbolType: 'dim', bracket: 'dim',
49
- user: 'yellow', assistant: 'cyan', subagent: 'magenta', expert: 'green',
69
+ prompt: "cyan",
70
+ success: "green",
71
+ error: "red",
72
+ warning: "yellow",
73
+ info: "cyan",
74
+ dim: "dim",
75
+ toolName: "magenta",
76
+ timing: "yellow",
77
+ contextBar: "cyan",
78
+ highlight: "bold",
79
+ lineNumbers: "dim",
80
+ filePath: "cyan",
81
+ link: "underline",
82
+ heading: "bold",
83
+ symbolName: "yellow",
84
+ symbolType: "dim",
85
+ bracket: "dim",
86
+ user: "yellow",
87
+ assistant: "cyan",
88
+ subagent: "magenta",
89
+ expert: "green",
50
90
  },
51
91
  icons: {
52
- success: '✓', failure: '✗', spinner: '⏳', inProgress: '~',
53
- pending: ' ', separator: '──', arrow: '→',
54
- barFill: '█', barEmpty: '░', check: '✓', cross: '✗',
55
- bullet: '├──', subBullet: '│ ├──', pipe: '│',
92
+ success: "\u2713",
93
+ failure: "\u2717",
94
+ spinner: "\u231B",
95
+ inProgress: "~",
96
+ pending: " ",
97
+ separator: "\u2501\u2501",
98
+ arrow: "\u2192",
99
+ barFill: "\u2588",
100
+ barEmpty: "\u2591",
101
+ check: "\u2713",
102
+ cross: "\u2717",
103
+ bullet: "\u251C\u2500\u2500",
104
+ subBullet: "\u2502 \u251C\u2500\u2500",
105
+ pipe: "\u2502",
56
106
  },
57
- format: { indent: ' ', indentSize: 2 },
107
+ format: { indent: " ", indentSize: 2 },
58
108
  },
59
109
  };
60
110
  function loadJsonTheme(name) {
@@ -62,7 +112,7 @@ function loadJsonTheme(name) {
62
112
  if (!existsSync(path))
63
113
  return null;
64
114
  try {
65
- return JSON.parse(readFileSync(path, 'utf-8'));
115
+ return JSON.parse(readFileSync(path, "utf-8"));
66
116
  }
67
117
  catch {
68
118
  return null;
@@ -78,28 +128,30 @@ function mergeTheme(base, overrides) {
78
128
  };
79
129
  }
80
130
  export function loadThemeConfig(name) {
81
- const builtIn = BUILT_IN_THEMES[name || 'light'] || BUILT_IN_THEMES.light;
82
- const custom = loadJsonTheme(name || 'light');
131
+ const builtIn = BUILT_IN_THEMES[name || "light"] || BUILT_IN_THEMES.light;
132
+ const custom = loadJsonTheme(name || "light");
83
133
  return custom ? mergeTheme(builtIn, custom) : builtIn;
84
134
  }
85
- export function loadTheme(name = 'light') {
86
- return new ThemeEngine(loadThemeConfig(name));
135
+ export function loadTheme(name = "light") {
136
+ return createThemeEngine(loadThemeConfig(name));
87
137
  }
88
138
  export function listThemes() {
89
139
  const builtIn = Object.keys(BUILT_IN_THEMES);
90
140
  let custom = [];
91
141
  try {
92
142
  custom = readdirSync(THEMES_DIR)
93
- .filter(f => f.endsWith('.json'))
94
- .map(f => f.replace('.json', ''));
143
+ .filter((f) => f.endsWith(".json"))
144
+ .map((f) => f.replace(".json", ""));
145
+ }
146
+ catch {
147
+ /* no custom themes dir */
95
148
  }
96
- catch { /* no custom themes dir */ }
97
149
  return [...builtIn, ...custom];
98
150
  }
99
151
  export function installTheme(name, content) {
100
152
  ensureThemeDir();
101
153
  const filePath = join(THEMES_DIR, `${name}.json`);
102
- writeFileSync(filePath, content, 'utf-8');
154
+ writeFileSync(filePath, content, "utf-8");
103
155
  return filePath;
104
156
  }
105
157
  export function removeTheme(name) {
@@ -1 +1 @@
1
- {"version":3,"file":"loader.js","sourceRoot":"","sources":["../../src/styling/loader.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"loader.js","sourceRoot":"","sources":["../../src/styling/loader.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import type { LLMProvider, ChatMessage } from "../llm/provider.js";
2
+ import type { OutputRenderer } from "../ui/renderer.js";
3
+ /**
4
+ * Отправка запроса к LLM с streaming-ответом.
5
+ * Поддерживает retry при ошибках и отображение "мышления" модели.
6
+ *
7
+ * @param provider - провайдер LLM
8
+ * @param messages - история сообщений
9
+ * @param renderer - рендерер для отображения streaming
10
+ * @param signal - сигнал прерывания
11
+ * @param retries - количество повторных попыток
12
+ * @param showThinking - показывать ли "мышление" модели
13
+ * @param caller - кто вызвал (main/subagent)
14
+ */
15
+ export declare function doChat(provider: LLMProvider, messages: ChatMessage[], renderer: OutputRenderer, signal?: AbortSignal, retries?: number, showThinking?: boolean, caller?: "main" | "subagent", maxTokens?: number): Promise<{
16
+ response: string;
17
+ genTimeMs: number;
18
+ }>;
19
+ //# sourceMappingURL=chat.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chat.d.ts","sourceRoot":"","sources":["../../src/subagent/chat.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAGnE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAUxD;;;;;;;;;;;GAWG;AACH,wBAAsB,MAAM,CAC1B,QAAQ,EAAE,WAAW,EACrB,QAAQ,EAAE,WAAW,EAAE,EACvB,QAAQ,EAAE,cAAc,EACxB,MAAM,CAAC,EAAE,WAAW,EACpB,OAAO,SAAI,EACX,YAAY,UAAQ,EACpB,MAAM,GAAE,MAAM,GAAG,UAAmB,EACpC,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC,CAoRlD"}
@@ -0,0 +1,279 @@
1
+ import { LMStudioNative } from "../llm/lmstudio-native.js";
2
+ import { OpenAICompat } from "../llm/openai-compat.js";
3
+ import { logInfo, logWarn, logLLMRequest, logLLMResponse, } from "../logger.js";
4
+ import { getLLMConfig } from "../config/config.js";
5
+ /**
6
+ * Отправка запроса к LLM с streaming-ответом.
7
+ * Поддерживает retry при ошибках и отображение "мышления" модели.
8
+ *
9
+ * @param provider - провайдер LLM
10
+ * @param messages - история сообщений
11
+ * @param renderer - рендерер для отображения streaming
12
+ * @param signal - сигнал прерывания
13
+ * @param retries - количество повторных попыток
14
+ * @param showThinking - показывать ли "мышление" модели
15
+ * @param caller - кто вызвал (main/subagent)
16
+ */
17
+ export async function doChat(provider, messages, renderer, signal, retries = 1, showThinking = false, caller = "main", maxTokens) {
18
+ let lastReasoningText = "";
19
+ // Phase 1: Normal attempts with thinking enabled
20
+ for (let attempt = 0; attempt <= retries; attempt++) {
21
+ const startTime = performance.now();
22
+ const fullText = [];
23
+ let started = false;
24
+ let reasoningBuf = false;
25
+ let currentReasoning = "";
26
+ let lastFinishReason = null;
27
+ let reasoningChunksCount = 0;
28
+ let contentChunksCount = 0;
29
+ if (signal?.aborted)
30
+ return { response: "", genTimeMs: 0 };
31
+ const lastMsg = messages[messages.length - 1];
32
+ logLLMRequest(provider.model, messages.length, lastMsg?.content || "", caller);
33
+ if (caller === "main") {
34
+ renderer.setStreamRole?.("assistant");
35
+ }
36
+ renderer.writeSpinner();
37
+ try {
38
+ let buf = "";
39
+ for await (const chunk of provider.chat(messages, {
40
+ temperature: 0.7,
41
+ signal,
42
+ showThinking,
43
+ enableThinking: true,
44
+ max_tokens: maxTokens,
45
+ })) {
46
+ if (!chunk.content && !chunk.reasoning && !chunk.finish_reason)
47
+ continue;
48
+ if (chunk.finish_reason) {
49
+ lastFinishReason = chunk.finish_reason;
50
+ }
51
+ if (chunk.content) {
52
+ fullText.push(chunk.content);
53
+ contentChunksCount++;
54
+ }
55
+ if (chunk.reasoning) {
56
+ reasoningChunksCount++;
57
+ currentReasoning += chunk.reasoning;
58
+ }
59
+ if (!chunk.content && !chunk.reasoning)
60
+ continue;
61
+ if (!started) {
62
+ renderer.clearSpinner();
63
+ started = true;
64
+ }
65
+ if (chunk.reasoning) {
66
+ if (showThinking) {
67
+ if (reasoningBuf === false) {
68
+ renderer.writeNewline();
69
+ renderer.writeDim("┈ reasoning ┈");
70
+ reasoningBuf = "";
71
+ }
72
+ reasoningBuf += chunk.reasoning;
73
+ }
74
+ continue;
75
+ }
76
+ if (reasoningBuf !== false && typeof reasoningBuf === "string") {
77
+ renderer.writeNewline();
78
+ renderer.writeDim(reasoningBuf);
79
+ reasoningBuf = false;
80
+ }
81
+ buf += chunk.content;
82
+ // Рендерим контент, вырезая tool_call блоки для корректного отображения
83
+ while (buf.length > 0) {
84
+ const tcStart = buf.indexOf("<tool_call>");
85
+ const tcEnd = buf.indexOf("</tool_call>");
86
+ if (tcStart === -1 && tcEnd === -1) {
87
+ const clean = buf.replace(/@grounding\[файл:\s*[^\]]*\]\n?/g, "");
88
+ if (clean)
89
+ renderer.writeMarkdownChunk(clean);
90
+ buf = "";
91
+ break;
92
+ }
93
+ if (tcStart !== -1 && (tcEnd === -1 || tcStart < tcEnd)) {
94
+ if (tcStart > 0) {
95
+ const clean = buf
96
+ .slice(0, tcStart)
97
+ .replace(/@grounding\[файл:\s*[^\]]*\]\n?/g, "");
98
+ if (clean)
99
+ renderer.writeMarkdownChunk(clean);
100
+ }
101
+ buf = buf.slice(tcStart);
102
+ const closeIdx = buf.indexOf("</tool_call>");
103
+ if (closeIdx !== -1) {
104
+ buf = buf.slice(closeIdx + "</tool_call>".length);
105
+ }
106
+ break;
107
+ }
108
+ if (tcEnd !== -1 && (tcStart === -1 || tcEnd < tcStart)) {
109
+ const clean = buf
110
+ .slice(0, tcEnd)
111
+ .replace(/@grounding\[файл:\s*[^\]]*\]\n?/g, "");
112
+ if (clean)
113
+ renderer.writeMarkdownChunk(clean);
114
+ buf = buf.slice(tcEnd + "</tool_call>".length);
115
+ }
116
+ }
117
+ }
118
+ if (reasoningBuf !== false && typeof reasoningBuf === "string") {
119
+ renderer.writeNewline();
120
+ renderer.writeDim(reasoningBuf);
121
+ }
122
+ // Сохраняем reasoning для fallback
123
+ if (currentReasoning) {
124
+ lastReasoningText = currentReasoning;
125
+ }
126
+ }
127
+ catch (e) {
128
+ if (e.name === "AbortError") {
129
+ logLLMResponse(provider.model, 0, performance.now() - startTime, "Aborted", caller);
130
+ return { response: "", genTimeMs: 0 };
131
+ }
132
+ logLLMResponse(provider.model, 0, performance.now() - startTime, e.message, caller);
133
+ renderer.writeError(`\n[LLM] ${e.message}`);
134
+ // Сетевые ошибки (fetch failed, ECONNREFUSED и т.д.) — retry с задержкой
135
+ const isNetworkError = !e.message?.includes("API ") && !e.message?.includes("status");
136
+ if (isNetworkError && attempt < retries) {
137
+ const delay = Math.min(2000 * (attempt + 1), 10000);
138
+ renderer.writeWarning(`[LLM] Network error, retrying in ${delay / 1000}s... (attempt ${attempt + 1}/${retries})`);
139
+ await new Promise((r) => setTimeout(r, delay));
140
+ continue;
141
+ }
142
+ const providerHint = provider instanceof LMStudioNative
143
+ ? "Check that LM Studio is running on localhost:1234"
144
+ : provider instanceof OpenAICompat
145
+ ? "Check that your API server is running and the API key is correct"
146
+ : "Check that your LLM server is running";
147
+ renderer.writeWarning(`[LLM] ${providerHint}`);
148
+ return { response: "", genTimeMs: 0 };
149
+ }
150
+ const genTimeMs = performance.now() - startTime;
151
+ const response = fullText.join("");
152
+ renderer.commitMarkdown();
153
+ if (response.trim()) {
154
+ logLLMResponse(provider.model, response.length, genTimeMs, undefined, caller);
155
+ return { response, genTimeMs };
156
+ }
157
+ // Диагностика пустого ответа
158
+ const reason = lastFinishReason ?? "unknown";
159
+ logWarn("DOCHAT", `empty response #${attempt + 1}: finish_reason=${reason}, reasoning_chunks=${reasoningChunksCount}, content_chunks=${contentChunksCount}`);
160
+ if (lastFinishReason === "length") {
161
+ renderer.writeWarning(` [empty response: model hit max_tokens during reasoning (${reasoningChunksCount} reasoning chunks, 0 content chunks)]`);
162
+ }
163
+ else if (reasoningChunksCount > 0 && contentChunksCount === 0) {
164
+ renderer.writeWarning(` [empty response: model produced ${reasoningChunksCount} reasoning chunks but no content]`);
165
+ }
166
+ if (attempt < retries) {
167
+ renderer.writeDim(`[retry ${attempt + 1}/${retries}]`);
168
+ }
169
+ }
170
+ const llmCfg = getLLMConfig();
171
+ // Phase 2: Retry WITHOUT thinking — модель генерирует content напрямую
172
+ if (llmCfg.retryWithoutThinking && lastReasoningText.trim()) {
173
+ logInfo("DOCHAT", `retrying without thinking (had ${lastReasoningText.length} reasoning chars)`);
174
+ renderer.writeDim(`[retry without thinking]`);
175
+ const retryResult = await doChatOnce(provider, messages, renderer, signal, false, showThinking, caller, maxTokens);
176
+ if (retryResult.response.trim()) {
177
+ logInfo("DOCHAT", `retry without thinking succeeded: ${retryResult.response.length} chars`);
178
+ return retryResult;
179
+ }
180
+ }
181
+ // Phase 2.5: Emergency — принудительно генерируем content с низкой температурой
182
+ if (lastReasoningText.trim()) {
183
+ logInfo("DOCHAT", `emergency: forcing content with low temperature`);
184
+ renderer.writeDim(`[emergency: forcing content with temperature=0.1]`);
185
+ const emergencyMessages = [
186
+ ...messages,
187
+ {
188
+ role: "user",
189
+ content: "[System] You MUST produce a response now. Do NOT use thinking tags. Reply with a tool call or a direct answer. Any response is better than empty.",
190
+ },
191
+ ];
192
+ const emergencyResult = await doChatOnce(provider, emergencyMessages, renderer, signal, false, showThinking, caller, maxTokens, 0.1);
193
+ if (emergencyResult.response.trim()) {
194
+ logInfo("DOCHAT", `emergency succeeded: ${emergencyResult.response.length} chars`);
195
+ return emergencyResult;
196
+ }
197
+ }
198
+ // Phase 3: Fallback — используем reasoning как content
199
+ if (llmCfg.fallbackToReasoning && lastReasoningText.trim()) {
200
+ logInfo("DOCHAT", `fallback: using reasoning as content (${lastReasoningText.length} chars)`);
201
+ renderer.writeWarning(` [fallback: using reasoning as content]`);
202
+ return { response: lastReasoningText, genTimeMs: 0 };
203
+ }
204
+ return { response: "", genTimeMs: 0 };
205
+ }
206
+ /**
207
+ * Одиночный вызов LLM без retry логики.
208
+ * Используется для retry с другими параметрами (например, enableThinking: false).
209
+ */
210
+ async function doChatOnce(provider, messages, renderer, signal, enableThinking = true, showThinking = false, caller = "main", maxTokens, temperature = 0.7) {
211
+ const startTime = performance.now();
212
+ const fullText = [];
213
+ let started = false;
214
+ if (signal?.aborted)
215
+ return { response: "", genTimeMs: 0 };
216
+ if (caller === "main") {
217
+ renderer.setStreamRole?.("assistant");
218
+ }
219
+ renderer.writeSpinner();
220
+ try {
221
+ let buf = "";
222
+ for await (const chunk of provider.chat(messages, {
223
+ temperature,
224
+ signal,
225
+ showThinking,
226
+ enableThinking,
227
+ max_tokens: maxTokens,
228
+ })) {
229
+ if (!chunk.content && !chunk.finish_reason)
230
+ continue;
231
+ if (chunk.content) {
232
+ fullText.push(chunk.content);
233
+ }
234
+ if (!chunk.content)
235
+ continue;
236
+ if (!started) {
237
+ renderer.clearSpinner();
238
+ started = true;
239
+ }
240
+ buf += chunk.content;
241
+ // Рендерим контент, вырезая tool_call блоки
242
+ while (buf.length > 0) {
243
+ const tcStart = buf.indexOf("<tool_call>");
244
+ const tcEnd = buf.indexOf("</tool_call>");
245
+ if (tcStart === -1 && tcEnd === -1) {
246
+ if (buf)
247
+ renderer.writeMarkdownChunk(buf);
248
+ buf = "";
249
+ break;
250
+ }
251
+ if (tcStart !== -1 && (tcEnd === -1 || tcStart < tcEnd)) {
252
+ if (tcStart > 0)
253
+ renderer.writeMarkdownChunk(buf.slice(0, tcStart));
254
+ buf = buf.slice(tcStart);
255
+ const closeIdx = buf.indexOf("</tool_call>");
256
+ if (closeIdx !== -1)
257
+ buf = buf.slice(closeIdx + "</tool_call>".length);
258
+ break;
259
+ }
260
+ if (tcEnd !== -1 && (tcStart === -1 || tcEnd < tcStart)) {
261
+ renderer.writeMarkdownChunk(buf.slice(0, tcEnd));
262
+ buf = buf.slice(tcEnd + "</tool_call>".length);
263
+ }
264
+ }
265
+ }
266
+ }
267
+ catch (e) {
268
+ if (e.name === "AbortError")
269
+ return { response: "", genTimeMs: 0 };
270
+ renderer.writeError(`\n[LLM] ${e.message}`);
271
+ return { response: "", genTimeMs: 0 };
272
+ }
273
+ const genTimeMs = performance.now() - startTime;
274
+ const response = fullText.join("");
275
+ renderer.commitMarkdown();
276
+ logLLMResponse(provider.model, response.length, genTimeMs, undefined, caller);
277
+ return { response, genTimeMs };
278
+ }
279
+ //# sourceMappingURL=chat.js.map