npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@leemour/max-cli

v0.41.0

Published

MAX Messenger bots through the official Bot API, and a personal MAX account, from the terminal — built for agents and scripts

Readme

max-cli

Ваши боты MAX и ваш личный аккаунт — в терминале и в ИИ-агентах. max — программа для терминала и MCP-сервер: пишите от имени бота через официальный Bot API, а в свои чаты — сами или руками Claude, Codex, Cursor и других агентов. В группах, которые вы ведёте, — следите за непрочитанным и сразу реагируйте на проблемы: спам, чужие ссылки, флуд, вопросы без ответа — по вашим правилам.

Работает в Windows, macOS и Linux. Документация — wirecat.dev/ru/docs/max.

max sales bot messages send "Команда продаж" "Сборка готова"   # от имени бота
max messages send "Иван Петров" "Опаздываю на 15 минут"         # от вашего имени

npm CI Node Bun npm downloads License: MIT

Бот

max bot работает с ботом через официальный Bot API MAX по токену бота. Ботов может быть несколько: каждый хранится под именем, которое вы выбираете, и это имя — первое слово команды.

Полный Bot API. Все методы официальной схемы MAX доступны из терминала через max <бот> bot api <операция>: параметры — флаги, тело запроса — JSON. Удобные команды для сообщений и чатов дополняются полным API для собственных сценариев и автоматизации. Руководство по Bot API и полный справочник команд.

max sales bot auth set                                   # токен — в скрытом вводе, MAX его проверит
max sales bot me                                         # какой это бот
max sales bot api get-updates --limit 10                 # номер группы — в поле chat_id
max sales bot messages send "Команда продаж" "Сборка готова" --file report.pdf
max sales bot recipients add "Команда продаж"            # писать только сюда
max bot list --check                                     # все боты на этом компьютере

Чат называют по номеру или, когда бот его уже видел, по названию; человеку пишут как user:<номер>. Где взять номер чата — docs/bot.md.

  • Сообщения и чаты. Отправка в чат по номеру, человеку как user:<номер> или в чат по названию; правка, удаление, чтение, закрепление. chats list — чаты, которые бот видел: списка чатов бота у MAX нет.
  • Файлы, участники, комментарии, кнопки, меню команд, вебхуки. messages send --file, chats members, chats admins, comments, callbacks answer, commands, webhooks — у каждой записи тот же список получателей и журнал.
  • Модерация от имени бота. bot chats moderate сверяет новое в группе с правилами (bot chats rules) и удаляет спам и людей — с запретом вернуться по ссылке. Вступления видит bot watch, который печатает всё, что происходит в чатах бота.
  • Копия переписки на этом компьютере. bot contacts show <кто> — где человек писал и его личный чат с ботом; bot search messages --from <кто> и bot messages between <кто> <кто> — без запросов к MAX.
  • Бот для агента. max sales bot mcp — MCP-сервер бота: агенту доступно то, что разрешают permissions профиля бота; ask и allow разрешают действие без формы, а readonly запрещает запись.
  • Все методы Bot API. Полное покрытие официальной схемы через max bot api <операция> — с флагами для параметров и JSON-телом, которое сверяется со схемой до отправки.
  • Бот не напишет лишнего. У каждого бота свой список чатов, куда ему можно писать, и журнал всего, что он отправил, — без текста. permissions ограничивает и бота.
  • Токен не в файле. Токен бота — в системном хранилище паролей, отдельно от вашего.

Бота создают на business.max.ru; MAX выдаёт их подтверждённым организациям, ИП и самозанятым. Полностью — docs/bot.md.

Личный аккаунт

max без слова bot работает с вашим личным аккаунтом: как ещё одно ваше устройство, со всеми чатами, историей, группами и контактами.

⚠️ Для личного аккаунта max-cli использует неофициальный внутренний API MAX. API может измениться без предупреждения, а использование инструмента может нарушать условия сервиса. Вы используете max-cli на свой риск; авторы и контрибьюторы не несут ответственности за блокировки аккаунтов, потерю данных или другие последствия. Бот работает через официальный API, и к нему это не относится.

max chats list --limit 5
max messages list "Иван Петров"
max messages send "Иван Петров" "Опаздываю на 15 минут"

Всё ниже, до раздела «Установка», — про личный аккаунт. Полностью — docs/usage.md.

Как это использовать

Самое полезное — поручить переписку агенту: Claude, Codex или другому. Он читает чаты через max и делает то, что вы попросили словами.

  • Проверка по расписанию. Утром и вечером агент смотрит, что пришло, и присылает короткую сводку: кто ждёт ответа, что срочно, что можно не читать.
  • Отчёты. Итог недели по рабочему чату: что решили, кто что взял на себя, какие вопросы остались без ответа.
  • Кто кому должен. max review одним вызовом отдаёт всё, что было в переписке с прошлого обзора, — ваши сообщения тоже, голосовые — текстом. Агент раскладывает это на «я должен», «жду от других» и «нужно уточнить», а прежде чем назвать что-то просроченным, проверяет рабочие группы: может, уже сделано.
  • Напоминания. Кому вы обещали ответить и не ответили; чей вопрос висит третий день.
  • Черновики ответов. Агент предлагает текст, а отправляете вы — или он сам, если вы разрешили писать в этот чат.
  • Поиск. «Когда мы договорились о встрече с Иваном?» — ответ с датой и самим сообщением.
  • Группа, которую вы ведёте. Какие вопросы висят без ответа, кто вступил за неделю и с каким аккаунтом, удалить приглашения в чужие чаты — по вашим правилам и с вашим «да» (ниже).

Как это выглядит:

Вы:     Что я кому обещал за последние три дня?
Агент:  (вызывает max review: 12 чатов, 3 голосовых расшифровано)
        Я должен
        · Ивану Петрову — прислать счёт до пятницы. «Иван Петров», 24.09
        Жду от других
        · Ольга — макет к 25.09. В группе «Дизайн» его пока нет
        Нужно уточнить
        · «Проект Альфа»: кто везёт образцы — договорились «потом решим», 25.09
        Следующий обзор — с 26.09, 14:05.
Вы:     Напомни Ольге про макет.
Агент:  Черновик: «Ольга, привет! Как там макет?» Отправить?
Вы:     Да.

Агент отправляет только по вашей просьбе; подтверждение вызовов настройте в своём ИИ-приложении. Чтение не ставит отметку «прочитано». Как настроить агента под каждую задачу — готовые запросы, расписание и ограничения: docs/recipes.md.

Группы, которые вы ведёте

max review --chat "Поход" --unanswered            # вопросы, на которые сутки никто не ответил
max chats events "Поход"                          # кто вступил и вышел за неделю
max chats members list "Поход" --all              # все участники: когда заведён аккаунт
max chats rules set "Поход" invites delete        # приглашения в чужие чаты — удалять
max chats moderate "Поход" --allow-dangerous         # проверить группу и сделать, что разрешено

Проверка сверяет новое в группе с вашими правилами: заблокированные люди, приглашения, ссылки, пересланное, флуд, совсем новые аккаунты. По умолчанию она только отмечает. Для каждого действия вы решаете сами: никогда, только с флагом, с вашим подтверждением или сразу. Сценарии с агентом, все правила и ограничения — docs/groups.md.

Как это работает

max работает от вашего имени, как ещё одно ваше устройство, а не как бот. Вы входите один раз по QR-коду, и дальше доступно то же, что в приложении: чаты, сообщения, файлы, группы, контакты и профиль.

Агенту max подключается одним из двух способов:

  • Агент с терминалом — Claude Code, Codex, Gemini CLI. Он сам вызывает команды max. Дайте ему навык (skill) — инструкцию, как работать с max: одна команда, см. ниже.
  • Агент без терминала — Claude Desktop, Cursor и другие клиенты MCP. Подключите max mcp: готовую запись для их настроек печатает max mcp config. Там же есть команды /catch-up (что нового), /review (кто кому должен), /reply (черновик ответа) и /find (поиск). По умолчанию права агента задают permissions; большинство записей разрешено по умолчанию. readonly запрещает запись, а ask и allow допускают вызванную запись без серверной формы.

Что умеет

  • Читать. Чаты, история, одно сообщение вместе с соседними, непрочитанное во всех чатах сразу (max inbox), вся переписка с прошлого обзора для разбора «кто кому должен» (max review), новые сообщения по мере прихода (max watch), скачивание вложений, расшифровка голосовых в текст на вашем компьютере, выгрузка переписки в JSONL или Markdown.
  • Искать. Сообщения — по тексту всего прочитанного, без подключения к MAX. Чаты и контакты — по части названия или имени.
  • Писать. Текст и разметка, ответы, фото, видео, файлы и голосовые, правка, пересылка, закрепление, реакции, опросы, отложенная отправка, удаление — у себя или у всех.
  • Вести группы и каналы. Создать группу, вступить по ссылке, выйти, участники и админы, название и настройки, ссылка-приглашение, папки. Для админа — вопросы без ответа, кто вступил и вышел, все участники с возрастом аккаунта, правила и проверка группы по ним (docs/groups.md).
  • Контакты и аккаунт. Найти человека по номеру, добавить, удалить, переименовать для себя, заблокировать, импортировать из файла; изменить профиль и фото; посмотреть и завершить другие сеансы.
  • Входить удобным способом. QR-код прямо в терминале, QR-код или SMS через web.max.ru в браузере, или готовый токен.

Чем он хорош

  • Читает незаметно. Чтение не ставит отметку «прочитано»: собеседник не видит, что вы открыли чат. Отметить прочитанным можно, когда нужно: max chats mark-read или --mark-read.
  • Агент не напишет лишнего. Есть профиль только для чтения, список чатов, в которые можно писать, и лимит сообщений в час. MCP-сервер может показывать вам каждое действие до того, как его выполнить. Если имя подходит к двум чатам, max не выбирает сам, а показывает оба.
  • Модерация по вашим правилам, а не по чужим. Проверка группы по умолчанию только отмечает. Удалить сообщение или человека она может, только если вы разрешили: для каждого действия — никогда, с флагом, с вашим подтверждением или сразу. Не больше 10 действий за раз, и ничего не следит за группой в фоне.
  • Сообщение не уйдёт дважды. Если связь оборвалась во время отправки, max прямо говорит, что не знает, дошло ли сообщение, и даёт команду для повтора. MAX узнаёт повтор и второго сообщения не создаёт.
  • Своя копия переписки. Всё прочитанное сохраняется на вашем компьютере. По ней работает быстрый поиск по тексту сообщений, и её можно читать без интернета (--offline). При входе MAX присылает только изменившихся людей. Полный список заново — max contacts sync; данные покинутых чатов удаляет max store clear --left --allow-dangerous.
  • Чужой текст не управляет вашим терминалом. Имена, названия чатов, имена файлов и сообщения пишут другие люди. Управляющие символы из них показываются как текст, имя всегда печатается в одну строку, а автодополнение подставляет только номер чата — поддельную строку переписки или команду в оболочке так не подсунуть.
  • Пароль от аккаунта не лежит в файле. Токен входа хранится в системном хранилище паролей: Keychain в macOS, Secret Service (GNOME Keyring, KWallet) в Linux, диспетчер учётных данных в Windows. В историю команд он не попадает.
  • Скрипт и агент разбирают ответ без догадок. С --json команда отдаёт только данные, в одной и той же форме, без текста для человека вокруг. Ошибка приходит отдельно и с номером, поэтому скрипт сразу понимает, что случилось: нет входа, чат не найден или MAX не ответил вовремя.
  • Разбор проблем без вашей переписки. --trace показывает каждый запрос к MAX, чтобы понять, почему команда не сработала. В этой записи нет текстов, имён, телефонов и токена, поэтому её можно приложить к сообщению об ошибке. Удачный запуск без флага не записывается, неудачный — всегда, тоже без текстов.

Под заказ

Делаем автоматизацию процессов и инструменты под вашу задачу: интеграции с MAX и другими мессенджерами, ИИ-агентов, внутренние сервисы. Пишите на [email protected].

Чем отличается от других

Для MAX уже есть хорошие проекты, и max-cli многому у них научился. PyMax — самая полная библиотека для личного аккаунта; её код помог разобрать многие операции протокола. Выбирайте то, что подходит под задачу.

| | max-cli | PyMax | max-mcp | |---|:-:|:-:|:-:| | что это | программа для терминала и MCP-сервер | библиотека на Python | MCP-сервер на PyMax | | MCP-сервер и навык для агентов | ✅ | — | MCP | | ограничения для агента: только чтение, разрешённые действия, список чатов, лимит в час, подтверждение отправки | ✅ | — | — | | расшифровка голосовых в текст на вашем компьютере | ✅ | — | — | | готовые команды — не нужно писать свою программу | ✅ | — (библиотека для своего кода на Python) | — | | локальная копия с поиском и чтением без интернета | ✅ | — | — | | новые сообщения в реальном времени | ✅ max watch | ✅ обработчики событий | — | | отложенная отправка — уходит, даже если компьютер выключен | ✅ | ✅ | — | | выгрузка переписки в JSONL или Markdown | ✅ | — | — | | чтение, отправка текста, фото и файлов | ✅ | ✅ | ✅ | | реакции, правка, пересылка, закрепление | ✅ | ✅ | — | | удаление сообщений — у себя или у всех, с лимитом | ✅ | ✅ | — | | отметка «прочитано» по запросу | ✅ | ✅ | — | | группы и каналы: создать, вступить, участники, админы | ✅ | ✅ | чтение каналов | | для админа группы: вопросы без ответа, новенькие, проверка по правилам | ✅ | — | — | | контакты, профиль, другие сеансы | ✅ | ✅ | — | | отправка видео | ✅ | ✅ | — | | отправка кружков | — | ✅ | — | | отправка голосовых | ✅ | ⚠️ в 2.4.1 не проходит (#102, #103) | — | | опросы: показать, проголосовать, создать, закрыть | ✅ | ✅ | — | | фото профиля | ✅ | ✅ | — | | вход с облачным паролем | ✅ по QR-коду | ✅ | — | | установить или снять облачный пароль | — | ✅ | — |

Для бота есть max bot — через официальный Bot API, отдельно от личного аккаунта (docs/bot.md). Таблица выше — про личный аккаунт.

Содержание

Установка

Пакет — @leemour/max-cli, команда, которую он ставит, — max.

Запустить, ничего не устанавливая:

npx @leemour/max-cli --help

Поставить насовсем:

npm install -g @leemour/max-cli
max --version
max setup --agent codex  # вход и подключение навыка агента

Глобальная установка через npm устанавливает навык агента, а на Windows сохраняет PATH для новых терминалов. Агенту в уже открытом терминале нужно обновить окружение и прочитать max skill show перед входом. MAX_INSTALL_AGENT=none отключает установку навыка.

Нужен Node 22.16+ (ветка 22.x) или 24+, либо Bun 1.3+. Работает на macOS, Linux и Windows. Подробности, переменные окружения и то, куда ложатся файлы, — docs/installation.md.

Если после установки команда max не находится, npx @leemour/max-cli doctor скажет почему и напечатает команду, которая это исправит.

Вход

max setup проводит через первый запуск: проверяет локальные каталоги, показывает QR-код, проверяет аккаунт и до пяти чатов, затем предлагает подключить навык агента. Выделите около пяти минут. Скачивание истории — отдельный шаг после выбора чата и объёма; setup не запускает фоновый сервис. Повторный запуск проверяет существующую сессию без нового входа.

max setup --agent codex                # QR-вход и навык Codex
max setup --agent claude               # или Claude Code
max setup --method qr-chrome           # QR через web.max.ru в Chromium
max setup --method sms                 # номер телефона вводится в браузере
max setup --method token               # скрытый ввод токена или stdin
max setup --help                       # все способы и примеры

Вместо агента можно выбрать cursor, gemini, all или none. Агент перед входом читает max skill show; инструкция доступна без сессии. max session start остаётся отдельной командой импорта токена, а max session start qr — явного повторного входа при истёкшей сессии (docs/sessions.md).

Несколько аккаунтов — несколько профилей, и профиль называется первым словом, а не флагом:

max chats list              # профиль default
max personal chats list     # профиль personal
export MAX_PROFILE=personal # или на всю сессию оболочки

Использование

Бот пишет в группу, закрепляет объявление и следит за порядком:

max sales bot messages send "Команда продаж" "**Сборка готова**" --md --file report.pdf
max sales bot messages pin "Команда продаж" <mid>       # id сообщения — из ответа на send
max sales bot watch --events                             # всё, что происходит в чатах бота, по мере прихода
max sales bot chats rules set "Команда продаж" links delete
max sales bot chats moderate "Команда продаж" --dry-run  # что нарушает правила — без действий
max sales bot contacts show "Иван"                       # где человек писал и его личный чат с ботом

Разговор от своего имени:

max inbox                                         # непрочитанное во всех чатах, ничего не отмечая
max messages list "Иван Петров" --limit 20
max messages send "Иван Петров" "Созвонимся в 15:00?" --reply-to <id>
max reactions add "Иван Петров" <id> 👍
max messages send 0 "Позвонить маме" --at-time 2h # напоминание себе в «Избранное» через два часа
max review --since-time 1d                             # вся переписка за сутки: кто кому что обещал

Группа, которую вы ведёте:

max chats create "Поход" "Аня" "Борис"            # создать и позвать людей
max chats admins add "Поход" "Аня" --can pin,members
max chats link reset "Поход"                      # старая ссылка-приглашение перестаёт работать
max polls create "Поход" "Когда едем?" "Суббота" "Воскресенье"
max review --chat "Поход" --unanswered            # вопросы, на которые сутки никто не ответил
max chats moderate "Поход" --dry-run                 # спам, чужие ссылки, флуд — по вашим правилам

Найти и сохранить:

max search all "договор"                          # сообщения, почта и заметки сразу, без сети
max search messages "договор" --chat "Проект Альфа"  # только сообщения одного чата
max store fetch "Проект Альфа" --last 500
max store export "Проект Альфа" --format markdown --output alfa.md

Каждая команда отвечает JSON с --json и пишет в журнал, что отправила, — без текстов.

Полностью: docs/usage.md. Каждая команда и каждая опция: docs/commands.md — эта страница собирается из самой программы, поэтому описать версию, которой не существует, она не может.

Для скриптов и агентов

Навык для агентов с терминалом

Навык (skill) — файл с инструкцией, который агент читает перед работой. В навыке max описано, какие команды есть, что агент делает только по вашей просьбе и как безопасно повторить отправку. Его понимают Claude Code, Codex, Cursor и Gemini CLI. Навык ставится одной командой и всегда той же версии, что и max:

max skill show                         # прочитать перед входом
max skill install --for all             # установить без входа

Команда кладёт навык в ~/.claude/skills/max-cli/ для Claude Code и в ~/.agents/skills/max-cli/ для Codex, Gemini CLI и Cursor (при поддержке обнаружения навыков); --for claude или --for agents — только в одну из папок. После обновления max запустите её ещё раз. Если навыка нет или он старше max, агент раз в сутки увидит об этом строку в stderr; выключается max config set skillHint false --defaults.

Как эти агенты находят навыки: Codex, Gemini CLI.

MCP-сервер для агентов без терминала

Claude Desktop, Cursor и другие клиенты MCP подключаются к max mcp и работают с тем же аккаунтом. Права deny/readonly запрещают записи; ask/allow допускают запрошенное действие через MCP. Серверных форм подтверждения нет; подтверждение вызовов зависит от настроек вашего ИИ-приложения. Навык доступен ресурсом max://skill. Для браузерных клиентов есть max mcp --http --public-url https://<имя>.ts.net: HTTPS-туннель и вход по коду. --permission ключ=уровень временно переопределяет права процесса (подключение).

max mcp doctor                      # проверить локальный MCP
max mcp setup codex                # Codex
max mcp setup claude-code          # Claude Code
max mcp config                      # запись для Claude Desktop, Cursor и других — с полными путями

Команды сервера — /catch-up, /review, /reply, /find — готовые просьбы: агент знает, какие инструменты вызвать и чего не делать.

Ответы в JSON

max chats list --json

С --json команда печатает только данные в JSON, без таблиц, цвета и подсказок. Так же она работает, когда её вывод читает другая программа, — например, в конвейере max … | jq. Любой список — чаты, сообщения, участники, всё у бота — приходит в одной форме:

{ "items": [ … ], "page": 1, "limit": 20, "hasMore": true }

Ошибка приходит отдельно от данных — одной строкой в stderr, а stdout остаётся пустым, поэтому её нельзя принять за пустой результат:

{"error":{"code":"authentication_error","message":"no session for profile \"default\" — run `max setup` in a local terminal; agents: read `max skill show`"}}

У каждой ошибки есть номер — код завершения программы. По нему скрипт решает, что делать дальше: 4 — нужно войти, 6 — чат или сообщение не найдены, 9 — MAX не ответил вовремя, 14 — неизвестно, ушло ли сообщение. Все коды — в docs/commands.md.

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

  • Токен входа — в системном хранилище паролей, не в файле и не в строке команды.
  • Локальная копия переписки и все служебные файлы доступны только вашему пользователю; от кражи диска защищает шифрование диска целиком.
  • Перед каждой отправкой, в том числе через фоновый сервер и MCP, max проверяет ограничения профиля и пишет строку в журнал — без текста сообщения.
  • Подтверждение MCP-вызовов настройте в приложении агента. --file не отправляет ключи и скрытые файлы без --allow-any-file; ограничения профиля действуют при каждом вызове.
  • Ограничения защищают от агента, которого уговорило прочитанное сообщение, но не от агента, который хочет их обойти: против такого нужна граница снаружи — песочница или отдельный пользователь.

Подробно — что пишется на диск, что уходит в сеть и чего инструмент не делает никогда: docs/security.md.

Документация

  • docs/installation.md — установка, обновление, куда что ложится
  • docs/bot.md — бот: токен, несколько ботов, сообщения, чаты, список получателей, любая операция API
  • docs/usage.md — личный аккаунт: вход, чтение, отправка, машинный режим
  • docs/sessions.md — токен, хранилище паролей, профили
  • docs/configuration.md — настройка по шагам
  • docs/configuration-reference.md — все ключи, переменные и порядок разрешения
  • docs/cli-contract.md — команды, JSON, ошибки, пределы и запуск агентом
  • docs/mcp.md — MCP-сервер: подключение, отправка, соединение с MAX
  • docs/remote.md — ChatGPT или Claude в браузере
  • docs/groups.md — группы, которые вы ведёте: сценарии с агентом, правила, проверка
  • docs/people.md — один человек: профиль, его сообщения по чатам, похож ли на бота
  • docs/recipes.md — рецепты для агентов: сводки, отчёты, долги, напоминания, расписание
  • docs/diagnostics.md — --trace, --record, max runs
  • docs/roadmap.md — что планируется
  • docs/security.md — что пишется на диск, а что никогда
  • docs/troubleshooting.md — по симптому: что делать, когда не работает
  • docs/commands.md — каждая команда и опция — генерируется из программы
  • docs/dev/protocol.md — каждый опкод и откуда известна его форма — генерируется
  • docs/dev/ARCHITECTURE.md — как это устроено и какие швы нельзя пересекать
  • docs/dev/BACKLOG.md — что осталось

Оглавление целиком — docs/README.md.

Разработка

pnpm install
pnpm lint && pnpm typecheck && pnpm test
pnpm build && pnpm smoke:bun          # собранная команда под вторым рантаймом
pnpm generate                         # переписать сгенерированные файлы

Протокол MAX неофициальный и разобран обратной инженерией: это не Bot API. Каждый опкод и форма каждого сообщения объявлены один раз в src/spec/, а реестр, типизированный клиент и docs/dev/protocol.md из них генерируются — и CI падает, если дерево устарело.

Половина, не имеющая отношения к MAX — потоки вывода, рендерер, коды ошибок, хранилище паролей, часы, — вынесена в @leemour/cli-core и общая с braze-cli.

Дорожная карта

docs/roadmap.md.

Лицензия

MIT — см. LICENSE.

Участие

Пулл-реквесты, сообщения об ошибках и предложения приветствуются — issues. Как устроен код и как его проверять — docs/dev/ARCHITECTURE.md и docs/dev/TESTING.md.

Private contact notes and automatic tags

max contacts alias set <person> <alias> задаёт локальное имя для выбранного аккаунта; contacts rename меняет запись в адресной книге мессенджера. Собственные заметки: contacts notes add <person> --file <path>, затем list, show, edit --revision <n> и remove. contacts show --with-notes включает заметки явно; contacts list --search-notes <text> ищет в них. Заметка о контакте видна в каждом профиле, который видит этот контакт; псевдоним — только в своём. Обновление контактов сохраняет заметки и псевдонимы. Связывание людей не объединяет эти данные.

max metadata refresh --chat <id> сохраняет описание группы или канала локально; metadata get --chat <id> читает сохранённые данные. tags auto --chat <id> --dry-run показывает метки по ключевым словам. Для актуального описания добавьте --refresh-metadata без --dry-run. Команда обрабатывает не более 500 чатов за запуск, по умолчанию 50. Автоматические метки не удаляют ручные; tags list|remove --source auto выбирает только автоматические метки. Текст сообщений и внешние модели при классификации не используются.