@leemour/max-cli 0.10.0 → 0.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (249) hide show
  1. package/README.md +25 -4
  2. package/dist/cache/index.d.ts.map +1 -1
  3. package/dist/cache/index.js +10 -4
  4. package/dist/cache/index.js.map +1 -1
  5. package/dist/client.d.ts +35 -2
  6. package/dist/client.d.ts.map +1 -1
  7. package/dist/client.js +178 -44
  8. package/dist/client.js.map +1 -1
  9. package/dist/commands/backup.d.ts.map +1 -1
  10. package/dist/commands/backup.js +6 -2
  11. package/dist/commands/backup.js.map +1 -1
  12. package/dist/commands/cache.d.ts.map +1 -1
  13. package/dist/commands/cache.js +6 -5
  14. package/dist/commands/cache.js.map +1 -1
  15. package/dist/commands/chats.js +2 -2
  16. package/dist/commands/chats.js.map +1 -1
  17. package/dist/commands/complete.d.ts.map +1 -1
  18. package/dist/commands/complete.js +28 -22
  19. package/dist/commands/complete.js.map +1 -1
  20. package/dist/commands/config.d.ts.map +1 -1
  21. package/dist/commands/config.js +5 -1
  22. package/dist/commands/config.js.map +1 -1
  23. package/dist/commands/context.d.ts +4 -0
  24. package/dist/commands/context.d.ts.map +1 -1
  25. package/dist/commands/context.js +6 -14
  26. package/dist/commands/context.js.map +1 -1
  27. package/dist/commands/doctor.js +51 -39
  28. package/dist/commands/doctor.js.map +1 -1
  29. package/dist/commands/mcp.js +3 -3
  30. package/dist/commands/mcp.js.map +1 -1
  31. package/dist/commands/messages.d.ts.map +1 -1
  32. package/dist/commands/messages.js +6 -4
  33. package/dist/commands/messages.js.map +1 -1
  34. package/dist/commands/models.d.ts.map +1 -1
  35. package/dist/commands/models.js +29 -23
  36. package/dist/commands/models.js.map +1 -1
  37. package/dist/commands/recipients.d.ts.map +1 -1
  38. package/dist/commands/recipients.js +25 -17
  39. package/dist/commands/recipients.js.map +1 -1
  40. package/dist/commands/sends.d.ts.map +1 -1
  41. package/dist/commands/sends.js +8 -6
  42. package/dist/commands/sends.js.map +1 -1
  43. package/dist/commands/server.d.ts.map +1 -1
  44. package/dist/commands/server.js +43 -35
  45. package/dist/commands/server.js.map +1 -1
  46. package/dist/commands/session.d.ts.map +1 -1
  47. package/dist/commands/session.js +6 -10
  48. package/dist/commands/session.js.map +1 -1
  49. package/dist/commands/watch.d.ts +17 -0
  50. package/dist/commands/watch.d.ts.map +1 -1
  51. package/dist/commands/watch.js +73 -38
  52. package/dist/commands/watch.js.map +1 -1
  53. package/dist/config.d.ts +1 -1
  54. package/dist/config.d.ts.map +1 -1
  55. package/dist/config.js +18 -2
  56. package/dist/config.js.map +1 -1
  57. package/dist/diagnose.d.ts +4 -3
  58. package/dist/diagnose.d.ts.map +1 -1
  59. package/dist/diagnose.js +4 -4
  60. package/dist/diagnose.js.map +1 -1
  61. package/dist/domain/models.d.ts +20 -0
  62. package/dist/domain/models.d.ts.map +1 -1
  63. package/dist/domain/models.js.map +1 -1
  64. package/dist/download.d.ts +22 -3
  65. package/dist/download.d.ts.map +1 -1
  66. package/dist/download.js +133 -27
  67. package/dist/download.js.map +1 -1
  68. package/dist/export.d.ts +3 -0
  69. package/dist/export.d.ts.map +1 -1
  70. package/dist/export.js +13 -9
  71. package/dist/export.js.map +1 -1
  72. package/dist/generated/client.generated.d.ts +9 -0
  73. package/dist/generated/client.generated.d.ts.map +1 -1
  74. package/dist/generated/client.generated.js +9 -0
  75. package/dist/generated/client.generated.js.map +1 -1
  76. package/dist/generated/opcodes.generated.d.ts +3 -0
  77. package/dist/generated/opcodes.generated.d.ts.map +1 -1
  78. package/dist/generated/opcodes.generated.js +3 -0
  79. package/dist/generated/opcodes.generated.js.map +1 -1
  80. package/dist/generated/operations.generated.d.ts +20 -0
  81. package/dist/generated/operations.generated.d.ts.map +1 -1
  82. package/dist/generated/operations.generated.js +6 -0
  83. package/dist/generated/operations.generated.js.map +1 -1
  84. package/dist/mcp/confirm.d.ts +21 -9
  85. package/dist/mcp/confirm.d.ts.map +1 -1
  86. package/dist/mcp/confirm.js +55 -29
  87. package/dist/mcp/confirm.js.map +1 -1
  88. package/dist/mcp/instructions.js +3 -3
  89. package/dist/mcp/instructions.js.map +1 -1
  90. package/dist/mcp/prompts.d.ts +7 -0
  91. package/dist/mcp/prompts.d.ts.map +1 -0
  92. package/dist/mcp/prompts.js +45 -0
  93. package/dist/mcp/prompts.js.map +1 -0
  94. package/dist/mcp/resources.d.ts +12 -0
  95. package/dist/mcp/resources.d.ts.map +1 -0
  96. package/dist/mcp/resources.js +42 -0
  97. package/dist/mcp/resources.js.map +1 -0
  98. package/dist/mcp/server.d.ts.map +1 -1
  99. package/dist/mcp/server.js +4 -0
  100. package/dist/mcp/server.js.map +1 -1
  101. package/dist/mcp/tools.d.ts.map +1 -1
  102. package/dist/mcp/tools.js +143 -15
  103. package/dist/mcp/tools.js.map +1 -1
  104. package/dist/output.d.ts.map +1 -1
  105. package/dist/output.js +24 -2
  106. package/dist/output.js.map +1 -1
  107. package/dist/program.d.ts.map +1 -1
  108. package/dist/program.js +51 -5
  109. package/dist/program.js.map +1 -1
  110. package/dist/protocol/connection.d.ts +2 -0
  111. package/dist/protocol/connection.d.ts.map +1 -1
  112. package/dist/protocol/connection.js +27 -5
  113. package/dist/protocol/connection.js.map +1 -1
  114. package/dist/protocol/frame.d.ts +2 -0
  115. package/dist/protocol/frame.d.ts.map +1 -1
  116. package/dist/protocol/frame.js +3 -1
  117. package/dist/protocol/frame.js.map +1 -1
  118. package/dist/protocol/lz4.js +8 -5
  119. package/dist/protocol/lz4.js.map +1 -1
  120. package/dist/rendering/messages.js +9 -10
  121. package/dist/rendering/messages.js.map +1 -1
  122. package/dist/report.d.ts +10 -6
  123. package/dist/report.d.ts.map +1 -1
  124. package/dist/report.js +45 -11
  125. package/dist/report.js.map +1 -1
  126. package/dist/resolve.d.ts +4 -3
  127. package/dist/resolve.d.ts.map +1 -1
  128. package/dist/resolve.js +9 -10
  129. package/dist/resolve.js.map +1 -1
  130. package/dist/runs/recording.d.ts +1 -0
  131. package/dist/runs/recording.d.ts.map +1 -1
  132. package/dist/runs/recording.js +13 -0
  133. package/dist/runs/recording.js.map +1 -1
  134. package/dist/sends/guard.d.ts +35 -4
  135. package/dist/sends/guard.d.ts.map +1 -1
  136. package/dist/sends/guard.js +128 -28
  137. package/dist/sends/guard.js.map +1 -1
  138. package/dist/sends/journal.d.ts +17 -3
  139. package/dist/sends/journal.d.ts.map +1 -1
  140. package/dist/sends/journal.js +62 -2
  141. package/dist/sends/journal.js.map +1 -1
  142. package/dist/sends/recipients.d.ts +3 -1
  143. package/dist/sends/recipients.d.ts.map +1 -1
  144. package/dist/sends/recipients.js +7 -2
  145. package/dist/sends/recipients.js.map +1 -1
  146. package/dist/server/lines.d.ts +8 -2
  147. package/dist/server/lines.d.ts.map +1 -1
  148. package/dist/server/lines.js +13 -2
  149. package/dist/server/lines.js.map +1 -1
  150. package/dist/server/server-connection.d.ts +9 -6
  151. package/dist/server/server-connection.d.ts.map +1 -1
  152. package/dist/server/server-connection.js +16 -7
  153. package/dist/server/server-connection.js.map +1 -1
  154. package/dist/server/server.d.ts +11 -4
  155. package/dist/server/server.d.ts.map +1 -1
  156. package/dist/server/server.js +132 -20
  157. package/dist/server/server.js.map +1 -1
  158. package/dist/server/start.d.ts +2 -0
  159. package/dist/server/start.d.ts.map +1 -1
  160. package/dist/server/start.js +8 -3
  161. package/dist/server/start.js.map +1 -1
  162. package/dist/session/handshake.d.ts +12 -1
  163. package/dist/session/handshake.d.ts.map +1 -1
  164. package/dist/session/handshake.js +4 -2
  165. package/dist/session/handshake.js.map +1 -1
  166. package/dist/session/prompt.d.ts.map +1 -1
  167. package/dist/session/prompt.js +7 -1
  168. package/dist/session/prompt.js.map +1 -1
  169. package/dist/session/store.d.ts +9 -2
  170. package/dist/session/store.d.ts.map +1 -1
  171. package/dist/session/store.js +19 -4
  172. package/dist/session/store.js.map +1 -1
  173. package/dist/spec/define.d.ts +12 -0
  174. package/dist/spec/define.d.ts.map +1 -1
  175. package/dist/spec/define.js.map +1 -1
  176. package/dist/spec/guards.d.ts +16 -0
  177. package/dist/spec/guards.d.ts.map +1 -0
  178. package/dist/spec/guards.js +30 -0
  179. package/dist/spec/guards.js.map +1 -0
  180. package/dist/spec/index.d.ts.map +1 -1
  181. package/dist/spec/index.js +6 -0
  182. package/dist/spec/index.js.map +1 -1
  183. package/dist/spec/operations/account.d.ts.map +1 -1
  184. package/dist/spec/operations/account.js +3 -0
  185. package/dist/spec/operations/account.js.map +1 -1
  186. package/dist/spec/operations/assets.d.ts +10 -0
  187. package/dist/spec/operations/assets.d.ts.map +1 -0
  188. package/dist/spec/operations/assets.js +20 -0
  189. package/dist/spec/operations/assets.js.map +1 -0
  190. package/dist/spec/operations/attachments.d.ts.map +1 -1
  191. package/dist/spec/operations/attachments.js +2 -0
  192. package/dist/spec/operations/attachments.js.map +1 -1
  193. package/dist/spec/operations/banners.d.ts +7 -0
  194. package/dist/spec/operations/banners.d.ts.map +1 -0
  195. package/dist/spec/operations/banners.js +16 -0
  196. package/dist/spec/operations/banners.js.map +1 -0
  197. package/dist/spec/operations/calls.d.ts +8 -0
  198. package/dist/spec/operations/calls.d.ts.map +1 -0
  199. package/dist/spec/operations/calls.js +18 -0
  200. package/dist/spec/operations/calls.js.map +1 -0
  201. package/dist/spec/operations/chats.d.ts.map +1 -1
  202. package/dist/spec/operations/chats.js +46 -0
  203. package/dist/spec/operations/chats.js.map +1 -1
  204. package/dist/spec/operations/contacts.d.ts.map +1 -1
  205. package/dist/spec/operations/contacts.js +8 -0
  206. package/dist/spec/operations/contacts.js.map +1 -1
  207. package/dist/spec/operations/folders.d.ts.map +1 -1
  208. package/dist/spec/operations/folders.js +5 -0
  209. package/dist/spec/operations/folders.js.map +1 -1
  210. package/dist/spec/operations/login.d.ts.map +1 -1
  211. package/dist/spec/operations/login.js +6 -0
  212. package/dist/spec/operations/login.js.map +1 -1
  213. package/dist/spec/operations/messages.d.ts.map +1 -1
  214. package/dist/spec/operations/messages.js +50 -0
  215. package/dist/spec/operations/messages.js.map +1 -1
  216. package/dist/spec/operations/session.d.ts +5 -1
  217. package/dist/spec/operations/session.d.ts.map +1 -1
  218. package/dist/spec/operations/session.js +9 -1
  219. package/dist/spec/operations/session.js.map +1 -1
  220. package/dist/spec/operations/uploads.d.ts.map +1 -1
  221. package/dist/spec/operations/uploads.js +2 -0
  222. package/dist/spec/operations/uploads.js.map +1 -1
  223. package/dist/transcribe/index.d.ts.map +1 -1
  224. package/dist/transcribe/index.js +4 -1
  225. package/dist/transcribe/index.js.map +1 -1
  226. package/dist/transcribe/install.d.ts +3 -1
  227. package/dist/transcribe/install.d.ts.map +1 -1
  228. package/dist/transcribe/install.js +24 -1
  229. package/dist/transcribe/install.js.map +1 -1
  230. package/dist/upload.d.ts +3 -1
  231. package/dist/upload.d.ts.map +1 -1
  232. package/dist/upload.js +34 -4
  233. package/dist/upload.js.map +1 -1
  234. package/dist/version.d.ts +1 -1
  235. package/dist/version.js +1 -1
  236. package/package.json +11 -11
  237. package/skills/max-cli/SKILL.md +6 -2
  238. package/dist/testing/mock-max.d.ts +0 -49
  239. package/dist/testing/mock-max.d.ts.map +0 -1
  240. package/dist/testing/mock-max.js +0 -80
  241. package/dist/testing/mock-max.js.map +0 -1
  242. package/dist/testing/sandbox.d.ts +0 -2
  243. package/dist/testing/sandbox.d.ts.map +0 -1
  244. package/dist/testing/sandbox.js +0 -36
  245. package/dist/testing/sandbox.js.map +0 -1
  246. package/dist/testing/unscripted.d.ts +0 -2
  247. package/dist/testing/unscripted.d.ts.map +0 -1
  248. package/dist/testing/unscripted.js +0 -18
  249. package/dist/testing/unscripted.js.map +0 -1
@@ -1,4 +1,4 @@
1
- import { type KeyringStore } from "@leemour/cli-core";
1
+ import { type CredentialSource, type KeyringStore } from "@leemour/cli-core";
2
2
  /**
3
3
  * What a MAX session actually is: a token, and an identity for this installation.
4
4
  *
@@ -44,6 +44,8 @@ export declare class SessionStore {
44
44
  constructor({ profile, env, keyring, configDir, stateDir }?: SessionStoreOptions);
45
45
  /** `undefined` means nobody has logged in on this profile. */
46
46
  readToken(): string | undefined;
47
+ /** Where `readToken` found it: `MAX_TOKEN`, the keyring, or the file that stands in for one. */
48
+ tokenSource(): CredentialSource | undefined;
47
49
  writeToken(token: string): void;
48
50
  /**
49
51
  * Reads the state, inventing a device identity the first time and keeping it thereafter.
@@ -59,7 +61,12 @@ export declare class SessionStore {
59
61
  writeState(state: SessionState): void;
60
62
  /** Forgets everything about this profile. Returns whether there was a token to forget. */
61
63
  forget(): boolean;
62
- /** Where `max serve` listens for this profile. Beside the state file, so a sandbox moves both. */
64
+ /**
65
+ * Where `max serve` listens for this profile. Beside the state file, so a sandbox moves both. On
66
+ * Windows a socket cannot be a file, so it is a named pipe named after the state directory.
67
+ */
63
68
  socketPath(): string;
69
+ /** A file of the server's beside the state file: `<profile>.sock.refused`, `<profile>.serve.log`. */
70
+ serverFile(suffix: string): string;
64
71
  }
65
72
  //# sourceMappingURL=store.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/session/store.ts"],"names":[],"mappings":"AAGA,OAAO,EAAe,KAAK,YAAY,EAAmD,MAAM,mBAAmB,CAAA;AAEnH;;;;;;;GAOG;AACH,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,MAAM,CAAA;IAChB,6FAA6F;IAC7F,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,oGAAoG;IACpG,MAAM,EAAE,MAAM,CAAA;IACd,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,uFAAuF;IACvF,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,qGAAqG;IACrG,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,2CAA2C;IAC3C,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAC1B;AAED;;;GAGG;AACH,eAAO,MAAM,eAAe,UAAqE,CAAA;AAEjG,qEAAqE;AACrE,eAAO,MAAM,gBAAgB,UAAW,YAAY,mBAAqB,MAAM,GAAG,SACqC,CAAA;AAEvH,eAAO,MAAM,gBAAgB,UAAW,YAAY,mBAAqB,YAIxE,CAAA;AAED,eAAO,MAAM,iBAAiB,kDAAmD,YAAY,KAAG,YAAqB,CAAA;AAErH,MAAM,WAAW,mBAAmB;IAClC,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAA;IACvB,OAAO,CAAC,EAAE,YAAY,CAAA;IACtB,8EAA8E;IAC9E,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAID,qBAAa,YAAY;;IACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IAIxB,YAAY,EAAE,OAAmB,EAAE,GAAiB,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAE,mBAAwB,EAa7G;IAED,8DAA8D;IAC9D,SAAS,IAAI,MAAM,GAAG,SAAS,CAE9B;IAED,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAE9B;IAED;;;;;;;OAOG;IACH,SAAS,IAAI,YAAY,CAaxB;IAED,kHAAkH;IAClH,WAAW,IAAI,OAAO,CAOrB;IAED,UAAU,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,CAEpC;IAED,0FAA0F;IAC1F,MAAM,IAAI,OAAO,CAShB;IAED,kGAAkG;IAClG,UAAU,IAAI,MAAM,CAEnB;CAKF"}
1
+ {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/session/store.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,KAAK,gBAAgB,EAErB,KAAK,YAAY,EAIlB,MAAM,mBAAmB,CAAA;AAE1B;;;;;;;GAOG;AACH,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,MAAM,CAAA;IAChB,6FAA6F;IAC7F,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,oGAAoG;IACpG,MAAM,EAAE,MAAM,CAAA;IACd,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,uFAAuF;IACvF,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,qGAAqG;IACrG,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,2CAA2C;IAC3C,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAC1B;AAED;;;GAGG;AACH,eAAO,MAAM,eAAe,UAAqE,CAAA;AAEjG,qEAAqE;AACrE,eAAO,MAAM,gBAAgB,UAAW,YAAY,mBAAqB,MAAM,GAAG,SACqC,CAAA;AAEvH,eAAO,MAAM,gBAAgB,UAAW,YAAY,mBAAqB,YAIxE,CAAA;AAED,eAAO,MAAM,iBAAiB,kDAAmD,YAAY,KAAG,YAAqB,CAAA;AAErH,MAAM,WAAW,mBAAmB;IAClC,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAA;IACvB,OAAO,CAAC,EAAE,YAAY,CAAA;IACtB,8EAA8E;IAC9E,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAID,qBAAa,YAAY;;IACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IAIxB,YAAY,EAAE,OAAmB,EAAE,GAAiB,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAE,mBAAwB,EAa7G;IAED,8DAA8D;IAC9D,SAAS,IAAI,MAAM,GAAG,SAAS,CAE9B;IAED,gGAAgG;IAChG,WAAW,IAAI,gBAAgB,GAAG,SAAS,CAE1C;IAED,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAE9B;IAED;;;;;;;OAOG;IACH,SAAS,IAAI,YAAY,CAaxB;IAED,kHAAkH;IAClH,WAAW,IAAI,OAAO,CAOrB;IAED,UAAU,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,CAEpC;IAED,0FAA0F;IAC1F,MAAM,IAAI,OAAO,CAShB;IAED;;;OAGG;IACH,UAAU,IAAI,MAAM,CAMnB;IAED,qGAAqG;IACrG,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAEjC;CAKF"}
@@ -1,7 +1,7 @@
1
- import { randomUUID } from "node:crypto";
1
+ import { createHash, randomUUID } from "node:crypto";
2
2
  import { readFileSync } from "node:fs";
3
3
  import { join } from "node:path";
4
- import { Credentials, pathsAreOverridden, resolvePaths, writeSecurely } from "@leemour/cli-core";
4
+ import { Credentials, pathsAreOverridden, resolvePaths, writeSecurely, } from "@leemour/cli-core";
5
5
  /**
6
6
  * **How long a profile stays out after each refusal in a row** (owner, `NEED-265`). In PyMax a
7
7
  * login retried after the limit error kept the account locked (PyMax #106), so the wait grows.
@@ -38,6 +38,10 @@ export class SessionStore {
38
38
  readToken() {
39
39
  return this.#credentials.read(this.profile)?.secret;
40
40
  }
41
+ /** Where `readToken` found it: `MAX_TOKEN`, the keyring, or the file that stands in for one. */
42
+ tokenSource() {
43
+ return this.#credentials.read(this.profile)?.source;
44
+ }
41
45
  writeToken(token) {
42
46
  this.#credentials.write(this.profile, token);
43
47
  }
@@ -88,9 +92,20 @@ export class SessionStore {
88
92
  }
89
93
  return had;
90
94
  }
91
- /** Where `max serve` listens for this profile. Beside the state file, so a sandbox moves both. */
95
+ /**
96
+ * Where `max serve` listens for this profile. Beside the state file, so a sandbox moves both. On
97
+ * Windows a socket cannot be a file, so it is a named pipe named after the state directory.
98
+ */
92
99
  socketPath() {
93
- return join(this.#stateDir, "profiles", `${this.profile}.sock`);
100
+ if (process.platform === "win32") {
101
+ const directory = createHash("sha256").update(this.#stateDir).digest("hex").slice(0, 16);
102
+ return `\\\\.\\pipe\\max-cli-${directory}-${this.profile}`;
103
+ }
104
+ return this.serverFile(".sock");
105
+ }
106
+ /** A file of the server's beside the state file: `<profile>.sock.refused`, `<profile>.serve.log`. */
107
+ serverFile(suffix) {
108
+ return join(this.#stateDir, "profiles", `${this.profile}${suffix}`);
94
109
  }
95
110
  #statePath() {
96
111
  return join(this.#stateDir, "profiles", `${this.profile}.json`);
@@ -1 +1 @@
1
- {"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/session/store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/session/store.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import * as v from "valibot";
2
2
  import type { Payload } from "../protocol/frame.js";
3
+ import type { SendEntry } from "../sends/journal.js";
3
4
  /**
4
5
  * How much we actually know about a shape.
5
6
  *
@@ -47,8 +48,19 @@ export interface Operation<TRequest extends v.GenericSchema = v.GenericSchema, T
47
48
  readonly request: TRequest;
48
49
  /** Loose: a response that gained a field must not break a command (§29). */
49
50
  readonly response: TResponse;
51
+ /**
52
+ * What the send guard is asked before this goes to MAX, read from the request as it goes on the
53
+ * wire — or `null` for an operation nobody else sees. Required, so a new operation cannot reach
54
+ * `max serve`'s socket unguarded because somebody forgot to say it writes.
55
+ */
56
+ readonly guard: ((request: Payload) => Guarded) | null;
50
57
  readonly provenance: Provenance;
51
58
  }
59
+ /** One guarded write as the journal will record it; the outcome comes after. */
60
+ export type Guarded = Omit<SendEntry, "at" | "profile" | "outcome" | "errorCode" | "kind"> & Required<Pick<SendEntry, "kind">> & {
61
+ /** Who a new group or an added member is: the recipient list is asked about each. Not journaled. */
62
+ personIds?: string[];
63
+ };
52
64
  /**
53
65
  * A number we know and will not send.
54
66
  *
@@ -1 +1 @@
1
- {"version":3,"file":"define.d.ts","sourceRoot":"","sources":["../../src/spec/define.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAC5B,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAA;AAEnD;;;;;;;;;;GAUG;AACH,MAAM,MAAM,UAAU;AACpB,4DAA4D;AAC1D,UAAU;AACZ,6EAA6E;GAC3E,WAAW;AACb,oCAAoC;GAClC,UAAU;AACZ,8DAA8D;GAC5D,UAAU;AACZ,gEAAgE;GAC9D,SAAS,CAAA;AAEb,MAAM,WAAW,UAAU;IACzB,UAAU,EAAE,UAAU,CAAA;IACtB,yFAAyF;IACzF,OAAO,EAAE,CAAC,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC,CAAA;IAC9B,2DAA2D;IAC3D,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,SAAS,CACxB,QAAQ,SAAS,CAAC,CAAC,aAAa,GAAG,CAAC,CAAC,aAAa,EAClD,SAAS,SAAS,CAAC,CAAC,aAAa,GAAG,CAAC,CAAC,aAAa;IAEnD,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAA;IAC1B,qGAAqG;IACrG,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB;;;;;OAKG;IACH,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,+CAA+C;IAC/C,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAA;IACtB,gEAAgE;IAChE,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAA;IAC1B,4EAA4E;IAC5E,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAA;IAC5B,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAA;CAChC;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAA;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,kFAAkF;IAClF,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAA;CAChC;AAED,MAAM,MAAM,KAAK,GAAG,SAAS,GAAG,WAAW,CAAA;AAE3C,eAAO,MAAM,eAAe,GAAI,QAAQ,SAAS,CAAC,CAAC,aAAa,EAAE,SAAS,SAAS,CAAC,CAAC,aAAa,aACtF,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,SAAS,CAAC,EAAE,MAAM,CAAC,KACtD,SAAS,CAAC,QAAQ,EAAE,SAAS,CAA0C,CAAA;AAE1E,eAAO,MAAM,aAAa,gBAAiB,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,KAAG,WAGrE,CAAA;AAEF,uEAAuE;AACvE,MAAM,MAAM,SAAS,CAAC,UAAU,SAAS,SAAS,IAAI,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAA;AAEzF,4DAA4D;AAC5D,MAAM,MAAM,aAAa,CAAC,UAAU,SAAS,SAAS,IAAI,CAAC,CAAC,WAAW,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAA;AAE9F,MAAM,MAAM,UAAU,CAAC,UAAU,SAAS,SAAS,IAAI,CAAC,CAAC,WAAW,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAA;AAE5F;;;;;;GAMG;AACH,eAAO,MAAM,YAAY,GAAI,UAAU,SAAS,SAAS,aAC5C,UAAU,SACd,SAAS,CAAC,UAAU,CAAC,KAC3B,OAQF,CAAA;AAaD;;;;;;GAMG;AACH,eAAO,MAAM,SAAS,UAAW;IAAE,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,KAAG,MAIrD,CAAA"}
1
+ {"version":3,"file":"define.d.ts","sourceRoot":"","sources":["../../src/spec/define.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"define.js","sourceRoot":"","sources":["../../src/spec/define.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAC5C,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AA8E5B,MAAM,CAAC,MAAM,eAAe,GAAG,CAC7B,SAAuD,EACvB,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,SAAS,EAAE,CAAC,CAAA;AAE1E,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,WAAsC,EAAe,EAAE,CAAC,CAAC;IACrF,IAAI,EAAE,aAAa;IACnB,GAAG,WAAW;CACf,CAAC,CAAA;AAUF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAC1B,SAAqB,EACrB,KAA4B,EACnB,EAAE;IACX,MAAM,MAAM,GAAG,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;IACpD,IAAI,MAAM,CAAC,OAAO;QAAE,OAAO,MAAM,CAAC,MAAiB,CAAA;IAEnD,MAAM,MAAM,GAAG,aAAa,CAAC,SAAS,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC;SAClE,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;SAChC,IAAI,CAAC,IAAI,CAAC,CAAA;IACb,MAAM,IAAI,QAAQ,CAAC,kBAAkB,EAAE,GAAG,SAAS,CAAC,IAAI,gCAAgC,MAAM,EAAE,CAAC,CAAA;AACnG,CAAC,CAAA;AAED;;;;GAIG;AACH,MAAM,aAAa,GAAG,CAAC,MAAuB,EAAE,KAAc,EAAE,MAAuC,EAAE,EAAE;IACzG,IAAI,CAAC,CAAC,SAAS,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC;QAAE,OAAO,MAAM,CAAA;IAC3E,MAAM,QAAQ,GAAI,MAAM,CAAC,OAA6B,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC,CAAA;IAC/G,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA;AAC5F,CAAC,CAAA;AAED;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,KAAyB,EAAU,EAAE;IAC7D,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAA;IACxD,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,IAAuB,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,IAAI,GAAG,CAAC,CAAC,CAAA;IAChF,OAAO,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,sBAAsB,CAAA;AAC1E,CAAC,CAAA"}
1
+ {"version":3,"file":"define.js","sourceRoot":"","sources":["../../src/spec/define.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAC5C,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AA4F5B,MAAM,CAAC,MAAM,eAAe,GAAG,CAC7B,SAAuD,EACvB,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,SAAS,EAAE,CAAC,CAAA;AAE1E,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,WAAsC,EAAe,EAAE,CAAC,CAAC;IACrF,IAAI,EAAE,aAAa;IACnB,GAAG,WAAW;CACf,CAAC,CAAA;AAUF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAC1B,SAAqB,EACrB,KAA4B,EACnB,EAAE;IACX,MAAM,MAAM,GAAG,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;IACpD,IAAI,MAAM,CAAC,OAAO;QAAE,OAAO,MAAM,CAAC,MAAiB,CAAA;IAEnD,MAAM,MAAM,GAAG,aAAa,CAAC,SAAS,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC;SAClE,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;SAChC,IAAI,CAAC,IAAI,CAAC,CAAA;IACb,MAAM,IAAI,QAAQ,CAAC,kBAAkB,EAAE,GAAG,SAAS,CAAC,IAAI,gCAAgC,MAAM,EAAE,CAAC,CAAA;AACnG,CAAC,CAAA;AAED;;;;GAIG;AACH,MAAM,aAAa,GAAG,CAAC,MAAuB,EAAE,KAAc,EAAE,MAAuC,EAAE,EAAE;IACzG,IAAI,CAAC,CAAC,SAAS,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC;QAAE,OAAO,MAAM,CAAA;IAC3E,MAAM,QAAQ,GAAI,MAAM,CAAC,OAA6B,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC,CAAA;IAC/G,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA;AAC5F,CAAC,CAAA;AAED;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,KAAyB,EAAU,EAAE;IAC7D,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAA;IACxD,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,IAAuB,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,IAAI,GAAG,CAAC,CAAC,CAAA;IAChF,OAAO,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,sBAAsB,CAAA;AAC1E,CAAC,CAAA"}
@@ -0,0 +1,16 @@
1
+ import { type Payload } from "../protocol/frame.js";
2
+ /**
3
+ * The chat a guarded request goes to. **Missing is a refusal, never `null`**: a `null` chat skips
4
+ * the recipient list, so only the shapes that create or join a chat may have one.
5
+ */
6
+ export declare const chatOf: (request: Payload, field?: string) => string;
7
+ export declare const messageOf: (request: Payload, field?: string) => {
8
+ messageId?: string;
9
+ };
10
+ export declare const objectOf: (value: unknown) => Payload;
11
+ export declare const countOf: (value: unknown) => number;
12
+ /** The people a request puts into a chat; one that cannot be read as an id is refused. */
13
+ export declare const peopleOf: (value: unknown) => string[];
14
+ /** A request that could be read as two different changes is refused rather than guarded as one of them. */
15
+ export declare const ambiguous: (operation: string) => never;
16
+ //# sourceMappingURL=guards.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"guards.d.ts","sourceRoot":"","sources":["../../src/spec/guards.ts"],"names":[],"mappings":"AACA,OAAO,EAAQ,KAAK,OAAO,EAAE,MAAM,sBAAsB,CAAA;AAEzD;;;GAGG;AACH,eAAO,MAAM,MAAM,YAAa,OAAO,qBAAqB,MAI3D,CAAA;AAED,eAAO,MAAM,SAAS,YAAa,OAAO,qBAAwB;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAGrF,CAAA;AAED,eAAO,MAAM,QAAQ,UAAW,OAAO,KAAG,OACsD,CAAA;AAEhG,eAAO,MAAM,OAAO,UAAW,OAAO,KAAG,MAAmD,CAAA;AAE5F,0FAA0F;AAC1F,eAAO,MAAM,QAAQ,UAAW,OAAO,KAAG,MAAM,EAM5C,CAAA;AAEJ,2GAA2G;AAC3G,eAAO,MAAM,SAAS,cAAe,MAAM,KAAG,KAE7C,CAAA"}
@@ -0,0 +1,30 @@
1
+ import { CliError } from "@leemour/cli-core";
2
+ import { asId } from "../protocol/frame.js";
3
+ /**
4
+ * The chat a guarded request goes to. **Missing is a refusal, never `null`**: a `null` chat skips
5
+ * the recipient list, so only the shapes that create or join a chat may have one.
6
+ */
7
+ export const chatOf = (request, field = "chatId") => {
8
+ const chatId = asId(request[field]);
9
+ if (chatId === undefined)
10
+ throw new CliError("validation_error", `a guarded request without its ${field}`);
11
+ return chatId;
12
+ };
13
+ export const messageOf = (request, field = "messageId") => {
14
+ const messageId = asId(request[field]);
15
+ return messageId === undefined ? {} : { messageId };
16
+ };
17
+ export const objectOf = (value) => typeof value === "object" && value !== null && !Array.isArray(value) ? value : {};
18
+ export const countOf = (value) => (Array.isArray(value) ? value.length : 0);
19
+ /** The people a request puts into a chat; one that cannot be read as an id is refused. */
20
+ export const peopleOf = (value) => (Array.isArray(value) ? value : []).map((one) => {
21
+ const person = asId(one);
22
+ if (person === undefined)
23
+ throw new CliError("validation_error", "a guarded request with a person that is not an id");
24
+ return person;
25
+ });
26
+ /** A request that could be read as two different changes is refused rather than guarded as one of them. */
27
+ export const ambiguous = (operation) => {
28
+ throw new CliError("validation_error", `${operation}: one change per request`);
29
+ };
30
+ //# sourceMappingURL=guards.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"guards.js","sourceRoot":"","sources":["../../src/spec/guards.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAC5C,OAAO,EAAE,IAAI,EAAgB,MAAM,sBAAsB,CAAA;AAEzD;;;GAGG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,OAAgB,EAAE,KAAK,GAAG,QAAQ,EAAU,EAAE;IACnE,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAA;IACnC,IAAI,MAAM,KAAK,SAAS;QAAE,MAAM,IAAI,QAAQ,CAAC,kBAAkB,EAAE,iCAAiC,KAAK,EAAE,CAAC,CAAA;IAC1G,OAAO,MAAM,CAAA;AACf,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,OAAgB,EAAE,KAAK,GAAG,WAAW,EAA0B,EAAE;IACzF,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAA;IACtC,OAAO,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAA;AACrD,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,KAAc,EAAW,EAAE,CAClD,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAE,KAAiB,CAAC,CAAC,CAAC,EAAE,CAAA;AAEhG,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,KAAc,EAAU,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AAE5F,0FAA0F;AAC1F,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,KAAc,EAAY,EAAE,CACnD,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;IAC9C,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAA;IACxB,IAAI,MAAM,KAAK,SAAS;QACtB,MAAM,IAAI,QAAQ,CAAC,kBAAkB,EAAE,mDAAmD,CAAC,CAAA;IAC7F,OAAO,MAAM,CAAA;AACf,CAAC,CAAC,CAAA;AAEJ,2GAA2G;AAC3G,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,SAAiB,EAAS,EAAE;IACpD,MAAM,IAAI,QAAQ,CAAC,kBAAkB,EAAE,GAAG,SAAS,0BAA0B,CAAC,CAAA;AAChF,CAAC,CAAA"}
@@ -1 +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;AAqChE,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAC1C,cAAc,aAAa,CAAA;AAC3B,cAAc,cAAc,CAAA;AAE5B;;;;;;GAMG;AACH,eAAO,MAAM,IAAI,EAAE,SAAS,KAAK,EA4ChC,CAAA;AAED,eAAO,MAAM,UAAU,EAAE,SAAS,SAAS,EAA2E,CAAA;AAEtH,eAAO,MAAM,YAAY,EAAE,SAAS,WAAW,EAE9C,CAAA"}
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;AAwChE,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAC1C,cAAc,aAAa,CAAA;AAC3B,cAAc,cAAc,CAAA;AAE5B;;;;;;GAMG;AACH,eAAO,MAAM,IAAI,EAAE,SAAS,KAAK,EA+ChC,CAAA;AAED,eAAO,MAAM,UAAU,EAAE,SAAS,SAAS,EAA2E,CAAA;AAEtH,eAAO,MAAM,YAAY,EAAE,SAAS,WAAW,EAE9C,CAAA"}
@@ -1,5 +1,8 @@
1
1
  import { accountCloseSessions, accountSessions, accountUpdate } from "./operations/account.js";
2
+ import { assetsUpdate } from "./operations/assets.js";
2
3
  import { attachmentsFile, attachmentsVideo } from "./operations/attachments.js";
4
+ import { bannersList } from "./operations/banners.js";
5
+ import { callsHistory } from "./operations/calls.js";
3
6
  import { chatDelete, chatsHistory, chatsJoin, chatsLeave, chatsLinkInfo, chatsList, chatsMark, chatsMembers, chatsUpdate, chatsUpdateMembers, } from "./operations/chats.js";
4
7
  import { contactsByPhone, contactsImport, contactsInfo, contactsUpdate, unidentified36 } from "./operations/contacts.js";
5
8
  import { foldersDelete, foldersList, foldersUpdate } from "./operations/folders.js";
@@ -41,6 +44,9 @@ export const spec = [
41
44
  foldersList,
42
45
  foldersUpdate,
43
46
  foldersDelete,
47
+ bannersList,
48
+ callsHistory,
49
+ assetsUpdate,
44
50
  chatsHistory,
45
51
  chatsMark,
46
52
  chatsList,
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/spec/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAA;AAC9F,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAA;AAC/E,OAAO,EACL,UAAU,EACV,YAAY,EACZ,SAAS,EACT,UAAU,EACV,aAAa,EACb,SAAS,EACT,SAAS,EACT,YAAY,EACZ,WAAW,EACX,kBAAkB,GACnB,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,YAAY,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAA;AACxH,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAA;AACnF,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,iBAAiB,EACjB,YAAY,EACZ,eAAe,GAChB,MAAM,0BAA0B,CAAA;AACjC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;AACpG,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AAEnE,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,MAAM;IACN,cAAc;IACd,aAAa;IACb,SAAS;IACT,SAAS;IACT,eAAe;IACf,YAAY;IACZ,aAAa;IACb,YAAY;IACZ,eAAe;IACf,cAAc;IACd,cAAc;IACd,cAAc;IACd,aAAa;IACb,eAAe;IACf,oBAAoB;IACpB,WAAW;IACX,aAAa;IACb,aAAa;IACb,YAAY;IACZ,SAAS;IACT,SAAS;IACT,aAAa;IACb,SAAS;IACT,UAAU;IACV,WAAW;IACX,YAAY;IACZ,kBAAkB;IAClB,UAAU;IACV,YAAY;IACZ,YAAY;IACZ,aAAa;IACb,eAAe;IACf,iBAAiB;IACjB,cAAc;IACd,gBAAgB;IAChB,eAAe;IACf,YAAY;IACZ,WAAW;CACZ,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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/spec/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAA;AAC9F,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAA;AACrD,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,UAAU,EACV,YAAY,EACZ,SAAS,EACT,UAAU,EACV,aAAa,EACb,SAAS,EACT,SAAS,EACT,YAAY,EACZ,WAAW,EACX,kBAAkB,GACnB,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,YAAY,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAA;AACxH,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAA;AACnF,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,iBAAiB,EACjB,YAAY,EACZ,eAAe,GAChB,MAAM,0BAA0B,CAAA;AACjC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;AACpG,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AAEnE,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,MAAM;IACN,cAAc;IACd,aAAa;IACb,SAAS;IACT,SAAS;IACT,eAAe;IACf,YAAY;IACZ,aAAa;IACb,YAAY;IACZ,eAAe;IACf,cAAc;IACd,cAAc;IACd,cAAc;IACd,aAAa;IACb,eAAe;IACf,oBAAoB;IACpB,WAAW;IACX,aAAa;IACb,aAAa;IACb,WAAW;IACX,YAAY;IACZ,YAAY;IACZ,YAAY;IACZ,SAAS;IACT,SAAS;IACT,aAAa;IACb,SAAS;IACT,UAAU;IACV,WAAW;IACX,YAAY;IACZ,kBAAkB;IAClB,UAAU;IACV,YAAY;IACZ,YAAY;IACZ,aAAa;IACb,eAAe;IACf,iBAAiB;IACjB,cAAc;IACd,gBAAgB;IAChB,eAAe;IACf,YAAY;IACZ,WAAW;CACZ,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"}
@@ -1 +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;;;;;;cAiBpH,CAAA;AAEF,eAAO,MAAM,eAAe;;cAe1B,CAAA;AAEF,eAAO,MAAM,oBAAoB;IAO7B;;;OAGG;;cASL,CAAA"}
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;;;;;;cAkBpH,CAAA;AAEF,eAAO,MAAM,eAAe;;cAgB1B,CAAA;AAEF,eAAO,MAAM,oBAAoB;IAO7B;;;OAGG;;cAUL,CAAA"}
@@ -13,6 +13,7 @@ export const accountUpdate = defineOperation({
13
13
  description: v.optional(v.string()),
14
14
  }),
15
15
  response: v.looseObject({ profile: v.optional(v.looseObject({})) }),
16
+ guard: () => ({ chatId: null, kind: "account", action: "profile" }),
16
17
  provenance: {
17
18
  confidence: "measured",
18
19
  sources: [
@@ -31,6 +32,7 @@ export const accountSessions = defineOperation({
31
32
  auth: true,
32
33
  request: v.strictObject({}),
33
34
  response: v.looseObject({ sessions: v.optional(v.array(v.looseObject({}))) }),
35
+ guard: null,
34
36
  provenance: {
35
37
  confidence: "measured",
36
38
  sources: [
@@ -53,6 +55,7 @@ export const accountCloseSessions = defineOperation({
53
55
  */
54
56
  token: v.optional(v.string()),
55
57
  }),
58
+ guard: () => ({ chatId: null, kind: "account", action: "sessions-end" }),
56
59
  provenance: {
57
60
  confidence: "confirmed",
58
61
  sources: [webClient, "PyMax 53103f0 `close_all_sessions`"],
@@ -1 +1 @@
1
- {"version":3,"file":"account.js","sourceRoot":"","sources":["../../../src/spec/operations/account.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAC5B,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAE9C,MAAM,SAAS,GAAG,uEAAuE,CAAA;AAEzF,MAAM,CAAC,MAAM,aAAa,GAAG,eAAe,CAAC;IAC3C,IAAI,EAAE,gBAAgB;IACtB,QAAQ,EAAE,SAAS;IACnB,MAAM,EAAE,EAAE;IACV,IAAI,EAAE,IAAI;IACV,OAAO,EAAE,CAAC,CAAC,YAAY,CAAC;QACtB,kHAAkH;QAClH,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QAC7C,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;QAChC,WAAW,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;KACpC,CAAC;IACF,QAAQ,EAAE,CAAC,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;IACnE,UAAU,EAAE;QACV,UAAU,EAAE,UAAU;QACtB,OAAO,EAAE;YACP,4IAA4I;YAC5I,SAAS;YACT,gCAAgC;YAChC,2DAA2D;SAC5D;QACD,KAAK,EACH,6KAA6K;KAChL;CACF,CAAC,CAAA;AAEF,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,EAAE,CAAC;IAC3B,QAAQ,EAAE,CAAC,CAAC,WAAW,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAC7E,UAAU,EAAE;QACV,UAAU,EAAE,UAAU;QACtB,OAAO,EAAE;YACP,uHAAuH;YACvH,SAAS;YACT,8BAA8B;SAC/B;KACF;CACF,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAG,eAAe,CAAC;IAClD,IAAI,EAAE,uBAAuB;IAC7B,QAAQ,EAAE,gBAAgB;IAC1B,MAAM,EAAE,EAAE;IACV,IAAI,EAAE,IAAI;IACV,OAAO,EAAE,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC;IAC3B,QAAQ,EAAE,CAAC,CAAC,WAAW,CAAC;QACtB;;;WAGG;QACH,KAAK,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;KAC9B,CAAC;IACF,UAAU,EAAE;QACV,UAAU,EAAE,WAAW;QACvB,OAAO,EAAE,CAAC,SAAS,EAAE,oCAAoC,CAAC;QAC1D,KAAK,EACH,yIAAyI;KAC5I;CACF,CAAC,CAAA"}
1
+ {"version":3,"file":"account.js","sourceRoot":"","sources":["../../../src/spec/operations/account.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAC5B,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAE9C,MAAM,SAAS,GAAG,uEAAuE,CAAA;AAEzF,MAAM,CAAC,MAAM,aAAa,GAAG,eAAe,CAAC;IAC3C,IAAI,EAAE,gBAAgB;IACtB,QAAQ,EAAE,SAAS;IACnB,MAAM,EAAE,EAAE;IACV,IAAI,EAAE,IAAI;IACV,OAAO,EAAE,CAAC,CAAC,YAAY,CAAC;QACtB,kHAAkH;QAClH,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QAC7C,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;QAChC,WAAW,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;KACpC,CAAC;IACF,QAAQ,EAAE,CAAC,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;IACnE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;IACnE,UAAU,EAAE;QACV,UAAU,EAAE,UAAU;QACtB,OAAO,EAAE;YACP,4IAA4I;YAC5I,SAAS;YACT,gCAAgC;YAChC,2DAA2D;SAC5D;QACD,KAAK,EACH,6KAA6K;KAChL;CACF,CAAC,CAAA;AAEF,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,EAAE,CAAC;IAC3B,QAAQ,EAAE,CAAC,CAAC,WAAW,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAC7E,KAAK,EAAE,IAAI;IACX,UAAU,EAAE;QACV,UAAU,EAAE,UAAU;QACtB,OAAO,EAAE;YACP,uHAAuH;YACvH,SAAS;YACT,8BAA8B;SAC/B;KACF;CACF,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAG,eAAe,CAAC;IAClD,IAAI,EAAE,uBAAuB;IAC7B,QAAQ,EAAE,gBAAgB;IAC1B,MAAM,EAAE,EAAE;IACV,IAAI,EAAE,IAAI;IACV,OAAO,EAAE,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC;IAC3B,QAAQ,EAAE,CAAC,CAAC,WAAW,CAAC;QACtB;;;WAGG;QACH,KAAK,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;KAC9B,CAAC;IACF,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC;IACxE,UAAU,EAAE;QACV,UAAU,EAAE,WAAW;QACvB,OAAO,EAAE,CAAC,SAAS,EAAE,oCAAoC,CAAC;QAC1D,KAAK,EACH,yIAAyI;KAC5I;CACF,CAAC,CAAA"}
@@ -0,0 +1,10 @@
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
+ //# 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;;;;;;cAavB,CAAA"}
@@ -0,0 +1,20 @@
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: "observed",
16
+ sources: [recorded, "PyMax 53103f0 names it `ASSETS_UPDATE` and never sends it"],
17
+ notes: "The tab sends the four types in this order, each with the `sync` its previous answer carried.",
18
+ },
19
+ });
20
+ //# 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,CAAC,QAAQ,EAAE,2DAA2D,CAAC;QAChF,KAAK,EAAE,+FAA+F;KACvG;CACF,CAAC,CAAA"}
@@ -1 +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;;;;;;;cAiB1B,CAAA;AAEF,eAAO,MAAM,gBAAgB;;;;kDAiB3B,CAAA"}
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"}
@@ -12,6 +12,7 @@ export const attachmentsFile = defineOperation({
12
12
  fileId: id(),
13
13
  }),
14
14
  response: v.looseObject({ url: v.optional(v.string()), unsafe: v.optional(v.boolean()) }),
15
+ guard: null,
15
16
  provenance: {
16
17
  confidence: "measured",
17
18
  sources: ["measured against MAX 2026-09-23 (`pnpm probe:download`)", "tsmax getFileById", "PyMax get_file_by_id"],
@@ -29,6 +30,7 @@ export const attachmentsVideo = defineOperation({
29
30
  videoId: id(),
30
31
  }),
31
32
  response: v.looseObject({}),
33
+ guard: null,
32
34
  provenance: {
33
35
  confidence: "measured",
34
36
  sources: ["measured against MAX 2026-09-23 (`pnpm probe:download`)", "tsmax getVideoById", "PyMax get_video_by_id"],
@@ -1 +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,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,UAAU,EAAE;QACV,UAAU,EAAE,UAAU;QACtB,OAAO,EAAE,CAAC,yDAAyD,EAAE,oBAAoB,EAAE,uBAAuB,CAAC;QACnH,KAAK,EACH,qIAAqI;KACxI;CACF,CAAC,CAAA"}
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;;;;;cAYvB,CAAA"}
@@ -0,0 +1,18 @@
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: { confidence: "observed", sources: [recorded] },
17
+ });
18
+ //# 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,EAAE,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC,QAAQ,CAAC,EAAE;CAC5D,CAAC,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"chats.d.ts","sourceRoot":"","sources":["../../../src/spec/operations/chats.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAI5B,eAAO,MAAM,SAAS;IAMlB,6DAA6D;;;;;cAU/D,CAAA;AAEF,eAAO,MAAM,YAAY;;;;;;;IAerB,6GAA6G;;;;;;cAa/G,CAAA;AAEF,eAAO,MAAM,SAAS;;;;IAalB;;;;OAIG;;;;;cAaL,CAAA;AAKF,eAAO,MAAM,aAAa;;;;cAYxB,CAAA;AAEF,eAAO,MAAM,SAAS;;;;cAapB,CAAA;AAEF,eAAO,MAAM,UAAU;;;;cAYrB,CAAA;AAEF,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;cA6BtB,CAAA;AAEF,eAAO,MAAM,YAAY;;;;;;cAgBvB,CAAA;AAEF,eAAO,MAAM,kBAAkB;;;;IAS3B,uCAAuC;;;IAGvC,iGAAiG;;IAEjG,mGAAmG;;;;cAarG,CAAA;AAEF,eAAO,MAAM,UAAU,oCAOrB,CAAA"}
1
+ {"version":3,"file":"chats.d.ts","sourceRoot":"","sources":["../../../src/spec/operations/chats.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAM5B,eAAO,MAAM,SAAS;IAMlB,6DAA6D;;;;;cAW/D,CAAA;AAEF,eAAO,MAAM,YAAY;;;;;;;IAerB,6GAA6G;;;;;;cAc/G,CAAA;AAEF,eAAO,MAAM,SAAS;;;;IAalB;;;;OAIG;;;;;cAcL,CAAA;AAKF,eAAO,MAAM,aAAa;;;;cAaxB,CAAA;AAEF,eAAO,MAAM,SAAS;;;;cAcpB,CAAA;AAEF,eAAO,MAAM,UAAU;;;;cAarB,CAAA;AAEF,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;cA8CtB,CAAA;AAEF,eAAO,MAAM,YAAY;;;;;;cAiBvB,CAAA;AAQF,eAAO,MAAM,kBAAkB;;;;IAS3B,uCAAuC;;;IAGvC,iGAAiG;;IAEjG,mGAAmG;;;;cA0BrG,CAAA;AAEF,eAAO,MAAM,UAAU,oCAOrB,CAAA"}
@@ -1,5 +1,6 @@
1
1
  import * as v from "valibot";
2
2
  import { defineOperation, reserveOpcode } from "../define.js";
3
+ import { ambiguous, chatOf, countOf, messageOf, peopleOf } from "../guards.js";
3
4
  import { id } from "../scalars.js";
4
5
  export const chatsList = defineOperation({
5
6
  name: "chats.list",
@@ -12,6 +13,7 @@ export const chatsList = defineOperation({
12
13
  count: v.optional(v.pipe(v.number(), v.integer(), v.minValue(1))),
13
14
  }),
14
15
  response: v.looseObject({ chats: v.optional(v.array(v.looseObject({}))) }),
16
+ guard: null,
15
17
  provenance: {
16
18
  confidence: "measured",
17
19
  sources: ["measured against MAX 2026-09-19", "max-api-docs/protocol/chats.md"],
@@ -39,6 +41,7 @@ export const chatsHistory = defineOperation({
39
41
  getMessages: v.boolean(),
40
42
  }),
41
43
  response: v.looseObject({ messages: v.optional(v.array(v.looseObject({}))) }),
44
+ guard: null,
42
45
  provenance: {
43
46
  confidence: "measured",
44
47
  sources: [
@@ -68,6 +71,7 @@ export const chatsMark = defineOperation({
68
71
  mark: v.number(),
69
72
  }),
70
73
  response: v.looseObject({ unread: v.optional(v.number()), mark: v.optional(v.number()) }),
74
+ guard: (request) => ({ chatId: chatOf(request), kind: "read", ...messageOf(request) }),
71
75
  provenance: {
72
76
  confidence: "measured",
73
77
  sources: [
@@ -87,6 +91,7 @@ export const chatsLinkInfo = defineOperation({
87
91
  auth: true,
88
92
  request: v.strictObject({ link: link() }),
89
93
  response: v.looseObject({ chat: v.optional(v.looseObject({})) }),
94
+ guard: null,
90
95
  provenance: {
91
96
  confidence: "measured",
92
97
  sources: ["measured against MAX 2026-09-24 (`pnpm probe:groups`)", "PyMax resolve_group_by_link"],
@@ -100,6 +105,7 @@ export const chatsJoin = defineOperation({
100
105
  auth: true,
101
106
  request: v.strictObject({ link: link() }),
102
107
  response: v.looseObject({ chat: v.optional(v.looseObject({})) }),
108
+ guard: () => ({ chatId: null, kind: "chat", action: "join" }),
103
109
  provenance: {
104
110
  confidence: "measured",
105
111
  sources: ["measured against MAX 2026-09-24 with a private group link (`pnpm probe:groups`)", "PyMax join_group"],
@@ -113,6 +119,7 @@ export const chatsLeave = defineOperation({
113
119
  auth: true,
114
120
  request: v.strictObject({ chatId: id() }),
115
121
  response: v.looseObject({ message: v.optional(v.looseObject({})) }),
122
+ guard: (request) => ({ chatId: chatOf(request), kind: "chat", action: "leave" }),
116
123
  provenance: {
117
124
  confidence: "measured",
118
125
  sources: ["measured against MAX 2026-09-24 (`pnpm probe:groups`)", "PyMax leave_group"],
@@ -134,6 +141,26 @@ export const chatsUpdate = defineOperation({
134
141
  v.strictObject({ chatId: id(), pinMessageId: id(), notifyPin: v.boolean() }),
135
142
  ]),
136
143
  response: v.looseObject({ chat: v.optional(v.looseObject({})) }),
144
+ guard: (request) => {
145
+ const chatId = chatOf(request);
146
+ const changes = [
147
+ "pinMessageId" in request,
148
+ "revokePrivateLink" in request,
149
+ "options" in request,
150
+ "theme" in request || "description" in request,
151
+ ];
152
+ if (changes.filter(Boolean).length !== 1)
153
+ return ambiguous("chats.update");
154
+ if (changes[0]) {
155
+ const pinned = messageOf(request, "pinMessageId");
156
+ return { chatId, kind: "pin", notify: request.notifyPin === true, ...(pinned.messageId === "0" ? {} : pinned) };
157
+ }
158
+ if (changes[1])
159
+ return { chatId, kind: "chat", action: "link.reset" };
160
+ if (changes[2])
161
+ return { chatId, kind: "chat", action: "settings" };
162
+ return { chatId, kind: "chat", action: "update" };
163
+ },
137
164
  provenance: {
138
165
  confidence: "measured",
139
166
  sources: [
@@ -159,12 +186,18 @@ export const chatsMembers = defineOperation({
159
186
  count: v.pipe(v.number(), v.integer(), v.minValue(1)),
160
187
  }),
161
188
  response: v.looseObject({ members: v.optional(v.array(v.looseObject({}))) }),
189
+ guard: null,
162
190
  provenance: {
163
191
  confidence: "measured",
164
192
  sources: ["measured against MAX 2026-09-24 with no requests (`pnpm probe:groups`)", "PyMax get_join_requests"],
165
193
  notes: "With no requests the answer is `{}` — no `members` at all. Each member is `{contact, presence}` in PyMax.",
166
194
  },
167
195
  });
196
+ const MEMBER_ACTIONS = {
197
+ MEMBER: ["members.add", "members.remove"],
198
+ ADMIN: ["admins.add", "admins.remove"],
199
+ JOIN_REQUEST: ["requests.accept", "requests.decline"],
200
+ };
168
201
  export const chatsUpdateMembers = defineOperation({
169
202
  name: "chats.updateMembers",
170
203
  constant: "CHAT_MEMBERS_UPDATE",
@@ -183,6 +216,19 @@ export const chatsUpdateMembers = defineOperation({
183
216
  permissions: v.optional(v.pipe(v.number(), v.integer(), v.minValue(0))),
184
217
  }),
185
218
  response: v.looseObject({ chat: v.optional(v.looseObject({})) }),
219
+ guard: (request) => {
220
+ const actions = MEMBER_ACTIONS[String(request.type ?? "MEMBER")];
221
+ const action = request.operation === "add" ? actions?.[0] : request.operation === "remove" ? actions?.[1] : undefined;
222
+ if (!action)
223
+ return ambiguous("chats.updateMembers");
224
+ return {
225
+ chatId: chatOf(request),
226
+ kind: "chat",
227
+ action,
228
+ people: countOf(request.userIds),
229
+ ...(action === "members.add" ? { personIds: peopleOf(request.userIds) } : {}),
230
+ };
231
+ },
186
232
  provenance: {
187
233
  confidence: "measured",
188
234
  sources: [
@@ -1 +1 @@
1
- {"version":3,"file":"chats.js","sourceRoot":"","sources":["../../../src/spec/operations/chats.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"chats.js","sourceRoot":"","sources":["../../../src/spec/operations/chats.ts"],"names":[],"mappings":"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"}