@wirecat/max-cli 0.49.0 → 0.51.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 (361) hide show
  1. package/README.md +9 -9
  2. package/dist/adapter/max-adapter.d.ts +3 -3
  3. package/dist/adapter/max-adapter.d.ts.map +1 -1
  4. package/dist/adapter/max-adapter.js +2 -2
  5. package/dist/adapter/max-adapter.js.map +1 -1
  6. package/dist/app.d.ts +1 -1
  7. package/dist/app.d.ts.map +1 -1
  8. package/dist/app.js +2 -0
  9. package/dist/app.js.map +1 -1
  10. package/dist/bin/max.js +2 -2
  11. package/dist/bin/max.js.map +1 -1
  12. package/dist/bot/adapter.d.ts +2 -2
  13. package/dist/bot/adapter.d.ts.map +1 -1
  14. package/dist/bot/adapter.js +1 -1
  15. package/dist/bot/adapter.js.map +1 -1
  16. package/dist/bot/auth.d.ts +2 -2
  17. package/dist/bot/auth.d.ts.map +1 -1
  18. package/dist/bot/auth.js +2 -2
  19. package/dist/bot/auth.js.map +1 -1
  20. package/dist/bot/client.d.ts +2 -2
  21. package/dist/bot/client.d.ts.map +1 -1
  22. package/dist/bot/input.d.ts +1 -1
  23. package/dist/bot/input.d.ts.map +1 -1
  24. package/dist/bot/input.js +1 -1
  25. package/dist/bot/input.js.map +1 -1
  26. package/dist/bot/keep.d.ts +2 -2
  27. package/dist/bot/keep.d.ts.map +1 -1
  28. package/dist/bot/keep.js +1 -1
  29. package/dist/bot/keep.js.map +1 -1
  30. package/dist/bot/map.d.ts +2 -2
  31. package/dist/bot/map.d.ts.map +1 -1
  32. package/dist/bot/mcp-tools.d.ts +1 -1
  33. package/dist/bot/mcp-tools.d.ts.map +1 -1
  34. package/dist/bot/mcp-tools.js +1 -1
  35. package/dist/bot/mcp-tools.js.map +1 -1
  36. package/dist/bot/permissions.d.ts +1 -1
  37. package/dist/bot/permissions.d.ts.map +1 -1
  38. package/dist/bot/registry.d.ts +3 -3
  39. package/dist/bot/registry.d.ts.map +1 -1
  40. package/dist/bot/registry.js +2 -2
  41. package/dist/bot/registry.js.map +1 -1
  42. package/dist/bot/transport.d.ts +1 -1
  43. package/dist/bot/transport.d.ts.map +1 -1
  44. package/dist/bot/transport.js +12 -7
  45. package/dist/bot/transport.js.map +1 -1
  46. package/dist/bot/uploads.d.ts +1 -1
  47. package/dist/bot/uploads.d.ts.map +1 -1
  48. package/dist/bot/uploads.js +1 -1
  49. package/dist/bot/uploads.js.map +1 -1
  50. package/dist/client/account.d.ts +39 -0
  51. package/dist/client/account.d.ts.map +1 -0
  52. package/dist/client/account.js +92 -0
  53. package/dist/client/account.js.map +1 -0
  54. package/dist/client/chat-members.d.ts +27 -0
  55. package/dist/client/chat-members.d.ts.map +1 -0
  56. package/dist/client/chat-members.js +73 -0
  57. package/dist/client/chat-members.js.map +1 -0
  58. package/dist/client/chat-reads.d.ts +57 -0
  59. package/dist/client/chat-reads.d.ts.map +1 -0
  60. package/dist/client/chat-reads.js +160 -0
  61. package/dist/client/chat-reads.js.map +1 -0
  62. package/dist/client/chat-writes.d.ts +111 -0
  63. package/dist/client/chat-writes.d.ts.map +1 -0
  64. package/dist/client/chat-writes.js +240 -0
  65. package/dist/client/chat-writes.js.map +1 -0
  66. package/dist/client/contacts.d.ts +39 -0
  67. package/dist/client/contacts.d.ts.map +1 -0
  68. package/dist/client/contacts.js +93 -0
  69. package/dist/client/contacts.js.map +1 -0
  70. package/dist/client/delivery.d.ts +35 -0
  71. package/dist/client/delivery.d.ts.map +1 -0
  72. package/dist/client/delivery.js +62 -0
  73. package/dist/client/delivery.js.map +1 -0
  74. package/dist/client/folders.d.ts +20 -0
  75. package/dist/client/folders.d.ts.map +1 -0
  76. package/dist/client/folders.js +57 -0
  77. package/dist/client/folders.js.map +1 -0
  78. package/dist/client/history.d.ts +41 -0
  79. package/dist/client/history.d.ts.map +1 -0
  80. package/dist/client/history.js +111 -0
  81. package/dist/client/history.js.map +1 -0
  82. package/dist/client/live.d.ts +38 -0
  83. package/dist/client/live.d.ts.map +1 -0
  84. package/dist/client/live.js +182 -0
  85. package/dist/client/live.js.map +1 -0
  86. package/dist/client/login.d.ts +11 -0
  87. package/dist/client/login.d.ts.map +1 -0
  88. package/dist/client/login.js +8 -0
  89. package/dist/client/login.js.map +1 -0
  90. package/dist/client/message-reads.d.ts +53 -0
  91. package/dist/client/message-reads.d.ts.map +1 -0
  92. package/dist/client/message-reads.js +164 -0
  93. package/dist/client/message-reads.js.map +1 -0
  94. package/dist/client/message-writes.d.ts +84 -0
  95. package/dist/client/message-writes.d.ts.map +1 -0
  96. package/dist/client/message-writes.js +254 -0
  97. package/dist/client/message-writes.js.map +1 -0
  98. package/dist/client/people.d.ts +31 -0
  99. package/dist/client/people.d.ts.map +1 -0
  100. package/dist/client/people.js +130 -0
  101. package/dist/client/people.js.map +1 -0
  102. package/dist/client/polls.d.ts +53 -0
  103. package/dist/client/polls.d.ts.map +1 -0
  104. package/dist/client/polls.js +141 -0
  105. package/dist/client/polls.js.map +1 -0
  106. package/dist/client/read-policy.d.ts +2 -0
  107. package/dist/client/read-policy.d.ts.map +1 -0
  108. package/dist/client/read-policy.js +34 -0
  109. package/dist/client/read-policy.js.map +1 -0
  110. package/dist/client/request.d.ts +21 -0
  111. package/dist/client/request.d.ts.map +1 -0
  112. package/dist/client/request.js +69 -0
  113. package/dist/client/request.js.map +1 -0
  114. package/dist/client/session.d.ts +50 -0
  115. package/dist/client/session.d.ts.map +1 -0
  116. package/dist/client/session.js +293 -0
  117. package/dist/client/session.js.map +1 -0
  118. package/dist/client/stickers.d.ts +12 -0
  119. package/dist/client/stickers.d.ts.map +1 -0
  120. package/dist/client/stickers.js +29 -0
  121. package/dist/client/stickers.js.map +1 -0
  122. package/dist/client/types.d.ts +54 -0
  123. package/dist/client/types.d.ts.map +1 -0
  124. package/dist/client/types.js +2 -0
  125. package/dist/client/types.js.map +1 -0
  126. package/dist/client/upload-transport.d.ts +15 -0
  127. package/dist/client/upload-transport.d.ts.map +1 -0
  128. package/dist/client/upload-transport.js +48 -0
  129. package/dist/client/upload-transport.js.map +1 -0
  130. package/dist/client/uploads.d.ts +15 -0
  131. package/dist/client/uploads.d.ts.map +1 -0
  132. package/dist/client/uploads.js +19 -0
  133. package/dist/client/uploads.js.map +1 -0
  134. package/dist/client/values.d.ts +120 -0
  135. package/dist/client/values.d.ts.map +1 -0
  136. package/dist/client/values.js +186 -0
  137. package/dist/client/values.js.map +1 -0
  138. package/dist/client/writes.d.ts +40 -0
  139. package/dist/client/writes.d.ts.map +1 -0
  140. package/dist/client/writes.js +186 -0
  141. package/dist/client/writes.js.map +1 -0
  142. package/dist/client.d.ts +29 -644
  143. package/dist/client.d.ts.map +1 -1
  144. package/dist/client.js +267 -2828
  145. package/dist/client.js.map +1 -1
  146. package/dist/commands/account.js +1 -1
  147. package/dist/commands/account.js.map +1 -1
  148. package/dist/commands/bot-comments.d.ts.map +1 -1
  149. package/dist/commands/bot-comments.js +9 -5
  150. package/dist/commands/bot-comments.js.map +1 -1
  151. package/dist/commands/bot-context.d.ts +2 -2
  152. package/dist/commands/bot-context.d.ts.map +1 -1
  153. package/dist/commands/bot-context.js +2 -2
  154. package/dist/commands/bot-context.js.map +1 -1
  155. package/dist/commands/bot-members.d.ts +1 -1
  156. package/dist/commands/bot-members.d.ts.map +1 -1
  157. package/dist/commands/bot-members.js +14 -5
  158. package/dist/commands/bot-members.js.map +1 -1
  159. package/dist/commands/bot-messenger.d.ts +1 -1
  160. package/dist/commands/bot-messenger.d.ts.map +1 -1
  161. package/dist/commands/bot-messenger.js +2 -2
  162. package/dist/commands/bot-messenger.js.map +1 -1
  163. package/dist/commands/bot-reads.js +1 -1
  164. package/dist/commands/bot-reads.js.map +1 -1
  165. package/dist/commands/bot-sends.js +3 -3
  166. package/dist/commands/bot-sends.js.map +1 -1
  167. package/dist/commands/bot-setup.d.ts.map +1 -1
  168. package/dist/commands/bot-setup.js +2 -1
  169. package/dist/commands/bot-setup.js.map +1 -1
  170. package/dist/commands/bot.js +1 -1
  171. package/dist/commands/bot.js.map +1 -1
  172. package/dist/commands/calls.js +1 -1
  173. package/dist/commands/calls.js.map +1 -1
  174. package/dist/commands/chats.js +1 -1
  175. package/dist/commands/chats.js.map +1 -1
  176. package/dist/commands/commands.js +1 -1
  177. package/dist/commands/commands.js.map +1 -1
  178. package/dist/commands/complete.js +1 -1
  179. package/dist/commands/complete.js.map +1 -1
  180. package/dist/commands/config.d.ts.map +1 -1
  181. package/dist/commands/config.js +29 -27
  182. package/dist/commands/config.js.map +1 -1
  183. package/dist/commands/contacts.js +1 -1
  184. package/dist/commands/contacts.js.map +1 -1
  185. package/dist/commands/context.d.ts +2 -2
  186. package/dist/commands/context.d.ts.map +1 -1
  187. package/dist/commands/context.js +2 -2
  188. package/dist/commands/context.js.map +1 -1
  189. package/dist/commands/doctor.js +2 -2
  190. package/dist/commands/doctor.js.map +1 -1
  191. package/dist/commands/mcp.d.ts.map +1 -1
  192. package/dist/commands/mcp.js +9 -8
  193. package/dist/commands/mcp.js.map +1 -1
  194. package/dist/commands/messages.d.ts.map +1 -1
  195. package/dist/commands/messages.js +11 -2
  196. package/dist/commands/messages.js.map +1 -1
  197. package/dist/commands/models.js +1 -1
  198. package/dist/commands/models.js.map +1 -1
  199. package/dist/commands/paging.d.ts +6 -35
  200. package/dist/commands/paging.d.ts.map +1 -1
  201. package/dist/commands/paging.js +4 -46
  202. package/dist/commands/paging.js.map +1 -1
  203. package/dist/commands/recipients.d.ts.map +1 -1
  204. package/dist/commands/recipients.js +9 -7
  205. package/dist/commands/recipients.js.map +1 -1
  206. package/dist/commands/runs.js +1 -1
  207. package/dist/commands/runs.js.map +1 -1
  208. package/dist/commands/sends.js +1 -1
  209. package/dist/commands/sends.js.map +1 -1
  210. package/dist/commands/serve-members.js +3 -3
  211. package/dist/commands/serve-members.js.map +1 -1
  212. package/dist/commands/serve-stems.js +2 -2
  213. package/dist/commands/serve-stems.js.map +1 -1
  214. package/dist/commands/serve.d.ts.map +1 -1
  215. package/dist/commands/serve.js +12 -4
  216. package/dist/commands/serve.js.map +1 -1
  217. package/dist/commands/server.d.ts +1 -1
  218. package/dist/commands/server.d.ts.map +1 -1
  219. package/dist/commands/server.js +1 -1
  220. package/dist/commands/server.js.map +1 -1
  221. package/dist/commands/session.d.ts +1 -1
  222. package/dist/commands/setup.js +1 -1
  223. package/dist/commands/setup.js.map +1 -1
  224. package/dist/commands/skill.js +1 -1
  225. package/dist/commands/skill.js.map +1 -1
  226. package/dist/commands/stickers.js +1 -1
  227. package/dist/commands/stickers.js.map +1 -1
  228. package/dist/commands/upgrade.js +1 -1
  229. package/dist/commands/upgrade.js.map +1 -1
  230. package/dist/config.d.ts +845 -145
  231. package/dist/config.d.ts.map +1 -1
  232. package/dist/config.js +34 -34
  233. package/dist/config.js.map +1 -1
  234. package/dist/deadline.d.ts +1 -1
  235. package/dist/deadline.d.ts.map +1 -1
  236. package/dist/deadline.js +1 -1
  237. package/dist/deadline.js.map +1 -1
  238. package/dist/diagnose.d.ts +1 -1
  239. package/dist/diagnose.d.ts.map +1 -1
  240. package/dist/diagnose.js +2 -2
  241. package/dist/diagnose.js.map +1 -1
  242. package/dist/domain/models.d.ts +2 -2
  243. package/dist/domain/models.d.ts.map +1 -1
  244. package/dist/download.js +1 -1
  245. package/dist/download.js.map +1 -1
  246. package/dist/envelope.d.ts +29 -0
  247. package/dist/envelope.d.ts.map +1 -0
  248. package/dist/envelope.js +31 -0
  249. package/dist/envelope.js.map +1 -0
  250. package/dist/format-markdown.d.ts +1 -1
  251. package/dist/format-markdown.d.ts.map +1 -1
  252. package/dist/format-markdown.js +1 -1
  253. package/dist/format-markdown.js.map +1 -1
  254. package/dist/mcp/instructions.d.ts +1 -1
  255. package/dist/mcp/instructions.d.ts.map +1 -1
  256. package/dist/mcp/legacy-check.d.ts +1 -1
  257. package/dist/mcp/legacy-check.d.ts.map +1 -1
  258. package/dist/mcp/legacy-check.js +5 -3
  259. package/dist/mcp/legacy-check.js.map +1 -1
  260. package/dist/mcp/photo.d.ts +1 -1
  261. package/dist/mcp/photo.d.ts.map +1 -1
  262. package/dist/mcp/photo.js +3 -2
  263. package/dist/mcp/photo.js.map +1 -1
  264. package/dist/mcp/prompts.d.ts.map +1 -1
  265. package/dist/mcp/prompts.js +11 -9
  266. package/dist/mcp/prompts.js.map +1 -1
  267. package/dist/mcp/resources.js +2 -2
  268. package/dist/mcp/resources.js.map +1 -1
  269. package/dist/mcp/server.d.ts +1 -1
  270. package/dist/mcp/server.d.ts.map +1 -1
  271. package/dist/mcp/server.js +2 -2
  272. package/dist/mcp/server.js.map +1 -1
  273. package/dist/mcp/shared.d.ts +1 -1
  274. package/dist/mcp/shared.d.ts.map +1 -1
  275. package/dist/mcp/shared.js +3 -3
  276. package/dist/mcp/shared.js.map +1 -1
  277. package/dist/mcp/tools.d.ts +2 -2
  278. package/dist/mcp/tools.d.ts.map +1 -1
  279. package/dist/mcp/tools.js +39 -29
  280. package/dist/mcp/tools.js.map +1 -1
  281. package/dist/messenger.d.ts +3 -3
  282. package/dist/messenger.d.ts.map +1 -1
  283. package/dist/messenger.js +15 -5
  284. package/dist/messenger.js.map +1 -1
  285. package/dist/moderation/points.d.ts +1 -1
  286. package/dist/moderation/points.d.ts.map +1 -1
  287. package/dist/moderation/points.js +1 -1
  288. package/dist/moderation/points.js.map +1 -1
  289. package/dist/moderation/rules.d.ts +1 -1
  290. package/dist/moderation/rules.d.ts.map +1 -1
  291. package/dist/moderation/rules.js +2 -2
  292. package/dist/moderation/rules.js.map +1 -1
  293. package/dist/output.d.ts +1 -1
  294. package/dist/output.d.ts.map +1 -1
  295. package/dist/output.js +1 -1
  296. package/dist/output.js.map +1 -1
  297. package/dist/permissions.d.ts +1 -1
  298. package/dist/permissions.d.ts.map +1 -1
  299. package/dist/permissions.js +2 -2
  300. package/dist/permissions.js.map +1 -1
  301. package/dist/program.d.ts +1 -1
  302. package/dist/program.d.ts.map +1 -1
  303. package/dist/program.js +3 -2
  304. package/dist/program.js.map +1 -1
  305. package/dist/protocol/connection.d.ts.map +1 -1
  306. package/dist/protocol/connection.js +44 -12
  307. package/dist/protocol/connection.js.map +1 -1
  308. package/dist/record.d.ts +1 -1
  309. package/dist/record.d.ts.map +1 -1
  310. package/dist/record.js +1 -1
  311. package/dist/record.js.map +1 -1
  312. package/dist/report.d.ts +2 -2
  313. package/dist/report.d.ts.map +1 -1
  314. package/dist/report.js +1 -1
  315. package/dist/report.js.map +1 -1
  316. package/dist/resolve.d.ts +2 -2
  317. package/dist/resolve.d.ts.map +1 -1
  318. package/dist/resolve.js +2 -2
  319. package/dist/resolve.js.map +1 -1
  320. package/dist/sends.d.ts +2 -2
  321. package/dist/sends.d.ts.map +1 -1
  322. package/dist/sends.js +2 -2
  323. package/dist/sends.js.map +1 -1
  324. package/dist/server/replies.d.ts +2 -2
  325. package/dist/server/replies.d.ts.map +1 -1
  326. package/dist/server/replies.js +3 -3
  327. package/dist/server/replies.js.map +1 -1
  328. package/dist/server/server-connection.js +1 -1
  329. package/dist/server/server-connection.js.map +1 -1
  330. package/dist/server/server.d.ts +4 -2
  331. package/dist/server/server.d.ts.map +1 -1
  332. package/dist/server/server.js +39 -21
  333. package/dist/server/server.js.map +1 -1
  334. package/dist/server/subscribe.d.ts.map +1 -1
  335. package/dist/server/subscribe.js +24 -4
  336. package/dist/server/subscribe.js.map +1 -1
  337. package/dist/server/subscribers.d.ts +18 -0
  338. package/dist/server/subscribers.d.ts.map +1 -0
  339. package/dist/server/subscribers.js +146 -0
  340. package/dist/server/subscribers.js.map +1 -0
  341. package/dist/session/prompt.d.ts +1 -1
  342. package/dist/session/prompt.d.ts.map +1 -1
  343. package/dist/session/prompt.js +1 -1
  344. package/dist/session/prompt.js.map +1 -1
  345. package/dist/spec/define.d.ts +1 -1
  346. package/dist/spec/define.d.ts.map +1 -1
  347. package/dist/transcribe/install.d.ts +1 -1
  348. package/dist/transcribe/install.d.ts.map +1 -1
  349. package/dist/transcribe/install.js +1 -1
  350. package/dist/transcribe/install.js.map +1 -1
  351. package/dist/transcribe/models.d.ts +2 -2
  352. package/dist/transcribe/models.d.ts.map +1 -1
  353. package/dist/transcribe/models.js +2 -2
  354. package/dist/transcribe/models.js.map +1 -1
  355. package/dist/upload.d.ts.map +1 -1
  356. package/dist/upload.js +9 -2
  357. package/dist/upload.js.map +1 -1
  358. package/dist/version.d.ts +1 -1
  359. package/dist/version.js +1 -1
  360. package/package.json +4 -4
  361. package/skills/max-cli/SKILL.md +75 -54
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/client/session.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import type { Id, Sticker, StickerSet } from "../domain/models.js";
2
+ import type { wireClient } from "../generated/client.generated.js";
3
+ interface Dependencies {
4
+ connectOnce: () => Promise<void>;
5
+ readonly wire: Pick<ReturnType<typeof wireClient>, "assets">;
6
+ }
7
+ export declare const createStickers: (deps: Dependencies) => {
8
+ sets: () => Promise<StickerSet[]>;
9
+ list: (setId: Id) => Promise<Sticker[]>;
10
+ };
11
+ export {};
12
+ //# sourceMappingURL=stickers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stickers.d.ts","sourceRoot":"","sources":["../../src/client/stickers.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAClE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAA;AAGlE,UAAU,YAAY;IACpB,WAAW,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IAChC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,OAAO,UAAU,CAAC,EAAE,QAAQ,CAAC,CAAA;CAC7D;AAED,eAAO,MAAM,cAAc,SAAU,YAAY;IAqBtC,IAAI,QAnBK,OAAO,CAAC,UAAU,EAAE,CAAC;IAmBT,IAAI,UAXZ,EAAE,KAAG,OAAO,CAAC,OAAO,EAAE,CAAC;CAY9C,CAAA"}
@@ -0,0 +1,29 @@
1
+ import { CliError } from "@wirecat/cli-base";
2
+ import { toSticker, toStickerSet } from "../domain/map.js";
3
+ import { asArray, numbers, record } from "./values.js";
4
+ export const createStickers = (deps) => {
5
+ const resource = {
6
+ sets: async () => {
7
+ await deps.connectOnce();
8
+ const sections = asArray((await deps.wire.assets.update({ type: "STICKER", sync: 0 })).sections);
9
+ const ids = [...new Set(sections.flatMap((section) => numbers(record(section)?.stickerSets)))];
10
+ if (ids.length === 0)
11
+ return [];
12
+ const answer = await deps.wire.assets.byIds({ type: "STICKER_SET", ids });
13
+ return asArray(answer.stickerSets).map((raw) => toStickerSet(record(raw) ?? {}));
14
+ },
15
+ list: async (setId) => {
16
+ await deps.connectOnce();
17
+ const [set] = asArray((await deps.wire.assets.byIds({ type: "STICKER_SET", ids: [Number(setId)] })).stickerSets);
18
+ if (set === undefined)
19
+ throw new CliError("not_found", `no sticker set ${setId} — \`stickers list\` names the sets`);
20
+ const ids = numbers(record(set)?.stickers);
21
+ if (ids.length === 0)
22
+ return [];
23
+ const answer = await deps.wire.assets.byIds({ type: "STICKER", ids });
24
+ return asArray(answer.stickers).map((raw) => toSticker(record(raw) ?? {}));
25
+ },
26
+ };
27
+ return { sets: resource.sets, list: resource.list };
28
+ };
29
+ //# sourceMappingURL=stickers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stickers.js","sourceRoot":"","sources":["../../src/client/stickers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAC5C,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAG1D,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAOtD,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,IAAkB,EAAE,EAAE;IACnD,MAAM,QAAQ,GAAG;QACf,IAAI,EAAE,KAAK,IAA2B,EAAE;YACtC,MAAM,IAAI,CAAC,WAAW,EAAE,CAAA;YACxB,MAAM,QAAQ,GAAG,OAAO,CAAC,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAA;YAChG,MAAM,GAAG,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,CAAA;YAC9F,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,EAAE,CAAA;YAC/B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,GAAG,EAAE,CAAC,CAAA;YACzE,OAAO,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA;QAClF,CAAC;QACD,IAAI,EAAE,KAAK,EAAE,KAAS,EAAsB,EAAE;YAC5C,MAAM,IAAI,CAAC,WAAW,EAAE,CAAA;YACxB,MAAM,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAA;YAChH,IAAI,GAAG,KAAK,SAAS;gBACnB,MAAM,IAAI,QAAQ,CAAC,WAAW,EAAE,kBAAkB,KAAK,qCAAqC,CAAC,CAAA;YAC/F,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAC,CAAA;YAC1C,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,EAAE,CAAA;YAC/B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,CAAA;YACrE,OAAO,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA;QAC5E,CAAC;KACF,CAAA;IACD,OAAO,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAA;AACrD,CAAC,CAAA"}
@@ -0,0 +1,54 @@
1
+ import type { SleepLike } from "@wirecat/cli-base";
2
+ import type { DiagnosticEvent } from "@wirecat/cli-core/cli";
3
+ import type { SendGuard } from "@wirecat/cli-core/sends";
4
+ import type { Wire } from "../protocol/connection.js";
5
+ import type { MaxRecord } from "../record.js";
6
+ import type { SessionStore } from "../session/store.js";
7
+ import type { ResumeFrom } from "./values.js";
8
+ export interface Upload {
9
+ path: string;
10
+ bytes: Buffer;
11
+ kind: "photo" | "video" | "file" | "voice";
12
+ voice?: {
13
+ durationMs: number;
14
+ wave: Uint8Array;
15
+ };
16
+ }
17
+ export interface MaxClientOptions {
18
+ now?: () => number;
19
+ monotonicNow?: () => number;
20
+ store: SessionStore;
21
+ timeoutMs?: number;
22
+ /** Injected by tests, or one through `max serve`; defaults to a real WebSocket connection. */
23
+ connection?: Wire;
24
+ /**
25
+ * Log in without the saved contact marker, so the answer names every contact. `max serve` needs that: it hands its login to other commands as theirs.
26
+ */
27
+ fullLogin?: boolean;
28
+ /** The previous connection's login, for logging in again as a web tab does (`MAX-51`). `max serve` only. */
29
+ resume?: ResumeFrom;
30
+ /**
31
+ * Where a protocol note goes. Never stdout: in machine mode that stream carries one JSON value
32
+ * and nothing else.
33
+ */
34
+ warn?: (message: string) => void;
35
+ /** What the login brings, kept in the shared `messages.db`. */
36
+ record?: MaxRecord;
37
+ /** Refuse network use; the shared services own offline reads. */
38
+ offline?: boolean;
39
+ /**
40
+ * One event per request, for whoever is keeping a diagnostic. Injected the way `warn` is: the
41
+ * client reports what it did and never decides where that goes. Absent means nothing is kept.
42
+ */
43
+ events?: (event: DiagnosticEvent) => void;
44
+ /**
45
+ * Asked before every send and told its outcome. `"caller"` when whoever holds the client guards
46
+ * its writes instead: the shared services, or `max serve` for each write it forwards.
47
+ * Required, so a client without a guard is a choice somebody wrote and never one they forgot.
48
+ */
49
+ sends: SendGuard | "caller";
50
+ reads?: (key: string) => void;
51
+ /** The wait between retries; a test passes one that returns at once. */
52
+ sleep?: SleepLike;
53
+ }
54
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/client/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAClD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAC5D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AACxD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,2BAA2B,CAAA;AACrD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAC7C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AACvD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAE7C,MAAM,WAAW,MAAM;IACrB,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,OAAO,GAAG,OAAO,GAAG,MAAM,GAAG,OAAO,CAAA;IAC1C,KAAK,CAAC,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,UAAU,CAAA;KAAE,CAAA;CACjD;AAED,MAAM,WAAW,gBAAgB;IAC/B,GAAG,CAAC,EAAE,MAAM,MAAM,CAAA;IAClB,YAAY,CAAC,EAAE,MAAM,MAAM,CAAA;IAC3B,KAAK,EAAE,YAAY,CAAA;IACnB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,8FAA8F;IAC9F,UAAU,CAAC,EAAE,IAAI,CAAA;IACjB;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,4GAA4G;IAC5G,MAAM,CAAC,EAAE,UAAU,CAAA;IACnB;;;OAGG;IACH,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAA;IAChC,+DAA+D;IAC/D,MAAM,CAAC,EAAE,SAAS,CAAA;IAClB,iEAAiE;IACjE,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB;;;OAGG;IACH,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,IAAI,CAAA;IACzC;;;;OAIG;IACH,KAAK,EAAE,SAAS,GAAG,QAAQ,CAAA;IAC3B,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAA;IAC7B,wEAAwE;IACxE,KAAK,CAAC,EAAE,SAAS,CAAA;CAClB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/client/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,15 @@
1
+ import type { Upload as SharedUpload } from "@wirecat/cli-core/sends";
2
+ import type { wireClient } from "../generated/client.generated.js";
3
+ import type { Payload } from "../protocol/frame.js";
4
+ import type { Upload } from "./types.js";
5
+ interface Dependencies {
6
+ readonly wire: Pick<ReturnType<typeof wireClient>, "uploads">;
7
+ }
8
+ export declare const createUploadTransport: (deps: Dependencies) => {
9
+ photoToken: (photo: string | SharedUpload, { profile }: {
10
+ profile: boolean;
11
+ }) => Promise<string>;
12
+ upload: ({ path, bytes, kind, voice }: Upload) => Promise<Payload>;
13
+ };
14
+ export {};
15
+ //# sourceMappingURL=upload-transport.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"upload-transport.d.ts","sourceRoot":"","sources":["../../src/client/upload-transport.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,IAAI,YAAY,EAAE,MAAM,yBAAyB,CAAA;AACrE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAA;AAClE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAA;AAEnD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AAGxC,UAAU,YAAY;IACpB,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,OAAO,UAAU,CAAC,EAAE,SAAS,CAAC,CAAA;CAC9D;AACD,eAAO,MAAM,qBAAqB,SAAU,YAAY;wBAErB,MAAM,GAAG,YAAY,eAAe;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE,KAAG,OAAO,CAAC,MAAM,CAAC;2CAavD,MAAM,KAAG,OAAO,CAAC,OAAO,CAAC;CA0B9E,CAAA"}
@@ -0,0 +1,48 @@
1
+ import { CliError } from "@wirecat/cli-base";
2
+ import { isImage, readUpload, uploadFile, uploadMedia, uploadPhoto } from "../upload.js";
3
+ import { asArray, record } from "./values.js";
4
+ export const createUploadTransport = (deps) => {
5
+ /** A group's photo goes up as a message photo does; the web client asks `{count: 1}` for it (2026-10-08). */
6
+ async function photoToken(photo, { profile }) {
7
+ const path = typeof photo === "string" ? photo : photo.name;
8
+ if (!isImage(path))
9
+ throw new CliError("validation_error", `${path} is not an image MAX takes as a photo`);
10
+ const bytes = typeof photo === "string" ? await readUpload(photo) : Buffer.from(photo.bytes);
11
+ const { url } = await deps.wire.uploads.photo({ count: 1, type: 0, uploaderType: 0, profile });
12
+ if (typeof url !== "string")
13
+ throw new CliError("provider_error", "MAX gave no address to upload the photo to");
14
+ return uploadPhoto(url, path, bytes);
15
+ }
16
+ /**
17
+ * Uploads one file and answers what the message attaches (measured 2026-09-24). An upload is never
18
+ * retried: a failure here happens before `MSG_SEND`, so nothing was sent.
19
+ */
20
+ async function upload({ path, bytes, kind, voice }) {
21
+ const request = { count: 1, type: 0, uploaderType: 0, profile: false };
22
+ if (kind === "photo") {
23
+ const { url } = await deps.wire.uploads.photo(request);
24
+ if (typeof url !== "string")
25
+ throw new CliError("provider_error", "MAX gave no address to upload the photo to");
26
+ return { _type: "PHOTO", photoToken: await uploadPhoto(url, path, bytes) };
27
+ }
28
+ if (kind === "video" || kind === "voice") {
29
+ const slot = voice ? { ...request, type: 2, uploaderType: 1 } : request;
30
+ const info = record(asArray((await deps.wire.uploads.video(slot)).info)[0]) ?? {};
31
+ if (typeof info.url !== "string" || info.videoId === undefined) {
32
+ throw new CliError("provider_error", `MAX gave no address to upload the ${kind} to`);
33
+ }
34
+ await uploadMedia(voice ? "voice message" : "video", info.url, path, bytes);
35
+ return voice
36
+ ? { _type: "AUDIO", audioId: info.videoId, duration: voice.durationMs, wave: voice.wave, token: info.token }
37
+ : { _type: "VIDEO", videoId: info.videoId, token: info.token, videoType: 0 };
38
+ }
39
+ const info = record(asArray((await deps.wire.uploads.file(request)).info)[0]) ?? {};
40
+ if (typeof info.url !== "string" || info.fileId === undefined) {
41
+ throw new CliError("provider_error", "MAX gave no address to upload the file to");
42
+ }
43
+ await uploadFile(info.url, path, bytes);
44
+ return { _type: "FILE", fileId: info.fileId };
45
+ }
46
+ return { photoToken, upload };
47
+ };
48
+ //# sourceMappingURL=upload-transport.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"upload-transport.js","sourceRoot":"","sources":["../../src/client/upload-transport.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAI5C,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAExF,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAK7C,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,IAAkB,EAAE,EAAE;IAC1D,6GAA6G;IAC7G,KAAK,UAAU,UAAU,CAAC,KAA4B,EAAE,EAAE,OAAO,EAAwB;QACvF,MAAM,IAAI,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAA;QAC3D,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;YAAE,MAAM,IAAI,QAAQ,CAAC,kBAAkB,EAAE,GAAG,IAAI,uCAAuC,CAAC,CAAA;QAC1G,MAAM,KAAK,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;QAC5F,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,CAAA;QAC9F,IAAI,OAAO,GAAG,KAAK,QAAQ;YAAE,MAAM,IAAI,QAAQ,CAAC,gBAAgB,EAAE,4CAA4C,CAAC,CAAA;QAC/G,OAAO,WAAW,CAAC,GAAG,EAAE,IAAI,EAAE,KAAK,CAAC,CAAA;IACtC,CAAC;IAED;;;OAGG;IACH,KAAK,UAAU,MAAM,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAU;QACxD,MAAM,OAAO,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,OAAO,EAAE,KAAK,EAAW,CAAA;QAC/E,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;YACrB,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;YACtD,IAAI,OAAO,GAAG,KAAK,QAAQ;gBAAE,MAAM,IAAI,QAAQ,CAAC,gBAAgB,EAAE,4CAA4C,CAAC,CAAA;YAC/G,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC,GAAG,EAAE,IAAI,EAAE,KAAK,CAAC,EAAE,CAAA;QAC5E,CAAC;QACD,IAAI,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;YACzC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAE,EAAE,GAAG,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAY,CAAC,CAAC,CAAC,OAAO,CAAA;YAClF,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAA;YACjF,IAAI,OAAO,IAAI,CAAC,GAAG,KAAK,QAAQ,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;gBAC/D,MAAM,IAAI,QAAQ,CAAC,gBAAgB,EAAE,qCAAqC,IAAI,KAAK,CAAC,CAAA;YACtF,CAAC;YACD,MAAM,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,KAAK,CAAC,CAAA;YAC3E,OAAO,KAAK;gBACV,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,UAAU,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE;gBAC5G,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,SAAS,EAAE,CAAC,EAAE,CAAA;QAChF,CAAC;QACD,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAA;QACnF,IAAI,OAAO,IAAI,CAAC,GAAG,KAAK,QAAQ,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAC9D,MAAM,IAAI,QAAQ,CAAC,gBAAgB,EAAE,2CAA2C,CAAC,CAAA;QACnF,CAAC;QACD,MAAM,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,KAAK,CAAC,CAAA;QACvC,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAA;IAC/C,CAAC;IACD,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,CAAA;AAC/B,CAAC,CAAA"}
@@ -0,0 +1,15 @@
1
+ import type { Upload } from "./types.js";
2
+ interface UploadSelection {
3
+ files?: string[];
4
+ uploads?: {
5
+ name: string;
6
+ bytes: Uint8Array;
7
+ kind: Upload["kind"];
8
+ }[];
9
+ voice?: string;
10
+ asFile?: boolean;
11
+ anyFile?: boolean;
12
+ }
13
+ export declare const prepareUploads: (options: UploadSelection) => Promise<Upload[]>;
14
+ export {};
15
+ //# sourceMappingURL=uploads.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"uploads.d.ts","sourceRoot":"","sources":["../../src/client/uploads.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AAExC,UAAU,eAAe;IACvB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAA;IAChB,OAAO,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,UAAU,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,CAAA;KAAE,EAAE,CAAA;IACrE,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAED,eAAO,MAAM,cAAc,YAAmB,eAAe,KAAG,OAAO,CAAC,MAAM,EAAE,CAiB/E,CAAA"}
@@ -0,0 +1,19 @@
1
+ import { isImage, isVideo, readUpload } from "../upload.js";
2
+ import { voiceOf } from "../voice.js";
3
+ export const prepareUploads = async (options) => {
4
+ const files = await Promise.all((options.files ?? []).map(async (path) => ({
5
+ path,
6
+ bytes: await readUpload(path, { anyFile: options.anyFile === true }),
7
+ kind: isImage(path) ? "photo" : isVideo(path) && options.asFile !== true ? "video" : "file",
8
+ })));
9
+ for (const { name, bytes, kind } of options.uploads ?? []) {
10
+ const held = Buffer.from(bytes);
11
+ files.push({ path: name, bytes: held, kind, ...(kind === "voice" ? { voice: await voiceOf(name, held) } : {}) });
12
+ }
13
+ if (options.voice !== undefined) {
14
+ const bytes = await readUpload(options.voice, { anyFile: options.anyFile === true });
15
+ files.push({ path: options.voice, bytes, kind: "voice", voice: await voiceOf(options.voice, bytes) });
16
+ }
17
+ return files;
18
+ };
19
+ //# sourceMappingURL=uploads.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"uploads.js","sourceRoot":"","sources":["../../src/client/uploads.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAC3D,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAWrC,MAAM,CAAC,MAAM,cAAc,GAAG,KAAK,EAAE,OAAwB,EAAqB,EAAE;IAClF,MAAM,KAAK,GAAa,MAAM,OAAO,CAAC,GAAG,CACvC,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;QACzC,IAAI;QACJ,KAAK,EAAE,MAAM,UAAU,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;QACpE,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM;KAC5F,CAAC,CAAC,CACJ,CAAA;IACD,KAAK,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,OAAO,CAAC,OAAO,IAAI,EAAE,EAAE,CAAC;QAC1D,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QAC/B,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAA;IAClH,CAAC;IACD,IAAI,OAAO,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;QAChC,MAAM,KAAK,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC,CAAA;QACpF,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC,CAAA;IACvG,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC,CAAA"}
@@ -0,0 +1,120 @@
1
+ import { CliError } from "@wirecat/cli-base";
2
+ import type { ChatAction, Upload as SharedUpload } from "@wirecat/cli-core/sends";
3
+ import type { Chat, ChatKind, GroupCard, Id, Message, Page } from "../domain/models.js";
4
+ import { ProtocolError } from "../protocol/connection.js";
5
+ import type { Payload } from "../protocol/frame.js";
6
+ import type { Resume } from "../session/handshake.js";
7
+ import { type SessionState, type SessionStore } from "../session/store.js";
8
+ import type { ASSET_TYPES } from "../spec/operations/assets.js";
9
+ export interface ChatChange {
10
+ chatId: Id;
11
+ action: ChatAction;
12
+ people: Id[];
13
+ chat: GroupCard | null;
14
+ }
15
+ export type AdminRight = "read" | "members" | "admins" | "info" | "pin" | "link" | "post" | "edit" | "delete";
16
+ export declare const ADMIN_RIGHTS: Record<AdminRight, number>;
17
+ export declare const LIVE_CHATS = 10000;
18
+ export declare const MEMBERS_PAGE = 50;
19
+ export declare const MEMBERS_READ = 5000;
20
+ export declare const wireLink: (link: string) => string;
21
+ export declare const largestMp4: (answer: Payload) => string | undefined;
22
+ export interface PageRequest {
23
+ limit?: number;
24
+ offset?: number;
25
+ /** Part of a name. Refused below three characters — see `checkedQuery`. */
26
+ query?: string;
27
+ kind?: ChatKind;
28
+ /** Only chats MAX counts unread messages in; a chat where it did not say is not one of them. */
29
+ unread?: boolean;
30
+ }
31
+ export declare const MIN_QUERY = 3;
32
+ export declare const checkedQuery: (query: string | undefined) => string | undefined;
33
+ export declare const CONTACT_INFO_BATCH = 100;
34
+ export declare const CHATS_PAGE_SEEN = 26;
35
+ export declare const timeOfMessageId: (id: Id) => number | undefined;
36
+ export declare const HISTORY_PAGE = 100;
37
+ export declare const EVENTS_READ = 2000;
38
+ export declare const EVENTS_DAYS = 7;
39
+ export interface TabSync {
40
+ folders: number;
41
+ calls: number;
42
+ assets: Partial<Record<(typeof ASSET_TYPES)[number], number>>;
43
+ }
44
+ export declare const ALL_CHATS_FOLDER = "all.chat.folder";
45
+ export declare const FIRST_TAB_SYNC: TabSync;
46
+ export declare const numberOr: (value: unknown, fallback: number) => number;
47
+ export interface ResumeFrom {
48
+ login: Resume;
49
+ chats: Payload[];
50
+ }
51
+ export declare const eventTime: (chat: unknown) => number;
52
+ export declare const REACTIONS_CHANGED = 155;
53
+ export declare const NEW_MESSAGE = 128;
54
+ export declare const DELETE_AT_ONCE = 10;
55
+ export declare const READ_MARK = 130;
56
+ export declare const CHAT_CHANGED = 135;
57
+ export declare const CONFIG_CHANGED = 134;
58
+ export declare const CHAT_FACTS: string[];
59
+ export declare const CHANGES_CHATS: Set<number>;
60
+ export declare const isJoinRequest: (chat: Payload) => boolean;
61
+ export declare const keyboardOf: (raw: Payload) => Payload | undefined;
62
+ export declare const isPresent: <T>(value: T | null | undefined) => value is T;
63
+ export declare const needsName: (message: Pick<Message, "senderId" | "senderName" | "outgoing">) => boolean;
64
+ export declare const batched: <T>(items: T[], size: number) => T[][];
65
+ export declare const matching: (chats: Chat[], { query, kind, unread }: Pick<PageRequest, "query" | "kind" | "unread">) => Chat[];
66
+ export declare const paged: <T>(items: T[], limit: number | undefined, offset: number) => Page<T>;
67
+ export declare const asMarker: (time: unknown) => number | undefined;
68
+ export declare const reasonOf: (error: unknown) => string;
69
+ export declare const viewer: (store: SessionStore) => {
70
+ viewerId?: undefined;
71
+ } | {
72
+ viewerId: string;
73
+ };
74
+ export declare const record: (value: unknown) => Payload | undefined;
75
+ export declare const asArray: (value: unknown) => Payload[];
76
+ export declare const asCliError: (error: unknown) => CliError;
77
+ export declare const asRefusal: (error: ProtocolError) => CliError;
78
+ export declare const deadLink: (link: string) => (error: unknown) => never;
79
+ export declare const LIMIT_WORDS: string[];
80
+ export declare const refuseWhilePaused: (state: SessionState) => void;
81
+ export type ContactWire = {
82
+ action: "ADD" | "REMOVE" | "BLOCK" | "UNBLOCK";
83
+ } | {
84
+ action: "UPDATE";
85
+ firstName: string;
86
+ lastName: string | null;
87
+ };
88
+ export interface ProfileChange {
89
+ firstName?: string;
90
+ lastName?: string;
91
+ description?: string;
92
+ /** Uploaded first, so a failed upload leaves the profile as it was. */
93
+ photo?: string | SharedUpload;
94
+ }
95
+ export interface FolderChange {
96
+ title?: string;
97
+ add?: string[];
98
+ remove?: string[];
99
+ }
100
+ export interface PhoneBookEntry {
101
+ phone: string;
102
+ name: string;
103
+ }
104
+ export declare const ownNames: (profile: Payload) => {
105
+ firstName?: string;
106
+ lastName?: string;
107
+ };
108
+ export declare const wirePhone: (typed: string) => string;
109
+ export declare const FOLDER_TITLE_MAX = 20;
110
+ export declare const folderTitle: (title: string) => string;
111
+ export declare const pickFolder: (reference: string, folders: Payload[]) => Payload;
112
+ export declare const numbers: (value: unknown) => number[];
113
+ export declare const MEDIA_TYPES: {
114
+ readonly photo: "PHOTO";
115
+ readonly video: "VIDEO";
116
+ readonly file: "FILE";
117
+ readonly audio: "AUDIO";
118
+ readonly link: "SHARE";
119
+ };
120
+ //# sourceMappingURL=values.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"values.d.ts","sourceRoot":"","sources":["../../src/client/values.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,186 @@
1
+ import { CliError } from "@wirecat/cli-base";
2
+ import { providerErrorKey } from "@wirecat/cli-core/cli";
3
+ import { ProtocolError } from "../protocol/connection.js";
4
+ import { loginPausedUntil } from "../session/store.js";
5
+ export const ADMIN_RIGHTS = {
6
+ read: 1 | 32,
7
+ members: 2,
8
+ admins: 4,
9
+ info: 8,
10
+ pin: 16,
11
+ link: 128,
12
+ post: 256,
13
+ edit: 512,
14
+ delete: 1024,
15
+ };
16
+ export const LIVE_CHATS = 10_000;
17
+ export const MEMBERS_PAGE = 50;
18
+ export const MEMBERS_READ = 5000;
19
+ export const wireLink = (link) => {
20
+ const trimmed = link.trim();
21
+ const at = trimmed.indexOf("join/");
22
+ if (at >= 0 && trimmed.length > at + "join/".length)
23
+ return trimmed.slice(at);
24
+ if (/^(https:\/\/)?max\.ru\/[\w.-]+\/?$/.test(trimmed))
25
+ return trimmed;
26
+ throw new CliError("validation_error", "not a MAX link — expected https://max.ru/join/… or https://max.ru/<name>");
27
+ };
28
+ export const largestMp4 = (answer) => Object.entries(answer)
29
+ .map(([key, value]) => ({ height: /^MP4_(\d+)$/.exec(key)?.[1], value }))
30
+ .filter((entry) => entry.height !== undefined && typeof entry.value === "string")
31
+ .sort((a, b) => Number(b.height) - Number(a.height))[0]?.value;
32
+ export const MIN_QUERY = 3;
33
+ export const checkedQuery = (query) => {
34
+ if (query === undefined)
35
+ return undefined;
36
+ const trimmed = query.trim();
37
+ if (trimmed.length < MIN_QUERY) {
38
+ throw new CliError("validation_error", `a search needs at least ${MIN_QUERY} characters — "${trimmed}" is ${trimmed.length}`);
39
+ }
40
+ return trimmed;
41
+ };
42
+ export const CONTACT_INFO_BATCH = 100;
43
+ export const CHATS_PAGE_SEEN = 26;
44
+ export const timeOfMessageId = (id) => {
45
+ if (!/^\d{10,20}$/.test(id))
46
+ return undefined;
47
+ const time = Number(BigInt(id) >> 16n);
48
+ return Number.isSafeInteger(time) && time > 0 ? time : undefined;
49
+ };
50
+ export const HISTORY_PAGE = 100;
51
+ export const EVENTS_READ = 2000;
52
+ export const EVENTS_DAYS = 7;
53
+ export const ALL_CHATS_FOLDER = "all.chat.folder";
54
+ export const FIRST_TAB_SYNC = { folders: 0, calls: 0, assets: {} };
55
+ export const numberOr = (value, fallback) => (typeof value === "number" ? value : fallback);
56
+ export const eventTime = (chat) => {
57
+ const time = record(chat)?.lastEventTime;
58
+ return typeof time === "number" ? time : 0;
59
+ };
60
+ export const REACTIONS_CHANGED = 155;
61
+ export const NEW_MESSAGE = 128;
62
+ export const DELETE_AT_ONCE = 10;
63
+ export const READ_MARK = 130;
64
+ export const CHAT_CHANGED = 135;
65
+ export const CONFIG_CHANGED = 134;
66
+ export const CHAT_FACTS = ["title", "description", "participantsCount", "status", "type", "baseIconUrl", "owner"];
67
+ export const CHANGES_CHATS = new Set([140, 142]);
68
+ export const isJoinRequest = (chat) => chat.joinRequestTime !== undefined && chat.joinRequestTime !== null;
69
+ export const keyboardOf = (raw) => asArray(raw.attaches).find((attach) => attach._type === "INLINE_KEYBOARD");
70
+ export const isPresent = (value) => value !== null && value !== undefined;
71
+ export const needsName = (message) => message.senderId !== null && message.senderName === null && message.outgoing !== true;
72
+ export const batched = (items, size) => {
73
+ const batches = [];
74
+ for (let at = 0; at < items.length; at += size)
75
+ batches.push(items.slice(at, at + size));
76
+ return batches;
77
+ };
78
+ export const matching = (chats, { query, kind, unread }) => {
79
+ const needle = query?.toLocaleLowerCase();
80
+ return chats.filter((chat) => (kind === undefined || chat.kind === kind) &&
81
+ (!unread || (chat.unreadCount ?? 0) > 0) &&
82
+ (needle === undefined || (chat.title ?? "").toLocaleLowerCase().includes(needle)));
83
+ };
84
+ export const paged = (items, limit, offset) => {
85
+ const page = limit === undefined ? items.slice(offset) : items.slice(offset, offset + limit);
86
+ return { items: page, hasMore: offset + page.length < items.length };
87
+ };
88
+ export const asMarker = (time) => typeof time === "number" && Number.isFinite(time) && time > 0 ? time : undefined;
89
+ export const reasonOf = (error) => {
90
+ const code = error?.code;
91
+ return typeof code === "string" ? code : error instanceof Error ? error.name : "an unknown problem";
92
+ };
93
+ export const viewer = (store) => {
94
+ const viewerId = store.readState().viewerId;
95
+ return viewerId === undefined ? {} : { viewerId };
96
+ };
97
+ export const record = (value) => typeof value === "object" && value !== null && !Array.isArray(value) ? value : undefined;
98
+ export const asArray = (value) => Array.isArray(value) ? value.filter((item) => record(item) !== undefined) : [];
99
+ export const asCliError = (error) => {
100
+ if (error instanceof CliError)
101
+ return error;
102
+ if (error instanceof ProtocolError) {
103
+ const key = providerErrorKey(record(error.payload)?.error);
104
+ const refused = asRefusal(error);
105
+ return key === undefined
106
+ ? refused
107
+ : new CliError(refused.code, refused.message, { ...refused.details, provider_error: key });
108
+ }
109
+ const message = error instanceof Error ? error.message : String(error);
110
+ if (message.includes("did not answer"))
111
+ return new CliError("timeout", message);
112
+ return new CliError("network_error", message);
113
+ };
114
+ export const asRefusal = (error) => {
115
+ const text = error.message.toLowerCase();
116
+ // First: "too many auth attempts" is a limit, not a bad token. The words are claims —
117
+ // `error.limit.violate` from PyMax #106, `rate_limit_exceeded` from GREEN-API — never measured here.
118
+ if (LIMIT_WORDS.some((words) => text.includes(words))) {
119
+ return new CliError("rate_limited", error.message, { operation: String(error.opcode) });
120
+ }
121
+ if (text.includes("token") || text.includes("auth")) {
122
+ return new CliError("authentication_error", `${error.message} — the session may have expired; run \`max <profile> session start\``);
123
+ }
124
+ return new CliError("provider_error", error.message, { operation: String(error.opcode) });
125
+ };
126
+ export const deadLink = (link) => (error) => {
127
+ const failure = asCliError(error);
128
+ if (failure.details.provider_error !== "not.found")
129
+ throw failure;
130
+ throw new CliError("not_found", `${link.trim()} leads nowhere — the link was reset, or never worked`);
131
+ };
132
+ export const LIMIT_WORDS = ["limit.violate", "rate_limit", "rate limit", "too many", "слишком много"];
133
+ export const refuseWhilePaused = (state) => {
134
+ const until = loginPausedUntil(state);
135
+ if (until === undefined)
136
+ return;
137
+ throw new CliError("rate_limited", `MAX refused this profile's last login for too many attempts; it will not try again before ${until} — ` +
138
+ "logging in sooner is what keeps an account locked");
139
+ };
140
+ export const ownNames = (profile) => {
141
+ const contact = record(profile.contact) ?? profile;
142
+ const names = asArray(contact.names);
143
+ const own = names.find((entry) => entry.type === "ONEME") ?? names[0];
144
+ return {
145
+ ...(typeof own?.firstName === "string" && own.firstName !== "" ? { firstName: own.firstName } : {}),
146
+ ...(typeof own?.lastName === "string" ? { lastName: own.lastName } : {}),
147
+ };
148
+ };
149
+ export const wirePhone = (typed) => {
150
+ const compact = typed.replace(/[\s()-]/g, "");
151
+ const digits = compact.replace(/^\+/, "");
152
+ if (!/^\d{7,15}$/.test(digits)) {
153
+ throw new CliError("validation_error", "a phone number is 7 to 15 digits, with an optional + and the country code");
154
+ }
155
+ // A Russian number written the domestic way would otherwise go out as +8…, somebody else's.
156
+ if (!compact.startsWith("+") && /^8\d{10}$/.test(digits)) {
157
+ throw new CliError("validation_error", "write a number that starts with 8 with its country code instead: +7…");
158
+ }
159
+ return `+${digits}`;
160
+ };
161
+ export const FOLDER_TITLE_MAX = 20;
162
+ export const folderTitle = (title) => {
163
+ const trimmed = title.trim();
164
+ if (trimmed === "")
165
+ throw new CliError("validation_error", "a folder needs a title");
166
+ if ([...trimmed].length > FOLDER_TITLE_MAX) {
167
+ throw new CliError("validation_error", `a folder title is at most ${FOLDER_TITLE_MAX} characters in MAX`);
168
+ }
169
+ return trimmed;
170
+ };
171
+ export const pickFolder = (reference, folders) => {
172
+ const wanted = reference.trim();
173
+ const byId = folders.find((folder) => folder.id === wanted);
174
+ if (byId)
175
+ return byId;
176
+ const named = folders.filter((folder) => typeof folder.title === "string" && folder.title === wanted);
177
+ if (named.length === 1 && named[0])
178
+ return named[0];
179
+ if (named.length > 1) {
180
+ throw new CliError("validation_error", `${named.length} folders are called "${wanted}" — name one by id (\`max chats folders list\`)`);
181
+ }
182
+ throw new CliError("not_found", `no folder "${wanted}" — \`max chats folders list\` shows them`);
183
+ };
184
+ export const numbers = (value) => Array.isArray(value) ? value.map(Number).filter(Number.isFinite) : [];
185
+ export const MEDIA_TYPES = { photo: "PHOTO", video: "VIDEO", file: "FILE", audio: "AUDIO", link: "SHARE" };
186
+ //# sourceMappingURL=values.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"values.js","sourceRoot":"","sources":["../../src/client/values.ts"],"names":[],"mappings":"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"}