micro-models-agent 0.7.2 → 0.7.3

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.
package/README.md CHANGED
@@ -3,120 +3,131 @@
3
3
  [![npm version](https://img.shields.io/npm/v/micro-models-agent)](https://www.npmjs.com/package/micro-models-agent)
4
4
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)
5
5
 
6
- **MMA** — modular AI coding agent harness designed for **small local language models** (9B params, 32K–64K context). Runs on your laptop, no cloud API needed.
6
+ **MMA** — модульный AI-coding агент, оптимизированный для **небольших локальных языковых моделей** (9B параметров, 32K–64K контекст). Работает на ноутбуке, облачное API не требуется.
7
7
 
8
8
  ```bash
9
9
  npm install -g micro-models-agent
10
- mma "refactor the auth module to use JWT"
10
+ mma "перепиши модуль авторизации на JWT"
11
11
  ```
12
12
 
13
- Built for and tested with [Qwen3.5-9B](https://qwen.readthedocs.io/) via LM Studio / Ollama / llama.cpp.
13
+ Создан и протестирован с [Qwen3.5-9B](https://qwen.readthedocs.io/) через LM Studio / Ollama / llama.cpp.
14
14
 
15
15
  ---
16
16
 
17
- ## Why MMA?
17
+ ## Зачем MMA?
18
18
 
19
- Most AI coding agents (Devin, Cursor, Copilot) depend on massive cloud models or expensive APIs. MMA is built differently:
19
+ Большинство AI-агентов для кода (Devin, Cursor, Copilot) завязаны на облачные модели или дорогие API. MMA работает иначе:
20
20
 
21
- - **Designed for 9B models** — optimized for Qwen3.5-9B running locally on consumer hardware
22
- - **No cloud dependency** — works fully offline with any OpenAI-compatible backend
23
- - **Survives small context windows** — sophisticated sliding-window compaction keeps 32K models productive
24
- - **Catches hallucinations** — 3-stage validation pipeline catches the confabulations small models are prone to
25
- - **Agent-Level MoE** — hierarchical task decomposition so small models handle complex multi-step work
21
+ - **Создан для моделей 9B** — оптимизирован под Qwen3.5-9B на обычном железе
22
+ - **Не требует облака** — полностью работает офлайн с любым OpenAI-совместимым бэкендом
23
+ - **Выживает в узком контексте** — умное sliding-window compaction держит 32K-модели продуктивными
24
+ - **Отлавливает галлюцинации** — 3-стадийный пайплайн валидации ловит выдумки, к которым склонны маленькие модели
25
+ - **Agent-Level MoE** — иерархическая декомпозиция задач: маленькие модели справляются со сложной многошаговой работой
26
26
 
27
27
  ---
28
28
 
29
- ## Features
30
-
31
- - **6-state agent loop** (INIT → THINK → ACT → OBSERVE → OUTPUT → ERROR) — clean, predictable, debuggable
32
- - **Context budget management** — dynamic per-model budget, sliding-window compaction with fact/decision/error extraction
33
- - **Hallucination detection** — factual (file paths), consistency (decision reversals), confidence (short/repetitive responses)
34
- - **Execution guarantees** — auto-planning via LLM (no keyword heuristics), stuck detection, off-track warnings, plan auto-advance
35
- - **Agent-Level MoE** — Router + Expert sub-agents with filtered tools, isolated context, file scope, and topological parallel execution
36
- - **20+ tools** — filesystem, shell, web search/fetch, browser (Playwright), planning, interaction, subagent, MCP, pipelines
37
- - **13 modules** — skills, plugins, MCP client, pipelines, project indexer, persistent memory, context, sessions, browser, execution, hallucination detection, updater, user profile
38
- - **MCP client** — connect to any MCP server (stdio or SSE)
39
- - **YAML pipelines** — DAG-based workflow engine with parallel waves, dependencies, and retries
40
- - **Multi-session management** — persistent JSONL sessions with REPL commands
41
- - **Project map** — automatic file walker + export extraction + disk cache
42
- - **i18n** — all user-facing strings via `t()`, English and Russian included
43
- - **8K–120K context** — adapts to any model's context window
44
- - **No TUI** — minimal CLI + REPL with markdown-to-ANSI formatting
45
- - **llama.cpp / Jinja proven** — battle-tested against Jinja template edge cases (system-first, streaming fallback, explicit `stream: false`)
29
+ ## Возможности
30
+
31
+ - **6-состояний цикл агента** (INIT → THINK → ACT → OBSERVE → OUTPUT → ERROR) — чистый, предсказуемый, отлаживаемый
32
+ - **Управление бюджетом контекста** — динамический бюджет под модель, sliding-window compaction с извлечением фактов/решений/ошибок
33
+ - **Детекция галлюцинаций** — фактическая (пути файлов), согласованности (откат решений), уверенности (короткие/повторяющиеся ответы)
34
+ - **Гарантии выполнения** — авто-планирование через LLM (без keyword-эвристик), stuck-detection, off-track предупреждения, авто-продвижение плана
35
+ - **Agent-Level MoE** — Router + экспертные сабагенты с фильтрацией инструментов, изолированным контекстом, файловым скоупом и топологическим параллельным выполнением
36
+ - **20+ инструментов** — файловая система, шелл, веб-поиск/fetch, браузер (Playwright), планирование, взаимодействие, сабагенты, MCP, пайплайны
37
+ - **13 модулей** — скиллы, плагины, MCP-клиент, пайплайны, indexer проекта, постоянная память, контекст, сессии, браузер, выполнение, детекция галлюцинаций, апдейтер, профиль пользователя
38
+ - **MCP-клиент** — подключение к любому MCP-серверу (stdio или SSE)
39
+ - **YAML-пайплайны** — DAG-движок с параллельными волнами, зависимостями и повторными попытками
40
+ - **Управление сессиями** — постоянные JSONL-сессии с REPL-командами
41
+ - **Карта проекта** — автоматический обход файлов + извлечение экспортов + дисковый кэш
42
+ - **i18n** — все строки интерфейса через `t()`, включены английский и русский
43
+ - **8K–120K контекст** — адаптируется под любое контекстное окно модели
44
+ - **Без TUI** — минимальный CLI + REPL с markdown→ANSI форматированием
45
+ - **llama.cpp / Jinja proven** — проверено на граничных случаях Jinja-шаблонов (system-first, streaming fallback, явный `stream: false`)
46
46
 
47
47
  ---
48
48
 
49
- ## Installation
49
+ ## Установка
50
50
 
51
- ### Prerequisites
51
+ ### Требования
52
52
 
53
- - **Runtime:** [Bun](https://bun.sh) (recommended) or Node.js ≥ 20
54
- - **LLM backend:** Any OpenAI-compatible server (LM Studio, Ollama, vLLM, llama.cpp, Together AI)
53
+ - **Среда выполнения:** [Bun](https://bun.sh) (рекомендуется) или Node.js ≥ 20
54
+ - **LLM-бэкенд:** Любой OpenAI-совместимый сервер (LM Studio, Ollama, vLLM, llama.cpp, Together AI)
55
55
 
56
- ### From npm
56
+ ### Через npm (рекомендуется)
57
57
 
58
58
  ```bash
59
- npm install -g micro-models-agent
59
+ npm install -g micro-models-agent@latest
60
+ ```
61
+
62
+ После установки команда `mma` будет доступна в терминале. Если после установки `mma` не находится — попробуйте переоткрыть терминал или выполните:
63
+
64
+ ```bash
65
+ # PowerShell
66
+ npm uninstall -g micro-models-agent
67
+ npm install -g micro-models-agent@latest
68
+
69
+ # Проверка
70
+ mma --version
60
71
  ```
61
72
 
62
- ### From source
73
+ ### Из исходников
63
74
 
64
75
  ```bash
65
76
  git clone https://github.com/your-org/micro-models-agent
66
77
  cd micro-models-agent
67
78
  bun install
68
- bun run build
79
+ bun run build:prod
69
80
  ```
70
81
 
71
82
  ---
72
83
 
73
- ## Quick Start
84
+ ## Быстрый старт
74
85
 
75
- ### 1. Start your LLM backend
86
+ ### 1. Запустите LLM-бэкенд
76
87
 
77
- Point MMA to any OpenAI-compatible endpoint. Example with LM Studio:
88
+ Направьте MMA на любой OpenAI-совместимый эндпоинт. Пример с LM Studio:
78
89
 
79
90
  ```bash
80
- # LM Studio listens on http://localhost:1234 by default
91
+ # LM Studio слушает http://localhost:1234 по умолчанию
81
92
  ```
82
93
 
83
- ### 2. Run the setup wizard
94
+ ### 2. Запустите мастер настройки
84
95
 
85
96
  ```bash
86
97
  bun run mma init
87
98
  ```
88
99
 
89
- Scans local ports, finds your model, tests the connection, and writes config.
100
+ Сканирует локальные порты, находит модель, тестирует соединение и записывает конфиг.
90
101
 
91
- ### 3. Use the agent
102
+ ### 3. Используйте агента
92
103
 
93
104
  ```bash
94
- # One-shot mode
95
- bun run mma "create a REST API with Express and add tests"
105
+ # Одноразовый режим
106
+ bun run mma "создай REST API на Express и добавь тесты"
96
107
 
97
- # Interactive REPL
108
+ # Интерактивный REPL
98
109
  bun run dev
99
110
  ```
100
111
 
101
112
  ---
102
113
 
103
- ## Usage
114
+ ## Использование
104
115
 
105
116
  ### CLI
106
117
 
107
118
  ```bash
108
119
  bun run mma "<prompt>"
109
120
 
110
- # Subcommands
111
- bun run mma init # Interactive setup wizard
121
+ # Подкоманды
122
+ bun run mma init # Интерактивный мастер настройки
112
123
  bun run mma config set model qwen3.5-9b
113
124
  bun run mma config show
114
- bun run mma model list # List available models
115
- bun run mma model use qwen3.5-9b # Switch model
116
- bun run mma provider list # List configured providers
117
- bun run mma session list # List sessions
118
- bun run mma session show <id> # Show session details
119
- bun run mma session delete <id> # Delete a session
125
+ bun run mma model list # Список доступных моделей
126
+ bun run mma model use qwen3.5-9b # Переключить модель
127
+ bun run mma provider list # Список провайдеров
128
+ bun run mma session list # Список сессий
129
+ bun run mma session show <id> # Детали сессии
130
+ bun run mma session delete <id> # Удалить сессию
120
131
  ```
121
132
 
122
133
  ### REPL
@@ -125,46 +136,46 @@ bun run mma session delete <id> # Delete a session
125
136
  bun run dev
126
137
  ```
127
138
 
128
- | Command | Aliases | Description |
129
- |---------|---------|-------------|
130
- | `/help` | | Show help |
131
- | `/sessions` | `/ls` | List all sessions (* = active) |
132
- | `/new <name>` | `/create` | Create a new session |
133
- | `/resume <id\|name>` | `/switch`, `/use` | Switch to a session |
134
- | `/rename <name>` | | Rename current session |
135
- | `/delete <id>` | `/rm` | Delete a session |
136
- | `/config set <key> <value>` | | Set a config value |
137
- | `/exit` | | Exit REPL |
139
+ | Команда | Алиасы | Описание |
140
+ |---------|--------|----------|
141
+ | `/help` | | Показать справку |
142
+ | `/sessions` | `/ls` | Список сессий (* = активная) |
143
+ | `/new <name>` | `/create` | Создать новую сессию |
144
+ | `/resume <id\|name>` | `/switch`, `/use` | Переключиться на сессию |
145
+ | `/rename <name>` | | Переименовать текущую сессию |
146
+ | `/delete <id>` | `/rm` | Удалить сессию |
147
+ | `/config set <key> <value>` | | Установить значение конфига |
148
+ | `/exit` | | Выйти из REPL |
138
149
 
139
- ### Development
150
+ ### Разработка
140
151
 
141
152
  ```bash
142
- bun run mma "fix the login page" # Run agent
143
- bun run dev # Watch mode (auto-restart on changes)
144
- bun run build # TypeScript build
145
- bun test # Run tests
146
- tsc --noEmit # Type-check
153
+ bun run mma "почини страницу логина" # Запуск агента
154
+ bun run dev # Watch-режим (авто-перезапуск при изменениях)
155
+ bun run build:prod # Сборка для публикации
156
+ bun test # Запуск тестов
157
+ bun run typecheck # Проверка типов
147
158
  ```
148
159
 
149
160
  ---
150
161
 
151
- ## Configuration
162
+ ## Конфигурация
152
163
 
153
- 3-layer config: `defaults.ts` → `~/.mma/config.json` (global) → `.mmrc` (project) + env vars.
164
+ 3-слойный конфиг: `defaults.ts` → `~/.mma/config.json` (глобальный) → `.mmrc` (проект) + переменные окружения.
154
165
 
155
- Key options (see `src/config/defaults.ts` for full list):
166
+ Ключевые опции (полный список в `src/config/defaults.ts`):
156
167
 
157
- | Option | Default | Description |
158
- |--------|---------|-------------|
159
- | `model` | `qwen3.5-9b` | Model name sent to backend |
160
- | `provider.baseUrl` | `http://localhost:1234/v1` | OpenAI-compatible API URL |
161
- | `contextWindow` | `32768` | Model's context window in tokens |
162
- | `autoPlan` | `true` | Auto-create plans for multi-step tasks |
163
- | `maxToolIterations` | `25` | Max tool calls per agent run |
164
- | `stuckThreshold` | `8` | Iterations without progress before stuck detection |
165
- | `moe.enabled` | `false` | Enable Agent-Level MoE |
166
- | `locale` | `en` | UI locale (`en` / `ru`) |
167
- | `logLevel` | `info` | Log level |
168
+ | Опция | По умолчанию | Описание |
169
+ |-------|-------------|----------|
170
+ | `model` | `qwen3.5-9b` | Имя модели для бэкенда |
171
+ | `provider.baseUrl` | `http://localhost:1234/v1` | URL OpenAI-совместимого API |
172
+ | `contextWindow` | `32768` | Контекстное окно модели в токенах |
173
+ | `autoPlan` | `true` | Авто-создание планов для многошаговых задач |
174
+ | `maxToolIterations` | `25` | Макс. вызовов инструментов за запуск |
175
+ | `stuckThreshold` | `8` | Итераций без прогресса до stuck-detection |
176
+ | `moe.enabled` | `false` | Включить Agent-Level MoE |
177
+ | `locale` | `en` | Язык интерфейса (`en` / `ru`) |
178
+ | `logLevel` | `info` | Уровень логирования |
168
179
 
169
180
  ### Agent-Level MoE
170
181
 
@@ -185,7 +196,7 @@ Key options (see `src/config/defaults.ts` for full list):
185
196
 
186
197
  ---
187
198
 
188
- ## Architecture
199
+ ## Архитектура
189
200
 
190
201
  ```
191
202
  CLI (main.ts → commands.ts / repl.ts / setup.ts)
@@ -196,91 +207,106 @@ CLI (main.ts → commands.ts / repl.ts / setup.ts)
196
207
  hallucination, execution, updater, user-profile, browser)
197
208
  ```
198
209
 
199
- ### Project Structure
210
+ ### Структура проекта
200
211
 
201
212
  ```
202
213
  src/
203
- ├── core/ # Agent loop, prompt builder, types
204
- ├── llm/ # Provider abstraction, OpenAI-compat, streaming, token counting
205
- ├── tools/ # 20+ tools with registry, executor, scope guards
206
- ├── modules/ # 13 modules (skills, plugins, mcp, pipelines, indexer, memory, context, session, hallucination, execution, updater, user-profile, browser)
207
- ├── cli/ # Entry point, commands, REPL, setup wizard
208
- ├── config/ # 3-layer config: defaults → global → project
209
- ├── i18n/ # en.json + ru.json + t() function
210
- ├── ui/ # Markdown→ANSI formatter
211
- └── logger/ # Structured logger with levels + child loggers
214
+ ├── core/ # Цикл агента, сборщик промптов, типы
215
+ ├── llm/ # Абстракция провайдера, OpenAI-совместимость, стриминг, подсчёт токенов
216
+ ├── tools/ # 20+ инструментов с реестром, исполнителем, скоуп-гардами
217
+ ├── modules/ # 13 модулей (скиллы, плагины, mcp, пайплайны, indexer, память, контекст, сессии, галлюцинации, выполнение, апдейтер, профиль, браузер)
218
+ ├── cli/ # Точка входа, команды, REPL, мастер настройки
219
+ ├── config/ # 3-слойный конфиг: defaults → глобальный → проект
220
+ ├── i18n/ # en.json + ru.json + t()
221
+ ├── ui/ # Markdown→ANSI форматтер
222
+ └── logger/ # Структурированный логгер с уровнями и дочерними логгерами
212
223
  ```
213
224
 
214
225
  ---
215
226
 
216
- ## Tool Reference
217
-
218
- | Tool | Description |
219
- |------|-------------|
220
- | `read_file` | Read file with offset/limit |
221
- | `write_file` | Create/overwrite with directory creation |
222
- | `edit_file` | Find-replace in existing files |
223
- | `glob` | Glob pattern matching |
224
- | `grep` | Regex content search via ripgrep |
225
- | `list_dir` | List directory contents |
226
- | `create_dir` | Create directory (recursive) |
227
- | `delete_file` | Delete file or empty directory |
228
- | `move_file` | Move/rename file or directory |
229
- | `file_info` | File/directory metadata |
230
- | `bash` | Shell command execution |
231
- | `subagent` | Isolated sub-agent with scope |
232
- | `web_search` | Web search |
233
- | `web_fetch` | Web page fetch (15K chars, 15s timeout) |
234
- | `web_browse` | Playwright browser (click, type, scroll, screenshot) |
235
- | `plan` | Create/update/cancel plans |
236
- | `todo` | Track todo items |
237
- | `question` | Ask user for input |
238
- | `approve` | Request user approval |
239
- | `load_skill` | Load a skill at runtime |
240
- | `pipeline_run` | Execute a YAML pipeline |
241
- | `mcp_call` | Call an MCP server tool |
242
- | `search_history` | Search session history |
243
- | `project_map` | Query project index (summary, refresh, find) |
227
+ ## Инструменты
228
+
229
+ | Инструмент | Описание |
230
+ |------------|----------|
231
+ | `read_file` | Чтение файла с offset/limit |
232
+ | `write_file` | Создание/перезапись с созданием директорий |
233
+ | `edit_file` | Поиск-и-замена в существующих файлах |
234
+ | `glob` | Поиск по glob-паттернам |
235
+ | `grep` | Поиск по содержимому через ripgrep |
236
+ | `list_dir` | Список содержимого директории |
237
+ | `create_dir` | Создание директории (рекурсивно) |
238
+ | `delete_file` | Удаление файла или пустой директории |
239
+ | `move_file` | Перемещение/переименование файла или директории |
240
+ | `file_info` | Метаданные файла/директории |
241
+ | `bash` | Выполнение shell-команд |
242
+ | `subagent` | Изолированный сабагент со скоупом |
243
+ | `web_search` | Поиск в интернете |
244
+ | `web_fetch` | Загрузка веб-страницы (15K символов, 15s таймаут) |
245
+ | `web_browse` | Браузер на Playwright (клик, ввод, скролл, скриншот) |
246
+ | `plan` | Создание/обновление/отмена планов |
247
+ | `todo` | Отслеживание задач |
248
+ | `question` | Задать вопрос пользователю |
249
+ | `approve` | Запросить подтверждение пользователя |
250
+ | `load_skill` | Загрузить скилл во время выполнения |
251
+ | `pipeline_run` | Выполнить YAML-пайплайн |
252
+ | `mcp_call` | Вызвать инструмент MCP-сервера |
253
+ | `search_history` | Поиск по истории сессий |
254
+ | `project_map` | Запрос карты проекта (summary, refresh, find) |
244
255
 
245
256
  ---
246
257
 
247
- ## Testing
258
+ ## Тестирование
248
259
 
249
260
  ```bash
250
- bun test # Unit + component tests
251
- bun test tests/agent.test.ts # Single file
252
- bun run test:integration # Integration tests (requires LLM backend)
253
- tsc --noEmit # Type-check
261
+ bun test # Модульные + компонентные тесты
262
+ bun test tests/agent.test.ts # Один файл
263
+ bun run test:integration # Интеграционные тесты (требуют LLM-бэкенд)
264
+ bun run typecheck # Проверка типов
254
265
  ```
255
266
 
267
+ ### Тестирование агента из консоли (agent-driven)
268
+
269
+ MMA можно тестировать в одноразовом headless-режиме без интерактивного REPL — это удобно для проверки фич и регрессий из терминала или другим агентом:
270
+
271
+ ```bash
272
+ # Одноразовый прогон: без AGENTS.md, выход сразу после ответа, песочница
273
+ bun run mma "<промпт>" --no-agents-md --exit-on-complete -d <путь-к-песочнице>
274
+ ```
275
+
276
+ - **Песочница** — всегда внутри `_testing/` в корне проекта (например `_testing/<case-name>/`), никогда в корне или в `src/`. Папка `_testing/` добавлена в `.gitignore`.
277
+ - **`--no-agents-md`** — не грузить AGENTS.md проекта в системный промпт (чистая среда).
278
+ - **`--exit-on-complete`** — выйти сразу после первого финального ответа; интерактивные тулзы (`question`/`approve`) не блокируют stdin, а возвращают ошибку.
279
+ - **`-d <dir>`** — рабочая директория агента (туда он создаёт файлы).
280
+ - Каждый прогон сохраняется в сессию `~/.mma/sessions/<id>/` — можно посмотреть через `bun run mma session list` / `session show <id>`.
281
+
256
282
  ---
257
283
 
258
- ## Design Principles
284
+ ## Принципы дизайна
259
285
 
260
- 1. **No file >300 lines** — split when approaching limit
261
- 2. **Small files, single responsibility** — each file does one thing
262
- 3. **KISS state machine** — no god objects, no if-else nesting in agent loop
263
- 4. **Plugin error isolation** — one plugin crash never stops others
264
- 5. **Path safety** — all filesystem tools check `targetPath.startsWith(baseDir)`
265
- 6. **TDD** — write test first, then implement, then commit
266
- 7. **No hardcoded user-facing strings** — all text through `t()` i18n function
267
- 8. **No keyword matching** — LLM decides when to plan, not heuristics
268
- 9. **No TUI** — minimal CLI + REPL with markdown→ANSI
286
+ 1. **Ни одного файла >300 строк** — разделяй при приближении к лимиту
287
+ 2. **Маленькие файлы, одна ответственность** — каждый файл делает одно дело
288
+ 3. **KISS state machine** — никаких god-объектов, никакой вложенности if-else в цикле агента
289
+ 4. **Изоляция ошибок плагинов** — падение одного плагина не останавливает другие
290
+ 5. **Безопасность путей** — все файловые инструменты проверяют `targetPath.startsWith(baseDir)`
291
+ 6. **TDD** — сначала тест, потом реализация, потом коммит
292
+ 7. **Никаких захардкоженных строк** — весь текст через `t()` i18n
293
+ 8. **Никакого keyword matching** — LLM решает когда планировать, не эвристики
294
+ 9. **Без TUI** — минимальный CLI + REPL с markdown→ANSI
269
295
 
270
296
  ---
271
297
 
272
- ## License
298
+ ## Лицензия
273
299
 
274
300
  MIT
275
301
 
276
302
  ---
277
303
 
278
- ## Acknowledgments
304
+ ## Благодарности
279
305
 
280
- - [Qwen3.5-9B](https://qwen.readthedocs.io/) — the primary target model
281
- - [LM Studio](https://lmstudio.ai/) — recommended local inference server
282
- - [llama.cpp](https://github.com/ggerganov/llama.cpp) — the inference engine
306
+ - [Qwen3.5-9B](https://qwen.readthedocs.io/) — основная целевая модель
307
+ - [LM Studio](https://lmstudio.ai/) — рекомендуемый локальный инференс-сервер
308
+ - [llama.cpp](https://github.com/ggerganov/llama.cpp) — инференс-движок
283
309
 
284
310
  ---
285
311
 
286
- **Made for local models. Runs everywhere.**
312
+ **Сделано для локальных моделей. Работает везде.**
@@ -0,0 +1,36 @@
1
+ ---
2
+ name: git-expert
3
+ description: Git branching, merge conflicts, rebasing, workflow strategies
4
+ keywords: [git, branch, merge, rebase, commit, conflict, workflow]
5
+ mma_version: 2
6
+ ---
7
+
8
+ # Git Expert
9
+
10
+ ## Branching Strategies
11
+
12
+ - **Feature branches**: `feature/xxx` from `main`, merge via PR
13
+ - **Hotfix**: `hotfix/xxx` from `main`, merge to both `main` and `develop`
14
+ - **Release**: `release/xxx` from `develop`, merge to `main` + `develop`
15
+
16
+ ## Conflict Resolution
17
+
18
+ 1. `git fetch origin` — get latest
19
+ 2. `git checkout your-branch`
20
+ 3. `git rebase origin/main` — apply your commits on top
21
+ 4. Resolve conflicts file by file
22
+ 5. `git add <files>` then `git rebase --continue`
23
+
24
+ ## Useful Commands
25
+
26
+ - `git log --oneline --graph --all` — visualize history
27
+ - `git diff --stat` — summary of changes
28
+ - `git stash pop` — restore stashed changes
29
+ - `git cherry-pick <commit>` — apply specific commit
30
+
31
+ ## Best Practices
32
+
33
+ - Commit often with clear messages
34
+ - Keep commits atomic (one logical change)
35
+ - Never force push to shared branches
36
+ - Use `git rebase -i` to clean up before PR
@@ -0,0 +1,35 @@
1
+ ---
2
+ name: typescript-expert
3
+ description: TypeScript type system, generics, advanced patterns, compiler API
4
+ keywords: [typescript, types, generics, tsconfig, compiler, interface, type]
5
+ mma_version: 2
6
+ ---
7
+
8
+ # TypeScript Expert
9
+
10
+ ## Key Patterns
11
+
12
+ - Use `readonly` for immutable properties
13
+ - Prefer `interface` over `type` for object shapes
14
+ - Use `as const` for literal types
15
+ - Prefer `unknown` over `any` for type safety
16
+
17
+ ## Common Pitfalls
18
+
19
+ - Avoid `any` — use `unknown` + type guards
20
+ - Don't use `enum` — use `const` objects or union types
21
+ - Avoid `namespace` — use ES modules
22
+
23
+ ## Type Guards
24
+
25
+ ```ts
26
+ function isString(val: unknown): val is string {
27
+ return typeof val === 'string'
28
+ }
29
+ ```
30
+
31
+ ## Generics
32
+
33
+ - Use `extends` for constraints
34
+ - Use `infer` for conditional type extraction
35
+ - Prefer explicit over implicit for complex cases
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "micro-models-agent",
3
- "version": "0.7.2",
3
+ "version": "0.7.3",
4
4
  "description": "Micro Models Agent (MMA) — LLM agent harness for small models (Qwen3.5-9B, 32K-64K context)",
5
5
  "type": "module",
6
6
  "bin": {