@wirecat/max-cli 0.53.0 → 0.54.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 (69) hide show
  1. package/README.md +1 -1
  2. package/dist/bin/max.js +0 -4
  3. package/dist/bin/max.js.map +1 -1
  4. package/dist/commands/bot-context.d.ts +1 -1
  5. package/dist/commands/bot-context.d.ts.map +1 -1
  6. package/dist/commands/bot-context.js +1 -1
  7. package/dist/commands/bot-context.js.map +1 -1
  8. package/dist/commands/bot-sends.d.ts.map +1 -1
  9. package/dist/commands/bot-sends.js +1 -6
  10. package/dist/commands/bot-sends.js.map +1 -1
  11. package/dist/commands/config.d.ts.map +1 -1
  12. package/dist/commands/config.js +7 -64
  13. package/dist/commands/config.js.map +1 -1
  14. package/dist/commands/doctor.d.ts.map +1 -1
  15. package/dist/commands/doctor.js +0 -3
  16. package/dist/commands/doctor.js.map +1 -1
  17. package/dist/commands/mcp.d.ts +0 -7
  18. package/dist/commands/mcp.d.ts.map +1 -1
  19. package/dist/commands/mcp.js +8 -46
  20. package/dist/commands/mcp.js.map +1 -1
  21. package/dist/commands/messages.d.ts.map +1 -1
  22. package/dist/commands/messages.js +1 -13
  23. package/dist/commands/messages.js.map +1 -1
  24. package/dist/commands/recipients.d.ts.map +1 -1
  25. package/dist/commands/recipients.js +4 -4
  26. package/dist/commands/recipients.js.map +1 -1
  27. package/dist/config.d.ts +4 -36
  28. package/dist/config.d.ts.map +1 -1
  29. package/dist/config.js +3 -40
  30. package/dist/config.js.map +1 -1
  31. package/dist/diagnose.d.ts +0 -4
  32. package/dist/diagnose.d.ts.map +1 -1
  33. package/dist/diagnose.js +1 -4
  34. package/dist/diagnose.js.map +1 -1
  35. package/dist/mcp/instructions.d.ts +1 -10
  36. package/dist/mcp/instructions.d.ts.map +1 -1
  37. package/dist/mcp/instructions.js +1 -1
  38. package/dist/mcp/instructions.js.map +1 -1
  39. package/dist/mcp/server.d.ts +2 -10
  40. package/dist/mcp/server.d.ts.map +1 -1
  41. package/dist/mcp/server.js +1 -19
  42. package/dist/mcp/server.js.map +1 -1
  43. package/dist/mcp/tools.d.ts +0 -11
  44. package/dist/mcp/tools.d.ts.map +1 -1
  45. package/dist/mcp/tools.js.map +1 -1
  46. package/dist/program.d.ts.map +1 -1
  47. package/dist/program.js +1 -2
  48. package/dist/program.js.map +1 -1
  49. package/dist/sends.d.ts +2 -2
  50. package/dist/sends.d.ts.map +1 -1
  51. package/dist/sends.js +2 -11
  52. package/dist/sends.js.map +1 -1
  53. package/dist/server/server.js +1 -1
  54. package/dist/server/server.js.map +1 -1
  55. package/dist/update.d.ts.map +1 -1
  56. package/dist/update.js +1 -4
  57. package/dist/update.js.map +1 -1
  58. package/dist/upload.d.ts +0 -4
  59. package/dist/upload.d.ts.map +1 -1
  60. package/dist/upload.js +6 -95
  61. package/dist/upload.js.map +1 -1
  62. package/dist/version.d.ts +1 -1
  63. package/dist/version.js +1 -1
  64. package/package.json +4 -4
  65. package/skills/max-cli/SKILL.md +6 -4
  66. package/dist/inbox-point.d.ts +0 -3
  67. package/dist/inbox-point.d.ts.map +0 -1
  68. package/dist/inbox-point.js +0 -17
  69. package/dist/inbox-point.js.map +0 -1
package/dist/upload.js CHANGED
@@ -1,8 +1,9 @@
1
- import { openAsBlob, realpathSync } from "node:fs";
1
+ import { openAsBlob } from "node:fs";
2
2
  import { stat } from "node:fs/promises";
3
- import { basename, extname, isAbsolute, relative, resolve, sep } from "node:path";
4
- import { CliError, isCliError, resolvePaths } from "@wirecat/cli-base";
5
- import { storePath } from "@wirecat/cli-core/store";
3
+ import { basename, extname } from "node:path";
4
+ import { CliError, isCliError } from "@wirecat/cli-base";
5
+ import { refusedPlace } from "@wirecat/cli-core/sends";
6
+ import { MAX_APP } from "./app.js";
6
7
  import { WEB_USER_AGENT } from "./spec/identity.js";
7
8
  const HEADERS = {
8
9
  "User-Agent": WEB_USER_AGENT.headerUserAgent,
@@ -20,98 +21,8 @@ export const isImage = (path) => extname(path).toLowerCase() in IMAGE_TYPES;
20
21
  /** The Bot API's list of video formats; MAX transcodes what it takes. */
21
22
  const VIDEO_EXTENSIONS = new Set([".mp4", ".mov", ".webm", ".mkv"]);
22
23
  export const isVideo = (path) => VIDEO_EXTENSIONS.has(extname(path).toLowerCase());
23
- /**
24
- * Known credential, keyring and browser-profile locations, as runs of path segments found anywhere in
25
- * the path. Hidden folders as such are allowed (`decisions/security-compatibility.md`).
26
- */
27
- const CREDENTIAL_PLACES = [
28
- ".ssh",
29
- ".gnupg",
30
- ".aws",
31
- ".azure",
32
- ".kube",
33
- ".secrets",
34
- "secrets",
35
- ".password-store",
36
- ".env",
37
- ".npmrc",
38
- ".pypirc",
39
- ".netrc",
40
- "_netrc",
41
- ".git-credentials",
42
- "credentials.yml.enc",
43
- "master.key",
44
- ".config/git/credentials",
45
- ".config/gh",
46
- ".config/gcloud",
47
- ".config/autostart",
48
- ".docker/config.json",
49
- ".claude/.credentials.json",
50
- ".codex/auth.json",
51
- ".local/share/keyrings",
52
- "Library/Keychains",
53
- ".mozilla",
54
- ".config/google-chrome",
55
- ".config/chromium",
56
- ".config/BraveSoftware",
57
- ".config/microsoft-edge",
58
- "Library/Application Support/Google/Chrome",
59
- "Library/Application Support/Chromium",
60
- "Library/Application Support/BraveSoftware",
61
- "Library/Application Support/Microsoft Edge",
62
- "Library/Application Support/Firefox",
63
- "Library/Safari",
64
- "Library/Cookies",
65
- "AppData/Local/Google/Chrome",
66
- "AppData/Local/Chromium",
67
- "AppData/Local/BraveSoftware",
68
- "AppData/Local/Microsoft/Edge",
69
- "AppData/Roaming/Mozilla/Firefox",
70
- "AppData/Local/Microsoft/Credentials",
71
- "AppData/Roaming/Microsoft/Credentials",
72
- "AppData/Roaming/Microsoft/Protect",
73
- "AppData/Roaming/gcloud",
74
- "AppData/Roaming/GitHub CLI",
75
- ].map((place) => place.split("/"));
76
- /** Every WireCat app's folders hold its sessions and tokens; the shared `WireCat` one holds the store. */
77
- const WIRECAT_APPS = [
78
- { appName: "max-cli", prefix: "MAX" },
79
- { appName: "tg-cli", prefix: "TG" },
80
- { appName: "drive-cli", prefix: "DRIVE" },
81
- { appName: "cli-memo", prefix: "MEMO" },
82
- { appName: "zm", prefix: "ZM" },
83
- { appName: "WireCat", prefix: "WIRECAT" },
84
- { appName: "cli-messaging", prefix: "MESSAGING" },
85
- { appName: "cli-common", prefix: "CLI_COMMON" },
86
- ];
87
- const PLACES_FOLDED = CREDENTIAL_PLACES.map((place) => place.map((part) => part.toLowerCase()));
88
- export const refusedPlace = (path, { env = process.env, platform = process.platform } = {}) => {
89
- // APFS and NTFS match names regardless of case by default, so `~/.SSH` is `~/.ssh` there.
90
- const insensitive = platform === "darwin" || platform === "win32";
91
- const fold = (value) => (insensitive ? value.toLowerCase() : value);
92
- const places = insensitive ? PLACES_FOLDED : CREDENTIAL_PLACES;
93
- const own = WIRECAT_APPS.flatMap((app) => Object.values(resolvePaths({ ...app, env, platform })));
94
- // The store file and its -wal and -shm, not its folder: MESSAGING_STORE may sit in the home folder.
95
- const store = resolve(storePath(env));
96
- let real = resolve(path);
97
- try {
98
- real = realpathSync(path);
99
- }
100
- catch { }
101
- return [resolve(path), real].some((candidate) => {
102
- const parts = candidate.split(sep).map(fold);
103
- return (parts.some((part) => /^\.env\./.test(part)) ||
104
- places.some((place) => parts.some((_, start) => place.every((name, at) => parts[start + at] === name))) ||
105
- own.some((dir) => inside(candidate, dir, fold)) ||
106
- [store, `${store}-wal`, `${store}-shm`].some((file) => fold(file) === fold(candidate)));
107
- });
108
- };
109
- const inside = (path, dir, fold) => {
110
- const way = relative(fold(resolve(dir)), fold(path));
111
- return way === "" || (!way.startsWith("..") && !isAbsolute(way));
112
- };
113
24
  export const refuseProtected = (path, { anyFile = false } = {}) => {
114
- if (!anyFile && refusedPlace(path)) {
25
+ if (!anyFile && refusedPlace(path, MAX_APP, process.env)) {
115
26
  throw new CliError("validation_error", `cannot send ${path}: known credential files, WireCat apps' folders and the message store are not sent — ` +
116
27
  "add --allow-any-file if this file is meant to go");
117
28
  }
@@ -1 +1 @@
1
- {"version":3,"file":"upload.js","sourceRoot":"","sources":["../src/upload.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"upload.js","sourceRoot":"","sources":["../src/upload.ts"],"names":[],"mappings":"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"}
package/dist/version.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- export declare const VERSION = "0.53.0";
1
+ export declare const VERSION = "0.54.0";
2
2
  //# sourceMappingURL=version.d.ts.map
package/dist/version.js CHANGED
@@ -1,2 +1,2 @@
1
- export const VERSION = "0.53.0";
1
+ export const VERSION = "0.54.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.53.0",
3
+ "version": "0.54.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",
@@ -90,7 +90,7 @@
90
90
  "standards:check": "node config/wirecat/check.mjs",
91
91
  "docs:lint": "markdownlint-cli2",
92
92
  "docs:spell": "cspell lint --config cspell.json --no-progress README.md",
93
- "ci:quick": "pnpm typecheck",
93
+ "ci:quick": "pnpm typecheck && pnpm build && pnpm lint:commands",
94
94
  "contracts:check": "cli-contract contracts/plan.json",
95
95
  "contracts:upgrade": "pnpm --dir contracts/previous install --frozen-lockfile --ignore-scripts && cli-contract contracts/upgrade.json && cli-contract contracts/legacy-store.json",
96
96
  "security:no-leak": "cli-testing security no-leak . contracts/no-leak.json",
@@ -100,8 +100,8 @@
100
100
  "@modelcontextprotocol/server": "2.1.0",
101
101
  "@msgpack/msgpack": "3.1.3",
102
102
  "@valibot/to-json-schema": "1.8.0",
103
- "@wirecat/cli-base": "0.28.1",
104
- "@wirecat/cli-core": "0.279.0",
103
+ "@wirecat/cli-base": "0.31.1",
104
+ "@wirecat/cli-core": "0.285.0",
105
105
  "commander": "15.0.0",
106
106
  "lossless-json": "4.3.1",
107
107
  "ogg-opus-decoder": "1.7.5",
@@ -25,7 +25,7 @@ description: >-
25
25
  `max commands schema messages list --json` показывает схемы и эффекты одной команды.
26
26
  Используйте `--json --no-input` для работы без вопросов; секреты передавайте явно через pipe.
27
27
  `--json=id,text` оставляет эти поля каждого элемента списка вместе со страницей и полнотой. Для id
28
- достаточно `--json=id`. `--max-output-bytes` и `--max-input-bytes` задают byte budgets;
28
+ достаточно `--json=id`. Точка выбирает вложенное поле: `--json=ref,text,reply_to.text`. `--max-output-bytes` и `--max-input-bytes` задают byte budgets;
29
29
  одноразовые действия имеют срок 30 секунд, меняемый через `--timeout`.
30
30
  Перед чувствительной записью `--dry-run` проверяет форму запроса и права до действия;
31
31
  общий preview не подключается к мессенджеру, не резервирует запись и оставляет цели непроверенными.
@@ -137,8 +137,8 @@ remove|admins|update|link reset|requests accept|requests decline` видят д
137
137
  при подтверждённой дедупликации провайдера и с теми же чатом, темой, содержимым и `--operation-id`;
138
138
  никакой автоматической повторной записи только по коду ошибки.
139
139
 
140
- 5. **Искать начинайте с `max personal search all`**: сообщения, почта и заметки на этой машине одним ответом, у каждой
141
- находки её вид (`message`, `mail`, `note`). Уже: `max personal search messages`, `search mail`, `search notes`,
140
+ 5. **Искать начинайте с `max personal search all`**: сообщения и заметки на этой машине одним ответом, у каждой
141
+ находки её вид (`message`, `note`). Почта — не здесь: `memo search mail`. Уже: `max personal search messages`, `search notes`,
142
142
  `search conversations` (по смыслу); весь поиск — под `max personal search`.
143
143
  Для вопроса обычными словами или неточной формулировки используй
144
144
  `max personal search messages '<вопрос>' --discover` или MCP `discover: true`. Это локальный поиск без
@@ -151,7 +151,6 @@ remove|admins|update|link reset|requests accept|requests decline` видят д
151
151
  говорить, что сообщения нет. Слова и фразы находят формы слов; `exact:` или `--exact` — только точную форму.
152
152
  Default — строгий профиль Lucene:
153
153
  фразы, AND/OR/NOT, field groups и date ranges. `alpha OR beta gamma` = `(alpha OR beta) AND gamma`.
154
- Для прежних filters/discovery — `--language legacy`; --regex — отдельный JS iu mode с пределами.
155
154
  Для version/coverage используйте --json; пустая выдача не доказывает отсутствие сообщения.
156
155
  `--timezone` задаёт календарную zone; kind:bot и in:bots имеют разные смыслы.
157
156
  Term/body regex различаются. Даты — `date:today`, `date:7d`; файл — `filename:*.pdf`, `size>10MB`
@@ -246,6 +245,9 @@ max personal inbox --new --json # что пришло с
246
245
  max personal review 'date>"2026-09-23T09:00:00Z"' --json # всё, свои тоже, для обзора «кто кому должен»
247
246
  max personal review 'chat:"-1000"' --unanswered 4h --json # вопросы в группе, на которые 4 часа не ответили ни владелец, ни админы
248
247
  max personal tasks list state:open --json # что ждёт ответа владельца; задачи открывает и закрывает review
248
+ max personal tasks add <ссылка> --type request --category documents --json
249
+ # выход 2 task.duplicate-candidates: возможно, это та же задача; повторите с --attach <задача> или --new
250
+ max personal tasks duplicates --json # пары, которые могут быть одной задачей; tasks merge <дубль> --into <задача>
249
251
  max personal tasks close <задача> --as dismissed --reason no-reply-needed --json # только когда владелец так решил
250
252
  max personal watch --jsonl # новые сообщения по мере прихода; `max personal serve` запустится сам
251
253
  max personal watch --events --jsonl # плюс правки, удаления, реакции, прочтения, изменения чатов; поле "event"
@@ -1,3 +0,0 @@
1
- import type { Command } from "commander";
2
- export declare const migrateInboxPoint: (command: Command) => void;
3
- //# sourceMappingURL=inbox-point.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"inbox-point.d.ts","sourceRoot":"","sources":["../src/inbox-point.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAGxC,eAAO,MAAM,iBAAiB,YAAa,OAAO,KAAG,IAQpD,CAAA"}
@@ -1,17 +0,0 @@
1
- import { existsSync } from "node:fs";
2
- import { join } from "node:path";
3
- import { resolvePaths, writeSecurely } from "@wirecat/cli-base";
4
- import { forCommand } from "./commands/context.js";
5
- export const migrateInboxPoint = (command) => {
6
- if (command.optsWithGlobals().offline)
7
- return;
8
- const { store, settings } = forCommand(command);
9
- const point = join(resolvePaths({ appName: "max-cli", prefix: "MAX" }).state, "inbox", `${settings.profile}.json`);
10
- if (existsSync(point))
11
- return;
12
- const lastCheckAt = store.readState().lastCheckAt;
13
- if (lastCheckAt === undefined)
14
- return;
15
- writeSecurely(point, `${JSON.stringify({ lastCheckAt })}\n`, 0o600);
16
- };
17
- //# sourceMappingURL=inbox-point.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"inbox-point.js","sourceRoot":"","sources":["../src/inbox-point.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AACpC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAE/D,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAElD,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,OAAgB,EAAQ,EAAE;IAC1D,IAAI,OAAO,CAAC,eAAe,EAAyB,CAAC,OAAO;QAAE,OAAM;IACpE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,UAAU,CAAC,OAAO,CAAC,CAAA;IAC/C,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,QAAQ,CAAC,OAAO,OAAO,CAAC,CAAA;IAClH,IAAI,UAAU,CAAC,KAAK,CAAC;QAAE,OAAM;IAC7B,MAAM,WAAW,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC,WAAW,CAAA;IACjD,IAAI,WAAW,KAAK,SAAS;QAAE,OAAM;IACrC,aAAa,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,WAAW,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;AACrE,CAAC,CAAA"}