@leemour/max-cli 0.10.0 → 0.12.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 (249) hide show
  1. package/README.md +25 -4
  2. package/dist/cache/index.d.ts.map +1 -1
  3. package/dist/cache/index.js +10 -4
  4. package/dist/cache/index.js.map +1 -1
  5. package/dist/client.d.ts +35 -2
  6. package/dist/client.d.ts.map +1 -1
  7. package/dist/client.js +178 -44
  8. package/dist/client.js.map +1 -1
  9. package/dist/commands/backup.d.ts.map +1 -1
  10. package/dist/commands/backup.js +6 -2
  11. package/dist/commands/backup.js.map +1 -1
  12. package/dist/commands/cache.d.ts.map +1 -1
  13. package/dist/commands/cache.js +6 -5
  14. package/dist/commands/cache.js.map +1 -1
  15. package/dist/commands/chats.js +2 -2
  16. package/dist/commands/chats.js.map +1 -1
  17. package/dist/commands/complete.d.ts.map +1 -1
  18. package/dist/commands/complete.js +28 -22
  19. package/dist/commands/complete.js.map +1 -1
  20. package/dist/commands/config.d.ts.map +1 -1
  21. package/dist/commands/config.js +5 -1
  22. package/dist/commands/config.js.map +1 -1
  23. package/dist/commands/context.d.ts +4 -0
  24. package/dist/commands/context.d.ts.map +1 -1
  25. package/dist/commands/context.js +6 -14
  26. package/dist/commands/context.js.map +1 -1
  27. package/dist/commands/doctor.js +51 -39
  28. package/dist/commands/doctor.js.map +1 -1
  29. package/dist/commands/mcp.js +3 -3
  30. package/dist/commands/mcp.js.map +1 -1
  31. package/dist/commands/messages.d.ts.map +1 -1
  32. package/dist/commands/messages.js +6 -4
  33. package/dist/commands/messages.js.map +1 -1
  34. package/dist/commands/models.d.ts.map +1 -1
  35. package/dist/commands/models.js +29 -23
  36. package/dist/commands/models.js.map +1 -1
  37. package/dist/commands/recipients.d.ts.map +1 -1
  38. package/dist/commands/recipients.js +25 -17
  39. package/dist/commands/recipients.js.map +1 -1
  40. package/dist/commands/sends.d.ts.map +1 -1
  41. package/dist/commands/sends.js +8 -6
  42. package/dist/commands/sends.js.map +1 -1
  43. package/dist/commands/server.d.ts.map +1 -1
  44. package/dist/commands/server.js +43 -35
  45. package/dist/commands/server.js.map +1 -1
  46. package/dist/commands/session.d.ts.map +1 -1
  47. package/dist/commands/session.js +6 -10
  48. package/dist/commands/session.js.map +1 -1
  49. package/dist/commands/watch.d.ts +17 -0
  50. package/dist/commands/watch.d.ts.map +1 -1
  51. package/dist/commands/watch.js +73 -38
  52. package/dist/commands/watch.js.map +1 -1
  53. package/dist/config.d.ts +1 -1
  54. package/dist/config.d.ts.map +1 -1
  55. package/dist/config.js +18 -2
  56. package/dist/config.js.map +1 -1
  57. package/dist/diagnose.d.ts +4 -3
  58. package/dist/diagnose.d.ts.map +1 -1
  59. package/dist/diagnose.js +4 -4
  60. package/dist/diagnose.js.map +1 -1
  61. package/dist/domain/models.d.ts +20 -0
  62. package/dist/domain/models.d.ts.map +1 -1
  63. package/dist/domain/models.js.map +1 -1
  64. package/dist/download.d.ts +22 -3
  65. package/dist/download.d.ts.map +1 -1
  66. package/dist/download.js +133 -27
  67. package/dist/download.js.map +1 -1
  68. package/dist/export.d.ts +3 -0
  69. package/dist/export.d.ts.map +1 -1
  70. package/dist/export.js +13 -9
  71. package/dist/export.js.map +1 -1
  72. package/dist/generated/client.generated.d.ts +9 -0
  73. package/dist/generated/client.generated.d.ts.map +1 -1
  74. package/dist/generated/client.generated.js +9 -0
  75. package/dist/generated/client.generated.js.map +1 -1
  76. package/dist/generated/opcodes.generated.d.ts +3 -0
  77. package/dist/generated/opcodes.generated.d.ts.map +1 -1
  78. package/dist/generated/opcodes.generated.js +3 -0
  79. package/dist/generated/opcodes.generated.js.map +1 -1
  80. package/dist/generated/operations.generated.d.ts +20 -0
  81. package/dist/generated/operations.generated.d.ts.map +1 -1
  82. package/dist/generated/operations.generated.js +6 -0
  83. package/dist/generated/operations.generated.js.map +1 -1
  84. package/dist/mcp/confirm.d.ts +21 -9
  85. package/dist/mcp/confirm.d.ts.map +1 -1
  86. package/dist/mcp/confirm.js +55 -29
  87. package/dist/mcp/confirm.js.map +1 -1
  88. package/dist/mcp/instructions.js +3 -3
  89. package/dist/mcp/instructions.js.map +1 -1
  90. package/dist/mcp/prompts.d.ts +7 -0
  91. package/dist/mcp/prompts.d.ts.map +1 -0
  92. package/dist/mcp/prompts.js +45 -0
  93. package/dist/mcp/prompts.js.map +1 -0
  94. package/dist/mcp/resources.d.ts +12 -0
  95. package/dist/mcp/resources.d.ts.map +1 -0
  96. package/dist/mcp/resources.js +42 -0
  97. package/dist/mcp/resources.js.map +1 -0
  98. package/dist/mcp/server.d.ts.map +1 -1
  99. package/dist/mcp/server.js +4 -0
  100. package/dist/mcp/server.js.map +1 -1
  101. package/dist/mcp/tools.d.ts.map +1 -1
  102. package/dist/mcp/tools.js +143 -15
  103. package/dist/mcp/tools.js.map +1 -1
  104. package/dist/output.d.ts.map +1 -1
  105. package/dist/output.js +24 -2
  106. package/dist/output.js.map +1 -1
  107. package/dist/program.d.ts.map +1 -1
  108. package/dist/program.js +51 -5
  109. package/dist/program.js.map +1 -1
  110. package/dist/protocol/connection.d.ts +2 -0
  111. package/dist/protocol/connection.d.ts.map +1 -1
  112. package/dist/protocol/connection.js +27 -5
  113. package/dist/protocol/connection.js.map +1 -1
  114. package/dist/protocol/frame.d.ts +2 -0
  115. package/dist/protocol/frame.d.ts.map +1 -1
  116. package/dist/protocol/frame.js +3 -1
  117. package/dist/protocol/frame.js.map +1 -1
  118. package/dist/protocol/lz4.js +8 -5
  119. package/dist/protocol/lz4.js.map +1 -1
  120. package/dist/rendering/messages.js +9 -10
  121. package/dist/rendering/messages.js.map +1 -1
  122. package/dist/report.d.ts +10 -6
  123. package/dist/report.d.ts.map +1 -1
  124. package/dist/report.js +45 -11
  125. package/dist/report.js.map +1 -1
  126. package/dist/resolve.d.ts +4 -3
  127. package/dist/resolve.d.ts.map +1 -1
  128. package/dist/resolve.js +9 -10
  129. package/dist/resolve.js.map +1 -1
  130. package/dist/runs/recording.d.ts +1 -0
  131. package/dist/runs/recording.d.ts.map +1 -1
  132. package/dist/runs/recording.js +13 -0
  133. package/dist/runs/recording.js.map +1 -1
  134. package/dist/sends/guard.d.ts +35 -4
  135. package/dist/sends/guard.d.ts.map +1 -1
  136. package/dist/sends/guard.js +128 -28
  137. package/dist/sends/guard.js.map +1 -1
  138. package/dist/sends/journal.d.ts +17 -3
  139. package/dist/sends/journal.d.ts.map +1 -1
  140. package/dist/sends/journal.js +62 -2
  141. package/dist/sends/journal.js.map +1 -1
  142. package/dist/sends/recipients.d.ts +3 -1
  143. package/dist/sends/recipients.d.ts.map +1 -1
  144. package/dist/sends/recipients.js +7 -2
  145. package/dist/sends/recipients.js.map +1 -1
  146. package/dist/server/lines.d.ts +8 -2
  147. package/dist/server/lines.d.ts.map +1 -1
  148. package/dist/server/lines.js +13 -2
  149. package/dist/server/lines.js.map +1 -1
  150. package/dist/server/server-connection.d.ts +9 -6
  151. package/dist/server/server-connection.d.ts.map +1 -1
  152. package/dist/server/server-connection.js +16 -7
  153. package/dist/server/server-connection.js.map +1 -1
  154. package/dist/server/server.d.ts +11 -4
  155. package/dist/server/server.d.ts.map +1 -1
  156. package/dist/server/server.js +132 -20
  157. package/dist/server/server.js.map +1 -1
  158. package/dist/server/start.d.ts +2 -0
  159. package/dist/server/start.d.ts.map +1 -1
  160. package/dist/server/start.js +8 -3
  161. package/dist/server/start.js.map +1 -1
  162. package/dist/session/handshake.d.ts +12 -1
  163. package/dist/session/handshake.d.ts.map +1 -1
  164. package/dist/session/handshake.js +4 -2
  165. package/dist/session/handshake.js.map +1 -1
  166. package/dist/session/prompt.d.ts.map +1 -1
  167. package/dist/session/prompt.js +7 -1
  168. package/dist/session/prompt.js.map +1 -1
  169. package/dist/session/store.d.ts +9 -2
  170. package/dist/session/store.d.ts.map +1 -1
  171. package/dist/session/store.js +19 -4
  172. package/dist/session/store.js.map +1 -1
  173. package/dist/spec/define.d.ts +12 -0
  174. package/dist/spec/define.d.ts.map +1 -1
  175. package/dist/spec/define.js.map +1 -1
  176. package/dist/spec/guards.d.ts +16 -0
  177. package/dist/spec/guards.d.ts.map +1 -0
  178. package/dist/spec/guards.js +30 -0
  179. package/dist/spec/guards.js.map +1 -0
  180. package/dist/spec/index.d.ts.map +1 -1
  181. package/dist/spec/index.js +6 -0
  182. package/dist/spec/index.js.map +1 -1
  183. package/dist/spec/operations/account.d.ts.map +1 -1
  184. package/dist/spec/operations/account.js +3 -0
  185. package/dist/spec/operations/account.js.map +1 -1
  186. package/dist/spec/operations/assets.d.ts +10 -0
  187. package/dist/spec/operations/assets.d.ts.map +1 -0
  188. package/dist/spec/operations/assets.js +20 -0
  189. package/dist/spec/operations/assets.js.map +1 -0
  190. package/dist/spec/operations/attachments.d.ts.map +1 -1
  191. package/dist/spec/operations/attachments.js +2 -0
  192. package/dist/spec/operations/attachments.js.map +1 -1
  193. package/dist/spec/operations/banners.d.ts +7 -0
  194. package/dist/spec/operations/banners.d.ts.map +1 -0
  195. package/dist/spec/operations/banners.js +16 -0
  196. package/dist/spec/operations/banners.js.map +1 -0
  197. package/dist/spec/operations/calls.d.ts +8 -0
  198. package/dist/spec/operations/calls.d.ts.map +1 -0
  199. package/dist/spec/operations/calls.js +18 -0
  200. package/dist/spec/operations/calls.js.map +1 -0
  201. package/dist/spec/operations/chats.d.ts.map +1 -1
  202. package/dist/spec/operations/chats.js +46 -0
  203. package/dist/spec/operations/chats.js.map +1 -1
  204. package/dist/spec/operations/contacts.d.ts.map +1 -1
  205. package/dist/spec/operations/contacts.js +8 -0
  206. package/dist/spec/operations/contacts.js.map +1 -1
  207. package/dist/spec/operations/folders.d.ts.map +1 -1
  208. package/dist/spec/operations/folders.js +5 -0
  209. package/dist/spec/operations/folders.js.map +1 -1
  210. package/dist/spec/operations/login.d.ts.map +1 -1
  211. package/dist/spec/operations/login.js +6 -0
  212. package/dist/spec/operations/login.js.map +1 -1
  213. package/dist/spec/operations/messages.d.ts.map +1 -1
  214. package/dist/spec/operations/messages.js +50 -0
  215. package/dist/spec/operations/messages.js.map +1 -1
  216. package/dist/spec/operations/session.d.ts +5 -1
  217. package/dist/spec/operations/session.d.ts.map +1 -1
  218. package/dist/spec/operations/session.js +9 -1
  219. package/dist/spec/operations/session.js.map +1 -1
  220. package/dist/spec/operations/uploads.d.ts.map +1 -1
  221. package/dist/spec/operations/uploads.js +2 -0
  222. package/dist/spec/operations/uploads.js.map +1 -1
  223. package/dist/transcribe/index.d.ts.map +1 -1
  224. package/dist/transcribe/index.js +4 -1
  225. package/dist/transcribe/index.js.map +1 -1
  226. package/dist/transcribe/install.d.ts +3 -1
  227. package/dist/transcribe/install.d.ts.map +1 -1
  228. package/dist/transcribe/install.js +24 -1
  229. package/dist/transcribe/install.js.map +1 -1
  230. package/dist/upload.d.ts +3 -1
  231. package/dist/upload.d.ts.map +1 -1
  232. package/dist/upload.js +34 -4
  233. package/dist/upload.js.map +1 -1
  234. package/dist/version.d.ts +1 -1
  235. package/dist/version.js +1 -1
  236. package/package.json +11 -11
  237. package/skills/max-cli/SKILL.md +6 -2
  238. package/dist/testing/mock-max.d.ts +0 -49
  239. package/dist/testing/mock-max.d.ts.map +0 -1
  240. package/dist/testing/mock-max.js +0 -80
  241. package/dist/testing/mock-max.js.map +0 -1
  242. package/dist/testing/sandbox.d.ts +0 -2
  243. package/dist/testing/sandbox.d.ts.map +0 -1
  244. package/dist/testing/sandbox.js +0 -36
  245. package/dist/testing/sandbox.js.map +0 -1
  246. package/dist/testing/unscripted.d.ts +0 -2
  247. package/dist/testing/unscripted.d.ts.map +0 -1
  248. package/dist/testing/unscripted.js +0 -18
  249. package/dist/testing/unscripted.js.map +0 -1
@@ -1,12 +1,12 @@
1
1
  import { existsSync } from "node:fs";
2
2
  import { script } from "@bomb.sh/tab";
3
- import { CliError, visibleControls } from "@leemour/cli-core";
3
+ import { CliError, singleLine } from "@leemour/cli-core";
4
4
  import { describeOptions, describeProgram } from "@leemour/cli-core/commands";
5
5
  import { formatSuggestions, suggest } from "@leemour/cli-core/completion";
6
6
  import { Command } from "commander";
7
7
  import { openProfileCache, profileCacheFile } from "../cache/index.js";
8
8
  import { configuredProfiles } from "../config.js";
9
- import { commandWords, DEFAULT_PROFILE, liftProfile, rootOf } from "../profile.js";
9
+ import { commandWords, DEFAULT_PROFILE, liftProfile, rootOf, usableProfileName } from "../profile.js";
10
10
  import { outputFor } from "./context.js";
11
11
  const SHELLS = ["zsh", "bash", "fish", "powershell"];
12
12
  /**
@@ -37,7 +37,7 @@ export const completeCommand = () => new Command("complete")
37
37
  }
38
38
  // The last word is still being typed, so it is never taken for a profile: `mess` is on its way to `messages`.
39
39
  const { profile, rest } = words.length > 1 ? liftProfile(words, commandWords(root)) : { profile: undefined, rest: words };
40
- const cache = await readableCache(profile ?? process.env.MAX_PROFILE ?? DEFAULT_PROFILE);
40
+ const cache = await readableCache(profile ?? process.env.MAX_PROFILE_LOCK ?? process.env.MAX_PROFILE ?? DEFAULT_PROFILE);
41
41
  try {
42
42
  const suggestions = suggest({
43
43
  commands: describeProgram(root),
@@ -51,7 +51,19 @@ export const completeCommand = () => new Command("complete")
51
51
  cache?.close();
52
52
  }
53
53
  });
54
- const readableCache = async (profile) => existsSync(profileCacheFile(profile)) ? openProfileCache(profile) : undefined;
54
+ /** A half-typed or odd first word, or another profile than a locked one, gets no names rather than an error. */
55
+ const readableCache = async (profile) => {
56
+ const lock = process.env.MAX_PROFILE_LOCK;
57
+ if (lock && profile !== lock)
58
+ return undefined;
59
+ try {
60
+ usableProfileName(profile);
61
+ }
62
+ catch {
63
+ return undefined;
64
+ }
65
+ return existsSync(profileCacheFile(profile)) ? openProfileCache(profile) : undefined;
66
+ };
55
67
  const sourcesFrom = (cache, atTheStart) => {
56
68
  const chats = () => (cache ? chatSuggestions(cache) : []);
57
69
  return {
@@ -60,24 +72,18 @@ const sourcesFrom = (cache, atTheStart) => {
60
72
  ...(atTheStart ? { firstWord: profileNames } : {}),
61
73
  };
62
74
  };
63
- /** Ids, with the title beside them: a title with a space in it would reach `max` as two words. */
64
- const chatSuggestions = (cache) => cache.chats.page({ limit: 500, offset: 0 }).flatMap((chat) => {
65
- const title = chat.title ?? "";
66
- const shown = visibleControls(title);
67
- // Offered as a word only when it is one, and only when nothing in it had to be made visible.
68
- return [
69
- { value: chat.id, description: shown },
70
- ...(/^\S+$/.test(title) && shown === title ? [{ value: title, description: chat.id }] : []),
71
- ];
72
- });
73
- const personSuggestions = (cache) => cache.people.page({ order: "name", limit: 500, offset: 0 }).flatMap((person) => {
74
- const name = visibleControls(person.name ?? "");
75
- const username = person.username && visibleControls(person.username) === person.username ? person.username : null;
76
- return [
77
- { value: person.id, description: name },
78
- ...(username ? [{ value: `@${username}`, description: name }] : []),
79
- ];
80
- });
75
+ /**
76
+ * **Ids only, never a title or a name as the word.** bash's `compgen -W` expands `$(…)` in every
77
+ * word it is given, and a title is whatever somebody else typed — so the id is the word, and the
78
+ * title rides along as a description, on one line: bash splits the answer on newlines, so a
79
+ * newline in a title would become a word of its own.
80
+ */
81
+ const chatSuggestions = (cache) => cache.chats
82
+ .page({ limit: 500, offset: 0 })
83
+ .map((chat) => ({ value: chat.id, description: singleLine(chat.title ?? "") }));
84
+ const personSuggestions = (cache) => cache.people
85
+ .page({ order: "name", limit: 500, offset: 0 })
86
+ .map((person) => ({ value: person.id, description: singleLine(person.name ?? "") }));
81
87
  const profileNames = () => {
82
88
  try {
83
89
  return configuredProfiles();
@@ -1 +1 @@
1
- {"version":3,"file":"complete.js","sourceRoot":"","sources":["../../src/commands/complete.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"complete.js","sourceRoot":"","sources":["../../src/commands/complete.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAmBnC,eAAO,MAAM,aAAa,QAAO,OAmEhC,CAAA"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAmBnC,eAAO,MAAM,aAAa,QAAO,OA0EhC,CAAA"}
@@ -1,6 +1,6 @@
1
1
  import { existsSync, readdirSync } from "node:fs";
2
2
  import { join } from "node:path";
3
- import { pathsAreOverridden, resolvePaths } from "@leemour/cli-core";
3
+ import { CliError, pathsAreOverridden, resolvePaths } from "@leemour/cli-core";
4
4
  import { Command } from "commander";
5
5
  import { ALL_SETTINGS, changeSetting } from "../config.js";
6
6
  import { forCommand } from "./context.js";
@@ -64,6 +64,10 @@ export const configCommand = () => {
64
64
  const value = action === "set" ? String(given) : undefined;
65
65
  const { settings, renderer } = forCommand(this);
66
66
  const defaults = this.opts().defaults === true;
67
+ if (defaults && process.env.MAX_PROFILE_LOCK) {
68
+ // The defaults are every other profile's settings too.
69
+ throw new CliError("permission_error", `this process is locked to profile ${settings.profile} (MAX_PROFILE_LOCK) — --defaults changes every profile`);
70
+ }
67
71
  const saved = changeSetting(settings.configPath, {
68
72
  profile: defaults ? undefined : settings.profile,
69
73
  setting,
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AACjD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,OAAO,EAAE,QAAQ,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAC9E,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,YAAY,EAAE,aAAa,EAAuB,MAAM,cAAc,CAAA;AAC/E,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAEzC,MAAM,KAAK,GAAqB;IAC9B,OAAO;IACP,WAAW;IACX,kBAAkB;IAClB,OAAO;IACP,cAAc;IACd,QAAQ;IACR,OAAO;IACP,iBAAiB;IACjB,UAAU;IACV,OAAO;IACP,cAAc;IACd,aAAa;CACd,CAAA;AAED,MAAM,CAAC,MAAM,aAAa,GAAG,GAAY,EAAE;IACzC,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,qDAAqD,CAAC,CAAA;IAExG;;;OAGG;IACH,OAAO;SACJ,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,gFAAgF,CAAC;SAC7F,MAAM,CAAC;QACN,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,UAAU,CAAC,IAAI,CAAC,CAAA;QAC/C,MAAM,UAAU,GAAG,kBAAkB,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAA;QAE5E,QAAQ,CAAC,MAAM,CAAC;YACd,OAAO,EAAE,QAAQ,CAAC,OAAO;YACzB,WAAW,EAAE,QAAQ,CAAC,OAAO,CAAC,OAAO;YACrC,QAAQ,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC,kBAAkB,EAAE,GAAG,iBAAiB,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;YACvF,UAAU,EAAE,QAAQ,CAAC,UAAU;YAC/B,WAAW,EAAE,QAAQ,CAAC,WAAW;YACjC,eAAe,EAAE,UAAU;YAC3B,QAAQ,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;gBAChC,OAAO;gBACP,0DAA0D;gBAC1D,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC;gBACpF,IAAI,EAAE,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC;aAChC,CAAC,CAAC;SACJ,CAAC,CAAA;QAEF,IAAI,UAAU,EAAE,CAAC;YACf,QAAQ,CAAC,IAAI,CACX,0GAA0G;gBACxG,8CAA8C,CACjD,CAAA;QACH,CAAC;IACH,CAAC,CAAC,CAAA;IAEJ,KAAK,MAAM,MAAM,IAAI,CAAC,KAAK,EAAE,OAAO,CAAU,EAAE,CAAC;QAC/C,MAAM,GAAG,GAAG,OAAO;aAChB,OAAO,CAAC,MAAM,CAAC;aACf,QAAQ,CAAC,WAAW,EAAE,WAAW,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;aAC3D,MAAM,CAAC,YAAY,EAAE,0DAA0D,CAAC,CAAA;QACnF,IAAI,MAAM,KAAK,KAAK;YAClB,GAAG;iBACA,QAAQ,CAAC,SAAS,EAAE,iEAAiE,CAAC;iBACtF,WAAW,CAAC,0CAA0C,CAAC,CAAA;;YACvD,GAAG,CAAC,WAAW,CAAC,8CAA8C,CAAC,CAAA;QAEpE,GAAG,CAAC,MAAM,CAAC,UAAyB,OAAe,EAAE,KAAc;YACjE,MAAM,KAAK,GAAG,MAAM,KAAK,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;YAC1D,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,UAAU,CAAC,IAAI,CAAC,CAAA;YAC/C,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,EAA0B,CAAC,QAAQ,KAAK,IAAI,CAAA;YACtE,IAAI,QAAQ,IAAI,OAAO,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;gBAC7C,uDAAuD;gBACvD,MAAM,IAAI,QAAQ,CAChB,kBAAkB,EAClB,qCAAqC,QAAQ,CAAC,OAAO,wDAAwD,CAC9G,CAAA;YACH,CAAC;YACD,MAAM,KAAK,GAAG,aAAa,CAAC,QAAQ,CAAC,UAAU,EAAE;gBAC/C,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO;gBAChD,OAAO;gBACP,KAAK;aACN,CAAC,CAAA;YACF,QAAQ,CAAC,MAAM,CAAC;gBACd,UAAU,EAAE,QAAQ,CAAC,UAAU;gBAC/B,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,YAAY,QAAQ,CAAC,OAAO,EAAE;gBAC7D,OAAO;gBACP,KAAK,EAAE,KAAK;aACb,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,OAAO,OAAO,CAAA;AAChB,CAAC,CAAA;AAED,MAAM,iBAAiB,GAAG,GAAa,EAAE;IACvC,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,UAAU,CAAC,CAAA;IACvF,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,OAAO,EAAE,CAAA;IAC/B,OAAO,WAAW,CAAC,GAAG,CAAC;SACpB,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;SACxC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAA;AAClD,CAAC,CAAA"}
@@ -3,6 +3,7 @@ import type { Command } from "commander";
3
3
  import { MaxClient, type MaxClientOptions } from "../client.js";
4
4
  import { type GlobalFlags, type Settings } from "../config.js";
5
5
  import { type Closeable } from "../deadline.js";
6
+ import { type Reach } from "../download.js";
6
7
  import { type BrowserDoors } from "../session/browser.js";
7
8
  import { SessionStore } from "../session/store.js";
8
9
  import type { UpdateEnvironment } from "../update.js";
@@ -18,6 +19,8 @@ export interface Environment {
18
19
  /** A fresh connection per client — to a scripted MAX in a test. */
19
20
  connection?: () => NonNullable<MaxClientOptions["connection"]>;
20
21
  browser?: BrowserDoors;
22
+ /** Where a download may go; a test serving files from this machine allows it. */
23
+ reach?: Reach;
21
24
  ask?: Ask;
22
25
  interactive?: boolean;
23
26
  columns?: number;
@@ -66,6 +69,7 @@ export interface CommandContext {
66
69
  /** Anything else holding the process open — a browser, a local page — for `--timeout` to shut too. */
67
70
  track: (closeable: Closeable) => void;
68
71
  browser: BrowserDoors;
72
+ reach: Reach;
69
73
  ask: Ask;
70
74
  /** Whether a person is there to scan a code or type one: both stdin and stderr are a terminal. */
71
75
  interactive: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/commands/context.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/commands/context.ts"],"names":[],"mappings":"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"}
@@ -2,12 +2,11 @@ import { existsSync } from "node:fs";
2
2
  import { MaxClient } from "../client.js";
3
3
  import { resolveSettings } from "../config.js";
4
4
  import { withDeadline } from "../deadline.js";
5
+ import { publicOnly } from "../download.js";
5
6
  import { resolveOutput } from "../output.js";
6
7
  import { rootOf } from "../profile.js";
7
8
  import { recorded } from "../runs/recording.js";
8
- import { sendGuard } from "../sends/guard.js";
9
- import { SendJournal, sendsPathFor } from "../sends/journal.js";
10
- import { RecipientList, recipientsPathFor } from "../sends/recipients.js";
9
+ import { guardFor, sharedJournal } from "../sends/guard.js";
11
10
  import { ServerConnection, stopServer } from "../server/server-connection.js";
12
11
  import { ensureServer } from "../server/start.js";
13
12
  import { realBrowser } from "../session/browser.js";
@@ -56,7 +55,8 @@ export const contextFor = (flags, environment = {}) => {
56
55
  // on that is what makes the second one, some day, the leak that keeps the process alive.
57
56
  const clients = [];
58
57
  // Only for the real thing: a test hands in its own store, and must never start a process.
59
- const starts = !environment.store && !environment.connection && settings.serve;
58
+ // A server does not take `MAX_TOKEN` along, so a token from there has no server to share.
59
+ const starts = !environment.store && !environment.connection && settings.serve && !process.env.MAX_TOKEN;
60
60
  return {
61
61
  settings,
62
62
  renderer,
@@ -82,16 +82,7 @@ export const contextFor = (flags, environment = {}) => {
82
82
  timeoutMs: settings.timeoutMs,
83
83
  warn: renderer.note,
84
84
  offline: flags.offline === true,
85
- sends: sendGuard({
86
- profile: settings.profile,
87
- readOnly: settings.readOnly,
88
- readOnlyFrom: settings.sources.readOnly,
89
- ...(settings.allow ? { allow: settings.allow, allowFrom: settings.sources.allow } : {}),
90
- sendsPerHour: settings.sendsPerHour,
91
- journal: new SendJournal(sendsPathFor(settings.profile)),
92
- recipients: new RecipientList(recipientsPathFor(settings.profile)),
93
- warn: renderer.warn,
94
- }),
85
+ sends: sharedJournal(guardFor(settings, renderer.warn), wire),
95
86
  ...(environment.connection ? { connection: environment.connection() } : wire ? { connection: wire } : {}),
96
87
  ...extra,
97
88
  });
@@ -102,6 +93,7 @@ export const contextFor = (flags, environment = {}) => {
102
93
  clients.push(closeable);
103
94
  },
104
95
  browser: environment.browser ?? realBrowser,
96
+ reach: environment.reach ?? publicOnly,
105
97
  ask: environment.ask ?? ((prompt, { secret = false } = {}) => readSecret(prompt, { echo: !secret })),
106
98
  interactive: environment.interactive ?? (process.stdin.isTTY === true && process.stderr.isTTY === true),
107
99
  columns: environment.columns ?? process.stderr.columns,
@@ -1 +1 @@
1
- {"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/commands/context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAGpC,OAAO,EAAE,SAAS,EAAyB,MAAM,cAAc,CAAA;AAC/D,OAAO,EAAoB,eAAe,EAAiB,MAAM,cAAc,CAAA;AAC/E,OAAO,EAAkB,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAC5C,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAA;AACtC,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAA;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAC7C,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAC/D,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AACzE,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAA;AAC7E,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACjD,OAAO,EAAqB,WAAW,EAAE,MAAM,uBAAuB,CAAA;AACtE,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAwBlD,MAAM,YAAY,GAAG,IAAI,OAAO,EAAwB,CAAA;AAExD,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,OAAgB,EAAE,WAAwB,EAAQ,EAAE;IAC1E,YAAY,CAAC,GAAG,CAAC,OAAO,EAAE,WAAW,CAAC,CAAA;AACxC,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,OAAgB,EAAe,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAA;AAEvG,uEAAuE;AACvE,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,OAAgB,EAAE,EAAE;IAC5C,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,aAAa,CAAC,OAAO,CAAC,CAAA;IAC/C,OAAO,aAAa,CAAC;QACnB,GAAG,OAAO,CAAC,eAAe,EAAE;QAC5B,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/B,GAAG,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC;KACtC,CAAC,CAAA;AACJ,CAAC,CAAA;AAqCD;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,OAAgB,EAAkB,EAAE,CAC7D,UAAU,CAAC,OAAO,CAAC,eAAe,EAAuC,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC,CAAA;AAEpG,mGAAmG;AACnG,MAAM,CAAC,MAAM,UAAU,GAAG,CACxB,KAA0C,EAC1C,WAAW,GAAgB,EAAE,EACb,EAAE;IAClB,MAAM,QAAQ,GAAG,eAAe,CAAC,KAAK,CAAC,CAAA;IACvC,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,aAAa,CAAC;QACzD,GAAG,QAAQ;QACX,GAAG,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,WAAW,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAChE,GAAG,CAAC,WAAW,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,WAAW,CAAC,GAAG,EAAE,CAAC;KACnE,CAAC,CAAA;IACF,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,IAAI,YAAY,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAA;IAEtG,gGAAgG;IAChG,yFAAyF;IACzF,MAAM,OAAO,GAAgB,EAAE,CAAA;IAE/B,0FAA0F;IAC1F,MAAM,MAAM,GAAG,CAAC,WAAW,CAAC,KAAK,IAAI,CAAC,WAAW,CAAC,UAAU,IAAI,QAAQ,CAAC,KAAK,CAAA;IAE9E,OAAO;QACL,QAAQ;QACR,QAAQ;QACR,MAAM;QACN,KAAK;QACL,OAAO;QACP,KAAK;QACL,WAAW,EAAE,KAAK,IAAI,EAAE,CAAC,MAAM,IAAI,YAAY,CAAC,KAAK,CAAC;QACtD,UAAU,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,UAAU,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;QACjE,YAAY,EAAE,CAAC,KAAK,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE;YACjD,MAAM,OAAO,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,QAAQ,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;YAC3E,MAAM,MAAM,GAAG,MAAM,IAAI,KAAK,CAAC,OAAO,KAAK,IAAI,CAAA;YAC/C,MAAM,IAAI,GACR,CAAC,GAAG,IAAI,CAAC,MAAM,IAAI,UAAU,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC;gBAChD,CAAC,CAAC,IAAI,gBAAgB,CAAC;oBACnB,IAAI,EAAE,KAAK,CAAC,UAAU,EAAE;oBACxB,KAAK;oBACL,GAAG,OAAO;oBACV,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBACzD,CAAC;gBACJ,CAAC,CAAC,SAAS,CAAA;YACf,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC;gBAC3B,KAAK;gBACL,SAAS,EAAE,QAAQ,CAAC,SAAS;gBAC7B,IAAI,EAAE,QAAQ,CAAC,IAAI;gBACnB,OAAO,EAAE,KAAK,CAAC,OAAO,KAAK,IAAI;gBAC/B,KAAK,EAAE,SAAS,CAAC;oBACf,OAAO,EAAE,QAAQ,CAAC,OAAO;oBACzB,QAAQ,EAAE,QAAQ,CAAC,QAAQ;oBAC3B,YAAY,EAAE,QAAQ,CAAC,OAAO,CAAC,QAAQ;oBACvC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,EAAE,SAAS,EAAE,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBACvF,YAAY,EAAE,QAAQ,CAAC,YAAY;oBACnC,OAAO,EAAE,IAAI,WAAW,CAAC,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;oBACxD,UAAU,EAAE,IAAI,aAAa,CAAC,iBAAiB,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;oBAClE,IAAI,EAAE,QAAQ,CAAC,IAAI;iBACpB,CAAC;gBACF,GAAG,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,WAAW,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACzG,GAAG,KAAK;aACT,CAAC,CAAA;YACF,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;YACpB,OAAO,MAAM,CAAA;QACf,CAAC;QACD,KAAK,EAAE,CAAC,SAAS,EAAE,EAAE;YACnB,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;QACzB,CAAC;QACD,OAAO,EAAE,WAAW,CAAC,OAAO,IAAI,WAAW;QAC3C,GAAG,EAAE,WAAW,CAAC,GAAG,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,MAAM,GAAG,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,UAAU,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC;QACpG,WAAW,EAAE,WAAW,CAAC,WAAW,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,KAAK,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,KAAK,IAAI,CAAC;QACvG,OAAO,EAAE,WAAW,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC,OAAO;QACtD,GAAG,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,CACrB,YAAY,CAAC,QAAQ,CAAC,gBAAgB,EAAE,OAAO,EAAE,GAAG,EAAE,CACpD,QAAQ,CACN;YACE,OAAO;YACP,OAAO,EAAE,QAAQ,CAAC,OAAO;YACzB,OAAO,EAAE,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,UAAU,EAAE,QAAQ,CAAC,cAAc,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,EAAE;YAChG,MAAM;YACN,OAAO;YACP,QAAQ,EAAE,QAAQ,CAAC,eAAe;SACnC,EACD,IAAI,CACL,CACF;KACJ,CAAA;AACH,CAAC,CAAA"}
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/commands/context.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,7 @@ import { resolve } from "node:path";
2
2
  import { writeSecurely } from "@leemour/cli-core";
3
3
  import { Command } from "commander";
4
4
  import { diagnose } from "../diagnose.js";
5
- import { buildReport, mailtoFor, REPORT_ADDRESS, reportFileName } from "../report.js";
5
+ import { buildReport, issueUrlFor, REPORT_URL, reportFileName } from "../report.js";
6
6
  import { runsDirFor } from "../runs/run.js";
7
7
  import { SendJournal, sendsPathFor } from "../sends/journal.js";
8
8
  import { forCommand } from "./context.js";
@@ -61,12 +61,13 @@ const diagnoseProfile = (profile, store) => diagnose({
61
61
  profile,
62
62
  // Reading the keyring is the one thing here that can prompt or hang on a locked keyring,
63
63
  // so its failure is "no token found" rather than a failed command.
64
- hasKeyringToken: () => {
64
+ storedToken: () => {
65
65
  try {
66
- return store.readToken() !== undefined;
66
+ const source = store.tokenSource();
67
+ return source === "keyring" || source === "file" ? source : undefined;
67
68
  }
68
69
  catch {
69
- return false;
70
+ return undefined;
70
71
  }
71
72
  },
72
73
  });
@@ -74,39 +75,20 @@ const INCLUDES = [
74
75
  "версия max, среда (node или bun) и система",
75
76
  "то же, что показывает `max doctor`; домашний каталог заменён на ~",
76
77
  "последний запуск, который кончился ошибкой: команда, запросы к MAX, коды ошибок, время",
77
- "последние 20 действий-записей (отправки, реакции, удаления): исход и номера, без текста",
78
+ "последние 20 действий-записей (отправки, реакции, удаления): исход, без текста",
79
+ "вместо номеров чатов и сообщений — метки: одинаковые внутри отчёта и разные в каждом новом",
78
80
  ];
79
81
  const EXCLUDES = ["текстов сообщений", "названий чатов", "имён", "номеров телефонов", "токена"];
80
82
  /**
81
- * **A report is sent by the person, not by `max`**: there is no server of ours, and a mail password
82
- * inside a public package is anybody's (`NEED-267`). So `create` writes a file and prints a
83
- * `mailto:` link and the steps; the person's own mail program does the sending.
83
+ * **A report is posted by the person, not by `max`**: there is no server of ours, and `max` holds
84
+ * no GitHub credentials. So `create` writes a file and prints a pre-filled new-issue link and the
85
+ * steps (`NEED-267`).
84
86
  */
85
87
  const reportCommand = () => {
86
88
  const report = new Command("report").description("what a problem report holds and where it goes; writes nothing");
87
- report.action(function () {
88
- const { renderer, format, streams } = forCommand(this);
89
- if (format !== "pretty") {
90
- renderer.result({
91
- sendTo: REPORT_ADDRESS,
92
- includes: INCLUDES,
93
- excludes: EXCLUDES,
94
- create: "max doctor report create",
95
- });
96
- return;
97
- }
98
- streams.data([
99
- `Отчёт о проблеме — один файл для автора max. Он отправляется письмом на ${REPORT_ADDRESS}.`,
100
- "",
101
- "В файле:",
102
- ...INCLUDES.map((line, index) => `- ${line}${index === INCLUDES.length - 1 ? "." : ";"}`),
103
- "",
104
- `В файле нет: ${EXCLUDES.join(", ")}.`,
105
- "Номера чатов и сообщений в нём есть: без вашего входа в MAX они ничего не дают, но это ваши чаты.",
106
- "",
107
- "Создать отчёт: max doctor report create",
108
- "Про определённый запуск: max doctor report create --run <id> (номера — max runs list)",
109
- ].join("\n"));
89
+ report.action(async function () {
90
+ const { renderer, format, streams, run } = forCommand(this);
91
+ await run("doctor report", async () => explain(renderer, format, streams));
110
92
  });
111
93
  report
112
94
  .command("create")
@@ -128,18 +110,18 @@ const reportCommand = () => {
128
110
  });
129
111
  const path = resolve(options.output ?? reportFileName(now));
130
112
  writeSecurely(path, `${JSON.stringify(built, null, 2)}\n`, 0o600);
131
- const mailto = mailtoFor(built, path);
113
+ const issue = issueUrlFor(built, path);
132
114
  const steps = [
133
- `Откройте ссылку: почтовая программа откроет письмо на ${REPORT_ADDRESS} с темой и заготовкой текста. Если ничего не открылось — напишите на этот адрес сами.`,
134
- `Приложите к письму файл ${path}.`,
115
+ `Откройте ссылку: GitHub откроет новую задачу с заголовком и заготовкой текста. Нужен аккаунт на GitHub.`,
116
+ `Перетащите в поле текста файл ${path} — GitHub приложит его.`,
135
117
  "Напишите, что делали, что ожидали и что случилось.",
136
- "Отправьте.",
118
+ "Нажмите «Submit new issue». Задача будет видна всем.",
137
119
  ];
138
120
  const noRun = built.run
139
121
  ? undefined
140
122
  : "Неудачных запусков не записано. Если проблема повторяется, повторите команду, которая не работает, и создайте отчёт снова: неудачный запуск сохранится сам.";
141
123
  if (format !== "pretty") {
142
- renderer.result({ path, sendTo: REPORT_ADDRESS, mailto, run: built.run?.metadata.runId ?? null, steps });
124
+ renderer.result({ path, sendTo: REPORT_URL, issue, run: built.run?.metadata.runId ?? null, steps });
143
125
  if (noRun)
144
126
  renderer.note(noRun);
145
127
  return;
@@ -150,19 +132,49 @@ const reportCommand = () => {
150
132
  "",
151
133
  "Что сделать:",
152
134
  `1. ${steps[0]}`,
153
- ` ${mailto}`,
135
+ ` ${issue}`,
154
136
  ...steps.slice(1).map((step, index) => `${index + 2}. ${step}`),
155
137
  "",
156
- "Перед отправкой файл можно открыть и посмотреть: текстов сообщений в нём нет.",
138
+ "Перед отправкой файл можно открыть и посмотреть: в нём нет текстов сообщений, а вместо номеров чатов и",
139
+ "сообщений — метки.",
157
140
  ].join("\n"));
158
141
  });
159
142
  });
160
143
  return report;
161
144
  };
145
+ const explain = (renderer, format, streams) => {
146
+ if (format !== "pretty") {
147
+ renderer.result({
148
+ sendTo: REPORT_URL,
149
+ includes: INCLUDES,
150
+ excludes: EXCLUDES,
151
+ create: "max doctor report create",
152
+ });
153
+ return;
154
+ }
155
+ streams.data([
156
+ "Отчёт о проблеме — один файл для автора max. Он прикладывается к новой задаче на GitHub.",
157
+ "",
158
+ "В файле:",
159
+ ...INCLUDES.map((line, index) => `- ${line}${index === INCLUDES.length - 1 ? "." : ";"}`),
160
+ "",
161
+ `В файле нет: ${EXCLUDES.join(", ")}.`,
162
+ "Задачи на GitHub видны всем — и приложенный файл тоже.",
163
+ "",
164
+ "Создать отчёт: max doctor report create",
165
+ "Про определённый запуск: max doctor report create --run <id> (номера — max runs list)",
166
+ ].join("\n"));
167
+ };
168
+ const TOKEN_FROM = {
169
+ environment: "MAX_TOKEN",
170
+ keyring: "the keyring",
171
+ file: "credentials.json — there is no keyring here",
172
+ none: "nowhere",
173
+ };
162
174
  /** One line per row: the pretty renderer prints a flat object and does not descend into one. */
163
175
  const forPerson = (report, profile) => ({
164
176
  profile,
165
- token: report.token.present ? `yes, from the ${report.token.from}` : "none",
177
+ token: report.token.present ? `yes, from ${TOKEN_FROM[report.token.from]}` : "none",
166
178
  keyring: report.keyring.movedByEnvironment
167
179
  ? `${report.keyring.service} (moved by the environment)`
168
180
  : report.keyring.service,
@@ -1 +1 @@
1
- {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"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"}
@@ -4,13 +4,13 @@ import { forCommand } from "./context.js";
4
4
  export const mcpCommand = () => new Command("mcp")
5
5
  .description("serve this profile to an agent over MCP, on stdin and stdout — `claude mcp add max -- max mcp`")
6
6
  .option("--allow-send", "offer the send tool; without it the server can only read")
7
- .option("--confirm-send", "show the owner each send in a form from the server — the chat it resolved to and the text")
7
+ .option("--confirm-send", "show the owner every send, edit, forward, pin, mark-read and delete in a form from the server first")
8
8
  .option("--allow-mark-read", "offer the tool that marks a chat read; the other person sees it")
9
9
  .option("--allow-delete", "offer the tool that deletes messages for you only; it cannot be undone")
10
10
  .action(async function () {
11
11
  const { allowSend, confirmSend, allowMarkRead, allowDelete } = this.opts();
12
- if (confirmSend && !allowSend) {
13
- throw new CliError("validation_error", "`--confirm-send` confirms sends, and without `--allow-send` there are none");
12
+ if (confirmSend && !allowSend && !allowMarkRead && !allowDelete) {
13
+ throw new CliError("validation_error", "`--confirm-send` confirms writes, and without `--allow-send`, `--allow-mark-read` or `--allow-delete` there are none");
14
14
  }
15
15
  // Loaded here, not at the top: every other command would otherwise pay for the SDK and zod.
16
16
  const { serveOverStdio } = await import("../mcp/server.js");
@@ -1 +1 @@
1
- {"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../src/commands/mcp.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAEzC,MAAM,CAAC,MAAM,UAAU,GAAG,GAAY,EAAE,CACtC,IAAI,OAAO,CAAC,KAAK,CAAC;KACf,WAAW,CAAC,gGAAgG,CAAC;KAC7G,MAAM,CAAC,cAAc,EAAE,0DAA0D,CAAC;KAClF,MAAM,CACL,gBAAgB,EAChB,2FAA2F,CAC5F;KACA,MAAM,CAAC,mBAAmB,EAAE,iEAAiE,CAAC;KAC9F,MAAM,CAAC,gBAAgB,EAAE,wEAAwE,CAAC;KAClG,MAAM,CAAC,KAAK;IACX,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,aAAa,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC,IAAI,EAKpE,CAAA;IACJ,IAAI,WAAW,IAAI,CAAC,SAAS,EAAE,CAAC;QAC9B,MAAM,IAAI,QAAQ,CAChB,kBAAkB,EAClB,4EAA4E,CAC7E,CAAA;IACH,CAAC;IACD,4FAA4F;IAC5F,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAA;IAC3D,MAAM,cAAc,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;QACrC,SAAS,EAAE,SAAS,KAAK,IAAI;QAC7B,WAAW,EAAE,WAAW,KAAK,IAAI;QACjC,aAAa,EAAE,aAAa,KAAK,IAAI;QACrC,WAAW,EAAE,WAAW,KAAK,IAAI;KAClC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
1
+ {"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../src/commands/mcp.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAEzC,MAAM,CAAC,MAAM,UAAU,GAAG,GAAY,EAAE,CACtC,IAAI,OAAO,CAAC,KAAK,CAAC;KACf,WAAW,CAAC,gGAAgG,CAAC;KAC7G,MAAM,CAAC,cAAc,EAAE,0DAA0D,CAAC;KAClF,MAAM,CACL,gBAAgB,EAChB,qGAAqG,CACtG;KACA,MAAM,CAAC,mBAAmB,EAAE,iEAAiE,CAAC;KAC9F,MAAM,CAAC,gBAAgB,EAAE,wEAAwE,CAAC;KAClG,MAAM,CAAC,KAAK;IACX,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,aAAa,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC,IAAI,EAKpE,CAAA;IACJ,IAAI,WAAW,IAAI,CAAC,SAAS,IAAI,CAAC,aAAa,IAAI,CAAC,WAAW,EAAE,CAAC;QAChE,MAAM,IAAI,QAAQ,CAChB,kBAAkB,EAClB,sHAAsH,CACvH,CAAA;IACH,CAAC;IACD,4FAA4F;IAC5F,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAA;IAC3D,MAAM,cAAc,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;QACrC,SAAS,EAAE,SAAS,KAAK,IAAI;QAC7B,WAAW,EAAE,WAAW,KAAK,IAAI;QACjC,aAAa,EAAE,aAAa,KAAK,IAAI;QACrC,WAAW,EAAE,WAAW,KAAK,IAAI;KAClC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../../src/commands/messages.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAcnC,eAAO,MAAM,eAAe,QAAO,OA0ZlC,CAAA"}
1
+ {"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../../src/commands/messages.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAcnC,eAAO,MAAM,eAAe,QAAO,OA6ZlC,CAAA"}
@@ -1,4 +1,4 @@
1
- import { CliError } from "@leemour/cli-core";
1
+ import { CliError, singleLine } from "@leemour/cli-core";
2
2
  import { annotate } from "@leemour/cli-core/commands";
3
3
  import { Command } from "commander";
4
4
  import { openProfileCache } from "../cache/index.js";
@@ -148,11 +148,11 @@ export const messagesCommand = () => {
148
148
  const saved = [];
149
149
  for (const [index, attachment] of links.entries()) {
150
150
  if (attachment.unsafe)
151
- renderer.note(`MAX marks ${attachment.name ?? "this file"} as possibly unsafe`);
152
- saved.push(await save(attachment, output, `${id}-${index + 1}`));
151
+ renderer.note(`MAX marks ${singleLine(attachment.name ?? "this file")} as possibly unsafe`);
152
+ saved.push(await save(attachment, output, `${id}-${index + 1}`, context.reach));
153
153
  }
154
154
  if (format === "pretty")
155
- streams.data(`${saved.map((file) => file.path).join("\n")}\n`);
155
+ streams.data(`${saved.map((file) => singleLine(file.path)).join("\n")}\n`);
156
156
  else
157
157
  renderer.result({ items: saved });
158
158
  }
@@ -227,6 +227,7 @@ export const messagesCommand = () => {
227
227
  .option("--silent", "deliver without a notification")
228
228
  .option("--reply-to <message>", "answer this message id in the same chat")
229
229
  .option("--file <path>", "attach a file; .jpg .png .webp .gif go as a photo. Repeat it for more than one", (value, previous = []) => [...previous, value])
230
+ .option("--allow-any-file", "send a --file even from a hidden folder, ~/.ssh or max's own folders")
230
231
  .option("--md, --markdown", "read **bold**, _italic_, ~~struck~~ and `code` in the text; \\ keeps a mark literal")
231
232
  .option("--at <time>", "let MAX send it later, even with this machine off: 2026-09-25T09:00 (local time), or 30m, 2h, 1d from now")
232
233
  .action(async function (chat, text) {
@@ -248,6 +249,7 @@ export const messagesCommand = () => {
248
249
  ...(options.replyTo === undefined ? {} : { replyTo: String(options.replyTo).trim() }),
249
250
  ...(options.markdown === true ? { markdown: true } : {}),
250
251
  ...(files.length > 0 ? { files } : {}),
252
+ ...(options.allowAnyFile === true ? { anyFile: true } : {}),
251
253
  ...(at === undefined ? {} : { at }),
252
254
  });
253
255
  if (at !== undefined) {