micro-models-agent 1.5.0 → 1.7.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.
package/CHANGELOG.md CHANGED
@@ -4,6 +4,40 @@ All notable changes to Micro Models Agent (MMA) will be documented in this file.
4
4
 
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/), and this project adheres to [Semantic Versioning](https://semver.org/).
6
6
 
7
+ ## [1.7.0] - 2026-09-22
8
+
9
+ ### Added
10
+
11
+ - **Model capability resolution** (`src/modules/providers/capabilities.ts`, `src/config/types.ts`): a single source of truth for a model's `vision`/`tools` abilities, merged from user override (`config.modelCapabilities[model]`) → live native probe (LM Studio `/api/v1/models` `capabilities`, read by `probeModel` in `src/llm/model-loader.ts`) → provider preset. Exposed to tools via the live `ToolContext.capabilities` getter.
12
+ - **First-class tool image channel** (`src/tools/types.ts` `ToolResult.images`, `src/core/agent/tool-images.ts`): tools can return images; the agent loop queues them onto the next user message (`queueToolImages`), keeping `role:"tool"` content text-only and portable.
13
+
14
+ ### Fixed
15
+
16
+ - **Vision misdetection for non-`-vl` models** (`src/tools/browser.ts`): the `qwen3.5-9b`-style models report `vision: true` in LM Studio but the name-based `modelSupportsVision` heuristic returned `false`, so screenshots were silently downgraded to a text notice. Name matching is removed; the browser tool now reads `ctx.capabilities.vision`.
17
+ - **Browser screenshots never reached the model** (`src/tools/browser.ts`): screenshots were embedded as base64 text inside the `role:"tool"` output, which backends never decode and the budget truncates. They are now delivered as `image_url` parts; text-only models get the snapshot instead.
18
+
19
+ ### Changed
20
+
21
+ - **Browser module prompt** (`src/modules/browser/module.ts`): no longer asks the model to self-assess vision support — screenshot delivery is automatic.
22
+
23
+ ## [1.6.0] - 2026-09-22
24
+
25
+ ### Added
26
+
27
+ - **Tab completion descriptions & navigation** (`src/cli/completer.ts`, `src/ui/line-editor.ts`): completions carry descriptions, file-path completion is registered in the REPL, arrow keys/Tab cycle candidates, Esc restores.
28
+ - **`redactConfigSecrets`** (`src/config/redact.ts`): deep secret redaction for config display.
29
+
30
+ ### Fixed
31
+
32
+ - **Security-paths wizard answer** (`src/cli/setup.ts`, `src/cli/setup-order.ts`): the question was inverted and a no-op; reworded to restrict semantics and `security.paths.enabled` is now applied.
33
+ - **First-run wizard suppression** (`src/config/config.ts`, `src/cli/main.ts`): `loadConfig` no longer persists default config on first load; one-shot runs warn instead of silently using defaults.
34
+ - **`/wizard` dropped security answers and ignored `provider.entries[]`** (`src/cli/repl-commands.ts`, `src/cli/setup-order.ts`): applies answers centrally and updates the active entry.
35
+ - **`mma config show` leaked secrets** (`src/cli/commands.ts`): secrets redacted by default, `--show-secrets` opts out.
36
+
37
+ ### Changed
38
+
39
+ - **Chat UI: tool-label accent & separators** (`src/ui/theme.ts`, `src/ui/renderer.ts`, `docs/design/ui/STYLE.md`): the action glyph and the localized tool label now share the category color (`toolAccent`), and a dim `·` separates a status label from its content (reasoning label from reasoning text, tool label from arguments) — the rotating status verb no longer blurs into the model's own words. `Ctrl+O` reprint follows the same accent.
40
+
7
41
  ## [1.5.0] - 2026-09-21
8
42
 
9
43
  ### Added
package/dist/i18n/en.json CHANGED
@@ -273,7 +273,7 @@
273
273
  "cli.config_key": "Config key (e.g., model, provider.baseUrl)",
274
274
  "cli.set_value": "Set a config value",
275
275
  "cli.set_done": "Set {key}={value}",
276
- "cli.show_config": "Show current config",
276
+ "cli.show_config": "Show the effective configuration (secrets redacted; use --show-secrets to reveal)",
277
277
  "cli.migrate_config": "Migrate legacy config.json to domain format",
278
278
  "cli.manage_models": "Manage models",
279
279
  "cli.list_models": "List available models",
@@ -348,6 +348,7 @@
348
348
  "cli.show_details": "Show session details",
349
349
  "cli.delete_session": "Delete a session",
350
350
  "cli.first_run": "First run detected. Running setup wizard...",
351
+ "cli.first_run_oneshot": "No configuration found — running with defaults. Run `mma` (no arguments) once to set up the wizard.",
351
352
  "cli.setup_saved_restart": "Settings saved. Restarting with the new configuration...",
352
353
  "cli.unknown_cmd": "Unknown command: {name}.",
353
354
  "cli.unknown_command": "Unknown command \"{input}\". Did you mean \"{suggestion}\"?",
@@ -558,7 +559,7 @@
558
559
  "setup.security_configure": " Configure security? (y/N)",
559
560
  "setup.security_bash_block": " Block dangerous commands (rm, sudo, ssh, etc.)? (y/N)",
560
561
  "setup.security_flags_block": " Block dangerous flags (--force, -rf, etc.)? (y/N)",
561
- "setup.security_paths_deny": " Allow access to .git/, .env, node_modules/? (y/N)",
562
+ "setup.security_paths_restrict": " Restrict access to .git/, .env, node_modules/? (Y/n)",
562
563
  "skill.already_loaded": "Skill \"{name}\" is already loaded",
563
564
  "skill.not_found": "Skill \"{name}\" not found in any source directory",
564
565
  "skill.no_match": "No skills match for: {task}",
package/dist/i18n/ru.json CHANGED
@@ -271,7 +271,7 @@
271
271
  "cli.config_key": "Ключ конфига (напр., model, provider.baseUrl)",
272
272
  "cli.set_value": "Установить значение",
273
273
  "cli.set_done": "Установлено {key}={value}",
274
- "cli.show_config": "Показать текущий конфиг",
274
+ "cli.show_config": "Показать действующую конфигурацию (секреты скрыты; используйте --show-secrets)",
275
275
  "cli.migrate_config": "Мигрировать legacy config.json в domain-формат",
276
276
  "cli.manage_models": "Управление моделями",
277
277
  "cli.list_models": "Список доступных моделей",
@@ -342,6 +342,7 @@
342
342
  "cli.show_details": "Показать детали сессии",
343
343
  "cli.delete_session": "Удалить сессию",
344
344
  "cli.first_run": "Первый запуск. Запускаем мастер настройки...",
345
+ "cli.first_run_oneshot": "Конфигурация не найдена — запуск с настройками по умолчанию. Запустите `mma` без аргументов один раз для настройки.",
345
346
  "cli.setup_saved_restart": "Настройки сохранены. Перезапуск с новой конфигурацией...",
346
347
  "cli.unknown_cmd": "Неизвестная команда: {name}.",
347
348
  "cli.unknown_command": "Неизвестная команда \"{input}\". Возможно, вы имели в виду \"{suggestion}\"?",
@@ -556,7 +557,7 @@
556
557
  "setup.security_configure": " Настроить безопасность? (y/N)",
557
558
  "setup.security_bash_block": " Блокировать опасные команды (rm, sudo, ssh и т.д.)? (y/N)",
558
559
  "setup.security_flags_block": " Блокировать опасные флаги (--force, -rf и т.д.)? (y/N)",
559
- "setup.security_paths_deny": " Разрешить доступ к .git/, .env, node_modules/? (y/N)",
560
+ "setup.security_paths_restrict": " Ограничить доступ к .git/, .env, node_modules/? (Y/n)",
560
561
  "skill.already_loaded": "Скилл \"{name}\" уже загружен",
561
562
  "skill.not_found": "Скилл \"{name}\" не найден ни в одном каталоге",
562
563
  "skill.no_match": "Нет скиллов подходящих для: {task}",