Skip to content

0.76.0

Choose a tag to compare

@github-actions github-actions released this 25 Oct 19:23
· 30 commits to main since this release
Immutable release. Only release title and notes can be modified.
d8c2911

Исправлено

  • Сбой посреди команды теперь сообщается как любая другая ошибка. Раньше печаталась трассировка стека Node, теперь — ошибка internal_error (command.crashed): одна строка в терминале, JSON-объект ошибки в остальных случаях; код выхода по-прежнему 1.
    Почему: трассировка ничего не говорит скрипту и может вывести на экран текст, которому там не место.
    Что учесть: если скрипт разбирал трассировку в stderr, пусть читает объект ошибки.

Что нового

  • max doctor --json перечисляет все ошибки файла настроек в config.issues (cli-core 0.423.0). Каждая ошибка — { kind, file, profile?, key?, line?, column?, what, fix? }; kind — invalid_json, unknown_setting, unknown_permission, missing_setting или invalid_value. Для неверного JSON line и column показывают, где разбор остановился; для остальных fix — команда config unset, которая убирает ключ и выполняется как написана. Значение настройки в ответ не попадает. С ошибками в файле doctor отвечает и завершается с кодом 0, а без имени профиля отвечает с profile: null.
  • config show работает с файлом, в котором есть ошибки, и называет каждую с командой, которая её убирает. config unset удаляет и ключ, который не знает ни одна схема, в том числе в корне файла (max config unset <ключ>).
  • max skill status и max skill show --for claude|agents (cli-core 0.427.0). status говорит, совпадает ли установленный SKILL.md с этой версией; show --for печатает установленную копию.
  • max store tables list перечисляет таблицы общего архива, а store info показывает больше о файле (cli-core 0.427.0).
  • Запись запуска говорит, кто его начал и что пошло не так (cli-core 0.425.0). В run.json, runs list, runs show и search runs появились cli_command, argv (содержимое и секреты — [redacted]), agent и для упавшего запуска error.

Изменено — может сломать скрипты

  • npm install -g выбирает агента для навыка только по MAX_INSTALL_AGENT. TG_INSTALL_AGENT больше не читается.
  • В ответе doctor вместо строки config.error — список config.issues. Если настройки не удалось разрешить из-за блокировки профиля, флага или переменной окружения, сообщение — в settings.error.
  • Старые имена настроек больше не распознаются. default_profile, analysis_provider, analysis_model, analysis_base_url с переменными MAX_ANALYSIS_* и имена в camelCase (sendsPerHour и другие) — неизвестные настройки, как любые другие: команда отказывает и называет config unset, который убирает ключ. Модель анализа задаётся в models.analysis.provider, models.analysis.model и models.analysis.base_url.
  • messages sync и bot messages sync проверяются по своим ключам messages.sync и bot.messages.sync (cli-core 0.421.0). Уровень на messages или bot.messages по-прежнему действует на них, а запрет, записанный прямо на messages.sync или bot.messages.sync, теперь останавливает команду. Команды бота проверяют запрет на чтение до подключения.
  • Сохранённый ключ права, который не проверяет ни одна команда, останавливает и команды бота, и --dry-run. Ошибка называет ключ и config unset, который его удаляет; config show, set и unset работают, чтобы файл можно было исправить.
  • Прежние имена команд получают обычный ответ «unknown command», без подсказки. max personal search mail больше не называет memo: почту ищет memo search mail.
  • Запуск без названного профиля записывается без profile, а не с "profile": "default" (cli-core 0.424.0).
  • В записи запуска стек упавшей команды начинается с имени пакета и без строк Node (cli-core 0.425.0). Строка стека — MaxClient.connect @wirecat/max-cli/client.js:1497, а не client.js:1497; строк node:internal больше нет.
  • config set записывает config.json с правами 0600, а не 0644 (cli-base 0.57.0). В файле — профили, аккаунты и пути владельца. Программа, которая читает настройки от имени другого пользователя, после следующего config set их не прочитает.

Безопасность

  • max doctor называет config.json и его каталог, если их могут читать другие пользователи, и команду chmod, которая это исправляет. В --json это files: { checked, ok, problems: [{ path, mode, want }] }, файл должен быть 0600, каталог — 0700. Для каждой проблемы на stderr строка to make it private: chmod 600 '<путь>'; сам doctor права не меняет. Каталог проверяется и тогда, когда его задаёт MAX_CONFIG_DIR. Блок есть и без имени профиля, и когда настройки не разрешились; в отчёт doctor reports create он тоже попадает. В Windows права не проверяются: files — { checked: false, reason }.