@ardennguyen/zalo-agent-cli 2.5.9 → 3.0.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 (1492) hide show
  1. package/.env.example +23 -2
  2. package/DISCLAIMER.md +3 -3
  3. package/LICENSE +2 -3
  4. package/NOTICE +14 -34
  5. package/README.md +166 -72
  6. package/package.json +37 -19
  7. package/src/commands/account.js +369 -40
  8. package/src/commands/auto-reply.js +8 -25
  9. package/src/commands/bank.js +25 -6
  10. package/src/commands/catalog.js +54 -11
  11. package/src/commands/cloud.js +459 -0
  12. package/src/commands/conv.js +470 -287
  13. package/src/commands/db.js +442 -0
  14. package/src/commands/fleet.js +449 -41
  15. package/src/commands/friend.js +198 -45
  16. package/src/commands/group.js +256 -43
  17. package/src/commands/label.js +16 -2
  18. package/src/commands/listen.js +495 -122
  19. package/src/commands/login.js +313 -117
  20. package/src/commands/mcp-approver.js +103 -0
  21. package/src/commands/mcp-webhook.js +13 -5
  22. package/src/commands/mcp.js +800 -104
  23. package/src/commands/msg-media.js +187 -0
  24. package/src/commands/msg-search.js +219 -0
  25. package/src/commands/msg.js +414 -110
  26. package/src/commands/oa/calls.js +134 -0
  27. package/src/commands/oa/content.js +266 -0
  28. package/src/commands/oa/gmf.js +429 -0
  29. package/src/commands/oa/messages.js +355 -0
  30. package/src/commands/oa/users.js +502 -0
  31. package/src/commands/oa-init.js +122 -123
  32. package/src/commands/oa-listen.js +374 -150
  33. package/src/commands/oa.js +83 -598
  34. package/src/commands/policy.js +224 -0
  35. package/src/commands/poll.js +3 -0
  36. package/src/commands/presence.js +175 -0
  37. package/src/commands/profile.js +45 -94
  38. package/src/commands/quick-msg.js +26 -0
  39. package/src/commands/read.js +172 -0
  40. package/src/commands/reminder.js +34 -4
  41. package/src/commands/social.js +223 -0
  42. package/src/commands/sync.js +482 -158
  43. package/src/commands/write.js +85 -0
  44. package/src/commands/zbs.js +502 -0
  45. package/src/core/account-devices.js +76 -0
  46. package/src/core/account-state.js +167 -0
  47. package/src/core/account-status.js +355 -0
  48. package/src/core/accounts.js +11 -4
  49. package/src/core/admin-api.js +392 -0
  50. package/src/core/approval.js +271 -0
  51. package/src/core/auto-reply.js +27 -0
  52. package/src/core/bank-accounts.js +1 -1
  53. package/src/core/block-sharing.js +43 -0
  54. package/src/core/board-pass.js +94 -0
  55. package/src/core/cached-message.js +78 -8
  56. package/src/core/cloud-plan.js +285 -0
  57. package/src/core/cloud-verify.js +305 -0
  58. package/src/core/confirm-guard.js +808 -0
  59. package/src/core/contact-names.js +504 -0
  60. package/src/core/control-events.js +525 -0
  61. package/src/core/control-replay.js +106 -0
  62. package/src/core/conversation-actions.js +214 -0
  63. package/src/core/credentials.js +112 -11
  64. package/src/core/current-user-names.js +60 -26
  65. package/src/core/daemon-channel.js +296 -15
  66. package/src/core/daemon-health.js +110 -7
  67. package/src/core/daemon-presence.js +455 -0
  68. package/src/core/daemon-sync.js +58 -18
  69. package/src/core/data-export.js +610 -0
  70. package/src/core/db-tools.js +473 -0
  71. package/src/core/db.js +1327 -83
  72. package/src/core/deploy-policy.js +560 -0
  73. package/src/core/device-since.js +123 -0
  74. package/src/core/e2ee-notice.js +41 -0
  75. package/src/core/exit-codes.js +7 -0
  76. package/src/core/export-crypt.js +290 -0
  77. package/src/core/fleet-controller.js +340 -0
  78. package/src/core/fleet-purge.js +144 -0
  79. package/src/core/fleet-qr.js +273 -0
  80. package/src/core/fleet-serve.js +292 -0
  81. package/src/core/fleet-supervisor.js +176 -0
  82. package/src/core/fleet-templates.js +568 -39
  83. package/src/core/fleet.js +232 -20
  84. package/src/core/friend-requests.js +80 -16
  85. package/src/core/friend-search.js +1 -1
  86. package/src/core/group-admin.js +2 -29
  87. package/src/core/group-departure.js +233 -0
  88. package/src/core/group-exit.js +621 -0
  89. package/src/core/group-members.js +21 -9
  90. package/src/core/group-settings.js +5 -207
  91. package/src/core/hidden-chat-actions.js +96 -0
  92. package/src/core/hidden-chats.js +425 -0
  93. package/src/core/history-fetch.js +81 -27
  94. package/src/core/keystore/config.js +163 -0
  95. package/src/core/keystore/container.js +208 -0
  96. package/src/core/keystore/index.js +483 -0
  97. package/src/core/keystore/keyring.js +588 -0
  98. package/src/core/keystore/kms.js +157 -0
  99. package/src/core/keystore/media-seal.js +711 -0
  100. package/src/core/keystore/providers.js +492 -0
  101. package/src/core/keystore/stores.js +177 -0
  102. package/src/core/keystore/worker.js +80 -0
  103. package/src/core/kick-marker.js +61 -0
  104. package/src/core/last-online.js +236 -0
  105. package/src/core/list-all.js +280 -0
  106. package/src/core/listener-lifecycle.js +101 -10
  107. package/src/core/live-api.js +1 -1
  108. package/src/core/live-store.js +111 -53
  109. package/src/core/local-reads.js +16 -0
  110. package/src/core/logout.js +102 -140
  111. package/src/core/media-deliver.js +732 -0
  112. package/src/core/media-route.js +347 -0
  113. package/src/core/media-store.js +408 -0
  114. package/src/core/mutual-groups.js +94 -0
  115. package/src/core/name-refresh.js +135 -0
  116. package/src/core/oa/calls.js +212 -0
  117. package/src/core/oa/content.js +390 -0
  118. package/src/core/oa/gmf.js +537 -0
  119. package/src/core/oa/messages.js +470 -0
  120. package/src/core/oa/oauth.js +422 -0
  121. package/src/core/oa/transport.js +645 -0
  122. package/src/core/oa/users.js +694 -0
  123. package/src/core/oa-client.js +49 -415
  124. package/src/core/overflow-repair.js +221 -0
  125. package/src/core/policy-layer.js +55 -0
  126. package/src/core/policy-schema.js +401 -0
  127. package/src/core/policy-store.js +1058 -0
  128. package/src/core/presence-config.js +100 -0
  129. package/src/core/presence-leases.js +211 -0
  130. package/src/core/presence.js +688 -0
  131. package/src/core/profile-settings.js +243 -0
  132. package/src/core/qr-login-flow.js +237 -0
  133. package/src/core/read-state.js +145 -22
  134. package/src/core/receipts.js +355 -548
  135. package/src/core/recent-conversations.js +28 -6
  136. package/src/core/row-mac.js +405 -0
  137. package/src/core/search.js +271 -0
  138. package/src/core/secure-page.js +771 -0
  139. package/src/core/self-heal.js +493 -34
  140. package/src/core/session-expiry.js +103 -0
  141. package/src/core/session-notice.js +249 -0
  142. package/src/core/social/client.js +296 -0
  143. package/src/core/social/dpop.js +54 -0
  144. package/src/core/socket-host.js +437 -0
  145. package/src/core/sqlite.js +520 -0
  146. package/src/core/startup-gate.js +49 -5
  147. package/src/core/storage-quota.js +796 -0
  148. package/src/core/sync-action.js +180 -0
  149. package/src/core/sync-v2/auto-sync.js +356 -0
  150. package/src/core/sync-v2/board.js +130 -92
  151. package/src/core/sync-v2/conv-state.js +21 -4
  152. package/src/core/sync-v2/gap-advice.js +2 -3
  153. package/src/core/sync-v2/index.js +739 -323
  154. package/src/core/sync-v2/media.js +116 -27
  155. package/src/core/sync-v2/plan.js +16 -2
  156. package/src/core/sync-v2/ranges.js +98 -0
  157. package/src/core/sync-v2/reactions.js +12 -196
  158. package/src/core/sync-v2/senders.js +32 -14
  159. package/src/core/sync-v2/zcloud.js +177 -579
  160. package/src/core/sync.js +23 -21
  161. package/src/core/test-fake-session.js +87 -0
  162. package/src/core/typing.js +78 -0
  163. package/src/core/unknown-acts.js +240 -0
  164. package/src/core/voice-text.js +171 -0
  165. package/src/core/webhook-outbox.js +110 -12
  166. package/src/core/zalo-client.js +147 -188
  167. package/src/core/zbs/api.js +505 -0
  168. package/src/core/zbs/image.js +85 -0
  169. package/src/core/zbs/phone.js +59 -0
  170. package/src/core/zbs/rsa.js +129 -0
  171. package/src/core/zbs/template-check.js +449 -0
  172. package/src/index.js +60 -10
  173. package/src/mcp/action-tool.js +188 -0
  174. package/src/mcp/actions-business.js +488 -0
  175. package/src/mcp/actions-conversation.js +633 -0
  176. package/src/mcp/actions-media.js +268 -0
  177. package/src/mcp/actions-profile.js +281 -0
  178. package/src/mcp/actions-social.js +518 -0
  179. package/src/mcp/instructions.js +19 -5
  180. package/src/mcp/mcp-config.js +112 -10
  181. package/src/mcp/mcp-http-transport.js +162 -25
  182. package/src/mcp/mcp-server.js +14 -3
  183. package/src/mcp/mcp-tools.js +1686 -384
  184. package/src/mcp/message-buffer.js +58 -12
  185. package/src/mcp/notifier.js +1 -1
  186. package/src/mcp/official-tool.js +298 -0
  187. package/src/mcp/sync-jobs.js +7 -1
  188. package/src/mcp/sync-stages.js +72 -0
  189. package/src/mcp/thread-name-cache.js +43 -5
  190. package/src/mcp/tool-presence.js +153 -0
  191. package/src/mcp/wait-batch.js +27 -0
  192. package/src/mcp/wait-result.js +19 -21
  193. package/src/utils/bank-helpers.js +52 -1
  194. package/src/utils/cli-args.js +12 -12
  195. package/src/utils/date-range.js +50 -0
  196. package/src/utils/hidden-access.js +141 -0
  197. package/src/utils/interrupt.js +37 -0
  198. package/src/utils/json-input.js +41 -0
  199. package/src/utils/list-replies.js +60 -0
  200. package/src/utils/my-documents.js +2 -3
  201. package/src/utils/output.js +66 -2
  202. package/src/utils/qr-display.js +14 -8
  203. package/src/utils/qr-http-server.js +674 -134
  204. package/src/utils/quote.js +8 -8
  205. package/src/utils/secret-input.js +57 -0
  206. package/src/utils/vn-text.js +72 -0
  207. package/src/zalo/README.md +46 -0
  208. package/src/zalo/anomaly-store.js +49 -0
  209. package/src/zalo/api/actions.js +670 -0
  210. package/src/zalo/api/boards.js +1036 -0
  211. package/src/zalo/api/business.js +662 -0
  212. package/src/zalo/api/conversations.js +329 -0
  213. package/src/zalo/api/groups.js +631 -0
  214. package/src/zalo/api/messages.js +695 -0
  215. package/src/zalo/api/people.js +711 -0
  216. package/src/zalo/api/profile.js +374 -0
  217. package/src/zalo/api/session.js +45 -0
  218. package/src/zalo/api/upload.js +976 -0
  219. package/src/zalo/api.js +117 -0
  220. package/src/zalo/client.js +206 -0
  221. package/src/zalo/custom/forward.js +199 -0
  222. package/src/zalo/custom/gid.js +123 -0
  223. package/src/zalo/custom/group-history.js +246 -0
  224. package/src/zalo/custom/group-invite.js +53 -0
  225. package/src/zalo/custom/group-settings.js +186 -0
  226. package/src/zalo/custom/group-visibility.js +71 -0
  227. package/src/zalo/custom/pin.js +220 -0
  228. package/src/zalo/custom/renewlink.js +115 -0
  229. package/src/zalo/device-fingerprint.js +33 -0
  230. package/src/zalo/download-fetch.js +45 -0
  231. package/src/zalo/enums.js +25 -0
  232. package/src/zalo/errors.js +195 -0
  233. package/src/zalo/format/mentions.js +140 -0
  234. package/src/zalo/format/split-message.js +222 -0
  235. package/src/zalo/format/urgency.js +29 -0
  236. package/src/zalo/headers.js +93 -0
  237. package/src/zalo/index.js +72 -0
  238. package/src/zalo/kernel/atomic-file.js +217 -0
  239. package/src/zalo/kernel/bound.js +46 -0
  240. package/src/zalo/kernel/cipher.js +88 -0
  241. package/src/zalo/kernel/cookies.js +125 -0
  242. package/src/zalo/kernel/endpoint.js +211 -0
  243. package/src/zalo/kernel/http.js +360 -0
  244. package/src/zalo/kernel/json-ids.js +118 -0
  245. package/src/zalo/kernel/login-cipher.js +165 -0
  246. package/src/zalo/kernel/secret-file.js +45 -0
  247. package/src/zalo/kernel/session.js +261 -0
  248. package/src/zalo/kernel/zcloud-cipher.js +83 -0
  249. package/src/zalo/kickout.js +136 -0
  250. package/src/zalo/listener/dispatch.js +404 -0
  251. package/src/zalo/listener/frames.js +222 -0
  252. package/src/zalo/listener/friend-events.js +113 -0
  253. package/src/zalo/listener/group-events.js +117 -0
  254. package/src/zalo/listener/keepalive.js +191 -0
  255. package/src/zalo/listener/listener.js +469 -0
  256. package/src/zalo/listener/models.js +220 -0
  257. package/src/zalo/listener/reactions.js +224 -0
  258. package/src/zalo/listener/socket-tap.js +228 -0
  259. package/src/zalo/login.js +387 -0
  260. package/src/zalo/logout.js +192 -0
  261. package/src/zalo/maintenance.js +183 -0
  262. package/src/zalo/official-logout.js +254 -0
  263. package/src/zalo/paging.js +114 -0
  264. package/src/zalo/profile.js +184 -0
  265. package/src/zalo/pulls.js +129 -0
  266. package/src/zalo/qr-image.js +90 -0
  267. package/src/zalo/qr-login.js +494 -0
  268. package/src/zalo/queues/control-queue.js +193 -0
  269. package/src/zalo/queues/offline-queue.js +275 -0
  270. package/src/zalo/queues/queue-verify.js +306 -0
  271. package/src/zalo/reads.js +723 -0
  272. package/src/zalo/receipts.js +550 -0
  273. package/src/zalo/req-id.js +24 -0
  274. package/src/zalo/retry.js +343 -0
  275. package/src/zalo/session-call.js +55 -0
  276. package/src/zalo/socket.js +762 -0
  277. package/src/zalo/transfer-sync/assets.js +181 -0
  278. package/src/zalo/transfer-sync/channel.js +459 -0
  279. package/src/zalo/transfer-sync/download.js +161 -0
  280. package/src/zalo/transfer-sync/message-types.js +520 -0
  281. package/src/zalo/transfer-sync/transfer.js +468 -0
  282. package/src/zalo/trust-store.js +99 -0
  283. package/src/zalo/trust-wasm.js +393 -0
  284. package/src/zalo/upkeep.js +127 -0
  285. package/src/zalo/web-call.js +103 -0
  286. package/src/zalo/writes.js +704 -0
  287. package/src/zalo/zcloud-e2ee.js +214 -0
  288. package/src/zalo/zcloud.js +802 -0
  289. package/node_modules/asynckit/LICENSE +0 -21
  290. package/node_modules/asynckit/README.md +0 -233
  291. package/node_modules/asynckit/bench.js +0 -76
  292. package/node_modules/asynckit/index.js +0 -6
  293. package/node_modules/asynckit/lib/abort.js +0 -29
  294. package/node_modules/asynckit/lib/async.js +0 -34
  295. package/node_modules/asynckit/lib/defer.js +0 -26
  296. package/node_modules/asynckit/lib/iterate.js +0 -75
  297. package/node_modules/asynckit/lib/readable_asynckit.js +0 -91
  298. package/node_modules/asynckit/lib/readable_parallel.js +0 -25
  299. package/node_modules/asynckit/lib/readable_serial.js +0 -25
  300. package/node_modules/asynckit/lib/readable_serial_ordered.js +0 -29
  301. package/node_modules/asynckit/lib/state.js +0 -37
  302. package/node_modules/asynckit/lib/streamify.js +0 -141
  303. package/node_modules/asynckit/lib/terminator.js +0 -29
  304. package/node_modules/asynckit/package.json +0 -63
  305. package/node_modules/asynckit/parallel.js +0 -43
  306. package/node_modules/asynckit/serial.js +0 -17
  307. package/node_modules/asynckit/serialOrdered.js +0 -75
  308. package/node_modules/asynckit/stream.js +0 -21
  309. package/node_modules/bignumber.js/CHANGELOG.md +0 -381
  310. package/node_modules/bignumber.js/LICENCE.md +0 -26
  311. package/node_modules/bignumber.js/README.md +0 -289
  312. package/node_modules/bignumber.js/bignumber.d.mts +0 -6
  313. package/node_modules/bignumber.js/bignumber.d.ts +0 -5
  314. package/node_modules/bignumber.js/bignumber.js +0 -2922
  315. package/node_modules/bignumber.js/bignumber.mjs +0 -2907
  316. package/node_modules/bignumber.js/doc/API.html +0 -2249
  317. package/node_modules/bignumber.js/package.json +0 -60
  318. package/node_modules/bignumber.js/types.d.ts +0 -1821
  319. package/node_modules/call-bind-apply-helpers/.eslintrc +0 -17
  320. package/node_modules/call-bind-apply-helpers/.github/FUNDING.yml +0 -12
  321. package/node_modules/call-bind-apply-helpers/.nycrc +0 -9
  322. package/node_modules/call-bind-apply-helpers/CHANGELOG.md +0 -30
  323. package/node_modules/call-bind-apply-helpers/LICENSE +0 -21
  324. package/node_modules/call-bind-apply-helpers/README.md +0 -62
  325. package/node_modules/call-bind-apply-helpers/actualApply.d.ts +0 -1
  326. package/node_modules/call-bind-apply-helpers/actualApply.js +0 -10
  327. package/node_modules/call-bind-apply-helpers/applyBind.d.ts +0 -19
  328. package/node_modules/call-bind-apply-helpers/applyBind.js +0 -10
  329. package/node_modules/call-bind-apply-helpers/functionApply.d.ts +0 -1
  330. package/node_modules/call-bind-apply-helpers/functionApply.js +0 -4
  331. package/node_modules/call-bind-apply-helpers/functionCall.d.ts +0 -1
  332. package/node_modules/call-bind-apply-helpers/functionCall.js +0 -4
  333. package/node_modules/call-bind-apply-helpers/index.d.ts +0 -64
  334. package/node_modules/call-bind-apply-helpers/index.js +0 -15
  335. package/node_modules/call-bind-apply-helpers/package.json +0 -85
  336. package/node_modules/call-bind-apply-helpers/reflectApply.d.ts +0 -3
  337. package/node_modules/call-bind-apply-helpers/reflectApply.js +0 -4
  338. package/node_modules/call-bind-apply-helpers/test/index.js +0 -63
  339. package/node_modules/call-bind-apply-helpers/tsconfig.json +0 -9
  340. package/node_modules/combined-stream/License +0 -19
  341. package/node_modules/combined-stream/Readme.md +0 -138
  342. package/node_modules/combined-stream/lib/combined_stream.js +0 -208
  343. package/node_modules/combined-stream/package.json +0 -25
  344. package/node_modules/crypto-js/CONTRIBUTING.md +0 -28
  345. package/node_modules/crypto-js/LICENSE +0 -24
  346. package/node_modules/crypto-js/README.md +0 -275
  347. package/node_modules/crypto-js/aes.js +0 -234
  348. package/node_modules/crypto-js/blowfish.js +0 -471
  349. package/node_modules/crypto-js/bower.json +0 -39
  350. package/node_modules/crypto-js/cipher-core.js +0 -895
  351. package/node_modules/crypto-js/core.js +0 -807
  352. package/node_modules/crypto-js/crypto-js.js +0 -6657
  353. package/node_modules/crypto-js/docs/QuickStartGuide.wiki +0 -470
  354. package/node_modules/crypto-js/enc-base64.js +0 -136
  355. package/node_modules/crypto-js/enc-base64url.js +0 -148
  356. package/node_modules/crypto-js/enc-hex.js +0 -18
  357. package/node_modules/crypto-js/enc-latin1.js +0 -18
  358. package/node_modules/crypto-js/enc-utf16.js +0 -149
  359. package/node_modules/crypto-js/enc-utf8.js +0 -18
  360. package/node_modules/crypto-js/evpkdf.js +0 -134
  361. package/node_modules/crypto-js/format-hex.js +0 -66
  362. package/node_modules/crypto-js/format-openssl.js +0 -18
  363. package/node_modules/crypto-js/hmac-md5.js +0 -18
  364. package/node_modules/crypto-js/hmac-ripemd160.js +0 -18
  365. package/node_modules/crypto-js/hmac-sha1.js +0 -18
  366. package/node_modules/crypto-js/hmac-sha224.js +0 -18
  367. package/node_modules/crypto-js/hmac-sha256.js +0 -18
  368. package/node_modules/crypto-js/hmac-sha3.js +0 -18
  369. package/node_modules/crypto-js/hmac-sha384.js +0 -18
  370. package/node_modules/crypto-js/hmac-sha512.js +0 -18
  371. package/node_modules/crypto-js/hmac.js +0 -143
  372. package/node_modules/crypto-js/index.js +0 -18
  373. package/node_modules/crypto-js/lib-typedarrays.js +0 -76
  374. package/node_modules/crypto-js/md5.js +0 -268
  375. package/node_modules/crypto-js/mode-cfb.js +0 -80
  376. package/node_modules/crypto-js/mode-ctr-gladman.js +0 -116
  377. package/node_modules/crypto-js/mode-ctr.js +0 -58
  378. package/node_modules/crypto-js/mode-ecb.js +0 -40
  379. package/node_modules/crypto-js/mode-ofb.js +0 -54
  380. package/node_modules/crypto-js/package.json +0 -42
  381. package/node_modules/crypto-js/pad-ansix923.js +0 -49
  382. package/node_modules/crypto-js/pad-iso10126.js +0 -44
  383. package/node_modules/crypto-js/pad-iso97971.js +0 -40
  384. package/node_modules/crypto-js/pad-nopadding.js +0 -30
  385. package/node_modules/crypto-js/pad-pkcs7.js +0 -18
  386. package/node_modules/crypto-js/pad-zeropadding.js +0 -47
  387. package/node_modules/crypto-js/pbkdf2.js +0 -145
  388. package/node_modules/crypto-js/rabbit-legacy.js +0 -190
  389. package/node_modules/crypto-js/rabbit.js +0 -192
  390. package/node_modules/crypto-js/rc4.js +0 -139
  391. package/node_modules/crypto-js/ripemd160.js +0 -267
  392. package/node_modules/crypto-js/sha1.js +0 -150
  393. package/node_modules/crypto-js/sha224.js +0 -80
  394. package/node_modules/crypto-js/sha256.js +0 -199
  395. package/node_modules/crypto-js/sha3.js +0 -326
  396. package/node_modules/crypto-js/sha384.js +0 -83
  397. package/node_modules/crypto-js/sha512.js +0 -326
  398. package/node_modules/crypto-js/tripledes.js +0 -779
  399. package/node_modules/crypto-js/x64-core.js +0 -304
  400. package/node_modules/delayed-stream/.npmignore +0 -1
  401. package/node_modules/delayed-stream/License +0 -19
  402. package/node_modules/delayed-stream/Makefile +0 -7
  403. package/node_modules/delayed-stream/Readme.md +0 -141
  404. package/node_modules/delayed-stream/lib/delayed_stream.js +0 -107
  405. package/node_modules/delayed-stream/package.json +0 -27
  406. package/node_modules/dunder-proto/.eslintrc +0 -5
  407. package/node_modules/dunder-proto/.github/FUNDING.yml +0 -12
  408. package/node_modules/dunder-proto/.nycrc +0 -13
  409. package/node_modules/dunder-proto/CHANGELOG.md +0 -24
  410. package/node_modules/dunder-proto/LICENSE +0 -21
  411. package/node_modules/dunder-proto/README.md +0 -54
  412. package/node_modules/dunder-proto/get.d.ts +0 -5
  413. package/node_modules/dunder-proto/get.js +0 -30
  414. package/node_modules/dunder-proto/package.json +0 -76
  415. package/node_modules/dunder-proto/set.d.ts +0 -5
  416. package/node_modules/dunder-proto/set.js +0 -35
  417. package/node_modules/dunder-proto/test/get.js +0 -34
  418. package/node_modules/dunder-proto/test/index.js +0 -4
  419. package/node_modules/dunder-proto/test/set.js +0 -50
  420. package/node_modules/dunder-proto/tsconfig.json +0 -9
  421. package/node_modules/es-define-property/.eslintrc +0 -13
  422. package/node_modules/es-define-property/.github/FUNDING.yml +0 -12
  423. package/node_modules/es-define-property/.nycrc +0 -9
  424. package/node_modules/es-define-property/CHANGELOG.md +0 -29
  425. package/node_modules/es-define-property/LICENSE +0 -21
  426. package/node_modules/es-define-property/README.md +0 -49
  427. package/node_modules/es-define-property/index.d.ts +0 -3
  428. package/node_modules/es-define-property/index.js +0 -14
  429. package/node_modules/es-define-property/package.json +0 -81
  430. package/node_modules/es-define-property/test/index.js +0 -56
  431. package/node_modules/es-define-property/tsconfig.json +0 -10
  432. package/node_modules/es-errors/.eslintrc +0 -5
  433. package/node_modules/es-errors/.github/FUNDING.yml +0 -12
  434. package/node_modules/es-errors/CHANGELOG.md +0 -40
  435. package/node_modules/es-errors/LICENSE +0 -21
  436. package/node_modules/es-errors/README.md +0 -55
  437. package/node_modules/es-errors/eval.d.ts +0 -3
  438. package/node_modules/es-errors/eval.js +0 -4
  439. package/node_modules/es-errors/index.d.ts +0 -3
  440. package/node_modules/es-errors/index.js +0 -4
  441. package/node_modules/es-errors/package.json +0 -80
  442. package/node_modules/es-errors/range.d.ts +0 -3
  443. package/node_modules/es-errors/range.js +0 -4
  444. package/node_modules/es-errors/ref.d.ts +0 -3
  445. package/node_modules/es-errors/ref.js +0 -4
  446. package/node_modules/es-errors/syntax.d.ts +0 -3
  447. package/node_modules/es-errors/syntax.js +0 -4
  448. package/node_modules/es-errors/test/index.js +0 -19
  449. package/node_modules/es-errors/tsconfig.json +0 -49
  450. package/node_modules/es-errors/type.d.ts +0 -3
  451. package/node_modules/es-errors/type.js +0 -4
  452. package/node_modules/es-errors/uri.d.ts +0 -3
  453. package/node_modules/es-errors/uri.js +0 -4
  454. package/node_modules/es-object-atoms/.eslintrc +0 -16
  455. package/node_modules/es-object-atoms/.github/FUNDING.yml +0 -12
  456. package/node_modules/es-object-atoms/CHANGELOG.md +0 -44
  457. package/node_modules/es-object-atoms/LICENSE +0 -21
  458. package/node_modules/es-object-atoms/README.md +0 -63
  459. package/node_modules/es-object-atoms/RequireObjectCoercible.d.ts +0 -3
  460. package/node_modules/es-object-atoms/RequireObjectCoercible.js +0 -11
  461. package/node_modules/es-object-atoms/ToObject.d.ts +0 -7
  462. package/node_modules/es-object-atoms/ToObject.js +0 -10
  463. package/node_modules/es-object-atoms/index.d.ts +0 -3
  464. package/node_modules/es-object-atoms/index.js +0 -4
  465. package/node_modules/es-object-atoms/isObject.d.ts +0 -3
  466. package/node_modules/es-object-atoms/isObject.js +0 -6
  467. package/node_modules/es-object-atoms/package.json +0 -79
  468. package/node_modules/es-object-atoms/test/index.js +0 -38
  469. package/node_modules/es-object-atoms/tsconfig.json +0 -7
  470. package/node_modules/es-set-tostringtag/.eslintrc +0 -13
  471. package/node_modules/es-set-tostringtag/.nycrc +0 -9
  472. package/node_modules/es-set-tostringtag/CHANGELOG.md +0 -67
  473. package/node_modules/es-set-tostringtag/LICENSE +0 -21
  474. package/node_modules/es-set-tostringtag/README.md +0 -53
  475. package/node_modules/es-set-tostringtag/index.d.ts +0 -10
  476. package/node_modules/es-set-tostringtag/index.js +0 -35
  477. package/node_modules/es-set-tostringtag/package.json +0 -78
  478. package/node_modules/es-set-tostringtag/test/index.js +0 -85
  479. package/node_modules/es-set-tostringtag/tsconfig.json +0 -9
  480. package/node_modules/form-data/CHANGELOG.md +0 -686
  481. package/node_modules/form-data/License +0 -19
  482. package/node_modules/form-data/README.md +0 -355
  483. package/node_modules/form-data/index.d.ts +0 -62
  484. package/node_modules/form-data/lib/browser.js +0 -4
  485. package/node_modules/form-data/lib/form_data.js +0 -506
  486. package/node_modules/form-data/lib/populate.js +0 -10
  487. package/node_modules/form-data/node_modules/mime-db/HISTORY.md +0 -507
  488. package/node_modules/form-data/node_modules/mime-db/LICENSE +0 -23
  489. package/node_modules/form-data/node_modules/mime-db/README.md +0 -100
  490. package/node_modules/form-data/node_modules/mime-db/db.json +0 -8519
  491. package/node_modules/form-data/node_modules/mime-db/index.js +0 -12
  492. package/node_modules/form-data/node_modules/mime-db/package.json +0 -60
  493. package/node_modules/form-data/node_modules/mime-types/HISTORY.md +0 -397
  494. package/node_modules/form-data/node_modules/mime-types/LICENSE +0 -23
  495. package/node_modules/form-data/node_modules/mime-types/README.md +0 -113
  496. package/node_modules/form-data/node_modules/mime-types/index.js +0 -188
  497. package/node_modules/form-data/node_modules/mime-types/package.json +0 -44
  498. package/node_modules/form-data/package.json +0 -82
  499. package/node_modules/function-bind/.eslintrc +0 -21
  500. package/node_modules/function-bind/.github/FUNDING.yml +0 -12
  501. package/node_modules/function-bind/.github/SECURITY.md +0 -3
  502. package/node_modules/function-bind/.nycrc +0 -13
  503. package/node_modules/function-bind/CHANGELOG.md +0 -136
  504. package/node_modules/function-bind/LICENSE +0 -20
  505. package/node_modules/function-bind/README.md +0 -46
  506. package/node_modules/function-bind/implementation.js +0 -84
  507. package/node_modules/function-bind/index.js +0 -5
  508. package/node_modules/function-bind/package.json +0 -87
  509. package/node_modules/function-bind/test/.eslintrc +0 -9
  510. package/node_modules/function-bind/test/index.js +0 -252
  511. package/node_modules/get-intrinsic/.eslintrc +0 -42
  512. package/node_modules/get-intrinsic/.github/FUNDING.yml +0 -12
  513. package/node_modules/get-intrinsic/.nycrc +0 -9
  514. package/node_modules/get-intrinsic/CHANGELOG.md +0 -186
  515. package/node_modules/get-intrinsic/LICENSE +0 -21
  516. package/node_modules/get-intrinsic/README.md +0 -71
  517. package/node_modules/get-intrinsic/index.js +0 -378
  518. package/node_modules/get-intrinsic/package.json +0 -97
  519. package/node_modules/get-intrinsic/test/GetIntrinsic.js +0 -274
  520. package/node_modules/get-proto/.eslintrc +0 -10
  521. package/node_modules/get-proto/.github/FUNDING.yml +0 -12
  522. package/node_modules/get-proto/.nycrc +0 -9
  523. package/node_modules/get-proto/CHANGELOG.md +0 -21
  524. package/node_modules/get-proto/LICENSE +0 -21
  525. package/node_modules/get-proto/Object.getPrototypeOf.d.ts +0 -5
  526. package/node_modules/get-proto/Object.getPrototypeOf.js +0 -6
  527. package/node_modules/get-proto/README.md +0 -50
  528. package/node_modules/get-proto/Reflect.getPrototypeOf.d.ts +0 -3
  529. package/node_modules/get-proto/Reflect.getPrototypeOf.js +0 -4
  530. package/node_modules/get-proto/index.d.ts +0 -5
  531. package/node_modules/get-proto/index.js +0 -27
  532. package/node_modules/get-proto/package.json +0 -81
  533. package/node_modules/get-proto/test/index.js +0 -68
  534. package/node_modules/get-proto/tsconfig.json +0 -9
  535. package/node_modules/gopd/.eslintrc +0 -16
  536. package/node_modules/gopd/.github/FUNDING.yml +0 -12
  537. package/node_modules/gopd/CHANGELOG.md +0 -45
  538. package/node_modules/gopd/LICENSE +0 -21
  539. package/node_modules/gopd/README.md +0 -40
  540. package/node_modules/gopd/gOPD.d.ts +0 -1
  541. package/node_modules/gopd/gOPD.js +0 -4
  542. package/node_modules/gopd/index.d.ts +0 -5
  543. package/node_modules/gopd/index.js +0 -15
  544. package/node_modules/gopd/package.json +0 -77
  545. package/node_modules/gopd/test/index.js +0 -36
  546. package/node_modules/gopd/tsconfig.json +0 -9
  547. package/node_modules/has-symbols/.eslintrc +0 -11
  548. package/node_modules/has-symbols/.github/FUNDING.yml +0 -12
  549. package/node_modules/has-symbols/.nycrc +0 -9
  550. package/node_modules/has-symbols/CHANGELOG.md +0 -91
  551. package/node_modules/has-symbols/LICENSE +0 -21
  552. package/node_modules/has-symbols/README.md +0 -46
  553. package/node_modules/has-symbols/index.d.ts +0 -3
  554. package/node_modules/has-symbols/index.js +0 -14
  555. package/node_modules/has-symbols/package.json +0 -111
  556. package/node_modules/has-symbols/shams.d.ts +0 -3
  557. package/node_modules/has-symbols/shams.js +0 -45
  558. package/node_modules/has-symbols/test/index.js +0 -22
  559. package/node_modules/has-symbols/test/shams/core-js.js +0 -29
  560. package/node_modules/has-symbols/test/shams/get-own-property-symbols.js +0 -29
  561. package/node_modules/has-symbols/test/tests.js +0 -58
  562. package/node_modules/has-symbols/tsconfig.json +0 -10
  563. package/node_modules/has-tostringtag/.eslintrc +0 -5
  564. package/node_modules/has-tostringtag/.github/FUNDING.yml +0 -12
  565. package/node_modules/has-tostringtag/.nycrc +0 -13
  566. package/node_modules/has-tostringtag/CHANGELOG.md +0 -42
  567. package/node_modules/has-tostringtag/LICENSE +0 -21
  568. package/node_modules/has-tostringtag/README.md +0 -46
  569. package/node_modules/has-tostringtag/index.d.ts +0 -3
  570. package/node_modules/has-tostringtag/index.js +0 -8
  571. package/node_modules/has-tostringtag/package.json +0 -108
  572. package/node_modules/has-tostringtag/shams.d.ts +0 -3
  573. package/node_modules/has-tostringtag/shams.js +0 -8
  574. package/node_modules/has-tostringtag/test/index.js +0 -21
  575. package/node_modules/has-tostringtag/test/shams/core-js.js +0 -31
  576. package/node_modules/has-tostringtag/test/shams/get-own-property-symbols.js +0 -30
  577. package/node_modules/has-tostringtag/test/tests.js +0 -15
  578. package/node_modules/has-tostringtag/tsconfig.json +0 -49
  579. package/node_modules/hasown/.github/FUNDING.yml +0 -12
  580. package/node_modules/hasown/.nycrc +0 -13
  581. package/node_modules/hasown/CHANGELOG.md +0 -58
  582. package/node_modules/hasown/LICENSE +0 -21
  583. package/node_modules/hasown/README.md +0 -40
  584. package/node_modules/hasown/eslint.config.mjs +0 -6
  585. package/node_modules/hasown/index.d.ts +0 -3
  586. package/node_modules/hasown/index.js +0 -8
  587. package/node_modules/hasown/package.json +0 -91
  588. package/node_modules/hasown/tsconfig.json +0 -6
  589. package/node_modules/json-bigint/LICENSE +0 -20
  590. package/node_modules/json-bigint/README.md +0 -240
  591. package/node_modules/json-bigint/index.js +0 -12
  592. package/node_modules/json-bigint/lib/parse.js +0 -443
  593. package/node_modules/json-bigint/lib/stringify.js +0 -384
  594. package/node_modules/json-bigint/package.json +0 -34
  595. package/node_modules/math-intrinsics/.eslintrc +0 -16
  596. package/node_modules/math-intrinsics/.github/FUNDING.yml +0 -12
  597. package/node_modules/math-intrinsics/CHANGELOG.md +0 -24
  598. package/node_modules/math-intrinsics/LICENSE +0 -21
  599. package/node_modules/math-intrinsics/README.md +0 -50
  600. package/node_modules/math-intrinsics/abs.d.ts +0 -1
  601. package/node_modules/math-intrinsics/abs.js +0 -4
  602. package/node_modules/math-intrinsics/constants/maxArrayLength.d.ts +0 -3
  603. package/node_modules/math-intrinsics/constants/maxArrayLength.js +0 -4
  604. package/node_modules/math-intrinsics/constants/maxSafeInteger.d.ts +0 -3
  605. package/node_modules/math-intrinsics/constants/maxSafeInteger.js +0 -5
  606. package/node_modules/math-intrinsics/constants/maxValue.d.ts +0 -3
  607. package/node_modules/math-intrinsics/constants/maxValue.js +0 -5
  608. package/node_modules/math-intrinsics/floor.d.ts +0 -1
  609. package/node_modules/math-intrinsics/floor.js +0 -4
  610. package/node_modules/math-intrinsics/isFinite.d.ts +0 -3
  611. package/node_modules/math-intrinsics/isFinite.js +0 -12
  612. package/node_modules/math-intrinsics/isInteger.d.ts +0 -3
  613. package/node_modules/math-intrinsics/isInteger.js +0 -16
  614. package/node_modules/math-intrinsics/isNaN.d.ts +0 -1
  615. package/node_modules/math-intrinsics/isNaN.js +0 -6
  616. package/node_modules/math-intrinsics/isNegativeZero.d.ts +0 -3
  617. package/node_modules/math-intrinsics/isNegativeZero.js +0 -6
  618. package/node_modules/math-intrinsics/max.d.ts +0 -1
  619. package/node_modules/math-intrinsics/max.js +0 -4
  620. package/node_modules/math-intrinsics/min.d.ts +0 -1
  621. package/node_modules/math-intrinsics/min.js +0 -4
  622. package/node_modules/math-intrinsics/mod.d.ts +0 -3
  623. package/node_modules/math-intrinsics/mod.js +0 -9
  624. package/node_modules/math-intrinsics/package.json +0 -86
  625. package/node_modules/math-intrinsics/pow.d.ts +0 -1
  626. package/node_modules/math-intrinsics/pow.js +0 -4
  627. package/node_modules/math-intrinsics/round.d.ts +0 -1
  628. package/node_modules/math-intrinsics/round.js +0 -4
  629. package/node_modules/math-intrinsics/sign.d.ts +0 -3
  630. package/node_modules/math-intrinsics/sign.js +0 -11
  631. package/node_modules/math-intrinsics/test/index.js +0 -192
  632. package/node_modules/math-intrinsics/tsconfig.json +0 -3
  633. package/node_modules/pako/LICENSE +0 -21
  634. package/node_modules/pako/README.md +0 -155
  635. package/node_modules/pako/dist/pako.es5.js +0 -6760
  636. package/node_modules/pako/dist/pako.es5.min.js +0 -2
  637. package/node_modules/pako/dist/pako.esm.mjs +0 -6945
  638. package/node_modules/pako/dist/pako.js +0 -6964
  639. package/node_modules/pako/dist/pako.min.js +0 -2
  640. package/node_modules/pako/dist/pako_deflate.es5.js +0 -3953
  641. package/node_modules/pako/dist/pako_deflate.es5.min.js +0 -2
  642. package/node_modules/pako/dist/pako_deflate.js +0 -4154
  643. package/node_modules/pako/dist/pako_deflate.min.js +0 -2
  644. package/node_modules/pako/dist/pako_inflate.es5.js +0 -3272
  645. package/node_modules/pako/dist/pako_inflate.es5.min.js +0 -2
  646. package/node_modules/pako/dist/pako_inflate.js +0 -3279
  647. package/node_modules/pako/dist/pako_inflate.min.js +0 -2
  648. package/node_modules/pako/index.js +0 -18
  649. package/node_modules/pako/lib/deflate.js +0 -387
  650. package/node_modules/pako/lib/inflate.js +0 -456
  651. package/node_modules/pako/lib/utils/common.js +0 -48
  652. package/node_modules/pako/lib/utils/strings.js +0 -174
  653. package/node_modules/pako/lib/zlib/README +0 -59
  654. package/node_modules/pako/lib/zlib/adler32.js +0 -51
  655. package/node_modules/pako/lib/zlib/constants.js +0 -68
  656. package/node_modules/pako/lib/zlib/crc32.js +0 -59
  657. package/node_modules/pako/lib/zlib/deflate.js +0 -2069
  658. package/node_modules/pako/lib/zlib/gzheader.js +0 -58
  659. package/node_modules/pako/lib/zlib/inffast.js +0 -344
  660. package/node_modules/pako/lib/zlib/inflate.js +0 -1575
  661. package/node_modules/pako/lib/zlib/inftrees.js +0 -340
  662. package/node_modules/pako/lib/zlib/messages.js +0 -32
  663. package/node_modules/pako/lib/zlib/trees.js +0 -1179
  664. package/node_modules/pako/lib/zlib/zstream.js +0 -47
  665. package/node_modules/pako/package.json +0 -73
  666. package/node_modules/semver/LICENSE +0 -15
  667. package/node_modules/semver/README.md +0 -680
  668. package/node_modules/semver/bin/semver.js +0 -195
  669. package/node_modules/semver/classes/comparator.js +0 -143
  670. package/node_modules/semver/classes/index.js +0 -7
  671. package/node_modules/semver/classes/range.js +0 -577
  672. package/node_modules/semver/classes/semver.js +0 -350
  673. package/node_modules/semver/functions/clean.js +0 -8
  674. package/node_modules/semver/functions/cmp.js +0 -54
  675. package/node_modules/semver/functions/coerce.js +0 -62
  676. package/node_modules/semver/functions/compare-build.js +0 -9
  677. package/node_modules/semver/functions/compare-loose.js +0 -5
  678. package/node_modules/semver/functions/compare.js +0 -7
  679. package/node_modules/semver/functions/diff.js +0 -60
  680. package/node_modules/semver/functions/eq.js +0 -5
  681. package/node_modules/semver/functions/gt.js +0 -5
  682. package/node_modules/semver/functions/gte.js +0 -5
  683. package/node_modules/semver/functions/inc.js +0 -21
  684. package/node_modules/semver/functions/lt.js +0 -5
  685. package/node_modules/semver/functions/lte.js +0 -5
  686. package/node_modules/semver/functions/major.js +0 -5
  687. package/node_modules/semver/functions/minor.js +0 -5
  688. package/node_modules/semver/functions/neq.js +0 -5
  689. package/node_modules/semver/functions/parse.js +0 -18
  690. package/node_modules/semver/functions/patch.js +0 -5
  691. package/node_modules/semver/functions/prerelease.js +0 -8
  692. package/node_modules/semver/functions/rcompare.js +0 -5
  693. package/node_modules/semver/functions/rsort.js +0 -5
  694. package/node_modules/semver/functions/satisfies.js +0 -12
  695. package/node_modules/semver/functions/sort.js +0 -5
  696. package/node_modules/semver/functions/truncate.js +0 -48
  697. package/node_modules/semver/functions/valid.js +0 -8
  698. package/node_modules/semver/index.js +0 -93
  699. package/node_modules/semver/internal/constants.js +0 -37
  700. package/node_modules/semver/internal/debug.js +0 -11
  701. package/node_modules/semver/internal/identifiers.js +0 -29
  702. package/node_modules/semver/internal/lrucache.js +0 -42
  703. package/node_modules/semver/internal/parse-options.js +0 -17
  704. package/node_modules/semver/internal/re.js +0 -223
  705. package/node_modules/semver/package.json +0 -78
  706. package/node_modules/semver/preload.js +0 -4
  707. package/node_modules/semver/range.bnf +0 -17
  708. package/node_modules/semver/ranges/gtr.js +0 -6
  709. package/node_modules/semver/ranges/intersects.js +0 -9
  710. package/node_modules/semver/ranges/ltr.js +0 -6
  711. package/node_modules/semver/ranges/max-satisfying.js +0 -27
  712. package/node_modules/semver/ranges/min-satisfying.js +0 -26
  713. package/node_modules/semver/ranges/min-version.js +0 -63
  714. package/node_modules/semver/ranges/outside.js +0 -82
  715. package/node_modules/semver/ranges/simplify.js +0 -49
  716. package/node_modules/semver/ranges/subset.js +0 -249
  717. package/node_modules/semver/ranges/to-comparators.js +0 -10
  718. package/node_modules/semver/ranges/valid.js +0 -13
  719. package/node_modules/spark-md5/LICENSE +0 -13
  720. package/node_modules/spark-md5/README.md +0 -191
  721. package/node_modules/spark-md5/package.json +0 -35
  722. package/node_modules/spark-md5/spark-md5.js +0 -751
  723. package/node_modules/spark-md5/spark-md5.min.js +0 -1
  724. package/node_modules/tldts/LICENSE +0 -13
  725. package/node_modules/tldts/README.md +0 -327
  726. package/node_modules/tldts/bin/cli.js +0 -21
  727. package/node_modules/tldts/dist/cjs/index.js +0 -666
  728. package/node_modules/tldts/dist/cjs/index.js.map +0 -1
  729. package/node_modules/tldts/dist/cjs/src/data/trie.js +0 -14
  730. package/node_modules/tldts/dist/cjs/src/data/trie.js.map +0 -1
  731. package/node_modules/tldts/dist/cjs/src/suffix-trie.js +0 -67
  732. package/node_modules/tldts/dist/cjs/src/suffix-trie.js.map +0 -1
  733. package/node_modules/tldts/dist/cjs/tsconfig.tsbuildinfo +0 -1
  734. package/node_modules/tldts/dist/es6/index.js +0 -33
  735. package/node_modules/tldts/dist/es6/index.js.map +0 -1
  736. package/node_modules/tldts/dist/es6/src/data/trie.js +0 -11
  737. package/node_modules/tldts/dist/es6/src/data/trie.js.map +0 -1
  738. package/node_modules/tldts/dist/es6/src/suffix-trie.js +0 -64
  739. package/node_modules/tldts/dist/es6/src/suffix-trie.js.map +0 -1
  740. package/node_modules/tldts/dist/es6/tsconfig.bundle.tsbuildinfo +0 -1
  741. package/node_modules/tldts/dist/index.cjs.min.js +0 -2
  742. package/node_modules/tldts/dist/index.cjs.min.js.map +0 -1
  743. package/node_modules/tldts/dist/index.esm.min.js +0 -2
  744. package/node_modules/tldts/dist/index.esm.min.js.map +0 -1
  745. package/node_modules/tldts/dist/index.umd.min.js +0 -2
  746. package/node_modules/tldts/dist/index.umd.min.js.map +0 -1
  747. package/node_modules/tldts/dist/types/index.d.ts +0 -7
  748. package/node_modules/tldts/dist/types/src/data/trie.d.ts +0 -5
  749. package/node_modules/tldts/dist/types/src/suffix-trie.d.ts +0 -5
  750. package/node_modules/tldts/index.ts +0 -62
  751. package/node_modules/tldts/package.json +0 -91
  752. package/node_modules/tldts/src/data/trie.ts +0 -14
  753. package/node_modules/tldts/src/suffix-trie.ts +0 -110
  754. package/node_modules/tldts-core/LICENSE +0 -13
  755. package/node_modules/tldts-core/README.md +0 -3
  756. package/node_modules/tldts-core/dist/cjs/index.js +0 -561
  757. package/node_modules/tldts-core/dist/cjs/index.js.map +0 -1
  758. package/node_modules/tldts-core/dist/cjs/src/domain-without-suffix.js +0 -15
  759. package/node_modules/tldts-core/dist/cjs/src/domain-without-suffix.js.map +0 -1
  760. package/node_modules/tldts-core/dist/cjs/src/domain.js +0 -83
  761. package/node_modules/tldts-core/dist/cjs/src/domain.js.map +0 -1
  762. package/node_modules/tldts-core/dist/cjs/src/extract-hostname.js +0 -149
  763. package/node_modules/tldts-core/dist/cjs/src/extract-hostname.js.map +0 -1
  764. package/node_modules/tldts-core/dist/cjs/src/factory.js +0 -104
  765. package/node_modules/tldts-core/dist/cjs/src/factory.js.map +0 -1
  766. package/node_modules/tldts-core/dist/cjs/src/is-ip.js +0 -72
  767. package/node_modules/tldts-core/dist/cjs/src/is-ip.js.map +0 -1
  768. package/node_modules/tldts-core/dist/cjs/src/is-valid.js +0 -69
  769. package/node_modules/tldts-core/dist/cjs/src/is-valid.js.map +0 -1
  770. package/node_modules/tldts-core/dist/cjs/src/lookup/fast-path.js +0 -69
  771. package/node_modules/tldts-core/dist/cjs/src/lookup/fast-path.js.map +0 -1
  772. package/node_modules/tldts-core/dist/cjs/src/lookup/interface.js +0 -3
  773. package/node_modules/tldts-core/dist/cjs/src/lookup/interface.js.map +0 -1
  774. package/node_modules/tldts-core/dist/cjs/src/options.js +0 -22
  775. package/node_modules/tldts-core/dist/cjs/src/options.js.map +0 -1
  776. package/node_modules/tldts-core/dist/cjs/src/subdomain.js +0 -14
  777. package/node_modules/tldts-core/dist/cjs/src/subdomain.js.map +0 -1
  778. package/node_modules/tldts-core/dist/cjs/tsconfig.tsbuildinfo +0 -1
  779. package/node_modules/tldts-core/dist/es6/index.js +0 -4
  780. package/node_modules/tldts-core/dist/es6/index.js.map +0 -1
  781. package/node_modules/tldts-core/dist/es6/src/domain-without-suffix.js +0 -12
  782. package/node_modules/tldts-core/dist/es6/src/domain-without-suffix.js.map +0 -1
  783. package/node_modules/tldts-core/dist/es6/src/domain.js +0 -80
  784. package/node_modules/tldts-core/dist/es6/src/domain.js.map +0 -1
  785. package/node_modules/tldts-core/dist/es6/src/extract-hostname.js +0 -146
  786. package/node_modules/tldts-core/dist/es6/src/extract-hostname.js.map +0 -1
  787. package/node_modules/tldts-core/dist/es6/src/factory.js +0 -99
  788. package/node_modules/tldts-core/dist/es6/src/factory.js.map +0 -1
  789. package/node_modules/tldts-core/dist/es6/src/is-ip.js +0 -69
  790. package/node_modules/tldts-core/dist/es6/src/is-ip.js.map +0 -1
  791. package/node_modules/tldts-core/dist/es6/src/is-valid.js +0 -66
  792. package/node_modules/tldts-core/dist/es6/src/is-valid.js.map +0 -1
  793. package/node_modules/tldts-core/dist/es6/src/lookup/fast-path.js +0 -66
  794. package/node_modules/tldts-core/dist/es6/src/lookup/fast-path.js.map +0 -1
  795. package/node_modules/tldts-core/dist/es6/src/lookup/interface.js +0 -2
  796. package/node_modules/tldts-core/dist/es6/src/lookup/interface.js.map +0 -1
  797. package/node_modules/tldts-core/dist/es6/src/options.js +0 -19
  798. package/node_modules/tldts-core/dist/es6/src/options.js.map +0 -1
  799. package/node_modules/tldts-core/dist/es6/src/subdomain.js +0 -11
  800. package/node_modules/tldts-core/dist/es6/src/subdomain.js.map +0 -1
  801. package/node_modules/tldts-core/dist/es6/tsconfig.bundle.tsbuildinfo +0 -1
  802. package/node_modules/tldts-core/dist/types/index.d.ts +0 -4
  803. package/node_modules/tldts-core/dist/types/src/domain-without-suffix.d.ts +0 -6
  804. package/node_modules/tldts-core/dist/types/src/domain.d.ts +0 -5
  805. package/node_modules/tldts-core/dist/types/src/extract-hostname.d.ts +0 -5
  806. package/node_modules/tldts-core/dist/types/src/factory.d.ts +0 -28
  807. package/node_modules/tldts-core/dist/types/src/is-ip.d.ts +0 -6
  808. package/node_modules/tldts-core/dist/types/src/is-valid.d.ts +0 -15
  809. package/node_modules/tldts-core/dist/types/src/lookup/fast-path.d.ts +0 -2
  810. package/node_modules/tldts-core/dist/types/src/lookup/interface.d.ts +0 -9
  811. package/node_modules/tldts-core/dist/types/src/options.d.ts +0 -10
  812. package/node_modules/tldts-core/dist/types/src/subdomain.d.ts +0 -4
  813. package/node_modules/tldts-core/index.ts +0 -10
  814. package/node_modules/tldts-core/package.json +0 -68
  815. package/node_modules/tldts-core/src/domain-without-suffix.ts +0 -14
  816. package/node_modules/tldts-core/src/domain.ts +0 -100
  817. package/node_modules/tldts-core/src/extract-hostname.ts +0 -170
  818. package/node_modules/tldts-core/src/factory.ts +0 -160
  819. package/node_modules/tldts-core/src/is-ip.ts +0 -87
  820. package/node_modules/tldts-core/src/is-valid.ts +0 -79
  821. package/node_modules/tldts-core/src/lookup/fast-path.ts +0 -80
  822. package/node_modules/tldts-core/src/lookup/interface.ts +0 -10
  823. package/node_modules/tldts-core/src/options.ts +0 -39
  824. package/node_modules/tldts-core/src/subdomain.ts +0 -11
  825. package/node_modules/tough-cookie/LICENSE +0 -12
  826. package/node_modules/tough-cookie/README.md +0 -154
  827. package/node_modules/tough-cookie/dist/cookie/canonicalDomain.d.ts +0 -33
  828. package/node_modules/tough-cookie/dist/cookie/canonicalDomain.js +0 -65
  829. package/node_modules/tough-cookie/dist/cookie/constants.d.ts +0 -54
  830. package/node_modules/tough-cookie/dist/cookie/constants.js +0 -38
  831. package/node_modules/tough-cookie/dist/cookie/cookie.d.ts +0 -326
  832. package/node_modules/tough-cookie/dist/cookie/cookie.js +0 -831
  833. package/node_modules/tough-cookie/dist/cookie/cookieCompare.d.ts +0 -58
  834. package/node_modules/tough-cookie/dist/cookie/cookieCompare.js +0 -84
  835. package/node_modules/tough-cookie/dist/cookie/cookieJar.d.ts +0 -621
  836. package/node_modules/tough-cookie/dist/cookie/cookieJar.js +0 -1000
  837. package/node_modules/tough-cookie/dist/cookie/defaultPath.d.ts +0 -40
  838. package/node_modules/tough-cookie/dist/cookie/defaultPath.js +0 -60
  839. package/node_modules/tough-cookie/dist/cookie/domainMatch.d.ts +0 -38
  840. package/node_modules/tough-cookie/dist/cookie/domainMatch.js +0 -94
  841. package/node_modules/tough-cookie/dist/cookie/formatDate.d.ts +0 -15
  842. package/node_modules/tough-cookie/dist/cookie/formatDate.js +0 -20
  843. package/node_modules/tough-cookie/dist/cookie/index.d.ts +0 -29
  844. package/node_modules/tough-cookie/dist/cookie/index.js +0 -54
  845. package/node_modules/tough-cookie/dist/cookie/parseDate.d.ts +0 -103
  846. package/node_modules/tough-cookie/dist/cookie/parseDate.js +0 -323
  847. package/node_modules/tough-cookie/dist/cookie/permutePath.d.ts +0 -14
  848. package/node_modules/tough-cookie/dist/cookie/permutePath.js +0 -32
  849. package/node_modules/tough-cookie/dist/getPublicSuffix.d.ts +0 -55
  850. package/node_modules/tough-cookie/dist/getPublicSuffix.js +0 -71
  851. package/node_modules/tough-cookie/dist/memstore.d.ts +0 -220
  852. package/node_modules/tough-cookie/dist/memstore.js +0 -187
  853. package/node_modules/tough-cookie/dist/pathMatch.d.ts +0 -17
  854. package/node_modules/tough-cookie/dist/pathMatch.js +0 -40
  855. package/node_modules/tough-cookie/dist/permuteDomain.d.ts +0 -15
  856. package/node_modules/tough-cookie/dist/permuteDomain.js +0 -44
  857. package/node_modules/tough-cookie/dist/store.d.ts +0 -211
  858. package/node_modules/tough-cookie/dist/store.js +0 -76
  859. package/node_modules/tough-cookie/dist/utils.d.ts +0 -34
  860. package/node_modules/tough-cookie/dist/utils.js +0 -99
  861. package/node_modules/tough-cookie/dist/validators.d.ts +0 -24
  862. package/node_modules/tough-cookie/dist/validators.js +0 -90
  863. package/node_modules/tough-cookie/dist/version.d.ts +0 -5
  864. package/node_modules/tough-cookie/dist/version.js +0 -8
  865. package/node_modules/tough-cookie/package.json +0 -144
  866. package/node_modules/ws/LICENSE +0 -20
  867. package/node_modules/ws/README.md +0 -548
  868. package/node_modules/ws/browser.js +0 -8
  869. package/node_modules/ws/index.js +0 -22
  870. package/node_modules/ws/lib/buffer-util.js +0 -131
  871. package/node_modules/ws/lib/constants.js +0 -19
  872. package/node_modules/ws/lib/event-target.js +0 -292
  873. package/node_modules/ws/lib/extension.js +0 -203
  874. package/node_modules/ws/lib/limiter.js +0 -55
  875. package/node_modules/ws/lib/permessage-deflate.js +0 -530
  876. package/node_modules/ws/lib/receiver.js +0 -743
  877. package/node_modules/ws/lib/sender.js +0 -607
  878. package/node_modules/ws/lib/stream.js +0 -161
  879. package/node_modules/ws/lib/subprotocol.js +0 -62
  880. package/node_modules/ws/lib/validation.js +0 -152
  881. package/node_modules/ws/lib/websocket-server.js +0 -562
  882. package/node_modules/ws/lib/websocket.js +0 -1407
  883. package/node_modules/ws/package.json +0 -74
  884. package/node_modules/ws/wrapper.mjs +0 -21
  885. package/node_modules/zca-js/.prettierrc +0 -5
  886. package/node_modules/zca-js/CODE_OF_CONDUCT.md +0 -163
  887. package/node_modules/zca-js/CONTRIBUTING.md +0 -470
  888. package/node_modules/zca-js/LICENSE +0 -21
  889. package/node_modules/zca-js/README.md +0 -225
  890. package/node_modules/zca-js/SECURITY.md +0 -83
  891. package/node_modules/zca-js/dist/Errors/ZaloApiError.d.ts +0 -4
  892. package/node_modules/zca-js/dist/Errors/ZaloApiError.js +0 -7
  893. package/node_modules/zca-js/dist/Errors/ZaloApiLoginQRAborted.d.ts +0 -4
  894. package/node_modules/zca-js/dist/Errors/ZaloApiLoginQRAborted.js +0 -7
  895. package/node_modules/zca-js/dist/Errors/ZaloApiLoginQRDeclined.d.ts +0 -4
  896. package/node_modules/zca-js/dist/Errors/ZaloApiLoginQRDeclined.js +0 -7
  897. package/node_modules/zca-js/dist/Errors/ZaloApiMissingImageMetadataGetter.d.ts +0 -4
  898. package/node_modules/zca-js/dist/Errors/ZaloApiMissingImageMetadataGetter.js +0 -7
  899. package/node_modules/zca-js/dist/Errors/index.d.ts +0 -4
  900. package/node_modules/zca-js/dist/Errors/index.js +0 -4
  901. package/node_modules/zca-js/dist/apis/acceptFriendRequest.d.ts +0 -2
  902. package/node_modules/zca-js/dist/apis/acceptFriendRequest.js +0 -28
  903. package/node_modules/zca-js/dist/apis/addGroupBlockedMember.d.ts +0 -2
  904. package/node_modules/zca-js/dist/apis/addGroupBlockedMember.js +0 -28
  905. package/node_modules/zca-js/dist/apis/addGroupDeputy.d.ts +0 -2
  906. package/node_modules/zca-js/dist/apis/addGroupDeputy.js +0 -30
  907. package/node_modules/zca-js/dist/apis/addPollOptions.d.ts +0 -14
  908. package/node_modules/zca-js/dist/apis/addPollOptions.js +0 -26
  909. package/node_modules/zca-js/dist/apis/addQuickMessage.d.ts +0 -11
  910. package/node_modules/zca-js/dist/apis/addQuickMessage.js +0 -60
  911. package/node_modules/zca-js/dist/apis/addReaction.d.ts +0 -18
  912. package/node_modules/zca-js/dist/apis/addReaction.js +0 -294
  913. package/node_modules/zca-js/dist/apis/addUnreadMark.d.ts +0 -8
  914. package/node_modules/zca-js/dist/apis/addUnreadMark.js +0 -52
  915. package/node_modules/zca-js/dist/apis/addUserToGroup.d.ts +0 -5
  916. package/node_modules/zca-js/dist/apis/addUserToGroup.js +0 -34
  917. package/node_modules/zca-js/dist/apis/blockUser.d.ts +0 -2
  918. package/node_modules/zca-js/dist/apis/blockUser.js +0 -28
  919. package/node_modules/zca-js/dist/apis/blockViewFeed.d.ts +0 -2
  920. package/node_modules/zca-js/dist/apis/blockViewFeed.js +0 -30
  921. package/node_modules/zca-js/dist/apis/changeAccountAvatar.d.ts +0 -3
  922. package/node_modules/zca-js/dist/apis/changeAccountAvatar.js +0 -52
  923. package/node_modules/zca-js/dist/apis/changeFriendAlias.d.ts +0 -2
  924. package/node_modules/zca-js/dist/apis/changeFriendAlias.js +0 -27
  925. package/node_modules/zca-js/dist/apis/changeGroupAvatar.d.ts +0 -3
  926. package/node_modules/zca-js/dist/apis/changeGroupAvatar.js +0 -44
  927. package/node_modules/zca-js/dist/apis/changeGroupName.d.ts +0 -4
  928. package/node_modules/zca-js/dist/apis/changeGroupName.js +0 -32
  929. package/node_modules/zca-js/dist/apis/changeGroupOwner.d.ts +0 -4
  930. package/node_modules/zca-js/dist/apis/changeGroupOwner.js +0 -30
  931. package/node_modules/zca-js/dist/apis/createAutoReply.d.ts +0 -14
  932. package/node_modules/zca-js/dist/apis/createAutoReply.js +0 -37
  933. package/node_modules/zca-js/dist/apis/createBankAccount.d.ts +0 -8
  934. package/node_modules/zca-js/dist/apis/createBankAccount.js +0 -32
  935. package/node_modules/zca-js/dist/apis/createCatalog.d.ts +0 -7
  936. package/node_modules/zca-js/dist/apis/createCatalog.js +0 -29
  937. package/node_modules/zca-js/dist/apis/createGroup.d.ts +0 -28
  938. package/node_modules/zca-js/dist/apis/createGroup.js +0 -43
  939. package/node_modules/zca-js/dist/apis/createNote.d.ts +0 -7
  940. package/node_modules/zca-js/dist/apis/createNote.js +0 -47
  941. package/node_modules/zca-js/dist/apis/createPoll.d.ts +0 -36
  942. package/node_modules/zca-js/dist/apis/createPoll.js +0 -40
  943. package/node_modules/zca-js/dist/apis/createProductCatalog.d.ts +0 -23
  944. package/node_modules/zca-js/dist/apis/createProductCatalog.js +0 -50
  945. package/node_modules/zca-js/dist/apis/createReminder.d.ts +0 -12
  946. package/node_modules/zca-js/dist/apis/createReminder.js +0 -63
  947. package/node_modules/zca-js/dist/apis/custom.d.ts +0 -9
  948. package/node_modules/zca-js/dist/apis/custom.js +0 -15
  949. package/node_modules/zca-js/dist/apis/deleteAutoReply.d.ts +0 -5
  950. package/node_modules/zca-js/dist/apis/deleteAutoReply.js +0 -29
  951. package/node_modules/zca-js/dist/apis/deleteAvatar.d.ts +0 -9
  952. package/node_modules/zca-js/dist/apis/deleteAvatar.js +0 -27
  953. package/node_modules/zca-js/dist/apis/deleteBankAccount.d.ts +0 -11
  954. package/node_modules/zca-js/dist/apis/deleteBankAccount.js +0 -32
  955. package/node_modules/zca-js/dist/apis/deleteCatalog.d.ts +0 -2
  956. package/node_modules/zca-js/dist/apis/deleteCatalog.js +0 -28
  957. package/node_modules/zca-js/dist/apis/deleteChat.d.ts +0 -19
  958. package/node_modules/zca-js/dist/apis/deleteChat.js +0 -50
  959. package/node_modules/zca-js/dist/apis/deleteGroupInviteBox.d.ts +0 -9
  960. package/node_modules/zca-js/dist/apis/deleteGroupInviteBox.js +0 -27
  961. package/node_modules/zca-js/dist/apis/deleteMessage.d.ts +0 -14
  962. package/node_modules/zca-js/dist/apis/deleteMessage.js +0 -52
  963. package/node_modules/zca-js/dist/apis/deleteProductCatalog.d.ts +0 -10
  964. package/node_modules/zca-js/dist/apis/deleteProductCatalog.js +0 -31
  965. package/node_modules/zca-js/dist/apis/disableGroupLink.d.ts +0 -2
  966. package/node_modules/zca-js/dist/apis/disableGroupLink.js +0 -24
  967. package/node_modules/zca-js/dist/apis/disperseGroup.d.ts +0 -2
  968. package/node_modules/zca-js/dist/apis/disperseGroup.js +0 -28
  969. package/node_modules/zca-js/dist/apis/editNote.d.ts +0 -17
  970. package/node_modules/zca-js/dist/apis/editNote.js +0 -46
  971. package/node_modules/zca-js/dist/apis/editReminder.d.ts +0 -13
  972. package/node_modules/zca-js/dist/apis/editReminder.js +0 -61
  973. package/node_modules/zca-js/dist/apis/enableGroupLink.d.ts +0 -6
  974. package/node_modules/zca-js/dist/apis/enableGroupLink.js +0 -25
  975. package/node_modules/zca-js/dist/apis/fetchAccountInfo.d.ts +0 -5
  976. package/node_modules/zca-js/dist/apis/fetchAccountInfo.js +0 -10
  977. package/node_modules/zca-js/dist/apis/findUser.d.ts +0 -3
  978. package/node_modules/zca-js/dist/apis/findUser.js +0 -42
  979. package/node_modules/zca-js/dist/apis/findUserByUsername.d.ts +0 -3
  980. package/node_modules/zca-js/dist/apis/findUserByUsername.js +0 -27
  981. package/node_modules/zca-js/dist/apis/forwardMessage.d.ts +0 -24
  982. package/node_modules/zca-js/dist/apis/forwardMessage.js +0 -114
  983. package/node_modules/zca-js/dist/apis/getAliasList.d.ts +0 -8
  984. package/node_modules/zca-js/dist/apis/getAliasList.js +0 -27
  985. package/node_modules/zca-js/dist/apis/getAllFriends.d.ts +0 -3
  986. package/node_modules/zca-js/dist/apis/getAllFriends.js +0 -34
  987. package/node_modules/zca-js/dist/apis/getAllGroups.d.ts +0 -7
  988. package/node_modules/zca-js/dist/apis/getAllGroups.js +0 -10
  989. package/node_modules/zca-js/dist/apis/getArchivedChatList.d.ts +0 -5
  990. package/node_modules/zca-js/dist/apis/getArchivedChatList.js +0 -23
  991. package/node_modules/zca-js/dist/apis/getAutoDeleteChat.d.ts +0 -9
  992. package/node_modules/zca-js/dist/apis/getAutoDeleteChat.js +0 -21
  993. package/node_modules/zca-js/dist/apis/getAutoReplyList.d.ts +0 -6
  994. package/node_modules/zca-js/dist/apis/getAutoReplyList.js +0 -24
  995. package/node_modules/zca-js/dist/apis/getAvatarList.d.ts +0 -12
  996. package/node_modules/zca-js/dist/apis/getAvatarList.js +0 -28
  997. package/node_modules/zca-js/dist/apis/getAvatarUrlProfile.d.ts +0 -7
  998. package/node_modules/zca-js/dist/apis/getAvatarUrlProfile.js +0 -30
  999. package/node_modules/zca-js/dist/apis/getBizAccount.d.ts +0 -24
  1000. package/node_modules/zca-js/dist/apis/getBizAccount.js +0 -27
  1001. package/node_modules/zca-js/dist/apis/getCatalogList.d.ts +0 -18
  1002. package/node_modules/zca-js/dist/apis/getCatalogList.js +0 -32
  1003. package/node_modules/zca-js/dist/apis/getCloseFriends.d.ts +0 -3
  1004. package/node_modules/zca-js/dist/apis/getCloseFriends.js +0 -20
  1005. package/node_modules/zca-js/dist/apis/getContext.d.ts +0 -1
  1006. package/node_modules/zca-js/dist/apis/getContext.js +0 -4
  1007. package/node_modules/zca-js/dist/apis/getCookie.d.ts +0 -1
  1008. package/node_modules/zca-js/dist/apis/getCookie.js +0 -9
  1009. package/node_modules/zca-js/dist/apis/getFriendBoardList.d.ts +0 -5
  1010. package/node_modules/zca-js/dist/apis/getFriendBoardList.js +0 -26
  1011. package/node_modules/zca-js/dist/apis/getFriendOnlines.d.ts +0 -10
  1012. package/node_modules/zca-js/dist/apis/getFriendOnlines.js +0 -35
  1013. package/node_modules/zca-js/dist/apis/getFriendRecommendations.d.ts +0 -42
  1014. package/node_modules/zca-js/dist/apis/getFriendRecommendations.js +0 -27
  1015. package/node_modules/zca-js/dist/apis/getFriendRequestStatus.d.ts +0 -8
  1016. package/node_modules/zca-js/dist/apis/getFriendRequestStatus.js +0 -25
  1017. package/node_modules/zca-js/dist/apis/getFullAvatar.d.ts +0 -5
  1018. package/node_modules/zca-js/dist/apis/getFullAvatar.js +0 -25
  1019. package/node_modules/zca-js/dist/apis/getGroupBlockedMember.d.ts +0 -23
  1020. package/node_modules/zca-js/dist/apis/getGroupBlockedMember.js +0 -29
  1021. package/node_modules/zca-js/dist/apis/getGroupChatHistory.d.ts +0 -8
  1022. package/node_modules/zca-js/dist/apis/getGroupChatHistory.js +0 -36
  1023. package/node_modules/zca-js/dist/apis/getGroupInfo.d.ts +0 -16
  1024. package/node_modules/zca-js/dist/apis/getGroupInfo.js +0 -32
  1025. package/node_modules/zca-js/dist/apis/getGroupInviteBoxInfo.d.ts +0 -32
  1026. package/node_modules/zca-js/dist/apis/getGroupInviteBoxInfo.js +0 -38
  1027. package/node_modules/zca-js/dist/apis/getGroupInviteBoxList.d.ts +0 -38
  1028. package/node_modules/zca-js/dist/apis/getGroupInviteBoxList.js +0 -31
  1029. package/node_modules/zca-js/dist/apis/getGroupLinkDetail.d.ts +0 -9
  1030. package/node_modules/zca-js/dist/apis/getGroupLinkDetail.js +0 -25
  1031. package/node_modules/zca-js/dist/apis/getGroupLinkInfo.d.ts +0 -34
  1032. package/node_modules/zca-js/dist/apis/getGroupLinkInfo.js +0 -28
  1033. package/node_modules/zca-js/dist/apis/getGroupMembersInfo.d.ts +0 -17
  1034. package/node_modules/zca-js/dist/apis/getGroupMembersInfo.js +0 -24
  1035. package/node_modules/zca-js/dist/apis/getHiddenConversations.d.ts +0 -11
  1036. package/node_modules/zca-js/dist/apis/getHiddenConversations.js +0 -23
  1037. package/node_modules/zca-js/dist/apis/getLabels.d.ts +0 -7
  1038. package/node_modules/zca-js/dist/apis/getLabels.js +0 -28
  1039. package/node_modules/zca-js/dist/apis/getListBank.d.ts +0 -5
  1040. package/node_modules/zca-js/dist/apis/getListBank.js +0 -20
  1041. package/node_modules/zca-js/dist/apis/getListBankAccount.d.ts +0 -7
  1042. package/node_modules/zca-js/dist/apis/getListBankAccount.js +0 -27
  1043. package/node_modules/zca-js/dist/apis/getListBoard.d.ts +0 -21
  1044. package/node_modules/zca-js/dist/apis/getListBoard.js +0 -45
  1045. package/node_modules/zca-js/dist/apis/getListDevice.d.ts +0 -10
  1046. package/node_modules/zca-js/dist/apis/getListDevice.js +0 -22
  1047. package/node_modules/zca-js/dist/apis/getListReminder.d.ts +0 -28
  1048. package/node_modules/zca-js/dist/apis/getListReminder.js +0 -47
  1049. package/node_modules/zca-js/dist/apis/getMultiUsersByPhones.d.ts +0 -5
  1050. package/node_modules/zca-js/dist/apis/getMultiUsersByPhones.js +0 -39
  1051. package/node_modules/zca-js/dist/apis/getMute.d.ts +0 -13
  1052. package/node_modules/zca-js/dist/apis/getMute.js +0 -22
  1053. package/node_modules/zca-js/dist/apis/getOwnId.d.ts +0 -1
  1054. package/node_modules/zca-js/dist/apis/getOwnId.js +0 -4
  1055. package/node_modules/zca-js/dist/apis/getPendingGroupMembers.d.ts +0 -11
  1056. package/node_modules/zca-js/dist/apis/getPendingGroupMembers.js +0 -27
  1057. package/node_modules/zca-js/dist/apis/getPinConversations.d.ts +0 -5
  1058. package/node_modules/zca-js/dist/apis/getPinConversations.js +0 -22
  1059. package/node_modules/zca-js/dist/apis/getPollDetail.d.ts +0 -3
  1060. package/node_modules/zca-js/dist/apis/getPollDetail.js +0 -30
  1061. package/node_modules/zca-js/dist/apis/getProductCatalogList.d.ts +0 -20
  1062. package/node_modules/zca-js/dist/apis/getProductCatalogList.js +0 -33
  1063. package/node_modules/zca-js/dist/apis/getQR.d.ts +0 -4
  1064. package/node_modules/zca-js/dist/apis/getQR.js +0 -29
  1065. package/node_modules/zca-js/dist/apis/getQuickMessageList.d.ts +0 -7
  1066. package/node_modules/zca-js/dist/apis/getQuickMessageList.js +0 -24
  1067. package/node_modules/zca-js/dist/apis/getRelatedFriendGroup.d.ts +0 -6
  1068. package/node_modules/zca-js/dist/apis/getRelatedFriendGroup.js +0 -30
  1069. package/node_modules/zca-js/dist/apis/getReminder.d.ts +0 -3
  1070. package/node_modules/zca-js/dist/apis/getReminder.js +0 -25
  1071. package/node_modules/zca-js/dist/apis/getReminderResponses.d.ts +0 -5
  1072. package/node_modules/zca-js/dist/apis/getReminderResponses.js +0 -24
  1073. package/node_modules/zca-js/dist/apis/getSentFriendRequest.d.ts +0 -18
  1074. package/node_modules/zca-js/dist/apis/getSentFriendRequest.js +0 -24
  1075. package/node_modules/zca-js/dist/apis/getSettings.d.ts +0 -3
  1076. package/node_modules/zca-js/dist/apis/getSettings.js +0 -20
  1077. package/node_modules/zca-js/dist/apis/getStickerCategoryDetail.d.ts +0 -3
  1078. package/node_modules/zca-js/dist/apis/getStickerCategoryDetail.js +0 -24
  1079. package/node_modules/zca-js/dist/apis/getStickers.d.ts +0 -1
  1080. package/node_modules/zca-js/dist/apis/getStickers.js +0 -40
  1081. package/node_modules/zca-js/dist/apis/getStickersDetail.d.ts +0 -3
  1082. package/node_modules/zca-js/dist/apis/getStickersDetail.js +0 -40
  1083. package/node_modules/zca-js/dist/apis/getUnreadMark.d.ts +0 -14
  1084. package/node_modules/zca-js/dist/apis/getUnreadMark.js +0 -30
  1085. package/node_modules/zca-js/dist/apis/getUserInfo.d.ts +0 -8
  1086. package/node_modules/zca-js/dist/apis/getUserInfo.js +0 -44
  1087. package/node_modules/zca-js/dist/apis/inviteUserToGroups.d.ts +0 -10
  1088. package/node_modules/zca-js/dist/apis/inviteUserToGroups.js +0 -30
  1089. package/node_modules/zca-js/dist/apis/joinGroupInviteBox.d.ts +0 -2
  1090. package/node_modules/zca-js/dist/apis/joinGroupInviteBox.js +0 -25
  1091. package/node_modules/zca-js/dist/apis/joinGroupLink.d.ts +0 -2
  1092. package/node_modules/zca-js/dist/apis/joinGroupLink.js +0 -27
  1093. package/node_modules/zca-js/dist/apis/keepAlive.d.ts +0 -4
  1094. package/node_modules/zca-js/dist/apis/keepAlive.js +0 -22
  1095. package/node_modules/zca-js/dist/apis/lastOnline.d.ts +0 -7
  1096. package/node_modules/zca-js/dist/apis/lastOnline.js +0 -26
  1097. package/node_modules/zca-js/dist/apis/leaveGroup.d.ts +0 -4
  1098. package/node_modules/zca-js/dist/apis/leaveGroup.js +0 -33
  1099. package/node_modules/zca-js/dist/apis/listen.d.ts +0 -102
  1100. package/node_modules/zca-js/dist/apis/listen.js +0 -425
  1101. package/node_modules/zca-js/dist/apis/lockPoll.d.ts +0 -2
  1102. package/node_modules/zca-js/dist/apis/lockPoll.js +0 -28
  1103. package/node_modules/zca-js/dist/apis/login.d.ts +0 -3
  1104. package/node_modules/zca-js/dist/apis/login.js +0 -96
  1105. package/node_modules/zca-js/dist/apis/loginQR.d.ts +0 -71
  1106. package/node_modules/zca-js/dist/apis/loginQR.js +0 -376
  1107. package/node_modules/zca-js/dist/apis/logoutV2.js +0 -79
  1108. package/node_modules/zca-js/dist/apis/lostFocus.d.ts +0 -4
  1109. package/node_modules/zca-js/dist/apis/lostFocus.js +0 -23
  1110. package/node_modules/zca-js/dist/apis/parseLink.d.ts +0 -21
  1111. package/node_modules/zca-js/dist/apis/parseLink.js +0 -27
  1112. package/node_modules/zca-js/dist/apis/registerCatalog.d.ts +0 -2
  1113. package/node_modules/zca-js/dist/apis/registerCatalog.js +0 -27
  1114. package/node_modules/zca-js/dist/apis/rejectFriendRequest.d.ts +0 -2
  1115. package/node_modules/zca-js/dist/apis/rejectFriendRequest.js +0 -27
  1116. package/node_modules/zca-js/dist/apis/removeFriend.d.ts +0 -2
  1117. package/node_modules/zca-js/dist/apis/removeFriend.js +0 -28
  1118. package/node_modules/zca-js/dist/apis/removeFriendAlias.d.ts +0 -2
  1119. package/node_modules/zca-js/dist/apis/removeFriendAlias.js +0 -24
  1120. package/node_modules/zca-js/dist/apis/removeGroupBlockedMember.d.ts +0 -2
  1121. package/node_modules/zca-js/dist/apis/removeGroupBlockedMember.js +0 -28
  1122. package/node_modules/zca-js/dist/apis/removeGroupDeputy.d.ts +0 -2
  1123. package/node_modules/zca-js/dist/apis/removeGroupDeputy.js +0 -30
  1124. package/node_modules/zca-js/dist/apis/removeQuickMessage.d.ts +0 -5
  1125. package/node_modules/zca-js/dist/apis/removeQuickMessage.js +0 -27
  1126. package/node_modules/zca-js/dist/apis/removeReminder.d.ts +0 -3
  1127. package/node_modules/zca-js/dist/apis/removeReminder.js +0 -40
  1128. package/node_modules/zca-js/dist/apis/removeUnreadMark.d.ts +0 -8
  1129. package/node_modules/zca-js/dist/apis/removeUnreadMark.js +0 -50
  1130. package/node_modules/zca-js/dist/apis/removeUserFromGroup.d.ts +0 -4
  1131. package/node_modules/zca-js/dist/apis/removeUserFromGroup.js +0 -34
  1132. package/node_modules/zca-js/dist/apis/resetHiddenConversPin.d.ts +0 -2
  1133. package/node_modules/zca-js/dist/apis/resetHiddenConversPin.js +0 -20
  1134. package/node_modules/zca-js/dist/apis/reuseAvatar.d.ts +0 -2
  1135. package/node_modules/zca-js/dist/apis/reuseAvatar.js +0 -26
  1136. package/node_modules/zca-js/dist/apis/reviewPendingMemberRequest.d.ts +0 -14
  1137. package/node_modules/zca-js/dist/apis/reviewPendingMemberRequest.js +0 -38
  1138. package/node_modules/zca-js/dist/apis/scanURL.d.ts +0 -4
  1139. package/node_modules/zca-js/dist/apis/scanURL.js +0 -28
  1140. package/node_modules/zca-js/dist/apis/searchSticker.d.ts +0 -3
  1141. package/node_modules/zca-js/dist/apis/searchSticker.js +0 -28
  1142. package/node_modules/zca-js/dist/apis/sendBankCard.d.ts +0 -9
  1143. package/node_modules/zca-js/dist/apis/sendBankCard.js +0 -53
  1144. package/node_modules/zca-js/dist/apis/sendCard.d.ts +0 -10
  1145. package/node_modules/zca-js/dist/apis/sendCard.js +0 -75
  1146. package/node_modules/zca-js/dist/apis/sendDeliveredEvent.d.ts +0 -16
  1147. package/node_modules/zca-js/dist/apis/sendDeliveredEvent.js +0 -55
  1148. package/node_modules/zca-js/dist/apis/sendFriendRequest.d.ts +0 -2
  1149. package/node_modules/zca-js/dist/apis/sendFriendRequest.js +0 -39
  1150. package/node_modules/zca-js/dist/apis/sendLink.d.ts +0 -10
  1151. package/node_modules/zca-js/dist/apis/sendLink.js +0 -78
  1152. package/node_modules/zca-js/dist/apis/sendMessage.d.ts +0 -105
  1153. package/node_modules/zca-js/dist/apis/sendMessage.js +0 -486
  1154. package/node_modules/zca-js/dist/apis/sendReport.d.ts +0 -17
  1155. package/node_modules/zca-js/dist/apis/sendReport.js +0 -53
  1156. package/node_modules/zca-js/dist/apis/sendSeenEvent.d.ts +0 -16
  1157. package/node_modules/zca-js/dist/apis/sendSeenEvent.js +0 -63
  1158. package/node_modules/zca-js/dist/apis/sendSticker.d.ts +0 -10
  1159. package/node_modules/zca-js/dist/apis/sendSticker.js +0 -74
  1160. package/node_modules/zca-js/dist/apis/sendTypingEvent.d.ts +0 -5
  1161. package/node_modules/zca-js/dist/apis/sendTypingEvent.js +0 -33
  1162. package/node_modules/zca-js/dist/apis/sendVideo.d.ts +0 -35
  1163. package/node_modules/zca-js/dist/apis/sendVideo.js +0 -134
  1164. package/node_modules/zca-js/dist/apis/sendVoice.d.ts +0 -12
  1165. package/node_modules/zca-js/dist/apis/sendVoice.js +0 -89
  1166. package/node_modules/zca-js/dist/apis/setHiddenConversations.d.ts +0 -3
  1167. package/node_modules/zca-js/dist/apis/setHiddenConversations.js +0 -39
  1168. package/node_modules/zca-js/dist/apis/setMute.d.ts +0 -20
  1169. package/node_modules/zca-js/dist/apis/setMute.js +0 -67
  1170. package/node_modules/zca-js/dist/apis/setPinnedConversations.d.ts +0 -3
  1171. package/node_modules/zca-js/dist/apis/setPinnedConversations.js +0 -34
  1172. package/node_modules/zca-js/dist/apis/sharePoll.d.ts +0 -2
  1173. package/node_modules/zca-js/dist/apis/sharePoll.js +0 -28
  1174. package/node_modules/zca-js/dist/apis/unblockUser.d.ts +0 -2
  1175. package/node_modules/zca-js/dist/apis/unblockUser.js +0 -28
  1176. package/node_modules/zca-js/dist/apis/undo.d.ts +0 -9
  1177. package/node_modules/zca-js/dist/apis/undo.js +0 -42
  1178. package/node_modules/zca-js/dist/apis/undoFriendRequest.d.ts +0 -2
  1179. package/node_modules/zca-js/dist/apis/undoFriendRequest.js +0 -27
  1180. package/node_modules/zca-js/dist/apis/updateActiveStatus.d.ts +0 -4
  1181. package/node_modules/zca-js/dist/apis/updateActiveStatus.js +0 -27
  1182. package/node_modules/zca-js/dist/apis/updateArchivedChatList.d.ts +0 -10
  1183. package/node_modules/zca-js/dist/apis/updateArchivedChatList.js +0 -34
  1184. package/node_modules/zca-js/dist/apis/updateAutoDeleteChat.d.ts +0 -9
  1185. package/node_modules/zca-js/dist/apis/updateAutoDeleteChat.js +0 -40
  1186. package/node_modules/zca-js/dist/apis/updateAutoReply.d.ts +0 -15
  1187. package/node_modules/zca-js/dist/apis/updateAutoReply.js +0 -38
  1188. package/node_modules/zca-js/dist/apis/updateBankAccount.d.ts +0 -9
  1189. package/node_modules/zca-js/dist/apis/updateBankAccount.js +0 -31
  1190. package/node_modules/zca-js/dist/apis/updateCatalog.d.ts +0 -11
  1191. package/node_modules/zca-js/dist/apis/updateCatalog.js +0 -30
  1192. package/node_modules/zca-js/dist/apis/updateGroupSettings.d.ts +0 -40
  1193. package/node_modules/zca-js/dist/apis/updateGroupSettings.js +0 -43
  1194. package/node_modules/zca-js/dist/apis/updateHiddenConversPin.d.ts +0 -2
  1195. package/node_modules/zca-js/dist/apis/updateHiddenConversPin.js +0 -30
  1196. package/node_modules/zca-js/dist/apis/updateLabels.d.ts +0 -15
  1197. package/node_modules/zca-js/dist/apis/updateLabels.js +0 -34
  1198. package/node_modules/zca-js/dist/apis/updateLang.d.ts +0 -6
  1199. package/node_modules/zca-js/dist/apis/updateLang.js +0 -30
  1200. package/node_modules/zca-js/dist/apis/updateProductCatalog.d.ts +0 -25
  1201. package/node_modules/zca-js/dist/apis/updateProductCatalog.js +0 -51
  1202. package/node_modules/zca-js/dist/apis/updateProfile.d.ts +0 -20
  1203. package/node_modules/zca-js/dist/apis/updateProfile.js +0 -43
  1204. package/node_modules/zca-js/dist/apis/updateProfileBio.d.ts +0 -2
  1205. package/node_modules/zca-js/dist/apis/updateProfileBio.js +0 -27
  1206. package/node_modules/zca-js/dist/apis/updateQuickMessage.d.ts +0 -11
  1207. package/node_modules/zca-js/dist/apis/updateQuickMessage.js +0 -61
  1208. package/node_modules/zca-js/dist/apis/updateSettings.d.ts +0 -16
  1209. package/node_modules/zca-js/dist/apis/updateSettings.js +0 -90
  1210. package/node_modules/zca-js/dist/apis/upgradeGroupToCommunity.d.ts +0 -2
  1211. package/node_modules/zca-js/dist/apis/upgradeGroupToCommunity.js +0 -27
  1212. package/node_modules/zca-js/dist/apis/uploadAttachment.d.ts +0 -50
  1213. package/node_modules/zca-js/dist/apis/uploadAttachment.js +0 -197
  1214. package/node_modules/zca-js/dist/apis/uploadProductPhoto.d.ts +0 -14
  1215. package/node_modules/zca-js/dist/apis/uploadProductPhoto.js +0 -50
  1216. package/node_modules/zca-js/dist/apis/votePoll.d.ts +0 -5
  1217. package/node_modules/zca-js/dist/apis/votePoll.js +0 -29
  1218. package/node_modules/zca-js/dist/apis.d.ts +0 -317
  1219. package/node_modules/zca-js/dist/apis.js +0 -319
  1220. package/node_modules/zca-js/dist/cjs/Errors/ZaloApiError.cjs +0 -11
  1221. package/node_modules/zca-js/dist/cjs/Errors/ZaloApiLoginQRAborted.cjs +0 -12
  1222. package/node_modules/zca-js/dist/cjs/Errors/ZaloApiLoginQRDeclined.cjs +0 -12
  1223. package/node_modules/zca-js/dist/cjs/Errors/ZaloApiMissingImageMetadataGetter.cjs +0 -12
  1224. package/node_modules/zca-js/dist/cjs/apis/acceptFriendRequest.cjs +0 -33
  1225. package/node_modules/zca-js/dist/cjs/apis/addGroupBlockedMember.cjs +0 -33
  1226. package/node_modules/zca-js/dist/cjs/apis/addGroupDeputy.cjs +0 -35
  1227. package/node_modules/zca-js/dist/cjs/apis/addPollOptions.cjs +0 -31
  1228. package/node_modules/zca-js/dist/cjs/apis/addQuickMessage.cjs +0 -65
  1229. package/node_modules/zca-js/dist/cjs/apis/addReaction.cjs +0 -308
  1230. package/node_modules/zca-js/dist/cjs/apis/addUnreadMark.cjs +0 -66
  1231. package/node_modules/zca-js/dist/cjs/apis/addUserToGroup.cjs +0 -39
  1232. package/node_modules/zca-js/dist/cjs/apis/blockUser.cjs +0 -33
  1233. package/node_modules/zca-js/dist/cjs/apis/blockViewFeed.cjs +0 -35
  1234. package/node_modules/zca-js/dist/cjs/apis/changeAccountAvatar.cjs +0 -57
  1235. package/node_modules/zca-js/dist/cjs/apis/changeFriendAlias.cjs +0 -32
  1236. package/node_modules/zca-js/dist/cjs/apis/changeGroupAvatar.cjs +0 -49
  1237. package/node_modules/zca-js/dist/cjs/apis/changeGroupName.cjs +0 -37
  1238. package/node_modules/zca-js/dist/cjs/apis/changeGroupOwner.cjs +0 -35
  1239. package/node_modules/zca-js/dist/cjs/apis/createAutoReply.cjs +0 -42
  1240. package/node_modules/zca-js/dist/cjs/apis/createBankAccount.cjs +0 -37
  1241. package/node_modules/zca-js/dist/cjs/apis/createCatalog.cjs +0 -34
  1242. package/node_modules/zca-js/dist/cjs/apis/createGroup.cjs +0 -48
  1243. package/node_modules/zca-js/dist/cjs/apis/createNote.cjs +0 -52
  1244. package/node_modules/zca-js/dist/cjs/apis/createPoll.cjs +0 -45
  1245. package/node_modules/zca-js/dist/cjs/apis/createProductCatalog.cjs +0 -55
  1246. package/node_modules/zca-js/dist/cjs/apis/createReminder.cjs +0 -77
  1247. package/node_modules/zca-js/dist/cjs/apis/custom.cjs +0 -19
  1248. package/node_modules/zca-js/dist/cjs/apis/deleteAutoReply.cjs +0 -34
  1249. package/node_modules/zca-js/dist/cjs/apis/deleteAvatar.cjs +0 -32
  1250. package/node_modules/zca-js/dist/cjs/apis/deleteBankAccount.cjs +0 -37
  1251. package/node_modules/zca-js/dist/cjs/apis/deleteCatalog.cjs +0 -33
  1252. package/node_modules/zca-js/dist/cjs/apis/deleteChat.cjs +0 -64
  1253. package/node_modules/zca-js/dist/cjs/apis/deleteGroupInviteBox.cjs +0 -32
  1254. package/node_modules/zca-js/dist/cjs/apis/deleteMessage.cjs +0 -66
  1255. package/node_modules/zca-js/dist/cjs/apis/deleteProductCatalog.cjs +0 -36
  1256. package/node_modules/zca-js/dist/cjs/apis/disableGroupLink.cjs +0 -29
  1257. package/node_modules/zca-js/dist/cjs/apis/disperseGroup.cjs +0 -33
  1258. package/node_modules/zca-js/dist/cjs/apis/editNote.cjs +0 -51
  1259. package/node_modules/zca-js/dist/cjs/apis/editReminder.cjs +0 -75
  1260. package/node_modules/zca-js/dist/cjs/apis/enableGroupLink.cjs +0 -30
  1261. package/node_modules/zca-js/dist/cjs/apis/fetchAccountInfo.cjs +0 -15
  1262. package/node_modules/zca-js/dist/cjs/apis/findUser.cjs +0 -56
  1263. package/node_modules/zca-js/dist/cjs/apis/findUserByUsername.cjs +0 -41
  1264. package/node_modules/zca-js/dist/cjs/apis/forwardMessage.cjs +0 -129
  1265. package/node_modules/zca-js/dist/cjs/apis/getAliasList.cjs +0 -32
  1266. package/node_modules/zca-js/dist/cjs/apis/getAllFriends.cjs +0 -48
  1267. package/node_modules/zca-js/dist/cjs/apis/getAllGroups.cjs +0 -15
  1268. package/node_modules/zca-js/dist/cjs/apis/getArchivedChatList.cjs +0 -28
  1269. package/node_modules/zca-js/dist/cjs/apis/getAutoDeleteChat.cjs +0 -26
  1270. package/node_modules/zca-js/dist/cjs/apis/getAutoReplyList.cjs +0 -29
  1271. package/node_modules/zca-js/dist/cjs/apis/getAvatarList.cjs +0 -33
  1272. package/node_modules/zca-js/dist/cjs/apis/getAvatarUrlProfile.cjs +0 -44
  1273. package/node_modules/zca-js/dist/cjs/apis/getBizAccount.cjs +0 -32
  1274. package/node_modules/zca-js/dist/cjs/apis/getCatalogList.cjs +0 -37
  1275. package/node_modules/zca-js/dist/cjs/apis/getCloseFriends.cjs +0 -25
  1276. package/node_modules/zca-js/dist/cjs/apis/getContext.cjs +0 -9
  1277. package/node_modules/zca-js/dist/cjs/apis/getCookie.cjs +0 -14
  1278. package/node_modules/zca-js/dist/cjs/apis/getFriendBoardList.cjs +0 -31
  1279. package/node_modules/zca-js/dist/cjs/apis/getFriendOnlines.cjs +0 -40
  1280. package/node_modules/zca-js/dist/cjs/apis/getFriendRecommendations.cjs +0 -32
  1281. package/node_modules/zca-js/dist/cjs/apis/getFriendRequestStatus.cjs +0 -30
  1282. package/node_modules/zca-js/dist/cjs/apis/getFullAvatar.cjs +0 -30
  1283. package/node_modules/zca-js/dist/cjs/apis/getGroupBlockedMember.cjs +0 -34
  1284. package/node_modules/zca-js/dist/cjs/apis/getGroupChatHistory.cjs +0 -51
  1285. package/node_modules/zca-js/dist/cjs/apis/getGroupInfo.cjs +0 -37
  1286. package/node_modules/zca-js/dist/cjs/apis/getGroupInviteBoxInfo.cjs +0 -43
  1287. package/node_modules/zca-js/dist/cjs/apis/getGroupInviteBoxList.cjs +0 -36
  1288. package/node_modules/zca-js/dist/cjs/apis/getGroupLinkDetail.cjs +0 -30
  1289. package/node_modules/zca-js/dist/cjs/apis/getGroupLinkInfo.cjs +0 -33
  1290. package/node_modules/zca-js/dist/cjs/apis/getGroupMembersInfo.cjs +0 -29
  1291. package/node_modules/zca-js/dist/cjs/apis/getHiddenConversations.cjs +0 -28
  1292. package/node_modules/zca-js/dist/cjs/apis/getLabels.cjs +0 -33
  1293. package/node_modules/zca-js/dist/cjs/apis/getListBank.cjs +0 -25
  1294. package/node_modules/zca-js/dist/cjs/apis/getListBankAccount.cjs +0 -32
  1295. package/node_modules/zca-js/dist/cjs/apis/getListBoard.cjs +0 -59
  1296. package/node_modules/zca-js/dist/cjs/apis/getListDevice.cjs +0 -27
  1297. package/node_modules/zca-js/dist/cjs/apis/getListReminder.cjs +0 -61
  1298. package/node_modules/zca-js/dist/cjs/apis/getMultiUsersByPhones.cjs +0 -53
  1299. package/node_modules/zca-js/dist/cjs/apis/getMute.cjs +0 -27
  1300. package/node_modules/zca-js/dist/cjs/apis/getOwnId.cjs +0 -9
  1301. package/node_modules/zca-js/dist/cjs/apis/getPendingGroupMembers.cjs +0 -32
  1302. package/node_modules/zca-js/dist/cjs/apis/getPinConversations.cjs +0 -27
  1303. package/node_modules/zca-js/dist/cjs/apis/getPollDetail.cjs +0 -35
  1304. package/node_modules/zca-js/dist/cjs/apis/getProductCatalogList.cjs +0 -38
  1305. package/node_modules/zca-js/dist/cjs/apis/getQR.cjs +0 -34
  1306. package/node_modules/zca-js/dist/cjs/apis/getQuickMessageList.cjs +0 -29
  1307. package/node_modules/zca-js/dist/cjs/apis/getRelatedFriendGroup.cjs +0 -35
  1308. package/node_modules/zca-js/dist/cjs/apis/getReminder.cjs +0 -30
  1309. package/node_modules/zca-js/dist/cjs/apis/getReminderResponses.cjs +0 -29
  1310. package/node_modules/zca-js/dist/cjs/apis/getSentFriendRequest.cjs +0 -29
  1311. package/node_modules/zca-js/dist/cjs/apis/getSettings.cjs +0 -25
  1312. package/node_modules/zca-js/dist/cjs/apis/getStickerCategoryDetail.cjs +0 -29
  1313. package/node_modules/zca-js/dist/cjs/apis/getStickers.cjs +0 -45
  1314. package/node_modules/zca-js/dist/cjs/apis/getStickersDetail.cjs +0 -45
  1315. package/node_modules/zca-js/dist/cjs/apis/getUnreadMark.cjs +0 -35
  1316. package/node_modules/zca-js/dist/cjs/apis/getUserInfo.cjs +0 -58
  1317. package/node_modules/zca-js/dist/cjs/apis/inviteUserToGroups.cjs +0 -35
  1318. package/node_modules/zca-js/dist/cjs/apis/joinGroupInviteBox.cjs +0 -30
  1319. package/node_modules/zca-js/dist/cjs/apis/joinGroupLink.cjs +0 -32
  1320. package/node_modules/zca-js/dist/cjs/apis/keepAlive.cjs +0 -27
  1321. package/node_modules/zca-js/dist/cjs/apis/lastOnline.cjs +0 -31
  1322. package/node_modules/zca-js/dist/cjs/apis/leaveGroup.cjs +0 -38
  1323. package/node_modules/zca-js/dist/cjs/apis/listen.cjs +0 -440
  1324. package/node_modules/zca-js/dist/cjs/apis/lockPoll.cjs +0 -33
  1325. package/node_modules/zca-js/dist/cjs/apis/login.cjs +0 -102
  1326. package/node_modules/zca-js/dist/cjs/apis/loginQR.cjs +0 -368
  1327. package/node_modules/zca-js/dist/cjs/apis/logoutV2.cjs +0 -83
  1328. package/node_modules/zca-js/dist/cjs/apis/lostFocus.cjs +0 -28
  1329. package/node_modules/zca-js/dist/cjs/apis/parseLink.cjs +0 -32
  1330. package/node_modules/zca-js/dist/cjs/apis/registerCatalog.cjs +0 -32
  1331. package/node_modules/zca-js/dist/cjs/apis/rejectFriendRequest.cjs +0 -32
  1332. package/node_modules/zca-js/dist/cjs/apis/removeFriend.cjs +0 -33
  1333. package/node_modules/zca-js/dist/cjs/apis/removeFriendAlias.cjs +0 -29
  1334. package/node_modules/zca-js/dist/cjs/apis/removeGroupBlockedMember.cjs +0 -33
  1335. package/node_modules/zca-js/dist/cjs/apis/removeGroupDeputy.cjs +0 -35
  1336. package/node_modules/zca-js/dist/cjs/apis/removeQuickMessage.cjs +0 -32
  1337. package/node_modules/zca-js/dist/cjs/apis/removeReminder.cjs +0 -54
  1338. package/node_modules/zca-js/dist/cjs/apis/removeUnreadMark.cjs +0 -64
  1339. package/node_modules/zca-js/dist/cjs/apis/removeUserFromGroup.cjs +0 -39
  1340. package/node_modules/zca-js/dist/cjs/apis/resetHiddenConversPin.cjs +0 -25
  1341. package/node_modules/zca-js/dist/cjs/apis/reuseAvatar.cjs +0 -31
  1342. package/node_modules/zca-js/dist/cjs/apis/reviewPendingMemberRequest.cjs +0 -43
  1343. package/node_modules/zca-js/dist/cjs/apis/scanURL.cjs +0 -33
  1344. package/node_modules/zca-js/dist/cjs/apis/searchSticker.cjs +0 -33
  1345. package/node_modules/zca-js/dist/cjs/apis/sendBankCard.cjs +0 -68
  1346. package/node_modules/zca-js/dist/cjs/apis/sendCard.cjs +0 -89
  1347. package/node_modules/zca-js/dist/cjs/apis/sendDeliveredEvent.cjs +0 -69
  1348. package/node_modules/zca-js/dist/cjs/apis/sendFriendRequest.cjs +0 -44
  1349. package/node_modules/zca-js/dist/cjs/apis/sendLink.cjs +0 -92
  1350. package/node_modules/zca-js/dist/cjs/apis/sendMessage.cjs +0 -500
  1351. package/node_modules/zca-js/dist/cjs/apis/sendReport.cjs +0 -67
  1352. package/node_modules/zca-js/dist/cjs/apis/sendSeenEvent.cjs +0 -77
  1353. package/node_modules/zca-js/dist/cjs/apis/sendSticker.cjs +0 -88
  1354. package/node_modules/zca-js/dist/cjs/apis/sendTypingEvent.cjs +0 -47
  1355. package/node_modules/zca-js/dist/cjs/apis/sendVideo.cjs +0 -148
  1356. package/node_modules/zca-js/dist/cjs/apis/sendVoice.cjs +0 -103
  1357. package/node_modules/zca-js/dist/cjs/apis/setHiddenConversations.cjs +0 -53
  1358. package/node_modules/zca-js/dist/cjs/apis/setMute.cjs +0 -81
  1359. package/node_modules/zca-js/dist/cjs/apis/setPinnedConversations.cjs +0 -48
  1360. package/node_modules/zca-js/dist/cjs/apis/sharePoll.cjs +0 -33
  1361. package/node_modules/zca-js/dist/cjs/apis/unblockUser.cjs +0 -33
  1362. package/node_modules/zca-js/dist/cjs/apis/undo.cjs +0 -56
  1363. package/node_modules/zca-js/dist/cjs/apis/undoFriendRequest.cjs +0 -32
  1364. package/node_modules/zca-js/dist/cjs/apis/updateActiveStatus.cjs +0 -32
  1365. package/node_modules/zca-js/dist/cjs/apis/updateArchivedChatList.cjs +0 -39
  1366. package/node_modules/zca-js/dist/cjs/apis/updateAutoDeleteChat.cjs +0 -54
  1367. package/node_modules/zca-js/dist/cjs/apis/updateAutoReply.cjs +0 -43
  1368. package/node_modules/zca-js/dist/cjs/apis/updateBankAccount.cjs +0 -36
  1369. package/node_modules/zca-js/dist/cjs/apis/updateCatalog.cjs +0 -35
  1370. package/node_modules/zca-js/dist/cjs/apis/updateGroupSettings.cjs +0 -48
  1371. package/node_modules/zca-js/dist/cjs/apis/updateHiddenConversPin.cjs +0 -35
  1372. package/node_modules/zca-js/dist/cjs/apis/updateLabels.cjs +0 -39
  1373. package/node_modules/zca-js/dist/cjs/apis/updateLang.cjs +0 -35
  1374. package/node_modules/zca-js/dist/cjs/apis/updateProductCatalog.cjs +0 -56
  1375. package/node_modules/zca-js/dist/cjs/apis/updateProfile.cjs +0 -48
  1376. package/node_modules/zca-js/dist/cjs/apis/updateProfileBio.cjs +0 -32
  1377. package/node_modules/zca-js/dist/cjs/apis/updateQuickMessage.cjs +0 -66
  1378. package/node_modules/zca-js/dist/cjs/apis/updateSettings.cjs +0 -95
  1379. package/node_modules/zca-js/dist/cjs/apis/upgradeGroupToCommunity.cjs +0 -32
  1380. package/node_modules/zca-js/dist/cjs/apis/uploadAttachment.cjs +0 -211
  1381. package/node_modules/zca-js/dist/cjs/apis/uploadProductPhoto.cjs +0 -55
  1382. package/node_modules/zca-js/dist/cjs/apis/votePoll.cjs +0 -34
  1383. package/node_modules/zca-js/dist/cjs/apis.cjs +0 -324
  1384. package/node_modules/zca-js/dist/cjs/context.cjs +0 -34
  1385. package/node_modules/zca-js/dist/cjs/index.cjs +0 -159
  1386. package/node_modules/zca-js/dist/cjs/models/AutoReply.cjs +0 -9
  1387. package/node_modules/zca-js/dist/cjs/models/Bank.cjs +0 -263
  1388. package/node_modules/zca-js/dist/cjs/models/Board.cjs +0 -8
  1389. package/node_modules/zca-js/dist/cjs/models/DeliveredMessage.cjs +0 -23
  1390. package/node_modules/zca-js/dist/cjs/models/Enum.cjs +0 -27
  1391. package/node_modules/zca-js/dist/cjs/models/FriendEvent.cjs +0 -87
  1392. package/node_modules/zca-js/dist/cjs/models/Group.cjs +0 -13
  1393. package/node_modules/zca-js/dist/cjs/models/GroupEvent.cjs +0 -94
  1394. package/node_modules/zca-js/dist/cjs/models/Message.cjs +0 -35
  1395. package/node_modules/zca-js/dist/cjs/models/Reaction.cjs +0 -74
  1396. package/node_modules/zca-js/dist/cjs/models/Reminder.cjs +0 -9
  1397. package/node_modules/zca-js/dist/cjs/models/SeenMessage.cjs +0 -23
  1398. package/node_modules/zca-js/dist/cjs/models/Typing.cjs +0 -23
  1399. package/node_modules/zca-js/dist/cjs/models/Undo.cjs +0 -16
  1400. package/node_modules/zca-js/dist/cjs/models/ZBusiness.cjs +0 -39
  1401. package/node_modules/zca-js/dist/cjs/update.cjs +0 -34
  1402. package/node_modules/zca-js/dist/cjs/utils.cjs +0 -703
  1403. package/node_modules/zca-js/dist/cjs/zalo.cjs +0 -112
  1404. package/node_modules/zca-js/dist/context.d.ts +0 -179
  1405. package/node_modules/zca-js/dist/context.js +0 -28
  1406. package/node_modules/zca-js/dist/index.d.ts +0 -166
  1407. package/node_modules/zca-js/dist/index.js +0 -14
  1408. package/node_modules/zca-js/dist/models/Attachment.d.ts +0 -9
  1409. package/node_modules/zca-js/dist/models/Attachment.js +0 -1
  1410. package/node_modules/zca-js/dist/models/AutoReply.d.ts +0 -20
  1411. package/node_modules/zca-js/dist/models/AutoReply.js +0 -7
  1412. package/node_modules/zca-js/dist/models/Bank.d.ts +0 -291
  1413. package/node_modules/zca-js/dist/models/Bank.js +0 -262
  1414. package/node_modules/zca-js/dist/models/Board.d.ts +0 -60
  1415. package/node_modules/zca-js/dist/models/Board.js +0 -6
  1416. package/node_modules/zca-js/dist/models/Catalog.d.ts +0 -16
  1417. package/node_modules/zca-js/dist/models/Catalog.js +0 -1
  1418. package/node_modules/zca-js/dist/models/DeliveredMessage.d.ts +0 -27
  1419. package/node_modules/zca-js/dist/models/DeliveredMessage.js +0 -17
  1420. package/node_modules/zca-js/dist/models/Enum.d.ts +0 -21
  1421. package/node_modules/zca-js/dist/models/Enum.js +0 -25
  1422. package/node_modules/zca-js/dist/models/FriendEvent.d.ts +0 -107
  1423. package/node_modules/zca-js/dist/models/FriendEvent.js +0 -83
  1424. package/node_modules/zca-js/dist/models/Group.d.ts +0 -125
  1425. package/node_modules/zca-js/dist/models/Group.js +0 -11
  1426. package/node_modules/zca-js/dist/models/GroupEvent.d.ts +0 -178
  1427. package/node_modules/zca-js/dist/models/GroupEvent.js +0 -90
  1428. package/node_modules/zca-js/dist/models/Label.d.ts +0 -10
  1429. package/node_modules/zca-js/dist/models/Label.js +0 -1
  1430. package/node_modules/zca-js/dist/models/Message.d.ts +0 -91
  1431. package/node_modules/zca-js/dist/models/Message.js +0 -29
  1432. package/node_modules/zca-js/dist/models/ProductCatalog.d.ts +0 -17
  1433. package/node_modules/zca-js/dist/models/ProductCatalog.js +0 -1
  1434. package/node_modules/zca-js/dist/models/QuickMessage.d.ts +0 -25
  1435. package/node_modules/zca-js/dist/models/QuickMessage.js +0 -1
  1436. package/node_modules/zca-js/dist/models/Reaction.d.ts +0 -85
  1437. package/node_modules/zca-js/dist/models/Reaction.js +0 -70
  1438. package/node_modules/zca-js/dist/models/Reminder.d.ts +0 -51
  1439. package/node_modules/zca-js/dist/models/Reminder.js +0 -7
  1440. package/node_modules/zca-js/dist/models/SeenMessage.d.ts +0 -26
  1441. package/node_modules/zca-js/dist/models/SeenMessage.js +0 -17
  1442. package/node_modules/zca-js/dist/models/Sticker.d.ts +0 -27
  1443. package/node_modules/zca-js/dist/models/Sticker.js +0 -1
  1444. package/node_modules/zca-js/dist/models/Typing.d.ts +0 -24
  1445. package/node_modules/zca-js/dist/models/Typing.js +0 -17
  1446. package/node_modules/zca-js/dist/models/Undo.d.ts +0 -34
  1447. package/node_modules/zca-js/dist/models/Undo.js +0 -12
  1448. package/node_modules/zca-js/dist/models/User.d.ts +0 -70
  1449. package/node_modules/zca-js/dist/models/User.js +0 -1
  1450. package/node_modules/zca-js/dist/models/ZBusiness.d.ts +0 -22
  1451. package/node_modules/zca-js/dist/models/ZBusiness.js +0 -35
  1452. package/node_modules/zca-js/dist/models/index.d.ts +0 -22
  1453. package/node_modules/zca-js/dist/models/index.js +0 -22
  1454. package/node_modules/zca-js/dist/update.d.ts +0 -2
  1455. package/node_modules/zca-js/dist/update.js +0 -29
  1456. package/node_modules/zca-js/dist/utils.d.ts +0 -167
  1457. package/node_modules/zca-js/dist/utils.js +0 -719
  1458. package/node_modules/zca-js/dist/zalo.d.ts +0 -41
  1459. package/node_modules/zca-js/dist/zalo.js +0 -107
  1460. package/node_modules/zca-js/eslint.config.js +0 -21
  1461. package/node_modules/zca-js/index.d.ts +0 -2
  1462. package/node_modules/zca-js/package.json +0 -78
  1463. package/node_modules/zca-js/rollup.config.js +0 -28
  1464. package/patches/zca-js+2.2.0.patch +0 -1445
  1465. package/src/cli.test.js +0 -127
  1466. package/src/core/forward.js +0 -112
  1467. package/src/core/group-history.js +0 -248
  1468. package/src/core/group-invite.js +0 -53
  1469. package/src/core/offline-queue.js +0 -194
  1470. package/src/core/pin.js +0 -222
  1471. package/src/core/socket-tap.js +0 -154
  1472. package/src/core/sync-v2/assets.js +0 -181
  1473. package/src/core/sync-v2/gid.js +0 -106
  1474. package/src/core/sync-v2/keepalive.js +0 -177
  1475. package/src/core/sync-v2/message-types.js +0 -522
  1476. package/src/core/sync-v2/renewlink.js +0 -124
  1477. package/src/core/sync-v2/zcloud-cipher.js +0 -88
  1478. package/src/core/zca-custom.js +0 -78
  1479. package/src/mcp/message-buffer.test.js +0 -360
  1480. package/src/mcp/notifier.test.js +0 -275
  1481. package/src/mcp/thread-filter.test.js +0 -206
  1482. package/src/mcp/thread-name-cache.test.js +0 -142
  1483. package/src/utils/atomic-file.js +0 -209
  1484. package/src/utils/bank-helpers.test.js +0 -66
  1485. package/src/utils/device-fingerprint.js +0 -72
  1486. package/src/utils/mentions.js +0 -140
  1487. package/src/utils/proxy-helpers.test.js +0 -36
  1488. package/src/utils/split-message.js +0 -222
  1489. package/src/utils/urgency.js +0 -29
  1490. /package/src/{core → zalo/custom}/user-info.js +0 -0
  1491. /package/src/{utils → zalo/format}/extract-message-text.js +0 -0
  1492. /package/src/{utils → zalo/format}/markdown.js +0 -0
@@ -10,11 +10,13 @@ import { readFileSync } from "fs";
10
10
  import { join } from "path";
11
11
  import { getApi, clearSession } from "../core/zalo-client.js";
12
12
  import { liveApi } from "../core/live-api.js";
13
+ import { quotedReply, resolveReplyTo } from "../core/cached-message.js";
13
14
  import { parseAccountId, selectDaemonAccount, loginDaemonAccount } from "../core/daemon-account.js";
14
15
  import { updateAccountName } from "../core/accounts.js";
15
16
  import { CONFIG_DIR, getAccountDir, MEDIA_DIR } from "../core/credentials.js";
16
17
  import { createStartupGate, resolveStartupSettings } from "../core/startup-gate.js";
17
18
  import { acquireLock, releaseLock } from "../core/lock.js";
19
+ import { startMediaMigration } from "../core/media-store.js";
18
20
  import {
19
21
  createStageLock,
20
22
  startDaemonChannel,
@@ -30,14 +32,61 @@ import { success, error, info, output } from "../utils/output.js";
30
32
  import { resolveWebhookSecret } from "../utils/secrets.js";
31
33
  import { createSyncRunners } from "../core/daemon-sync.js";
32
34
  import { createSocketContext, startEventLoopMonitor } from "../core/daemon-log.js";
33
- import { setUserInfoLogger } from "../core/user-info.js";
35
+ import { setUserInfoLogger } from "../zalo/custom/user-info.js";
34
36
  import { createSyncJobs } from "../mcp/sync-jobs.js";
35
- import { createSocketTap } from "../core/socket-tap.js";
37
+ import { createMcpStageRunners } from "../mcp/sync-stages.js";
38
+ import { createSocketTap } from "../zalo/listener/socket-tap.js";
36
39
  import { createSelfHeal } from "../core/self-heal.js";
40
+ import { createUndecryptableNotice } from "../core/e2ee-notice.js";
41
+ import { createCloudVerifier } from "../core/cloud-verify.js";
42
+ import { attachUnknownActs } from "../core/unknown-acts.js";
43
+ import { attachVoiceText, voiceTextFile } from "../core/voice-text.js";
37
44
  import { createReadStateSync } from "../core/read-state.js";
38
- import { initDb, getPendingSyncGaps, getThreadNames } from "../core/db.js";
45
+ import { attachLastOnline } from "../core/last-online.js";
46
+ import { attachControlEvents } from "../core/control-events.js";
47
+ import { attachHiddenChatControls, hiddenChatsFor, hiddenEventView } from "../core/hidden-chats.js";
48
+ import {
49
+ resolveApproval,
50
+ resolveHiddenChats,
51
+ resolveMediaDelivery,
52
+ resolveMediaLinkAuth,
53
+ resolvePublicUrl,
54
+ resolveTrustedProxies,
55
+ } from "../core/deploy-policy.js";
56
+ import { getMediaLinks, linkForCachedMessage, startTempfileSweeper } from "../core/media-deliver.js";
57
+ import { ensureMediaServed } from "../core/media-route.js";
58
+ import { scopeOfDir } from "../core/keystore/keyring.js";
59
+ import { approverStatus } from "../core/approval.js";
60
+ import { resolveConfirmMode } from "../core/confirm-guard.js";
61
+ import { getSecurePage } from "../core/secure-page.js";
62
+ import { getQrPage } from "../utils/qr-http-server.js";
63
+ import { readControls } from "../zalo/queues/control-queue.js";
64
+ import {
65
+ clearSyncState,
66
+ dbUsedBytes,
67
+ initDb,
68
+ getMessageById,
69
+ getPendingSyncGaps,
70
+ getSyncState,
71
+ getThreadNames,
72
+ setSyncState,
73
+ } from "../core/db.js";
39
74
  import { SyncManager } from "../core/sync.js";
40
- import { createGapTracker, HEARTBEAT_MS } from "../core/listener-lifecycle.js";
75
+ import {
76
+ alarmingGapCount,
77
+ createGapTracker,
78
+ HEARTBEAT_MS,
79
+ IDLE_GAP_REASON,
80
+ PARKED_AT_KEY,
81
+ startupGapReason,
82
+ } from "../core/listener-lifecycle.js";
83
+ import { createDaemonPresence, presenceTransport, resolveDaemonPresence } from "../core/daemon-presence.js";
84
+ import {
85
+ accountStateSystemEvent,
86
+ createAccountStateTracker,
87
+ createBufferStateFilter,
88
+ describeAccountState,
89
+ } from "../core/account-state.js";
41
90
  import {
42
91
  storeLiveMessage,
43
92
  refreshLiveMessageIdentities,
@@ -49,8 +98,8 @@ import {
49
98
  storeReceipts,
50
99
  } from "../core/live-store.js";
51
100
  import { downloadSyncedMedia } from "../core/sync-v2/media.js";
52
- import { classifyLiveMessage } from "../core/sync-v2/message-types.js";
53
- import { createDeliveredReceipts } from "../core/receipts.js";
101
+ import { classifyLiveMessage } from "../zalo/transfer-sync/message-types.js";
102
+ import { createDeliveredReceipts } from "../zalo/receipts.js";
54
103
  import { MessageBuffer } from "../mcp/message-buffer.js";
55
104
  import { ThreadFilter } from "../mcp/thread-filter.js";
56
105
  import {
@@ -59,29 +108,44 @@ import {
59
108
  envForAccount,
60
109
  parseDuration,
61
110
  resolveWebhookDelivery,
111
+ resolveWebhookUrl,
62
112
  } from "../mcp/mcp-config.js";
63
- import { startWebhookDelivery } from "../core/webhook-outbox.js";
64
- import { batchParams, waitResult, MAX_BATCH, MAX_SETTLE_MS } from "../mcp/wait-result.js";
113
+ import { purgeDeadDeliveries, startWebhookDelivery } from "../core/webhook-outbox.js";
114
+ import { batchParams, waitResult, MAX_SETTLE_MS } from "../mcp/wait-result.js";
65
115
  import { createDaemonHealth, describeHealth } from "../core/daemon-health.js";
116
+ import { describeSessionExpiry, sessionExpiryFor } from "../core/session-expiry.js";
117
+ import {
118
+ describeSessionExpiring,
119
+ sessionExpiringSystemEvent,
120
+ startSessionExpiryWatch,
121
+ } from "../core/session-notice.js";
122
+ import { createSocketHost, EXIT_CODE } from "../core/socket-host.js";
123
+ import { kickFile } from "../core/kick-marker.js";
66
124
  import { DEBUG_MARK, LOG_LEVELS } from "../core/log-sink.js";
67
125
  import { registerMCPWebhookCommands } from "./mcp-webhook.js";
126
+ import { registerMCPApproverCommand } from "./mcp-approver.js";
68
127
  import { createMCPServer } from "../mcp/mcp-server.js";
69
128
  import { registerTools } from "../mcp/mcp-tools.js";
70
129
  import { createHTTPServer } from "../mcp/mcp-http-transport.js";
130
+ import { createAdminApi, resolveAdminCredentials } from "../core/admin-api.js";
131
+ import { createExportApi } from "../core/data-export.js";
132
+ import { servePolicyRequest, startPolicyRuntime, touches } from "../core/policy-store.js";
133
+ import { describeQuotaEvent, describeStorage, quotaSystemEvent, startStorageJobs } from "../core/storage-quota.js";
134
+ import { applyGroupExit, describeGroupGone, groupGoneSystemEvent, setGroupGoneSink } from "../core/group-exit.js";
71
135
  import { ZaloNotifier } from "../mcp/notifier.js";
136
+ import { deviceSinceOf } from "../core/device-since.js";
137
+ import { describeQueueOverflow, queueOverflowSystemEvent } from "../core/overflow-repair.js";
72
138
  import { ThreadNameCache } from "../mcp/thread-name-cache.js";
139
+ import { senderNameFields, startDaemonAliases } from "../core/contact-names.js";
73
140
 
74
141
  const PKG_VERSION = JSON.parse(readFileSync(join(import.meta.dirname, "..", "..", "package.json"), "utf8")).version;
75
142
 
76
- /** Zalo close code for duplicate web session — fatal, do not retry */
77
- const CLOSE_DUPLICATE = 3000;
78
-
79
143
  /** Sync2.Message.MessageStatus values carried by live receipts. */
80
144
  const STATUS_RECEIVED = 4;
81
145
  const STATUS_SEEN = 5;
82
146
 
83
147
  /**
84
- * Normalize a raw zca-js message event into the buffer's message shape.
148
+ * Normalize a raw listener message event into the buffer's message shape.
85
149
  *
86
150
  * Classification comes from the shared `classifyLiveMessage`, the same
87
151
  * function the listener and the mobile sync use, so an agent reading
@@ -90,7 +154,7 @@ const STATUS_SEEN = 5;
90
154
  * raw `chat.photo` strings this used to emit, which never matched anything
91
155
  * else in the tool.
92
156
  *
93
- * @param {object} msg - Raw zca-js message event
157
+ * @param {object} msg - Raw listener message event
94
158
  * @param {object} [info] - Pre-computed classification, when the caller has one
95
159
  * @returns {object} Normalized message
96
160
  */
@@ -99,14 +163,15 @@ export function normalizeMessage(msg, info = null) {
99
163
  const cls = info || classifyLiveMessage(data);
100
164
  const media = cls.attachments.find((a) => a.url || a.thumbUrl) || null;
101
165
  return {
102
- // `msgId` is the name every tool takes and every other reply uses; `id` is the same value, kept for clients
103
- // that already read it (the webhook and /events/wait payloads carry both).
166
+ // `msgId`, the name every tool takes and every reply uses (3.0 dropped the older `id`).
104
167
  msgId: data.msgId,
105
- id: data.msgId,
168
+ // The id the sender's client gave it: a reply from the phone names the message it quotes by this one.
169
+ cliMsgId: data.cliMsgId ? String(data.cliMsgId) : null,
106
170
  threadId: msg.threadId,
107
171
  threadType: msg.type === 0 ? "dm" : "group",
108
172
  senderId: data.uidFrom || null,
109
- senderName: data.dName || null,
173
+ // Alias first, as Zalo shows the sender to this account; `senderZaloName` is the name the message carried.
174
+ ...senderNameFields(data.uidFrom, data.dName),
110
175
  text: cls.text,
111
176
  // The message's own timestamp, not the moment we happened to process
112
177
  // it: buffer eviction is age-based, and Date.now() made every message
@@ -118,9 +183,43 @@ export function normalizeMessage(msg, info = null) {
118
183
  type: cls.type,
119
184
  url: media.url || media.thumbUrl || null,
120
185
  description: media.title || null,
121
- localPath: null,
122
186
  }
123
187
  : null,
188
+ // What this message replies to, so an agent can tell what "look at this" points at (bug-reports #8).
189
+ replyTo: resolveReplyTo(quotedReply(data.quote), msg.threadId),
190
+ };
191
+ }
192
+
193
+ /**
194
+ * Normalize a listener `undo` (recall) event into the same shape as a buffered message, so a
195
+ * long-poll waiter wakes for it and zalo_get_messages lists it in order with the messages.
196
+ *
197
+ * `msgId` is the RECALLED message (what every tool calls a message), not the notification's own
198
+ * id: an agent reading `{ type: "undo", msgId }` knows which earlier message is gone. The
199
+ * target is named inside `content` (see storeLiveUndo); a recall that names neither a global nor
200
+ * a client id cannot be attributed and is not normalized.
201
+ *
202
+ * @param {object} undo - Raw listener undo event
203
+ * @returns {object|null} Normalized recall event, or null when it names no message
204
+ */
205
+ export function normalizeUndo(undo) {
206
+ const data = undo?.data || {};
207
+ const content = data.content || {};
208
+ const target = content.globalMsgId && Number(content.globalMsgId) !== 0 ? String(content.globalMsgId) : null;
209
+ const cliMsgId = content.cliMsgId && Number(content.cliMsgId) !== 0 ? String(content.cliMsgId) : null;
210
+ if (!target && !cliMsgId) return null;
211
+ return {
212
+ msgId: target,
213
+ cliMsgId,
214
+ threadId: undo.threadId,
215
+ threadType: undo.type === 0 ? "dm" : "group",
216
+ senderId: data.uidFrom || null,
217
+ // Alias first, as Zalo shows the sender to this account; `senderZaloName` is the name the message carried.
218
+ ...senderNameFields(data.uidFrom, data.dName),
219
+ text: "",
220
+ timestamp: data.ts ? Number(data.ts) : Date.now(),
221
+ type: "undo",
222
+ attachment: null,
124
223
  replyTo: null,
125
224
  };
126
225
  }
@@ -133,7 +232,7 @@ export function normalizeMessage(msg, info = null) {
133
232
  * @returns {object}
134
233
  */
135
234
  export function buildMCPWebhookPayload(message, extra = {}) {
136
- return { event: "message", ...extra, ...message };
235
+ return { event: message?.type === "undo" ? "undo" : "message", ...extra, ...message };
137
236
  }
138
237
 
139
238
  /**
@@ -171,6 +270,45 @@ export async function postMCPWebhook(webhookUrl, message, extra = {}, fetchFn =
171
270
  }
172
271
  }
173
272
 
273
+ /**
274
+ * The start-up warnings about how one-time pages reach a person (src/core/approval.js): a webhook delivery with no
275
+ * webhook, and, under confirmMode "human", an approve link that reaches the agent and asks only for a click (an agent
276
+ * that can open a link could approve its own action). Printed once, at start-up.
277
+ *
278
+ * @param {object} opts
279
+ * @param {object} opts.config - the MCP config
280
+ * @param {string} opts.accountId
281
+ * @param {string|null} opts.accountDir
282
+ * @param {boolean} opts.hasWebhook
283
+ * @param {NodeJS.ProcessEnv} [opts.env]
284
+ * @param {(line: string) => void} [opts.log]
285
+ * @returns {string[]} the lines printed
286
+ */
287
+ export function warnApprovalPolicy({ config, accountId, accountDir, hasWebhook, env = process.env, log }) {
288
+ const approval = resolveApproval({ config, env, accountId });
289
+ const lines = [];
290
+ if (approval.deliver !== "result" && !hasWebhook) {
291
+ lines.push(
292
+ `approval.deliver is "${approval.deliver}" (${approval.deliverSource}) but no webhook is set: ` +
293
+ (approval.deliver === "webhook"
294
+ ? "every approve and PIN page will be refused until one is."
295
+ : "links go in the tool result only."),
296
+ );
297
+ }
298
+ const { mode } = resolveConfirmMode({ config, env, accountId });
299
+ const linkReachesAgent = approval.deliver !== "webhook";
300
+ const clickOnly = approval.secret === "none" || (approval.secret === "auto" && !approverStatus(accountDir).set);
301
+ if (mode === "human" && linkReachesAgent && clickOnly) {
302
+ lines.push(
303
+ 'confirmMode is "human" and approve links reach the agent with no approver secret: an agent that can ' +
304
+ "open a link could approve its own action. Set an approver password (`zalo-agent mcp approver set`), " +
305
+ 'or approval.secret "pin", or approval.deliver "webhook".',
306
+ );
307
+ }
308
+ for (const line of lines) (log ?? ((l) => console.error(`[mcp] WARNING: ${l}`)))(line);
309
+ return lines;
310
+ }
311
+
174
312
  /**
175
313
  * Validate and load TLS certificate & private key buffers from paths.
176
314
  * @param {string|null|undefined} rawCert
@@ -234,9 +372,10 @@ export function registerMCPCommands(program) {
234
372
  "OAuth 2.0 Client Secret (defaults to --auth / ZALO_MCP_AUTH_TOKEN, or ZALO_MCP_OAUTH_CLIENT_SECRET)",
235
373
  )
236
374
  .option(
237
- "--issuer-url <url>",
238
- "Explicit OAuth 2.0 issuer base URL (e.g. https://mcp.example.com:3100; default: inferred from request Host)",
375
+ "--public-url <url>",
376
+ "The one public address of this server behind a reverse proxy or TLS terminator (e.g. https://zalo.example.com): the MCP endpoint, the OAuth issuer, and the links to the one-time secure and QR pages. https, or http on localhost; an optional base path. Or ZALO_MCP_PUBLIC_URL[_<ownId>] / publicUrl in mcp-config.json. Default: links use this server's local address and OAuth infers its issuer from the request",
239
377
  )
378
+ .option("--issuer-url <url>", "Deprecated name of --public-url (still works)")
240
379
  .option(
241
380
  "-w, --webhook <url>",
242
381
  "POST each watched incoming message as JSON to this URL (or set webhook in mcp-config.json)",
@@ -251,7 +390,7 @@ export function registerMCPCommands(program) {
251
390
  )
252
391
  .option(
253
392
  "--no-self-heal",
254
- "Do not pull what a dropped socket missed from Zalo's offline queue on reconnect (the default does, as Zalo Web does, on this socket and with no phone tap)",
393
+ "Do not pull what a dropped socket missed from Zalo's offline queue on reconnect (the default does, as Zalo does, on this socket and with no phone tap)",
255
394
  )
256
395
  .option(
257
396
  "--log-level <level>",
@@ -385,6 +524,31 @@ export function registerMCPCommands(program) {
385
524
  const effectiveHttpPort =
386
525
  opts.http ?? envForAccount("ZALO_MCP_HTTP_PORT", activeAcc.ownId) ?? config?.httpPort ?? null;
387
526
 
527
+ // On-demand presence (src/core/daemon-presence.js): stdio MCP is always-on, --http follows the settings.
528
+ // On-demand without the self-heal would lose what arrives while parked, so that pair is refused here,
529
+ // before anything logs in (and before a background daemon is spawned).
530
+ const presenceRole = presenceTransport({ command: "mcp", http: Boolean(effectiveHttpPort) });
531
+ const presenceCheck = resolveDaemonPresence({
532
+ config,
533
+ ownId: activeAcc.ownId,
534
+ transport: presenceRole,
535
+ selfHeal: opts.selfHeal !== false,
536
+ });
537
+ if (presenceCheck.problem) failStart(`Refusing to start: ${presenceCheck.problem}`);
538
+
539
+ // One public address for the MCP endpoint, the OAuth issuer and every link this server hands out
540
+ // (src/core/deploy-policy.js); --issuer-url, ZALO_MCP_ISSUER_URL and oauth.issuerUrl are its 2.x names.
541
+ // Only the HTTP transport uses it; a value that cannot be used is refused here, before a daemon is spawned.
542
+ const publicUrl = effectiveHttpPort
543
+ ? resolvePublicUrl({
544
+ flag: opts.publicUrl,
545
+ issuerFlag: opts.issuerUrl,
546
+ config,
547
+ accountId: activeAcc.ownId,
548
+ })
549
+ : { publicUrl: null, source: "default", error: null };
550
+ if (publicUrl.error) failStart(`Refusing to start: ${publicUrl.error}.`);
551
+
388
552
  if (!tlsOptions) {
389
553
  const acctCert = envForAccount("ZALO_MCP_TLS_CERT", activeAcc.ownId) ?? config?.tls?.cert;
390
554
  const acctKey = envForAccount("ZALO_MCP_TLS_KEY", activeAcc.ownId) ?? config?.tls?.key;
@@ -440,7 +604,7 @@ export function registerMCPCommands(program) {
440
604
 
441
605
  // Safety net: redirect ALL console.log to stderr for the entire MCP process.
442
606
  // Stdout is the MCP JSON-RPC transport — any non-JSON output corrupts the stream.
443
- // This catches rogue prints from dependencies (zca-js, chalk, etc.) that we can't control.
607
+ // This catches rogue prints from dependencies (chalk, etc.) that we can't control.
444
608
  console.log = (...args) => console.error(...args);
445
609
 
446
610
  // This server now opens the account's WebSocket *and* writes to
@@ -498,6 +662,8 @@ export function registerMCPCommands(program) {
498
662
  try {
499
663
  initDb(join(accountDir, "zalo.db"));
500
664
  console.error(`[mcp] Local cache: ${join(accountDir, "zalo.db")}`);
665
+ // Media a 2.x install downloaded is sealed in the background, a batch at a time (media-store.js).
666
+ startMediaMigration(activeAcc.ownId, { log: (l) => console.error(`[mcp] ${l}`) });
501
667
  } catch (e) {
502
668
  gate.leave();
503
669
  dropLock();
@@ -505,21 +671,108 @@ export function registerMCPCommands(program) {
505
671
  process.exit(1);
506
672
  }
507
673
 
674
+ // The runtime policy (src/core/policy-store.js): read now, watched for file drops, changed live by the admin
675
+ // API and `policy set`. A policy file that cannot be used stops the start: it is never replaced by defaults.
676
+ let onPolicyChanged = () => {};
677
+ let policyRuntime;
678
+ try {
679
+ policyRuntime = startPolicyRuntime({
680
+ ownId: activeAcc.ownId,
681
+ onChange: (changed) => onPolicyChanged(changed),
682
+ log: (l) => console.error(`[mcp] ${l}`),
683
+ });
684
+ console.error(`[mcp] Runtime policy: ${policyRuntime.describe()}`);
685
+ } catch (e) {
686
+ gate.leave();
687
+ dropLock();
688
+ console.error(`[mcp] The runtime policy cannot be used: ${e.message}`);
689
+ process.exit(1);
690
+ }
691
+
508
692
  console.error("[mcp] Config loaded:", JSON.stringify(config.limits));
509
693
 
510
694
  // Build buffer + filter from config
511
695
  const maxAge = parseDuration(config.limits?.bufferMaxAge ?? "2h");
512
696
  const maxSize = config.limits?.bufferMaxSize ?? 500;
513
- const buffer = new MessageBuffer(maxSize, maxAge);
697
+ const buffer = MessageBuffer.forSession(maxSize, maxAge);
514
698
  const filter = new ThreadFilter(config);
515
699
 
700
+ // The owner's aliases, which every reply, buffer line and webhook names people by: kept in the account's
701
+ // db, reread on an `alias` control and every 30 minutes (src/core/contact-names.js); the name cache's
702
+ // init below is the read at start. Same in `listen`.
703
+ const daemonAliases = startDaemonAliases({
704
+ getApi,
705
+ log: (line) => console.error(`[mcp] ${line}`),
706
+ onOwnName: (name) => updateAccountName(activeAcc.ownId, name),
707
+ onRetitled: (titles) => {
708
+ for (const [id, name] of titles) nameCache.set(id, { name, type: "dm" });
709
+ },
710
+ });
516
711
  // Build thread name cache (groups + friends → in-memory index)
517
712
  const nameCache = new ThreadNameCache();
518
713
  try {
519
- await nameCache.init(getApi());
714
+ await nameCache.init(getApi(), { ownId: activeAcc.ownId });
520
715
  } catch (e) {
521
716
  console.error("[mcp] Thread name cache init failed (non-fatal):", e.message);
522
717
  }
718
+ // The account's hidden chats (src/core/hidden-chats.js), read once now and kept current from the 601
719
+ // `hidden_chat` controls below; the deployment's hiddenChats policy decides what agents see of them.
720
+ const hidden = hiddenChatsFor(activeAcc.ownId, { stateDir: accountDir });
721
+ await hidden.ensure(getApi());
722
+ let hiddenPolicy = resolveHiddenChats({ config, accountId: activeAcc.ownId });
723
+ console.error(
724
+ `[mcp] Hidden chats: ${hiddenPolicy.mode} (${hiddenPolicy.source})` +
725
+ (hidden.known ? `, ${hidden.ids.size} hidden` : ", the hidden list could not be read yet"),
726
+ );
727
+ /** An event list as the policy shows it: hidden ones left out, or contentless. */
728
+ const hiddenEvents = (list) =>
729
+ list
730
+ .map((m) =>
731
+ hiddenEventView(m, hidden, hiddenPolicy.mode, {
732
+ name: m?.type === "undo" ? "undo" : "message",
733
+ }),
734
+ )
735
+ .filter(Boolean);
736
+ // The one-time secure input page (src/core/secure-page.js): this process's account, and, over --http,
737
+ // the public address a person's browser reaches it at.
738
+ const securePage = getSecurePage().configure({ accountId: activeAcc.ownId });
739
+ // The QR login page, served on the HTTP port when a login runs in this process (src/utils/qr-http-server.js).
740
+ const qrPage = getQrPage();
741
+ // Media links (src/core/media-deliver.js): the policy they are issued under. Over --http they are served
742
+ // on its port and point at publicUrl (below); under stdio a 127.0.0.1 listener serves them on first use.
743
+ let mediaPolicy = resolveMediaDelivery({ config, accountId: activeAcc.ownId });
744
+ let mediaAuth = resolveMediaLinkAuth({
745
+ config,
746
+ accountId: activeAcc.ownId,
747
+ publicUrl: effectiveHttpPort ? publicUrl.publicUrl : null,
748
+ });
749
+ const trustedProxies = resolveTrustedProxies({ config, accountId: activeAcc.ownId });
750
+ const mediaLinks = getMediaLinks().configure({
751
+ linkAuth: effectiveHttpPort ? mediaAuth.linkAuth : "capability",
752
+ maxClients: mediaAuth.maxClients,
753
+ clientTtlMs: mediaAuth.clientTtlMs,
754
+ ttlMs: mediaPolicy.linkTtlMs,
755
+ rateLimit: mediaPolicy.linkRateLimit,
756
+ trustedProxies,
757
+ log: (line) => console.error(line),
758
+ });
759
+ // A chat hidden while its links are out: they stop working at once (unless the policy shows hidden chats).
760
+ hidden.onChange((set) => {
761
+ // An export made before a chat was hidden holds it unmarked: its download stops (data-export.js).
762
+ const exports = mediaLinks.revokeWhere(
763
+ (l) => l.kind === "export" && [...set.ids].some((id) => !l.hiddenAtExport?.has(id)),
764
+ "a chat was hidden after the export was made",
765
+ );
766
+ if (exports) console.error(`[mcp] ${exports} export link(s) revoked: a chat was hidden since`);
767
+ if (hiddenPolicy.mode === "include") return;
768
+ const n = mediaLinks.revokeWhere(
769
+ (l) => l.threadId !== null && set.isHidden(l.threadId),
770
+ "its chat was hidden",
771
+ );
772
+ if (n) console.error(`[mcp] ${n} media link(s) revoked: their chat was hidden`);
773
+ });
774
+ // Decrypted copies a CLI command or a crash left behind expire on time while this daemon runs.
775
+ startTempfileSweeper({ ttlMs: mediaPolicy.tempfileTtlMs });
523
776
  // Logged in and the friend and group lists are loaded: the heavy part of start-up is over.
524
777
  gate.leave();
525
778
 
@@ -555,7 +808,13 @@ export function registerMCPCommands(program) {
555
808
  }
556
809
  },
557
810
  });
558
- const syncJobs = createSyncJobs({ runners: syncRunners, lock: stageLock });
811
+ // The media and board stages run in this server too (src/mcp/sync-stages.js), under the same lock.
812
+ const stageRunners = createMcpStageRunners({
813
+ getApi,
814
+ accountDir,
815
+ mediaRoot: MEDIA_DIR || config.media?.downloadDir || undefined,
816
+ });
817
+ const syncJobs = createSyncJobs({ runners: { ...syncRunners, ...stageRunners }, lock: stageLock });
559
818
  syncJobs.onSelfName = onSelfName;
560
819
 
561
820
  // What the tools and the notifier call. Not getApi()'s object:
@@ -566,6 +825,24 @@ export function registerMCPCommands(program) {
566
825
  "The Zalo session is logging in again after a dropped connection; try again in a few seconds.",
567
826
  });
568
827
 
828
+ // On-demand presence (src/core/daemon-presence.js), built below once the socket's parts exist. The tools,
829
+ // /events/wait and the CRM leases reach it through these doors, which the servers take now.
830
+ let daemonPresence = null;
831
+ const presenceDoor = {
832
+ admit: (o) =>
833
+ daemonPresence ? daemonPresence.admit(o) : Promise.resolve({ release: () => {}, warming: null }),
834
+ serve: (p) =>
835
+ daemonPresence
836
+ ? daemonPresence.serve(p)
837
+ : Promise.reject(new Error("presence is not running yet; try again in a moment")),
838
+ };
839
+ const leaseDoor = {
840
+ handle: (req, res) =>
841
+ daemonPresence
842
+ ? daemonPresence.leaseRoutes.handle(req, res)
843
+ : res.status(503).json({ error: "the server is starting; try again in a moment" }),
844
+ };
845
+
569
846
  // Start MCP server — stdio (default) or HTTP/HTTPS
570
847
  // What this daemon can say about itself: /health, /ready, /status and /metrics over HTTP, and
571
848
  // `mcp start --status` over the loopback channel (src/core/daemon-health.js). The sources that do not
@@ -575,8 +852,13 @@ export function registerMCPCommands(program) {
575
852
  const stats = buffer.getStats();
576
853
  return { threads: stats.length, messages: stats.reduce((n, t) => n + t.total, 0) };
577
854
  });
578
- health.setSource("gaps", () => getPendingSyncGaps().length);
855
+ // Planned idle windows (on-demand presence) are not worth a warning; everything else is.
856
+ health.setSource("gaps", () => alarmingGapCount(getPendingSyncGaps()));
579
857
  health.setSource("stage", () => stageLock.current());
858
+ health.setSource("session", () => sessionExpiryFor(activeAcc.ownId));
859
+ health.setSource("presence", () => daemonPresence?.snapshot() ?? null);
860
+ const sessionLine = describeSessionExpiry(sessionExpiryFor(activeAcc.ownId));
861
+ if (sessionLine) console.error(`[mcp] ${sessionLine}`);
580
862
 
581
863
  let httpServer = null;
582
864
  try {
@@ -589,7 +871,69 @@ export function registerMCPCommands(program) {
589
871
  }
590
872
  const host =
591
873
  opts.host || envForAccount("ZALO_MCP_HOST", activeAcc.ownId) || config?.host || "127.0.0.1";
874
+ // The admin API (src/core/admin-api.js): its own credential, never the agent's.
875
+ const adminCreds = resolveAdminCredentials({ config, accountId: activeAcc.ownId });
876
+ for (const p of adminCreds.problems) console.error(`[mcp] WARNING: ${p}`);
877
+ let adminCa = null;
878
+ if (adminCreds.clientCaFile) {
879
+ if (!tlsOptions) {
880
+ console.error("[mcp] WARNING: admin.clientCa needs --cert and --key (HTTPS); mTLS is off");
881
+ } else {
882
+ try {
883
+ adminCa = readFileSync(adminCreds.clientCaFile);
884
+ } catch (e) {
885
+ dropLock();
886
+ console.error(
887
+ `[mcp] Refusing to start: cannot read admin.clientCa ${adminCreds.clientCaFile} (${e.code || e.message}).`,
888
+ );
889
+ process.exit(1);
890
+ }
891
+ }
892
+ }
893
+ // "Export my data" (src/core/data-export.js): jobs, the hidden-chat grant, the download links.
894
+ const exportApi = createExportApi({
895
+ ownId: activeAcc.ownId,
896
+ accountDir,
897
+ dbFile: join(accountDir, "zalo.db"),
898
+ hidden,
899
+ getApi: () => getApi(),
900
+ securePage,
901
+ links: mediaLinks,
902
+ trustedProxies,
903
+ log: (l) => console.error(`[mcp] ${l}`),
904
+ });
905
+ const admin = createAdminApi({
906
+ ownId: activeAcc.ownId,
907
+ exportApi,
908
+ config,
909
+ hashes: adminCreds.hashes,
910
+ mtls: Boolean(adminCa),
911
+ publicUrl: publicUrl.publicUrl,
912
+ usage: () => ({
913
+ accounts: [
914
+ {
915
+ accountId: activeAcc.ownId,
916
+ ...describeStorage(activeAcc.ownId, {
917
+ mediaRoot: MEDIA_DIR || config.media?.downloadDir,
918
+ dbBytes: dbUsedBytes(),
919
+ }),
920
+ },
921
+ ],
922
+ }),
923
+ effectiveExtra: (id) => {
924
+ const st = describeStorage(id);
925
+ return { quota: st.quota, retention: st.retention };
926
+ },
927
+ // GET /zalo/admin/presence, POST /zalo/admin/presence/resume (after a yield).
928
+ presence: presenceDoor,
929
+ log: (l) => console.error(`[mcp] ${l}`),
930
+ });
931
+ if (admin.enabled())
932
+ console.error(
933
+ `[mcp] Admin API: on /zalo/admin${adminCreds.sources.length ? ` (${adminCreds.sources.join(", ")})` : ""}${adminCa ? ", mTLS" : ""}`,
934
+ );
592
935
  const deps = {
936
+ admin,
593
937
  api: sessionApi,
594
938
  buffer,
595
939
  filter,
@@ -599,6 +943,13 @@ export function registerMCPCommands(program) {
599
943
  stageLock,
600
944
  syncJobs,
601
945
  health,
946
+ securePage,
947
+ qrPage,
948
+ hiddenEvents,
949
+ mediaLinks,
950
+ trustedProxies,
951
+ presence: presenceDoor,
952
+ leases: leaseDoor,
602
953
  };
603
954
  const authToken =
604
955
  opts.auth?.trim() ||
@@ -616,11 +967,7 @@ export function registerMCPCommands(program) {
616
967
  envForAccount("ZALO_MCP_OAUTH_CLIENT_SECRET", activeAcc.ownId) ||
617
968
  config?.oauth?.clientSecret?.trim() ||
618
969
  authToken;
619
- const oauthIssuerUrl =
620
- opts.issuerUrl?.trim() ||
621
- envForAccount("ZALO_MCP_ISSUER_URL", activeAcc.ownId) ||
622
- config?.oauth?.issuerUrl?.trim() ||
623
- null;
970
+ const oauthIssuerUrl = publicUrl.publicUrl;
624
971
  const oauthClients = Array.isArray(config?.oauth?.clients) ? config.oauth.clients : [];
625
972
  const oauthOptions =
626
973
  oauthClientSecret || oauthClients.length > 0
@@ -632,7 +979,36 @@ export function registerMCPCommands(program) {
632
979
  }
633
980
  : null;
634
981
  const scheme = tlsOptions ? "HTTPS" : "HTTP";
635
- httpServer = createHTTPServer(registerTools, deps, port, authToken, host, tlsOptions, oauthOptions);
982
+ httpServer = createHTTPServer(
983
+ registerTools,
984
+ deps,
985
+ port,
986
+ authToken,
987
+ host,
988
+ tlsOptions && adminCa ? { ...tlsOptions, ca: adminCa } : tlsOptions,
989
+ oauthOptions,
990
+ );
991
+ // The secure page (/zalo/secure/<token>) and the QR login page (/zalo/qr/<token>) are served on this
992
+ // port; their links use publicUrl (behind a reverse proxy or TLS) or else this server's own address,
993
+ // never a request's Host header.
994
+ const localHost = host === "0.0.0.0" || host === "::" ? "127.0.0.1" : host;
995
+ const localBaseUrl = `${tlsOptions ? "https" : "http"}://${localHost.includes(":") ? `[${localHost}]` : localHost}:${port}`;
996
+ securePage.configure({ publicUrl: publicUrl.publicUrl, localBaseUrl });
997
+ qrPage.configure({ publicUrl: publicUrl.publicUrl, localBaseUrl, mounted: true });
998
+ mediaLinks.configure({
999
+ publicUrl: publicUrl.publicUrl,
1000
+ localBaseUrl,
1001
+ bearerAvailable: Boolean(authToken || oauthClientSecret || oauthClients.length > 0),
1002
+ });
1003
+ console.error(
1004
+ `[mcp] Media links: ${mediaLinks.linkAuth} (${mediaAuth.source}), ${Math.round(mediaPolicy.linkTtlMs / 60_000)} min` +
1005
+ (mediaLinks.linkAuth === "capability" && publicUrl.publicUrl
1006
+ ? `, at most ${mediaAuth.maxClients} client address(es) per link`
1007
+ : ""),
1008
+ );
1009
+ console.error(
1010
+ `[mcp] Public address: ${publicUrl.publicUrl ? `${publicUrl.publicUrl} (${publicUrl.source})` : `none set: links use ${localBaseUrl} (set publicUrl behind a proxy)`}`,
1011
+ );
636
1012
  console.error(`[mcp] ${scheme} server started on port ${port}`);
637
1013
  if (!authToken && !oauthClientSecret && oauthClients.length === 0) {
638
1014
  console.error(
@@ -650,6 +1026,7 @@ export function registerMCPCommands(program) {
650
1026
  accountDir,
651
1027
  stageLock,
652
1028
  syncJobs,
1029
+ { presence: presenceDoor },
653
1030
  );
654
1031
  }
655
1032
  } catch (e) {
@@ -660,11 +1037,7 @@ export function registerMCPCommands(program) {
660
1037
 
661
1038
  // Setup notifier (sends to Zalo group when agent is offline)
662
1039
  const notifier = new ZaloNotifier(sessionApi, config);
663
- const webhookUrl =
664
- opts.webhook?.trim() ||
665
- envForAccount("ZALO_WEBHOOK_URL", activeAcc.ownId) ||
666
- config.webhook?.trim() ||
667
- null;
1040
+ const webhookUrl = resolveWebhookUrl({ accountId: activeAcc.ownId, flag: opts.webhook, config });
668
1041
  const webhookSecret = resolveWebhookSecret({
669
1042
  flag: opts.webhookSecret,
670
1043
  env: envForAccount("ZALO_WEBHOOK_SECRET", activeAcc.ownId),
@@ -676,30 +1049,180 @@ export function registerMCPCommands(program) {
676
1049
  // Events are written to an on-disk outbox first and delivered from it, so a receiver
677
1050
  // that is down or slow costs a backlog (mcp webhook status), not messages.
678
1051
  let webhookDelivery = null;
679
- if (webhookUrl) {
1052
+ /** Start the delivery, or move a running one to the current receiver and settings (a live policy change). */
1053
+ const applyWebhook = (url) => {
680
1054
  const delivery = resolveWebhookDelivery(activeAcc.ownId, config);
681
1055
  for (const w of delivery.warnings) console.error(`[mcp] ${w}`);
1056
+ if (!url) {
1057
+ if (webhookDelivery)
1058
+ console.error("[mcp] Webhook disabled by the policy; queued events stay in the outbox");
1059
+ webhookDelivery?.stop();
1060
+ webhookDelivery = null;
1061
+ return;
1062
+ }
1063
+ if (webhookDelivery) {
1064
+ webhookDelivery.reconfigure({ url, batchSize: delivery.batchSize, maxAgeMs: delivery.maxAgeMs });
1065
+ console.error(`[mcp] Webhook settings changed by the policy (${delivery.batchSize} per POST)`);
1066
+ return;
1067
+ }
682
1068
  webhookDelivery = startWebhookDelivery({
683
1069
  accountDir,
684
1070
  accountId: activeAcc.ownId,
685
- url: webhookUrl,
1071
+ url,
686
1072
  secret: webhookSecret,
687
1073
  batchSize: delivery.batchSize,
688
1074
  maxAgeMs: delivery.maxAgeMs,
689
1075
  log: (line) => console.error(`[mcp] ${line}`),
690
1076
  });
691
1077
  console.error(
692
- `[mcp] Webhook enabled: ${webhookUrl}${webhookSecret ? " (signed)" : ""}, ` +
1078
+ `[mcp] Webhook enabled: ${url}${webhookSecret ? " (signed)" : ""}, ` +
693
1079
  `durable outbox, ${delivery.batchSize === 1 ? "one event per POST" : `up to ${delivery.batchSize} events per POST`}`,
694
1080
  );
695
- }
1081
+ };
1082
+ if (webhookUrl) applyWebhook(webhookUrl);
696
1083
  health.setSource("webhook", () => webhookDelivery?.status() ?? null);
697
- /** Queue one buffered message for the webhook, in the shape `postMCPWebhook` always sent. */
698
- const queueWebhook = (normalized) =>
699
- webhookDelivery?.enqueue(
700
- `message:${normalized.id}`,
1084
+ // approval.deliver "webhook"/"both": a one-time page's link goes to the webhook as an `approval_requested`
1085
+ // event, signed and queued like the others, for a CRM's approval UI to show a person
1086
+ // (src/core/secure-page.js). No dedupe key: each request is its own event.
1087
+ securePage.configure({
1088
+ notify: webhookDelivery ? (payload) => webhookDelivery.enqueue(null, payload) : null,
1089
+ });
1090
+ warnApprovalPolicy({
1091
+ config,
1092
+ accountId: activeAcc.ownId,
1093
+ accountDir,
1094
+ hasWebhook: Boolean(webhookDelivery),
1095
+ });
1096
+ // Quotas and retention (src/core/storage-quota.js): this daemon holds daemon.lock, so it is the one process
1097
+ // that purges, on its timer (retention.purgeEvery) and for `db purge` over its channel. Over a limit,
1098
+ // caching goes on; the storage_quota events go to the webhook and, as system events, to the live buffer that
1099
+ // zalo_get_messages / zalo_wait_for_message read (not every MCP client is an agent: a person sees their usage).
1100
+ // group_gone (src/core/group-exit.js): to the log, the webhook and the live buffer, like storage_quota;
1101
+ // the thread-name cache drops a purged group and flags a kept one (zalo_search_threads).
1102
+ setGroupGoneSink((event) => {
1103
+ console.error(`[mcp] ${describeGroupGone(event)}`);
1104
+ webhookDelivery?.enqueue(null, event);
1105
+ buffer.pushSystem(groupGoneSystemEvent(event));
1106
+ if (event.mode === "keep") {
1107
+ nameCache?.set?.(event.threadId, { gone: true, leftAt: event.leftAt, goneReason: event.reason });
1108
+ } else nameCache?.drop?.(event.threadId);
1109
+ });
1110
+ const storageJobs = startStorageJobs({
1111
+ ownId: activeAcc.ownId,
1112
+ mediaRoot: MEDIA_DIR || config.media?.downloadDir || null,
1113
+ emit: (event) => {
1114
+ console.error(`[mcp] ${describeQuotaEvent(event)}`);
1115
+ webhookDelivery?.enqueue(null, event);
1116
+ buffer.pushSystem(quotaSystemEvent(event));
1117
+ },
1118
+ log: (l) => console.error(`[mcp] ${l}`),
1119
+ purgeOutboxDead: (cutoff) => purgeDeadDeliveries(accountDir, cutoff),
1120
+ });
1121
+ // account_state (src/core/account-state.js): one word per change, to the webhook, the live buffer and
1122
+ // /status, the same as `listen`; detail.presence is the mode presence runs in.
1123
+ // A park and its wake stay out of the buffer a wait reads (createBufferStateFilter says why).
1124
+ const intoBuffer = createBufferStateFilter();
1125
+ const accountState = createAccountStateTracker({
1126
+ accountId: activeAcc.ownId,
1127
+ emit: (event) => {
1128
+ console.error(`[mcp] ${describeAccountState(event)}`);
1129
+ webhookDelivery?.enqueue(null, event);
1130
+ if (intoBuffer(event)) buffer.pushSystem(accountStateSystemEvent(event));
1131
+ },
1132
+ detail: () => daemonPresence?.detail() ?? { presence: presenceCheck.settings.mode },
1133
+ });
1134
+ health.setSource("accountState", () => accountState.current());
1135
+ // session_expiring (src/core/session-notice.js): the saved login ends by itself; once per threshold (14, 7,
1136
+ // 3, 1 days, ended) to the log, the webhook and the live buffer, the same as `listen`.
1137
+ const sessionWatch = startSessionExpiryWatch({
1138
+ ownId: activeAcc.ownId,
1139
+ accountDir,
1140
+ emit: (event) => {
1141
+ console.error(`[mcp] ${describeSessionExpiring(event)}`);
1142
+ webhookDelivery?.enqueue(null, event);
1143
+ buffer.pushSystem(sessionExpiringSystemEvent(event));
1144
+ },
1145
+ });
1146
+ // A policy change (admin API, `policy set`, a file drop) counts from the next tool call: the per-call readers
1147
+ // (confirm mode, approval, delivery modes) read the live policy themselves; what was set up at start is set
1148
+ // up again here.
1149
+ onPolicyChanged = (changed) => {
1150
+ const id = activeAcc.ownId;
1151
+ console.error(`[mcp] Policy changed: ${changed.join(", ")}`);
1152
+ if (touches(changed, ["hiddenChats"])) {
1153
+ hiddenPolicy = resolveHiddenChats({ config, accountId: id });
1154
+ if (hiddenPolicy.mode !== "include") {
1155
+ mediaLinks.revokeWhere(
1156
+ (l) => l.threadId !== null && hidden.isHidden(l.threadId),
1157
+ "its chat is hidden by the policy",
1158
+ );
1159
+ }
1160
+ }
1161
+ if (touches(changed, ["media"])) {
1162
+ mediaPolicy = resolveMediaDelivery({ config, accountId: id });
1163
+ mediaAuth = resolveMediaLinkAuth({
1164
+ config,
1165
+ accountId: id,
1166
+ publicUrl: effectiveHttpPort ? publicUrl.publicUrl : null,
1167
+ });
1168
+ mediaLinks.configure({
1169
+ linkAuth: effectiveHttpPort ? mediaAuth.linkAuth : "capability",
1170
+ maxClients: mediaAuth.maxClients,
1171
+ clientTtlMs: mediaAuth.clientTtlMs,
1172
+ ttlMs: mediaPolicy.linkTtlMs,
1173
+ rateLimit: mediaPolicy.linkRateLimit,
1174
+ });
1175
+ startTempfileSweeper({ ttlMs: mediaPolicy.tempfileTtlMs });
1176
+ // Links issued under the old rule must not outlive it.
1177
+ if (touches(changed, ["media.linkAuth", "media.capability"])) {
1178
+ const n = mediaLinks.revokeAll("the link policy changed");
1179
+ if (n) console.error(`[mcp] ${n} media link(s) revoked: the link policy changed`);
1180
+ }
1181
+ }
1182
+ // A lower limit or a new rule is checked at once; a new interval counts from now.
1183
+ if (touches(changed, ["quota", "retention"])) storageJobs.reschedule();
1184
+ if (touches(changed, ["webhook", "webhookBatchSize", "webhookMaxAge"])) {
1185
+ applyWebhook(resolveWebhookUrl({ accountId: id, flag: opts.webhook, config }));
1186
+ securePage.configure({
1187
+ notify: webhookDelivery ? (payload) => webhookDelivery?.enqueue(null, payload) : null,
1188
+ });
1189
+ }
1190
+ // presence.*: live (a switch to always-on holds the socket now; one to on-demand starts the idle clock).
1191
+ daemonPresence?.applyPolicy(changed);
1192
+ };
1193
+ /**
1194
+ * Queue one buffered message for the webhook, in the shape `postMCPWebhook` always sent; a message in a
1195
+ * hidden chat goes as the policy says: not at all, or as `{event, hidden: true}` with no ids or content.
1196
+ */
1197
+ const queueWebhook = (normalized) => {
1198
+ const kind = normalized.type === "undo" ? "undo" : "message";
1199
+ const view = hiddenEventView(normalized, hidden, hiddenPolicy.mode, { name: kind });
1200
+ if (!view) return undefined;
1201
+ const key = `${kind}:${normalized.msgId ?? normalized.cliMsgId}`;
1202
+ if (view.hidden) {
1203
+ return webhookDelivery?.enqueue(`hidden-${key}`, {
1204
+ event: view.event,
1205
+ hidden: true,
1206
+ accountId: activeAcc.ownId,
1207
+ });
1208
+ }
1209
+ return webhookDelivery?.enqueue(
1210
+ key,
701
1211
  buildMCPWebhookPayload(normalized, { accountId: activeAcc.ownId }),
702
1212
  );
1213
+ };
1214
+ /**
1215
+ * Hand one message (or recall) to the agents: the buffer, the notifier, the webhook. A hidden chat's is
1216
+ * dropped under `exclude`; under `contentless` the buffer keeps it (the tools show it without content)
1217
+ * and the notifier, whose preview names the sender, is skipped.
1218
+ */
1219
+ const deliverToAgents = (n, { notify = true } = {}) => {
1220
+ const isHidden = hiddenPolicy.mode !== "include" && hidden.isHidden(n.threadId);
1221
+ if (isHidden && hiddenPolicy.mode === "exclude") return;
1222
+ buffer.push(n.threadId, n);
1223
+ if (notify && !isHidden) notifier.onMessage(n);
1224
+ queueWebhook(n);
1225
+ };
703
1226
 
704
1227
  // Delivered receipts: the same shared implementation `listen` uses
705
1228
  // (AGENTS.md §13 -- the two listeners must not differ). Diagnostics
@@ -731,6 +1254,11 @@ export function registerMCPCommands(program) {
731
1254
  const gapId = syncManager.recordGap(fromTs, Date.now(), reason);
732
1255
  if (!gapId) return false;
733
1256
  const since = new Date(fromTs).toISOString();
1257
+ // A parked window (on-demand presence) is planned: one quiet line, the self-heal closes it.
1258
+ if (reason === IDLE_GAP_REASON) {
1259
+ console.error(`[mcp] Parked since ${since}: catching up from Zalo's offline queue`);
1260
+ return true;
1261
+ }
734
1262
  console.error(
735
1263
  opts.selfHeal !== false
736
1264
  ? `[mcp] Coverage gap (${reason}) since ${since}: recovering it now from Zalo's offline ` +
@@ -741,11 +1269,23 @@ export function registerMCPCommands(program) {
741
1269
  );
742
1270
  return true;
743
1271
  };
744
- const lifecycle = createGapTracker({ syncManager, reportGap });
1272
+ const lifecycle = createGapTracker({
1273
+ syncManager,
1274
+ reportGap,
1275
+ setState: setSyncState,
1276
+ deleteState: clearSyncState,
1277
+ });
745
1278
 
746
1279
  // Same startup check `listen` does: a window between the last
747
1280
  // recorded connection and now is unobserved until something says so.
748
- if (!reportGap(syncManager.getLastConnectedAt(), "startup-gap")) {
1281
+ // One that ended in a park (a stop or crash while parked) is a planned window.
1282
+ const lastConnectedAt = syncManager.getLastConnectedAt();
1283
+ const parkedStamp = Number(getSyncState(PARKED_AT_KEY)) || null;
1284
+ const startupReason = parkedStamp
1285
+ ? startupGapReason({ lastConnectedAt, parkedAt: parkedStamp })
1286
+ : "startup-gap";
1287
+ if (parkedStamp) clearSyncState(PARKED_AT_KEY);
1288
+ if (!reportGap(lastConnectedAt, startupReason)) {
749
1289
  syncManager.markConnected();
750
1290
  }
751
1291
  const pending = getPendingSyncGaps();
@@ -759,21 +1299,109 @@ export function registerMCPCommands(program) {
759
1299
  }
760
1300
  const mcpHeartbeatTimer = setInterval(() => lifecycle.heartbeat(), HEARTBEAT_MS);
761
1301
 
1302
+ // On-demand presence: when this daemon holds the account's socket (src/core/daemon-presence.js, shared
1303
+ // with `listen`). Built before the socket host, which it drives through park/wake.
1304
+ try {
1305
+ daemonPresence = createDaemonPresence({
1306
+ ownId: activeAcc.ownId,
1307
+ config,
1308
+ transport: presenceRole,
1309
+ selfHeal: opts.selfHeal !== false,
1310
+ configDir: CONFIG_DIR,
1311
+ log: (line) => console.error(`[mcp] ${line}`),
1312
+ getSocketHost: () => socketHost,
1313
+ stageLock,
1314
+ deliveredReceipts,
1315
+ lifecycle,
1316
+ health,
1317
+ accountState,
1318
+ coveredUntil: () => syncManager.getLastConnectedAt(),
1319
+ });
1320
+ } catch (e) {
1321
+ dropLock();
1322
+ console.error(`[mcp] Refusing to start: ${e.message}`);
1323
+ process.exit(1);
1324
+ }
1325
+ {
1326
+ const p = daemonPresence.settings;
1327
+ console.error(
1328
+ `[mcp] Presence: ${p.mode}${daemonPresence.forced ? ` (${daemonPresence.forced})` : ""}` +
1329
+ (p.mode === "on-demand"
1330
+ ? `: parks after ${Math.round(p.idleTimeoutMs / 1000)}s with no demand, ` +
1331
+ `never within ${Math.round(p.minConnectedMs / 1000)}s of a connect` +
1332
+ `${p.connectOnStart ? "; catches up once at start" : ""}`
1333
+ : ""),
1334
+ );
1335
+ }
1336
+
762
1337
  // The same catch-up `listen` runs (AGENTS.md §13): one stage at a
763
- // time on this socket, a raw reader for the fields zca-js drops, and
1338
+ // time on this socket, a raw reader for the fields the listener's events drop, and
764
1339
  // the offline-queue pull on every handshake (src/core/self-heal.js).
765
1340
  // `stageLock` is the one created before the server above.
766
1341
  const socketTap = createSocketTap({ log: (line) => console.error(`[mcp] ${line}`) });
767
1342
  // The read state other devices report, stored exactly as `listen`
768
1343
  // stores it, so a thread the human read on the phone stops
769
1344
  // looking unread (src/core/read-state.js).
770
- createReadStateSync({ tap: socketTap, log: (line) => console.error(`[mcp] ${line}`) });
1345
+ createReadStateSync({
1346
+ tap: socketTap,
1347
+ ownId: activeAcc.ownId,
1348
+ log: (line) => console.error(`[mcp] ${line}`),
1349
+ });
1350
+ // A user's last-online time as Zalo pushes it (602 online_status), kept for zalo_friend `last_online`
1351
+ // with `cached`, as in `listen` (src/core/last-online.js).
1352
+ attachLastOnline({ tap: socketTap, log: (line) => console.error(`[mcp] ${line}`) });
1353
+ // The cloud queue, kept current when the server says it may be stale (cmd 621): bounded, read-only,
1354
+ // never beside another stage (src/core/cloud-verify.js). Same in `listen` and `mcp start`.
1355
+ createCloudVerifier({
1356
+ tap: socketTap,
1357
+ getApi,
1358
+ lock: stageLock,
1359
+ log: (line) => console.error(`[mcp] ${line}`),
1360
+ });
1361
+ // The control actions the server sends that nobody handles, named once in the account folder
1362
+ // (src/core/unknown-acts.js). Same in `listen` and `mcp start`.
1363
+ attachUnknownActs({
1364
+ tap: socketTap,
1365
+ file: join(accountDir, "unknown-acts.json"),
1366
+ log: (line) => console.error(`[mcp] ${line}`),
1367
+ });
1368
+ // The text of a voice message Zalo transcribed arrives as a control push; it is kept in the account
1369
+ // folder for `read run voice-transcript` (src/core/voice-text.js). Same in `listen` and `mcp start`.
1370
+ attachVoiceText({
1371
+ tap: socketTap,
1372
+ file: voiceTextFile(accountDir),
1373
+ log: (line) => console.error(`[mcp] ${line}`),
1374
+ });
1375
+ // A DM reminder created, edited or removed on another device is stored or dropped in the cache, a
1376
+ // device-list change is logged, the conversation, quick-message, catalog and settings changes are read
1377
+ // (there is no cache of them to keep), as in `listen` (src/core/control-events.js); the events are
1378
+ // printed only by `listen`.
1379
+ attachControlEvents({
1380
+ tap: socketTap,
1381
+ ownId: activeAcc.ownId,
1382
+ log: (line) => console.error(`[mcp] ${line}`),
1383
+ });
1384
+ // Hidden chats hidden, unhidden or their PIN changed or removed on another device (601 `hidden_chat`).
1385
+ // Same in `listen` and `mcp start`.
1386
+ attachHiddenChatControls({ tap: socketTap, set: hidden, getApi, readControls });
1387
+ // End-to-end encrypted messages this client cannot read: the first is named in the log, the rest counted.
1388
+ const undecryptable = createUndecryptableNotice({ log: (line) => console.error(`[mcp] ${line}`) });
771
1389
  const selfHeal = createSelfHeal({
772
1390
  getApi,
773
1391
  tap: socketTap,
774
1392
  lock: stageLock,
775
1393
  enabled: opts.selfHeal !== false,
776
1394
  log: (line) => console.error(`[mcp] ${line}`),
1395
+ // Coverage never spans a device change (src/core/device-since.js). Same in `listen`.
1396
+ deviceSince: () => deviceSinceOf(activeAcc.ownId, getApi()),
1397
+ // A catch-up finished: on-demand presence ends its start-up and pulse holds. Same in `listen`.
1398
+ onRun: ({ ms }) => daemonPresence?.noteCatchUpDone({ ms }),
1399
+ // Zalo dropped part of a queue: the log, the webhook and the live buffer, like the other notices.
1400
+ onNotice: (event) => {
1401
+ console.error(`[mcp] ${describeQueueOverflow(event)}`);
1402
+ webhookDelivery?.enqueue(null, event);
1403
+ buffer.pushSystem(queueOverflowSystemEvent(event));
1404
+ },
777
1405
  // A bot must see what arrived while the socket was down, as it
778
1406
  // would have seen it live -- same filters, flagged as catch-up.
779
1407
  onRecovered: (items) => {
@@ -783,9 +1411,7 @@ export function registerMCPCommands(program) {
783
1411
  const normalized = { ...normalizeMessage(msg, info), catchUp: true };
784
1412
  if (!filter.shouldWatch(normalized.threadId, normalized.threadType)) continue;
785
1413
  if (!filter.shouldKeep(normalized)) continue;
786
- buffer.push(normalized.threadId, normalized);
787
- notifier.onMessage(normalized);
788
- queueWebhook(normalized);
1414
+ deliverToAgents(normalized);
789
1415
  }
790
1416
  },
791
1417
  });
@@ -814,11 +1440,16 @@ export function registerMCPCommands(program) {
814
1440
  /**
815
1441
  * Attach Zalo listener handlers to the current API instance.
816
1442
  * Must be called again after each re-login with the new API instance.
817
- * @param {object} api - zca-js API instance
1443
+ * @param {object} api - session object
818
1444
  */
819
1445
  function attachListenerHandlers(api) {
820
1446
  health.attach(api.listener);
1447
+ daemonAliases.attach(api.listener);
821
1448
  api.listener.on("message", (msg) => {
1449
+ // A message Zalo re-sent (534) that is already stored was buffered when it was stored; self-heal
1450
+ // owns re-pushes, so it is not buffered or posted twice.
1451
+ if (selfHeal.isRepeatedRepush(msg)) return;
1452
+ undecryptable.note(msg);
822
1453
  // Persist FIRST and unconditionally. The buffer is what an
823
1454
  // agent polls; the cache is the durable record, and it must
824
1455
  // not depend on whether a thread happens to be watched or
@@ -858,9 +1489,7 @@ export function registerMCPCommands(program) {
858
1489
  // Apply noise filter (stickers, system msgs, short emoji)
859
1490
  if (!filter.shouldKeep(normalized)) return;
860
1491
 
861
- buffer.push(normalized.threadId, normalized);
862
- notifier.onMessage(normalized);
863
- queueWebhook(normalized);
1492
+ deliverToAgents(normalized);
864
1493
  console.error(
865
1494
  `${DEBUG_MARK}[mcp] Buffered ${normalized.threadType} msg from ${normalized.threadId}`,
866
1495
  );
@@ -888,6 +1517,18 @@ export function registerMCPCommands(program) {
888
1517
  api.listener.on("undo", (u) => {
889
1518
  const r = storeLiveUndo(u);
890
1519
  if (!r.stored && r.reason) console.error(`[mcp] recall not applied: ${r.reason}`);
1520
+ // The cache is updated above whatever happens next; this is what an agent
1521
+ // sees. A recall used to stop at the cache, so a waiter on
1522
+ // zalo_wait_for_message never woke for one and zalo_get_messages never
1523
+ // listed it (bug-reports #3). Self recalls are the agent's own zalo_undo.
1524
+ if (u?.isSelf) return;
1525
+ const recalled = normalizeUndo(u);
1526
+ if (!recalled) return;
1527
+ if (!filter.shouldWatch(recalled.threadId, recalled.threadType)) return;
1528
+ deliverToAgents(recalled, { notify: false });
1529
+ console.error(
1530
+ `${DEBUG_MARK}[mcp] Buffered recall of ${recalled.msgId ?? recalled.cliMsgId} in ${recalled.threadId}`,
1531
+ );
891
1532
  });
892
1533
 
893
1534
  api.listener.on("delivered_messages", (m) => storeReceipts(m, STATUS_RECEIVED));
@@ -895,6 +1536,20 @@ export function registerMCPCommands(program) {
895
1536
 
896
1537
  api.listener.on("group_event", (event) => {
897
1538
  noteBoardChange(event);
1539
+ // Same call as `listen`: our uid tells being removed from removing someone else. A gone group's
1540
+ // later events are skipped until a join names us (as Zalo does).
1541
+ const gone = storeGroupEvent(event, { ownId: activeAcc.ownId });
1542
+ if (gone.ignored) return;
1543
+ if (gone.gone) {
1544
+ // Purge or keep (groups.onLeave, read now); the group_gone event goes through the sink.
1545
+ applyGroupExit({
1546
+ ownId: activeAcc.ownId,
1547
+ threadId: gone.threadId,
1548
+ reason: gone.reason,
1549
+ at: gone.at,
1550
+ }).catch((e) => console.error(`[mcp] group exit of ${gone.threadId} failed: ${e.message}`));
1551
+ return;
1552
+ }
898
1553
  storeGroupEventRow(event);
899
1554
  const groupName = typeof event?.data?.groupName === "string" ? event.data.groupName.trim() : "";
900
1555
  if (groupName && event?.threadId !== undefined && event?.threadId !== null) {
@@ -903,10 +1558,6 @@ export function registerMCPCommands(program) {
903
1558
  nameCache?.set(tid, { name: groupName, type: "group" });
904
1559
  }
905
1560
  }
906
- // Same call as `listen`: our uid tells being removed from
907
- // removing someone else, and a later event clears the flag.
908
- const gone = storeGroupEvent(event, { ownId: activeAcc.ownId });
909
- if (gone.gone) console.error(`[mcp] no longer in ${gone.threadId} — local history orphaned`);
910
1561
  });
911
1562
 
912
1563
  api.listener.on("connected", () => {
@@ -919,47 +1570,17 @@ export function registerMCPCommands(program) {
919
1570
 
920
1571
  api.listener.on("disconnected", (code) => {
921
1572
  if (lifecycle.isStopping()) return;
1573
+ // A park's close (on-demand presence) is planned, like a shutdown's.
1574
+ if (socketHost.isParking() || socketHost.isParked()) return;
1575
+ // After a kick the socket host has already said why it is not reconnecting.
1576
+ if (socketHost.kicked()) return;
922
1577
  console.error(`[mcp] Disconnected (code: ${code}). Auto-retrying... (${socketContext.describe()})`);
1578
+ if (!lifecycle.isDown()) reconnectCount++;
923
1579
  lifecycle.noteDown();
924
1580
  });
925
1581
 
926
- api.listener.on("closed", async (code) => {
927
- if (lifecycle.isStopping()) return;
928
- lifecycle.noteDown();
929
- if (code === CLOSE_DUPLICATE) {
930
- dropLock();
931
- console.error("[mcp] Duplicate Zalo Web session detected. Exiting.");
932
- process.exit(1);
933
- }
934
- reconnectCount++;
935
- console.error(
936
- `[mcp] Connection closed (code: ${code}). Re-login in 5s... (reconnect #${reconnectCount}; ${socketContext.describe()})`,
937
- );
938
- await new Promise((r) => setTimeout(r, 5000));
939
- try {
940
- clearSession();
941
- await loginDaemonAccount(activeAcc);
942
- console.error("[mcp] Re-login successful. Restarting listener...");
943
- const newApi = getApi();
944
- attachListenerHandlers(newApi);
945
- newApi.listener.start({ retryOnClose: true });
946
- } catch (e) {
947
- console.error(`[mcp] Re-login failed: ${e.message}. Retrying in 30s...`);
948
- await new Promise((r) => setTimeout(r, 30000));
949
- try {
950
- clearSession();
951
- await loginDaemonAccount(activeAcc);
952
- const retryApi = getApi();
953
- attachListenerHandlers(retryApi);
954
- retryApi.listener.start({ retryOnClose: true });
955
- console.error("[mcp] Re-login successful on retry.");
956
- } catch (e2) {
957
- dropLock();
958
- console.error(`[mcp] Re-login retry failed: ${e2.message}. Exiting.`);
959
- process.exit(1);
960
- }
961
- }
962
- });
1582
+ // There is no `closed` handler on purpose; see the same place in `listen`. The socket
1583
+ // host (src/core/socket-host.js) keeps this socket alive and ends the daemon on a kick.
963
1584
 
964
1585
  api.listener.on("error", () => {
965
1586
  // WS errors are followed by close/disconnect — suppress to avoid noise
@@ -972,6 +1593,7 @@ export function registerMCPCommands(program) {
972
1593
  // for a window nothing was missed in.
973
1594
  lifecycle.setStopping();
974
1595
  health.noteStopping();
1596
+ daemonPresence?.stop();
975
1597
  clearInterval(mcpHeartbeatTimer);
976
1598
  deliveredReceipts.stop();
977
1599
  const receipts = deliveredReceipts.stats();
@@ -983,23 +1605,73 @@ export function registerMCPCommands(program) {
983
1605
  } catch (e) {
984
1606
  console.error(`[mcp] Failed to stamp shutdown state: ${e.message}`);
985
1607
  }
1608
+ // The supervisor first, so the close that follows is read as a stop and not as a drop.
1609
+ socketHost.stop().catch(() => {});
986
1610
  try {
987
1611
  getApi().listener.stop();
988
1612
  } catch {
989
1613
  /* already stopped */
990
1614
  }
991
1615
  notifier?.destroy();
1616
+ policyRuntime.stop();
1617
+ storageJobs.stop();
1618
+ sessionWatch.stop();
992
1619
  webhookDelivery?.stop();
1620
+ mediaLinks.revokeAll("the server stopped");
993
1621
  httpServer?.close();
994
1622
  dropLock();
995
1623
  process.exit(0);
996
1624
  };
997
1625
 
1626
+ // The one place that keeps the socket alive, shared with `listen`.
1627
+ const socketHost = createSocketHost({
1628
+ log: (_level, message) => console.error(`[mcp] ${message}`),
1629
+ // The supervisor's states reach presence, health and account_state through one place.
1630
+ health: { noteSocketState: (state) => daemonPresence.noteSocketState(state) },
1631
+ // On-demand: a kick by another session of this login yields (the daemon stays up, refusing requests
1632
+ // until `presence resume`); a park marks its close as planned before the supervisor stops.
1633
+ yieldOnKick: () => daemonPresence.yieldOnKick(),
1634
+ onParking: () => daemonPresence.onParking(),
1635
+ isStopping: () => lifecycle.isStopping(),
1636
+ anomalyFile: join(accountDir, "sock-anomaly.json"),
1637
+ kickFile: kickFile(accountDir),
1638
+ relogin: async () => {
1639
+ clearSession();
1640
+ await loginDaemonAccount(activeAcc);
1641
+ const newApi = getApi();
1642
+ attachListenerHandlers(newApi);
1643
+ return newApi;
1644
+ },
1645
+ onKicked: () => {
1646
+ // Said before the exit: the account is not coming back by itself.
1647
+ accountState.note("kicked", { exitCode: EXIT_CODE.KICKED });
1648
+ // The session ended: no media link may outlive it, even for the moments before the exit.
1649
+ mediaLinks.revokeAll("the session ended");
1650
+ dropLock();
1651
+ process.exit(EXIT_CODE.KICKED);
1652
+ },
1653
+ onRevoked: (e) => {
1654
+ mediaLinks.revokeAll("the session ended");
1655
+ console.error(
1656
+ `[mcp] Zalo keeps refusing the saved login (${e?.message ?? e}): another browser or device ` +
1657
+ "took the web login. Add the account again by QR (`zalo-agent login`).",
1658
+ );
1659
+ // Signed out: the daemon stays up (status, API, a QR re-add) and refuses requests; exit 4 only with
1660
+ // ZALO_EXIT_ON_SIGNED_OUT[_<ownId>]=1.
1661
+ if (daemonPresence.signOut(e)) return;
1662
+ accountState.note("login_needed", { exitCode: EXIT_CODE.SESSION_REVOKED });
1663
+ dropLock();
1664
+ process.exit(EXIT_CODE.SESSION_REVOKED);
1665
+ },
1666
+ });
1667
+
998
1668
  // Wire listener and start
999
1669
  try {
1000
1670
  const api = getApi();
1001
1671
  attachListenerHandlers(api);
1002
- api.listener.start({ retryOnClose: true });
1672
+ // The host takes the session; presence opens the socket now (always-on, the start-up catch-up) or
1673
+ // on the first demand.
1674
+ daemonPresence.start(api);
1003
1675
  console.error("[mcp] Zalo listener started. MCP server ready.");
1004
1676
  // This process holds the account's one permitted socket, so it
1005
1677
  // performs the work that needs one on behalf of the CLI:
@@ -1019,6 +1691,25 @@ export function registerMCPCommands(program) {
1019
1691
  lock: stageLock,
1020
1692
  onStop: shutdown,
1021
1693
  onStatus: () => health.snapshot(),
1694
+ // `policy set|unset`: applied here, so it counts at once (src/core/policy-store.js).
1695
+ onPolicy: servePolicyRequest,
1696
+ // `db purge`: this daemon is the account's one writer, so the purge runs here.
1697
+ onPurge: ({ dryRun }) => ({ report: storageJobs.runNow({ dryRun: dryRun !== false }) }),
1698
+ // `presence status|wake|park|resume`, and the fleet controller's relay.
1699
+ onPresence: (p) => daemonPresence.serve(p),
1700
+ // An upload, a sync stage, a wait: each holds the socket (refused while yielded or signed out).
1701
+ presenceGate: (o) => daemonPresence.admit(o),
1702
+ // `msg media --deliver link`: a link this daemon serves (on its HTTP port, or 127.0.0.1).
1703
+ onMediaLink: ({ msgId }) =>
1704
+ linkForCachedMessage({
1705
+ row: getMessageById(msgId),
1706
+ scope: scopeOfDir(accountDir),
1707
+ accountId: activeAcc.ownId,
1708
+ hidden: hiddenPolicy.mode === "include" ? null : hidden,
1709
+ links: mediaLinks,
1710
+ ensureServed: ensureMediaServed,
1711
+ policy: mediaPolicy,
1712
+ }),
1022
1713
  onWait: async (params, signal) => {
1023
1714
  const cleanThreadId =
1024
1715
  typeof params?.threadId === "string" && params.threadId.trim()
@@ -1109,8 +1800,7 @@ export function registerMCPCommands(program) {
1109
1800
  .option("--timeout <seconds>", "Maximum seconds to wait before returning timeout (1-300, default: 55)", "55")
1110
1801
  .option(
1111
1802
  "-n, --limit <count>",
1112
- `Return up to this many buffered messages in one call, in order (1-${MAX_BATCH}, default: 1)`,
1113
- "1",
1803
+ "Return at most this many buffered messages, in order (default: every message already waiting)",
1114
1804
  )
1115
1805
  .option(
1116
1806
  "--settle <ms>",
@@ -1143,9 +1833,9 @@ export function registerMCPCommands(program) {
1143
1833
  error(`Invalid --consumer "${consumer}": must be 1-64 characters matching [A-Za-z0-9._:@-].`);
1144
1834
  process.exit(1);
1145
1835
  }
1146
- const limit = Number(opts.limit);
1147
- if (!Number.isInteger(limit) || limit < 1 || limit > MAX_BATCH) {
1148
- error(`Invalid --limit "${opts.limit}": must be an integer between 1 and ${MAX_BATCH}.`);
1836
+ const limit = opts.limit === undefined ? undefined : Number(opts.limit);
1837
+ if (limit !== undefined && (!Number.isInteger(limit) || limit < 1)) {
1838
+ error(`Invalid --limit "${opts.limit}": must be a whole number of at least 1.`);
1149
1839
  process.exit(1);
1150
1840
  }
1151
1841
  const settleMs = Number(opts.settle);
@@ -1195,6 +1885,11 @@ export function registerMCPCommands(program) {
1195
1885
  () => {
1196
1886
  if (res.status === "message" && res.messages?.length) {
1197
1887
  for (const m of res.messages) {
1888
+ // A system event (account_state, group_gone, queue_overflow, session_expiring, storage_quota) is no message.
1889
+ if (m.system) {
1890
+ info(`[cursor ${m._cursor}] ${m.type}: ${m.text ?? ""}`);
1891
+ continue;
1892
+ }
1198
1893
  const label = m.threadName ? `${m.threadName} (${m.threadId})` : m.threadId;
1199
1894
  success(
1200
1895
  `[cursor ${m._cursor}] ${m.senderName || m.senderId} in ${label}: ${m.text || `(${m.type})`}`,
@@ -1272,4 +1967,5 @@ export function registerMCPCommands(program) {
1272
1967
  });
1273
1968
 
1274
1969
  registerMCPWebhookCommands(mcp, program);
1970
+ registerMCPApproverCommand(mcp, program);
1275
1971
  }