Repository navigation
0.76.0
·
30 commits
to main
since this release
Immutable
release. Only release title and notes can be modified.
Исправлено
- Сбой посреди команды теперь сообщается как любая другая ошибка. Раньше печаталась трассировка стека 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. Для неверного JSONlineи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 }.