@leemour/max-cli 0.15.0 → 0.17.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 +56 -37
  2. package/dist/bot/client.d.ts +6 -0
  3. package/dist/bot/client.d.ts.map +1 -1
  4. package/dist/bot/client.js +17 -3
  5. package/dist/bot/client.js.map +1 -1
  6. package/dist/bot/input.d.ts.map +1 -1
  7. package/dist/bot/input.js +7 -4
  8. package/dist/bot/input.js.map +1 -1
  9. package/dist/bot/joins.d.ts +26 -0
  10. package/dist/bot/joins.d.ts.map +1 -0
  11. package/dist/bot/joins.js +56 -0
  12. package/dist/bot/joins.js.map +1 -0
  13. package/dist/bot/keep.d.ts +2 -2
  14. package/dist/bot/keep.d.ts.map +1 -1
  15. package/dist/bot/keep.js +3 -2
  16. package/dist/bot/keep.js.map +1 -1
  17. package/dist/bot/map.d.ts +5 -2
  18. package/dist/bot/map.d.ts.map +1 -1
  19. package/dist/bot/map.js +7 -1
  20. package/dist/bot/map.js.map +1 -1
  21. package/dist/bot/transport.d.ts +4 -0
  22. package/dist/bot/transport.d.ts.map +1 -1
  23. package/dist/bot/transport.js +43 -3
  24. package/dist/bot/transport.js.map +1 -1
  25. package/dist/bot-mcp/instructions.d.ts +9 -0
  26. package/dist/bot-mcp/instructions.d.ts.map +1 -0
  27. package/dist/bot-mcp/instructions.js +22 -0
  28. package/dist/bot-mcp/instructions.js.map +1 -0
  29. package/dist/bot-mcp/server.d.ts +21 -0
  30. package/dist/bot-mcp/server.d.ts.map +1 -0
  31. package/dist/bot-mcp/server.js +213 -0
  32. package/dist/bot-mcp/server.js.map +1 -0
  33. package/dist/bot-mcp/tools.d.ts +27 -0
  34. package/dist/bot-mcp/tools.d.ts.map +1 -0
  35. package/dist/bot-mcp/tools.js +280 -0
  36. package/dist/bot-mcp/tools.js.map +1 -0
  37. package/dist/client.d.ts +43 -10
  38. package/dist/client.d.ts.map +1 -1
  39. package/dist/client.js +207 -31
  40. package/dist/client.js.map +1 -1
  41. package/dist/commands/account.d.ts.map +1 -1
  42. package/dist/commands/account.js +7 -5
  43. package/dist/commands/account.js.map +1 -1
  44. package/dist/commands/backup.js +1 -1
  45. package/dist/commands/backup.js.map +1 -1
  46. package/dist/commands/bot-check.d.ts +11 -0
  47. package/dist/commands/bot-check.d.ts.map +1 -0
  48. package/dist/commands/bot-check.js +206 -0
  49. package/dist/commands/bot-check.js.map +1 -0
  50. package/dist/commands/bot-comments.d.ts.map +1 -1
  51. package/dist/commands/bot-comments.js +2 -1
  52. package/dist/commands/bot-comments.js.map +1 -1
  53. package/dist/commands/bot-context.d.ts +7 -0
  54. package/dist/commands/bot-context.d.ts.map +1 -1
  55. package/dist/commands/bot-context.js +32 -2
  56. package/dist/commands/bot-context.js.map +1 -1
  57. package/dist/commands/bot-mcp.d.ts +3 -0
  58. package/dist/commands/bot-mcp.d.ts.map +1 -0
  59. package/dist/commands/bot-mcp.js +69 -0
  60. package/dist/commands/bot-mcp.js.map +1 -0
  61. package/dist/commands/bot-members.d.ts.map +1 -1
  62. package/dist/commands/bot-members.js +7 -4
  63. package/dist/commands/bot-members.js.map +1 -1
  64. package/dist/commands/bot-people.d.ts +10 -0
  65. package/dist/commands/bot-people.d.ts.map +1 -0
  66. package/dist/commands/bot-people.js +156 -0
  67. package/dist/commands/bot-people.js.map +1 -0
  68. package/dist/commands/bot-reads.d.ts.map +1 -1
  69. package/dist/commands/bot-reads.js +25 -14
  70. package/dist/commands/bot-reads.js.map +1 -1
  71. package/dist/commands/bot-sends.d.ts.map +1 -1
  72. package/dist/commands/bot-sends.js +6 -5
  73. package/dist/commands/bot-sends.js.map +1 -1
  74. package/dist/commands/bot-setup.d.ts.map +1 -1
  75. package/dist/commands/bot-setup.js +5 -4
  76. package/dist/commands/bot-setup.js.map +1 -1
  77. package/dist/commands/bot-updates.d.ts.map +1 -1
  78. package/dist/commands/bot-updates.js +16 -2
  79. package/dist/commands/bot-updates.js.map +1 -1
  80. package/dist/commands/bot.d.ts.map +1 -1
  81. package/dist/commands/bot.js +13 -4
  82. package/dist/commands/bot.js.map +1 -1
  83. package/dist/commands/chats.d.ts.map +1 -1
  84. package/dist/commands/chats.js +15 -30
  85. package/dist/commands/chats.js.map +1 -1
  86. package/dist/commands/check.d.ts.map +1 -1
  87. package/dist/commands/check.js +7 -6
  88. package/dist/commands/check.js.map +1 -1
  89. package/dist/commands/complete.d.ts.map +1 -1
  90. package/dist/commands/complete.js +27 -3
  91. package/dist/commands/complete.js.map +1 -1
  92. package/dist/commands/config.d.ts.map +1 -1
  93. package/dist/commands/config.js +29 -27
  94. package/dist/commands/config.js.map +1 -1
  95. package/dist/commands/contacts.d.ts.map +1 -1
  96. package/dist/commands/contacts.js +21 -0
  97. package/dist/commands/contacts.js.map +1 -1
  98. package/dist/commands/doctor.d.ts.map +1 -1
  99. package/dist/commands/doctor.js +75 -21
  100. package/dist/commands/doctor.js.map +1 -1
  101. package/dist/commands/export.js +1 -1
  102. package/dist/commands/export.js.map +1 -1
  103. package/dist/commands/folders.d.ts.map +1 -1
  104. package/dist/commands/folders.js +3 -2
  105. package/dist/commands/folders.js.map +1 -1
  106. package/dist/commands/inbox.d.ts.map +1 -1
  107. package/dist/commands/inbox.js +1 -1
  108. package/dist/commands/inbox.js.map +1 -1
  109. package/dist/commands/messages.d.ts.map +1 -1
  110. package/dist/commands/messages.js +9 -11
  111. package/dist/commands/messages.js.map +1 -1
  112. package/dist/commands/models.d.ts.map +1 -1
  113. package/dist/commands/models.js +2 -1
  114. package/dist/commands/models.js.map +1 -1
  115. package/dist/commands/paging.d.ts +17 -1
  116. package/dist/commands/paging.d.ts.map +1 -1
  117. package/dist/commands/paging.js +22 -2
  118. package/dist/commands/paging.js.map +1 -1
  119. package/dist/commands/polls.d.ts +3 -0
  120. package/dist/commands/polls.d.ts.map +1 -0
  121. package/dist/commands/polls.js +103 -0
  122. package/dist/commands/polls.js.map +1 -0
  123. package/dist/commands/recipients.d.ts.map +1 -1
  124. package/dist/commands/recipients.js +3 -2
  125. package/dist/commands/recipients.js.map +1 -1
  126. package/dist/commands/review.d.ts.map +1 -1
  127. package/dist/commands/review.js +1 -1
  128. package/dist/commands/review.js.map +1 -1
  129. package/dist/commands/runs.d.ts.map +1 -1
  130. package/dist/commands/runs.js +4 -3
  131. package/dist/commands/runs.js.map +1 -1
  132. package/dist/commands/sends.d.ts.map +1 -1
  133. package/dist/commands/sends.js +3 -2
  134. package/dist/commands/sends.js.map +1 -1
  135. package/dist/config.d.ts +78 -7
  136. package/dist/config.d.ts.map +1 -1
  137. package/dist/config.js +143 -72
  138. package/dist/config.js.map +1 -1
  139. package/dist/diagnose.d.ts +47 -1
  140. package/dist/diagnose.d.ts.map +1 -1
  141. package/dist/diagnose.js +56 -5
  142. package/dist/diagnose.js.map +1 -1
  143. package/dist/domain/map.d.ts +9 -1
  144. package/dist/domain/map.d.ts.map +1 -1
  145. package/dist/domain/map.js +57 -0
  146. package/dist/domain/map.js.map +1 -1
  147. package/dist/domain/models.d.ts +29 -0
  148. package/dist/domain/models.d.ts.map +1 -1
  149. package/dist/domain/models.js.map +1 -1
  150. package/dist/export.d.ts.map +1 -1
  151. package/dist/export.js +2 -1
  152. package/dist/export.js.map +1 -1
  153. package/dist/generated/client.generated.d.ts +1 -0
  154. package/dist/generated/client.generated.d.ts.map +1 -1
  155. package/dist/generated/client.generated.js +1 -0
  156. package/dist/generated/client.generated.js.map +1 -1
  157. package/dist/generated/opcodes.generated.d.ts +1 -0
  158. package/dist/generated/opcodes.generated.d.ts.map +1 -1
  159. package/dist/generated/opcodes.generated.js +1 -0
  160. package/dist/generated/opcodes.generated.js.map +1 -1
  161. package/dist/generated/operations.generated.d.ts +25 -10
  162. package/dist/generated/operations.generated.d.ts.map +1 -1
  163. package/dist/generated/operations.generated.js +2 -1
  164. package/dist/generated/operations.generated.js.map +1 -1
  165. package/dist/mcp/confirm.d.ts +6 -2
  166. package/dist/mcp/confirm.d.ts.map +1 -1
  167. package/dist/mcp/confirm.js +2 -2
  168. package/dist/mcp/confirm.js.map +1 -1
  169. package/dist/mcp/tools.d.ts.map +1 -1
  170. package/dist/mcp/tools.js +83 -17
  171. package/dist/mcp/tools.js.map +1 -1
  172. package/dist/moderation/check.d.ts +15 -9
  173. package/dist/moderation/check.d.ts.map +1 -1
  174. package/dist/moderation/check.js +14 -45
  175. package/dist/moderation/check.js.map +1 -1
  176. package/dist/moderation/rules.d.ts +57 -7
  177. package/dist/moderation/rules.d.ts.map +1 -1
  178. package/dist/moderation/rules.js +13 -11
  179. package/dist/moderation/rules.js.map +1 -1
  180. package/dist/program.d.ts.map +1 -1
  181. package/dist/program.js +11 -3
  182. package/dist/program.js.map +1 -1
  183. package/dist/rendering/messages.d.ts +6 -1
  184. package/dist/rendering/messages.d.ts.map +1 -1
  185. package/dist/rendering/messages.js +24 -3
  186. package/dist/rendering/messages.js.map +1 -1
  187. package/dist/runs/events.d.ts +5 -2
  188. package/dist/runs/events.d.ts.map +1 -1
  189. package/dist/runs/events.js +4 -1
  190. package/dist/runs/events.js.map +1 -1
  191. package/dist/runs/recording.d.ts +11 -0
  192. package/dist/runs/recording.d.ts.map +1 -1
  193. package/dist/runs/recording.js +28 -12
  194. package/dist/runs/recording.js.map +1 -1
  195. package/dist/sends/guard.d.ts +2 -2
  196. package/dist/sends/guard.d.ts.map +1 -1
  197. package/dist/sends/guard.js +2 -1
  198. package/dist/sends/guard.js.map +1 -1
  199. package/dist/sends/journal.d.ts +2 -2
  200. package/dist/sends/journal.d.ts.map +1 -1
  201. package/dist/sends/journal.js.map +1 -1
  202. package/dist/sends/permissions.d.ts.map +1 -1
  203. package/dist/sends/permissions.js +3 -0
  204. package/dist/sends/permissions.js.map +1 -1
  205. package/dist/server/server-connection.d.ts +8 -1
  206. package/dist/server/server-connection.d.ts.map +1 -1
  207. package/dist/server/server-connection.js +27 -1
  208. package/dist/server/server-connection.js.map +1 -1
  209. package/dist/server/server.d.ts.map +1 -1
  210. package/dist/server/server.js +7 -1
  211. package/dist/server/server.js.map +1 -1
  212. package/dist/server/start.d.ts +1 -1
  213. package/dist/server/start.d.ts.map +1 -1
  214. package/dist/server/start.js +5 -3
  215. package/dist/server/start.js.map +1 -1
  216. package/dist/session/store.d.ts +2 -0
  217. package/dist/session/store.d.ts.map +1 -1
  218. package/dist/session/store.js +5 -1
  219. package/dist/session/store.js.map +1 -1
  220. package/dist/spec/index.d.ts.map +1 -1
  221. package/dist/spec/index.js +2 -1
  222. package/dist/spec/index.js.map +1 -1
  223. package/dist/spec/operations/account.d.ts +3 -0
  224. package/dist/spec/operations/account.d.ts.map +1 -1
  225. package/dist/spec/operations/account.js +5 -1
  226. package/dist/spec/operations/account.js.map +1 -1
  227. package/dist/spec/operations/chats.d.ts +4 -3
  228. package/dist/spec/operations/chats.d.ts.map +1 -1
  229. package/dist/spec/operations/chats.js +12 -7
  230. package/dist/spec/operations/chats.js.map +1 -1
  231. package/dist/spec/operations/contacts.d.ts +8 -3
  232. package/dist/spec/operations/contacts.d.ts.map +1 -1
  233. package/dist/spec/operations/contacts.js +26 -5
  234. package/dist/spec/operations/contacts.js.map +1 -1
  235. package/dist/spec/operations/folders.d.ts.map +1 -1
  236. package/dist/spec/operations/folders.js +1 -0
  237. package/dist/spec/operations/folders.js.map +1 -1
  238. package/dist/spec/operations/messages.d.ts +14 -4
  239. package/dist/spec/operations/messages.d.ts.map +1 -1
  240. package/dist/spec/operations/messages.js +30 -3
  241. package/dist/spec/operations/messages.js.map +1 -1
  242. package/dist/spec/operations/uploads.d.ts +1 -1
  243. package/dist/spec/operations/uploads.d.ts.map +1 -1
  244. package/dist/spec/operations/uploads.js +2 -1
  245. package/dist/spec/operations/uploads.js.map +1 -1
  246. package/dist/version.d.ts +1 -1
  247. package/dist/version.js +1 -1
  248. package/package.json +5 -2
  249. package/skills/max-cli/SKILL.md +19 -9
package/dist/config.js CHANGED
@@ -29,41 +29,56 @@ const objectMessage = (known) => (issue) => issue.expected === "never"
29
29
  * **No field here can hold a secret.** No token, no phone number, no chat id: a schema with
30
30
  * nowhere to put one is stronger than a rule saying do not put one there.
31
31
  */
32
- const profileEntries = {
32
+ const sharedEntries = {
33
33
  limit: v.optional(count),
34
34
  timeoutMs: v.optional(count),
35
35
  color: v.optional(flag),
36
- senderColors: v.optional(flag),
37
36
  /** The run log reads these two; nothing records anything until it exists. */
38
37
  record: v.optional(flag),
39
38
  keepRunsForDays: v.optional(count),
40
39
  readOnly: v.optional(flag),
41
40
  allow: v.optional(permissionList),
42
41
  sendsPerHour: v.optional(count),
42
+ };
43
+ /** A bot has no server and no sender colours, so `bot.*` refuses these rather than ignoring them. */
44
+ const personalEntries = {
45
+ ...sharedEntries,
46
+ senderColors: v.optional(flag),
43
47
  /** Start `max serve` in the background when a command needs MAX and none is running (`MAX-35`). */
44
48
  serve: v.optional(flag),
45
49
  };
46
- const profileSettings = v.strictObject(profileEntries, objectMessage(Object.keys(profileEntries)));
50
+ const strict = (entries) => v.strictObject(entries, objectMessage(Object.keys(entries)));
51
+ const profileSettings = strict(personalEntries);
52
+ const botSettings = strict(sharedEntries);
47
53
  /**
48
54
  * One program, one version: whether to look for a newer one is not a per-profile matter. Nor is the
49
55
  * speech model — it is a download on this machine, not a property of an account.
50
56
  */
51
57
  const defaultsEntries = {
52
- ...profileEntries,
58
+ ...personalEntries,
53
59
  updateCheck: v.optional(flag),
54
60
  transcribeModel: v.optional(v.picklist(MODELS.map((model) => model.id), `has to be one of ${MODELS.map((model) => `"${model.id}"`).join(", ")}`)),
55
61
  };
56
- const defaultsSettings = v.strictObject(defaultsEntries, objectMessage(Object.keys(defaultsEntries)));
62
+ const defaultsSettings = strict(defaultsEntries);
63
+ const profilesOf = (settings) => v.record(v.string(), settings, "has to be an object of profiles, by name");
64
+ /** Every personal account, or every bot, and then one of them by name (`NEED-355`). */
65
+ const kindSection = (entries) => {
66
+ const settings = strict(entries);
67
+ return strict({ defaults: v.optional(settings), profiles: v.optional(profilesOf(settings)) });
68
+ };
57
69
  const configEntries = {
58
70
  defaultProfile: v.optional(v.string(plain("has to be a profile name, in quotes"))),
59
71
  /** What every profile gets unless it says otherwise. */
60
72
  defaults: v.optional(defaultsSettings),
61
- profiles: v.optional(v.record(v.string(), profileSettings, "has to be an object of profiles, by name"), {}),
73
+ profiles: v.optional(profilesOf(profileSettings), {}),
74
+ personal: v.optional(kindSection(personalEntries)),
75
+ bot: v.optional(kindSection(sharedEntries)),
62
76
  };
63
77
  export const configSchema = v.strictObject(configEntries, objectMessage(Object.keys(configEntries)));
64
78
  export const PROFILE_SETTINGS = Object.keys(profileSettings.entries);
79
+ export const PERSONAL_ONLY_SETTINGS = Object.keys(personalEntries).filter((key) => !(key in botSettings.entries));
65
80
  export const DEFAULTS_ONLY_SETTINGS = ["updateCheck", "transcribeModel"];
66
- export const ALL_SETTINGS = [...PROFILE_SETTINGS, ...DEFAULTS_ONLY_SETTINGS];
81
+ export const ALL_SETTINGS = [...PROFILE_SETTINGS, ...DEFAULTS_ONLY_SETTINGS, "defaultProfile"];
67
82
  /**
68
83
  * `MAX_PROFILE_LOCK` pins a process to one profile: the owner sets it where an agent runs, and a
69
84
  * first word or `MAX_PROFILE` naming any other profile is refused rather than obeyed. What the
@@ -101,62 +116,36 @@ const first = (candidates, fallback) => {
101
116
  * `MAX_STATE_DIR` or `MAX_CACHE_DIR` move the whole installation — including which keyring entry
102
117
  * a profile means (`ARCHITECTURE.md` §14).
103
118
  */
104
- export const resolveSettings = (flags = {}, { env = process.env, configDir } = {}) => {
119
+ export const resolveSettings = (flags = {}, { env = process.env, configDir, kind = "personal" } = {}) => {
105
120
  const paths = resolvePaths({ appName: APP, prefix: "MAX", env });
106
121
  const configPath = configFilePath(configDir ?? paths.config);
107
122
  const config = readConfig(configPath);
108
123
  const profile = locked(first([
109
124
  ["first word", flags.profile],
110
125
  ["MAX_PROFILE", given(env.MAX_PROFILE)],
111
- ["config file", config.defaultProfile],
126
+ ["config file: defaultProfile", config.defaultProfile],
112
127
  ], DEFAULT_PROFILE), given(env.MAX_PROFILE_LOCK));
113
- const configured = config.profiles[usableProfileName(profile.value)] ?? {};
128
+ const layers = layersFor(config, usableProfileName(profile.value), kind);
129
+ const fromFile = (key, flag) => [
130
+ ["flag", flag],
131
+ ...layers.map(([from, layer]) => [from, layer?.[key]]),
132
+ ];
133
+ const limit = first(fromFile("limit", flags.limit), DEFAULT_LIMIT);
134
+ const timeoutMs = first(fromFile("timeoutMs"), undefined);
135
+ const color = first(fromFile("color"), undefined);
136
+ const senderColors = first(fromFile("senderColors"), false);
137
+ const record = first(fromFile("record", flags.record), false);
138
+ const serve = first(fromFile("serve", flags.serve), true);
139
+ const keepRunsForDays = first(fromFile("keepRunsForDays"), DEFAULT_KEEP_RUNS_FOR_DAYS);
140
+ const readOnly = first(fromFile("readOnly"), false);
141
+ const allow = first(fromFile("allow"), undefined);
142
+ // A bot has no hourly limit unless a `bot.*` section gives it one (`NEED-305`, `NEED-356`).
143
+ const sendsPerHour = kind === "bot"
144
+ ? first(fromFile("sendsPerHour").filter(([from]) => from.startsWith("config file: bot.")), Number.POSITIVE_INFINITY)
145
+ : first(fromFile("sendsPerHour"), DEFAULT_SENDS_PER_HOUR);
114
146
  const shared = config.defaults ?? {};
115
- const limit = first([
116
- ["flag", flags.limit],
117
- ["config file", configured.limit],
118
- ["config defaults", shared.limit],
119
- ], DEFAULT_LIMIT);
120
- const timeoutMs = first([
121
- ["config file", configured.timeoutMs],
122
- ["config defaults", shared.timeoutMs],
123
- ], undefined);
124
- const color = first([
125
- ["config file", configured.color],
126
- ["config defaults", shared.color],
127
- ], undefined);
128
- const senderColors = first([
129
- ["config file", configured.senderColors],
130
- ["config defaults", shared.senderColors],
131
- ], false);
132
- const record = first([
133
- ["flag", flags.record],
134
- ["config file", configured.record],
135
- ["config defaults", shared.record],
136
- ], false);
137
- const serve = first([
138
- ["flag", flags.serve],
139
- ["config file", configured.serve],
140
- ["config defaults", shared.serve],
141
- ], true);
142
- const keepRunsForDays = first([
143
- ["config file", configured.keepRunsForDays],
144
- ["config defaults", shared.keepRunsForDays],
145
- ], DEFAULT_KEEP_RUNS_FOR_DAYS);
146
- const readOnly = first([
147
- ["config file", configured.readOnly],
148
- ["config defaults", shared.readOnly],
149
- ], false);
150
- const allow = first([
151
- ["config file", configured.allow],
152
- ["config defaults", shared.allow],
153
- ], undefined);
154
- const sendsPerHour = first([
155
- ["config file", configured.sendsPerHour],
156
- ["config defaults", shared.sendsPerHour],
157
- ], DEFAULT_SENDS_PER_HOUR);
158
- const updateCheck = first([["config defaults", shared.updateCheck]], true);
159
- const transcribeModel = first([["config defaults", shared.transcribeModel]], DEFAULT_MODEL);
147
+ const updateCheck = first([["config file: defaults", shared.updateCheck]], true);
148
+ const transcribeModel = first([["config file: defaults", shared.transcribeModel]], DEFAULT_MODEL);
160
149
  /**
161
150
  * ⚠ **The only setting with no `config file` row, on purpose.** A budget for one command is
162
151
  * about a particular run, not a habit, and a timeout written into a file is one somebody trips
@@ -191,7 +180,8 @@ export const resolveSettings = (flags = {}, { env = process.env, configDir } = {
191
180
  transcribeModel: transcribeModel.value,
192
181
  configPath,
193
182
  configFound: existsSync(configPath),
194
- configuredProfiles: Object.keys(config.profiles),
183
+ kind,
184
+ configuredProfiles: namedProfiles(config),
195
185
  sources: {
196
186
  profile: profile.from,
197
187
  limit: limit.from,
@@ -224,6 +214,24 @@ export const resolveSettings = (flags = {}, { env = process.env, configDir } = {
224
214
  }
225
215
  return settings;
226
216
  };
217
+ /**
218
+ * **The most specific entry wins** (`NEED-355`): this profile's personal or bot entry, then the
219
+ * profile, then every personal account or every bot, then everyone. Naming one account says more
220
+ * than naming all of them, so a profile beats a kind.
221
+ */
222
+ const layersFor = (config, profile, kind) => [
223
+ [`config file: ${kind}.profiles.${profile}`, config[kind]?.profiles?.[profile]],
224
+ [`config file: profiles.${profile}`, config.profiles[profile]],
225
+ [`config file: ${kind}.defaults`, config[kind]?.defaults],
226
+ ["config file: defaults", config.defaults],
227
+ ];
228
+ const namedProfiles = (config) => [
229
+ ...new Set([
230
+ ...Object.keys(config.profiles),
231
+ ...Object.keys(config.personal?.profiles ?? {}),
232
+ ...Object.keys(config.bot?.profiles ?? {}),
233
+ ]),
234
+ ].sort();
227
235
  /**
228
236
  * The profile names written in the configuration file.
229
237
  *
@@ -233,7 +241,7 @@ export const resolveSettings = (flags = {}, { env = process.env, configDir } = {
233
241
  */
234
242
  export const configuredProfiles = ({ env = process.env, configDir } = {}) => {
235
243
  const paths = resolvePaths({ appName: APP, prefix: "MAX", env });
236
- return Object.keys(readConfig(configFilePath(configDir ?? paths.config)).profiles).sort();
244
+ return namedProfiles(readConfig(configFilePath(configDir ?? paths.config)));
237
245
  };
238
246
  /**
239
247
  * `30s`, `2m`, `500ms` — **the unit is required, and a bare number is refused.**
@@ -270,6 +278,11 @@ const MINUTE = 60_000;
270
278
  const YEAR = 365 * 24 * 60 * MINUTE;
271
279
  const DELAY = /^(\d+)(m|h|d)$/;
272
280
  const DELAY_UNIT_MS = { m: MINUTE, h: 60 * MINUTE, d: 24 * 60 * MINUTE };
281
+ /** `30m`, `2h`, `1d` as milliseconds; anything else is `undefined`. */
282
+ export const delayMs = (value) => {
283
+ const [, amount, unit] = DELAY.exec(value.trim()) ?? [];
284
+ return amount && unit ? Number(amount) * (DELAY_UNIT_MS[unit] ?? 0) : undefined;
285
+ };
273
286
  /**
274
287
  * Rounded down to the minute: MAX drops the seconds and sends at the start of the minute (measured
275
288
  * 2026-09-24, `FIND-141`), so the time we print is the time it goes. A time without an offset is
@@ -278,11 +291,11 @@ const DELAY_UNIT_MS = { m: MINUTE, h: 60 * MINUTE, d: 24 * 60 * MINUTE };
278
291
  */
279
292
  export const sendTime = (value, now = Date.now()) => {
280
293
  const trimmed = value.trim();
281
- const delay = DELAY.exec(trimmed);
294
+ const delay = delayMs(trimmed);
282
295
  const at = /^\d{4}-\d{2}-\d{2}[T ]\d{2}:\d{2}/.test(trimmed)
283
296
  ? Date.parse(trimmed.replace(" ", "T"))
284
- : delay?.[1] && delay[2]
285
- ? now + Number(delay[1]) * (DELAY_UNIT_MS[delay[2]] ?? 0)
297
+ : delay !== undefined
298
+ ? now + delay
286
299
  : Number.NaN;
287
300
  if (Number.isNaN(at)) {
288
301
  throw new CliError("validation_error", `--at takes a time like 2026-09-25T09:00 or a delay like 30m, 2h, 1d — not "${value}"`);
@@ -293,32 +306,81 @@ export const sendTime = (value, now = Date.now()) => {
293
306
  throw new CliError("validation_error", "--at can be at most a year from now, as in MAX itself");
294
307
  return at - (at % MINUTE);
295
308
  };
309
+ export const scopePath = ({ profile, kind }) => [kind, profile === undefined ? "defaults" : `profiles.${profile}`].filter(Boolean).join(".");
310
+ /** The `config set` that writes where a value came from, so a refusal can say what to type. */
311
+ export const setCommandFor = (from, profile, setting) => {
312
+ const path = from.startsWith("config file: ") ? from.slice("config file: ".length) : `profiles.${profile}`;
313
+ const [first, second] = path.split(".");
314
+ const kind = first === "personal" || first === "bot" ? first : undefined;
315
+ const everyone = (kind ? second : first) === "defaults";
316
+ const words = [
317
+ "max",
318
+ ...(everyone ? [] : [profile]),
319
+ "config set",
320
+ ...(kind ? [`--${kind}`] : []),
321
+ ...(everyone ? ["--defaults"] : []),
322
+ setting,
323
+ ];
324
+ return words.join(" ");
325
+ };
296
326
  /**
297
327
  * Sets or removes one setting of one profile, or of `defaults`, and writes the file back.
328
+ * `defaultProfile` is the one top-level key, and takes no scope.
298
329
  *
299
330
  * **The value is checked by the same schema that reads the file**, on the whole result, before
300
331
  * anything is written — so `config set` cannot produce a file the next command refuses to load.
301
332
  */
302
- export const changeSetting = (path, { profile, setting, value }) => {
333
+ export const changeSetting = (path, { profile, kind, setting, value }) => {
303
334
  if (!ALL_SETTINGS.includes(setting)) {
304
335
  throw new CliError("validation_error", `no setting called "${setting}" — one of: ${ALL_SETTINGS.join(", ")}`);
305
336
  }
306
- if (profile !== undefined && DEFAULTS_ONLY_SETTINGS.includes(setting)) {
307
- throw new CliError("validation_error", `${setting} is one setting for the whole program, not per profile — add --defaults`);
308
- }
309
337
  const config = readConfig(path);
310
- const scope = { ...(profile === undefined ? config.defaults : config.profiles[profile]) };
338
+ if (setting === "defaultProfile") {
339
+ if (kind !== undefined)
340
+ throw new CliError("validation_error", "defaultProfile is one for the whole file — drop --personal or --bot");
341
+ return changeDefaultProfile(path, config, value);
342
+ }
343
+ if ((profile !== undefined || kind !== undefined) &&
344
+ DEFAULTS_ONLY_SETTINGS.includes(setting)) {
345
+ throw new CliError("validation_error", `${setting} is one setting for the whole program, not per profile — use --defaults without --personal or --bot`);
346
+ }
347
+ if (kind === "bot" && PERSONAL_ONLY_SETTINGS.includes(setting)) {
348
+ throw new CliError("validation_error", `${setting} is for personal accounts; a bot has no use for it`);
349
+ }
350
+ const section = kind === undefined ? config : { ...config[kind] };
351
+ const table = (profile === undefined ? section.defaults : section.profiles?.[profile]);
352
+ const scope = { ...table };
311
353
  if (value === undefined)
312
354
  delete scope[setting];
313
355
  else
314
356
  scope[setting] = setting === "allow" ? parseList(value) : parseValue(value);
315
- const changed = profile === undefined
316
- ? { ...config, defaults: scope }
317
- : { ...config, profiles: { ...config.profiles, [profile]: scope } };
318
- if (profile === undefined && Object.keys(scope).length === 0)
319
- delete changed.defaults;
320
- if (profile !== undefined && Object.keys(scope).length === 0)
321
- delete changed.profiles[profile];
357
+ const empty = Object.keys(scope).length === 0;
358
+ const place = (holder) => {
359
+ const next = { ...holder, profiles: { ...holder.profiles } };
360
+ if (profile === undefined) {
361
+ if (empty)
362
+ delete next.defaults;
363
+ else
364
+ next.defaults = scope;
365
+ }
366
+ else if (empty)
367
+ delete next.profiles[profile];
368
+ else
369
+ next.profiles[profile] = scope;
370
+ return next;
371
+ };
372
+ let changed;
373
+ if (kind === undefined) {
374
+ changed = place(config);
375
+ }
376
+ else {
377
+ const placed = place(config[kind] ?? {});
378
+ if (Object.keys(placed.profiles).length === 0)
379
+ delete placed.profiles;
380
+ changed = { ...config, [kind]: placed };
381
+ if (Object.keys(placed).length === 0)
382
+ delete changed[kind];
383
+ }
322
384
  const checked = v.safeParse(configSchema, changed);
323
385
  if (!checked.success) {
324
386
  throw new CliError("validation_error", `${setting} cannot be "${value}": ${checked.issues[0]?.message ?? "invalid"}`);
@@ -326,6 +388,15 @@ export const changeSetting = (path, { profile, setting, value }) => {
326
388
  saveConfigFile(path, checked.output);
327
389
  return scope[setting] ?? null;
328
390
  };
391
+ const changeDefaultProfile = (path, config, value) => {
392
+ const changed = { ...config };
393
+ if (value === undefined)
394
+ delete changed.defaultProfile;
395
+ else
396
+ changed.defaultProfile = usableProfileName(value);
397
+ saveConfigFile(path, changed);
398
+ return changed.defaultProfile ?? null;
399
+ };
329
400
  /** `send,reaction` as the owner types it, or the JSON array the file holds; blank is the empty list. */
330
401
  const parseList = (value) => value.trim().startsWith("[")
331
402
  ? parseValue(value)
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
@@ -9,6 +9,10 @@ export interface DiagnoseOptions {
9
9
  readSchemaVersion?: (file: string) => Promise<number | undefined>;
10
10
  /** Where a stored token is — the keyring, or the file that stands in for one; `undefined` for none. */
11
11
  storedToken?: (profile: string) => "keyring" | "file" | undefined;
12
+ /** The same for the bot token, keyring account `bot:<profile>` (`src/bot/auth.ts`). */
13
+ storedBotToken?: (profile: string) => "keyring" | "file" | undefined;
14
+ /** Profile names the configuration file mentions, for the list of every profile. */
15
+ configured?: string[];
12
16
  now?: () => Date;
13
17
  install?: () => Install;
14
18
  native?: () => Promise<Native>;
@@ -22,6 +26,13 @@ export interface Native {
22
26
  sqlite: string;
23
27
  }
24
28
  export type TokenSource = "environment" | "keyring" | "file" | "none";
29
+ /** A profile is a personal account, a bot, or both (`NEED-294`); which one is read off what exists. */
30
+ export interface ProfileRow {
31
+ name: string;
32
+ personal: boolean;
33
+ bot: boolean;
34
+ configured: boolean;
35
+ }
25
36
  export interface Diagnosis {
26
37
  /** ⚠ Never the token, and never a prefix or a length of it — only whether one is reachable. */
27
38
  token: {
@@ -50,6 +61,31 @@ export interface Diagnosis {
50
61
  loginPausedUntil: string | null;
51
62
  };
52
63
  loggedInProfiles: string[];
64
+ /** Every profile this machine knows of, with what it holds. */
65
+ profiles: ProfileRow[];
66
+ /** This profile's bot side. ⚠ Never the token; the bot's id only as known or not. */
67
+ bot: {
68
+ token: {
69
+ present: boolean;
70
+ from: TokenSource;
71
+ };
72
+ registry: {
73
+ file: string;
74
+ exists: boolean;
75
+ botKnown: boolean;
76
+ chats: number;
77
+ };
78
+ sends: string;
79
+ };
80
+ /** Where this profile's files live — one place to look instead of nine. */
81
+ paths: {
82
+ state: string;
83
+ cache: string;
84
+ runs: string;
85
+ bots: string;
86
+ sends: string;
87
+ messages: string;
88
+ };
53
89
  cache: {
54
90
  file: string;
55
91
  exists: boolean;
@@ -96,5 +132,15 @@ export declare const STALE_AFTER_DAYS = 60;
96
132
  * identity and writes it out on first read. A diagnosis that creates the thing it is reporting on
97
133
  * is not a diagnosis.
98
134
  */
99
- export declare const diagnose: ({ profile, env, stateDir, cacheDir, readSchemaVersion, storedToken, now, install, native, speechModel, modelsDir, }: DiagnoseOptions) => Promise<Diagnosis>;
135
+ export declare const diagnose: ({ profile, env, stateDir, cacheDir, readSchemaVersion, storedToken, storedBotToken, configured, now, install, native, speechModel, modelsDir, }: DiagnoseOptions) => Promise<Diagnosis>;
136
+ /**
137
+ * **Every profile, from files only**: a personal state file, a bot registry file, or a name in the
138
+ * configuration. It never reads the keyring — `config show` uses it as is, and that is `doctor`'s
139
+ * job (`CLI-12`); `diagnose` adds the keyring on top.
140
+ */
141
+ export declare const knownProfiles: ({ stateDir, configured, env, }: {
142
+ stateDir?: string;
143
+ configured?: string[];
144
+ env?: NodeJS.ProcessEnv;
145
+ }) => ProfileRow[];
100
146
  //# sourceMappingURL=diagnose.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"diagnose.d.ts","sourceRoot":"","sources":["../src/diagnose.ts"],"names":[],"mappings":"AAMA,OAAO,EAAgB,KAAK,OAAO,EAAa,MAAM,cAAc,CAAA;AAMpE,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAA;IACf,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAA;IACvB,iFAAiF;IACjF,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,8DAA8D;IAC9D,iBAAiB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAA;IACjE,uGAAuG;IACvG,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,SAAS,GAAG,MAAM,GAAG,SAAS,CAAA;IACjE,GAAG,CAAC,EAAE,MAAM,IAAI,CAAA;IAChB,OAAO,CAAC,EAAE,MAAM,OAAO,CAAA;IACvB,MAAM,CAAC,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAA;IAC9B,mEAAmE;IACnE,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,2FAA2F;AAC3F,MAAM,WAAW,MAAM;IACrB,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,MAAM,CAAA;CACf;AAED,MAAM,MAAM,WAAW,GAAG,aAAa,GAAG,SAAS,GAAG,MAAM,GAAG,MAAM,CAAA;AAErE,MAAM,WAAW,SAAS;IACxB,+FAA+F;IAC/F,KAAK,EAAE;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,IAAI,EAAE,WAAW,CAAA;KAAE,CAAA;IAC9C;;;;OAIG;IACH,OAAO,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,kBAAkB,EAAE,OAAO,CAAA;KAAE,CAAA;IACzD,OAAO,EAAE;QACP,SAAS,EAAE,MAAM,CAAA;QACjB,mFAAmF;QACnF,MAAM,EAAE,OAAO,CAAA;QACf,QAAQ,EAAE,OAAO,CAAA;QACjB,QAAQ,EAAE,OAAO,CAAA;QACjB,qFAAqF;QACrF,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;QACrB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;QAC1B,uFAAuF;QACvF,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAA;KAChC,CAAA;IACD,gBAAgB,EAAE,MAAM,EAAE,CAAA;IAC1B,KAAK,EAAE;QACL,IAAI,EAAE,MAAM,CAAA;QACZ,MAAM,EAAE,OAAO,CAAA;QACf,+EAA+E;QAC/E,aAAa,EAAE,MAAM,GAAG,SAAS,CAAA;QACjC,MAAM,EAAE,MAAM,CAAA;QACd,+FAA+F;QAC/F,QAAQ,EAAE,OAAO,CAAA;KAClB,CAAA;IACD,IAAI,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAA;IACzC,yGAAyG;IACzG,MAAM,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,OAAO,CAAA;KAAE,CAAA;IAC/F,OAAO,EAAE,OAAO,CAAA;IAChB,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,UAAU,EAAE,OAAO,CAAA;KAAE,CAAA;CACzE;AAED,gGAAgG;AAChG,eAAO,MAAM,gBAAgB,KAAK,CAAA;AAElC;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,QAAQ,wHAYlB,eAAe,KAAG,OAAO,CAAC,SAAS,CAkDrC,CAAA"}
1
+ {"version":3,"file":"diagnose.d.ts","sourceRoot":"","sources":["../src/diagnose.ts"],"names":[],"mappings":"AAOA,OAAO,EAAgB,KAAK,OAAO,EAAa,MAAM,cAAc,CAAA;AAMpE,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAA;IACf,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAA;IACvB,iFAAiF;IACjF,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,8DAA8D;IAC9D,iBAAiB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAA;IACjE,uGAAuG;IACvG,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,SAAS,GAAG,MAAM,GAAG,SAAS,CAAA;IACjE,uFAAuF;IACvF,cAAc,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,SAAS,GAAG,MAAM,GAAG,SAAS,CAAA;IACpE,oFAAoF;IACpF,UAAU,CAAC,EAAE,MAAM,EAAE,CAAA;IACrB,GAAG,CAAC,EAAE,MAAM,IAAI,CAAA;IAChB,OAAO,CAAC,EAAE,MAAM,OAAO,CAAA;IACvB,MAAM,CAAC,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAA;IAC9B,mEAAmE;IACnE,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,2FAA2F;AAC3F,MAAM,WAAW,MAAM;IACrB,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,MAAM,CAAA;CACf;AAED,MAAM,MAAM,WAAW,GAAG,aAAa,GAAG,SAAS,GAAG,MAAM,GAAG,MAAM,CAAA;AAErE,uGAAuG;AACvG,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,OAAO,CAAA;IACjB,GAAG,EAAE,OAAO,CAAA;IACZ,UAAU,EAAE,OAAO,CAAA;CACpB;AAED,MAAM,WAAW,SAAS;IACxB,+FAA+F;IAC/F,KAAK,EAAE;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,IAAI,EAAE,WAAW,CAAA;KAAE,CAAA;IAC9C;;;;OAIG;IACH,OAAO,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,kBAAkB,EAAE,OAAO,CAAA;KAAE,CAAA;IACzD,OAAO,EAAE;QACP,SAAS,EAAE,MAAM,CAAA;QACjB,mFAAmF;QACnF,MAAM,EAAE,OAAO,CAAA;QACf,QAAQ,EAAE,OAAO,CAAA;QACjB,QAAQ,EAAE,OAAO,CAAA;QACjB,qFAAqF;QACrF,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;QACrB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;QAC1B,uFAAuF;QACvF,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAA;KAChC,CAAA;IACD,gBAAgB,EAAE,MAAM,EAAE,CAAA;IAC1B,+DAA+D;IAC/D,QAAQ,EAAE,UAAU,EAAE,CAAA;IACtB,qFAAqF;IACrF,GAAG,EAAE;QACH,KAAK,EAAE;YAAE,OAAO,EAAE,OAAO,CAAC;YAAC,IAAI,EAAE,WAAW,CAAA;SAAE,CAAA;QAC9C,QAAQ,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,OAAO,CAAC;YAAC,QAAQ,EAAE,OAAO,CAAC;YAAC,KAAK,EAAE,MAAM,CAAA;SAAE,CAAA;QAC7E,KAAK,EAAE,MAAM,CAAA;KACd,CAAA;IACD,2EAA2E;IAC3E,KAAK,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAA;IACpG,KAAK,EAAE;QACL,IAAI,EAAE,MAAM,CAAA;QACZ,MAAM,EAAE,OAAO,CAAA;QACf,+EAA+E;QAC/E,aAAa,EAAE,MAAM,GAAG,SAAS,CAAA;QACjC,MAAM,EAAE,MAAM,CAAA;QACd,+FAA+F;QAC/F,QAAQ,EAAE,OAAO,CAAA;KAClB,CAAA;IACD,IAAI,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAA;IACzC,yGAAyG;IACzG,MAAM,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,OAAO,CAAA;KAAE,CAAA;IAC/F,OAAO,EAAE,OAAO,CAAA;IAChB,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,UAAU,EAAE,OAAO,CAAA;KAAE,CAAA;CACzE;AAED,gGAAgG;AAChG,eAAO,MAAM,gBAAgB,KAAK,CAAA;AAElC;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,QAAQ,oJAclB,eAAe,KAAG,OAAO,CAAC,SAAS,CAkFrC,CAAA;AAgED;;;;GAIG;AACH,eAAO,MAAM,aAAa,mCAIvB;IACD,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAA;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAA;CACxB,KAAG,UAAU,EAQb,CAAA"}
package/dist/diagnose.js CHANGED
@@ -2,6 +2,7 @@ import { existsSync, readdirSync, readFileSync, statSync } from "node:fs";
2
2
  import { createRequire } from "node:module";
3
3
  import { join } from "node:path";
4
4
  import { pathsAreOverridden, resolvePaths } from "@leemour/cli-core";
5
+ import { storePath } from "@leemour/cli-messaging/store";
5
6
  import { openCache } from "./cache/open.js";
6
7
  import { SCHEMA_VERSION } from "./cache/schema.js";
7
8
  import { checkInstall, ownScript } from "./install.js";
@@ -26,7 +27,7 @@ export const STALE_AFTER_DAYS = 60;
26
27
  * identity and writes it out on first read. A diagnosis that creates the thing it is reporting on
27
28
  * is not a diagnosis.
28
29
  */
29
- export const diagnose = async ({ profile, env = process.env, stateDir, cacheDir, readSchemaVersion = schemaVersionOf, storedToken = () => undefined, now = () => new Date(), install = () => thisInstall(env), native = loadNative, speechModel = DEFAULT_MODEL, modelsDir, }) => {
30
+ export const diagnose = async ({ profile, env = process.env, stateDir, cacheDir, readSchemaVersion = schemaVersionOf, storedToken = () => undefined, storedBotToken = () => undefined, configured = [], now = () => new Date(), install = () => thisInstall(env), native = loadNative, speechModel = DEFAULT_MODEL, modelsDir, }) => {
30
31
  const paths = resolvePaths({ appName: "max-cli", prefix: "MAX", env });
31
32
  const state = stateDir ?? paths.state;
32
33
  const cacheHome = cacheDir ?? paths.cache;
@@ -39,6 +40,16 @@ export const diagnose = async ({ profile, env = process.env, stateDir, cacheDir,
39
40
  const cacheExists = existsSync(cacheFile);
40
41
  const schemaVersion = cacheExists ? await readSchemaVersion(cacheFile) : undefined;
41
42
  const runsDirectory = join(state, "runs");
43
+ const bots = join(state, "bots");
44
+ const registryFile = join(bots, `${profile}.json`);
45
+ const registry = readState(registryFile);
46
+ const botFromEnvironment = (env.MAX_BOT_TOKEN ?? "").trim() !== "";
47
+ const botTokenAt = botFromEnvironment ? undefined : storedBotToken(profile);
48
+ const profiles = knownProfiles({ stateDir: state, configured }).map((row) => ({
49
+ ...row,
50
+ personal: row.personal || storedToken(row.name) !== undefined,
51
+ bot: row.bot || storedBotToken(row.name) !== undefined,
52
+ }));
42
53
  return {
43
54
  token: {
44
55
  present: fromEnvironment || tokenAt !== undefined,
@@ -57,6 +68,28 @@ export const diagnose = async ({ profile, env = process.env, stateDir, cacheDir,
57
68
  : null,
58
69
  },
59
70
  loggedInProfiles: profilesWithState(join(state, "profiles")),
71
+ profiles,
72
+ bot: {
73
+ token: {
74
+ present: botFromEnvironment || botTokenAt !== undefined,
75
+ from: botFromEnvironment ? "environment" : (botTokenAt ?? "none"),
76
+ },
77
+ registry: {
78
+ file: registryFile,
79
+ exists: registry !== undefined,
80
+ botKnown: typeof registry?.botId === "string",
81
+ chats: Array.isArray(registry?.chats) ? registry.chats.length : 0,
82
+ },
83
+ sends: join(bots, "sends", `${profile}.jsonl`),
84
+ },
85
+ paths: {
86
+ state,
87
+ cache: cacheHome,
88
+ runs: runsDirectory,
89
+ bots,
90
+ sends: join(state, "sends", `${profile}.jsonl`),
91
+ messages: storePath(env),
92
+ },
60
93
  cache: {
61
94
  file: cacheFile,
62
95
  exists: cacheExists,
@@ -109,21 +142,39 @@ const readState = (file) => {
109
142
  return undefined;
110
143
  }
111
144
  };
145
+ /** `<profile>.moderation.json` shares the directory (`moderation/rules.ts`). */
146
+ const MODERATION_SUFFIX = ".moderation.json";
112
147
  /**
113
148
  * **Which profiles have been logged in**, which is not the same list as the configured ones —
114
149
  * `config show` says so and cannot answer it, because a profile needs no configuration entry.
115
150
  */
116
- const profilesWithState = (directory) => {
151
+ const profilesWithState = (directory) => jsonNames(directory, MODERATION_SUFFIX);
152
+ /** File names only: `bots/joins/` and `bots/sends/` are folders, not profiles. */
153
+ const jsonNames = (directory, except) => {
117
154
  try {
118
- return readdirSync(directory)
119
- .filter((name) => name.endsWith(".json"))
120
- .map((name) => name.slice(0, -".json".length))
155
+ return readdirSync(directory, { withFileTypes: true })
156
+ .filter((entry) => entry.isFile() && entry.name.endsWith(".json") && !(except && entry.name.endsWith(except)))
157
+ .map((entry) => entry.name.slice(0, -".json".length))
121
158
  .sort();
122
159
  }
123
160
  catch {
124
161
  return [];
125
162
  }
126
163
  };
164
+ /**
165
+ * **Every profile, from files only**: a personal state file, a bot registry file, or a name in the
166
+ * configuration. It never reads the keyring — `config show` uses it as is, and that is `doctor`'s
167
+ * job (`CLI-12`); `diagnose` adds the keyring on top.
168
+ */
169
+ export const knownProfiles = ({ stateDir, configured = [], env = process.env, }) => {
170
+ const state = stateDir ?? resolvePaths({ appName: "max-cli", prefix: "MAX", env }).state;
171
+ const personal = new Set(profilesWithState(join(state, "profiles")));
172
+ const bot = new Set(jsonNames(join(state, "bots")));
173
+ const named = new Set(configured);
174
+ return [...new Set([...personal, ...bot, ...named])]
175
+ .sort()
176
+ .map((name) => ({ name, personal: personal.has(name), bot: bot.has(name), configured: named.has(name) }));
177
+ };
127
178
  const countEntries = (directory) => {
128
179
  try {
129
180
  return readdirSync(directory).filter((name) => statSync(join(directory, name)).isDirectory()).length;
@@ -1 +1 @@
1
- {"version":3,"file":"diagnose.js","sourceRoot":"","sources":["../src/diagnose.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"diagnose.js","sourceRoot":"","sources":["../src/diagnose.ts"],"names":[],"mappings":"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"}