@wirecat/max-cli 0.0.0 → 0.43.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 +204 -0
  2. package/README.md +531 -0
  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 +120 -3
  546. package/skills/max-cli/SKILL.md +523 -0
@@ -0,0 +1,248 @@
1
+ import { CliError } from "@wirecat/cli-core";
2
+ import { AI_SETTING_KEYS, personalMcpCommand, personalMcpToolKey, personalMcpTools, registerPersonalMcpSurface, rememberAccount, stored, } from "@wirecat/cli-messaging/cli";
3
+ import { levelFor } from "@wirecat/cli-messaging/sends";
4
+ import { openStore } from "@wirecat/cli-messaging/store";
5
+ import * as v from "valibot";
6
+ import { maxAdapter } from "../adapter/max-adapter.js";
7
+ import { MAX_APP } from "../app.js";
8
+ import { resolveSettings } from "../config.js";
9
+ import { maxMessenger } from "../messenger.js";
10
+ import { migrateModerationPoints } from "../moderation/points.js";
11
+ import { assertReadable, withPermissionApproval } from "../permissions.js";
12
+ import { maxRecord } from "../record.js";
13
+ import { transcribe } from "../transcribe/index.js";
14
+ import { modelsDirectory } from "../transcribe/install.js";
15
+ import { DEFAULT_MODEL, speechModel } from "../transcribe/models.js";
16
+ import { legacyCheckTool } from "./legacy-check.js";
17
+ import { photoForMcp } from "./photo.js";
18
+ import { withShared } from "./shared.js";
19
+ const PASS = { check: () => { }, record: () => { } };
20
+ const READ = { readOnlyHint: true, destructiveHint: false, openWorldHint: true };
21
+ export const registerTools = (server, session, { store, defaultLimit, history, profile, permission, transcribeModel = DEFAULT_MODEL, warn = () => { }, reach, embedders, }) => {
22
+ const settings = () => resolveSettings({ profile, permission });
23
+ const adapters = new WeakMap();
24
+ const definitions = personalMcpTools(maxMessenger);
25
+ for (const name of Object.keys(definitions))
26
+ if (name.startsWith("topics_"))
27
+ delete definitions[name];
28
+ const rules = definitions.chats_rules_show;
29
+ if (rules)
30
+ definitions.chats_rules = { ...rules, key: "chats.rules.show" };
31
+ const keyOf = (name, definition) => name === "status" ? null : (personalMcpToolKey(name, definition) ?? "messages");
32
+ const writable = (name, definition) => {
33
+ const key = keyOf(name, definition);
34
+ if (key === null)
35
+ return null;
36
+ const own = settings();
37
+ assertReadable(own, key);
38
+ if (definition.annotations.readOnlyHint !== true && levelFor(own.permissions, key).level === "readonly")
39
+ throw new CliError("permission_error", `profile ${profile} does not let ${key} write`, { permission: key });
40
+ return key;
41
+ };
42
+ const inScope = (name, definition, work) => {
43
+ const key = writable(name, definition);
44
+ if (key === null)
45
+ return work();
46
+ if (key === "chats.moderate")
47
+ migrateModerationPoints(store);
48
+ return withPermissionApproval(key, () => key === "chats.moderate"
49
+ ? withPermissionApproval("messages.delete", () => withPermissionApproval("chats.members.remove", work))
50
+ : work());
51
+ };
52
+ const remember = () => {
53
+ const account = store.readState().viewerId;
54
+ if (!account)
55
+ return;
56
+ try {
57
+ rememberAccount(MAX_APP, profile, account, process.env);
58
+ }
59
+ catch {
60
+ // A secondary local binding must not replace a successful send or prevent store cleanup.
61
+ warn("could not remember the account for local archive tools");
62
+ }
63
+ };
64
+ const adapterFor = (client) => {
65
+ const adapter = maxAdapter(client, store, reach, warn);
66
+ adapters.set(adapter, client);
67
+ return adapter;
68
+ };
69
+ const offered = Object.fromEntries(Object.entries(definitions).filter(([name, definition]) => {
70
+ const key = keyOf(name, definition);
71
+ const level = key === null ? "allow" : levelFor(settings().permissions, key).level;
72
+ return level !== "deny" && (definition.annotations.readOnlyHint === true || level !== "readonly");
73
+ }));
74
+ const direct = offered.messages_transcribe;
75
+ const picture = offered.messages_photo;
76
+ if (picture)
77
+ offered.messages_photo = {
78
+ ...picture,
79
+ online: (adapter, args) => {
80
+ const client = adapters.get(adapter);
81
+ if (!client)
82
+ throw new Error("MAX photo preview requires its held adapter");
83
+ return photoForMcp(client, {
84
+ chat: String(args.chat),
85
+ message: String(args.message),
86
+ ...(typeof args.index === "number" ? { index: args.index } : {}),
87
+ }, reach);
88
+ },
89
+ };
90
+ if (direct)
91
+ offered.messages_transcribe = {
92
+ ...direct,
93
+ description: "A MAX voice message as text on this machine. Reuses a retained transcript from the same model; never downloads a model. Returns { messageId, text, model, cached? }.",
94
+ online: async (adapter, args, defaults) => {
95
+ const client = adapters.get(adapter);
96
+ if (!client)
97
+ throw new Error("MAX transcription requires its held adapter");
98
+ const message = String(args.message);
99
+ if (!/^\d+$/.test(message))
100
+ throw new CliError("validation_error", "MAX message IDs must be decimal strings");
101
+ const chatId = await client.chats.resolve(String(args.chat));
102
+ const model = speechModel(typeof args.model === "string" ? args.model : transcribeModel);
103
+ const record = maxRecord({ account: () => store.readState().viewerId });
104
+ try {
105
+ const kept = await record.transcript(chatId, message);
106
+ if (kept?.source === model.id)
107
+ return { messageId: message, text: kept.text, model: model.id, cached: true };
108
+ return await transcribe(client, chatId, message, {
109
+ model,
110
+ directory: modelsDirectory(),
111
+ record,
112
+ ...(defaults.release ? { release: defaults.release } : {}),
113
+ });
114
+ }
115
+ finally {
116
+ await record.close();
117
+ }
118
+ },
119
+ };
120
+ for (const [name, definition] of Object.entries(offered)) {
121
+ if (!definition._meta)
122
+ continue;
123
+ const metadata = { ...definition._meta };
124
+ delete metadata["anthropic/requiresUserInteraction"];
125
+ offered[name] = { ...definition, _meta: metadata };
126
+ }
127
+ const moderation = definitions.chats_moderate;
128
+ const level = levelFor(settings().permissions, "chats.moderate").level;
129
+ if (moderation && ["allow", "ask"].includes(level))
130
+ offered.chats_check = legacyCheckTool(session, {
131
+ store,
132
+ profile,
133
+ allowDangerous: false,
134
+ yes: true,
135
+ confirmSend: false,
136
+ scope: (work) => inScope("chats_moderate", moderation, work),
137
+ });
138
+ offered.status = {
139
+ title: "This server's profile and login",
140
+ description: "The profile, known account and offered writes. Reads local state only; never connects or prints a token.",
141
+ key: null,
142
+ input: v.strictObject({}),
143
+ annotations: { ...READ, idempotentHint: true },
144
+ local: async () => {
145
+ const account = store.readState().viewerId ?? null;
146
+ let token;
147
+ try {
148
+ token = store.tokenSource() ?? "none";
149
+ }
150
+ catch {
151
+ token = "unreachable";
152
+ }
153
+ return {
154
+ profile,
155
+ account,
156
+ viewerId: account,
157
+ kind: store.isBot() ? "personal + bot" : "personal",
158
+ token,
159
+ loggedInHere: store.hasLoggedIn(),
160
+ hasToken: store.readToken() !== undefined,
161
+ hasLoggedIn: account !== null,
162
+ writes: [
163
+ ...Object.entries(offered)
164
+ .filter(([, one]) => one.annotations.readOnlyHint !== true)
165
+ .map(([name]) => personalMcpCommand(name)),
166
+ ],
167
+ permissions: settings().permissions,
168
+ };
169
+ },
170
+ };
171
+ const currentSettings = settings();
172
+ const ai = Object.fromEntries(AI_SETTING_KEYS.map((key) => [key, currentSettings[key]]));
173
+ registerPersonalMcpSurface(server, offered, {
174
+ command: "max",
175
+ messenger: maxMessenger,
176
+ defaults: {
177
+ limit: defaultLimit,
178
+ history: history ?? settings().keepFailedRuns,
179
+ guard: PASS,
180
+ settings: {
181
+ ...ai,
182
+ profile,
183
+ searchCatchUp: currentSettings.searchCatchUp,
184
+ configured: ai,
185
+ shared: { ...ai, speechModel: transcribeModel },
186
+ get permissions() {
187
+ return settings().permissions;
188
+ },
189
+ },
190
+ env: process.env,
191
+ ...(embedders ? { embedders } : {}),
192
+ },
193
+ around: inScope,
194
+ session: {
195
+ use: (name, work) => session.use(name, async (client, release) => {
196
+ let opened;
197
+ const account = {
198
+ provider: "max",
199
+ get account() {
200
+ const id = store.readState().viewerId;
201
+ if (!id)
202
+ throw new CliError("authentication_error", `no MAX account known for profile ${profile}`);
203
+ return id;
204
+ },
205
+ };
206
+ const adapter = stored(adapterFor(client), {
207
+ account,
208
+ store: () => (opened ??= openStore()),
209
+ warn,
210
+ events: () => { },
211
+ });
212
+ adapters.set(adapter, client);
213
+ try {
214
+ return await work(adapter, release);
215
+ }
216
+ finally {
217
+ remember();
218
+ if (opened)
219
+ await opened.then((store) => store.close(), () => { });
220
+ }
221
+ }),
222
+ },
223
+ withStore: (work, { name }) => session.local(name, async () => {
224
+ const account = store.readState().viewerId;
225
+ if (!account)
226
+ throw new CliError("authentication_error", `no MAX account known for profile ${profile}`);
227
+ const opened = await openStore();
228
+ try {
229
+ return await work(opened, { provider: "max", account });
230
+ }
231
+ finally {
232
+ await opened.close();
233
+ }
234
+ }),
235
+ withServices: (work, { name }) => session.use(name, (client, release) => withShared(client, { store, profile, warn }, async (services) => {
236
+ remember();
237
+ return work(services, async (read) => {
238
+ try {
239
+ return await read(adapterFor(client));
240
+ }
241
+ finally {
242
+ await release();
243
+ }
244
+ });
245
+ }, name === "mcp messages link" ? { reads: "store" } : { login: true })),
246
+ });
247
+ };
248
+ //# sourceMappingURL=tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/mcp/tools.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import type { Messenger } from "@wirecat/cli-messaging/cli";
2
+ import type { SendGuard } from "@wirecat/cli-messaging/sends";
3
+ import type { Command } from "commander";
4
+ /**
5
+ * Over `max serve` the server reserves and journals each write it forwards, with the outcome it saw;
6
+ * the command checks too, and records only what it refused itself (`NEED-269`).
7
+ */
8
+ export declare const overServer: (guard: SendGuard, server: () => {
9
+ readonly journals: boolean;
10
+ } | undefined) => SendGuard;
11
+ /** One subcommand of a shared command group, to sit among max's own. */
12
+ export declare const sharedSubcommand: (group: Command, name: string) => Command;
13
+ /** What cli-messaging's shared commands and services need from max, for the personal account. */
14
+ export declare const maxMessenger: Messenger;
15
+ //# sourceMappingURL=messenger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messenger.d.ts","sourceRoot":"","sources":["../src/messenger.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAe,SAAS,EAA4B,MAAM,4BAA4B,CAAA;AAElG,OAAO,KAAK,EAAgB,SAAS,EAAE,MAAM,8BAA8B,CAAA;AAE3E,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAgBxC;;;GAGG;AACH,eAAO,MAAM,UAAU,UAAW,SAAS,UAAU,MAAM;IAAE,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAA;CAAE,GAAG,SAAS,KAAG,SAUvG,CAAA;AAED,wEAAwE;AACxE,eAAO,MAAM,gBAAgB,UAAW,OAAO,QAAQ,MAAM,KAAG,OAI/D,CAAA;AAED,iGAAiG;AACjG,eAAO,MAAM,YAAY,EAAE,SA0H1B,CAAA"}
@@ -0,0 +1,149 @@
1
+ import { AI_SETTING_KEYS } from "@wirecat/cli-messaging/cli";
2
+ import { moderationService } from "@wirecat/cli-messaging/services";
3
+ import { maxAdapter } from "./adapter/max-adapter.js";
4
+ import { MAX_APP } from "./app.js";
5
+ import { environmentOf, forCommand } from "./commands/context.js";
6
+ import { resolveSettings } from "./config.js";
7
+ import { migrateModerationPoints } from "./moderation/points.js";
8
+ import { askerFor, assertReadable, commandPermission, permissionKeyOf } from "./permissions.js";
9
+ import { rootOf } from "./profile.js";
10
+ import { maxRecord } from "./record.js";
11
+ import { guardFor } from "./sends.js";
12
+ import { SPEECH_MODELS } from "./transcribe/models.js";
13
+ /** The client each command connected, so its guard can tell whether `max serve` journals for it. */
14
+ const clients = new WeakMap();
15
+ /**
16
+ * Over `max serve` the server reserves and journals each write it forwards, with the outcome it saw;
17
+ * the command checks too, and records only what it refused itself (`NEED-269`).
18
+ */
19
+ export const overServer = (guard, server) => {
20
+ const ask = guard.ask;
21
+ return {
22
+ ...(ask ? { ask: (request) => ask.call(guard, request) } : {}),
23
+ check: (request) => guard.check(request, server() ? { reserve: false } : {}),
24
+ record: (entry) => {
25
+ const through = server();
26
+ if (!through || entry.outcome === "refused" || !through.journals)
27
+ guard.record(entry);
28
+ },
29
+ };
30
+ };
31
+ /** One subcommand of a shared command group, to sit among max's own. */
32
+ export const sharedSubcommand = (group, name) => {
33
+ const found = group.commands.find((one) => one.name() === name);
34
+ if (!found)
35
+ throw new Error(`cli-messaging's ${group.name()} has no ${name}`);
36
+ return found;
37
+ };
38
+ /** What cli-messaging's shared commands and services need from max, for the personal account. */
39
+ export const maxMessenger = {
40
+ inviteLinkList: false,
41
+ inviteLinkRevoke: false,
42
+ folderJoin: false,
43
+ groupPhoto: true,
44
+ chatMedia: true,
45
+ privacy: true,
46
+ chatMute: true,
47
+ chatDeletion: true,
48
+ personalBots: true,
49
+ stickers: true,
50
+ app: MAX_APP,
51
+ provider: "max",
52
+ counterFields: ["views", "reactions"],
53
+ name: "MAX",
54
+ chatArgument: "a chat: its id, or part of its title",
55
+ partnerOf: (chat) => chat.kind === "dialog" && typeof chat.providerMetadata?.partnerId === "string"
56
+ ? chat.providerMetadata.partnerId
57
+ : undefined,
58
+ speechModels: SPEECH_MODELS,
59
+ // As web.max.ru pages a chat scrolled up: 30 back from the oldest shown (`RES-9`), a person's 5–10 s
60
+ // apart (`NEED-216` A). MAX's ids pass 2^53, so held stretches are kept by send time.
61
+ fetching: { page: 30, pause: "5s", jitter: true, maxPages: 40, orderBy: "time", beforeInclusive: true },
62
+ // A tab makes a handful of requests at a time, then one every few seconds; MAX's limits are unpublished.
63
+ pace: { perMinute: 20, burst: 10 },
64
+ permissionKey: permissionKeyOf,
65
+ tracksMembers: true,
66
+ // Opcode 73 answers in one chat only (measured 2026-10-07).
67
+ serverSearch: "chat",
68
+ guard: (command, { profile }, warn) => {
69
+ const client = () => clients.get(rootOf(command));
70
+ const guard = overServer(guardFor(resolveSettings({ profile }), warn, askerFor(command.optsWithGlobals(), environmentOf(command)), commandPermission(command) ?? undefined), () => client()?.server);
71
+ return {
72
+ ...guard,
73
+ record: (entry) => {
74
+ const applied = client()?.takeApplied(entry.operationId) === true;
75
+ // MAX can acknowledge the closure before the token save or follow-up session read fails.
76
+ if (applied && (entry.outcome === "failed" || entry.outcome === "outcome_unknown")) {
77
+ const { errorCode: _errorCode, ...done } = entry;
78
+ guard.record({ ...done, outcome: "sent" });
79
+ }
80
+ else
81
+ guard.record(entry);
82
+ },
83
+ };
84
+ },
85
+ resolveSettings: (flags, options = {}) => {
86
+ const { profile, offline, ...rest } = flags;
87
+ const own = resolveSettings({ ...rest, ...(profile === undefined ? {} : { profile }) }, {
88
+ ...(options.env === undefined ? {} : { env: options.env }),
89
+ ...(options.configDir === undefined ? {} : { configDir: options.configDir }),
90
+ });
91
+ return {
92
+ ...own,
93
+ offline: offline === true,
94
+ configured: Object.fromEntries(AI_SETTING_KEYS.map((key) => [key, own[key]])),
95
+ // The shared hearing reads its model as `speechModel`; max's setting is `transcribeModel`.
96
+ shared: {
97
+ ...Object.fromEntries(AI_SETTING_KEYS.map((key) => [key, own[key]])),
98
+ speechModel: own.transcribeModel,
99
+ },
100
+ permissions: own.permissions,
101
+ permissionSources: own.permissionSources,
102
+ };
103
+ },
104
+ services: (_base, deps) => ({
105
+ moderation: moderationService({
106
+ ...deps,
107
+ connection: async () => {
108
+ const adapter = await deps.connection();
109
+ return new Proxy(adapter, {
110
+ get: (target, key, receiver) => key === "resolve" ? (reference) => target.chat(reference) : Reflect.get(target, key, receiver),
111
+ });
112
+ },
113
+ }),
114
+ }),
115
+ connect: async (command, context, { events } = {}) => {
116
+ const { createClient, store, reach, settings } = forCommand(command);
117
+ if (command.name() === "moderate")
118
+ migrateModerationPoints(store, context.env);
119
+ const record = maxRecord({ account: () => store.readState().viewerId, env: context.env });
120
+ try {
121
+ const client = createClient({
122
+ sends: "caller",
123
+ reads: (key) => assertReadable(settings, commandPermission(command) ?? key),
124
+ record,
125
+ ...(events ? { events } : {}),
126
+ });
127
+ clients.set(rootOf(command), client);
128
+ const adapter = maxAdapter(client, store, reach, (message) => context.renderer.note(message), {
129
+ reactions: command.name() !== "moderate",
130
+ });
131
+ return {
132
+ ...adapter,
133
+ close: async () => {
134
+ try {
135
+ await adapter.close();
136
+ }
137
+ finally {
138
+ await record.close();
139
+ }
140
+ },
141
+ };
142
+ }
143
+ catch (error) {
144
+ await record.close();
145
+ throw error;
146
+ }
147
+ },
148
+ };
149
+ //# sourceMappingURL=messenger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messenger.js","sourceRoot":"","sources":["../src/messenger.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,103 @@
1
+ import type { MaxClient } from "../client.js";
2
+ import type { GroupMember, Id, Message } from "../domain/models.js";
3
+ import { moderationPoints } from "./points.js";
4
+ import { type GroupRules } from "./rules.js";
5
+ export type Action = "report" | "delete" | "remove";
6
+ export type Outcome = "reported" | "done" | "planned" | "forbidden" | "declined" | "refused" | "failed" | "skipped";
7
+ export interface Finding {
8
+ /** A message, or somebody who joined. */
9
+ kind: "message" | "member";
10
+ rule: "blocked" | "invites" | "links" | "forwards" | "flood" | "newAccount";
11
+ personId: Id;
12
+ personName: string | null;
13
+ messageId?: Id;
14
+ action: Action;
15
+ }
16
+ export interface CheckRow extends Finding {
17
+ outcome: Outcome;
18
+ reason?: string;
19
+ /** What the owner types to do it by hand, on a row that was not done. */
20
+ command?: string;
21
+ }
22
+ export interface CheckInput {
23
+ rules: GroupRules;
24
+ messages: Message[];
25
+ joined: GroupMember[];
26
+ /** The owner's admins; the owner's own messages are known by `outgoing`. */
27
+ answerers: ReadonlySet<Id>;
28
+ now: number;
29
+ }
30
+ /**
31
+ * What the rules say about what is new. Pure: nothing here talks to MAX. One finding per message —
32
+ * the rule with the strongest action — and one removal per person, whatever else they did.
33
+ */
34
+ export declare const judge: ({ rules, messages, joined, answerers, now }: CheckInput) => Finding[];
35
+ export interface ActOptions {
36
+ chatId: Id;
37
+ rules: GroupRules;
38
+ /** `--allow-dangerous` on this run: what `flag` asks for. */
39
+ allowDangerous: boolean;
40
+ dryRun: boolean;
41
+ maxActions: number;
42
+ /** Asks the owner about one action; `undefined` when nobody is there to ask. */
43
+ confirm?: (finding: Finding) => Promise<boolean>;
44
+ }
45
+ /** The two things a check may do, whoever does them: the personal account, or a bot. */
46
+ export interface Moderator {
47
+ deleteMessage(chatId: Id, messageId: Id): Promise<void>;
48
+ removePerson(chatId: Id, personId: Id): Promise<void>;
49
+ }
50
+ /** The personal account: deleting is for everyone, removing leaves messages and cannot ban. */
51
+ export declare const personal: (client: MaxClient) => Moderator;
52
+ /**
53
+ * Does what the findings ask, as far as consent, the per-run limit and the guard let it. Stops
54
+ * acting at the first hourly-limit refusal: the rest is `skipped`, never tried.
55
+ */
56
+ export declare const act: (moderator: Moderator, findings: Finding[], options: ActOptions) => Promise<CheckRow[]>;
57
+ /** One action in words, for a prompt or a confirmation form. */
58
+ export declare const describe: (finding: Finding) => string;
59
+ /** Whether acting on it waits for the owner's yes. */
60
+ export declare const needsConfirm: (rules: GroupRules, finding: Finding) => boolean;
61
+ export interface Gathered extends Omit<CheckInput, "rules" | "now"> {
62
+ /** The newest message read, ISO 8601: where the next check starts. */
63
+ until: string | null;
64
+ /** More history than one check reads. */
65
+ more: boolean;
66
+ notes: string[];
67
+ }
68
+ /**
69
+ * What is new in the group since `since`: its messages, who joined (from the service messages —
70
+ * `add` measured, `joinByLink` assumed to name the joiner or be sent by them), who asks to join,
71
+ * and who the admins are.
72
+ */
73
+ export declare const gather: (client: MaxClient, chatId: Id, since: number) => Promise<Gathered>;
74
+ export declare const MAX_ACTIONS = 10;
75
+ /** Where each chat's next check starts, ISO 8601. */
76
+ export interface SavedPoints {
77
+ read(chatId: Id): string | undefined;
78
+ write(chatId: Id, at: string): void;
79
+ }
80
+ export declare const sessionPoints: typeof moderationPoints;
81
+ export interface Prepared {
82
+ chatId: Id;
83
+ title: string | null;
84
+ rules: GroupRules;
85
+ found: Gathered;
86
+ findings: Finding[];
87
+ /** `--since` was given: the saved point is not read, and not moved. */
88
+ explicit: boolean;
89
+ notes: string[];
90
+ }
91
+ /** Reads and judges; changes nothing. `since` overrides the group's saved point. */
92
+ export declare const prepare: (client: MaxClient, { points, profile, chat, since }: {
93
+ points: SavedPoints;
94
+ profile: string;
95
+ chat: string;
96
+ since?: number;
97
+ }) => Promise<Prepared>;
98
+ /** Acts on what `prepare` found, moves the group's saved point, and says what is left. */
99
+ export declare const finish: (moderator: Moderator, points: SavedPoints, prepared: Prepared, options: Omit<ActOptions, "chatId" | "rules">) => Promise<{
100
+ rows: CheckRow[];
101
+ notes: string[];
102
+ }>;
103
+ //# sourceMappingURL=check.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"check.d.ts","sourceRoot":"","sources":["../../src/moderation/check.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAC7C,OAAO,KAAK,EAAE,WAAW,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AACnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAC9C,OAAO,EAAgB,KAAK,UAAU,EAAsC,MAAM,YAAY,CAAA;AAE9F,MAAM,MAAM,MAAM,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAA;AAEnD,MAAM,MAAM,OAAO,GAAG,UAAU,GAAG,MAAM,GAAG,SAAS,GAAG,WAAW,GAAG,UAAU,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,CAAA;AAEnH,MAAM,WAAW,OAAO;IACtB,yCAAyC;IACzC,IAAI,EAAE,SAAS,GAAG,QAAQ,CAAA;IAC1B,IAAI,EAAE,SAAS,GAAG,SAAS,GAAG,OAAO,GAAG,UAAU,GAAG,OAAO,GAAG,YAAY,CAAA;IAC3E,QAAQ,EAAE,EAAE,CAAA;IACZ,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,SAAS,CAAC,EAAE,EAAE,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,QAAS,SAAQ,OAAO;IACvC,OAAO,EAAE,OAAO,CAAA;IAChB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,yEAAyE;IACzE,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,UAAU,CAAA;IACjB,QAAQ,EAAE,OAAO,EAAE,CAAA;IACnB,MAAM,EAAE,WAAW,EAAE,CAAA;IACrB,4EAA4E;IAC5E,SAAS,EAAE,WAAW,CAAC,EAAE,CAAC,CAAA;IAC1B,GAAG,EAAE,MAAM,CAAA;CACZ;AAQD;;;GAGG;AACH,eAAO,MAAM,KAAK,gDAAiD,UAAU,KAAG,OAAO,EAkDtF,CAAA;AAkBD,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,EAAE,CAAA;IACV,KAAK,EAAE,UAAU,CAAA;IACjB,6DAA6D;IAC7D,cAAc,EAAE,OAAO,CAAA;IACvB,MAAM,EAAE,OAAO,CAAA;IACf,UAAU,EAAE,MAAM,CAAA;IAClB,gFAAgF;IAChF,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;CACjD;AAOD,wFAAwF;AACxF,MAAM,WAAW,SAAS;IACxB,aAAa,CAAC,MAAM,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACvD,YAAY,CAAC,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CACtD;AAED,+FAA+F;AAC/F,eAAO,MAAM,QAAQ,WAAY,SAAS,KAAG,SAO3C,CAAA;AAEF;;;GAGG;AACH,eAAO,MAAM,GAAG,cAAqB,SAAS,YAAY,OAAO,EAAE,WAAW,UAAU,KAAG,OAAO,CAAC,QAAQ,EAAE,CA+D5G,CAAA;AASD,gEAAgE;AAChE,eAAO,MAAM,QAAQ,YAAa,OAAO,KAAG,MAGmB,CAAA;AAE/D,sDAAsD;AACtD,eAAO,MAAM,YAAY,UAAW,UAAU,WAAW,OAAO,KAAG,OACsC,CAAA;AAazG,MAAM,WAAW,QAAS,SAAQ,IAAI,CAAC,UAAU,EAAE,OAAO,GAAG,KAAK,CAAC;IACjE,sEAAsE;IACtE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,yCAAyC;IACzC,IAAI,EAAE,OAAO,CAAA;IACb,KAAK,EAAE,MAAM,EAAE,CAAA;CAChB;AAED;;;;GAIG;AACH,eAAO,MAAM,MAAM,WAAkB,SAAS,UAAU,EAAE,SAAS,MAAM,KAAG,OAAO,CAAC,QAAQ,CA+B3F,CAAA;AAED,eAAO,MAAM,WAAW,KAAK,CAAA;AAE7B,qDAAqD;AACrD,MAAM,WAAW,WAAW;IAC1B,IAAI,CAAC,MAAM,EAAE,EAAE,GAAG,MAAM,GAAG,SAAS,CAAA;IACpC,KAAK,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI,CAAA;CACpC;AAED,eAAO,MAAM,aAAa,yBAAmB,CAAA;AAK7C,MAAM,WAAW,QAAQ;IACvB,MAAM,EAAE,EAAE,CAAA;IACV,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,KAAK,EAAE,UAAU,CAAA;IACjB,KAAK,EAAE,QAAQ,CAAA;IACf,QAAQ,EAAE,OAAO,EAAE,CAAA;IACnB,uEAAuE;IACvE,QAAQ,EAAE,OAAO,CAAA;IACjB,KAAK,EAAE,MAAM,EAAE,CAAA;CAChB;AAED,oFAAoF;AACpF,eAAO,MAAM,OAAO,WACV,SAAS,oCACiB;IAAE,MAAM,EAAE,WAAW,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,KACvG,OAAO,CAAC,QAAQ,CAmBlB,CAAA;AAED,0FAA0F;AAC1F,eAAO,MAAM,MAAM,cACN,SAAS,UACZ,WAAW,YACT,QAAQ,WACT,IAAI,CAAC,UAAU,EAAE,QAAQ,GAAG,OAAO,CAAC,KAC5C,OAAO,CAAC;IAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;IAAC,KAAK,EAAE,MAAM,EAAE,CAAA;CAAE,CAe/C,CAAA"}