@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,53 @@
1
+ /**
2
+ * What we claim to be on the wire.
3
+ *
4
+ * **We imitate MAX's own web client rather than announcing ourselves** (`REQUIREMENTS.md` §34), so
5
+ * none of these values names this tool. Fields, their order and the versions are what web.max.ru
6
+ * sent on 2026-09-25 (`src/testing/fixtures/web-capture-2026-09-25.json`, the INIT frame).
7
+ *
8
+ * **Built from this machine, as the web client builds it from the browser** (`MAX-55`): timezone
9
+ * from `Intl`, the language from the system, the OS and the matching Chrome user agent from the
10
+ * platform. A fixed value would give every install of a public package the same Madrid-and-Linux
11
+ * browser. How web.max.ru fills each field: `docs/dev/capture/2026-09-25-web-tab.md`.
12
+ *
13
+ * The device identity is deliberately not here: it is generated once per profile and stored,
14
+ * because a client presenting a new device on every command is not imitating anything.
15
+ */
16
+ const CHROME = "Chrome/151.0.0.0";
17
+ const APP_VERSION = "26.9.8";
18
+ /**
19
+ * When `APP_VERSION` and `CHROME` were read from a live tab. MAX refuses a client version it has
20
+ * dropped (PyMax #86), so `max doctor` reports their age (`MAX-39`); a release updates all three.
21
+ */
22
+ export const CLIENT = { appVersion: APP_VERSION, chrome: CHROME, readOn: "2026-09-25" };
23
+ /** Chrome's reduced user agent keeps one frozen OS string per platform. */
24
+ const PLATFORMS = {
25
+ linux: { osVersion: "Linux", system: "X11; Linux x86_64", screen: "1080x1920 1.0x" },
26
+ darwin: { osVersion: "macOS", system: "Macintosh; Intel Mac OS X 10_15_7", screen: "900x1440 2.0x" },
27
+ win32: { osVersion: "Windows", system: "Windows NT 10.0; Win64; x64", screen: "1080x1920 1.0x" },
28
+ };
29
+ /** The languages the MAX interface itself offers; anything else falls back to Russian, as the app does. */
30
+ const APP_LANGUAGES = new Set(["ru", "en"]);
31
+ export const thisHost = () => {
32
+ const options = Intl.DateTimeFormat().resolvedOptions();
33
+ return { platform: process.platform, timeZone: options.timeZone, locale: options.locale };
34
+ };
35
+ export const webUserAgent = ({ platform, timeZone, locale }) => {
36
+ const host = PLATFORMS[platform] ?? PLATFORMS.linux;
37
+ const language = locale?.slice(0, 2).toLowerCase() || "ru";
38
+ return {
39
+ deviceType: "WEB",
40
+ pushDeviceType: "WEBPUSH",
41
+ locale: APP_LANGUAGES.has(language) ? language : "ru",
42
+ deviceLocale: language,
43
+ osVersion: host.osVersion,
44
+ deviceName: "Chrome",
45
+ headerUserAgent: `Mozilla/5.0 (${host.system}) AppleWebKit/537.36 (KHTML, like Gecko) ${CHROME} Safari/537.36`,
46
+ isPwa: false,
47
+ appVersion: APP_VERSION,
48
+ screen: host.screen,
49
+ timezone: timeZone || "Europe/Moscow",
50
+ };
51
+ };
52
+ export const WEB_USER_AGENT = webUserAgent(thisHost());
53
+ //# sourceMappingURL=identity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"identity.js","sourceRoot":"","sources":["../../src/spec/identity.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,MAAM,MAAM,GAAG,kBAAkB,CAAA;AACjC,MAAM,WAAW,GAAG,QAAQ,CAAA;AAE5B;;;GAGG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,EAAW,CAAA;AAEhG,2EAA2E;AAC3E,MAAM,SAAS,GAAG;IAChB,KAAK,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,mBAAmB,EAAE,MAAM,EAAE,gBAAgB,EAAE;IACpF,MAAM,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,mCAAmC,EAAE,MAAM,EAAE,eAAe,EAAE;IACpG,KAAK,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,6BAA6B,EAAE,MAAM,EAAE,gBAAgB,EAAE;CACxF,CAAA;AAEV,2GAA2G;AAC3G,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAA;AAQ3C,MAAM,CAAC,MAAM,QAAQ,GAAG,GAAS,EAAE;IACjC,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC,eAAe,EAAE,CAAA;IACvD,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAA;AAC3F,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAQ,EAAE,EAAE;IACnE,MAAM,IAAI,GAAG,SAAS,CAAC,QAAkC,CAAC,IAAI,SAAS,CAAC,KAAK,CAAA;IAC7E,MAAM,QAAQ,GAAG,MAAM,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,IAAI,IAAI,CAAA;IAC1D,OAAO;QACL,UAAU,EAAE,KAAK;QACjB,cAAc,EAAE,SAAS;QACzB,MAAM,EAAE,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI;QACrD,YAAY,EAAE,QAAQ;QACtB,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,UAAU,EAAE,QAAQ;QACpB,eAAe,EAAE,gBAAgB,IAAI,CAAC,MAAM,4CAA4C,MAAM,gBAAgB;QAC9G,KAAK,EAAE,KAAK;QACZ,UAAU,EAAE,WAAW;QACvB,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,QAAQ,EAAE,QAAQ,IAAI,eAAe;KAC7B,CAAA;AACZ,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,cAAc,GAAG,YAAY,CAAC,QAAQ,EAAE,CAAC,CAAA"}
@@ -0,0 +1,15 @@
1
+ import type { Entry, Operation, Reservation } from "./define.js";
2
+ export { checkResponse } from "./check.js";
3
+ export * from "./define.js";
4
+ export * from "./scalars.js";
5
+ /**
6
+ * Every opcode this project knows, whether or not it is ever sent.
7
+ *
8
+ * **The order is the order it is read in**, and the generator preserves it: the registry, the
9
+ * reference table and the coverage list all come out grouped the same way, which is what makes a
10
+ * regenerated file a small diff instead of a reshuffle.
11
+ */
12
+ export declare const spec: readonly Entry[];
13
+ export declare const operations: readonly Operation[];
14
+ export declare const reservations: readonly Reservation[];
15
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/spec/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAqDhE,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAC1C,cAAc,aAAa,CAAA;AAC3B,cAAc,cAAc,CAAA;AAE5B;;;;;;GAMG;AACH,eAAO,MAAM,IAAI,EAAE,SAAS,KAAK,EA0DhC,CAAA;AAED,eAAO,MAAM,UAAU,EAAE,SAAS,SAAS,EAA2E,CAAA;AAEtH,eAAO,MAAM,YAAY,EAAE,SAAS,WAAW,EAE9C,CAAA"}
@@ -0,0 +1,84 @@
1
+ import { accountCloseSessions, accountSessions, accountSettings, accountUpdate } from "./operations/account.js";
2
+ import { assetsByIds, assetsUpdate } from "./operations/assets.js";
3
+ import { attachmentsFile, attachmentsVideo } from "./operations/attachments.js";
4
+ import { bannersList } from "./operations/banners.js";
5
+ import { callsHistory } from "./operations/calls.js";
6
+ import { chatsApp, chatsClear, chatsDelete, chatsHistory, chatsJoin, chatsLeave, chatsLinkInfo, chatsList, chatsMark, chatsMembers, chatsUpdate, chatsUpdateMembers, } from "./operations/chats.js";
7
+ import { contactsByPhone, contactsImport, contactsInfo, contactsPresence, contactsUpdate, unidentified36, } from "./operations/contacts.js";
8
+ import { foldersDelete, foldersList, foldersReorder, foldersUpdate } from "./operations/folders.js";
9
+ import { loginByQr, loginPassword, loginQrRequest, loginQrStatus, loginSmsCode, loginSmsRequest, qrApprove, } from "./operations/login.js";
10
+ import { messagesDelete, messagesEdit, messagesMedia, messagesPollVote, messagesPress, messagesReact, messagesReactions, messagesSearch, messagesSend, messagesUnreact, } from "./operations/messages.js";
11
+ import { sessionInit, sessionLog, sessionLogin, sessionLogout, sessionPing } from "./operations/session.js";
12
+ import { uploadsFile, uploadsPhoto, uploadsVideo } from "./operations/uploads.js";
13
+ export { checkResponse } from "./check.js";
14
+ export * from "./define.js";
15
+ export * from "./scalars.js";
16
+ /**
17
+ * Every opcode this project knows, whether or not it is ever sent.
18
+ *
19
+ * **The order is the order it is read in**, and the generator preserves it: the registry, the
20
+ * reference table and the coverage list all come out grouped the same way, which is what makes a
21
+ * regenerated file a small diff instead of a reshuffle.
22
+ */
23
+ export const spec = [
24
+ sessionInit,
25
+ sessionLogin,
26
+ sessionPing,
27
+ sessionLog,
28
+ sessionLogout,
29
+ loginQrRequest,
30
+ loginQrStatus,
31
+ loginByQr,
32
+ qrApprove,
33
+ loginSmsRequest,
34
+ loginSmsCode,
35
+ loginPassword,
36
+ contactsInfo,
37
+ contactsPresence,
38
+ contactsByPhone,
39
+ contactsUpdate,
40
+ contactsImport,
41
+ unidentified36,
42
+ accountUpdate,
43
+ accountSettings,
44
+ accountSessions,
45
+ accountCloseSessions,
46
+ foldersList,
47
+ foldersUpdate,
48
+ foldersDelete,
49
+ foldersReorder,
50
+ bannersList,
51
+ callsHistory,
52
+ assetsUpdate,
53
+ assetsByIds,
54
+ chatsHistory,
55
+ chatsMark,
56
+ chatsList,
57
+ chatsLinkInfo,
58
+ chatsJoin,
59
+ chatsLeave,
60
+ chatsUpdate,
61
+ chatsMembers,
62
+ chatsUpdateMembers,
63
+ chatsDelete,
64
+ chatsClear,
65
+ chatsApp,
66
+ messagesSend,
67
+ messagesEdit,
68
+ messagesReact,
69
+ messagesPress,
70
+ messagesUnreact,
71
+ messagesPollVote,
72
+ messagesReactions,
73
+ messagesMedia,
74
+ messagesSearch,
75
+ messagesDelete,
76
+ attachmentsVideo,
77
+ attachmentsFile,
78
+ uploadsPhoto,
79
+ uploadsFile,
80
+ uploadsVideo,
81
+ ];
82
+ export const operations = spec.filter((entry) => entry.kind === "operation");
83
+ export const reservations = spec.filter((entry) => entry.kind === "reservation");
84
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/spec/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,eAAe,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAA;AAC/G,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAA;AAClE,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAA;AAC/E,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AACpD,OAAO,EACL,QAAQ,EACR,UAAU,EACV,WAAW,EACX,YAAY,EACZ,SAAS,EACT,UAAU,EACV,aAAa,EACb,SAAS,EACT,SAAS,EACT,YAAY,EACZ,WAAW,EACX,kBAAkB,GACnB,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EACL,eAAe,EACf,cAAc,EACd,YAAY,EACZ,gBAAgB,EAChB,cAAc,EACd,cAAc,GACf,MAAM,0BAA0B,CAAA;AACjC,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAA;AACnG,OAAO,EACL,SAAS,EACT,aAAa,EACb,cAAc,EACd,aAAa,EACb,YAAY,EACZ,eAAe,EACf,SAAS,GACV,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EACL,cAAc,EACd,YAAY,EACZ,aAAa,EACb,gBAAgB,EAChB,aAAa,EACb,aAAa,EACb,iBAAiB,EACjB,cAAc,EACd,YAAY,EACZ,eAAe,GAChB,MAAM,0BAA0B,CAAA;AACjC,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;AAC3G,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AAEjF,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAC1C,cAAc,aAAa,CAAA;AAC3B,cAAc,cAAc,CAAA;AAE5B;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,IAAI,GAAqB;IACpC,WAAW;IACX,YAAY;IACZ,WAAW;IACX,UAAU;IACV,aAAa;IACb,cAAc;IACd,aAAa;IACb,SAAS;IACT,SAAS;IACT,eAAe;IACf,YAAY;IACZ,aAAa;IACb,YAAY;IACZ,gBAAgB;IAChB,eAAe;IACf,cAAc;IACd,cAAc;IACd,cAAc;IACd,aAAa;IACb,eAAe;IACf,eAAe;IACf,oBAAoB;IACpB,WAAW;IACX,aAAa;IACb,aAAa;IACb,cAAc;IACd,WAAW;IACX,YAAY;IACZ,YAAY;IACZ,WAAW;IACX,YAAY;IACZ,SAAS;IACT,SAAS;IACT,aAAa;IACb,SAAS;IACT,UAAU;IACV,WAAW;IACX,YAAY;IACZ,kBAAkB;IAClB,WAAW;IACX,UAAU;IACV,QAAQ;IACR,YAAY;IACZ,YAAY;IACZ,aAAa;IACb,aAAa;IACb,eAAe;IACf,gBAAgB;IAChB,iBAAiB;IACjB,aAAa;IACb,cAAc;IACd,cAAc;IACd,gBAAgB;IAChB,eAAe;IACf,YAAY;IACZ,WAAW;IACX,YAAY;CACb,CAAA;AAED,MAAM,CAAC,MAAM,UAAU,GAAyB,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,EAAsB,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,WAAW,CAAC,CAAA;AAEtH,MAAM,CAAC,MAAM,YAAY,GAA2B,IAAI,CAAC,MAAM,CAC7D,CAAC,KAAK,EAAwB,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,aAAa,CAC9D,CAAA"}
@@ -0,0 +1,39 @@
1
+ import * as v from "valibot";
2
+ export declare const accountUpdate: import("../define.js").Operation<v.StrictObjectSchema<{
3
+ /** Always sent, filled from the current profile — the web client does, even when only the description changes. */
4
+ readonly firstName: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>;
5
+ readonly lastName: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
6
+ readonly description: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
7
+ /** From a photo uploaded with `profile: true`; goes with `avatarType`. */
8
+ readonly photoToken: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>, undefined>;
9
+ readonly avatarType: v.OptionalSchema<v.LiteralSchema<"USER_AVATAR", undefined>, undefined>;
10
+ }, undefined>, v.LooseObjectSchema<{
11
+ readonly profile: v.OptionalSchema<v.LooseObjectSchema<{}, undefined>, undefined>;
12
+ }, undefined>>;
13
+ export declare const accountSessions: import("../define.js").Operation<v.StrictObjectSchema<{}, undefined>, v.LooseObjectSchema<{
14
+ readonly sessions: v.OptionalSchema<v.ArraySchema<v.LooseObjectSchema<{}, undefined>, undefined>, undefined>;
15
+ }, undefined>>;
16
+ export declare const accountCloseSessions: import("../define.js").Operation<v.StrictObjectSchema<{}, undefined>, v.LooseObjectSchema<{
17
+ /**
18
+ * PyMax replaces its stored token with this; the web client reads nothing from the answer
19
+ * (`RISK-25`). ⚠ A credential: written to the keyring, never printed.
20
+ */
21
+ readonly token: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
22
+ }, undefined>>;
23
+ /**
24
+ * The owner's own settings. The web tab sends 22 for three things — its push subscription, a chat's
25
+ * mute, and the privacy settings — and only the last two go out from here.
26
+ */
27
+ export declare const accountSettings: import("../define.js").Operation<v.StrictObjectSchema<{
28
+ readonly settings: v.UnionSchema<[v.StrictObjectSchema<{
29
+ readonly chats: v.RecordSchema<v.StringSchema<undefined>, v.StrictObjectSchema<{
30
+ readonly dontDisturbUntil: v.NumberSchema<undefined>;
31
+ }, undefined>, undefined>;
32
+ }, undefined>, v.StrictObjectSchema<{
33
+ readonly user: v.RecordSchema<v.StringSchema<undefined>, v.UnionSchema<[v.StringSchema<undefined>, v.BooleanSchema<undefined>], undefined>, undefined>;
34
+ }, undefined>], undefined>;
35
+ }, undefined>, v.LooseObjectSchema<{
36
+ readonly user: v.OptionalSchema<v.LooseObjectSchema<{}, undefined>, undefined>;
37
+ readonly hash: v.OptionalSchema<v.UnknownSchema, undefined>;
38
+ }, undefined>>;
39
+ //# sourceMappingURL=account.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"account.d.ts","sourceRoot":"","sources":["../../../src/spec/operations/account.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAK5B,eAAO,MAAM,aAAa;IAMtB,kHAAkH;;;;IAIlH,0EAA0E;;;;;cAkB5E,CAAA;AAEF,eAAO,MAAM,eAAe;;cAgB1B,CAAA;AAEF,eAAO,MAAM,oBAAoB;IAO7B;;;OAGG;;cAUL,CAAA;AAIF;;;GAGG;AACH,eAAO,MAAM,eAAe;;;;;;;;;;;cA6B1B,CAAA"}
@@ -0,0 +1,103 @@
1
+ import * as v from "valibot";
2
+ import { defineOperation } from "../define.js";
3
+ const webClient = "web.max.ru chunk `_app/immutable/chunks/5oCuRT0F.js`, read 2026-09-24";
4
+ export const accountUpdate = defineOperation({
5
+ name: "account.update",
6
+ constant: "PROFILE",
7
+ opcode: 16,
8
+ auth: true,
9
+ request: v.strictObject({
10
+ /** Always sent, filled from the current profile — the web client does, even when only the description changes. */
11
+ firstName: v.pipe(v.string(), v.minLength(1)),
12
+ lastName: v.optional(v.string()),
13
+ description: v.optional(v.string()),
14
+ /** From a photo uploaded with `profile: true`; goes with `avatarType`. */
15
+ photoToken: v.optional(v.pipe(v.string(), v.minLength(1))),
16
+ avatarType: v.optional(v.literal("USER_AVATAR")),
17
+ }),
18
+ response: v.looseObject({ profile: v.optional(v.looseObject({})) }),
19
+ guard: () => ({ chatId: null, kind: "account", action: "profile" }),
20
+ provenance: {
21
+ confidence: "measured",
22
+ sources: [
23
+ "measured against MAX 2026-09-24 (`pnpm probe:account`): the profile rewritten with its own values answered `{profile}` shaped like LOGIN's",
24
+ "measured 2026-09-27 (`pnpm probe:profile`): `photoToken` from an upload with `profile: true` and `avatarType` set the photo — confirmed by the owner in the app; MAX's answers were not kept (`BUG-67`)",
25
+ webClient,
26
+ "PyMax 53103f0 `change_profile`",
27
+ "measured against MAX 2026-09-19: refused an empty payload",
28
+ ],
29
+ notes: "Changes the profile everyone sees. It does not read one: your own profile arrives with the login response. `link` (the short name) is not declared: MAX refused every name for this personal account with `link.not.available` (2026-09-27, `MAX-42`).",
30
+ },
31
+ });
32
+ export const accountSessions = defineOperation({
33
+ name: "account.sessions",
34
+ constant: "SESSIONS_INFO",
35
+ opcode: 96,
36
+ auth: true,
37
+ request: v.strictObject({}),
38
+ response: v.looseObject({ sessions: v.optional(v.array(v.looseObject({}))) }),
39
+ guard: null,
40
+ provenance: {
41
+ confidence: "measured",
42
+ sources: [
43
+ "measured against MAX 2026-09-24 (`pnpm probe:account`): `{client, current, info, location, time}` per session — no id",
44
+ webClient,
45
+ "PyMax 53103f0 `get_sessions`",
46
+ ],
47
+ },
48
+ });
49
+ export const accountCloseSessions = defineOperation({
50
+ name: "account.closeSessions",
51
+ constant: "SESSIONS_CLOSE",
52
+ opcode: 97,
53
+ auth: true,
54
+ request: v.strictObject({}),
55
+ response: v.looseObject({
56
+ /**
57
+ * PyMax replaces its stored token with this; the web client reads nothing from the answer
58
+ * (`RISK-25`). ⚠ A credential: written to the keyring, never printed.
59
+ */
60
+ token: v.optional(v.string()),
61
+ }),
62
+ guard: () => ({ chatId: null, kind: "account", action: "sessions-end" }),
63
+ provenance: {
64
+ confidence: "confirmed",
65
+ sources: [webClient, "PyMax 53103f0 `close_all_sessions`"],
66
+ notes: "Ends every session but this one — the owner's phone included. Never measured by us: the first real run is the owner's own (`NEED-202`).",
67
+ },
68
+ });
69
+ const webClientNow = "web.max.ru chunk `_app/immutable/chunks/Cdo8IOYe.js`, read 2026-10-08";
70
+ /**
71
+ * The owner's own settings. The web tab sends 22 for three things — its push subscription, a chat's
72
+ * mute, and the privacy settings — and only the last two go out from here.
73
+ */
74
+ export const accountSettings = defineOperation({
75
+ name: "account.settings",
76
+ constant: "CONFIG",
77
+ opcode: 22,
78
+ auth: true,
79
+ request: v.strictObject({
80
+ settings: v.union([
81
+ /** `dontDisturbUntil`: -1 for good, 0 to hear the chat again, else epoch milliseconds. */
82
+ v.strictObject({ chats: v.record(v.string(), v.strictObject({ dontDisturbUntil: v.number() })) }),
83
+ v.strictObject({ user: v.record(v.string(), v.union([v.string(), v.boolean()])) }),
84
+ ]),
85
+ }),
86
+ response: v.looseObject({ user: v.optional(v.looseObject({})), hash: v.optional(v.unknown()) }),
87
+ guard: (request) => {
88
+ const settings = request.settings;
89
+ const chats = Object.keys(settings.chats ?? {});
90
+ return chats.length === 1
91
+ ? { chatId: chats[0] ?? null, kind: "account", action: "chat-mute" }
92
+ : { chatId: null, kind: "account", action: "privacy" };
93
+ },
94
+ provenance: {
95
+ confidence: "confirmed",
96
+ sources: [
97
+ `${webClientNow}: mute \`send(22, {settings: {chats: {[id]: {dontDisturbUntil}}}})\`, privacy \`send(22, {settings: {user}})\`; \`isMuted\` reads -1 as for good, 0 as not muted`,
98
+ "PyMax 53103f0 `change_profile_settings`, rumax a9ecaf3 `set_chat_mute`, `update_user_settings`",
99
+ ],
100
+ notes: "Privacy values as the web client reads them: `ALL`, `CONTACTS`, `NOBODY` (PyMax's `_NONE_` is not one); `SEARCH_BY_PHONE` takes only `ALL` or `CONTACTS`; `HIDDEN` is a boolean.",
101
+ },
102
+ });
103
+ //# sourceMappingURL=account.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"account.js","sourceRoot":"","sources":["../../../src/spec/operations/account.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import * as v from "valibot";
2
+ export declare const ASSET_TYPES: readonly ["STICKER", "FAVORITE_STICKER", "REACTION", "ANIMOJI_SET"];
3
+ export declare const assetsUpdate: import("../define.js").Operation<v.StrictObjectSchema<{
4
+ readonly type: v.PicklistSchema<readonly ["STICKER", "FAVORITE_STICKER", "REACTION", "ANIMOJI_SET"], undefined>;
5
+ readonly sync: v.NumberSchema<undefined>;
6
+ }, undefined>, v.LooseObjectSchema<{
7
+ readonly sync: v.OptionalSchema<v.NumberSchema<undefined>, undefined>;
8
+ readonly sections: v.OptionalSchema<v.ArraySchema<v.UnknownSchema, undefined>, undefined>;
9
+ }, undefined>>;
10
+ export declare const assetsByIds: import("../define.js").Operation<v.StrictObjectSchema<{
11
+ readonly type: v.PicklistSchema<["STICKER_SET", "STICKER"], undefined>;
12
+ readonly ids: v.ArraySchema<v.NumberSchema<undefined>, undefined>;
13
+ }, undefined>, v.LooseObjectSchema<{
14
+ readonly stickerSets: v.OptionalSchema<v.ArraySchema<v.LooseObjectSchema<{}, undefined>, undefined>, undefined>;
15
+ readonly stickers: v.OptionalSchema<v.ArraySchema<v.LooseObjectSchema<{}, undefined>, undefined>, undefined>;
16
+ }, undefined>>;
17
+ //# sourceMappingURL=assets.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assets.d.ts","sourceRoot":"","sources":["../../../src/spec/operations/assets.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAM5B,eAAO,MAAM,WAAW,YAAI,SAAS,EAAE,kBAAkB,EAAE,UAAU,EAAE,aAAa,CAAU,CAAA;AAE9F,eAAO,MAAM,YAAY;;;;;;cAiBvB,CAAA;AAEF,eAAO,MAAM,WAAW;;;;;;cAkBtB,CAAA"}
@@ -0,0 +1,43 @@
1
+ import * as v from "valibot";
2
+ import { defineOperation } from "../define.js";
3
+ /** Sent by `max serve` after each login, as a web tab does (`MAX-52`); the answer is kept only for its sync value. */
4
+ const recorded = "web.max.ru tab, recorded 2026-09-25 (`docs_ai/captures/2026-09-25-web-tab-2.jsonl`)";
5
+ export const ASSET_TYPES = ["STICKER", "FAVORITE_STICKER", "REACTION", "ANIMOJI_SET"];
6
+ export const assetsUpdate = defineOperation({
7
+ name: "assets.update",
8
+ constant: "ASSETS_UPDATE",
9
+ opcode: 27,
10
+ auth: true,
11
+ guard: null,
12
+ request: v.strictObject({ type: v.picklist(ASSET_TYPES), sync: v.number() }),
13
+ response: v.looseObject({ sync: v.optional(v.number()), sections: v.optional(v.array(v.unknown())) }),
14
+ provenance: {
15
+ confidence: "measured",
16
+ sources: [
17
+ recorded,
18
+ "PyMax 53103f0 names it `ASSETS_UPDATE` and never sends it",
19
+ "`STICKER` answer measured 2026-10-08 on test account B: `{sync, sections: [{id, type, title, stickerSets: [ids]}], stickersOrder}`",
20
+ ],
21
+ notes: "The tab sends the four types in this order, each with the `sync` its previous answer carried.",
22
+ },
23
+ });
24
+ export const assetsByIds = defineOperation({
25
+ name: "assets.byIds",
26
+ constant: "ASSETS_GET_BY_IDS",
27
+ opcode: 28,
28
+ auth: true,
29
+ guard: null,
30
+ request: v.strictObject({ type: v.picklist(["STICKER_SET", "STICKER"]), ids: v.array(v.number()) }),
31
+ response: v.looseObject({
32
+ stickerSets: v.optional(v.array(v.looseObject({}))),
33
+ stickers: v.optional(v.array(v.looseObject({}))),
34
+ }),
35
+ provenance: {
36
+ confidence: "measured",
37
+ sources: [
38
+ 'web.max.ru chunk `_app/immutable/chunks/Cdo8IOYe.js`, read 2026-10-08: `send(28, {type: "STICKER_SET" | "STICKER", ids})`',
39
+ "measured 2026-10-08 on test account B: a set is `{id, name, iconUrl, updateTime, stickers: [ids], link}`, a sticker `{id, width, height, tags, url, lottieUrl, updateTime, type, setId, authorType, fileId}`",
40
+ ],
41
+ },
42
+ });
43
+ //# sourceMappingURL=assets.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assets.js","sourceRoot":"","sources":["../../../src/spec/operations/assets.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAC5B,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAE9C,sHAAsH;AACtH,MAAM,QAAQ,GAAG,qFAAqF,CAAA;AAEtG,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,SAAS,EAAE,kBAAkB,EAAE,UAAU,EAAE,aAAa,CAAU,CAAA;AAE9F,MAAM,CAAC,MAAM,YAAY,GAAG,eAAe,CAAC;IAC1C,IAAI,EAAE,eAAe;IACrB,QAAQ,EAAE,eAAe;IACzB,MAAM,EAAE,EAAE;IACV,IAAI,EAAE,IAAI;IACV,KAAK,EAAE,IAAI;IACX,OAAO,EAAE,CAAC,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC;IAC5E,QAAQ,EAAE,CAAC,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC;IACrG,UAAU,EAAE;QACV,UAAU,EAAE,UAAU;QACtB,OAAO,EAAE;YACP,QAAQ;YACR,2DAA2D;YAC3D,oIAAoI;SACrI;QACD,KAAK,EAAE,+FAA+F;KACvG;CACF,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,WAAW,GAAG,eAAe,CAAC;IACzC,IAAI,EAAE,cAAc;IACpB,QAAQ,EAAE,mBAAmB;IAC7B,MAAM,EAAE,EAAE;IACV,IAAI,EAAE,IAAI;IACV,KAAK,EAAE,IAAI;IACX,OAAO,EAAE,CAAC,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC;IACnG,QAAQ,EAAE,CAAC,CAAC,WAAW,CAAC;QACtB,WAAW,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC;QACnD,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC;KACjD,CAAC;IACF,UAAU,EAAE;QACV,UAAU,EAAE,UAAU;QACtB,OAAO,EAAE;YACP,2HAA2H;YAC3H,8MAA8M;SAC/M;KACF;CACF,CAAC,CAAA"}
@@ -0,0 +1,15 @@
1
+ import * as v from "valibot";
2
+ export declare const attachmentsFile: import("../define.js").Operation<v.StrictObjectSchema<{
3
+ readonly chatId: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.RegexAction<string, "an id is a whole number written as a string">, v.TransformAction<string, bigint>]>;
4
+ readonly messageId: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.RegexAction<string, "an id is a whole number written as a string">, v.TransformAction<string, bigint>]>;
5
+ readonly fileId: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.RegexAction<string, "an id is a whole number written as a string">, v.TransformAction<string, bigint>]>;
6
+ }, undefined>, v.LooseObjectSchema<{
7
+ readonly url: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
8
+ readonly unsafe: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
9
+ }, undefined>>;
10
+ export declare const attachmentsVideo: import("../define.js").Operation<v.StrictObjectSchema<{
11
+ readonly chatId: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.RegexAction<string, "an id is a whole number written as a string">, v.TransformAction<string, bigint>]>;
12
+ readonly messageId: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.RegexAction<string, "an id is a whole number written as a string">, v.TransformAction<string, bigint>]>;
13
+ readonly videoId: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.RegexAction<string, "an id is a whole number written as a string">, v.TransformAction<string, bigint>]>;
14
+ }, undefined>, v.LooseObjectSchema<{}, undefined>>;
15
+ //# sourceMappingURL=attachments.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"attachments.d.ts","sourceRoot":"","sources":["../../../src/spec/operations/attachments.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAI5B,eAAO,MAAM,eAAe;;;;;;;cAkB1B,CAAA;AAEF,eAAO,MAAM,gBAAgB;;;;kDAkB3B,CAAA"}
@@ -0,0 +1,40 @@
1
+ import * as v from "valibot";
2
+ import { defineOperation } from "../define.js";
3
+ import { id } from "../scalars.js";
4
+ export const attachmentsFile = defineOperation({
5
+ name: "attachments.file",
6
+ constant: "FILE_DOWNLOAD",
7
+ opcode: 88,
8
+ auth: true,
9
+ request: v.strictObject({
10
+ chatId: id(),
11
+ messageId: id(),
12
+ fileId: id(),
13
+ }),
14
+ response: v.looseObject({ url: v.optional(v.string()), unsafe: v.optional(v.boolean()) }),
15
+ guard: null,
16
+ provenance: {
17
+ confidence: "measured",
18
+ sources: ["measured against MAX 2026-09-23 (`pnpm probe:download`)", "tsmax getFileById", "PyMax get_file_by_id"],
19
+ notes: "A file attachment carries `fileId` and no link; this answers `{unsafe, url}`, and the link opens without credentials.",
20
+ },
21
+ });
22
+ export const attachmentsVideo = defineOperation({
23
+ name: "attachments.video",
24
+ constant: "VIDEO_PLAY",
25
+ opcode: 83,
26
+ auth: true,
27
+ request: v.strictObject({
28
+ chatId: id(),
29
+ messageId: id(),
30
+ videoId: id(),
31
+ }),
32
+ response: v.looseObject({}),
33
+ guard: null,
34
+ provenance: {
35
+ confidence: "measured",
36
+ sources: ["measured against MAX 2026-09-23 (`pnpm probe:download`)", "tsmax getVideoById", "PyMax get_video_by_id"],
37
+ notes: "Answers `cache` and one key per rendition — `MP4_720`, `HLS`, `DASH`, `EXTERNAL` were seen. The MP4 link opens without credentials.",
38
+ },
39
+ });
40
+ //# sourceMappingURL=attachments.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"attachments.js","sourceRoot":"","sources":["../../../src/spec/operations/attachments.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAC5B,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAC9C,OAAO,EAAE,EAAE,EAAE,MAAM,eAAe,CAAA;AAElC,MAAM,CAAC,MAAM,eAAe,GAAG,eAAe,CAAC;IAC7C,IAAI,EAAE,kBAAkB;IACxB,QAAQ,EAAE,eAAe;IACzB,MAAM,EAAE,EAAE;IACV,IAAI,EAAE,IAAI;IACV,OAAO,EAAE,CAAC,CAAC,YAAY,CAAC;QACtB,MAAM,EAAE,EAAE,EAAE;QACZ,SAAS,EAAE,EAAE,EAAE;QACf,MAAM,EAAE,EAAE,EAAE;KACb,CAAC;IACF,QAAQ,EAAE,CAAC,CAAC,WAAW,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;IACzF,KAAK,EAAE,IAAI;IACX,UAAU,EAAE;QACV,UAAU,EAAE,UAAU;QACtB,OAAO,EAAE,CAAC,yDAAyD,EAAE,mBAAmB,EAAE,sBAAsB,CAAC;QACjH,KAAK,EACH,uHAAuH;KAC1H;CACF,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAG,eAAe,CAAC;IAC9C,IAAI,EAAE,mBAAmB;IACzB,QAAQ,EAAE,YAAY;IACtB,MAAM,EAAE,EAAE;IACV,IAAI,EAAE,IAAI;IACV,OAAO,EAAE,CAAC,CAAC,YAAY,CAAC;QACtB,MAAM,EAAE,EAAE,EAAE;QACZ,SAAS,EAAE,EAAE,EAAE;QACf,OAAO,EAAE,EAAE,EAAE;KACd,CAAC;IACF,QAAQ,EAAE,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC;IAC3B,KAAK,EAAE,IAAI;IACX,UAAU,EAAE;QACV,UAAU,EAAE,UAAU;QACtB,OAAO,EAAE,CAAC,yDAAyD,EAAE,oBAAoB,EAAE,uBAAuB,CAAC;QACnH,KAAK,EACH,qIAAqI;KACxI;CACF,CAAC,CAAA"}
@@ -0,0 +1,7 @@
1
+ import * as v from "valibot";
2
+ export declare const bannersList: import("../define.js").Operation<v.StrictObjectSchema<{
3
+ readonly bannersSync: v.NumberSchema<undefined>;
4
+ }, undefined>, v.LooseObjectSchema<{
5
+ readonly banners: v.OptionalSchema<v.ArraySchema<v.UnknownSchema, undefined>, undefined>;
6
+ }, undefined>>;
7
+ //# sourceMappingURL=banners.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"banners.d.ts","sourceRoot":"","sources":["../../../src/spec/operations/banners.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAM5B,eAAO,MAAM,WAAW;;;;cAUtB,CAAA"}
@@ -0,0 +1,16 @@
1
+ import * as v from "valibot";
2
+ import { defineOperation } from "../define.js";
3
+ /** Sent by `max serve` after each login, as a web tab does (`MAX-52`); the answer is kept only for its sync value. */
4
+ const recorded = "web.max.ru tab, recorded 2026-09-25 (`docs_ai/captures/2026-09-25-web-tab-2.jsonl`)";
5
+ export const bannersList = defineOperation({
6
+ name: "banners.list",
7
+ constant: "BANNERS_GET",
8
+ opcode: 302,
9
+ auth: true,
10
+ guard: null,
11
+ /** Always 0 — the tab sent 0 on its first login and again on the next. */
12
+ request: v.strictObject({ bannersSync: v.number() }),
13
+ response: v.looseObject({ banners: v.optional(v.array(v.unknown())) }),
14
+ provenance: { confidence: "observed", sources: [recorded, "PyMax 53103f0 names it `BANNERS_GET`"] },
15
+ });
16
+ //# sourceMappingURL=banners.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"banners.js","sourceRoot":"","sources":["../../../src/spec/operations/banners.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAC5B,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAE9C,sHAAsH;AACtH,MAAM,QAAQ,GAAG,qFAAqF,CAAA;AAEtG,MAAM,CAAC,MAAM,WAAW,GAAG,eAAe,CAAC;IACzC,IAAI,EAAE,cAAc;IACpB,QAAQ,EAAE,aAAa;IACvB,MAAM,EAAE,GAAG;IACX,IAAI,EAAE,IAAI;IACV,KAAK,EAAE,IAAI;IACX,0EAA0E;IAC1E,OAAO,EAAE,CAAC,CAAC,YAAY,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC;IACpD,QAAQ,EAAE,CAAC,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC;IACtE,UAAU,EAAE,EAAE,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC,QAAQ,EAAE,sCAAsC,CAAC,EAAE;CACpG,CAAC,CAAA"}
@@ -0,0 +1,8 @@
1
+ import * as v from "valibot";
2
+ export declare const callsHistory: import("../define.js").Operation<v.StrictObjectSchema<{
3
+ readonly callHistorySync: v.NumberSchema<undefined>;
4
+ }, undefined>, v.LooseObjectSchema<{
5
+ readonly callHistoryItems: v.OptionalSchema<v.ArraySchema<v.UnknownSchema, undefined>, undefined>;
6
+ readonly callHistorySync: v.OptionalSchema<v.NumberSchema<undefined>, undefined>;
7
+ }, undefined>>;
8
+ //# sourceMappingURL=calls.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"calls.d.ts","sourceRoot":"","sources":["../../../src/spec/operations/calls.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAM5B,eAAO,MAAM,YAAY;;;;;cAoBvB,CAAA"}
@@ -0,0 +1,25 @@
1
+ import * as v from "valibot";
2
+ import { defineOperation } from "../define.js";
3
+ /** Sent by `max serve` after each login, as a web tab does (`MAX-52`); the answer is kept only for its sync value. */
4
+ const recorded = "web.max.ru tab, recorded 2026-09-25 (`docs_ai/captures/2026-09-25-web-tab-2.jsonl`)";
5
+ export const callsHistory = defineOperation({
6
+ name: "calls.history",
7
+ constant: "CALL_HISTORY",
8
+ opcode: 163,
9
+ auth: true,
10
+ guard: null,
11
+ request: v.strictObject({ callHistorySync: v.number() }),
12
+ response: v.looseObject({
13
+ callHistoryItems: v.optional(v.array(v.unknown())),
14
+ callHistorySync: v.optional(v.number()),
15
+ }),
16
+ provenance: {
17
+ confidence: "measured",
18
+ sources: [
19
+ recorded,
20
+ "answer measured 2026-10-08 on test account B: `{callHistoryItems, callHistorySync, reset}`; an item is `{historyId, callId, callerId, chatId, messageId, callType, hangupType, time, durationMs}`",
21
+ ],
22
+ notes: "`callHistorySync: 0` answers the history from the start. `hangupType` is `HUNGUP`, `MISSED`, `REJECTED` or `CANCELED`, as web.max.ru names them (chunk `Cdo8IOYe`, 2026-10-08).",
23
+ },
24
+ });
25
+ //# sourceMappingURL=calls.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"calls.js","sourceRoot":"","sources":["../../../src/spec/operations/calls.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAC5B,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAE9C,sHAAsH;AACtH,MAAM,QAAQ,GAAG,qFAAqF,CAAA;AAEtG,MAAM,CAAC,MAAM,YAAY,GAAG,eAAe,CAAC;IAC1C,IAAI,EAAE,eAAe;IACrB,QAAQ,EAAE,cAAc;IACxB,MAAM,EAAE,GAAG;IACX,IAAI,EAAE,IAAI;IACV,KAAK,EAAE,IAAI;IACX,OAAO,EAAE,CAAC,CAAC,YAAY,CAAC,EAAE,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC;IACxD,QAAQ,EAAE,CAAC,CAAC,WAAW,CAAC;QACtB,gBAAgB,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;QAClD,eAAe,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;KACxC,CAAC;IACF,UAAU,EAAE;QACV,UAAU,EAAE,UAAU;QACtB,OAAO,EAAE;YACP,QAAQ;YACR,mMAAmM;SACpM;QACD,KAAK,EACH,iLAAiL;KACpL;CACF,CAAC,CAAA"}