@wirecat/max-cli 0.0.0-stage → 0.42.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 (546) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +530 -2
  3. package/dist/adapter/max-adapter.d.ts +17 -0
  4. package/dist/adapter/max-adapter.d.ts.map +1 -0
  5. package/dist/adapter/max-adapter.js +364 -0
  6. package/dist/adapter/max-adapter.js.map +1 -0
  7. package/dist/app.d.ts +3 -0
  8. package/dist/app.d.ts.map +1 -0
  9. package/dist/app.js +9 -0
  10. package/dist/app.js.map +1 -0
  11. package/dist/bin/max.d.ts +3 -0
  12. package/dist/bin/max.d.ts.map +1 -0
  13. package/dist/bin/max.js +20 -0
  14. package/dist/bin/max.js.map +1 -0
  15. package/dist/bot/adapter.d.ts +25 -0
  16. package/dist/bot/adapter.d.ts.map +1 -0
  17. package/dist/bot/adapter.js +404 -0
  18. package/dist/bot/adapter.js.map +1 -0
  19. package/dist/bot/auth.d.ts +13 -0
  20. package/dist/bot/auth.d.ts.map +1 -0
  21. package/dist/bot/auth.js +9 -0
  22. package/dist/bot/auth.js.map +1 -0
  23. package/dist/bot/client.d.ts +26 -0
  24. package/dist/bot/client.d.ts.map +1 -0
  25. package/dist/bot/client.js +105 -0
  26. package/dist/bot/client.js.map +1 -0
  27. package/dist/bot/generated/manifest.d.ts +3 -0
  28. package/dist/bot/generated/manifest.d.ts.map +1 -0
  29. package/dist/bot/generated/manifest.js +1232 -0
  30. package/dist/bot/generated/manifest.js.map +1 -0
  31. package/dist/bot/generated/schemas.d.ts +271 -0
  32. package/dist/bot/generated/schemas.d.ts.map +1 -0
  33. package/dist/bot/generated/schemas.js +869 -0
  34. package/dist/bot/generated/schemas.js.map +1 -0
  35. package/dist/bot/generated/types.d.ts +1088 -0
  36. package/dist/bot/generated/types.d.ts.map +1 -0
  37. package/dist/bot/generated/types.js +5 -0
  38. package/dist/bot/generated/types.js.map +1 -0
  39. package/dist/bot/input.d.ts +6 -0
  40. package/dist/bot/input.d.ts.map +1 -0
  41. package/dist/bot/input.js +6 -0
  42. package/dist/bot/input.js.map +1 -0
  43. package/dist/bot/joins.d.ts +26 -0
  44. package/dist/bot/joins.d.ts.map +1 -0
  45. package/dist/bot/joins.js +56 -0
  46. package/dist/bot/joins.js.map +1 -0
  47. package/dist/bot/keep.d.ts +25 -0
  48. package/dist/bot/keep.d.ts.map +1 -0
  49. package/dist/bot/keep.js +98 -0
  50. package/dist/bot/keep.js.map +1 -0
  51. package/dist/bot/map.d.ts +14 -0
  52. package/dist/bot/map.d.ts.map +1 -0
  53. package/dist/bot/map.js +101 -0
  54. package/dist/bot/map.js.map +1 -0
  55. package/dist/bot/mcp-tools.d.ts +4 -0
  56. package/dist/bot/mcp-tools.d.ts.map +1 -0
  57. package/dist/bot/mcp-tools.js +78 -0
  58. package/dist/bot/mcp-tools.js.map +1 -0
  59. package/dist/bot/permissions.d.ts +14 -0
  60. package/dist/bot/permissions.d.ts.map +1 -0
  61. package/dist/bot/permissions.js +88 -0
  62. package/dist/bot/permissions.js.map +1 -0
  63. package/dist/bot/registry.d.ts +11 -0
  64. package/dist/bot/registry.d.ts.map +1 -0
  65. package/dist/bot/registry.js +13 -0
  66. package/dist/bot/registry.js.map +1 -0
  67. package/dist/bot/russian-trusted-root.d.ts +8 -0
  68. package/dist/bot/russian-trusted-root.d.ts.map +1 -0
  69. package/dist/bot/russian-trusted-root.js +41 -0
  70. package/dist/bot/russian-trusted-root.js.map +1 -0
  71. package/dist/bot/transport.d.ts +46 -0
  72. package/dist/bot/transport.d.ts.map +1 -0
  73. package/dist/bot/transport.js +252 -0
  74. package/dist/bot/transport.js.map +1 -0
  75. package/dist/bot/uploads.d.ts +42 -0
  76. package/dist/bot/uploads.d.ts.map +1 -0
  77. package/dist/bot/uploads.js +145 -0
  78. package/dist/bot/uploads.js.map +1 -0
  79. package/dist/client.d.ts +650 -0
  80. package/dist/client.d.ts.map +1 -0
  81. package/dist/client.js +2836 -0
  82. package/dist/client.js.map +1 -0
  83. package/dist/commands/account.d.ts +3 -0
  84. package/dist/commands/account.d.ts.map +1 -0
  85. package/dist/commands/account.js +4 -0
  86. package/dist/commands/account.js.map +1 -0
  87. package/dist/commands/bot-comments.d.ts +3 -0
  88. package/dist/commands/bot-comments.d.ts.map +1 -0
  89. package/dist/commands/bot-comments.js +74 -0
  90. package/dist/commands/bot-comments.js.map +1 -0
  91. package/dist/commands/bot-context.d.ts +38 -0
  92. package/dist/commands/bot-context.d.ts.map +1 -0
  93. package/dist/commands/bot-context.js +121 -0
  94. package/dist/commands/bot-context.js.map +1 -0
  95. package/dist/commands/bot-members.d.ts +14 -0
  96. package/dist/commands/bot-members.d.ts.map +1 -0
  97. package/dist/commands/bot-members.js +64 -0
  98. package/dist/commands/bot-members.js.map +1 -0
  99. package/dist/commands/bot-messenger.d.ts +10 -0
  100. package/dist/commands/bot-messenger.d.ts.map +1 -0
  101. package/dist/commands/bot-messenger.js +101 -0
  102. package/dist/commands/bot-messenger.js.map +1 -0
  103. package/dist/commands/bot-reads.d.ts +4 -0
  104. package/dist/commands/bot-reads.d.ts.map +1 -0
  105. package/dist/commands/bot-reads.js +13 -0
  106. package/dist/commands/bot-reads.js.map +1 -0
  107. package/dist/commands/bot-sends.d.ts +13 -0
  108. package/dist/commands/bot-sends.d.ts.map +1 -0
  109. package/dist/commands/bot-sends.js +103 -0
  110. package/dist/commands/bot-sends.js.map +1 -0
  111. package/dist/commands/bot-setup.d.ts +3 -0
  112. package/dist/commands/bot-setup.d.ts.map +1 -0
  113. package/dist/commands/bot-setup.js +20 -0
  114. package/dist/commands/bot-setup.js.map +1 -0
  115. package/dist/commands/bot.d.ts +3 -0
  116. package/dist/commands/bot.d.ts.map +1 -0
  117. package/dist/commands/bot.js +60 -0
  118. package/dist/commands/bot.js.map +1 -0
  119. package/dist/commands/calls.d.ts +3 -0
  120. package/dist/commands/calls.d.ts.map +1 -0
  121. package/dist/commands/calls.js +4 -0
  122. package/dist/commands/calls.js.map +1 -0
  123. package/dist/commands/chats.d.ts +3 -0
  124. package/dist/commands/chats.d.ts.map +1 -0
  125. package/dist/commands/chats.js +46 -0
  126. package/dist/commands/chats.js.map +1 -0
  127. package/dist/commands/commands.d.ts +2 -0
  128. package/dist/commands/commands.d.ts.map +1 -0
  129. package/dist/commands/commands.js +4 -0
  130. package/dist/commands/commands.js.map +1 -0
  131. package/dist/commands/complete.d.ts +2 -0
  132. package/dist/commands/complete.d.ts.map +1 -0
  133. package/dist/commands/complete.js +34 -0
  134. package/dist/commands/complete.js.map +1 -0
  135. package/dist/commands/config.d.ts +3 -0
  136. package/dist/commands/config.d.ts.map +1 -0
  137. package/dist/commands/config.js +170 -0
  138. package/dist/commands/config.js.map +1 -0
  139. package/dist/commands/contacts.d.ts +10 -0
  140. package/dist/commands/contacts.d.ts.map +1 -0
  141. package/dist/commands/contacts.js +80 -0
  142. package/dist/commands/contacts.js.map +1 -0
  143. package/dist/commands/context.d.ts +126 -0
  144. package/dist/commands/context.d.ts.map +1 -0
  145. package/dist/commands/context.js +137 -0
  146. package/dist/commands/context.js.map +1 -0
  147. package/dist/commands/doctor.d.ts +24 -0
  148. package/dist/commands/doctor.d.ts.map +1 -0
  149. package/dist/commands/doctor.js +308 -0
  150. package/dist/commands/doctor.js.map +1 -0
  151. package/dist/commands/mcp.d.ts +36 -0
  152. package/dist/commands/mcp.d.ts.map +1 -0
  153. package/dist/commands/mcp.js +214 -0
  154. package/dist/commands/mcp.js.map +1 -0
  155. package/dist/commands/messages.d.ts +3 -0
  156. package/dist/commands/messages.d.ts.map +1 -0
  157. package/dist/commands/messages.js +105 -0
  158. package/dist/commands/messages.js.map +1 -0
  159. package/dist/commands/models.d.ts +3 -0
  160. package/dist/commands/models.d.ts.map +1 -0
  161. package/dist/commands/models.js +4 -0
  162. package/dist/commands/models.js.map +1 -0
  163. package/dist/commands/paging.d.ts +59 -0
  164. package/dist/commands/paging.d.ts.map +1 -0
  165. package/dist/commands/paging.js +77 -0
  166. package/dist/commands/paging.js.map +1 -0
  167. package/dist/commands/recipients.d.ts +9 -0
  168. package/dist/commands/recipients.d.ts.map +1 -0
  169. package/dist/commands/recipients.js +74 -0
  170. package/dist/commands/recipients.js.map +1 -0
  171. package/dist/commands/runs.d.ts +2 -0
  172. package/dist/commands/runs.d.ts.map +1 -0
  173. package/dist/commands/runs.js +4 -0
  174. package/dist/commands/runs.js.map +1 -0
  175. package/dist/commands/sends.d.ts +3 -0
  176. package/dist/commands/sends.d.ts.map +1 -0
  177. package/dist/commands/sends.js +4 -0
  178. package/dist/commands/sends.js.map +1 -0
  179. package/dist/commands/serve-members.d.ts +14 -0
  180. package/dist/commands/serve-members.d.ts.map +1 -0
  181. package/dist/commands/serve-members.js +54 -0
  182. package/dist/commands/serve-members.js.map +1 -0
  183. package/dist/commands/serve-stems.d.ts +9 -0
  184. package/dist/commands/serve-stems.d.ts.map +1 -0
  185. package/dist/commands/serve-stems.js +26 -0
  186. package/dist/commands/serve-stems.js.map +1 -0
  187. package/dist/commands/serve.d.ts +10 -0
  188. package/dist/commands/serve.d.ts.map +1 -0
  189. package/dist/commands/serve.js +79 -0
  190. package/dist/commands/serve.js.map +1 -0
  191. package/dist/commands/server.d.ts +16 -0
  192. package/dist/commands/server.d.ts.map +1 -0
  193. package/dist/commands/server.js +51 -0
  194. package/dist/commands/server.js.map +1 -0
  195. package/dist/commands/session.d.ts +15 -0
  196. package/dist/commands/session.d.ts.map +1 -0
  197. package/dist/commands/session.js +169 -0
  198. package/dist/commands/session.js.map +1 -0
  199. package/dist/commands/setup.d.ts +3 -0
  200. package/dist/commands/setup.d.ts.map +1 -0
  201. package/dist/commands/setup.js +168 -0
  202. package/dist/commands/setup.js.map +1 -0
  203. package/dist/commands/skill.d.ts +3 -0
  204. package/dist/commands/skill.d.ts.map +1 -0
  205. package/dist/commands/skill.js +7 -0
  206. package/dist/commands/skill.js.map +1 -0
  207. package/dist/commands/stickers.d.ts +3 -0
  208. package/dist/commands/stickers.d.ts.map +1 -0
  209. package/dist/commands/stickers.js +4 -0
  210. package/dist/commands/stickers.js.map +1 -0
  211. package/dist/commands/upgrade.d.ts +2 -0
  212. package/dist/commands/upgrade.d.ts.map +1 -0
  213. package/dist/commands/upgrade.js +14 -0
  214. package/dist/commands/upgrade.js.map +1 -0
  215. package/dist/commands/watch.d.ts +27 -0
  216. package/dist/commands/watch.d.ts.map +1 -0
  217. package/dist/commands/watch.js +105 -0
  218. package/dist/commands/watch.js.map +1 -0
  219. package/dist/config.d.ts +385 -0
  220. package/dist/config.d.ts.map +1 -0
  221. package/dist/config.js +372 -0
  222. package/dist/config.js.map +1 -0
  223. package/dist/deadline.d.ts +2 -0
  224. package/dist/deadline.d.ts.map +1 -0
  225. package/dist/deadline.js +2 -0
  226. package/dist/deadline.js.map +1 -0
  227. package/dist/diagnose.d.ts +143 -0
  228. package/dist/diagnose.d.ts.map +1 -0
  229. package/dist/diagnose.js +183 -0
  230. package/dist/diagnose.js.map +1 -0
  231. package/dist/domain/map.d.ts +65 -0
  232. package/dist/domain/map.d.ts.map +1 -0
  233. package/dist/domain/map.js +431 -0
  234. package/dist/domain/map.js.map +1 -0
  235. package/dist/domain/models.d.ts +238 -0
  236. package/dist/domain/models.d.ts.map +1 -0
  237. package/dist/domain/models.js +17 -0
  238. package/dist/domain/models.js.map +1 -0
  239. package/dist/download.d.ts +38 -0
  240. package/dist/download.d.ts.map +1 -0
  241. package/dist/download.js +199 -0
  242. package/dist/download.js.map +1 -0
  243. package/dist/format-markdown.d.ts +13 -0
  244. package/dist/format-markdown.d.ts.map +1 -0
  245. package/dist/format-markdown.js +241 -0
  246. package/dist/format-markdown.js.map +1 -0
  247. package/dist/generated/client.generated.d.ts +95 -0
  248. package/dist/generated/client.generated.d.ts.map +1 -0
  249. package/dist/generated/client.generated.js +91 -0
  250. package/dist/generated/client.generated.js.map +1 -0
  251. package/dist/generated/opcodes.generated.d.ts +76 -0
  252. package/dist/generated/opcodes.generated.d.ts.map +1 -0
  253. package/dist/generated/opcodes.generated.js +76 -0
  254. package/dist/generated/opcodes.generated.js.map +1 -0
  255. package/dist/generated/operations.generated.d.ts +502 -0
  256. package/dist/generated/operations.generated.d.ts.map +1 -0
  257. package/dist/generated/operations.generated.js +72 -0
  258. package/dist/generated/operations.generated.js.map +1 -0
  259. package/dist/inbox-point.d.ts +3 -0
  260. package/dist/inbox-point.d.ts.map +1 -0
  261. package/dist/inbox-point.js +17 -0
  262. package/dist/inbox-point.js.map +1 -0
  263. package/dist/install/postinstall.d.ts +8 -0
  264. package/dist/install/postinstall.d.ts.map +1 -0
  265. package/dist/install/postinstall.js +62 -0
  266. package/dist/install/postinstall.js.map +1 -0
  267. package/dist/install.d.ts +43 -0
  268. package/dist/install.d.ts.map +1 -0
  269. package/dist/install.js +142 -0
  270. package/dist/install.js.map +1 -0
  271. package/dist/markdown.d.ts +13 -0
  272. package/dist/markdown.d.ts.map +1 -0
  273. package/dist/markdown.js +6 -0
  274. package/dist/markdown.js.map +1 -0
  275. package/dist/mcp/instructions.d.ts +13 -0
  276. package/dist/mcp/instructions.d.ts.map +1 -0
  277. package/dist/mcp/instructions.js +16 -0
  278. package/dist/mcp/instructions.js.map +1 -0
  279. package/dist/mcp/legacy-check.d.ts +12 -0
  280. package/dist/mcp/legacy-check.d.ts.map +1 -0
  281. package/dist/mcp/legacy-check.js +44 -0
  282. package/dist/mcp/legacy-check.js.map +1 -0
  283. package/dist/mcp/photo.d.ts +9 -0
  284. package/dist/mcp/photo.d.ts.map +1 -0
  285. package/dist/mcp/photo.js +38 -0
  286. package/dist/mcp/photo.js.map +1 -0
  287. package/dist/mcp/prompts.d.ts +7 -0
  288. package/dist/mcp/prompts.d.ts.map +1 -0
  289. package/dist/mcp/prompts.js +100 -0
  290. package/dist/mcp/prompts.js.map +1 -0
  291. package/dist/mcp/resources.d.ts +15 -0
  292. package/dist/mcp/resources.d.ts.map +1 -0
  293. package/dist/mcp/resources.js +56 -0
  294. package/dist/mcp/resources.js.map +1 -0
  295. package/dist/mcp/server.d.ts +31 -0
  296. package/dist/mcp/server.d.ts.map +1 -0
  297. package/dist/mcp/server.js +116 -0
  298. package/dist/mcp/server.js.map +1 -0
  299. package/dist/mcp/session.d.ts +30 -0
  300. package/dist/mcp/session.d.ts.map +1 -0
  301. package/dist/mcp/session.js +109 -0
  302. package/dist/mcp/session.js.map +1 -0
  303. package/dist/mcp/shared.d.ts +14 -0
  304. package/dist/mcp/shared.d.ts.map +1 -0
  305. package/dist/mcp/shared.js +46 -0
  306. package/dist/mcp/shared.js.map +1 -0
  307. package/dist/mcp/tools.d.ts +30 -0
  308. package/dist/mcp/tools.d.ts.map +1 -0
  309. package/dist/mcp/tools.js +248 -0
  310. package/dist/mcp/tools.js.map +1 -0
  311. package/dist/messenger.d.ts +15 -0
  312. package/dist/messenger.d.ts.map +1 -0
  313. package/dist/messenger.js +149 -0
  314. package/dist/messenger.js.map +1 -0
  315. package/dist/moderation/check.d.ts +103 -0
  316. package/dist/moderation/check.d.ts.map +1 -0
  317. package/dist/moderation/check.js +273 -0
  318. package/dist/moderation/check.js.map +1 -0
  319. package/dist/moderation/points.d.ts +8 -0
  320. package/dist/moderation/points.d.ts.map +1 -0
  321. package/dist/moderation/points.js +21 -0
  322. package/dist/moderation/points.js.map +1 -0
  323. package/dist/moderation/rules.d.ts +7 -0
  324. package/dist/moderation/rules.d.ts.map +1 -0
  325. package/dist/moderation/rules.js +24 -0
  326. package/dist/moderation/rules.js.map +1 -0
  327. package/dist/online.d.ts +23 -0
  328. package/dist/online.d.ts.map +1 -0
  329. package/dist/online.js +87 -0
  330. package/dist/online.js.map +1 -0
  331. package/dist/output.d.ts +2 -0
  332. package/dist/output.d.ts.map +1 -0
  333. package/dist/output.js +2 -0
  334. package/dist/output.js.map +1 -0
  335. package/dist/permissions.d.ts +20 -0
  336. package/dist/permissions.d.ts.map +1 -0
  337. package/dist/permissions.js +76 -0
  338. package/dist/permissions.js.map +1 -0
  339. package/dist/profile.d.ts +33 -0
  340. package/dist/profile.d.ts.map +1 -0
  341. package/dist/profile.js +60 -0
  342. package/dist/profile.js.map +1 -0
  343. package/dist/program.d.ts +10 -0
  344. package/dist/program.d.ts.map +1 -0
  345. package/dist/program.js +172 -0
  346. package/dist/program.js.map +1 -0
  347. package/dist/protocol/connection.d.ts +83 -0
  348. package/dist/protocol/connection.d.ts.map +1 -0
  349. package/dist/protocol/connection.js +301 -0
  350. package/dist/protocol/connection.js.map +1 -0
  351. package/dist/protocol/frame.d.ts +55 -0
  352. package/dist/protocol/frame.d.ts.map +1 -0
  353. package/dist/protocol/frame.js +149 -0
  354. package/dist/protocol/frame.js.map +1 -0
  355. package/dist/protocol/lz4.d.ts +15 -0
  356. package/dist/protocol/lz4.d.ts.map +1 -0
  357. package/dist/protocol/lz4.js +157 -0
  358. package/dist/protocol/lz4.js.map +1 -0
  359. package/dist/record.d.ts +41 -0
  360. package/dist/record.d.ts.map +1 -0
  361. package/dist/record.js +104 -0
  362. package/dist/record.js.map +1 -0
  363. package/dist/rendering/messages.d.ts +24 -0
  364. package/dist/rendering/messages.d.ts.map +1 -0
  365. package/dist/rendering/messages.js +172 -0
  366. package/dist/rendering/messages.js.map +1 -0
  367. package/dist/report.d.ts +43 -0
  368. package/dist/report.d.ts.map +1 -0
  369. package/dist/report.js +104 -0
  370. package/dist/report.js.map +1 -0
  371. package/dist/resolve.d.ts +6 -0
  372. package/dist/resolve.d.ts.map +1 -0
  373. package/dist/resolve.js +5 -0
  374. package/dist/resolve.js.map +1 -0
  375. package/dist/sends.d.ts +17 -0
  376. package/dist/sends.d.ts.map +1 -0
  377. package/dist/sends.js +97 -0
  378. package/dist/sends.js.map +1 -0
  379. package/dist/server/lines.d.ts +23 -0
  380. package/dist/server/lines.d.ts.map +1 -0
  381. package/dist/server/lines.js +56 -0
  382. package/dist/server/lines.js.map +1 -0
  383. package/dist/server/replies.d.ts +31 -0
  384. package/dist/server/replies.d.ts.map +1 -0
  385. package/dist/server/replies.js +95 -0
  386. package/dist/server/replies.js.map +1 -0
  387. package/dist/server/server-connection.d.ts +55 -0
  388. package/dist/server/server-connection.d.ts.map +1 -0
  389. package/dist/server/server-connection.js +245 -0
  390. package/dist/server/server-connection.js.map +1 -0
  391. package/dist/server/server.d.ts +88 -0
  392. package/dist/server/server.d.ts.map +1 -0
  393. package/dist/server/server.js +634 -0
  394. package/dist/server/server.js.map +1 -0
  395. package/dist/server/start.d.ts +37 -0
  396. package/dist/server/start.d.ts.map +1 -0
  397. package/dist/server/start.js +102 -0
  398. package/dist/server/start.js.map +1 -0
  399. package/dist/server/subscribe.d.ts +9 -0
  400. package/dist/server/subscribe.d.ts.map +1 -0
  401. package/dist/server/subscribe.js +26 -0
  402. package/dist/server/subscribe.js.map +1 -0
  403. package/dist/session/adopt.d.ts +22 -0
  404. package/dist/session/adopt.d.ts.map +1 -0
  405. package/dist/session/adopt.js +34 -0
  406. package/dist/session/adopt.js.map +1 -0
  407. package/dist/session/browser.d.ts +55 -0
  408. package/dist/session/browser.d.ts.map +1 -0
  409. package/dist/session/browser.js +321 -0
  410. package/dist/session/browser.js.map +1 -0
  411. package/dist/session/handshake.d.ts +57 -0
  412. package/dist/session/handshake.d.ts.map +1 -0
  413. package/dist/session/handshake.js +40 -0
  414. package/dist/session/handshake.js.map +1 -0
  415. package/dist/session/login.d.ts +20 -0
  416. package/dist/session/login.d.ts.map +1 -0
  417. package/dist/session/login.js +66 -0
  418. package/dist/session/login.js.map +1 -0
  419. package/dist/session/prompt.d.ts +2 -0
  420. package/dist/session/prompt.d.ts.map +1 -0
  421. package/dist/session/prompt.js +2 -0
  422. package/dist/session/prompt.js.map +1 -0
  423. package/dist/session/qr-terminal.d.ts +9 -0
  424. package/dist/session/qr-terminal.d.ts.map +1 -0
  425. package/dist/session/qr-terminal.js +34 -0
  426. package/dist/session/qr-terminal.js.map +1 -0
  427. package/dist/session/store.d.ts +76 -0
  428. package/dist/session/store.d.ts.map +1 -0
  429. package/dist/session/store.js +134 -0
  430. package/dist/session/store.js.map +1 -0
  431. package/dist/skill.d.ts +7 -0
  432. package/dist/skill.d.ts.map +1 -0
  433. package/dist/skill.js +8 -0
  434. package/dist/skill.js.map +1 -0
  435. package/dist/spec/check.d.ts +16 -0
  436. package/dist/spec/check.d.ts.map +1 -0
  437. package/dist/spec/check.js +44 -0
  438. package/dist/spec/check.js.map +1 -0
  439. package/dist/spec/define.d.ts +108 -0
  440. package/dist/spec/define.d.ts.map +1 -0
  441. package/dist/spec/define.js +47 -0
  442. package/dist/spec/define.js.map +1 -0
  443. package/dist/spec/guards.d.ts +16 -0
  444. package/dist/spec/guards.d.ts.map +1 -0
  445. package/dist/spec/guards.js +30 -0
  446. package/dist/spec/guards.js.map +1 -0
  447. package/dist/spec/identity.d.ts +57 -0
  448. package/dist/spec/identity.d.ts.map +1 -0
  449. package/dist/spec/identity.js +53 -0
  450. package/dist/spec/identity.js.map +1 -0
  451. package/dist/spec/index.d.ts +15 -0
  452. package/dist/spec/index.d.ts.map +1 -0
  453. package/dist/spec/index.js +84 -0
  454. package/dist/spec/index.js.map +1 -0
  455. package/dist/spec/operations/account.d.ts +39 -0
  456. package/dist/spec/operations/account.d.ts.map +1 -0
  457. package/dist/spec/operations/account.js +103 -0
  458. package/dist/spec/operations/account.js.map +1 -0
  459. package/dist/spec/operations/assets.d.ts +17 -0
  460. package/dist/spec/operations/assets.d.ts.map +1 -0
  461. package/dist/spec/operations/assets.js +43 -0
  462. package/dist/spec/operations/assets.js.map +1 -0
  463. package/dist/spec/operations/attachments.d.ts +15 -0
  464. package/dist/spec/operations/attachments.d.ts.map +1 -0
  465. package/dist/spec/operations/attachments.js +40 -0
  466. package/dist/spec/operations/attachments.js.map +1 -0
  467. package/dist/spec/operations/banners.d.ts +7 -0
  468. package/dist/spec/operations/banners.d.ts.map +1 -0
  469. package/dist/spec/operations/banners.js +16 -0
  470. package/dist/spec/operations/banners.js.map +1 -0
  471. package/dist/spec/operations/calls.d.ts +8 -0
  472. package/dist/spec/operations/calls.d.ts.map +1 -0
  473. package/dist/spec/operations/calls.js +25 -0
  474. package/dist/spec/operations/calls.js.map +1 -0
  475. package/dist/spec/operations/chats.d.ts +115 -0
  476. package/dist/spec/operations/chats.d.ts.map +1 -0
  477. package/dist/spec/operations/chats.js +331 -0
  478. package/dist/spec/operations/chats.js.map +1 -0
  479. package/dist/spec/operations/contacts.d.ts +39 -0
  480. package/dist/spec/operations/contacts.d.ts.map +1 -0
  481. package/dist/spec/operations/contacts.js +135 -0
  482. package/dist/spec/operations/contacts.js.map +1 -0
  483. package/dist/spec/operations/folders.d.ts +31 -0
  484. package/dist/spec/operations/folders.d.ts.map +1 -0
  485. package/dist/spec/operations/folders.js +94 -0
  486. package/dist/spec/operations/folders.js.map +1 -0
  487. package/dist/spec/operations/login.d.ts +64 -0
  488. package/dist/spec/operations/login.d.ts.map +1 -0
  489. package/dist/spec/operations/login.js +105 -0
  490. package/dist/spec/operations/login.js.map +1 -0
  491. package/dist/spec/operations/messages.d.ts +142 -0
  492. package/dist/spec/operations/messages.d.ts.map +1 -0
  493. package/dist/spec/operations/messages.js +347 -0
  494. package/dist/spec/operations/messages.js.map +1 -0
  495. package/dist/spec/operations/session.d.ts +120 -0
  496. package/dist/spec/operations/session.d.ts.map +1 -0
  497. package/dist/spec/operations/session.js +202 -0
  498. package/dist/spec/operations/session.js.map +1 -0
  499. package/dist/spec/operations/uploads.d.ts +31 -0
  500. package/dist/spec/operations/uploads.d.ts.map +1 -0
  501. package/dist/spec/operations/uploads.js +59 -0
  502. package/dist/spec/operations/uploads.js.map +1 -0
  503. package/dist/spec/scalars.d.ts +17 -0
  504. package/dist/spec/scalars.d.ts.map +1 -0
  505. package/dist/spec/scalars.js +33 -0
  506. package/dist/spec/scalars.js.map +1 -0
  507. package/dist/transcribe/index.d.ts +70 -0
  508. package/dist/transcribe/index.d.ts.map +1 -0
  509. package/dist/transcribe/index.js +127 -0
  510. package/dist/transcribe/index.js.map +1 -0
  511. package/dist/transcribe/install.d.ts +2 -0
  512. package/dist/transcribe/install.d.ts.map +1 -0
  513. package/dist/transcribe/install.js +2 -0
  514. package/dist/transcribe/install.js.map +1 -0
  515. package/dist/transcribe/models.d.ts +5 -0
  516. package/dist/transcribe/models.d.ts.map +1 -0
  517. package/dist/transcribe/models.js +6 -0
  518. package/dist/transcribe/models.js.map +1 -0
  519. package/dist/transcribe/speech.d.ts +25 -0
  520. package/dist/transcribe/speech.d.ts.map +1 -0
  521. package/dist/transcribe/speech.js +107 -0
  522. package/dist/transcribe/speech.js.map +1 -0
  523. package/dist/update.d.ts +31 -0
  524. package/dist/update.d.ts.map +1 -0
  525. package/dist/update.js +69 -0
  526. package/dist/update.js.map +1 -0
  527. package/dist/upload.d.ts +15 -0
  528. package/dist/upload.d.ts.map +1 -0
  529. package/dist/upload.js +97 -0
  530. package/dist/upload.js.map +1 -0
  531. package/dist/version.d.ts +2 -0
  532. package/dist/version.d.ts.map +1 -0
  533. package/dist/version.js +2 -0
  534. package/dist/version.js.map +1 -0
  535. package/dist/voice.d.ts +9 -0
  536. package/dist/voice.d.ts.map +1 -0
  537. package/dist/voice.js +36 -0
  538. package/dist/voice.js.map +1 -0
  539. package/dist/wire-events.d.ts +23 -0
  540. package/dist/wire-events.d.ts.map +1 -0
  541. package/dist/wire-events.js +47 -0
  542. package/dist/wire-events.js.map +1 -0
  543. package/install/postinstall.mjs +3 -0
  544. package/install/windows.ps1 +160 -0
  545. package/package.json +125 -4
  546. package/skills/max-cli/SKILL.md +518 -0
package/dist/config.js ADDED
@@ -0,0 +1,372 @@
1
+ import { CliError, loadConfigFile, saveConfigFile } from "@wirecat/cli-core";
2
+ import { AI_ENTRIES, first, settingsFor } from "@wirecat/cli-messaging/cli";
3
+ import { PERMISSIONS } from "@wirecat/cli-messaging/sends";
4
+ import * as v from "valibot";
5
+ import { MAX_APP } from "./app.js";
6
+ import { usableProfileName } from "./profile.js";
7
+ import { DEFAULT_MODEL, MODELS } from "./transcribe/models.js";
8
+ const plain = (rule) => (issue) => `${rule}, not ${issue.received}`;
9
+ const wholeNumber = plain("has to be a whole number, 1 or more");
10
+ const count = v.pipe(v.number(wholeNumber), v.integer(wholeNumber), v.minValue(1, wholeNumber));
11
+ const zeroOrMore = plain("has to be a whole number, 0 or more");
12
+ const countOrZero = v.pipe(v.number(zeroOrMore), v.integer(zeroOrMore), v.minValue(0, zeroOrMore));
13
+ const flag = v.boolean(plain("has to be true or false"));
14
+ /** MCP tools that change the account beyond messages, each group off until named here (`NEED-350`). */
15
+ export const MCP_TOOL_GROUPS = ["contacts", "polls", "groups", "profile"];
16
+ const mcpToolList = v.array(v.picklist(MCP_TOOL_GROUPS, (issue) => `has to be one of ${MCP_TOOL_GROUPS.join(", ")}, not ${issue.received}`), plain("has to be a list of tool groups, like contacts,polls"));
17
+ const permissionList = v.array(v.picklist(PERMISSIONS, (issue) => `has to be one of ${PERMISSIONS.join(", ")}, not ${issue.received}`), plain("has to be a list of actions, like send,reaction"));
18
+ /** valibot's own words ("Expected never but received …") mean nothing to someone editing a file. */
19
+ const objectMessage = (known) => (issue) => issue.expected === "never"
20
+ ? `unknown setting — the known ones are ${known.join(", ")}`
21
+ : "has to be an object, in braces";
22
+ /**
23
+ * ⚠ `strictObject`, not `object`: an unknown key is an error here.
24
+ *
25
+ * `object()` drops what it does not recognise — measured with valibot 1.5, `{ limitt: 5 }` parses
26
+ * to `{}` and reports nothing — so a misspelled setting would run with the default and never say
27
+ * why. That is the failure this schema exists to prevent, and it is the **opposite** of the rule
28
+ * for MAX's own answers, which keep unknown fields on purpose (`NEED-35`).
29
+ *
30
+ * **No field here can hold a secret.** No token, no phone number, no chat id: a schema with
31
+ * nowhere to put one is stronger than a rule saying do not put one there.
32
+ */
33
+ const sharedEntries = {
34
+ limit: v.optional(count),
35
+ timeoutMs: v.optional(count),
36
+ color: v.optional(flag),
37
+ /** The run log reads these two; nothing records anything until it exists. */
38
+ record: v.optional(flag),
39
+ keepRunsForDays: v.optional(count),
40
+ readOnly: v.optional(flag),
41
+ allow: v.optional(permissionList),
42
+ permissions: settingsFor(MAX_APP).schema.entries.defaults.wrapped.entries.permissions,
43
+ sendsPerHour: v.optional(count),
44
+ requestsPerMinute: v.optional(countOrZero),
45
+ ...AI_ENTRIES,
46
+ };
47
+ /** A bot has no server and no sender colours, so `bot.*` refuses these rather than ignoring them. */
48
+ const personalEntries = {
49
+ ...sharedEntries,
50
+ senderColors: v.optional(flag),
51
+ /** `inbox` and `review` mark what they show read, as `--mark-read` does — off unless set (`NEED-566`). */
52
+ catchUpMarksRead: v.optional(flag),
53
+ searchCatchUp: v.optional(flag),
54
+ /** Start `max serve` in the background when a command needs MAX and none is running (`MAX-35`). */
55
+ serve: v.optional(flag),
56
+ /** Only the file turns these on — no `max mcp` flag does (`NEED-350`). */
57
+ mcpTools: v.optional(mcpToolList),
58
+ };
59
+ /**
60
+ * Whether this bot may read other bots' local copies, when a command asks with `--all-bots` or
61
+ * `--bots` (owner, 2026-09-29): `false`, `true` for every bot, or the profiles it may read.
62
+ */
63
+ const botEntries = {
64
+ ...sharedEntries,
65
+ readOtherBots: v.optional(v.union([flag, v.array(v.string(plain("has to be a profile name")))], "has to be true, false, or a list of bot profiles")),
66
+ };
67
+ const strict = (entries) => v.strictObject(entries, objectMessage(Object.keys(entries)));
68
+ const profileSettings = strict(personalEntries);
69
+ const botSettings = strict(sharedEntries);
70
+ /**
71
+ * One program, one version: whether to look for a newer one is not a per-profile matter. Nor is the
72
+ * speech model — it is a download on this machine, not a property of an account.
73
+ */
74
+ const defaultsEntries = {
75
+ ...personalEntries,
76
+ updateCheck: v.optional(flag),
77
+ skillHint: v.optional(flag),
78
+ transcribeModel: v.optional(v.picklist(MODELS.map((model) => model.id), `has to be one of ${MODELS.map((model) => `"${model.id}"`).join(", ")}`)),
79
+ };
80
+ const defaultsSettings = strict(defaultsEntries);
81
+ const profilesOf = (settings) => v.record(v.string(), settings, "has to be an object of profiles, by name");
82
+ /** Every personal account, or every bot, and then one of them by name (`NEED-355`). */
83
+ const kindSection = (entries) => {
84
+ const settings = strict(entries);
85
+ return strict({ defaults: v.optional(settings), profiles: v.optional(profilesOf(settings)) });
86
+ };
87
+ const configEntries = {
88
+ defaultProfile: v.optional(v.string(plain("has to be a profile name, in quotes"))),
89
+ /** What every profile gets unless it says otherwise. */
90
+ defaults: v.optional(defaultsSettings),
91
+ profiles: v.optional(profilesOf(profileSettings), {}),
92
+ personal: v.optional(kindSection(personalEntries)),
93
+ bot: v.optional(kindSection(botEntries)),
94
+ };
95
+ export const configSchema = v.strictObject(configEntries, objectMessage(Object.keys(configEntries)));
96
+ export const PROFILE_SETTINGS = Object.keys(profileSettings.entries);
97
+ export const PERSONAL_ONLY_SETTINGS = Object.keys(personalEntries).filter((key) => !(key in botSettings.entries));
98
+ export const DEFAULTS_ONLY_SETTINGS = ["updateCheck", "skillHint", "transcribeModel"];
99
+ export const BOT_ONLY_SETTINGS = ["readOtherBots"];
100
+ export const ALL_SETTINGS = [
101
+ ...PROFILE_SETTINGS,
102
+ ...BOT_ONLY_SETTINGS,
103
+ ...DEFAULTS_ONLY_SETTINGS,
104
+ "defaultProfile",
105
+ ];
106
+ /**
107
+ * **Flag, then environment, then the configuration file, then the built-in default.** One place,
108
+ * so no command can decide the order differently from another.
109
+ *
110
+ * Profile selection, the command budget and request pace accept environment overrides. Output
111
+ * flags remain per invocation: a variable for `--json` or `--color` would silently change the
112
+ * output of a command that never asked for it.
113
+ *
114
+ * Two things already jump this queue and are documented rather than re-litigated here:
115
+ * `MAX_TOKEN` outranks the keyring (`cli-core`'s `Credentials.read`), and `MAX_CONFIG_DIR`,
116
+ * `MAX_STATE_DIR` or `MAX_CACHE_DIR` move the whole installation — including which keyring entry
117
+ * a profile means (`ARCHITECTURE.md` §14).
118
+ */
119
+ export const resolveSettings = (flags = {}, options = {}) => {
120
+ const { configured: _configured, shared: _shared, offline: _offline, ...settings } = sharedSettings.resolveSettings(flags, options);
121
+ return settings;
122
+ };
123
+ export const configuredProfiles = (options = {}) => sharedSettings.configuredProfiles(options);
124
+ /**
125
+ * `30s`, `2m`, `500ms` — **the unit is required, and a bare number is refused.**
126
+ *
127
+ * `--timeout 30` is ambiguous in a way that costs real time: the neighbouring setting in the
128
+ * configuration file is called `timeoutMs` and is milliseconds, while every other tool that spells
129
+ * it this way means seconds. Guessing either one is a thirty-fold surprise in one direction or the
130
+ * other, so this asks instead — the same rule as `--kind`, and the reason is the same.
131
+ *
132
+ * The refusal names whichever of the two supplied the value — see `durationMs`.
133
+ */
134
+ const DURATION = /^(\d+)(ms|s|m)$/;
135
+ const UNIT_MS = { ms: 1, s: 1000, m: 60_000 };
136
+ /** `30s`, `2m`, `500ms` — the one spelling of a duration, whatever it is for. */
137
+ export const parseDuration = (value, source) => {
138
+ const match = DURATION.exec(value.trim());
139
+ if (!match?.[1] || !match[2]) {
140
+ throw new CliError("validation_error", `${source} takes a duration with a unit — 30s, 2m or 500ms — not "${value}"`);
141
+ }
142
+ const ms = Number(match[1]) * (UNIT_MS[match[2]] ?? 0);
143
+ if (ms <= 0) {
144
+ throw new CliError("validation_error", `${source} has to be more than zero, and "${value}" is not`);
145
+ }
146
+ return ms;
147
+ };
148
+ const MINUTE = 60_000;
149
+ const YEAR = 365 * 24 * 60 * MINUTE;
150
+ const DELAY = /^(\d+)(m|h|d)$/;
151
+ const DELAY_UNIT_MS = { m: MINUTE, h: 60 * MINUTE, d: 24 * 60 * MINUTE };
152
+ /** `30m`, `2h`, `1d` as milliseconds; anything else is `undefined`. */
153
+ export const delayMs = (value) => {
154
+ const [, amount, unit] = DELAY.exec(value.trim()) ?? [];
155
+ return amount && unit ? Number(amount) * (DELAY_UNIT_MS[unit] ?? 0) : undefined;
156
+ };
157
+ /**
158
+ * Rounded down to the minute: MAX drops the seconds and sends at the start of the minute (measured
159
+ * 2026-09-24, `FIND-141`), so the time we print is the time it goes. A time without an offset is
160
+ * local, which is how `Date.parse` reads one with a clock and no zone. The delay has hours and days,
161
+ * unlike `--timeout`: nobody schedules a message 90 seconds ahead.
162
+ */
163
+ export const sendTime = (value, now = Date.now()) => {
164
+ const trimmed = value.trim();
165
+ const delay = delayMs(trimmed);
166
+ const at = /^\d{4}-\d{2}-\d{2}[T ]\d{2}:\d{2}/.test(trimmed)
167
+ ? Date.parse(trimmed.replace(" ", "T"))
168
+ : delay !== undefined
169
+ ? now + delay
170
+ : Number.NaN;
171
+ if (Number.isNaN(at)) {
172
+ throw new CliError("validation_error", `--at takes a time like 2026-09-25T09:00 or a delay like 30m, 2h, 1d — not "${value}"`);
173
+ }
174
+ if (at < now + MINUTE)
175
+ throw new CliError("validation_error", "--at has to be at least a minute from now");
176
+ if (at > now + YEAR)
177
+ throw new CliError("validation_error", "--at can be at most a year from now, as in MAX itself");
178
+ return at - (at % MINUTE);
179
+ };
180
+ export const scopePath = ({ profile, kind }) => [kind, profile === undefined ? "defaults" : `profiles.${profile}`].filter(Boolean).join(".");
181
+ /** The `config set` that writes where a value came from, so a refusal can say what to type. */
182
+ export const setCommandFor = (from, profile, setting) => {
183
+ const path = from.startsWith("config file: ") ? from.slice("config file: ".length) : `profiles.${profile}`;
184
+ const [first, second] = path.split(".");
185
+ const kind = first === "personal" || first === "bot" ? first : undefined;
186
+ const everyone = (kind ? second : first) === "defaults";
187
+ const words = [
188
+ "max",
189
+ ...(everyone ? [] : [profile]),
190
+ "config set",
191
+ ...(kind ? [`--${kind}`] : []),
192
+ ...(everyone ? ["--defaults"] : []),
193
+ setting,
194
+ ];
195
+ return words.join(" ");
196
+ };
197
+ /**
198
+ * Sets or removes one setting of one profile, or of `defaults`, and writes the file back.
199
+ * `defaultProfile` is the one top-level key, and takes no scope.
200
+ *
201
+ * **The value is checked by the same schema that reads the file**, on the whole result, before
202
+ * anything is written — so `config set` cannot produce a file the next command refuses to load.
203
+ */
204
+ export const changeSetting = (path, { profile, kind, setting, value }) => {
205
+ const permission = setting.startsWith("permissions.") ? setting.slice("permissions.".length) : undefined;
206
+ const modelField = /^models\.([a-z][a-z0-9-]*)\.(provider|model|baseUrl)$/.exec(setting);
207
+ if (!ALL_SETTINGS.includes(setting) && permission === undefined && !modelField) {
208
+ throw new CliError("validation_error", `no setting called "${setting}" — one of: ${ALL_SETTINGS.join(", ")}`);
209
+ }
210
+ const config = readConfig(path);
211
+ if (["readOnly", "allow", "mcpTools"].includes(setting) && hasPermissionConfig(config))
212
+ throw new CliError("validation_error", `${setting} is a legacy setting — use permissions instead`);
213
+ if (setting === "defaultProfile") {
214
+ if (kind !== undefined)
215
+ throw new CliError("validation_error", "defaultProfile is one for the whole file — drop --personal or --bot");
216
+ return changeDefaultProfile(path, config, value);
217
+ }
218
+ if ((profile !== undefined || kind !== undefined) &&
219
+ DEFAULTS_ONLY_SETTINGS.includes(setting)) {
220
+ throw new CliError("validation_error", `${setting} is one setting for the whole program, not per profile — use --defaults without --personal or --bot`);
221
+ }
222
+ if (kind !== "bot" && BOT_ONLY_SETTINGS.includes(setting)) {
223
+ throw new CliError("validation_error", `${setting} is for bots — add --bot`);
224
+ }
225
+ if (kind === "bot" && PERSONAL_ONLY_SETTINGS.includes(setting)) {
226
+ throw new CliError("validation_error", `${setting} is for personal accounts; a bot has no use for it`);
227
+ }
228
+ const section = kind === undefined ? config : { ...config[kind] };
229
+ const table = (profile === undefined ? section.defaults : section.profiles?.[profile]);
230
+ const scope = { ...table };
231
+ if (modelField) {
232
+ const purpose = modelField[1];
233
+ const field = modelField[2];
234
+ const models = { ...scope.models };
235
+ const target = { ...models[purpose] };
236
+ if (value === undefined)
237
+ delete target[field];
238
+ else
239
+ target[field] = parseValue(value);
240
+ if (Object.keys(target).length)
241
+ models[purpose] = target;
242
+ else
243
+ delete models[purpose];
244
+ if (Object.keys(models).length)
245
+ scope.models = models;
246
+ else
247
+ delete scope.models;
248
+ }
249
+ else if (permission !== undefined) {
250
+ const levels = { ...scope.permissions };
251
+ if (value === undefined)
252
+ delete levels[permission];
253
+ else
254
+ levels[permission] = value.trim();
255
+ if (Object.keys(levels).length)
256
+ scope.permissions = levels;
257
+ else
258
+ delete scope.permissions;
259
+ }
260
+ else if (value === undefined)
261
+ delete scope[setting];
262
+ else if (setting === "readOtherBots")
263
+ scope[setting] = value === "true" || value === "false" ? value === "true" : parseList(value);
264
+ else
265
+ scope[setting] = setting === "allow" || setting === "mcpTools" ? parseList(value) : parseValue(value);
266
+ const empty = Object.keys(scope).length === 0;
267
+ const place = (holder) => {
268
+ const next = { ...holder, profiles: { ...holder.profiles } };
269
+ if (profile === undefined) {
270
+ if (empty)
271
+ delete next.defaults;
272
+ else
273
+ next.defaults = scope;
274
+ }
275
+ else if (empty)
276
+ delete next.profiles[profile];
277
+ else
278
+ next.profiles[profile] = scope;
279
+ return next;
280
+ };
281
+ let changed;
282
+ if (kind === undefined) {
283
+ changed = place(config);
284
+ }
285
+ else {
286
+ const placed = place(config[kind] ?? {});
287
+ if (Object.keys(placed.profiles).length === 0)
288
+ delete placed.profiles;
289
+ changed = { ...config, [kind]: placed };
290
+ if (Object.keys(placed).length === 0)
291
+ delete changed[kind];
292
+ }
293
+ const checked = v.safeParse(configSchema, changed);
294
+ if (!checked.success) {
295
+ throw new CliError("validation_error", `${setting} cannot be "${value}": ${checked.issues[0]?.message ?? "invalid"}`);
296
+ }
297
+ saveConfigFile(path, checked.output);
298
+ if (modelField)
299
+ return (scope.models?.[modelField[1]]?.[modelField[2]] ?? null);
300
+ return permission === undefined
301
+ ? (scope[setting] ?? null)
302
+ : (scope.permissions?.[permission] ?? null);
303
+ };
304
+ const changeDefaultProfile = (path, config, value) => {
305
+ const changed = { ...config };
306
+ if (value === undefined)
307
+ delete changed.defaultProfile;
308
+ else
309
+ changed.defaultProfile = usableProfileName(value);
310
+ saveConfigFile(path, changed);
311
+ return changed.defaultProfile ?? null;
312
+ };
313
+ /** `send,reaction` as the owner types it, or the JSON array the file holds; blank is the empty list. */
314
+ const parseList = (value) => value.trim().startsWith("[")
315
+ ? parseValue(value)
316
+ : value
317
+ .split(",")
318
+ .map((item) => item.trim())
319
+ .filter(Boolean);
320
+ /** `50` is a number and `true` a boolean, as they would be in the file; anything else stays text. */
321
+ const parseValue = (value) => {
322
+ try {
323
+ return JSON.parse(value);
324
+ }
325
+ catch {
326
+ return value;
327
+ }
328
+ };
329
+ /**
330
+ * A missing file is not an error — it is a program nobody has configured. A malformed one is, in
331
+ * every output mode: an agent reading JSON deserves the same refusal a person gets, and silently
332
+ * falling back to the defaults is what makes a typo cost an afternoon.
333
+ */
334
+ const readConfig = (path) => {
335
+ try {
336
+ return loadConfigFile(path, configSchema, () => ({ profiles: {} }));
337
+ }
338
+ catch (error) {
339
+ throw new CliError("configuration_error", error instanceof Error ? error.message : String(error));
340
+ }
341
+ };
342
+ export const hasPermissionConfig = (config) => [
343
+ config.defaults,
344
+ ...Object.values(config.profiles),
345
+ config.personal?.defaults,
346
+ ...Object.values(config.personal?.profiles ?? {}),
347
+ config.bot?.defaults,
348
+ ...Object.values(config.bot?.profiles ?? {}),
349
+ ].some((scope) => scope?.permissions !== undefined);
350
+ const sharedSettings = settingsFor(MAX_APP, {
351
+ schema: configSchema,
352
+ profile: { serve: personalEntries.serve, mcpTools: personalEntries.mcpTools },
353
+ defaults: { transcribeModel: defaultsEntries.transcribeModel },
354
+ sourcePaths: true,
355
+ parseDuration,
356
+ resolve: ({ flags, settings, fromLayers }) => {
357
+ const serveFlag = flags.serve;
358
+ const serve = serveFlag === undefined ? fromLayers("serve", true) : { value: serveFlag, from: "flag" };
359
+ const mcpTools = fromLayers("mcpTools", []);
360
+ const transcribeModel = first([["config file: defaults", settings.shared.transcribeModel]], DEFAULT_MODEL);
361
+ return {
362
+ values: { serve: serve.value, mcpTools: mcpTools.value, transcribeModel: transcribeModel.value },
363
+ sources: {
364
+ serve: serve.from,
365
+ mcpTools: mcpTools.from,
366
+ transcribeModel: transcribeModel.from,
367
+ permissions: "default",
368
+ },
369
+ };
370
+ },
371
+ });
372
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export { type Closeable, withDeadline } from "@wirecat/cli-messaging/cli";
2
+ //# sourceMappingURL=deadline.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deadline.d.ts","sourceRoot":"","sources":["../src/deadline.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAA"}
@@ -0,0 +1,2 @@
1
+ export { withDeadline } from "@wirecat/cli-messaging/cli";
2
+ //# sourceMappingURL=deadline.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deadline.js","sourceRoot":"","sources":["../src/deadline.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,YAAY,EAAE,MAAM,4BAA4B,CAAA"}
@@ -0,0 +1,143 @@
1
+ import { storeSummary } from "@wirecat/cli-messaging/cli";
2
+ import { type Install } from "./install.js";
3
+ export interface DiagnoseOptions {
4
+ profile: string;
5
+ env?: NodeJS.ProcessEnv;
6
+ /** Tests point these at a temporary directory; nothing else should need them. */
7
+ stateDir?: string;
8
+ cacheDir?: string;
9
+ /** Injected so a test needs no SQLite file and no keyring. */
10
+ readStore?: typeof storeSummary;
11
+ /** Where a stored token is — the keyring, or the file that stands in for one; `undefined` for none. */
12
+ storedToken?: (profile: string) => "keyring" | "file" | undefined;
13
+ /** The same for the bot token, keyring account `bot:<profile>` (`src/bot/auth.ts`). */
14
+ storedBotToken?: (profile: string) => "keyring" | "file" | undefined;
15
+ /** Profile names the configuration file mentions, for the list of every profile. */
16
+ configured?: string[];
17
+ now?: () => Date;
18
+ install?: () => Install;
19
+ native?: () => Promise<Native>;
20
+ /** The configured speech model's id, and where models are kept. */
21
+ speechModel?: string;
22
+ modelsDir?: string;
23
+ }
24
+ /** `"ok"`, or why that part cannot load — the message names the missing platform build. */
25
+ export interface Native {
26
+ keyring: string;
27
+ sqlite: string;
28
+ }
29
+ export type TokenSource = "environment" | "keyring" | "file" | "none";
30
+ /** A profile is a personal account, a bot, or both (`NEED-294`); which one is read off what exists. */
31
+ export interface ProfileRow {
32
+ name: string;
33
+ personal: boolean;
34
+ bot: boolean;
35
+ configured: boolean;
36
+ }
37
+ export interface Diagnosis {
38
+ /** ⚠ Never the token, and never a prefix or a length of it — only whether one is reachable. */
39
+ token: {
40
+ present: boolean;
41
+ from: TokenSource;
42
+ };
43
+ /**
44
+ * ⚠ **The trap this command exists for.** `MAX_CONFIG_DIR` and its two siblings change the
45
+ * keyring entry a profile means, so a login performed with them set answers "no session"
46
+ * without them — and nothing else in the tool can show that.
47
+ */
48
+ keyring: {
49
+ service: string;
50
+ movedByEnvironment: boolean;
51
+ };
52
+ session: {
53
+ stateFile: string;
54
+ /** `false` on a machine nobody has logged in on. Reading it must not create it. */
55
+ exists: boolean;
56
+ deviceId: boolean;
57
+ viewerId: boolean;
58
+ /** What `RISK-2` wants counted: a token that stops working can then be explained. */
59
+ logins: number | null;
60
+ lastLoginAt: string | null;
61
+ /** MAX refused a login for too many attempts; none goes out before this (`MAX-38`). */
62
+ loginPausedUntil: string | null;
63
+ };
64
+ loggedInProfiles: string[];
65
+ /** Every profile this machine knows of, with what it holds. */
66
+ profiles: ProfileRow[];
67
+ /** This profile's bot side. ⚠ Never the token; the bot's id only as known or not. */
68
+ bot: {
69
+ token: {
70
+ present: boolean;
71
+ from: TokenSource;
72
+ };
73
+ registry: {
74
+ file: string;
75
+ exists: boolean;
76
+ botKnown: boolean;
77
+ chats: number;
78
+ };
79
+ sends: string;
80
+ };
81
+ /** Where this profile's files live — one place to look instead of nine. */
82
+ paths: {
83
+ state: string;
84
+ cache: string;
85
+ runs: string;
86
+ bots: string;
87
+ sends: string;
88
+ messages: string;
89
+ };
90
+ store: Awaited<ReturnType<typeof storeSummary>>;
91
+ legacyCache: {
92
+ file: string;
93
+ exists: boolean;
94
+ };
95
+ runs: {
96
+ directory: string;
97
+ kept: number;
98
+ };
99
+ /** The web client we present, and how old that reading is. Past `STALE_AFTER_DAYS` MAX may refuse it. */
100
+ client: {
101
+ appVersion: string;
102
+ chrome: string;
103
+ readOn: string;
104
+ ageDays: number;
105
+ stale: boolean;
106
+ };
107
+ install: Install;
108
+ native: Native;
109
+ speech: {
110
+ model: string;
111
+ languages: string | null;
112
+ downloaded: boolean;
113
+ };
114
+ }
115
+ /** Owner's ruling, NEED-264: the web client releases more often than that, and breaks later. */
116
+ export declare const STALE_AFTER_DAYS = 60;
117
+ /**
118
+ * Everything a command depends on, read from disk and **never from MAX**.
119
+ *
120
+ * It is a separate function rather than the body of the command because `forCommand` builds its
121
+ * own renderer over the real streams, so anything left inside a command action cannot be asserted
122
+ * on (`CLI-15`, and `src/session/adopt.ts` moved for the same reason).
123
+ *
124
+ * ⚠ **It must work when everything is broken**, which is the only time anybody runs it: no
125
+ * session, no configuration file, an unreadable store, a keyring that will not open. Each
126
+ * of those is a field in the answer, never an exception.
127
+ *
128
+ * ⚠ **It reads the state file directly instead of calling `readState`**, which invents a device
129
+ * identity and writes it out on first read. A diagnosis that creates the thing it is reporting on
130
+ * is not a diagnosis.
131
+ */
132
+ export declare const diagnose: ({ profile, env, stateDir, cacheDir, readStore, storedToken, storedBotToken, configured, now, install, native, speechModel, modelsDir, }: DiagnoseOptions) => Promise<Diagnosis>;
133
+ /**
134
+ * **Every profile, from files only**: a personal state file, a bot registry file, or a name in the
135
+ * configuration. It never reads the keyring — `config show` uses it as is, and that is `doctor`'s
136
+ * job (`CLI-12`); `diagnose` adds the keyring on top.
137
+ */
138
+ export declare const knownProfiles: ({ stateDir, configured, env, }: {
139
+ stateDir?: string;
140
+ configured?: string[];
141
+ env?: NodeJS.ProcessEnv;
142
+ }) => ProfileRow[];
143
+ //# sourceMappingURL=diagnose.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diagnose.d.ts","sourceRoot":"","sources":["../src/diagnose.ts"],"names":[],"mappings":"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"}