@leemour/max-cli 0.6.0 → 0.7.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 (204) hide show
  1. package/README.md +8 -0
  2. package/dist/cache/index.d.ts +1 -0
  3. package/dist/cache/index.d.ts.map +1 -1
  4. package/dist/cache/index.js +4 -4
  5. package/dist/cache/index.js.map +1 -1
  6. package/dist/client.d.ts +178 -9
  7. package/dist/client.d.ts.map +1 -1
  8. package/dist/client.js +764 -34
  9. package/dist/client.js.map +1 -1
  10. package/dist/commands/account.d.ts.map +1 -1
  11. package/dist/commands/account.js +71 -3
  12. package/dist/commands/account.js.map +1 -1
  13. package/dist/commands/chats.d.ts.map +1 -1
  14. package/dist/commands/chats.js +159 -0
  15. package/dist/commands/chats.js.map +1 -1
  16. package/dist/commands/complete.d.ts +10 -0
  17. package/dist/commands/complete.d.ts.map +1 -0
  18. package/dist/commands/complete.js +89 -0
  19. package/dist/commands/complete.js.map +1 -0
  20. package/dist/commands/config.d.ts.map +1 -1
  21. package/dist/commands/config.js +4 -2
  22. package/dist/commands/config.js.map +1 -1
  23. package/dist/commands/contacts.d.ts +3 -0
  24. package/dist/commands/contacts.d.ts.map +1 -1
  25. package/dist/commands/contacts.js +85 -0
  26. package/dist/commands/contacts.js.map +1 -1
  27. package/dist/commands/context.d.ts +8 -1
  28. package/dist/commands/context.d.ts.map +1 -1
  29. package/dist/commands/context.js +26 -6
  30. package/dist/commands/context.js.map +1 -1
  31. package/dist/commands/folders.d.ts +4 -0
  32. package/dist/commands/folders.d.ts.map +1 -0
  33. package/dist/commands/folders.js +76 -0
  34. package/dist/commands/folders.js.map +1 -0
  35. package/dist/commands/inbox.js +2 -2
  36. package/dist/commands/inbox.js.map +1 -1
  37. package/dist/commands/mcp.d.ts +3 -0
  38. package/dist/commands/mcp.d.ts.map +1 -0
  39. package/dist/commands/mcp.js +17 -0
  40. package/dist/commands/mcp.js.map +1 -0
  41. package/dist/commands/messages.d.ts.map +1 -1
  42. package/dist/commands/messages.js +84 -2
  43. package/dist/commands/messages.js.map +1 -1
  44. package/dist/commands/reactions.d.ts.map +1 -1
  45. package/dist/commands/reactions.js +17 -0
  46. package/dist/commands/reactions.js.map +1 -1
  47. package/dist/commands/serve.d.ts +10 -0
  48. package/dist/commands/serve.d.ts.map +1 -0
  49. package/dist/commands/serve.js +50 -0
  50. package/dist/commands/serve.js.map +1 -0
  51. package/dist/commands/session.d.ts.map +1 -1
  52. package/dist/commands/session.js +4 -1
  53. package/dist/commands/session.js.map +1 -1
  54. package/dist/commands/update.d.ts +7 -0
  55. package/dist/commands/update.d.ts.map +1 -0
  56. package/dist/commands/update.js +53 -0
  57. package/dist/commands/update.js.map +1 -0
  58. package/dist/commands/watch.d.ts +9 -0
  59. package/dist/commands/watch.d.ts.map +1 -0
  60. package/dist/commands/watch.js +68 -0
  61. package/dist/commands/watch.js.map +1 -0
  62. package/dist/config.d.ts +16 -1
  63. package/dist/config.d.ts.map +1 -1
  64. package/dist/config.js +27 -4
  65. package/dist/config.js.map +1 -1
  66. package/dist/domain/map.d.ts +8 -1
  67. package/dist/domain/map.d.ts.map +1 -1
  68. package/dist/domain/map.js +42 -1
  69. package/dist/domain/map.js.map +1 -1
  70. package/dist/domain/models.d.ts +47 -0
  71. package/dist/domain/models.d.ts.map +1 -1
  72. package/dist/domain/models.js.map +1 -1
  73. package/dist/generated/client.generated.d.ts +26 -0
  74. package/dist/generated/client.generated.d.ts.map +1 -1
  75. package/dist/generated/client.generated.js +26 -0
  76. package/dist/generated/client.generated.js.map +1 -1
  77. package/dist/generated/opcodes.generated.d.ts +24 -5
  78. package/dist/generated/opcodes.generated.d.ts.map +1 -1
  79. package/dist/generated/opcodes.generated.js +24 -5
  80. package/dist/generated/opcodes.generated.js.map +1 -1
  81. package/dist/generated/operations.generated.d.ts +163 -6
  82. package/dist/generated/operations.generated.d.ts.map +1 -1
  83. package/dist/generated/operations.generated.js +27 -4
  84. package/dist/generated/operations.generated.js.map +1 -1
  85. package/dist/mcp/confirm.d.ts +24 -0
  86. package/dist/mcp/confirm.d.ts.map +1 -0
  87. package/dist/mcp/confirm.js +53 -0
  88. package/dist/mcp/confirm.js.map +1 -0
  89. package/dist/mcp/instructions.d.ts +10 -0
  90. package/dist/mcp/instructions.d.ts.map +1 -0
  91. package/dist/mcp/instructions.js +25 -0
  92. package/dist/mcp/instructions.js.map +1 -0
  93. package/dist/mcp/server.d.ts +23 -0
  94. package/dist/mcp/server.d.ts.map +1 -0
  95. package/dist/mcp/server.js +38 -0
  96. package/dist/mcp/server.js.map +1 -0
  97. package/dist/mcp/session.d.ts +28 -0
  98. package/dist/mcp/session.d.ts.map +1 -0
  99. package/dist/mcp/session.js +91 -0
  100. package/dist/mcp/session.js.map +1 -0
  101. package/dist/mcp/tools.d.ts +8 -0
  102. package/dist/mcp/tools.d.ts.map +1 -0
  103. package/dist/mcp/tools.js +274 -0
  104. package/dist/mcp/tools.js.map +1 -0
  105. package/dist/program.d.ts.map +1 -1
  106. package/dist/program.js +17 -0
  107. package/dist/program.js.map +1 -1
  108. package/dist/protocol/connection.d.ts +10 -8
  109. package/dist/protocol/connection.d.ts.map +1 -1
  110. package/dist/protocol/connection.js +64 -7
  111. package/dist/protocol/connection.js.map +1 -1
  112. package/dist/protocol/frame.d.ts +2 -1
  113. package/dist/protocol/frame.d.ts.map +1 -1
  114. package/dist/protocol/frame.js.map +1 -1
  115. package/dist/rendering/messages.d.ts.map +1 -1
  116. package/dist/rendering/messages.js +17 -9
  117. package/dist/rendering/messages.js.map +1 -1
  118. package/dist/sends/guard.d.ts +3 -2
  119. package/dist/sends/guard.d.ts.map +1 -1
  120. package/dist/sends/guard.js +14 -10
  121. package/dist/sends/guard.js.map +1 -1
  122. package/dist/sends/journal.d.ts +15 -2
  123. package/dist/sends/journal.d.ts.map +1 -1
  124. package/dist/sends/journal.js.map +1 -1
  125. package/dist/server/lines.d.ts +9 -0
  126. package/dist/server/lines.d.ts.map +1 -0
  127. package/dist/server/lines.js +25 -0
  128. package/dist/server/lines.js.map +1 -0
  129. package/dist/server/server-connection.d.ts +35 -0
  130. package/dist/server/server-connection.d.ts.map +1 -0
  131. package/dist/server/server-connection.js +195 -0
  132. package/dist/server/server-connection.js.map +1 -0
  133. package/dist/server/server.d.ts +62 -0
  134. package/dist/server/server.d.ts.map +1 -0
  135. package/dist/server/server.js +297 -0
  136. package/dist/server/server.js.map +1 -0
  137. package/dist/server/start.d.ts +12 -0
  138. package/dist/server/start.d.ts.map +1 -0
  139. package/dist/server/start.js +41 -0
  140. package/dist/server/start.js.map +1 -0
  141. package/dist/server/subscribe.d.ts +9 -0
  142. package/dist/server/subscribe.d.ts.map +1 -0
  143. package/dist/server/subscribe.js +26 -0
  144. package/dist/server/subscribe.js.map +1 -0
  145. package/dist/session/browser.d.ts +1 -1
  146. package/dist/session/browser.d.ts.map +1 -1
  147. package/dist/session/browser.js +86 -59
  148. package/dist/session/browser.js.map +1 -1
  149. package/dist/session/store.d.ts +2 -0
  150. package/dist/session/store.d.ts.map +1 -1
  151. package/dist/session/store.js +4 -0
  152. package/dist/session/store.js.map +1 -1
  153. package/dist/spec/define.d.ts.map +1 -1
  154. package/dist/spec/define.js +14 -1
  155. package/dist/spec/define.js.map +1 -1
  156. package/dist/spec/index.d.ts.map +1 -1
  157. package/dist/spec/index.js +28 -5
  158. package/dist/spec/index.js.map +1 -1
  159. package/dist/spec/operations/account.d.ts +20 -0
  160. package/dist/spec/operations/account.d.ts.map +1 -0
  161. package/dist/spec/operations/account.js +62 -0
  162. package/dist/spec/operations/account.js.map +1 -0
  163. package/dist/spec/operations/chats.d.ts +54 -0
  164. package/dist/spec/operations/chats.d.ts.map +1 -1
  165. package/dist/spec/operations/chats.js +121 -0
  166. package/dist/spec/operations/chats.js.map +1 -1
  167. package/dist/spec/operations/contacts.d.ts +19 -1
  168. package/dist/spec/operations/contacts.d.ts.map +1 -1
  169. package/dist/spec/operations/contacts.js +49 -6
  170. package/dist/spec/operations/contacts.js.map +1 -1
  171. package/dist/spec/operations/folders.d.ts +24 -0
  172. package/dist/spec/operations/folders.d.ts.map +1 -0
  173. package/dist/spec/operations/folders.js +64 -0
  174. package/dist/spec/operations/folders.js.map +1 -0
  175. package/dist/spec/operations/messages.d.ts +44 -6
  176. package/dist/spec/operations/messages.d.ts.map +1 -1
  177. package/dist/spec/operations/messages.js +86 -17
  178. package/dist/spec/operations/messages.js.map +1 -1
  179. package/dist/spec/operations/session.d.ts +7 -0
  180. package/dist/spec/operations/session.d.ts.map +1 -1
  181. package/dist/spec/operations/session.js +17 -0
  182. package/dist/spec/operations/session.js.map +1 -1
  183. package/dist/spec/operations/uploads.d.ts +18 -0
  184. package/dist/spec/operations/uploads.d.ts.map +1 -0
  185. package/dist/spec/operations/uploads.js +35 -0
  186. package/dist/spec/operations/uploads.js.map +1 -0
  187. package/dist/testing/mock-max.d.ts +12 -2
  188. package/dist/testing/mock-max.d.ts.map +1 -1
  189. package/dist/testing/mock-max.js +15 -2
  190. package/dist/testing/mock-max.js.map +1 -1
  191. package/dist/testing/sandbox.js +2 -0
  192. package/dist/testing/sandbox.js.map +1 -1
  193. package/dist/update.d.ts +36 -0
  194. package/dist/update.d.ts.map +1 -0
  195. package/dist/update.js +70 -0
  196. package/dist/update.js.map +1 -0
  197. package/dist/upload.d.ts +10 -0
  198. package/dist/upload.d.ts.map +1 -0
  199. package/dist/upload.js +61 -0
  200. package/dist/upload.js.map +1 -0
  201. package/dist/version.d.ts +1 -1
  202. package/dist/version.js +1 -1
  203. package/package.json +12 -3
  204. package/skills/max-cli/SKILL.md +10 -1
@@ -0,0 +1,89 @@
1
+ import { existsSync } from "node:fs";
2
+ import { script } from "@bomb.sh/tab";
3
+ import { CliError, visibleControls } from "@leemour/cli-core";
4
+ import { describeOptions, describeProgram } from "@leemour/cli-core/commands";
5
+ import { formatSuggestions, suggest } from "@leemour/cli-core/completion";
6
+ import { Command } from "commander";
7
+ import { openProfileCache, profileCacheFile } from "../cache/index.js";
8
+ import { configuredProfiles } from "../config.js";
9
+ import { commandWords, DEFAULT_PROFILE, liftProfile, rootOf } from "../profile.js";
10
+ import { outputFor } from "./context.js";
11
+ const SHELLS = ["zsh", "bash", "fish", "powershell"];
12
+ /**
13
+ * `max complete zsh` prints the script a shell sources; the script then runs
14
+ * `max complete -- <words>` on every Tab, and this answers from the command registry.
15
+ *
16
+ * ⚠ **A Tab never reaches MAX and never writes anything.** Names come from the local cache if it
17
+ * exists — no cache, no names — and nothing goes to stderr: a shell shows whatever it is given.
18
+ */
19
+ export const completeCommand = () => new Command("complete")
20
+ .description("shell completion: `max complete zsh` prints the script to source")
21
+ .argument("[words...]")
22
+ .allowUnknownOption()
23
+ .helpOption(false)
24
+ .action(async function (words) {
25
+ const root = rootOf(this);
26
+ const { streams } = outputFor(this);
27
+ // Commander drops the `--` from the operands, so only the raw words tell a request from a shell name.
28
+ const raw = root.rawArgs;
29
+ if (!raw.includes("--")) {
30
+ const [shell] = words;
31
+ if (!shell || !SHELLS.includes(shell)) {
32
+ throw new CliError("validation_error", `name a shell: max complete ${SHELLS.join(" | ")}`);
33
+ }
34
+ // tab writes the script through console.log; stdout is where a `source <(…)` reads it.
35
+ script(shell, "max", "max");
36
+ return;
37
+ }
38
+ // The last word is still being typed, so it is never taken for a profile: `mess` is on its way to `messages`.
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);
41
+ try {
42
+ const suggestions = suggest({
43
+ commands: describeProgram(root),
44
+ globalOptions: describeOptions(root),
45
+ words: rest.length > 0 ? rest : [""],
46
+ sources: sourcesFrom(cache, profile === undefined),
47
+ });
48
+ streams.data(formatSuggestions(suggestions));
49
+ }
50
+ finally {
51
+ cache?.close();
52
+ }
53
+ });
54
+ const readableCache = async (profile) => existsSync(profileCacheFile(profile)) ? openProfileCache(profile) : undefined;
55
+ const sourcesFrom = (cache, atTheStart) => {
56
+ const chats = () => (cache ? chatSuggestions(cache) : []);
57
+ return {
58
+ arguments: { chat: chats, person: () => (cache ? personSuggestions(cache) : []) },
59
+ options: { chat: chats },
60
+ ...(atTheStart ? { firstWord: profileNames } : {}),
61
+ };
62
+ };
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
+ });
81
+ const profileNames = () => {
82
+ try {
83
+ return configuredProfiles();
84
+ }
85
+ catch {
86
+ return [];
87
+ }
88
+ };
89
+ //# sourceMappingURL=complete.js.map
@@ -0,0 +1 @@
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;AAgBnC,eAAO,MAAM,aAAa,QAAO,OAgEhC,CAAA"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAkBnC,eAAO,MAAM,aAAa,QAAO,OAgEhC,CAAA"}
@@ -2,7 +2,7 @@ import { existsSync, readdirSync } from "node:fs";
2
2
  import { join } from "node:path";
3
3
  import { pathsAreOverridden, resolvePaths } from "@leemour/cli-core";
4
4
  import { Command } from "commander";
5
- import { changeSetting, PROFILE_SETTINGS } from "../config.js";
5
+ import { ALL_SETTINGS, changeSetting } from "../config.js";
6
6
  import { forCommand } from "./context.js";
7
7
  const SHOWN = [
8
8
  "limit",
@@ -11,9 +11,11 @@ const SHOWN = [
11
11
  "color",
12
12
  "senderColors",
13
13
  "record",
14
+ "serve",
14
15
  "keepRunsForDays",
15
16
  "readOnly",
16
17
  "sendsPerHour",
18
+ "updateCheck",
17
19
  ];
18
20
  export const configCommand = () => {
19
21
  const command = new Command("config").description("the settings in force, and where each one came from");
@@ -48,7 +50,7 @@ export const configCommand = () => {
48
50
  for (const action of ["set", "unset"]) {
49
51
  const sub = command
50
52
  .command(action)
51
- .argument("<setting>", `one of: ${PROFILE_SETTINGS.join(", ")}`)
53
+ .argument("<setting>", `one of: ${ALL_SETTINGS.join(", ")}`)
52
54
  .option("--defaults", "change what every profile gets, rather than this profile");
53
55
  if (action === "set")
54
56
  sub.argument("<value>", "a number, true or false").description("save a setting to the configuration file");
@@ -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":"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"}
@@ -1,4 +1,5 @@
1
1
  import { Command } from "commander";
2
+ import { type PhoneBookEntry } from "../client.js";
2
3
  /**
3
4
  * The people this account has a one-to-one chat with.
4
5
  *
@@ -7,4 +8,6 @@ import { Command } from "commander";
7
8
  * lists what we can establish without guessing.
8
9
  */
9
10
  export declare const contactsCommand: () => Command;
11
+ /** ⚠ A bad line is named by its number, never by what is on it. */
12
+ export declare const phoneBook: (text: string) => PhoneBookEntry[];
10
13
  //# sourceMappingURL=contacts.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"contacts.d.ts","sourceRoot":"","sources":["../../src/commands/contacts.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAMnC;;;;;;GAMG;AACH,eAAO,MAAM,eAAe,QAAO,OAmFlC,CAAA"}
1
+ {"version":3,"file":"contacts.d.ts","sourceRoot":"","sources":["../../src/commands/contacts.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAGnC,OAAO,EAAE,KAAK,cAAc,EAAa,MAAM,cAAc,CAAA;AAI7D;;;;;;GAMG;AACH,eAAO,MAAM,eAAe,QAAO,OA8JlC,CAAA;AAED,mEAAmE;AACnE,eAAO,MAAM,SAAS,GAAI,MAAM,MAAM,KAAG,cAAc,EAenD,CAAA"}
@@ -1,6 +1,9 @@
1
+ import { readFile } from "node:fs/promises";
1
2
  import { CliError } from "@leemour/cli-core";
3
+ import { annotate } from "@leemour/cli-core/commands";
2
4
  import { Command } from "commander";
3
5
  import { openProfileCache } from "../cache/index.js";
6
+ import { wirePhone } from "../client.js";
4
7
  import { forCommand } from "./context.js";
5
8
  import { renderPage, window, withPaging } from "./paging.js";
6
9
  /**
@@ -81,8 +84,90 @@ export const contactsCommand = () => {
81
84
  }
82
85
  });
83
86
  });
87
+ /**
88
+ * ⚠ **The number is asked for, never an argument**: argv is read by `ps` and kept by shell
89
+ * history, and a phone number is what the sixth constraint names.
90
+ */
91
+ command
92
+ .command("lookup")
93
+ .description("who MAX has under a phone number — asks for it, or reads it from stdin")
94
+ .action(async function () {
95
+ const { renderer, settings, createClient, run, ask } = forCommand(this);
96
+ const phone = await ask("phone number: ");
97
+ const cache = await openProfileCache(settings.profile, { onProblem: (message) => renderer.note(message) });
98
+ await run("contacts lookup", async (events) => {
99
+ const client = createClient({ events, ...(cache ? { cache } : {}) });
100
+ try {
101
+ renderer.result(await client.contacts.lookup(phone));
102
+ }
103
+ finally {
104
+ await client.close();
105
+ cache?.close();
106
+ }
107
+ });
108
+ });
109
+ for (const [name, description] of [
110
+ ["add", "add a person to your contacts — `contacts list` still shows only people you have a dialog with"],
111
+ ["remove", "remove a person from your contacts; the chat stays, a name you gave them may not"],
112
+ ]) {
113
+ annotate(command.command(name), { mutates: true })
114
+ .argument("<person>", "person id — `contacts lookup` finds one — or part of a known name")
115
+ .description(description)
116
+ .action(async function (person) {
117
+ const { renderer, settings, createClient, run } = forCommand(this);
118
+ const cache = await openProfileCache(settings.profile, { onProblem: (message) => renderer.note(message) });
119
+ await run(`contacts ${name}`, async (events) => {
120
+ const client = createClient({ events, ...(cache ? { cache } : {}) });
121
+ try {
122
+ renderer.result(await client.contacts[name](person));
123
+ }
124
+ finally {
125
+ await client.close();
126
+ cache?.close();
127
+ }
128
+ });
129
+ });
130
+ }
131
+ /** A file rather than lines on argv, for the same reason `lookup` asks: these are phone numbers. */
132
+ annotate(command.command("import"), { mutates: true })
133
+ .argument("<file>", "one person per line: number, then a comma or a tab, then the name")
134
+ .description("upload phone numbers to MAX and add the people it has under them")
135
+ .action(async function (file) {
136
+ const { renderer, settings, createClient, run } = forCommand(this);
137
+ const entries = phoneBook(await readFile(file, "utf8").catch((error) => {
138
+ throw new CliError("not_found", `cannot read ${file}: ${error.code ?? error.message}`);
139
+ }));
140
+ const cache = await openProfileCache(settings.profile, { onProblem: (message) => renderer.note(message) });
141
+ await run("contacts import", async (events) => {
142
+ const client = createClient({ events, ...(cache ? { cache } : {}) });
143
+ try {
144
+ const imported = await client.contacts.import(entries);
145
+ renderer.result(imported);
146
+ renderer.success(`${imported.sent} sent, ${imported.recognised.length} recognised by MAX`);
147
+ }
148
+ finally {
149
+ await client.close();
150
+ cache?.close();
151
+ }
152
+ });
153
+ });
84
154
  return command;
85
155
  };
156
+ /** ⚠ A bad line is named by its number, never by what is on it. */
157
+ export const phoneBook = (text) => text.split(/\r?\n/).flatMap((line, index) => {
158
+ if (line.trim() === "")
159
+ return [];
160
+ const match = /^\s*([^,\t;]+?)\s*[,\t;]\s*(.*\S)\s*$/.exec(line);
161
+ if (!match?.[1] || !match[2]) {
162
+ throw new CliError("validation_error", `line ${index + 1} is not "number, name"`);
163
+ }
164
+ try {
165
+ return [{ phone: wirePhone(match[1]), name: match[2] }];
166
+ }
167
+ catch (error) {
168
+ throw new CliError("validation_error", `line ${index + 1}: ${error instanceof Error ? error.message : String(error)}`);
169
+ }
170
+ });
86
171
  /**
87
172
  * ⚠ **A flag and no configuration field**, deliberately. `--order` and a `contactOrder` setting
88
173
  * would be two spellings of one thing, which is what `--profile` was deleted for.
@@ -1 +1 @@
1
- {"version":3,"file":"contacts.js","sourceRoot":"","sources":["../../src/commands/contacts.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"contacts.js","sourceRoot":"","sources":["../../src/commands/contacts.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,11 @@
1
1
  import type { Renderer, RenderFormat, Streams } from "@leemour/cli-core";
2
2
  import type { Command } from "commander";
3
3
  import { MaxClient, type MaxClientOptions } from "../client.js";
4
- import { type Settings } from "../config.js";
4
+ import { type GlobalFlags, type Settings } from "../config.js";
5
5
  import { type Closeable } from "../deadline.js";
6
6
  import { type BrowserDoors } from "../session/browser.js";
7
7
  import { SessionStore } from "../session/store.js";
8
+ import type { UpdateEnvironment } from "../update.js";
8
9
  /**
9
10
  * What a command writes to and talks through, when it is not the real terminal, keyring and MAX.
10
11
  * `run` sets it on the program; without it everything is the real thing.
@@ -20,12 +21,14 @@ export interface Environment {
20
21
  ask?: Ask;
21
22
  interactive?: boolean;
22
23
  columns?: number;
24
+ update?: UpdateEnvironment;
23
25
  }
24
26
  /** One line from the person at the terminal; `secret` keeps it off the screen. */
25
27
  export type Ask = (prompt: string, options?: {
26
28
  secret?: boolean;
27
29
  }) => Promise<string>;
28
30
  export declare const provide: (program: Command, environment: Environment) => void;
31
+ export declare const environmentOf: (command: Command) => Environment;
29
32
  /** For the commands that print but never need settings or a client. */
30
33
  export declare const outputFor: (command: Command) => {
31
34
  format: "json" | "jsonl" | "pretty";
@@ -73,4 +76,8 @@ export interface CommandContext {
73
76
  * would create a database file for `session end`, which will never read it.
74
77
  */
75
78
  export declare const forCommand: (command: Command) => CommandContext;
79
+ /** The same context from flags already parsed — for `max mcp`, whose calls arrive without argv. */
80
+ export declare const contextFor: (flags: GlobalFlags & {
81
+ offline?: boolean;
82
+ }, environment?: Environment) => CommandContext;
76
83
  //# sourceMappingURL=context.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/commands/context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AACxE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACxC,OAAO,EAAE,SAAS,EAAE,KAAK,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAC/D,OAAO,EAAqC,KAAK,QAAQ,EAAE,MAAM,cAAc,CAAA;AAC/E,OAAO,EAAE,KAAK,SAAS,EAAgB,MAAM,gBAAgB,CAAA;AAO7D,OAAO,EAAE,KAAK,YAAY,EAAe,MAAM,uBAAuB,CAAA;AAEtE,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAElD;;;GAGG;AACH,MAAM,WAAW,WAAW;IAC1B,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,GAAG,CAAC,EAAE,OAAO,CAAA;IACb,0EAA0E;IAC1E,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,YAAY,CAAA;IACzC,mEAAmE;IACnE,UAAU,CAAC,EAAE,MAAM,WAAW,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC,CAAA;IAC9D,OAAO,CAAC,EAAE,YAAY,CAAA;IACtB,GAAG,CAAC,EAAE,GAAG,CAAA;IACT,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,kFAAkF;AAClF,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,KAAK,OAAO,CAAC,MAAM,CAAC,CAAA;AAIrF,eAAO,MAAM,OAAO,GAAI,SAAS,OAAO,EAAE,aAAa,WAAW,KAAG,IAEpE,CAAA;AAID,uEAAuE;AACvE,eAAO,MAAM,SAAS,GAAI,SAAS,OAAO;;;;;CAOzC,CAAA;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,QAAQ,CAAA;IAClB,QAAQ,EAAE,QAAQ,CAAA;IAClB,MAAM,EAAE,YAAY,CAAA;IACpB,kHAAkH;IAClH,KAAK,EAAE,OAAO,CAAA;IACd,OAAO,EAAE,OAAO,CAAA;IAChB,KAAK,EAAE,YAAY,CAAA;IACnB,yGAAyG;IACzG,YAAY,EAAE,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC,KAAK,SAAS,CAAA;IAC7E;;;OAGG;IACH,GAAG,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,MAAM,EAAE,gBAAgB,CAAC,QAAQ,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,CAAA;IACjG,sGAAsG;IACtG,KAAK,EAAE,CAAC,SAAS,EAAE,SAAS,KAAK,IAAI,CAAA;IACrC,OAAO,EAAE,YAAY,CAAA;IACrB,GAAG,EAAE,GAAG,CAAA;IACR,kGAAkG;IAClG,WAAW,EAAE,OAAO,CAAA;IACpB,0FAA0F;IAC1F,OAAO,EAAE,MAAM,GAAG,SAAS,CAAA;CAC5B;AAED;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,UAAU,GAAI,SAAS,OAAO,KAAG,cAgE7C,CAAA"}
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/commands/context.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import { existsSync } from "node:fs";
1
2
  import { MaxClient } from "../client.js";
2
3
  import { resolveSettings } from "../config.js";
3
4
  import { withDeadline } from "../deadline.js";
@@ -7,6 +8,8 @@ import { recorded } from "../runs/recording.js";
7
8
  import { sendGuard } from "../sends/guard.js";
8
9
  import { SendJournal, sendsPathFor } from "../sends/journal.js";
9
10
  import { RecipientList, recipientsPathFor } from "../sends/recipients.js";
11
+ import { ServerConnection } from "../server/server-connection.js";
12
+ import { startInBackground } from "../server/start.js";
10
13
  import { realBrowser } from "../session/browser.js";
11
14
  import { readSecret } from "../session/prompt.js";
12
15
  import { SessionStore } from "../session/store.js";
@@ -14,7 +17,7 @@ const environments = new WeakMap();
14
17
  export const provide = (program, environment) => {
15
18
  environments.set(program, environment);
16
19
  };
17
- const environmentOf = (command) => environments.get(rootOf(command)) ?? {};
20
+ export const environmentOf = (command) => environments.get(rootOf(command)) ?? {};
18
21
  /** For the commands that print but never need settings or a client. */
19
22
  export const outputFor = (command) => {
20
23
  const { streams, tty } = environmentOf(command);
@@ -39,9 +42,10 @@ export const outputFor = (command) => {
39
42
  * The cache is not opened here on purpose — only the reading commands want one, and opening it
40
43
  * would create a database file for `session end`, which will never read it.
41
44
  */
42
- export const forCommand = (command) => {
43
- const environment = environmentOf(command);
44
- const settings = resolveSettings(command.optsWithGlobals());
45
+ export const forCommand = (command) => contextFor(command.optsWithGlobals(), environmentOf(command));
46
+ /** The same context from flags already parsed — for `max mcp`, whose calls arrive without argv. */
47
+ export const contextFor = (flags, environment = {}) => {
48
+ const settings = resolveSettings(flags);
45
49
  const { renderer, format, color, streams } = resolveOutput({
46
50
  ...settings,
47
51
  ...(environment.streams ? { streams: environment.streams } : {}),
@@ -59,11 +63,21 @@ export const forCommand = (command) => {
59
63
  streams,
60
64
  store,
61
65
  createClient: (extra = {}) => {
66
+ const timeout = settings.timeoutMs ? { timeoutMs: settings.timeoutMs } : {};
67
+ // Only for the real thing: a test hands in its own store, and must never start a process.
68
+ const startsServer = !environment.store && !environment.connection && flags.offline !== true && settings.serve;
69
+ const start = () => {
70
+ if (startsServer)
71
+ startInBackground(store);
72
+ };
73
+ const running = existsSync(store.socketPath());
74
+ if (!running)
75
+ start();
62
76
  const client = new MaxClient({
63
77
  store,
64
78
  timeoutMs: settings.timeoutMs,
65
79
  warn: renderer.note,
66
- offline: command.optsWithGlobals().offline === true,
80
+ offline: flags.offline === true,
67
81
  sends: sendGuard({
68
82
  profile: settings.profile,
69
83
  readOnly: settings.readOnly,
@@ -73,7 +87,13 @@ export const forCommand = (command) => {
73
87
  recipients: new RecipientList(recipientsPathFor(settings.profile)),
74
88
  warn: renderer.warn,
75
89
  }),
76
- ...(environment.connection ? { connection: environment.connection() } : {}),
90
+ ...(environment.connection
91
+ ? { connection: environment.connection() }
92
+ : running
93
+ ? {
94
+ connection: new ServerConnection({ path: store.socketPath(), store, onUnreachable: start, ...timeout }),
95
+ }
96
+ : {}),
77
97
  ...extra,
78
98
  });
79
99
  clients.push(client);
@@ -1 +1 @@
1
- {"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/commands/context.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/commands/context.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import { Command } from "commander";
2
+ /** Under `chats`, not a word of its own: a new first word would take a name away from profiles. */
3
+ export declare const foldersCommand: () => Command;
4
+ //# sourceMappingURL=folders.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"folders.d.ts","sourceRoot":"","sources":["../../src/commands/folders.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAKnC,mGAAmG;AACnG,eAAO,MAAM,cAAc,QAAO,OA8EjC,CAAA"}
@@ -0,0 +1,76 @@
1
+ import { annotate } from "@leemour/cli-core/commands";
2
+ import { Command } from "commander";
3
+ import { forCommand } from "./context.js";
4
+ const collect = (value, previous = []) => [...previous, value];
5
+ /** Under `chats`, not a word of its own: a new first word would take a name away from profiles. */
6
+ export const foldersCommand = () => {
7
+ const command = new Command("folders").description("your chat folders");
8
+ command
9
+ .command("list")
10
+ .description("your chat folders, in the order MAX shows them")
11
+ .action(async function () {
12
+ const { renderer, createClient, run } = forCommand(this);
13
+ await run("chats folders list", async (events) => {
14
+ const client = createClient({ events });
15
+ try {
16
+ renderer.result(await client.folders.list());
17
+ }
18
+ finally {
19
+ await client.close();
20
+ }
21
+ });
22
+ });
23
+ annotate(command.command("create"), { mutates: true })
24
+ .argument("<title>", "the folder's name; MAX refused 21 characters and took 15")
25
+ .option("--chat <chat>", "a chat to put in it, by id or name; repeat it for more", collect)
26
+ .description("create a chat folder")
27
+ .action(async function (title) {
28
+ const options = this.opts();
29
+ const { renderer, createClient, run } = forCommand(this);
30
+ await run("chats folders create", async (events) => {
31
+ const client = createClient({ events });
32
+ try {
33
+ renderer.result(await client.folders.create(title, options.chat));
34
+ }
35
+ finally {
36
+ await client.close();
37
+ }
38
+ });
39
+ });
40
+ annotate(command.command("update"), { mutates: true })
41
+ .argument("<folder>", "folder id, or its title exactly")
42
+ .option("--title <title>", "a new name")
43
+ .option("--add <chat>", "put a chat in it; repeat it for more", collect)
44
+ .option("--remove <chat>", "take a chat out of it; repeat it for more", collect)
45
+ .description("rename a folder, or change which chats are in it")
46
+ .action(async function (folder) {
47
+ const options = this.opts();
48
+ const { renderer, createClient, run } = forCommand(this);
49
+ await run("chats folders update", async (events) => {
50
+ const client = createClient({ events });
51
+ try {
52
+ renderer.result(await client.folders.update(folder, options));
53
+ }
54
+ finally {
55
+ await client.close();
56
+ }
57
+ });
58
+ });
59
+ annotate(command.command("delete"), { mutates: true })
60
+ .argument("<folder>", "folder id, or its title exactly")
61
+ .description("delete a folder; the chats in it stay")
62
+ .action(async function (folder) {
63
+ const { renderer, createClient, run } = forCommand(this);
64
+ await run("chats folders delete", async (events) => {
65
+ const client = createClient({ events });
66
+ try {
67
+ renderer.result(await client.folders.delete(folder));
68
+ }
69
+ finally {
70
+ await client.close();
71
+ }
72
+ });
73
+ });
74
+ return command;
75
+ };
76
+ //# sourceMappingURL=folders.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"folders.js","sourceRoot":"","sources":["../../src/commands/folders.ts"],"names":[],"mappings":"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"}
@@ -54,13 +54,13 @@ export const inboxCommand = () => new Command("inbox")
54
54
  }
55
55
  else {
56
56
  messages.sort((a, b) => Date.parse(a.timestamp) - Date.parse(b.timestamp));
57
- streams.data(`${renderMessages(messages, {
57
+ streams.data(renderMessages(messages, {
58
58
  color: context.color,
59
59
  senderColors: settings.senderColors,
60
60
  verbosity: settings.detail,
61
61
  width: process.stdout.columns ?? 80,
62
62
  profile: settings.profile,
63
- })}\n`);
63
+ }));
64
64
  }
65
65
  if (options.new === true && options.since === undefined && inbox.until !== inbox.since) {
66
66
  store.writeState({ ...store.readState(), lastCheckAt: inbox.until });
@@ -1 +1 @@
1
- {"version":3,"file":"inbox.js","sourceRoot":"","sources":["../../src/commands/inbox.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"inbox.js","sourceRoot":"","sources":["../../src/commands/inbox.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from "commander";
2
+ export declare const mcpCommand: () => Command;
3
+ //# sourceMappingURL=mcp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../../src/commands/mcp.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAGnC,eAAO,MAAM,UAAU,QAAO,OAmBxB,CAAA"}
@@ -0,0 +1,17 @@
1
+ import { CliError } from "@leemour/cli-core";
2
+ import { Command } from "commander";
3
+ import { forCommand } from "./context.js";
4
+ export const mcpCommand = () => new Command("mcp")
5
+ .description("serve this profile to an agent over MCP, on stdin and stdout — `claude mcp add max -- max mcp`")
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")
8
+ .action(async function () {
9
+ const { allowSend, confirmSend } = this.opts();
10
+ if (confirmSend && !allowSend) {
11
+ throw new CliError("validation_error", "`--confirm-send` confirms sends, and without `--allow-send` there are none");
12
+ }
13
+ // Loaded here, not at the top: every other command would otherwise pay for the SDK and zod.
14
+ const { serveOverStdio } = await import("../mcp/server.js");
15
+ await serveOverStdio(forCommand(this), { allowSend: allowSend === true, confirmSend: confirmSend === true });
16
+ });
17
+ //# sourceMappingURL=mcp.js.map
@@ -0,0 +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,KAAK;IACX,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC,IAAI,EAAkD,CAAA;IAC9F,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,EAAE,SAAS,EAAE,SAAS,KAAK,IAAI,EAAE,WAAW,EAAE,WAAW,KAAK,IAAI,EAAE,CAAC,CAAA;AAC9G,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;AASnC,eAAO,MAAM,eAAe,QAAO,OAmNlC,CAAA"}
1
+ {"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../../src/commands/messages.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AASnC,eAAO,MAAM,eAAe,QAAO,OAoSlC,CAAA"}