micro-models-agent 0.2.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 (242) hide show
  1. package/README.md +311 -0
  2. package/dist/agent/context.d.ts +18 -0
  3. package/dist/agent/context.d.ts.map +1 -0
  4. package/dist/agent/context.js +155 -0
  5. package/dist/agent/context.js.map +1 -0
  6. package/dist/agent/loop.d.ts +15 -0
  7. package/dist/agent/loop.d.ts.map +1 -0
  8. package/dist/agent/loop.js +575 -0
  9. package/dist/agent/loop.js.map +1 -0
  10. package/dist/agent/memory.d.ts +23 -0
  11. package/dist/agent/memory.d.ts.map +1 -0
  12. package/dist/agent/memory.js +244 -0
  13. package/dist/agent/memory.js.map +1 -0
  14. package/dist/agent/system-prompt.d.ts +3 -0
  15. package/dist/agent/system-prompt.d.ts.map +1 -0
  16. package/dist/agent/system-prompt.js +185 -0
  17. package/dist/agent/system-prompt.js.map +1 -0
  18. package/dist/blog-api/types/index.d.ts +2 -0
  19. package/dist/blog-api/types/index.d.ts.map +1 -0
  20. package/dist/blog-api/types/index.js +2 -0
  21. package/dist/blog-api/types/index.js.map +1 -0
  22. package/dist/cli/config.d.ts +3 -0
  23. package/dist/cli/config.d.ts.map +1 -0
  24. package/dist/cli/config.js +25 -0
  25. package/dist/cli/config.js.map +1 -0
  26. package/dist/cli/model.d.ts +3 -0
  27. package/dist/cli/model.d.ts.map +1 -0
  28. package/dist/cli/model.js +144 -0
  29. package/dist/cli/model.js.map +1 -0
  30. package/dist/cli/provider.d.ts +3 -0
  31. package/dist/cli/provider.d.ts.map +1 -0
  32. package/dist/cli/provider.js +78 -0
  33. package/dist/cli/provider.js.map +1 -0
  34. package/dist/cli.d.ts +3 -0
  35. package/dist/cli.d.ts.map +1 -0
  36. package/dist/cli.js +88 -0
  37. package/dist/cli.js.map +1 -0
  38. package/dist/config/config.d.ts +5 -0
  39. package/dist/config/config.d.ts.map +1 -0
  40. package/dist/config/config.js +84 -0
  41. package/dist/config/config.js.map +1 -0
  42. package/dist/config/types.d.ts +38 -0
  43. package/dist/config/types.d.ts.map +1 -0
  44. package/dist/config/types.js +2 -0
  45. package/dist/config/types.js.map +1 -0
  46. package/dist/file-loader.d.ts +12 -0
  47. package/dist/file-loader.d.ts.map +1 -0
  48. package/dist/file-loader.js +115 -0
  49. package/dist/file-loader.js.map +1 -0
  50. package/dist/index.d.ts +3 -0
  51. package/dist/index.d.ts.map +1 -0
  52. package/dist/index.js +5 -0
  53. package/dist/index.js.map +1 -0
  54. package/dist/indexer/cache.d.ts +27 -0
  55. package/dist/indexer/cache.d.ts.map +1 -0
  56. package/dist/indexer/cache.js +95 -0
  57. package/dist/indexer/cache.js.map +1 -0
  58. package/dist/indexer/code-index.d.ts +27 -0
  59. package/dist/indexer/code-index.d.ts.map +1 -0
  60. package/dist/indexer/code-index.js +197 -0
  61. package/dist/indexer/code-index.js.map +1 -0
  62. package/dist/indexer/project-map.d.ts +14 -0
  63. package/dist/indexer/project-map.d.ts.map +1 -0
  64. package/dist/indexer/project-map.js +157 -0
  65. package/dist/indexer/project-map.js.map +1 -0
  66. package/dist/llm/openai-compat.d.ts +11 -0
  67. package/dist/llm/openai-compat.d.ts.map +1 -0
  68. package/dist/llm/openai-compat.js +81 -0
  69. package/dist/llm/openai-compat.js.map +1 -0
  70. package/dist/llm/provider.d.ts +27 -0
  71. package/dist/llm/provider.d.ts.map +1 -0
  72. package/dist/llm/provider.js +2 -0
  73. package/dist/llm/provider.js.map +1 -0
  74. package/dist/llm/token-counter.d.ts +2 -0
  75. package/dist/llm/token-counter.d.ts.map +1 -0
  76. package/dist/llm/token-counter.js +24 -0
  77. package/dist/llm/token-counter.js.map +1 -0
  78. package/dist/repl/commands.d.ts +37 -0
  79. package/dist/repl/commands.d.ts.map +1 -0
  80. package/dist/repl/commands.js +433 -0
  81. package/dist/repl/commands.js.map +1 -0
  82. package/dist/repl/history.d.ts +19 -0
  83. package/dist/repl/history.d.ts.map +1 -0
  84. package/dist/repl/history.js +29 -0
  85. package/dist/repl/history.js.map +1 -0
  86. package/dist/repl/index.d.ts +5 -0
  87. package/dist/repl/index.d.ts.map +1 -0
  88. package/dist/repl/index.js +86 -0
  89. package/dist/repl/index.js.map +1 -0
  90. package/dist/repl.d.ts +5 -0
  91. package/dist/repl.d.ts.map +1 -0
  92. package/dist/repl.js +472 -0
  93. package/dist/repl.js.map +1 -0
  94. package/dist/session/store.d.ts +34 -0
  95. package/dist/session/store.d.ts.map +1 -0
  96. package/dist/session/store.js +115 -0
  97. package/dist/session/store.js.map +1 -0
  98. package/dist/skills/loader.d.ts +13 -0
  99. package/dist/skills/loader.d.ts.map +1 -0
  100. package/dist/skills/loader.js +122 -0
  101. package/dist/skills/loader.js.map +1 -0
  102. package/dist/styling/engine.d.ts +37 -0
  103. package/dist/styling/engine.d.ts.map +1 -0
  104. package/dist/styling/engine.js +136 -0
  105. package/dist/styling/engine.js.map +1 -0
  106. package/dist/styling/index.d.ts +7 -0
  107. package/dist/styling/index.d.ts.map +1 -0
  108. package/dist/styling/index.js +15 -0
  109. package/dist/styling/index.js.map +1 -0
  110. package/dist/styling/loader.d.ts +4 -0
  111. package/dist/styling/loader.d.ts.map +1 -0
  112. package/dist/styling/loader.js +78 -0
  113. package/dist/styling/loader.js.map +1 -0
  114. package/dist/styling/types.d.ts +46 -0
  115. package/dist/styling/types.d.ts.map +1 -0
  116. package/dist/styling/types.js +2 -0
  117. package/dist/styling/types.js.map +1 -0
  118. package/dist/tools/approve.d.ts +13 -0
  119. package/dist/tools/approve.d.ts.map +1 -0
  120. package/dist/tools/approve.js +32 -0
  121. package/dist/tools/approve.js.map +1 -0
  122. package/dist/tools/bash.d.ts +8 -0
  123. package/dist/tools/bash.d.ts.map +1 -0
  124. package/dist/tools/bash.js +186 -0
  125. package/dist/tools/bash.js.map +1 -0
  126. package/dist/tools/fs/copy-file.d.ts +5 -0
  127. package/dist/tools/fs/copy-file.d.ts.map +1 -0
  128. package/dist/tools/fs/copy-file.js +41 -0
  129. package/dist/tools/fs/copy-file.js.map +1 -0
  130. package/dist/tools/fs/create-dir.d.ts +5 -0
  131. package/dist/tools/fs/create-dir.d.ts.map +1 -0
  132. package/dist/tools/fs/create-dir.js +31 -0
  133. package/dist/tools/fs/create-dir.js.map +1 -0
  134. package/dist/tools/fs/delete-file.d.ts +5 -0
  135. package/dist/tools/fs/delete-file.d.ts.map +1 -0
  136. package/dist/tools/fs/delete-file.js +39 -0
  137. package/dist/tools/fs/delete-file.js.map +1 -0
  138. package/dist/tools/fs/edit-file.d.ts +5 -0
  139. package/dist/tools/fs/edit-file.d.ts.map +1 -0
  140. package/dist/tools/fs/edit-file.js +80 -0
  141. package/dist/tools/fs/edit-file.js.map +1 -0
  142. package/dist/tools/fs/file-info.d.ts +5 -0
  143. package/dist/tools/fs/file-info.d.ts.map +1 -0
  144. package/dist/tools/fs/file-info.js +37 -0
  145. package/dist/tools/fs/file-info.js.map +1 -0
  146. package/dist/tools/fs/glob-search.d.ts +5 -0
  147. package/dist/tools/fs/glob-search.d.ts.map +1 -0
  148. package/dist/tools/fs/glob-search.js +98 -0
  149. package/dist/tools/fs/glob-search.js.map +1 -0
  150. package/dist/tools/fs/grep-search.d.ts +5 -0
  151. package/dist/tools/fs/grep-search.d.ts.map +1 -0
  152. package/dist/tools/fs/grep-search.js +120 -0
  153. package/dist/tools/fs/grep-search.js.map +1 -0
  154. package/dist/tools/fs/list-dir.d.ts +5 -0
  155. package/dist/tools/fs/list-dir.d.ts.map +1 -0
  156. package/dist/tools/fs/list-dir.js +61 -0
  157. package/dist/tools/fs/list-dir.js.map +1 -0
  158. package/dist/tools/fs/move-file.d.ts +5 -0
  159. package/dist/tools/fs/move-file.d.ts.map +1 -0
  160. package/dist/tools/fs/move-file.js +41 -0
  161. package/dist/tools/fs/move-file.js.map +1 -0
  162. package/dist/tools/fs/path-utils.d.ts +30 -0
  163. package/dist/tools/fs/path-utils.d.ts.map +1 -0
  164. package/dist/tools/fs/path-utils.js +81 -0
  165. package/dist/tools/fs/path-utils.js.map +1 -0
  166. package/dist/tools/fs/read-file.d.ts +5 -0
  167. package/dist/tools/fs/read-file.d.ts.map +1 -0
  168. package/dist/tools/fs/read-file.js +51 -0
  169. package/dist/tools/fs/read-file.js.map +1 -0
  170. package/dist/tools/fs/tree.d.ts +5 -0
  171. package/dist/tools/fs/tree.d.ts.map +1 -0
  172. package/dist/tools/fs/tree.js +75 -0
  173. package/dist/tools/fs/tree.js.map +1 -0
  174. package/dist/tools/fs/types.d.ts +7 -0
  175. package/dist/tools/fs/types.d.ts.map +1 -0
  176. package/dist/tools/fs/types.js +9 -0
  177. package/dist/tools/fs/types.js.map +1 -0
  178. package/dist/tools/fs/write-file.d.ts +5 -0
  179. package/dist/tools/fs/write-file.d.ts.map +1 -0
  180. package/dist/tools/fs/write-file.js +58 -0
  181. package/dist/tools/fs/write-file.js.map +1 -0
  182. package/dist/tools/hooks.d.ts +15 -0
  183. package/dist/tools/hooks.d.ts.map +1 -0
  184. package/dist/tools/hooks.js +109 -0
  185. package/dist/tools/hooks.js.map +1 -0
  186. package/dist/tools/mcp.d.ts +22 -0
  187. package/dist/tools/mcp.d.ts.map +1 -0
  188. package/dist/tools/mcp.js +90 -0
  189. package/dist/tools/mcp.js.map +1 -0
  190. package/dist/tools/plan.d.ts +20 -0
  191. package/dist/tools/plan.d.ts.map +1 -0
  192. package/dist/tools/plan.js +86 -0
  193. package/dist/tools/plan.js.map +1 -0
  194. package/dist/tools/question.d.ts +17 -0
  195. package/dist/tools/question.d.ts.map +1 -0
  196. package/dist/tools/question.js +55 -0
  197. package/dist/tools/question.js.map +1 -0
  198. package/dist/tools/registry.d.ts +25 -0
  199. package/dist/tools/registry.d.ts.map +1 -0
  200. package/dist/tools/registry.js +81 -0
  201. package/dist/tools/registry.js.map +1 -0
  202. package/dist/tools/sanitizer.d.ts +7 -0
  203. package/dist/tools/sanitizer.d.ts.map +1 -0
  204. package/dist/tools/sanitizer.js +50 -0
  205. package/dist/tools/sanitizer.js.map +1 -0
  206. package/dist/tools/syntax-check.d.ts +16 -0
  207. package/dist/tools/syntax-check.d.ts.map +1 -0
  208. package/dist/tools/syntax-check.js +265 -0
  209. package/dist/tools/syntax-check.js.map +1 -0
  210. package/dist/tools/todo.d.ts +19 -0
  211. package/dist/tools/todo.d.ts.map +1 -0
  212. package/dist/tools/todo.js +102 -0
  213. package/dist/tools/todo.js.map +1 -0
  214. package/dist/ui/components/diff-view.d.ts +8 -0
  215. package/dist/ui/components/diff-view.d.ts.map +1 -0
  216. package/dist/ui/components/diff-view.js +25 -0
  217. package/dist/ui/components/diff-view.js.map +1 -0
  218. package/dist/ui/components/status-bar.d.ts +3 -0
  219. package/dist/ui/components/status-bar.d.ts.map +1 -0
  220. package/dist/ui/components/status-bar.js +14 -0
  221. package/dist/ui/components/status-bar.js.map +1 -0
  222. package/dist/ui/double-press.d.ts +9 -0
  223. package/dist/ui/double-press.d.ts.map +1 -0
  224. package/dist/ui/double-press.js +18 -0
  225. package/dist/ui/double-press.js.map +1 -0
  226. package/dist/ui/index.d.ts +4 -0
  227. package/dist/ui/index.d.ts.map +1 -0
  228. package/dist/ui/index.js +7 -0
  229. package/dist/ui/index.js.map +1 -0
  230. package/dist/ui/opentui-renderer.d.ts +53 -0
  231. package/dist/ui/opentui-renderer.d.ts.map +1 -0
  232. package/dist/ui/opentui-renderer.js +463 -0
  233. package/dist/ui/opentui-renderer.js.map +1 -0
  234. package/dist/ui/readline-renderer.d.ts +30 -0
  235. package/dist/ui/readline-renderer.d.ts.map +1 -0
  236. package/dist/ui/readline-renderer.js +97 -0
  237. package/dist/ui/readline-renderer.js.map +1 -0
  238. package/dist/ui/renderer.d.ts +35 -0
  239. package/dist/ui/renderer.d.ts.map +1 -0
  240. package/dist/ui/renderer.js +2 -0
  241. package/dist/ui/renderer.js.map +1 -0
  242. package/package.json +41 -0
package/README.md ADDED
@@ -0,0 +1,311 @@
1
+ # MMA — Micro Models Agent
2
+
3
+ LLM агент-харнес для маленьких моделей (Qwen3.5-9B, 32K-64K контекст).
4
+
5
+ Работает с OpenAI-совместимыми API: LM Studio, Ollama, vLLM, Together AI и другими.
6
+
7
+ ## Установка
8
+
9
+ ### Глобально через npm (рекомендуется)
10
+
11
+ ```bash
12
+ npm install -g mma
13
+
14
+ # Проверка:
15
+ mma --version
16
+ ```
17
+
18
+ ### Из исходников
19
+
20
+ ```bash
21
+ git clone <repo>
22
+ cd mma
23
+ npm install
24
+ npm run build
25
+ npm link
26
+ ```
27
+
28
+ ## Быстрый старт
29
+
30
+ ### 1. Добавьте провайдера
31
+
32
+ Если у вас уже запущен LM Studio на `localhost:1234`:
33
+
34
+ ```bash
35
+ # Провайдер уже есть в конфиге по умолчанию, можно сразу использовать
36
+ mma "Привет! Как тебя зовут?"
37
+ ```
38
+
39
+ Если нужно добавить другого провайдера:
40
+
41
+ ```bash
42
+ # Ollama
43
+ mma provider add ollama http://localhost:11434/v1
44
+
45
+ # vLLM
46
+ mma provider add vllm http://localhost:8000/v1
47
+
48
+ # Together AI
49
+ mma provider add together https://api.together.xyz/v1
50
+ ```
51
+
52
+ ### 2. Добавьте модель
53
+
54
+ ```bash
55
+ # mma model add <имя_алиас> <model_id> <контекст_в_токенах>
56
+
57
+ mma model add qwen3.5-9b qwen3.5-9b-instruct 32768
58
+ mma model add qwen2.5-14b qwen2.5-14b-instruct 32768
59
+ mma model add deepseek-coder deepseek-coder-6.7b-instruct 16384
60
+ ```
61
+
62
+ ### 3. Используйте
63
+
64
+ ```bash
65
+ # One-shot режим
66
+ mma "Создай React-компонент для формы входа"
67
+
68
+ # Интерактивный режим (REPL)
69
+ mma
70
+
71
+ # С stdin (пайп)
72
+ cat package.json | mma "Опиши зависимости"
73
+
74
+ # С выбором провайдера/модели
75
+ mma --provider ollama --model qwen3.5:9b "Напиши Dockerfile для Node.js приложения"
76
+ ```
77
+
78
+ ## Управление провайдерами и моделями
79
+
80
+ ```bash
81
+ # Провайдеры
82
+ mma provider list # Список провайдеров
83
+ mma provider use ollama # Переключиться на провайдера
84
+ mma provider add <имя> <url> # Добавить провайдера
85
+ mma provider remove <имя> # Удалить провайдера
86
+
87
+ # Модели
88
+ mma model list # Список моделей активного провайдера
89
+ mma model use qwen3.5-9b # Переключиться на модель
90
+ mma model add <имя> <id> <ctx> # Добавить модель
91
+ mma model remove <имя> # Удалить модель
92
+ mma model params [имя] # Параметры модели
93
+ mma model set <имя> k=v # Изменить параметр (temperature=0.5)
94
+
95
+ # Конфиг
96
+ mma config show # Показать весь конфиг
97
+ mma config reset # Сбросить настройки
98
+ ```
99
+
100
+ ### Параметры моделей
101
+
102
+ По умолчанию:
103
+ - `temperature`: 0.7
104
+ - `max_tokens`: 4096
105
+ - `top_p`: 0.9
106
+
107
+ Изменить:
108
+
109
+ ```bash
110
+ mma model set qwen3.5-9b temperature=0.3 max_tokens=8192
111
+ mma model set qwen3.5-9b seed=42 # для воспроизводимости
112
+ mma model set qwen3.5-9b seed=null # сбросить seed
113
+ ```
114
+
115
+ ## Конфигурация
116
+
117
+ Конфиг хранится в `~/.mma/config.json`.
118
+
119
+ ```json
120
+ {
121
+ "providers": {
122
+ "lmstudio": {
123
+ "type": "openai-compat",
124
+ "url": "http://localhost:1234/v1",
125
+ "apiKey": null,
126
+ "models": {
127
+ "qwen3.5-9b": {
128
+ "model": "qwen3.5-9b-instruct",
129
+ "contextWindow": 32768,
130
+ "params": {
131
+ "temperature": 0.7,
132
+ "max_tokens": 4096
133
+ }
134
+ }
135
+ }
136
+ }
137
+ },
138
+ "active": {
139
+ "provider": "lmstudio",
140
+ "model": "qwen3.5-9b"
141
+ },
142
+ "agent": {
143
+ "maxSteps": 50,
144
+ "autoCompact": true,
145
+ "compactThreshold": 0.85,
146
+ "toolTimeout": 120,
147
+ "maxOutputLength": 2000
148
+ }
149
+ }
150
+ ```
151
+
152
+ Можно также создать `.mmrc` в корне проекта — он смержится поверх глобального конфига.
153
+
154
+ ### Переменные окружения
155
+
156
+ | Переменная | Описание |
157
+ |-----------|----------|
158
+ | `MMA_PROVIDER` | Провайдер по умолчанию |
159
+ | `MMA_MODEL` | Модель по умолчанию |
160
+ | `MMA_STDIN=1` | Принудительное чтение stdin |
161
+ | `MMA_TUI=1` | Включить TUI-интерфейс |
162
+
163
+ ## Режимы запуска
164
+
165
+ ### One-shot
166
+
167
+ ```bash
168
+ mma "Объясни этот код: function fib(n) { return n < 2 ? n : fib(n-1) + fib(n-2); }"
169
+ ```
170
+
171
+ ### Stdin (пайп)
172
+
173
+ ```bash
174
+ cat main.ts | mma "Найди потенциальные баги"
175
+ curl -s https://api.example.com/data | mma "Проанализируй JSON"
176
+ ```
177
+
178
+ ### REPL
179
+
180
+ ```bash
181
+ mma
182
+ ```
183
+
184
+ В REPL доступны команды:
185
+
186
+ | Команда | Описание |
187
+ |---------|----------|
188
+ | `/read <file>` | Показать файл с нумерацией строк |
189
+ | `/write <file>` | Записать файл (до EOF) |
190
+ | `/edit <file> <n>` | Заменить строку N в файле |
191
+ | `/find <pattern>` | Поиск файлов по glob |
192
+ | `/search <pattern>` | Поиск содержимого |
193
+ | `/bash <cmd>` | Выполнить shell-команду |
194
+ | `/git <args>` | Git-операции |
195
+ | `/memory` | Показать память |
196
+ | `/memory add <type> <text>` | Добавить в память |
197
+ | `/memory search <query>` | Поиск в памяти |
198
+ | `/skill` | Список навыков |
199
+ | `/sessions` | Список сессий |
200
+ | `/resume <id>` | Восстановить сессию |
201
+ | `/save [name]` | Сохранить сессию |
202
+ | `/clear` | Очистить контекст |
203
+ | `/help` | Справка |
204
+ | `/exit` | Выход |
205
+
206
+ ### TUI (экспериментально)
207
+
208
+ ```bash
209
+ mma --tui
210
+ # или
211
+ MMA_TUI=1 mma
212
+ ```
213
+
214
+ ## Синтаксис `@file`
215
+
216
+ Загружает файлы в контекст агента:
217
+
218
+ ```bash
219
+ mma "@src/index.ts -- объясни эту функцию"
220
+
221
+ # Несколько файлов
222
+ mma "@src/auth/login.ts @src/auth/jwt.ts -- сравни"
223
+
224
+ # Диапазон строк
225
+ mma "@src/index.ts:10-30 -- что здесь происходит?"
226
+
227
+ # Вся директория
228
+ mma "@src/auth/ -- покажи структуру модуля"
229
+ ```
230
+
231
+ ## Навыки (Skills)
232
+
233
+ Навыки — это Markdown-файлы с инструкциями для модели. Загружаются из:
234
+ - `~/.mma/skills/<name>/SKILL.md`
235
+ - `.agents/skills/<name>/SKILL.md`
236
+ - `.claude/skills/<name>/SKILL.md`
237
+
238
+ ```bash
239
+ # Использовать навык
240
+ mma "@docker -- помоги контейнеризовать приложение"
241
+ ```
242
+
243
+ ## Агент: как это работает
244
+
245
+ 1. Вы даёте задачу (prompt)
246
+ 2. Модель генерирует план и вызывает инструменты через `<tool_call>`
247
+ 3. Агент выполняет инструменты и возвращает результат модели
248
+ 4. Модель анализирует результат и решает, что делать дальше
249
+ 5. Цикл продолжается до завершения задачи (макс. 50 шагов)
250
+
251
+ ### Инструменты агента
252
+
253
+ | Инструмент | Описание |
254
+ |-----------|----------|
255
+ | `read_file` | Чтение файла с нумерацией строк |
256
+ | `write_file` | Атомарная запись/создание файла |
257
+ | `edit_file` | Find & replace (точное совпадение) |
258
+ | `list_dir` | Список директории |
259
+ | `create_dir` | Рекурсивное создание директории |
260
+ | `delete_file` | Удаление файла/директории |
261
+ | `copy_file` | Копирование |
262
+ | `move_file` | Перемещение/переименование |
263
+ | `file_info` | Метаданные файла |
264
+ | `glob_search` | Поиск по паттерну |
265
+ | `grep_search` | Поиск по содержимому (regex) |
266
+ | `tree` | Дерево директорий |
267
+ | `bash` | Выполнение команд (npm, git, docker) |
268
+
269
+ ## Индексация проекта
270
+
271
+ Агент автоматически строит карту проекта и индекс кода:
272
+
273
+ ```bash
274
+ # Вручную перестроить
275
+ /build index rebuild
276
+ /build project-map
277
+ ```
278
+
279
+ ## Работа с сессиями
280
+
281
+ ```bash
282
+ # Автосохранение при выходе
283
+ /save my-session-name
284
+
285
+ # Список сессий
286
+ /sessions
287
+
288
+ # Восстановить
289
+ /resume my-session-name
290
+ ```
291
+
292
+ ## Разработка
293
+
294
+ ```bash
295
+ npm run build # Компиляция TypeScript
296
+ npm run dev # Watch-режим
297
+ npm test # Тесты
298
+ npm run test:all # Все тесты
299
+ npm run test:watch # vitest watch
300
+ ```
301
+
302
+ ### Публикация новой версии
303
+
304
+ ```bash
305
+ npm version patch # или minor, major
306
+ npm publish
307
+ ```
308
+
309
+ ## Лицензия
310
+
311
+ MIT
@@ -0,0 +1,18 @@
1
+ import type { ChatMessage } from '../llm/provider.js';
2
+ export declare class ContextManager {
3
+ private contextWindow;
4
+ private compactThreshold;
5
+ private tokenCache;
6
+ private compacted;
7
+ private _totalTokens;
8
+ private _history;
9
+ constructor(contextWindow: number, compactThreshold?: number);
10
+ get totalTokens(): number;
11
+ get usagePercent(): number;
12
+ get needsCompact(): boolean;
13
+ private scoreMessage;
14
+ updateTokens(messages: ChatMessage[]): Promise<void>;
15
+ compact(messages: ChatMessage[]): ChatMessage[];
16
+ formatUsage(): string;
17
+ }
18
+ //# sourceMappingURL=context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/agent/context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAUtD,qBAAa,cAAc;IAOvB,OAAO,CAAC,aAAa;IACrB,OAAO,CAAC,gBAAgB;IAP1B,OAAO,CAAC,UAAU,CAAsC;IACxD,OAAO,CAAC,SAAS,CAAK;IACtB,OAAO,CAAC,YAAY,CAAK;IACzB,OAAO,CAAC,QAAQ,CAA0C;gBAGhD,aAAa,EAAE,MAAM,EACrB,gBAAgB,GAAE,MAAa;IAGzC,IAAI,WAAW,IAAI,MAAM,CAExB;IAED,IAAI,YAAY,IAAI,MAAM,CAEzB;IAED,IAAI,YAAY,IAAI,OAAO,CAE1B;IAED,OAAO,CAAC,YAAY;IA+Bd,YAAY,CAAC,QAAQ,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAe1D,OAAO,CAAC,QAAQ,EAAE,WAAW,EAAE,GAAG,WAAW,EAAE;IA0E/C,WAAW,IAAI,MAAM;CAmBtB"}
@@ -0,0 +1,155 @@
1
+ import { countTokens } from '../llm/token-counter.js';
2
+ import { getTheme } from '../styling/index.js';
3
+ export class ContextManager {
4
+ contextWindow;
5
+ compactThreshold;
6
+ tokenCache = new WeakMap();
7
+ compacted = 0;
8
+ _totalTokens = 0;
9
+ _history = [];
10
+ constructor(contextWindow, compactThreshold = 0.85) {
11
+ this.contextWindow = contextWindow;
12
+ this.compactThreshold = compactThreshold;
13
+ }
14
+ get totalTokens() {
15
+ return this._totalTokens;
16
+ }
17
+ get usagePercent() {
18
+ return (this._totalTokens / this.contextWindow) * 100;
19
+ }
20
+ get needsCompact() {
21
+ return this.usagePercent >= this.compactThreshold * 100;
22
+ }
23
+ scoreMessage(msg, index, total) {
24
+ let score = 50; // base
25
+ // Role-based scoring
26
+ if (msg.role === 'system')
27
+ score = 100;
28
+ else if (msg.role === 'tool') {
29
+ const content = msg.content || '';
30
+ if (content.includes('Error') || content.includes('error') || content.includes('FAIL'))
31
+ score = 90;
32
+ else if (content.includes('✓') || content.includes('success'))
33
+ score = 70;
34
+ else
35
+ score = 60;
36
+ }
37
+ else if (msg.role === 'user') {
38
+ const content = (msg.content || '').toLowerCase();
39
+ if (content.includes('decision') || content.includes('важно') || content.includes('critical'))
40
+ score = 85;
41
+ else if (content.includes('?'))
42
+ score = 65;
43
+ else
44
+ score = 60;
45
+ }
46
+ else if (msg.role === 'assistant') {
47
+ const content = (msg.content || '').toLowerCase();
48
+ if (content.includes('error') || content.includes('ошибка'))
49
+ score = 75;
50
+ else if (content.includes(' decided ') || content.includes('решено'))
51
+ score = 70;
52
+ else
53
+ score = 40;
54
+ }
55
+ // Recency bonus (more recent = higher)
56
+ const recencyBonus = (index / total) * 20;
57
+ score += recencyBonus;
58
+ return score;
59
+ }
60
+ async updateTokens(messages) {
61
+ let total = 0;
62
+ this._history = [];
63
+ for (const msg of messages) {
64
+ let t = this.tokenCache.get(msg);
65
+ if (t === undefined) {
66
+ t = await countTokens(msg.content || '');
67
+ this.tokenCache.set(msg, t);
68
+ }
69
+ total += t;
70
+ this._history.push({ role: msg.role, tokens: t });
71
+ }
72
+ this._totalTokens = total;
73
+ }
74
+ compact(messages) {
75
+ if (messages.length <= 4)
76
+ return messages;
77
+ const systemIdx = messages.findIndex(m => m.role === 'system');
78
+ const system = systemIdx >= 0 ? [messages[systemIdx]] : [];
79
+ const keepFirstUser = [];
80
+ const remaining = [];
81
+ for (let i = 0; i < messages.length; i++) {
82
+ if (systemIdx === i)
83
+ continue;
84
+ if (keepFirstUser.length === 0 && messages[i].role === 'user') {
85
+ keepFirstUser.push(messages[i]);
86
+ }
87
+ else {
88
+ remaining.push(messages[i]);
89
+ }
90
+ }
91
+ // Score all messages
92
+ const scored = remaining.map((msg, i) => ({
93
+ msg,
94
+ score: this.scoreMessage(msg, i, remaining.length),
95
+ tokens: this.tokenCache.get(msg) || 0,
96
+ }));
97
+ // Sort by score descending
98
+ scored.sort((a, b) => b.score - a.score);
99
+ // Keep top 6 by score + last 6 by position
100
+ const recentMsgs = remaining.slice(-6);
101
+ const recentIds = new Set(recentMsgs.map(m => m));
102
+ const importantByScore = scored
103
+ .filter(s => !recentIds.has(s.msg))
104
+ .slice(0, 6)
105
+ .map(s => s.msg);
106
+ const toCompact = remaining.filter(m => !recentMsgs.includes(m) && !importantByScore.includes(m));
107
+ if (toCompact.length === 0)
108
+ return messages;
109
+ const compactedPairs = [];
110
+ let i = 0;
111
+ while (i < toCompact.length) {
112
+ const user = toCompact[i];
113
+ const assistant = i + 1 < toCompact.length ? toCompact[i + 1] : null;
114
+ if (user.role === 'user' && assistant?.role === 'assistant') {
115
+ const preview = assistant.content.slice(0, 200).replace(/\n/g, ' ');
116
+ compactedPairs.push(`User: ${user.content.slice(0, 100)}... → ${preview}...`);
117
+ i += 2;
118
+ }
119
+ else {
120
+ compactedPairs.push(`[${toCompact[i].role}]: ${toCompact[i].content.slice(0, 100)}...`);
121
+ i++;
122
+ }
123
+ }
124
+ let summary = `[Ранее в разговоре (сжато):\n${compactedPairs.join('\n')}\n]`;
125
+ if (summary.length > 2000) {
126
+ summary = summary.slice(0, 2000) + '\n...]';
127
+ }
128
+ this.compacted++;
129
+ this.tokenCache = new WeakMap();
130
+ return [
131
+ ...system,
132
+ ...keepFirstUser,
133
+ { role: 'system', content: summary },
134
+ ...importantByScore,
135
+ ...recentMsgs,
136
+ ];
137
+ }
138
+ formatUsage() {
139
+ const theme = getTheme();
140
+ const pct = this.usagePercent;
141
+ const barLen = 20;
142
+ const bar = theme.contextBar(pct, barLen);
143
+ const roleTokens = {};
144
+ for (const h of this._history) {
145
+ roleTokens[h.role] = (roleTokens[h.role] || 0) + h.tokens;
146
+ }
147
+ const breakdown = Object.entries(roleTokens)
148
+ .map(([role, tokens]) => `${theme.dim(role)}:${tokens}`)
149
+ .join(' ');
150
+ return `Context: ${theme.highlight(this._totalTokens.toLocaleString())} / ${this.contextWindow.toLocaleString()} tokens (${pct.toFixed(0)}%) ${theme.bracket(`compacted:${this.compacted}`)}
151
+ ${bar}
152
+ tokens: ${breakdown}`;
153
+ }
154
+ }
155
+ //# sourceMappingURL=context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/agent/context.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import type { LLMProvider, ChatMessage } from '../llm/provider.js';
2
+ import { ToolRegistry } from '../tools/registry.js';
3
+ import { ContextManager } from './context.js';
4
+ import type { OutputRenderer } from '../ui/renderer.js';
5
+ export interface AgentLoopResult {
6
+ messages: ChatMessage[];
7
+ questionPending?: {
8
+ question: string;
9
+ choices?: string[];
10
+ };
11
+ }
12
+ export declare function runAgentLoop(provider: LLMProvider, registry: ToolRegistry, prompt: string, contextManager?: ContextManager, previousMessages?: ChatMessage[], renderer?: OutputRenderer, providerName?: string, options?: {
13
+ quiet?: boolean;
14
+ }): Promise<AgentLoopResult>;
15
+ //# sourceMappingURL=loop.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loop.d.ts","sourceRoot":"","sources":["../../src/agent/loop.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEpD,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAU9C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AA6MxD,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,eAAe,CAAC,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;CAC5D;AAED,wBAAsB,YAAY,CAChC,QAAQ,EAAE,WAAW,EACrB,QAAQ,EAAE,YAAY,EACtB,MAAM,EAAE,MAAM,EACd,cAAc,CAAC,EAAE,cAAc,EAC/B,gBAAgB,CAAC,EAAE,WAAW,EAAE,EAChC,QAAQ,CAAC,EAAE,cAAc,EACzB,YAAY,CAAC,EAAE,MAAM,EACrB,OAAO,CAAC,EAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,GAC5B,OAAO,CAAC,eAAe,CAAC,CA4Y1B"}