@wirecat/max-cli 0.71.0 → 0.72.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.
Files changed (54) hide show
  1. package/README.md +4 -3
  2. package/dist/client/live.d.ts +3 -2
  3. package/dist/client/live.d.ts.map +1 -1
  4. package/dist/client/live.js +82 -7
  5. package/dist/client/live.js.map +1 -1
  6. package/dist/client.d.ts.map +1 -1
  7. package/dist/client.js +1 -0
  8. package/dist/client.js.map +1 -1
  9. package/dist/commands/chats.js +1 -1
  10. package/dist/commands/chats.js.map +1 -1
  11. package/dist/commands/config.d.ts.map +1 -1
  12. package/dist/commands/config.js +15 -2
  13. package/dist/commands/config.js.map +1 -1
  14. package/dist/commands/contacts.js +3 -3
  15. package/dist/commands/contacts.js.map +1 -1
  16. package/dist/commands/doctor.d.ts.map +1 -1
  17. package/dist/commands/doctor.js +13 -8
  18. package/dist/commands/doctor.js.map +1 -1
  19. package/dist/commands/messages.js +1 -1
  20. package/dist/commands/messages.js.map +1 -1
  21. package/dist/domain/map.d.ts +1 -1
  22. package/dist/domain/map.js +1 -1
  23. package/dist/generated/client.generated.d.ts +5 -0
  24. package/dist/generated/client.generated.d.ts.map +1 -1
  25. package/dist/generated/client.generated.js +5 -0
  26. package/dist/generated/client.generated.js.map +1 -1
  27. package/dist/generated/opcodes.generated.d.ts +3 -0
  28. package/dist/generated/opcodes.generated.d.ts.map +1 -1
  29. package/dist/generated/opcodes.generated.js +3 -0
  30. package/dist/generated/opcodes.generated.js.map +1 -1
  31. package/dist/generated/operations.generated.d.ts +19 -0
  32. package/dist/generated/operations.generated.d.ts.map +1 -1
  33. package/dist/generated/operations.generated.js +5 -1
  34. package/dist/generated/operations.generated.js.map +1 -1
  35. package/dist/server/server.js +1 -1
  36. package/dist/server/server.js.map +1 -1
  37. package/dist/spec/index.d.ts.map +1 -1
  38. package/dist/spec/index.js +5 -1
  39. package/dist/spec/index.js.map +1 -1
  40. package/dist/spec/operations/chats.d.ts +5 -0
  41. package/dist/spec/operations/chats.d.ts.map +1 -1
  42. package/dist/spec/operations/chats.js +17 -0
  43. package/dist/spec/operations/chats.js.map +1 -1
  44. package/dist/spec/operations/stories.d.ts +17 -0
  45. package/dist/spec/operations/stories.d.ts.map +1 -0
  46. package/dist/spec/operations/stories.js +38 -0
  47. package/dist/spec/operations/stories.js.map +1 -0
  48. package/dist/transcribe/index.js +1 -1
  49. package/dist/transcribe/index.js.map +1 -1
  50. package/dist/version.d.ts +1 -1
  51. package/dist/version.js +1 -1
  52. package/package.json +5 -5
  53. package/scenarios/find-what-was-said.md +1 -1
  54. package/skills/max-cli/SKILL.md +37 -28
@@ -0,0 +1,38 @@
1
+ import * as v from "valibot";
2
+ import { defineOperation } from "../define.js";
3
+ import { id } from "../scalars.js";
4
+ /** Sent by `max serve` on its first login only, as a fresh web tab does (`MAX-52`); the answer is not read. */
5
+ const recorded = "web.max.ru tab, recorded 2026-09-25 (private capture 2026-09-25-web-tab-2.jsonl)";
6
+ const webClient = "web.max.ru chunk `_app/immutable/chunks/CLv-WKyI.js`, read 2026-10-23";
7
+ export const storiesList = defineOperation({
8
+ name: "stories.list",
9
+ constant: "STORIES_LIST",
10
+ opcode: 208,
11
+ auth: true,
12
+ guard: null,
13
+ request: v.strictObject({ cursor: v.string(), count: v.number() }),
14
+ response: v.looseObject({ storiesPreviews: v.optional(v.unknown()) }),
15
+ provenance: {
16
+ confidence: "observed",
17
+ sources: [recorded, webClient],
18
+ notes: 'The stories bar asks `{cursor: "0", count: 15}` when it mounts. PyMax does not name it.',
19
+ },
20
+ });
21
+ export const storiesPreviews = defineOperation({
22
+ name: "stories.previews",
23
+ constant: "STORIES_PREVIEWS",
24
+ opcode: 209,
25
+ auth: true,
26
+ guard: null,
27
+ request: v.strictObject({
28
+ /** `type` 0 is a dialog with `ownerId` the other person, 1 a group, 2 a channel, both with the chat id. */
29
+ owners: v.array(v.strictObject({ type: v.picklist([0, 1, 2]), ownerId: id() })),
30
+ }),
31
+ response: v.looseObject({ storiesPreviews: v.optional(v.unknown()) }),
32
+ provenance: {
33
+ confidence: "observed",
34
+ sources: [recorded, webClient],
35
+ notes: "The tab asks for the owners of each chat-list row it draws, up to 30 at once. PyMax does not name it.",
36
+ },
37
+ });
38
+ //# sourceMappingURL=stories.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stories.js","sourceRoot":"","sources":["../../../src/spec/operations/stories.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAC5B,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAC9C,OAAO,EAAE,EAAE,EAAE,MAAM,eAAe,CAAA;AAElC,+GAA+G;AAC/G,MAAM,QAAQ,GAAG,kFAAkF,CAAA;AACnG,MAAM,SAAS,GAAG,uEAAuE,CAAA;AAEzF,MAAM,CAAC,MAAM,WAAW,GAAG,eAAe,CAAC;IACzC,IAAI,EAAE,cAAc;IACpB,QAAQ,EAAE,cAAc;IACxB,MAAM,EAAE,GAAG;IACX,IAAI,EAAE,IAAI;IACV,KAAK,EAAE,IAAI;IACX,OAAO,EAAE,CAAC,CAAC,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC;IAClE,QAAQ,EAAE,CAAC,CAAC,WAAW,CAAC,EAAE,eAAe,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;IACrE,UAAU,EAAE;QACV,UAAU,EAAE,UAAU;QACtB,OAAO,EAAE,CAAC,QAAQ,EAAE,SAAS,CAAC;QAC9B,KAAK,EAAE,yFAAyF;KACjG;CACF,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,eAAe,GAAG,eAAe,CAAC;IAC7C,IAAI,EAAE,kBAAkB;IACxB,QAAQ,EAAE,kBAAkB;IAC5B,MAAM,EAAE,GAAG;IACX,IAAI,EAAE,IAAI;IACV,KAAK,EAAE,IAAI;IACX,OAAO,EAAE,CAAC,CAAC,YAAY,CAAC;QACtB,2GAA2G;QAC3G,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;KAChF,CAAC;IACF,QAAQ,EAAE,CAAC,CAAC,WAAW,CAAC,EAAE,eAAe,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;IACrE,UAAU,EAAE;QACV,UAAU,EAAE,UAAU;QACtB,OAAO,EAAE,CAAC,QAAQ,EAAE,SAAS,CAAC;QAC9B,KAAK,EAAE,uGAAuG;KAC/G;CACF,CAAC,CAAA"}
@@ -5,7 +5,7 @@ import { MODELS, VAD } from "./models.js";
5
5
  import { decodeOgg, openRecognizer, toModelRate } from "./speech.js";
6
6
  export const notDownloaded = (model) => new CliError("not_found", [
7
7
  `the speech model ${model.id} (${model.languages}) is not downloaded — ` +
8
- `\`max models audio download ${model.id}\` fetches it (${sizeOf(model)}, once)`,
8
+ `\`max models download ${model.id}\` fetches it (${sizeOf(model)}, once)`,
9
9
  ...MODELS.filter((other) => other.id !== model.id).map((other) => ` or ${other.id}: ${other.languages}, ${sizeOf(other)}`),
10
10
  ].join("\n"));
11
11
  const sizeOf = (model) => megabytes(installedBytes(model) + VAD.bytes);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/transcribe/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/transcribe/index.ts"],"names":[],"mappings":"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"}
package/dist/version.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- export declare const VERSION = "0.71.0";
1
+ export declare const VERSION = "0.72.0";
2
2
  //# sourceMappingURL=version.d.ts.map
package/dist/version.js CHANGED
@@ -1,2 +1,2 @@
1
- export const VERSION = "0.71.0";
1
+ export const VERSION = "0.72.0";
2
2
  //# sourceMappingURL=version.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wirecat/max-cli",
3
- "version": "0.71.0",
3
+ "version": "0.72.0",
4
4
  "description": "MAX Messenger bots through the official Bot API, and a personal MAX account, from the terminal — built for agents and scripts",
5
5
  "license": "Apache-2.0",
6
6
  "author": "Viacheslav Ptsarev",
@@ -101,11 +101,11 @@
101
101
  "package:check": "node --experimental-strip-types scripts/release-check.ts --package-only"
102
102
  },
103
103
  "dependencies": {
104
- "@modelcontextprotocol/server": "2.1.0",
104
+ "@modelcontextprotocol/server": "2.3.0",
105
105
  "@msgpack/msgpack": "3.1.3",
106
106
  "@valibot/to-json-schema": "1.8.0",
107
- "@wirecat/cli-base": "0.50.1",
108
- "@wirecat/cli-core": "0.398.0",
107
+ "@wirecat/cli-base": "0.50.3",
108
+ "@wirecat/cli-core": "0.406.0",
109
109
  "commander": "15.0.0",
110
110
  "lossless-json": "4.3.1",
111
111
  "ogg-opus-decoder": "1.7.5",
@@ -120,7 +120,7 @@
120
120
  "@cspell/dict-en-gb": "5.0.34",
121
121
  "@cspell/dict-es-es": "3.0.9",
122
122
  "@cspell/dict-ru_ru": "2.3.3",
123
- "@modelcontextprotocol/client": "~2.2.0",
123
+ "@modelcontextprotocol/client": "~2.3.0",
124
124
  "@napi-rs/canvas": "1.0.11",
125
125
  "@types/node": "^22.20.4",
126
126
  "@types/ws": "^8.18.2",
@@ -4,7 +4,7 @@ goal: Get back a message, a file or a voice note when you remember only a word o
4
4
  steps:
5
5
  - run: max search all "invoice"
6
6
  why: messages, notes, the text of files and voice transcripts in one search, best match first
7
- - run: max contacts timeline Anna
7
+ - run: max contacts events Anna
8
8
  why: everything one person wrote or was mentioned in, newest first, from the store
9
9
  - run: max messages context Team 1234
10
10
  why: the message a hit points to, with what came either side of it
@@ -22,7 +22,7 @@ description: >-
22
22
 
23
23
  ## Машинный запуск
24
24
 
25
- `max commands schema messages list --json` показывает схемы и эффекты одной команды.
25
+ `max commands info messages list --json` показывает схемы и эффекты одной команды.
26
26
  Используйте `--json --no-input` для работы без вопросов; секреты передавайте явно через pipe.
27
27
  `--json=id,text` оставляет эти поля каждого элемента списка вместе со страницей и полнотой. Для id
28
28
  достаточно `--json=id`. Точка выбирает вложенное поле: `--json=ref,text,reply_to.text`. `--max-output-bytes` и `--max-input-bytes` задают byte budgets;
@@ -174,7 +174,7 @@ remove|admins|update|link reset|requests accept|requests decline` видят д
174
174
  его аккаунта. Посчитать заранее нельзя: `--dry-run` для MAX отказывает. Скажите владельцу, что
175
175
  один запуск — до 40 страниц по 30 сообщений с паузой 5–10 с, то есть 3–7 минут.
176
176
  5d. **Ошибку, которую не удаётся объяснить, — в отчёт автору.** Предложите владельцу
177
- `max personal doctor report create`: команда пишет файл без текстов сообщений и печатает ссылку на новую
177
+ `max personal doctor reports create`: команда пишет файл без текстов сообщений и печатает ссылку на новую
178
178
  задачу на GitHub. Задачу создаёт владелец сам: она видна всем.
179
179
  5e. **`max` не находится — `npx @wirecat/max-cli personal doctor`.** Вместо `personal` подставьте имя профиля владельца. Он скажет, куда поставлена команда и
180
180
  почему терминал её не видит, и напечатает команду исправления. Клиенту MCP без терминала (Claude
@@ -252,7 +252,7 @@ max personal review 'chat:"-1000"' --unanswered 4h --json # вопросы в г
252
252
  max personal tasks list state:open --json # что ждёт ответа владельца; задачи открывает и закрывает review
253
253
  max personal tasks add <ссылка> --type request --category documents --json
254
254
  # выход 2 task.duplicate-candidates: возможно, это та же открытая задача; повторите с --into <задача> или --new. Похожая только на закрытую — новая задача со связью follow-up-of
255
- max personal tasks duplicates --json # пары, которые могут быть одной задачей; tasks merge <дубль> --into <задача>
255
+ max personal tasks duplicates list --json # пары, которые могут быть одной задачей; tasks merge <дубль> --into <задача>
256
256
  max personal tasks duplicates reject <дубль> <задача> # не одна задача; defer — решит владелец (decision:unsure); tasks unmerge <дубль> отменяет merge
257
257
  max personal tasks related <задача> --json # похожие задачи с полосой likely|maybe|different; ничего не меняет
258
258
  max personal tasks agenda category:money tag:urgent --json # план на сегодня; claimed:any — и занятые другими
@@ -261,13 +261,13 @@ max personal tasks categories --json # категории; спис
261
261
  max personal tasks close <задача> --as dismissed --reason no-reply-needed --certainty 0.9 --json # только когда владелец так решил; --certainty 0..1 обязателен, ниже порога задача остаётся открытой с предложением закрыть
262
262
  max personal tasks list close:suggested --json # предложения закрыть, которые ждут владельца: он подтверждает tasks close или отклоняет tasks reject
263
263
  max personal watch --jsonl # новые сообщения по мере прихода; `max personal serve` запустится сам
264
- max personal watch --events --jsonl # плюс правки, удаления, реакции, прочтения, изменения чатов; поле "event"
264
+ max personal watch --events --jsonl # плюс правки, удаления, реакции, прочтения, изменения чатов; поле "event" внутри data
265
265
  max personal server status --json # работает ли фоновый сервер, какой версии, подключён ли
266
266
  max personal chats show -1000 --json # один чат и кто в нём
267
267
  max personal chats events -1000 'time>=2026-09-20' --json # кто вступил, вышел, кого добавили и удалили
268
268
  max personal chats members list -1000 --all --json # все участники от MAX: registered_at, last_seen_at
269
269
  max personal chats requests list -1000 --json # заявки в канал с одобрением; ни времени, ни порядка
270
- max personal chats requests accept -1000 20000002 # по одному человеку и только по просьбе владельца; decline — отказать
270
+ max personal chats requests confirm -1000 20000002 # по одному человеку и только по просьбе владельца; decline — отказать
271
271
  max personal chats rules show -1000 --json # правила модерации группы; set <ключ> <значение> меняет одно
272
272
  max personal chats moderate -1000 --dry-run --json # что нового нарушает правила; без --dry-run — только по слову владельца
273
273
  max personal contacts show @ivan --json # один человек и общие чаты
@@ -285,16 +285,20 @@ max personal messages transcribe -1000 100000000000000001 --json # текст
285
285
  повторяет ту же границу. Напоминания —
286
286
  черновики, отправка — только по слову владельца.
287
287
 
288
+ `watch --json` и `watch --jsonl` возвращают строки `{"type":"item","data":…}` и завершающую
289
+ `{"type":"end",…}`. Читайте сообщение или событие из `data`; имена полей — snake_case.
290
+ Неполный `end` и код ошибки означают сбой источника, а не отсутствие новых сообщений.
291
+
288
292
  Голосовое — вложение `"kind": "voice"` в `messages list|show|context`, `search messages`, `inbox` и `review`.
289
293
  Его текст даёт `max personal messages transcribe`; до минуты на пять минут речи, повторно — сразу из общей
290
294
  локальной копии сообщений. Уже расшифрованное голосовое несёт поле `transcript` в
291
295
  `messages list`, `inbox` и `review`; остальные называет запись `transcript` в `missing` (обзор с ними не полон),
292
296
  а `--transcribe` расшифровывает их и называет там то, что не вышло. При отсутствии модели пакетное чтение сохраняет
293
297
  сообщения и сообщает причину там же; одиночная `messages transcribe` откажет
294
- и назовёт `max personal models audio download <id>`: **сказать об этом владельцу и не скачивать самому** — это сотни
298
+ и назовёт `max personal models download <id>`: **сказать об этом владельцу и не скачивать самому** — это сотни
295
299
  мегабайт, и выбор модели за ним.
296
300
 
297
- Каталог аудиомоделей общий с Telegram; путь каждой модели есть в `max personal models audio list --json` (`path`).
301
+ Каталог аудиомоделей общий с Telegram; путь каждой модели есть в `max personal models list kind:audio --json` (`path`).
298
302
  Существующие файлы используются повторно; `WIRECAT_STATE_DIR` задаёт другое место.
299
303
 
300
304
  Вложение в JSON: `{ "kind": "photo", "url": "https://…", "width": 901, "height": 594 }`. Чтобы
@@ -331,6 +335,11 @@ MCP-сервер бота: `max <имя> bot mcp`; права задаются
331
335
  разрешено по умолчанию. `permissions.bot: readonly` ограничивает запись, если нет более точных
332
336
  разрешений. `ask`/`allow` допускают запрошенную запись без серверной формы. `--trace` и записи запусков
333
337
  (`max personal runs list`) работают и для бота.
338
+ Команды изменения настроек, правил и получателей через MCP требуют `mcp.authority: allow` или
339
+ `ask`; по умолчанию — `deny`. Сырые `bot api` требуют отдельного явного `bot.api: allow` или
340
+ `ask`, даже при `bot: allow`. Не меняйте эти ключи и не заменяйте `permissions` целиком: это
341
+ делает владелец в терминале. Общий ответ «только чтение» при первом запуске ограничивает и
342
+ более точные разрешения профиля; агенту вопросы первого запуска не задаются.
334
343
 
335
344
  Markdown `--md` обрабатывается форматтером MAX, не Telegram: `**жирный**`/`__жирный__`,
336
345
  `*курсив*`/`_курсив_`, `~~зачёркнутый~~`, `++подчёркнутый++`, ссылки и код. Telegram
@@ -355,7 +364,7 @@ MCP `max_read` с `command: "stats chats show"` читает активност
355
364
  В CLI: `max personal stats chats show <чат> --offline --json`.
356
365
  MCP `inbox`/`review` принимают `kinds` и `new`; отметки новых сообщений отдельны от CLI.
357
366
 
358
- `max personal chats members audit <чат> --json` читает участников и причины оценки, никого не удаляя.
367
+ `max personal chats members check <чат> --json` читает участников и причины оценки, никого не удаляя.
359
368
  Оценка — подсказка: проверь `more`, `unknown` и каждого человека до действий модерации.
360
369
 
361
370
  `max personal mcp --http --public-url https://<имя>.ts.net` работает через HTTPS-туннель со входом по коду.
@@ -382,8 +391,8 @@ MCP `inbox`/`review` принимают `kinds` и `new`; отметки нов
382
391
  `"conversations related"` и `"conversations status"` читает построенное, а `max_write` (`command: "conversations rebuild"`)
383
392
  догоняет на этом компьютере. Через MCP агент получает инструкцию `link-conversations`, оценивает объём инструментом
384
393
  `max_read` (`command: "conversations batches status"`) и ждёт согласия владельца для этого чата. Затем читает
385
- `max_read` (`command: "conversations batches next"`), сохраняет ответы через `max_write` (`command: "conversations links add"`) и перестраивает граф через
386
- `max_write` (`command: "conversations build"`). `max_write` (`command: "conversations links clear"`) удаляет ответы агента; после него граф также нужно
394
+ `max_read` (`command: "conversations batches show"`), сохраняет ответы через `max_write` (`command: "conversations links add"`) и перестраивает граф через
395
+ `max_write` (`command: "conversations links rebuild"`). `max_write` (`command: "conversations links clear"`) удаляет ответы агента; после него граф также нужно
387
396
  перестроить. Запись требует `conversations.links`. Настройка внешних векторов действует и на MCP-поиск: вопрос
388
397
  отправляется выбранному сервису.
389
398
 
@@ -393,19 +402,19 @@ ODT, ODS, XLSX, PPTX и EPUB без модели. Сначала использ
393
402
  кодировку и неподдерживаемый формат проверяй доступными средствами агента.
394
403
 
395
404
  `content:договор` ищет слова в сохранённом тексте вложения. Для DOCX нужен необязательный mammoth, для
396
- PDF с текстовым слоем — unpdf. Фото и сканы читает ваш агент и сохраняет текст через `attachments text set`. При нескольких
405
+ PDF с текстовым слоем — unpdf. Фото и сканы читает ваш агент и сохраняет текст через `attachments update`. При нескольких
397
406
  вложениях укажите `--attachment`, начиная с 1.
398
407
 
399
408
  По умолчанию выполняйте OCR сами средствами чтения файлов и зрения агента. После загрузки и локального
400
409
  извлечения обработайте строки `needs-agent`: найдите `local_path` через `attachments list is:needs_text`,
401
- прочитайте фото или скан, затем сохраните буквальную расшифровку через `attachments text set`.
410
+ прочитайте фото или скан, затем сохраните буквальную расшифровку через `attachments update`.
402
411
  Сохраняйте locator сообщения и номер вложения; проверьте результат запросом `content:`.
403
412
  Не заменяйте этот путь автоматическим вызовом отдельного API. Массовую обработку через API выбирает
404
413
  владелец явно. Если файл недоступен вашим средствам, сообщите об этом; путь на MCP-сервере сам по себе
405
414
  не передаёт файл удалённому агенту.
406
415
 
407
416
  Для явно выбранной владельцем массовой API-обработки используйте `attachments extract --ocr`
408
- с `models.ocr.provider` и `models.ocr.model`, обычным ключом `models text key set` и `--concurrency` (1–8,
417
+ с `models.ocr.provider` и `models.ocr.model`, обычным ключом `models keys set` и `--concurrency` (1–8,
409
418
  по умолчанию 4). `--limit` — 1–500 файлов, по умолчанию 100; продолжайте по `cursor`.
410
419
  Не добавляйте `--ocr` к обычному извлечению автоматически. Сканы PDF требуют необязательных
411
420
  `unpdf` и `@napi-rs/canvas`, максимум 20 страниц. Проверяйте `failed` и статусы; повтор использует
@@ -415,7 +424,7 @@ PDF с текстовым слоем — unpdf. Фото и сканы чита
415
424
  max personal attachments extract --chat "Книжный клуб" --download --output-dir ./files
416
425
  max personal search messages 'content:договор'
417
426
  max personal attachments list 'chat:"Книжный клуб" is:needs_text'
418
- max personal attachments text set "Книжный клуб" 204 --text-file ./scan.txt
427
+ max personal attachments update "Книжный клуб" 204 --text-file ./scan.txt
419
428
  ```
420
429
 
421
430
  `--download` требует `--output-dir`; без них извлечение читает уже скачанные файлы. `list` показывает сохранённые
@@ -439,10 +448,10 @@ output_dir в MCP также их защищает. Обычные скрыты
439
448
  Подготовка после явно разрешённой загрузки: `messages sync <чат> --catch-up` с
440
449
  `--catch-up-chunks`, `--catch-up-messages`, `--catch-up-time`; `--no-catch-up` отменяет
441
450
  настройку `search_catch_up`. Модели не скачиваются, удалённый провайдер не вызывается.
442
- Разрывы: сначала локальный `store gaps plan <чат>`, затем только по слову владельца
451
+ Разрывы: сначала локальный `store gaps show <чат>`, затем только по слову владельца
443
452
  `store gaps repair <чат> --fingerprint <хеш>`; ограничивайте `--max-gaps`, `--limit`,
444
453
  `--repair-time`, `--page-size`, `--pause`. `--background` использует обычные задания.
445
- В MCP найдите `store gaps plan` и `store gaps repair` и `store jobs show` и `store jobs list` через `max_tools_search`,
454
+ В MCP найдите `store gaps show` и `store gaps repair` и `store jobs show` и `store jobs list` через `max_tools_search`,
446
455
  затем используйте `max_read` или `max_write` для соответствующей команды. Не трактуйте неизвестные края или
447
456
  пропущенные номера сообщений как доказательство потерянной истории.
448
457
 
@@ -450,20 +459,20 @@ output_dir в MCP также их защищает. Обычные скрыты
450
459
 
451
460
  Псевдонимы хранятся локально для выбранного аккаунта; заметка о человеке видна в каждом профиле,
452
461
  где он виден. Обновление контактов их не
453
- затирает. `contacts rename` меняет запись в адресной книге мессенджера; `contacts alias` —
462
+ затирает. `contacts rename` меняет запись в адресной книге мессенджера; `contacts aliases` —
454
463
  только локальное имя. Если псевдоним неоднозначен, укажите id. Личные заметки отделены от
455
464
  публичного описания человека. Показывайте и ищите их, когда это нужно для запроса владельца.
456
465
 
457
466
  Чтобы пересказать, что писал человек, вызывайте `contacts context <человек> --chat <чат> --limit <n>`
458
467
  (в MCP — `chats` и `limit`); ответ — `{ at, text }` на сообщение. `-v` (в MCP `detail: 1`) — только
459
468
  если нужны номера сообщений или локаторы. Связанные через `contacts link` аккаунты собирает только
460
- `contacts context` без `--chat`; `contacts profile` и `--chat` читают лишь названный аккаунт.
461
- `contacts profile` не печатает номер телефона целиком без `--show-phone` по просьбе владельца; MCP
469
+ `contacts context` без `--chat`; `contacts info` и `--chat` читают лишь названный аккаунт.
470
+ `contacts info` не печатает номер телефона целиком без `--show-phone` по просьбе владельца; MCP
462
471
  всегда скрывает его. `contacts check` для MAX ничего не отправляет в списки спамеров; оценка — подсказка, не вывод.
463
472
 
464
473
  ```sh
465
- max personal contacts alias set 101 'Project lead'
466
- max personal contacts alias rm 101
474
+ max personal contacts aliases set 101 'Project lead'
475
+ max personal contacts aliases remove 101
467
476
  max personal contacts notes add 101 --file /path/to/own-note.md
468
477
  max personal contacts notes list 101 --json
469
478
  max personal contacts notes show 101 NOTE_ID --json
@@ -471,10 +480,10 @@ max personal contacts notes edit 101 NOTE_ID --revision 1 --file /path/to/own-no
471
480
  max personal contacts notes remove 101 NOTE_ID
472
481
  max personal contacts show 101 --with-notes --json
473
482
  max personal contacts list 'notes:"follow up"' --json
474
- max personal metadata get --chat CHAT_ID --json
475
- max personal metadata refresh --chat CHAT_ID --limit 1 --json
476
- max personal tags auto --chat CHAT_ID --dry-run --json
477
- max personal tags auto --chat CHAT_ID --sync-first --limit 1 --json
483
+ max personal metadata show --chat CHAT_ID --json
484
+ max personal metadata sync --chat CHAT_ID --limit 1 --json
485
+ max personal tags rebuild --chat CHAT_ID --dry-run --json
486
+ max personal tags rebuild --chat CHAT_ID --sync-first --limit 1 --json
478
487
  max personal tags list sources:auto --json
479
488
  max personal tags remove news --chat CHAT_ID --source auto
480
489
  ```
@@ -484,7 +493,7 @@ max personal tags remove news --chat CHAT_ID --source auto
484
493
  запрашивается явно; удалённый чат не меняется. `--dry-run` читает только сохранённые данные
485
494
  и не сочетается с `--sync-first`. За запуск обрабатывается не более 500 чатов.
486
495
  Оценка правила не является вероятностью. Ручные метки сохраняются при повторной классификации.
487
- Без `--source` удаление метки убирает оба источника; следующий явный запуск `tags auto` может
496
+ Без `--source` удаление метки убирает оба источника; следующий явный запуск `tags rebuild` может
488
497
  создать автоматическую метку снова. Связывание людей не объединяет их личные заметки.
489
498
 
490
499
  Телефоны, почта, ссылки и документы Google из сохранённых сообщений хранятся как упоминания: их находят
@@ -536,7 +545,7 @@ max personal mentions reject 12
536
545
  метаданные, запросите format:base64 и покажите PNG средствами агента. Просмотрите реальные пиксели
537
546
  всех страниц, не считайте получение base64 чтением. pdf.source_sha256 — хеш исходного PDF,
538
547
  верхний sha256 — хеш PNG. Нет внешнего OCR API или автоматической записи: сохраните свой буквальный
539
- текст через attachments text set и проверьте content:. Если показать страницы нельзя, сообщите об этом;
548
+ текст через attachments update и проверьте content:. Если показать страницы нельзя, сообщите об этом;
540
549
  не подставляйте прежний текст индекса. Качество зависит от разрешения, языка и структуры документа.
541
550
 
542
551
  Удержание: `max personal stats chats retention <chat> --checkpoints 1d,7d,30d --within 7d --json`.
@@ -546,7 +555,7 @@ max personal mentions reject 12
546
555
 
547
556
  Счётчики: `max personal stats messages counters show --chat <chat> --counters views,reactions --json`.
548
557
  Проверяй observed_at/source/freshness каждого поля (24h по умолчанию). Refresh — remote read + local write:
549
- `stats messages counters refresh --chat <chat> --max-messages 20 --sync-time 30s --dry-run --json`.
558
+ `stats messages counters sync --chat <chat> --max-messages 20 --sync-time 30s --dry-run --json`.
550
559
  Предпросмотр не подключается. Реальный refresh требует разрешённой записи и явного chat или pinned selection;
551
560
  никогда не освежай весь аккаунт неявно. MAX поддерживает views/reactions; comments unsupported.
552
561
  Не отправляй, не отмечай прочтение и не вызывай increment views. Сохранённые значения без наблюдения — unknown.