@openclaw/whatsapp 2026.7.2-beta.5 → 2026.7.33

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 (1740) hide show
  1. package/README.md +1 -1
  2. package/dist/.setup/access-control-C0jumQuO.mjs +364 -0
  3. package/dist/.setup/account-config-6PTOSfaI.mjs +47 -0
  4. package/dist/.setup/accounts-Dw16pdNl.mjs +114 -0
  5. package/dist/.setup/action-runtime-DLK_9v4r.mjs +73 -0
  6. package/dist/.setup/active-listener-CloPBx0S.mjs +11 -0
  7. package/dist/.setup/agent-tools-login-DINqgaYo.mjs +99 -0
  8. package/dist/.setup/approval-handler.runtime-DtJZbu3y.mjs +122 -0
  9. package/dist/.setup/approval-resolver-DF-lu8k5.mjs +15 -0
  10. package/dist/.setup/auth-store-BZKGa0tW.mjs +396 -0
  11. package/dist/.setup/channel-9WGjBznd.mjs +897 -0
  12. package/dist/.setup/channel-react-action-mvIbAFhn.mjs +127 -0
  13. package/dist/.setup/channel.runtime-DmmMgRJQ.mjs +55 -0
  14. package/dist/.setup/channel.setup-ByBYSeLd.mjs +22 -0
  15. package/dist/.setup/config-schema-mBX2nmn1.mjs +47 -0
  16. package/dist/.setup/connection-controller-Dt62u6fI.mjs +493 -0
  17. package/dist/.setup/connection-controller-registry-TSX_udJp.mjs +22 -0
  18. package/dist/.setup/constants-C7m81BNe.mjs +4 -0
  19. package/dist/.setup/directory-config-B7Obxrq2.mjs +37 -0
  20. package/dist/.setup/doctor-By3SB4lm.mjs +48 -0
  21. package/dist/.setup/group-session-key-CEwPRRRK.mjs +137 -0
  22. package/dist/.setup/identity-CDB1bT-p.mjs +76 -0
  23. package/dist/.setup/legacy-session-surface-api-B2szjq4r.mjs +2 -0
  24. package/dist/.setup/legacy-state-migrations-api-DXCxufZz.mjs +3 -0
  25. package/dist/.setup/login-7b3M0iBp.mjs +71 -0
  26. package/dist/.setup/login-qr-CbyA4QX5.mjs +442 -0
  27. package/dist/.setup/monitor-Dh6Di_YO.mjs +4289 -0
  28. package/dist/.setup/normalize-eddWWsNV.mjs +2 -0
  29. package/dist/.setup/normalize-target-bVWjgftN.mjs +89 -0
  30. package/dist/.setup/resolve-outbound-target-oI7VpU4w.mjs +40 -0
  31. package/dist/.setup/runtime-BfAdAEYT.mjs +8 -0
  32. package/dist/.setup/send-BQjMC41n.mjs +777 -0
  33. package/dist/.setup/send-api-BiAkPLr3.mjs +799 -0
  34. package/dist/.setup/session-errors-BAj9D2La.mjs +63 -0
  35. package/dist/.setup/session-vUI41Jel.mjs +252 -0
  36. package/dist/.setup/session.runtime-B-V3rXP6.mjs +12 -0
  37. package/dist/.setup/setup-core--FfzntMG.mjs +338 -0
  38. package/dist/.setup/setup-finalize-DCruIciL.mjs +300 -0
  39. package/dist/.setup/setup-plugin-api-B6ck_20D.mjs +3 -0
  40. package/dist/.setup/setup-surface-Zvj2cLzz.mjs +46 -0
  41. package/dist/.setup/socket-timing-DhbVFjah.mjs +77 -0
  42. package/dist/.setup/state-migrations-D_BmQUR9.mjs +40 -0
  43. package/dist/.setup/targets-runtime-C-GiVn6Y.mjs +188 -0
  44. package/dist/.setup/text-runtime-CUrq1mFq.mjs +4 -0
  45. package/dist/action-runtime-api.js +1 -1
  46. package/dist/action-runtime.runtime.js +1 -1
  47. package/dist/agent-tools-api.js +240 -0
  48. package/dist/api.js +27 -17
  49. package/dist/auth-presence.js +1 -1
  50. package/dist/channel-config-api.js +1 -1
  51. package/dist/channel-plugin-api.js +1 -1
  52. package/dist/constants.js +2 -0
  53. package/dist/contract-api.js +5 -5
  54. package/dist/directory-contract-api.js +1 -1
  55. package/dist/doctor-contract-api.js +5 -46
  56. package/dist/index.js +4 -4
  57. package/dist/legacy-session-surface-api.js +1 -1
  58. package/dist/legacy-state-migrations-api.js +1 -1
  59. package/dist/light-runtime-api.js +4 -4
  60. package/dist/login-qr-runtime.js +1 -1
  61. package/dist/runtime-api.js +14 -14
  62. package/dist/runtime-setter-api.js +1 -1
  63. package/dist/security-contract-api.js +1 -1
  64. package/dist/setup-entry.js +4 -3
  65. package/dist/setup-plugin-api.js +1 -1
  66. package/dist/targets.js +2 -0
  67. package/node_modules/audio-decode/node_modules/@thi.ng/bitstream/package.json +88 -0
  68. package/node_modules/audio-decode/node_modules/@thi.ng/errors/package.json +104 -0
  69. package/node_modules/audio-decode/node_modules/audio-type/package.json +48 -0
  70. package/node_modules/baileys/node_modules/@protobufjs/inquire/CHANGELOG.md +8 -0
  71. package/node_modules/baileys/node_modules/@protobufjs/inquire/README.md +13 -0
  72. package/node_modules/baileys/node_modules/@protobufjs/inquire/index.d.ts +10 -0
  73. package/node_modules/baileys/node_modules/@protobufjs/inquire/index.js +38 -0
  74. package/node_modules/baileys/node_modules/@protobufjs/inquire/package.json +21 -0
  75. package/node_modules/baileys/node_modules/@protobufjs/inquire/tests/data/array.js +1 -0
  76. package/node_modules/baileys/node_modules/@protobufjs/inquire/tests/data/emptyArray.js +1 -0
  77. package/node_modules/baileys/node_modules/@protobufjs/inquire/tests/data/emptyObject.js +1 -0
  78. package/node_modules/baileys/node_modules/@protobufjs/inquire/tests/data/object.js +1 -0
  79. package/node_modules/baileys/node_modules/@protobufjs/inquire/tests/index.js +20 -0
  80. package/node_modules/baileys/node_modules/@protobufjs/utf8/LICENSE +26 -0
  81. package/node_modules/baileys/node_modules/@protobufjs/utf8/index.js +104 -0
  82. package/node_modules/baileys/node_modules/@protobufjs/utf8/package.json +21 -0
  83. package/node_modules/baileys/node_modules/@protobufjs/utf8/tests/index.js +74 -0
  84. package/node_modules/baileys/node_modules/@types/node/README.md +15 -0
  85. package/node_modules/baileys/node_modules/@types/node/fs/promises.d.ts +1471 -0
  86. package/node_modules/baileys/node_modules/@types/node/package.json +155 -0
  87. package/node_modules/baileys/node_modules/lru-cache/dist/commonjs/browser/index.d.ts.map +1 -0
  88. package/node_modules/baileys/node_modules/lru-cache/dist/commonjs/browser/index.js +1726 -0
  89. package/node_modules/baileys/node_modules/lru-cache/dist/commonjs/browser/index.js.map +1 -0
  90. package/node_modules/baileys/node_modules/lru-cache/dist/commonjs/browser/index.min.js +2 -0
  91. package/node_modules/baileys/node_modules/lru-cache/dist/commonjs/browser/index.min.js.map +7 -0
  92. package/node_modules/baileys/node_modules/lru-cache/dist/commonjs/index.d.ts.map +1 -0
  93. package/node_modules/baileys/node_modules/lru-cache/dist/commonjs/index.js +1726 -0
  94. package/node_modules/baileys/node_modules/lru-cache/dist/commonjs/index.js.map +1 -0
  95. package/node_modules/baileys/node_modules/lru-cache/dist/commonjs/index.min.js +2 -0
  96. package/node_modules/baileys/node_modules/lru-cache/dist/commonjs/index.min.js.map +7 -0
  97. package/node_modules/baileys/node_modules/lru-cache/dist/commonjs/node/index.d.ts.map +1 -0
  98. package/node_modules/baileys/node_modules/lru-cache/dist/commonjs/node/index.js +1726 -0
  99. package/node_modules/baileys/node_modules/lru-cache/dist/commonjs/node/index.js.map +1 -0
  100. package/node_modules/baileys/node_modules/lru-cache/dist/commonjs/node/index.min.js +2 -0
  101. package/node_modules/baileys/node_modules/lru-cache/dist/commonjs/node/index.min.js.map +7 -0
  102. package/node_modules/baileys/node_modules/lru-cache/dist/esm/browser/index.d.ts.map +1 -0
  103. package/node_modules/baileys/node_modules/lru-cache/dist/esm/browser/index.js +1722 -0
  104. package/node_modules/baileys/node_modules/lru-cache/dist/esm/browser/index.js.map +1 -0
  105. package/node_modules/baileys/node_modules/lru-cache/dist/esm/browser/index.min.js +2 -0
  106. package/node_modules/baileys/node_modules/lru-cache/dist/esm/browser/index.min.js.map +7 -0
  107. package/node_modules/baileys/node_modules/lru-cache/dist/esm/index.d.ts.map +1 -0
  108. package/node_modules/baileys/node_modules/lru-cache/dist/esm/index.js +1722 -0
  109. package/node_modules/baileys/node_modules/lru-cache/dist/esm/index.js.map +1 -0
  110. package/node_modules/baileys/node_modules/lru-cache/dist/esm/index.min.js +2 -0
  111. package/node_modules/baileys/node_modules/lru-cache/dist/esm/index.min.js.map +7 -0
  112. package/node_modules/baileys/node_modules/lru-cache/dist/esm/node/index.d.ts.map +1 -0
  113. package/node_modules/baileys/node_modules/lru-cache/dist/esm/node/index.js +1722 -0
  114. package/node_modules/baileys/node_modules/lru-cache/dist/esm/node/index.js.map +1 -0
  115. package/node_modules/baileys/node_modules/lru-cache/dist/esm/node/index.min.js +2 -0
  116. package/node_modules/baileys/node_modules/lru-cache/dist/esm/node/index.min.js.map +7 -0
  117. package/node_modules/baileys/node_modules/lru-cache/package.json +154 -0
  118. package/node_modules/baileys/node_modules/music-metadata/lib/common/Util.d.ts +56 -0
  119. package/node_modules/baileys/node_modules/music-metadata/lib/common/Util.js +152 -0
  120. package/node_modules/baileys/node_modules/music-metadata/lib/id3v2/FrameHeader.js +73 -0
  121. package/node_modules/baileys/node_modules/music-metadata/lib/id3v2/FrameParser.js +470 -0
  122. package/node_modules/baileys/node_modules/music-metadata/lib/id3v2/ID3v2Token.js +146 -0
  123. package/node_modules/baileys/node_modules/music-metadata/lib/mp4/AtomToken.js +576 -0
  124. package/node_modules/baileys/node_modules/music-metadata/lib/mpeg/MpegParser.js +569 -0
  125. package/node_modules/baileys/node_modules/music-metadata/package.json +156 -0
  126. package/node_modules/baileys/node_modules/p-queue/dist/index.js +796 -0
  127. package/node_modules/baileys/node_modules/p-queue/package.json +81 -0
  128. package/node_modules/baileys/node_modules/protobufjs/dist/light/protobuf.js +8084 -0
  129. package/node_modules/baileys/node_modules/protobufjs/dist/light/protobuf.js.map +1 -0
  130. package/node_modules/baileys/node_modules/protobufjs/dist/light/protobuf.min.js +8 -0
  131. package/node_modules/baileys/node_modules/protobufjs/dist/light/protobuf.min.js.map +1 -0
  132. package/node_modules/baileys/node_modules/protobufjs/dist/minimal/protobuf.js +2834 -0
  133. package/node_modules/baileys/node_modules/protobufjs/dist/minimal/protobuf.js.map +1 -0
  134. package/node_modules/baileys/node_modules/protobufjs/dist/minimal/protobuf.min.js +8 -0
  135. package/node_modules/baileys/node_modules/protobufjs/dist/minimal/protobuf.min.js.map +1 -0
  136. package/node_modules/baileys/node_modules/protobufjs/dist/protobuf.js +9908 -0
  137. package/node_modules/baileys/node_modules/protobufjs/dist/protobuf.js.map +1 -0
  138. package/node_modules/baileys/node_modules/protobufjs/dist/protobuf.min.js +8 -0
  139. package/node_modules/baileys/node_modules/protobufjs/dist/protobuf.min.js.map +1 -0
  140. package/node_modules/baileys/node_modules/protobufjs/index.d.ts +2840 -0
  141. package/node_modules/baileys/node_modules/protobufjs/package.json +120 -0
  142. package/node_modules/baileys/node_modules/protobufjs/src/parse.js +989 -0
  143. package/node_modules/baileys/node_modules/protobufjs/src/util/minimal.js +494 -0
  144. package/node_modules/baileys/node_modules/ws/lib/permessage-deflate.js +530 -0
  145. package/node_modules/baileys/node_modules/ws/package.json +74 -0
  146. package/node_modules/typebox/build/compile/validator.d.mts +4 -1
  147. package/node_modules/typebox/build/guard/guard.d.mts +1 -1
  148. package/node_modules/typebox/build/guard/guard.mjs +2 -5
  149. package/node_modules/typebox/build/guard/string.mjs +4 -16
  150. package/node_modules/typebox/build/schema/engine/_functions.mjs +15 -34
  151. package/node_modules/typebox/build/type/action/readonly_object.d.mts +0 -5
  152. package/node_modules/typebox/build/type/action/readonly_object.mjs +0 -8
  153. package/node_modules/typebox/build/typebox.d.mts +1 -1
  154. package/node_modules/typebox/build/typebox.mjs +1 -1
  155. package/node_modules/typebox/package.json +1 -1
  156. package/node_modules/typebox/readme.md +32 -29
  157. package/openclaw.plugin.json +240 -207
  158. package/package.json +12 -22
  159. package/dist/access-control-pZcxTmd5.js +0 -363
  160. package/dist/accounts-CSqLvCY5.js +0 -152
  161. package/dist/action-runtime-B2bNDUwE.js +0 -73
  162. package/dist/active-listener-BEjWsCNM.js +0 -11
  163. package/dist/agent-tools-login-DfyToBpG.js +0 -87
  164. package/dist/approval-handler.runtime-CmtqgLSQ.js +0 -128
  165. package/dist/approval-reactions-Cu66aYdq.js +0 -373
  166. package/dist/approval-resolver-DoeBBt22.js +0 -16
  167. package/dist/auth-store-DcEpIOmE.js +0 -400
  168. package/dist/call-tool-api.js +0 -225
  169. package/dist/channel-DcWBc3Hb.js +0 -911
  170. package/dist/channel-react-action-DUIkjl6w.js +0 -124
  171. package/dist/channel.runtime-Q5fJ2I2b.js +0 -55
  172. package/dist/channel.setup-C_1u6HN6.js +0 -18
  173. package/dist/config-schema-DARep0Nn.js +0 -42
  174. package/dist/connection-controller-BOB2MVKY.js +0 -690
  175. package/dist/connection-controller-runtime-context-DG0tuYuw.js +0 -23
  176. package/dist/constants-HU41RHGI.js +0 -4
  177. package/dist/directory-config-DalGrfGN.js +0 -196
  178. package/dist/doctor-CwzVXKoE.js +0 -10
  179. package/dist/group-session-key-DVMZlO3x.js +0 -170
  180. package/dist/identity-CPrT5aEU.js +0 -76
  181. package/dist/login-CvY2Dhch.js +0 -110
  182. package/dist/login-qr-Bncpb6js.js +0 -418
  183. package/dist/monitor-B7phZF9w.js +0 -4379
  184. package/dist/normalize-C7Hkc_vE.js +0 -2
  185. package/dist/normalize-target-CugRyONv.js +0 -97
  186. package/dist/question-reactions-CRsnyoMK.js +0 -142
  187. package/dist/resolve-outbound-target-1GqbT1uX.js +0 -40
  188. package/dist/runtime-BLlToOi6.js +0 -21
  189. package/dist/send-BTXJAyK4.js +0 -431
  190. package/dist/send-api-BY_AkSiB.js +0 -744
  191. package/dist/session-errors-JuazczrA.js +0 -64
  192. package/dist/session.runtime-Nsqaehbd.js +0 -16
  193. package/dist/setup-finalize-C-m-vCl9.js +0 -329
  194. package/dist/setup-surface-BjvUbR6M.js +0 -46
  195. package/dist/shared-UcAwtJaq.js +0 -343
  196. package/dist/socket-close-DridEuzz.js +0 -622
  197. package/dist/state-migrations-CAMTrs2U.js +0 -33
  198. package/dist/targets-runtime-TMk0lGuy.js +0 -299
  199. package/dist/text-runtime-CaKLhowd.js +0 -4
  200. package/node_modules/@protobufjs/utf8/CHANGELOG.md +0 -8
  201. package/node_modules/@protobufjs/utf8/index.js +0 -115
  202. package/node_modules/@protobufjs/utf8/package.json +0 -21
  203. package/node_modules/@protobufjs/utf8/tests/index.js +0 -79
  204. package/node_modules/@thi.ng/bitstream/package.json +0 -88
  205. package/node_modules/@thi.ng/errors/package.json +0 -104
  206. package/node_modules/@types/node/README.md +0 -15
  207. package/node_modules/@types/node/fs/promises.d.ts +0 -1481
  208. package/node_modules/@types/node/package.json +0 -155
  209. package/node_modules/audio-type/package.json +0 -49
  210. package/node_modules/lru-cache/dist/commonjs/browser/index.d.ts.map +0 -1
  211. package/node_modules/lru-cache/dist/commonjs/browser/index.js +0 -1733
  212. package/node_modules/lru-cache/dist/commonjs/browser/index.js.map +0 -1
  213. package/node_modules/lru-cache/dist/commonjs/browser/index.min.js +0 -2
  214. package/node_modules/lru-cache/dist/commonjs/browser/index.min.js.map +0 -7
  215. package/node_modules/lru-cache/dist/commonjs/index.d.ts.map +0 -1
  216. package/node_modules/lru-cache/dist/commonjs/index.js +0 -1733
  217. package/node_modules/lru-cache/dist/commonjs/index.js.map +0 -1
  218. package/node_modules/lru-cache/dist/commonjs/index.min.js +0 -2
  219. package/node_modules/lru-cache/dist/commonjs/index.min.js.map +0 -7
  220. package/node_modules/lru-cache/dist/commonjs/node/index.d.ts.map +0 -1
  221. package/node_modules/lru-cache/dist/commonjs/node/index.js +0 -1733
  222. package/node_modules/lru-cache/dist/commonjs/node/index.js.map +0 -1
  223. package/node_modules/lru-cache/dist/commonjs/node/index.min.js +0 -2
  224. package/node_modules/lru-cache/dist/commonjs/node/index.min.js.map +0 -7
  225. package/node_modules/lru-cache/dist/esm/browser/index.d.ts.map +0 -1
  226. package/node_modules/lru-cache/dist/esm/browser/index.js +0 -1729
  227. package/node_modules/lru-cache/dist/esm/browser/index.js.map +0 -1
  228. package/node_modules/lru-cache/dist/esm/browser/index.min.js +0 -2
  229. package/node_modules/lru-cache/dist/esm/browser/index.min.js.map +0 -7
  230. package/node_modules/lru-cache/dist/esm/index.d.ts.map +0 -1
  231. package/node_modules/lru-cache/dist/esm/index.js +0 -1729
  232. package/node_modules/lru-cache/dist/esm/index.js.map +0 -1
  233. package/node_modules/lru-cache/dist/esm/index.min.js +0 -2
  234. package/node_modules/lru-cache/dist/esm/index.min.js.map +0 -7
  235. package/node_modules/lru-cache/dist/esm/node/index.d.ts.map +0 -1
  236. package/node_modules/lru-cache/dist/esm/node/index.js +0 -1729
  237. package/node_modules/lru-cache/dist/esm/node/index.js.map +0 -1
  238. package/node_modules/lru-cache/dist/esm/node/index.min.js +0 -2
  239. package/node_modules/lru-cache/dist/esm/node/index.min.js.map +0 -7
  240. package/node_modules/lru-cache/package.json +0 -154
  241. package/node_modules/music-metadata/lib/common/Util.d.ts +0 -56
  242. package/node_modules/music-metadata/lib/common/Util.js +0 -158
  243. package/node_modules/music-metadata/lib/id3v2/FrameHeader.js +0 -93
  244. package/node_modules/music-metadata/lib/id3v2/FrameParser.js +0 -470
  245. package/node_modules/music-metadata/lib/id3v2/ID3v2Token.js +0 -146
  246. package/node_modules/music-metadata/lib/mp4/AtomToken.js +0 -601
  247. package/node_modules/music-metadata/lib/mpeg/MpegParser.js +0 -569
  248. package/node_modules/music-metadata/package.json +0 -156
  249. package/node_modules/p-queue/dist/index.js +0 -807
  250. package/node_modules/p-queue/package.json +0 -81
  251. package/node_modules/protobufjs/dist/light/protobuf.js +0 -8041
  252. package/node_modules/protobufjs/dist/light/protobuf.js.map +0 -1
  253. package/node_modules/protobufjs/dist/light/protobuf.min.js +0 -8
  254. package/node_modules/protobufjs/dist/light/protobuf.min.js.map +0 -1
  255. package/node_modules/protobufjs/dist/minimal/protobuf.js +0 -2791
  256. package/node_modules/protobufjs/dist/minimal/protobuf.js.map +0 -1
  257. package/node_modules/protobufjs/dist/minimal/protobuf.min.js +0 -8
  258. package/node_modules/protobufjs/dist/minimal/protobuf.min.js.map +0 -1
  259. package/node_modules/protobufjs/dist/protobuf.js +0 -9868
  260. package/node_modules/protobufjs/dist/protobuf.js.map +0 -1
  261. package/node_modules/protobufjs/dist/protobuf.min.js +0 -8
  262. package/node_modules/protobufjs/dist/protobuf.min.js.map +0 -1
  263. package/node_modules/protobufjs/index.d.ts +0 -2832
  264. package/node_modules/protobufjs/package.json +0 -119
  265. package/node_modules/protobufjs/src/parse.js +0 -992
  266. package/node_modules/protobufjs/src/util/minimal.js +0 -491
  267. package/node_modules/ws/lib/permessage-deflate.js +0 -528
  268. package/node_modules/ws/package.json +0 -74
  269. /package/dist/{account-ids-CB5SOWjc.js → .setup/account-ids-CB5SOWjc.mjs} +0 -0
  270. /package/dist/{audio-preflight.runtime-C_glQhZY.js → .setup/audio-preflight.runtime-C_glQhZY.mjs} +0 -0
  271. /package/dist/{command-policy-BIOSHySD.js → .setup/command-policy-BIOSHySD.mjs} +0 -0
  272. /package/dist/{creds-files-B1kSWtBg.js → .setup/creds-files-B1kSWtBg.mjs} +0 -0
  273. /package/dist/{group-config-path-BGyzT9Lg.js → .setup/group-config-path-BGyzT9Lg.mjs} +0 -0
  274. /package/dist/{group-session-contract-DDnZSsJ1.js → .setup/group-session-contract-DDnZSsJ1.mjs} +0 -0
  275. /package/dist/{reply-resolver.runtime-Ded8D58Y.js → .setup/reply-resolver.runtime-Ded8D58Y.mjs} +0 -0
  276. /package/dist/{rolldown-runtime-D7D4PA-g.js → .setup/rolldown-runtime-D7D4PA-g.mjs} +0 -0
  277. /package/dist/{security-contract-nAzD945y.js → .setup/security-contract-nAzD945y.mjs} +0 -0
  278. /package/dist/{session-contract-DMTm6Q_L.js → .setup/session-contract-DMTm6Q_L.mjs} +0 -0
  279. /package/node_modules/{@eshaz → audio-decode/node_modules/@eshaz}/web-worker/LICENSE +0 -0
  280. /package/node_modules/{@eshaz → audio-decode/node_modules/@eshaz}/web-worker/README.md +0 -0
  281. /package/node_modules/{@eshaz → audio-decode/node_modules/@eshaz}/web-worker/browser.js +0 -0
  282. /package/node_modules/{@eshaz → audio-decode/node_modules/@eshaz}/web-worker/cjs/browser.js +0 -0
  283. /package/node_modules/{@eshaz → audio-decode/node_modules/@eshaz}/web-worker/cjs/node.js +0 -0
  284. /package/node_modules/{@eshaz → audio-decode/node_modules/@eshaz}/web-worker/index.d.ts +0 -0
  285. /package/node_modules/{@eshaz → audio-decode/node_modules/@eshaz}/web-worker/node.js +0 -0
  286. /package/node_modules/{@eshaz → audio-decode/node_modules/@eshaz}/web-worker/package.json +0 -0
  287. /package/node_modules/{@thi.ng → audio-decode/node_modules/@thi.ng}/bitstream/LICENSE +0 -0
  288. /package/node_modules/{@thi.ng → audio-decode/node_modules/@thi.ng}/bitstream/README.md +0 -0
  289. /package/node_modules/{@thi.ng → audio-decode/node_modules/@thi.ng}/bitstream/index.d.ts +0 -0
  290. /package/node_modules/{@thi.ng → audio-decode/node_modules/@thi.ng}/bitstream/index.js +0 -0
  291. /package/node_modules/{@thi.ng → audio-decode/node_modules/@thi.ng}/bitstream/input.d.ts +0 -0
  292. /package/node_modules/{@thi.ng → audio-decode/node_modules/@thi.ng}/bitstream/input.js +0 -0
  293. /package/node_modules/{@thi.ng → audio-decode/node_modules/@thi.ng}/bitstream/output.d.ts +0 -0
  294. /package/node_modules/{@thi.ng → audio-decode/node_modules/@thi.ng}/bitstream/output.js +0 -0
  295. /package/node_modules/{@thi.ng → audio-decode/node_modules/@thi.ng}/bitstream/simple.d.ts +0 -0
  296. /package/node_modules/{@thi.ng → audio-decode/node_modules/@thi.ng}/bitstream/simple.js +0 -0
  297. /package/node_modules/{@thi.ng → audio-decode/node_modules/@thi.ng}/errors/LICENSE +0 -0
  298. /package/node_modules/{@thi.ng → audio-decode/node_modules/@thi.ng}/errors/README.md +0 -0
  299. /package/node_modules/{@thi.ng → audio-decode/node_modules/@thi.ng}/errors/assert.d.ts +0 -0
  300. /package/node_modules/{@thi.ng → audio-decode/node_modules/@thi.ng}/errors/assert.js +0 -0
  301. /package/node_modules/{@thi.ng → audio-decode/node_modules/@thi.ng}/errors/deferror.d.ts +0 -0
  302. /package/node_modules/{@thi.ng → audio-decode/node_modules/@thi.ng}/errors/deferror.js +0 -0
  303. /package/node_modules/{@thi.ng → audio-decode/node_modules/@thi.ng}/errors/ensure.d.ts +0 -0
  304. /package/node_modules/{@thi.ng → audio-decode/node_modules/@thi.ng}/errors/ensure.js +0 -0
  305. /package/node_modules/{@thi.ng → audio-decode/node_modules/@thi.ng}/errors/illegal-arguments.d.ts +0 -0
  306. /package/node_modules/{@thi.ng → audio-decode/node_modules/@thi.ng}/errors/illegal-arguments.js +0 -0
  307. /package/node_modules/{@thi.ng → audio-decode/node_modules/@thi.ng}/errors/illegal-arity.d.ts +0 -0
  308. /package/node_modules/{@thi.ng → audio-decode/node_modules/@thi.ng}/errors/illegal-arity.js +0 -0
  309. /package/node_modules/{@thi.ng → audio-decode/node_modules/@thi.ng}/errors/illegal-state.d.ts +0 -0
  310. /package/node_modules/{@thi.ng → audio-decode/node_modules/@thi.ng}/errors/illegal-state.js +0 -0
  311. /package/node_modules/{@thi.ng → audio-decode/node_modules/@thi.ng}/errors/index.d.ts +0 -0
  312. /package/node_modules/{@thi.ng → audio-decode/node_modules/@thi.ng}/errors/index.js +0 -0
  313. /package/node_modules/{@thi.ng → audio-decode/node_modules/@thi.ng}/errors/io.d.ts +0 -0
  314. /package/node_modules/{@thi.ng → audio-decode/node_modules/@thi.ng}/errors/io.js +0 -0
  315. /package/node_modules/{@thi.ng → audio-decode/node_modules/@thi.ng}/errors/out-of-bounds.d.ts +0 -0
  316. /package/node_modules/{@thi.ng → audio-decode/node_modules/@thi.ng}/errors/out-of-bounds.js +0 -0
  317. /package/node_modules/{@thi.ng → audio-decode/node_modules/@thi.ng}/errors/unsupported.d.ts +0 -0
  318. /package/node_modules/{@thi.ng → audio-decode/node_modules/@thi.ng}/errors/unsupported.js +0 -0
  319. /package/node_modules/{@wasm-audio-decoders → audio-decode/node_modules/@wasm-audio-decoders}/common/index.js +0 -0
  320. /package/node_modules/{@wasm-audio-decoders → audio-decode/node_modules/@wasm-audio-decoders}/common/package.json +0 -0
  321. /package/node_modules/{@wasm-audio-decoders → audio-decode/node_modules/@wasm-audio-decoders}/common/src/WASMAudioDecoderCommon.js +0 -0
  322. /package/node_modules/{@wasm-audio-decoders → audio-decode/node_modules/@wasm-audio-decoders}/common/src/WASMAudioDecoderWorker.js +0 -0
  323. /package/node_modules/{@wasm-audio-decoders → audio-decode/node_modules/@wasm-audio-decoders}/common/src/puff/README +0 -0
  324. /package/node_modules/{@wasm-audio-decoders → audio-decode/node_modules/@wasm-audio-decoders}/common/src/puff/build_puff.js +0 -0
  325. /package/node_modules/{@wasm-audio-decoders → audio-decode/node_modules/@wasm-audio-decoders}/common/src/puff/puff.c +0 -0
  326. /package/node_modules/{@wasm-audio-decoders → audio-decode/node_modules/@wasm-audio-decoders}/common/src/puff/puff.h +0 -0
  327. /package/node_modules/{@wasm-audio-decoders → audio-decode/node_modules/@wasm-audio-decoders}/common/src/utilities.js +0 -0
  328. /package/node_modules/{@wasm-audio-decoders → audio-decode/node_modules/@wasm-audio-decoders}/common/types.d.ts +0 -0
  329. /package/node_modules/{@wasm-audio-decoders → audio-decode/node_modules/@wasm-audio-decoders}/flac/README.md +0 -0
  330. /package/node_modules/{@wasm-audio-decoders → audio-decode/node_modules/@wasm-audio-decoders}/flac/dist/flac-decoder.min.js +0 -0
  331. /package/node_modules/{@wasm-audio-decoders → audio-decode/node_modules/@wasm-audio-decoders}/flac/dist/flac-decoder.min.js.map +0 -0
  332. /package/node_modules/{@wasm-audio-decoders → audio-decode/node_modules/@wasm-audio-decoders}/flac/index.js +0 -0
  333. /package/node_modules/{@wasm-audio-decoders → audio-decode/node_modules/@wasm-audio-decoders}/flac/package.json +0 -0
  334. /package/node_modules/{@wasm-audio-decoders → audio-decode/node_modules/@wasm-audio-decoders}/flac/src/EmscriptenWasm.js +0 -0
  335. /package/node_modules/{@wasm-audio-decoders → audio-decode/node_modules/@wasm-audio-decoders}/flac/src/FLACDecoder.js +0 -0
  336. /package/node_modules/{@wasm-audio-decoders → audio-decode/node_modules/@wasm-audio-decoders}/flac/src/FLACDecoderWebWorker.js +0 -0
  337. /package/node_modules/{@wasm-audio-decoders → audio-decode/node_modules/@wasm-audio-decoders}/flac/types.d.ts +0 -0
  338. /package/node_modules/{@wasm-audio-decoders → audio-decode/node_modules/@wasm-audio-decoders}/ogg-vorbis/README.md +0 -0
  339. /package/node_modules/{@wasm-audio-decoders → audio-decode/node_modules/@wasm-audio-decoders}/ogg-vorbis/dist/ogg-vorbis-decoder.min.js +0 -0
  340. /package/node_modules/{@wasm-audio-decoders → audio-decode/node_modules/@wasm-audio-decoders}/ogg-vorbis/dist/ogg-vorbis-decoder.min.js.map +0 -0
  341. /package/node_modules/{@wasm-audio-decoders → audio-decode/node_modules/@wasm-audio-decoders}/ogg-vorbis/index.js +0 -0
  342. /package/node_modules/{@wasm-audio-decoders → audio-decode/node_modules/@wasm-audio-decoders}/ogg-vorbis/package.json +0 -0
  343. /package/node_modules/{@wasm-audio-decoders → audio-decode/node_modules/@wasm-audio-decoders}/ogg-vorbis/src/EmscriptenWasm.js +0 -0
  344. /package/node_modules/{@wasm-audio-decoders → audio-decode/node_modules/@wasm-audio-decoders}/ogg-vorbis/src/OggVorbisDecoder.js +0 -0
  345. /package/node_modules/{@wasm-audio-decoders → audio-decode/node_modules/@wasm-audio-decoders}/ogg-vorbis/src/OggVorbisDecoderWebWorker.js +0 -0
  346. /package/node_modules/{@wasm-audio-decoders → audio-decode/node_modules/@wasm-audio-decoders}/ogg-vorbis/types.d.ts +0 -0
  347. /package/node_modules/{@wasm-audio-decoders → audio-decode/node_modules/@wasm-audio-decoders}/opus-ml/README.md +0 -0
  348. /package/node_modules/{@wasm-audio-decoders → audio-decode/node_modules/@wasm-audio-decoders}/opus-ml/dist/opus-ml-decoder.min.js +0 -0
  349. /package/node_modules/{@wasm-audio-decoders → audio-decode/node_modules/@wasm-audio-decoders}/opus-ml/dist/opus-ml-decoder.min.js.map +0 -0
  350. /package/node_modules/{@wasm-audio-decoders → audio-decode/node_modules/@wasm-audio-decoders}/opus-ml/index.js +0 -0
  351. /package/node_modules/{@wasm-audio-decoders → audio-decode/node_modules/@wasm-audio-decoders}/opus-ml/package.json +0 -0
  352. /package/node_modules/{@wasm-audio-decoders → audio-decode/node_modules/@wasm-audio-decoders}/opus-ml/src/EmscriptenWasm.js +0 -0
  353. /package/node_modules/{@wasm-audio-decoders → audio-decode/node_modules/@wasm-audio-decoders}/opus-ml/src/OpusMLDecoder.js +0 -0
  354. /package/node_modules/{@wasm-audio-decoders → audio-decode/node_modules/@wasm-audio-decoders}/opus-ml/src/OpusMLDecoderWebWorker.js +0 -0
  355. /package/node_modules/{@wasm-audio-decoders → audio-decode/node_modules/@wasm-audio-decoders}/opus-ml/types.d.ts +0 -0
  356. /package/node_modules/{audio-buffer → audio-decode/node_modules/audio-buffer}/.eslintrc.json +0 -0
  357. /package/node_modules/{audio-buffer → audio-decode/node_modules/audio-buffer}/.github/workflows/node.js.yml +0 -0
  358. /package/node_modules/{audio-buffer → audio-decode/node_modules/audio-buffer}/.travis.yml +0 -0
  359. /package/node_modules/{audio-buffer → audio-decode/node_modules/audio-buffer}/LICENSE +0 -0
  360. /package/node_modules/{audio-buffer → audio-decode/node_modules/audio-buffer}/index.js +0 -0
  361. /package/node_modules/{audio-buffer → audio-decode/node_modules/audio-buffer}/package.json +0 -0
  362. /package/node_modules/{audio-buffer → audio-decode/node_modules/audio-buffer}/readme.md +0 -0
  363. /package/node_modules/{audio-type → audio-decode/node_modules/audio-type}/audio-type.js +0 -0
  364. /package/node_modules/{audio-type → audio-decode/node_modules/audio-type}/license +0 -0
  365. /package/node_modules/{audio-type → audio-decode/node_modules/audio-type}/readme.md +0 -0
  366. /package/node_modules/{codec-parser → audio-decode/node_modules/codec-parser}/.github/FUNDING.yml +0 -0
  367. /package/node_modules/{codec-parser → audio-decode/node_modules/codec-parser}/.prettierignore +0 -0
  368. /package/node_modules/{codec-parser → audio-decode/node_modules/codec-parser}/LICENSE +0 -0
  369. /package/node_modules/{codec-parser → audio-decode/node_modules/codec-parser}/README.md +0 -0
  370. /package/node_modules/{codec-parser → audio-decode/node_modules/codec-parser}/index.d.ts +0 -0
  371. /package/node_modules/{codec-parser → audio-decode/node_modules/codec-parser}/index.js +0 -0
  372. /package/node_modules/{codec-parser → audio-decode/node_modules/codec-parser}/package.json +0 -0
  373. /package/node_modules/{codec-parser → audio-decode/node_modules/codec-parser}/src/CodecParser.js +0 -0
  374. /package/node_modules/{codec-parser → audio-decode/node_modules/codec-parser}/src/codecs/CodecFrame.js +0 -0
  375. /package/node_modules/{codec-parser → audio-decode/node_modules/codec-parser}/src/codecs/CodecHeader.js +0 -0
  376. /package/node_modules/{codec-parser → audio-decode/node_modules/codec-parser}/src/codecs/HeaderCache.js +0 -0
  377. /package/node_modules/{codec-parser → audio-decode/node_modules/codec-parser}/src/codecs/Parser.js +0 -0
  378. /package/node_modules/{codec-parser → audio-decode/node_modules/codec-parser}/src/codecs/aac/AACFrame.js +0 -0
  379. /package/node_modules/{codec-parser → audio-decode/node_modules/codec-parser}/src/codecs/aac/AACHeader.js +0 -0
  380. /package/node_modules/{codec-parser → audio-decode/node_modules/codec-parser}/src/codecs/aac/AACParser.js +0 -0
  381. /package/node_modules/{codec-parser → audio-decode/node_modules/codec-parser}/src/codecs/flac/FLACFrame.js +0 -0
  382. /package/node_modules/{codec-parser → audio-decode/node_modules/codec-parser}/src/codecs/flac/FLACHeader.js +0 -0
  383. /package/node_modules/{codec-parser → audio-decode/node_modules/codec-parser}/src/codecs/flac/FLACParser.js +0 -0
  384. /package/node_modules/{codec-parser → audio-decode/node_modules/codec-parser}/src/codecs/mpeg/MPEGFrame.js +0 -0
  385. /package/node_modules/{codec-parser → audio-decode/node_modules/codec-parser}/src/codecs/mpeg/MPEGHeader.js +0 -0
  386. /package/node_modules/{codec-parser → audio-decode/node_modules/codec-parser}/src/codecs/mpeg/MPEGParser.js +0 -0
  387. /package/node_modules/{codec-parser → audio-decode/node_modules/codec-parser}/src/codecs/opus/OpusFrame.js +0 -0
  388. /package/node_modules/{codec-parser → audio-decode/node_modules/codec-parser}/src/codecs/opus/OpusHeader.js +0 -0
  389. /package/node_modules/{codec-parser → audio-decode/node_modules/codec-parser}/src/codecs/opus/OpusParser.js +0 -0
  390. /package/node_modules/{codec-parser → audio-decode/node_modules/codec-parser}/src/codecs/vorbis/VorbisFrame.js +0 -0
  391. /package/node_modules/{codec-parser → audio-decode/node_modules/codec-parser}/src/codecs/vorbis/VorbisHeader.js +0 -0
  392. /package/node_modules/{codec-parser → audio-decode/node_modules/codec-parser}/src/codecs/vorbis/VorbisParser.js +0 -0
  393. /package/node_modules/{codec-parser → audio-decode/node_modules/codec-parser}/src/constants.js +0 -0
  394. /package/node_modules/{codec-parser → audio-decode/node_modules/codec-parser}/src/containers/Frame.js +0 -0
  395. /package/node_modules/{codec-parser → audio-decode/node_modules/codec-parser}/src/containers/ogg/OggPage.js +0 -0
  396. /package/node_modules/{codec-parser → audio-decode/node_modules/codec-parser}/src/containers/ogg/OggPageHeader.js +0 -0
  397. /package/node_modules/{codec-parser → audio-decode/node_modules/codec-parser}/src/containers/ogg/OggParser.js +0 -0
  398. /package/node_modules/{codec-parser → audio-decode/node_modules/codec-parser}/src/globals.js +0 -0
  399. /package/node_modules/{codec-parser → audio-decode/node_modules/codec-parser}/src/metadata/ID3v2.js +0 -0
  400. /package/node_modules/{codec-parser → audio-decode/node_modules/codec-parser}/src/utilities.js +0 -0
  401. /package/node_modules/{mpg123-decoder → audio-decode/node_modules/mpg123-decoder}/README.md +0 -0
  402. /package/node_modules/{mpg123-decoder → audio-decode/node_modules/mpg123-decoder}/dist/mpg123-decoder.min.js +0 -0
  403. /package/node_modules/{mpg123-decoder → audio-decode/node_modules/mpg123-decoder}/dist/mpg123-decoder.min.js.map +0 -0
  404. /package/node_modules/{mpg123-decoder → audio-decode/node_modules/mpg123-decoder}/index.js +0 -0
  405. /package/node_modules/{mpg123-decoder → audio-decode/node_modules/mpg123-decoder}/package.json +0 -0
  406. /package/node_modules/{mpg123-decoder → audio-decode/node_modules/mpg123-decoder}/src/EmscriptenWasm.js +0 -0
  407. /package/node_modules/{mpg123-decoder → audio-decode/node_modules/mpg123-decoder}/src/MPEGDecoder.js +0 -0
  408. /package/node_modules/{mpg123-decoder → audio-decode/node_modules/mpg123-decoder}/src/MPEGDecoderWebWorker.js +0 -0
  409. /package/node_modules/{mpg123-decoder → audio-decode/node_modules/mpg123-decoder}/types.d.ts +0 -0
  410. /package/node_modules/{node-wav → audio-decode/node_modules/node-wav}/README.md +0 -0
  411. /package/node_modules/{node-wav → audio-decode/node_modules/node-wav}/file.wav +0 -0
  412. /package/node_modules/{node-wav → audio-decode/node_modules/node-wav}/index.js +0 -0
  413. /package/node_modules/{node-wav → audio-decode/node_modules/node-wav}/package.json +0 -0
  414. /package/node_modules/{node-wav → audio-decode/node_modules/node-wav}/tests/file1.wav +0 -0
  415. /package/node_modules/{node-wav → audio-decode/node_modules/node-wav}/tests/test.js +0 -0
  416. /package/node_modules/{node-wav → audio-decode/node_modules/node-wav}/x.js +0 -0
  417. /package/node_modules/{node-wav → audio-decode/node_modules/node-wav}/x.json +0 -0
  418. /package/node_modules/{node-wav → audio-decode/node_modules/node-wav}/x.js~ +0 -0
  419. /package/node_modules/{ogg-opus-decoder → audio-decode/node_modules/ogg-opus-decoder}/README.md +0 -0
  420. /package/node_modules/{ogg-opus-decoder → audio-decode/node_modules/ogg-opus-decoder}/dist/ogg-opus-decoder.min.js +0 -0
  421. /package/node_modules/{ogg-opus-decoder → audio-decode/node_modules/ogg-opus-decoder}/dist/ogg-opus-decoder.min.js.map +0 -0
  422. /package/node_modules/{ogg-opus-decoder → audio-decode/node_modules/ogg-opus-decoder}/dist/ogg-opus-decoder.opus-ml.min.js +0 -0
  423. /package/node_modules/{ogg-opus-decoder → audio-decode/node_modules/ogg-opus-decoder}/dist/ogg-opus-decoder.opus-ml.min.js.map +0 -0
  424. /package/node_modules/{ogg-opus-decoder → audio-decode/node_modules/ogg-opus-decoder}/index.js +0 -0
  425. /package/node_modules/{ogg-opus-decoder → audio-decode/node_modules/ogg-opus-decoder}/package.json +0 -0
  426. /package/node_modules/{ogg-opus-decoder → audio-decode/node_modules/ogg-opus-decoder}/src/OggOpusDecoder.js +0 -0
  427. /package/node_modules/{ogg-opus-decoder → audio-decode/node_modules/ogg-opus-decoder}/src/OggOpusDecoderWebWorker.js +0 -0
  428. /package/node_modules/{ogg-opus-decoder → audio-decode/node_modules/ogg-opus-decoder}/types.d.ts +0 -0
  429. /package/node_modules/{opus-decoder → audio-decode/node_modules/opus-decoder}/README.md +0 -0
  430. /package/node_modules/{opus-decoder → audio-decode/node_modules/opus-decoder}/dist/opus-decoder.min.js +0 -0
  431. /package/node_modules/{opus-decoder → audio-decode/node_modules/opus-decoder}/dist/opus-decoder.min.js.map +0 -0
  432. /package/node_modules/{opus-decoder → audio-decode/node_modules/opus-decoder}/index.js +0 -0
  433. /package/node_modules/{opus-decoder → audio-decode/node_modules/opus-decoder}/package.json +0 -0
  434. /package/node_modules/{opus-decoder → audio-decode/node_modules/opus-decoder}/src/EmscriptenWasm.js +0 -0
  435. /package/node_modules/{opus-decoder → audio-decode/node_modules/opus-decoder}/src/OpusDecoder.js +0 -0
  436. /package/node_modules/{opus-decoder → audio-decode/node_modules/opus-decoder}/src/OpusDecoderWebWorker.js +0 -0
  437. /package/node_modules/{opus-decoder → audio-decode/node_modules/opus-decoder}/types.d.ts +0 -0
  438. /package/node_modules/{qoa-format → audio-decode/node_modules/qoa-format}/LICENSE.md +0 -0
  439. /package/node_modules/{qoa-format → audio-decode/node_modules/qoa-format}/README.md +0 -0
  440. /package/node_modules/{qoa-format → audio-decode/node_modules/qoa-format}/decode.js +0 -0
  441. /package/node_modules/{qoa-format → audio-decode/node_modules/qoa-format}/encode.js +0 -0
  442. /package/node_modules/{qoa-format → audio-decode/node_modules/qoa-format}/index.js +0 -0
  443. /package/node_modules/{qoa-format → audio-decode/node_modules/qoa-format}/lib/common.js +0 -0
  444. /package/node_modules/{qoa-format → audio-decode/node_modules/qoa-format}/package.json +0 -0
  445. /package/node_modules/{simple-yenc → audio-decode/node_modules/simple-yenc}/.github/FUNDING.yml +0 -0
  446. /package/node_modules/{simple-yenc → audio-decode/node_modules/simple-yenc}/.prettierignore +0 -0
  447. /package/node_modules/{simple-yenc → audio-decode/node_modules/simple-yenc}/LICENSE +0 -0
  448. /package/node_modules/{simple-yenc → audio-decode/node_modules/simple-yenc}/README.md +0 -0
  449. /package/node_modules/{simple-yenc → audio-decode/node_modules/simple-yenc}/dist/esm.js +0 -0
  450. /package/node_modules/{simple-yenc → audio-decode/node_modules/simple-yenc}/dist/index.js +0 -0
  451. /package/node_modules/{simple-yenc → audio-decode/node_modules/simple-yenc}/package.json +0 -0
  452. /package/node_modules/{simple-yenc → audio-decode/node_modules/simple-yenc}/rollup.config.js +0 -0
  453. /package/node_modules/{simple-yenc → audio-decode/node_modules/simple-yenc}/src/simple-yenc.js +0 -0
  454. /package/node_modules/{@borewit → baileys/node_modules/@borewit}/text-codec/LICENSE.txt +0 -0
  455. /package/node_modules/{@borewit → baileys/node_modules/@borewit}/text-codec/README.md +0 -0
  456. /package/node_modules/{@borewit → baileys/node_modules/@borewit}/text-codec/lib/index.d.ts +0 -0
  457. /package/node_modules/{@borewit → baileys/node_modules/@borewit}/text-codec/lib/index.js +0 -0
  458. /package/node_modules/{@borewit → baileys/node_modules/@borewit}/text-codec/package.json +0 -0
  459. /package/node_modules/{@cacheable → baileys/node_modules/@cacheable}/memory/LICENSE +0 -0
  460. /package/node_modules/{@cacheable → baileys/node_modules/@cacheable}/memory/README.md +0 -0
  461. /package/node_modules/{@cacheable → baileys/node_modules/@cacheable}/memory/dist/index.cjs +0 -0
  462. /package/node_modules/{@cacheable → baileys/node_modules/@cacheable}/memory/dist/index.d.cts +0 -0
  463. /package/node_modules/{@cacheable → baileys/node_modules/@cacheable}/memory/dist/index.d.mts +0 -0
  464. /package/node_modules/{@cacheable → baileys/node_modules/@cacheable}/memory/dist/index.mjs +0 -0
  465. /package/node_modules/{@cacheable → baileys/node_modules/@cacheable}/memory/package.json +0 -0
  466. /package/node_modules/{@cacheable → baileys/node_modules/@cacheable}/node-cache/LICENSE +0 -0
  467. /package/node_modules/{@cacheable → baileys/node_modules/@cacheable}/node-cache/README.md +0 -0
  468. /package/node_modules/{@cacheable → baileys/node_modules/@cacheable}/node-cache/dist/index.cjs +0 -0
  469. /package/node_modules/{@cacheable → baileys/node_modules/@cacheable}/node-cache/dist/index.d.cts +0 -0
  470. /package/node_modules/{@cacheable → baileys/node_modules/@cacheable}/node-cache/dist/index.d.ts +0 -0
  471. /package/node_modules/{@cacheable → baileys/node_modules/@cacheable}/node-cache/dist/index.js +0 -0
  472. /package/node_modules/{@cacheable → baileys/node_modules/@cacheable}/node-cache/package.json +0 -0
  473. /package/node_modules/{@cacheable → baileys/node_modules/@cacheable}/utils/LICENSE +0 -0
  474. /package/node_modules/{@cacheable → baileys/node_modules/@cacheable}/utils/README.md +0 -0
  475. /package/node_modules/{@cacheable → baileys/node_modules/@cacheable}/utils/dist/index.cjs +0 -0
  476. /package/node_modules/{@cacheable → baileys/node_modules/@cacheable}/utils/dist/index.d.cts +0 -0
  477. /package/node_modules/{@cacheable → baileys/node_modules/@cacheable}/utils/dist/index.d.mts +0 -0
  478. /package/node_modules/{@cacheable → baileys/node_modules/@cacheable}/utils/dist/index.mjs +0 -0
  479. /package/node_modules/{@cacheable → baileys/node_modules/@cacheable}/utils/package.json +0 -0
  480. /package/node_modules/{@hapi → baileys/node_modules/@hapi}/boom/LICENSE.md +0 -0
  481. /package/node_modules/{@hapi → baileys/node_modules/@hapi}/boom/README.md +0 -0
  482. /package/node_modules/{@hapi → baileys/node_modules/@hapi}/boom/lib/index.d.ts +0 -0
  483. /package/node_modules/{@hapi → baileys/node_modules/@hapi}/boom/lib/index.js +0 -0
  484. /package/node_modules/{@hapi → baileys/node_modules/@hapi}/boom/package.json +0 -0
  485. /package/node_modules/{@hapi → baileys/node_modules/@hapi}/hoek/LICENSE.md +0 -0
  486. /package/node_modules/{@hapi → baileys/node_modules/@hapi}/hoek/README.md +0 -0
  487. /package/node_modules/{@hapi → baileys/node_modules/@hapi}/hoek/lib/applyToDefaults.js +0 -0
  488. /package/node_modules/{@hapi → baileys/node_modules/@hapi}/hoek/lib/assert.js +0 -0
  489. /package/node_modules/{@hapi → baileys/node_modules/@hapi}/hoek/lib/bench.js +0 -0
  490. /package/node_modules/{@hapi → baileys/node_modules/@hapi}/hoek/lib/block.js +0 -0
  491. /package/node_modules/{@hapi → baileys/node_modules/@hapi}/hoek/lib/clone.js +0 -0
  492. /package/node_modules/{@hapi → baileys/node_modules/@hapi}/hoek/lib/contain.js +0 -0
  493. /package/node_modules/{@hapi → baileys/node_modules/@hapi}/hoek/lib/deepEqual.js +0 -0
  494. /package/node_modules/{@hapi → baileys/node_modules/@hapi}/hoek/lib/error.js +0 -0
  495. /package/node_modules/{@hapi → baileys/node_modules/@hapi}/hoek/lib/escapeHeaderAttribute.js +0 -0
  496. /package/node_modules/{@hapi → baileys/node_modules/@hapi}/hoek/lib/escapeHtml.js +0 -0
  497. /package/node_modules/{@hapi → baileys/node_modules/@hapi}/hoek/lib/escapeJson.js +0 -0
  498. /package/node_modules/{@hapi → baileys/node_modules/@hapi}/hoek/lib/escapeRegex.js +0 -0
  499. /package/node_modules/{@hapi → baileys/node_modules/@hapi}/hoek/lib/flatten.js +0 -0
  500. /package/node_modules/{@hapi → baileys/node_modules/@hapi}/hoek/lib/ignore.js +0 -0
  501. /package/node_modules/{@hapi → baileys/node_modules/@hapi}/hoek/lib/index.d.ts +0 -0
  502. /package/node_modules/{@hapi → baileys/node_modules/@hapi}/hoek/lib/index.js +0 -0
  503. /package/node_modules/{@hapi → baileys/node_modules/@hapi}/hoek/lib/intersect.js +0 -0
  504. /package/node_modules/{@hapi → baileys/node_modules/@hapi}/hoek/lib/isPromise.js +0 -0
  505. /package/node_modules/{@hapi → baileys/node_modules/@hapi}/hoek/lib/merge.js +0 -0
  506. /package/node_modules/{@hapi → baileys/node_modules/@hapi}/hoek/lib/once.js +0 -0
  507. /package/node_modules/{@hapi → baileys/node_modules/@hapi}/hoek/lib/reach.js +0 -0
  508. /package/node_modules/{@hapi → baileys/node_modules/@hapi}/hoek/lib/reachTemplate.js +0 -0
  509. /package/node_modules/{@hapi → baileys/node_modules/@hapi}/hoek/lib/stringify.js +0 -0
  510. /package/node_modules/{@hapi → baileys/node_modules/@hapi}/hoek/lib/types.js +0 -0
  511. /package/node_modules/{@hapi → baileys/node_modules/@hapi}/hoek/lib/utils.js +0 -0
  512. /package/node_modules/{@hapi → baileys/node_modules/@hapi}/hoek/lib/wait.js +0 -0
  513. /package/node_modules/{@hapi → baileys/node_modules/@hapi}/hoek/package.json +0 -0
  514. /package/node_modules/{@keyv → baileys/node_modules/@keyv}/bigmap/LICENSE +0 -0
  515. /package/node_modules/{@keyv → baileys/node_modules/@keyv}/bigmap/README.md +0 -0
  516. /package/node_modules/{@keyv → baileys/node_modules/@keyv}/bigmap/dist/index.cjs +0 -0
  517. /package/node_modules/{@keyv → baileys/node_modules/@keyv}/bigmap/dist/index.d.cts +0 -0
  518. /package/node_modules/{@keyv → baileys/node_modules/@keyv}/bigmap/dist/index.d.ts +0 -0
  519. /package/node_modules/{@keyv → baileys/node_modules/@keyv}/bigmap/dist/index.js +0 -0
  520. /package/node_modules/{@keyv → baileys/node_modules/@keyv}/bigmap/package.json +0 -0
  521. /package/node_modules/{@keyv → baileys/node_modules/@keyv}/serialize/LICENSE +0 -0
  522. /package/node_modules/{@keyv → baileys/node_modules/@keyv}/serialize/README.md +0 -0
  523. /package/node_modules/{@keyv → baileys/node_modules/@keyv}/serialize/dist/index.cjs +0 -0
  524. /package/node_modules/{@keyv → baileys/node_modules/@keyv}/serialize/dist/index.d.cts +0 -0
  525. /package/node_modules/{@keyv → baileys/node_modules/@keyv}/serialize/dist/index.d.ts +0 -0
  526. /package/node_modules/{@keyv → baileys/node_modules/@keyv}/serialize/dist/index.js +0 -0
  527. /package/node_modules/{@keyv → baileys/node_modules/@keyv}/serialize/package.json +0 -0
  528. /package/node_modules/{@pinojs → baileys/node_modules/@pinojs}/redact/.github/dependabot.yml +0 -0
  529. /package/node_modules/{@pinojs → baileys/node_modules/@pinojs}/redact/.github/workflows/ci.yml +0 -0
  530. /package/node_modules/{@pinojs → baileys/node_modules/@pinojs}/redact/.github/workflows/publish-release.yml +0 -0
  531. /package/node_modules/{@pinojs → baileys/node_modules/@pinojs}/redact/LICENSE +0 -0
  532. /package/node_modules/{@pinojs → baileys/node_modules/@pinojs}/redact/README.md +0 -0
  533. /package/node_modules/{@pinojs → baileys/node_modules/@pinojs}/redact/benchmarks/basic.js +0 -0
  534. /package/node_modules/{@pinojs → baileys/node_modules/@pinojs}/redact/eslint.config.js +0 -0
  535. /package/node_modules/{@pinojs → baileys/node_modules/@pinojs}/redact/index.d.ts +0 -0
  536. /package/node_modules/{@pinojs → baileys/node_modules/@pinojs}/redact/index.js +0 -0
  537. /package/node_modules/{@pinojs → baileys/node_modules/@pinojs}/redact/index.test-d.ts +0 -0
  538. /package/node_modules/{@pinojs → baileys/node_modules/@pinojs}/redact/package.json +0 -0
  539. /package/node_modules/{@pinojs → baileys/node_modules/@pinojs}/redact/scripts/sync-version.mjs +0 -0
  540. /package/node_modules/{@pinojs → baileys/node_modules/@pinojs}/redact/test/actual-redact-comparison.test.js +0 -0
  541. /package/node_modules/{@pinojs → baileys/node_modules/@pinojs}/redact/test/index.test.js +0 -0
  542. /package/node_modules/{@pinojs → baileys/node_modules/@pinojs}/redact/test/integration.test.js +0 -0
  543. /package/node_modules/{@pinojs → baileys/node_modules/@pinojs}/redact/test/multiple-wildcards.test.js +0 -0
  544. /package/node_modules/{@pinojs → baileys/node_modules/@pinojs}/redact/test/prototype-pollution.test.js +0 -0
  545. /package/node_modules/{@pinojs → baileys/node_modules/@pinojs}/redact/test/selective-clone.test.js +0 -0
  546. /package/node_modules/{@pinojs → baileys/node_modules/@pinojs}/redact/tsconfig.json +0 -0
  547. /package/node_modules/{@protobufjs → baileys/node_modules/@protobufjs}/aspromise/LICENSE +0 -0
  548. /package/node_modules/{@protobufjs → baileys/node_modules/@protobufjs}/aspromise/README.md +0 -0
  549. /package/node_modules/{@protobufjs → baileys/node_modules/@protobufjs}/aspromise/index.d.ts +0 -0
  550. /package/node_modules/{@protobufjs → baileys/node_modules/@protobufjs}/aspromise/index.js +0 -0
  551. /package/node_modules/{@protobufjs → baileys/node_modules/@protobufjs}/aspromise/package.json +0 -0
  552. /package/node_modules/{@protobufjs → baileys/node_modules/@protobufjs}/aspromise/tests/index.js +0 -0
  553. /package/node_modules/{@protobufjs → baileys/node_modules/@protobufjs}/base64/LICENSE +0 -0
  554. /package/node_modules/{@protobufjs → baileys/node_modules/@protobufjs}/base64/README.md +0 -0
  555. /package/node_modules/{@protobufjs → baileys/node_modules/@protobufjs}/base64/index.d.ts +0 -0
  556. /package/node_modules/{@protobufjs → baileys/node_modules/@protobufjs}/base64/index.js +0 -0
  557. /package/node_modules/{@protobufjs → baileys/node_modules/@protobufjs}/base64/package.json +0 -0
  558. /package/node_modules/{@protobufjs → baileys/node_modules/@protobufjs}/base64/tests/index.js +0 -0
  559. /package/node_modules/{@protobufjs → baileys/node_modules/@protobufjs}/codegen/LICENSE +0 -0
  560. /package/node_modules/{@protobufjs → baileys/node_modules/@protobufjs}/codegen/README.md +0 -0
  561. /package/node_modules/{@protobufjs → baileys/node_modules/@protobufjs}/codegen/index.d.ts +0 -0
  562. /package/node_modules/{@protobufjs → baileys/node_modules/@protobufjs}/codegen/index.js +0 -0
  563. /package/node_modules/{@protobufjs → baileys/node_modules/@protobufjs}/codegen/package.json +0 -0
  564. /package/node_modules/{@protobufjs → baileys/node_modules/@protobufjs}/codegen/tests/index.js +0 -0
  565. /package/node_modules/{@protobufjs → baileys/node_modules/@protobufjs}/eventemitter/CHANGELOG.md +0 -0
  566. /package/node_modules/{@protobufjs → baileys/node_modules/@protobufjs}/eventemitter/LICENSE +0 -0
  567. /package/node_modules/{@protobufjs → baileys/node_modules/@protobufjs}/eventemitter/README.md +0 -0
  568. /package/node_modules/{@protobufjs → baileys/node_modules/@protobufjs}/eventemitter/index.d.ts +0 -0
  569. /package/node_modules/{@protobufjs → baileys/node_modules/@protobufjs}/eventemitter/index.js +0 -0
  570. /package/node_modules/{@protobufjs → baileys/node_modules/@protobufjs}/eventemitter/package.json +0 -0
  571. /package/node_modules/{@protobufjs → baileys/node_modules/@protobufjs}/eventemitter/tests/index.js +0 -0
  572. /package/node_modules/{@protobufjs → baileys/node_modules/@protobufjs}/fetch/CHANGELOG.md +0 -0
  573. /package/node_modules/{@protobufjs → baileys/node_modules/@protobufjs}/fetch/LICENSE +0 -0
  574. /package/node_modules/{@protobufjs → baileys/node_modules/@protobufjs}/fetch/README.md +0 -0
  575. /package/node_modules/{@protobufjs → baileys/node_modules/@protobufjs}/fetch/index.d.ts +0 -0
  576. /package/node_modules/{@protobufjs → baileys/node_modules/@protobufjs}/fetch/index.js +0 -0
  577. /package/node_modules/{@protobufjs → baileys/node_modules/@protobufjs}/fetch/package.json +0 -0
  578. /package/node_modules/{@protobufjs → baileys/node_modules/@protobufjs}/fetch/tests/data/file.txt +0 -0
  579. /package/node_modules/{@protobufjs → baileys/node_modules/@protobufjs}/fetch/tests/index.js +0 -0
  580. /package/node_modules/{@protobufjs → baileys/node_modules/@protobufjs}/fetch/util/fs.js +0 -0
  581. /package/node_modules/{@protobufjs → baileys/node_modules/@protobufjs}/float/LICENSE +0 -0
  582. /package/node_modules/{@protobufjs → baileys/node_modules/@protobufjs}/float/README.md +0 -0
  583. /package/node_modules/{@protobufjs → baileys/node_modules/@protobufjs}/float/bench/index.js +0 -0
  584. /package/node_modules/{@protobufjs → baileys/node_modules/@protobufjs}/float/bench/suite.js +0 -0
  585. /package/node_modules/{@protobufjs → baileys/node_modules/@protobufjs}/float/index.d.ts +0 -0
  586. /package/node_modules/{@protobufjs → baileys/node_modules/@protobufjs}/float/index.js +0 -0
  587. /package/node_modules/{@protobufjs → baileys/node_modules/@protobufjs}/float/package.json +0 -0
  588. /package/node_modules/{@protobufjs → baileys/node_modules/@protobufjs}/float/tests/index.js +0 -0
  589. /package/node_modules/{@protobufjs/path → baileys/node_modules/@protobufjs/inquire}/LICENSE +0 -0
  590. /package/node_modules/{@protobufjs/pool → baileys/node_modules/@protobufjs/path}/LICENSE +0 -0
  591. /package/node_modules/{@protobufjs → baileys/node_modules/@protobufjs}/path/README.md +0 -0
  592. /package/node_modules/{@protobufjs → baileys/node_modules/@protobufjs}/path/index.d.ts +0 -0
  593. /package/node_modules/{@protobufjs → baileys/node_modules/@protobufjs}/path/index.js +0 -0
  594. /package/node_modules/{@protobufjs → baileys/node_modules/@protobufjs}/path/package.json +0 -0
  595. /package/node_modules/{@protobufjs → baileys/node_modules/@protobufjs}/path/tests/index.js +0 -0
  596. /package/node_modules/{@protobufjs → baileys/node_modules/@protobufjs}/pool/.npmignore +0 -0
  597. /package/node_modules/{@protobufjs/utf8 → baileys/node_modules/@protobufjs/pool}/LICENSE +0 -0
  598. /package/node_modules/{@protobufjs → baileys/node_modules/@protobufjs}/pool/README.md +0 -0
  599. /package/node_modules/{@protobufjs → baileys/node_modules/@protobufjs}/pool/index.d.ts +0 -0
  600. /package/node_modules/{@protobufjs → baileys/node_modules/@protobufjs}/pool/index.js +0 -0
  601. /package/node_modules/{@protobufjs → baileys/node_modules/@protobufjs}/pool/package.json +0 -0
  602. /package/node_modules/{@protobufjs → baileys/node_modules/@protobufjs}/pool/tests/index.js +0 -0
  603. /package/node_modules/{@protobufjs → baileys/node_modules/@protobufjs}/utf8/README.md +0 -0
  604. /package/node_modules/{@protobufjs → baileys/node_modules/@protobufjs}/utf8/index.d.ts +0 -0
  605. /package/node_modules/{@protobufjs → baileys/node_modules/@protobufjs}/utf8/tests/data/surrogate_pair_bug.txt +0 -0
  606. /package/node_modules/{@protobufjs → baileys/node_modules/@protobufjs}/utf8/tests/data/utf8.txt +0 -0
  607. /package/node_modules/{@tokenizer → baileys/node_modules/@tokenizer}/inflate/LICENSE +0 -0
  608. /package/node_modules/{@tokenizer → baileys/node_modules/@tokenizer}/inflate/README.md +0 -0
  609. /package/node_modules/{@tokenizer → baileys/node_modules/@tokenizer}/inflate/lib/GzipHandler.d.ts +0 -0
  610. /package/node_modules/{@tokenizer → baileys/node_modules/@tokenizer}/inflate/lib/GzipHandler.js +0 -0
  611. /package/node_modules/{@tokenizer → baileys/node_modules/@tokenizer}/inflate/lib/ZipHandler.d.ts +0 -0
  612. /package/node_modules/{@tokenizer → baileys/node_modules/@tokenizer}/inflate/lib/ZipHandler.js +0 -0
  613. /package/node_modules/{@tokenizer → baileys/node_modules/@tokenizer}/inflate/lib/ZipToken.d.ts +0 -0
  614. /package/node_modules/{@tokenizer → baileys/node_modules/@tokenizer}/inflate/lib/ZipToken.js +0 -0
  615. /package/node_modules/{@tokenizer → baileys/node_modules/@tokenizer}/inflate/lib/index.d.ts +0 -0
  616. /package/node_modules/{@tokenizer → baileys/node_modules/@tokenizer}/inflate/lib/index.js +0 -0
  617. /package/node_modules/{@tokenizer → baileys/node_modules/@tokenizer}/inflate/package.json +0 -0
  618. /package/node_modules/{@tokenizer → baileys/node_modules/@tokenizer}/token/README.md +0 -0
  619. /package/node_modules/{@tokenizer → baileys/node_modules/@tokenizer}/token/index.d.ts +0 -0
  620. /package/node_modules/{@tokenizer → baileys/node_modules/@tokenizer}/token/package.json +0 -0
  621. /package/node_modules/{@types → baileys/node_modules/@types}/node/LICENSE +0 -0
  622. /package/node_modules/{@types → baileys/node_modules/@types}/node/assert/strict.d.ts +0 -0
  623. /package/node_modules/{@types → baileys/node_modules/@types}/node/assert.d.ts +0 -0
  624. /package/node_modules/{@types → baileys/node_modules/@types}/node/async_hooks.d.ts +0 -0
  625. /package/node_modules/{@types → baileys/node_modules/@types}/node/buffer.buffer.d.ts +0 -0
  626. /package/node_modules/{@types → baileys/node_modules/@types}/node/buffer.d.ts +0 -0
  627. /package/node_modules/{@types → baileys/node_modules/@types}/node/child_process.d.ts +0 -0
  628. /package/node_modules/{@types → baileys/node_modules/@types}/node/cluster.d.ts +0 -0
  629. /package/node_modules/{@types → baileys/node_modules/@types}/node/console.d.ts +0 -0
  630. /package/node_modules/{@types → baileys/node_modules/@types}/node/constants.d.ts +0 -0
  631. /package/node_modules/{@types → baileys/node_modules/@types}/node/crypto.d.ts +0 -0
  632. /package/node_modules/{@types → baileys/node_modules/@types}/node/dgram.d.ts +0 -0
  633. /package/node_modules/{@types → baileys/node_modules/@types}/node/diagnostics_channel.d.ts +0 -0
  634. /package/node_modules/{@types → baileys/node_modules/@types}/node/dns/promises.d.ts +0 -0
  635. /package/node_modules/{@types → baileys/node_modules/@types}/node/dns.d.ts +0 -0
  636. /package/node_modules/{@types → baileys/node_modules/@types}/node/domain.d.ts +0 -0
  637. /package/node_modules/{@types → baileys/node_modules/@types}/node/events.d.ts +0 -0
  638. /package/node_modules/{@types → baileys/node_modules/@types}/node/ffi.d.ts +0 -0
  639. /package/node_modules/{@types → baileys/node_modules/@types}/node/fs.d.ts +0 -0
  640. /package/node_modules/{@types → baileys/node_modules/@types}/node/globals.d.ts +0 -0
  641. /package/node_modules/{@types → baileys/node_modules/@types}/node/globals.typedarray.d.ts +0 -0
  642. /package/node_modules/{@types → baileys/node_modules/@types}/node/http.d.ts +0 -0
  643. /package/node_modules/{@types → baileys/node_modules/@types}/node/http2.d.ts +0 -0
  644. /package/node_modules/{@types → baileys/node_modules/@types}/node/https.d.ts +0 -0
  645. /package/node_modules/{@types → baileys/node_modules/@types}/node/index.d.ts +0 -0
  646. /package/node_modules/{@types → baileys/node_modules/@types}/node/inspector/promises.d.ts +0 -0
  647. /package/node_modules/{@types → baileys/node_modules/@types}/node/inspector.d.ts +0 -0
  648. /package/node_modules/{@types → baileys/node_modules/@types}/node/inspector.generated.d.ts +0 -0
  649. /package/node_modules/{@types → baileys/node_modules/@types}/node/module.d.ts +0 -0
  650. /package/node_modules/{@types → baileys/node_modules/@types}/node/net.d.ts +0 -0
  651. /package/node_modules/{@types → baileys/node_modules/@types}/node/os.d.ts +0 -0
  652. /package/node_modules/{@types → baileys/node_modules/@types}/node/path/posix.d.ts +0 -0
  653. /package/node_modules/{@types → baileys/node_modules/@types}/node/path/win32.d.ts +0 -0
  654. /package/node_modules/{@types → baileys/node_modules/@types}/node/path.d.ts +0 -0
  655. /package/node_modules/{@types → baileys/node_modules/@types}/node/perf_hooks.d.ts +0 -0
  656. /package/node_modules/{@types → baileys/node_modules/@types}/node/process.d.ts +0 -0
  657. /package/node_modules/{@types → baileys/node_modules/@types}/node/punycode.d.ts +0 -0
  658. /package/node_modules/{@types → baileys/node_modules/@types}/node/querystring.d.ts +0 -0
  659. /package/node_modules/{@types → baileys/node_modules/@types}/node/quic.d.ts +0 -0
  660. /package/node_modules/{@types → baileys/node_modules/@types}/node/readline/promises.d.ts +0 -0
  661. /package/node_modules/{@types → baileys/node_modules/@types}/node/readline.d.ts +0 -0
  662. /package/node_modules/{@types → baileys/node_modules/@types}/node/repl.d.ts +0 -0
  663. /package/node_modules/{@types → baileys/node_modules/@types}/node/sea.d.ts +0 -0
  664. /package/node_modules/{@types → baileys/node_modules/@types}/node/sqlite.d.ts +0 -0
  665. /package/node_modules/{@types → baileys/node_modules/@types}/node/stream/consumers.d.ts +0 -0
  666. /package/node_modules/{@types → baileys/node_modules/@types}/node/stream/iter.d.ts +0 -0
  667. /package/node_modules/{@types → baileys/node_modules/@types}/node/stream/promises.d.ts +0 -0
  668. /package/node_modules/{@types → baileys/node_modules/@types}/node/stream/web.d.ts +0 -0
  669. /package/node_modules/{@types → baileys/node_modules/@types}/node/stream.d.ts +0 -0
  670. /package/node_modules/{@types → baileys/node_modules/@types}/node/string_decoder.d.ts +0 -0
  671. /package/node_modules/{@types → baileys/node_modules/@types}/node/test/reporters.d.ts +0 -0
  672. /package/node_modules/{@types → baileys/node_modules/@types}/node/test.d.ts +0 -0
  673. /package/node_modules/{@types → baileys/node_modules/@types}/node/timers/promises.d.ts +0 -0
  674. /package/node_modules/{@types → baileys/node_modules/@types}/node/timers.d.ts +0 -0
  675. /package/node_modules/{@types → baileys/node_modules/@types}/node/tls.d.ts +0 -0
  676. /package/node_modules/{@types → baileys/node_modules/@types}/node/trace_events.d.ts +0 -0
  677. /package/node_modules/{@types → baileys/node_modules/@types}/node/ts5.6/buffer.buffer.d.ts +0 -0
  678. /package/node_modules/{@types → baileys/node_modules/@types}/node/ts5.6/compatibility/float16array.d.ts +0 -0
  679. /package/node_modules/{@types → baileys/node_modules/@types}/node/ts5.6/globals.typedarray.d.ts +0 -0
  680. /package/node_modules/{@types → baileys/node_modules/@types}/node/ts5.6/index.d.ts +0 -0
  681. /package/node_modules/{@types → baileys/node_modules/@types}/node/ts5.7/compatibility/float16array.d.ts +0 -0
  682. /package/node_modules/{@types → baileys/node_modules/@types}/node/ts5.7/index.d.ts +0 -0
  683. /package/node_modules/{@types → baileys/node_modules/@types}/node/tty.d.ts +0 -0
  684. /package/node_modules/{@types → baileys/node_modules/@types}/node/url.d.ts +0 -0
  685. /package/node_modules/{@types → baileys/node_modules/@types}/node/util/types.d.ts +0 -0
  686. /package/node_modules/{@types → baileys/node_modules/@types}/node/util.d.ts +0 -0
  687. /package/node_modules/{@types → baileys/node_modules/@types}/node/v8.d.ts +0 -0
  688. /package/node_modules/{@types → baileys/node_modules/@types}/node/vm.d.ts +0 -0
  689. /package/node_modules/{@types → baileys/node_modules/@types}/node/wasi.d.ts +0 -0
  690. /package/node_modules/{@types → baileys/node_modules/@types}/node/web-globals/abortcontroller.d.ts +0 -0
  691. /package/node_modules/{@types → baileys/node_modules/@types}/node/web-globals/blob.d.ts +0 -0
  692. /package/node_modules/{@types → baileys/node_modules/@types}/node/web-globals/console.d.ts +0 -0
  693. /package/node_modules/{@types → baileys/node_modules/@types}/node/web-globals/crypto.d.ts +0 -0
  694. /package/node_modules/{@types → baileys/node_modules/@types}/node/web-globals/domexception.d.ts +0 -0
  695. /package/node_modules/{@types → baileys/node_modules/@types}/node/web-globals/encoding.d.ts +0 -0
  696. /package/node_modules/{@types → baileys/node_modules/@types}/node/web-globals/events.d.ts +0 -0
  697. /package/node_modules/{@types → baileys/node_modules/@types}/node/web-globals/fetch.d.ts +0 -0
  698. /package/node_modules/{@types → baileys/node_modules/@types}/node/web-globals/importmeta.d.ts +0 -0
  699. /package/node_modules/{@types → baileys/node_modules/@types}/node/web-globals/messaging.d.ts +0 -0
  700. /package/node_modules/{@types → baileys/node_modules/@types}/node/web-globals/navigator.d.ts +0 -0
  701. /package/node_modules/{@types → baileys/node_modules/@types}/node/web-globals/performance.d.ts +0 -0
  702. /package/node_modules/{@types → baileys/node_modules/@types}/node/web-globals/storage.d.ts +0 -0
  703. /package/node_modules/{@types → baileys/node_modules/@types}/node/web-globals/streams.d.ts +0 -0
  704. /package/node_modules/{@types → baileys/node_modules/@types}/node/web-globals/timers.d.ts +0 -0
  705. /package/node_modules/{@types → baileys/node_modules/@types}/node/web-globals/url.d.ts +0 -0
  706. /package/node_modules/{@types → baileys/node_modules/@types}/node/worker_threads.d.ts +0 -0
  707. /package/node_modules/{@types → baileys/node_modules/@types}/node/zlib/iter.d.ts +0 -0
  708. /package/node_modules/{@types → baileys/node_modules/@types}/node/zlib.d.ts +0 -0
  709. /package/node_modules/{async-mutex → baileys/node_modules/async-mutex}/LICENSE +0 -0
  710. /package/node_modules/{async-mutex → baileys/node_modules/async-mutex}/README.md +0 -0
  711. /package/node_modules/{async-mutex → baileys/node_modules/async-mutex}/es6/Mutex.js +0 -0
  712. /package/node_modules/{async-mutex → baileys/node_modules/async-mutex}/es6/MutexInterface.js +0 -0
  713. /package/node_modules/{async-mutex → baileys/node_modules/async-mutex}/es6/Semaphore.js +0 -0
  714. /package/node_modules/{async-mutex → baileys/node_modules/async-mutex}/es6/SemaphoreInterface.js +0 -0
  715. /package/node_modules/{async-mutex → baileys/node_modules/async-mutex}/es6/errors.js +0 -0
  716. /package/node_modules/{async-mutex → baileys/node_modules/async-mutex}/es6/index.js +0 -0
  717. /package/node_modules/{async-mutex → baileys/node_modules/async-mutex}/es6/tryAcquire.js +0 -0
  718. /package/node_modules/{async-mutex → baileys/node_modules/async-mutex}/es6/withTimeout.js +0 -0
  719. /package/node_modules/{async-mutex → baileys/node_modules/async-mutex}/index.mjs +0 -0
  720. /package/node_modules/{async-mutex → baileys/node_modules/async-mutex}/lib/Mutex.d.ts +0 -0
  721. /package/node_modules/{async-mutex → baileys/node_modules/async-mutex}/lib/Mutex.js +0 -0
  722. /package/node_modules/{async-mutex → baileys/node_modules/async-mutex}/lib/MutexInterface.d.ts +0 -0
  723. /package/node_modules/{async-mutex → baileys/node_modules/async-mutex}/lib/MutexInterface.js +0 -0
  724. /package/node_modules/{async-mutex → baileys/node_modules/async-mutex}/lib/Semaphore.d.ts +0 -0
  725. /package/node_modules/{async-mutex → baileys/node_modules/async-mutex}/lib/Semaphore.js +0 -0
  726. /package/node_modules/{async-mutex → baileys/node_modules/async-mutex}/lib/SemaphoreInterface.d.ts +0 -0
  727. /package/node_modules/{async-mutex → baileys/node_modules/async-mutex}/lib/SemaphoreInterface.js +0 -0
  728. /package/node_modules/{async-mutex → baileys/node_modules/async-mutex}/lib/errors.d.ts +0 -0
  729. /package/node_modules/{async-mutex → baileys/node_modules/async-mutex}/lib/errors.js +0 -0
  730. /package/node_modules/{async-mutex → baileys/node_modules/async-mutex}/lib/index.d.ts +0 -0
  731. /package/node_modules/{async-mutex → baileys/node_modules/async-mutex}/lib/index.js +0 -0
  732. /package/node_modules/{async-mutex → baileys/node_modules/async-mutex}/lib/tryAcquire.d.ts +0 -0
  733. /package/node_modules/{async-mutex → baileys/node_modules/async-mutex}/lib/tryAcquire.js +0 -0
  734. /package/node_modules/{async-mutex → baileys/node_modules/async-mutex}/lib/withTimeout.d.ts +0 -0
  735. /package/node_modules/{async-mutex → baileys/node_modules/async-mutex}/lib/withTimeout.js +0 -0
  736. /package/node_modules/{async-mutex → baileys/node_modules/async-mutex}/package.json +0 -0
  737. /package/node_modules/{atomic-sleep → baileys/node_modules/atomic-sleep}/.travis.yml +0 -0
  738. /package/node_modules/{atomic-sleep → baileys/node_modules/atomic-sleep}/LICENSE +0 -0
  739. /package/node_modules/{atomic-sleep → baileys/node_modules/atomic-sleep}/index.js +0 -0
  740. /package/node_modules/{atomic-sleep → baileys/node_modules/atomic-sleep}/package.json +0 -0
  741. /package/node_modules/{atomic-sleep → baileys/node_modules/atomic-sleep}/readme.md +0 -0
  742. /package/node_modules/{atomic-sleep → baileys/node_modules/atomic-sleep}/test.js +0 -0
  743. /package/node_modules/{cacheable → baileys/node_modules/cacheable}/LICENSE +0 -0
  744. /package/node_modules/{cacheable → baileys/node_modules/cacheable}/README.md +0 -0
  745. /package/node_modules/{cacheable → baileys/node_modules/cacheable}/dist/index.cjs +0 -0
  746. /package/node_modules/{cacheable → baileys/node_modules/cacheable}/dist/index.d.cts +0 -0
  747. /package/node_modules/{cacheable → baileys/node_modules/cacheable}/dist/index.d.mts +0 -0
  748. /package/node_modules/{cacheable → baileys/node_modules/cacheable}/dist/index.mjs +0 -0
  749. /package/node_modules/{cacheable → baileys/node_modules/cacheable}/package.json +0 -0
  750. /package/node_modules/{content-type → baileys/node_modules/content-type}/LICENSE +0 -0
  751. /package/node_modules/{content-type → baileys/node_modules/content-type}/README.md +0 -0
  752. /package/node_modules/{content-type → baileys/node_modules/content-type}/dist/index.d.ts +0 -0
  753. /package/node_modules/{content-type → baileys/node_modules/content-type}/dist/index.js +0 -0
  754. /package/node_modules/{content-type → baileys/node_modules/content-type}/dist/index.js.map +0 -0
  755. /package/node_modules/{content-type → baileys/node_modules/content-type}/package.json +0 -0
  756. /package/node_modules/{curve25519-js → baileys/node_modules/curve25519-js}/.prettierrc +0 -0
  757. /package/node_modules/{curve25519-js → baileys/node_modules/curve25519-js}/LICENSE +0 -0
  758. /package/node_modules/{curve25519-js → baileys/node_modules/curve25519-js}/README.md +0 -0
  759. /package/node_modules/{curve25519-js → baileys/node_modules/curve25519-js}/lib/index.d.ts +0 -0
  760. /package/node_modules/{curve25519-js → baileys/node_modules/curve25519-js}/lib/index.js +0 -0
  761. /package/node_modules/{curve25519-js → baileys/node_modules/curve25519-js}/package.json +0 -0
  762. /package/node_modules/{curve25519-js → baileys/node_modules/curve25519-js}/tsconfig.json +0 -0
  763. /package/node_modules/{curve25519-js → baileys/node_modules/curve25519-js}/tslint.json +0 -0
  764. /package/node_modules/{debug → baileys/node_modules/debug}/LICENSE +0 -0
  765. /package/node_modules/{debug → baileys/node_modules/debug}/README.md +0 -0
  766. /package/node_modules/{debug → baileys/node_modules/debug}/package.json +0 -0
  767. /package/node_modules/{debug → baileys/node_modules/debug}/src/browser.js +0 -0
  768. /package/node_modules/{debug → baileys/node_modules/debug}/src/common.js +0 -0
  769. /package/node_modules/{debug → baileys/node_modules/debug}/src/index.js +0 -0
  770. /package/node_modules/{debug → baileys/node_modules/debug}/src/node.js +0 -0
  771. /package/node_modules/{eventemitter3 → baileys/node_modules/eventemitter3}/LICENSE +0 -0
  772. /package/node_modules/{eventemitter3 → baileys/node_modules/eventemitter3}/README.md +0 -0
  773. /package/node_modules/{eventemitter3 → baileys/node_modules/eventemitter3}/dist/eventemitter3.esm.js +0 -0
  774. /package/node_modules/{eventemitter3 → baileys/node_modules/eventemitter3}/dist/eventemitter3.esm.min.js +0 -0
  775. /package/node_modules/{eventemitter3 → baileys/node_modules/eventemitter3}/dist/eventemitter3.esm.min.js.map +0 -0
  776. /package/node_modules/{eventemitter3 → baileys/node_modules/eventemitter3}/dist/eventemitter3.umd.js +0 -0
  777. /package/node_modules/{eventemitter3 → baileys/node_modules/eventemitter3}/dist/eventemitter3.umd.min.js +0 -0
  778. /package/node_modules/{eventemitter3 → baileys/node_modules/eventemitter3}/dist/eventemitter3.umd.min.js.map +0 -0
  779. /package/node_modules/{eventemitter3 → baileys/node_modules/eventemitter3}/index.d.ts +0 -0
  780. /package/node_modules/{eventemitter3 → baileys/node_modules/eventemitter3}/index.js +0 -0
  781. /package/node_modules/{eventemitter3 → baileys/node_modules/eventemitter3}/index.mjs +0 -0
  782. /package/node_modules/{eventemitter3 → baileys/node_modules/eventemitter3}/package.json +0 -0
  783. /package/node_modules/{file-type → baileys/node_modules/file-type}/license +0 -0
  784. /package/node_modules/{file-type → baileys/node_modules/file-type}/package.json +0 -0
  785. /package/node_modules/{file-type → baileys/node_modules/file-type}/readme.md +0 -0
  786. /package/node_modules/{file-type → baileys/node_modules/file-type}/source/detectors/asf.js +0 -0
  787. /package/node_modules/{file-type → baileys/node_modules/file-type}/source/detectors/ebml.js +0 -0
  788. /package/node_modules/{file-type → baileys/node_modules/file-type}/source/detectors/png.js +0 -0
  789. /package/node_modules/{file-type → baileys/node_modules/file-type}/source/detectors/zip.js +0 -0
  790. /package/node_modules/{file-type → baileys/node_modules/file-type}/source/index.d.ts +0 -0
  791. /package/node_modules/{file-type → baileys/node_modules/file-type}/source/index.js +0 -0
  792. /package/node_modules/{file-type → baileys/node_modules/file-type}/source/index.test-d.ts +0 -0
  793. /package/node_modules/{file-type → baileys/node_modules/file-type}/source/parser.js +0 -0
  794. /package/node_modules/{file-type → baileys/node_modules/file-type}/source/supported.js +0 -0
  795. /package/node_modules/{file-type → baileys/node_modules/file-type}/source/tokens.js +0 -0
  796. /package/node_modules/{hashery → baileys/node_modules/hashery}/LICENSE +0 -0
  797. /package/node_modules/{hashery → baileys/node_modules/hashery}/README.md +0 -0
  798. /package/node_modules/{hashery → baileys/node_modules/hashery}/dist/browser/index.global.js +0 -0
  799. /package/node_modules/{hashery → baileys/node_modules/hashery}/dist/browser/index.global.js.map +0 -0
  800. /package/node_modules/{hashery → baileys/node_modules/hashery}/dist/browser/index.js +0 -0
  801. /package/node_modules/{hashery → baileys/node_modules/hashery}/dist/browser/index.js.map +0 -0
  802. /package/node_modules/{hashery → baileys/node_modules/hashery}/dist/node/index.cjs +0 -0
  803. /package/node_modules/{hashery → baileys/node_modules/hashery}/dist/node/index.d.cts +0 -0
  804. /package/node_modules/{hashery → baileys/node_modules/hashery}/dist/node/index.d.ts +0 -0
  805. /package/node_modules/{hashery → baileys/node_modules/hashery}/dist/node/index.js +0 -0
  806. /package/node_modules/{hashery → baileys/node_modules/hashery}/package.json +0 -0
  807. /package/node_modules/{hookified → baileys/node_modules/hookified}/LICENSE +0 -0
  808. /package/node_modules/{hookified → baileys/node_modules/hookified}/README.md +0 -0
  809. /package/node_modules/{hookified → baileys/node_modules/hookified}/dist/browser/index.global.js +0 -0
  810. /package/node_modules/{hookified → baileys/node_modules/hookified}/dist/browser/index.global.js.map +0 -0
  811. /package/node_modules/{hookified → baileys/node_modules/hookified}/dist/browser/index.js +0 -0
  812. /package/node_modules/{hookified → baileys/node_modules/hookified}/dist/browser/index.js.map +0 -0
  813. /package/node_modules/{hookified → baileys/node_modules/hookified}/dist/node/index.cjs +0 -0
  814. /package/node_modules/{hookified → baileys/node_modules/hookified}/dist/node/index.d.cts +0 -0
  815. /package/node_modules/{hookified → baileys/node_modules/hookified}/dist/node/index.d.ts +0 -0
  816. /package/node_modules/{hookified → baileys/node_modules/hookified}/dist/node/index.js +0 -0
  817. /package/node_modules/{hookified → baileys/node_modules/hookified}/package.json +0 -0
  818. /package/node_modules/{ieee754 → baileys/node_modules/ieee754}/LICENSE +0 -0
  819. /package/node_modules/{ieee754 → baileys/node_modules/ieee754}/README.md +0 -0
  820. /package/node_modules/{ieee754 → baileys/node_modules/ieee754}/index.d.ts +0 -0
  821. /package/node_modules/{ieee754 → baileys/node_modules/ieee754}/index.js +0 -0
  822. /package/node_modules/{ieee754 → baileys/node_modules/ieee754}/package.json +0 -0
  823. /package/node_modules/{keyv → baileys/node_modules/keyv}/LICENSE +0 -0
  824. /package/node_modules/{keyv → baileys/node_modules/keyv}/README.md +0 -0
  825. /package/node_modules/{keyv → baileys/node_modules/keyv}/dist/index.cjs +0 -0
  826. /package/node_modules/{keyv → baileys/node_modules/keyv}/dist/index.d.cts +0 -0
  827. /package/node_modules/{keyv → baileys/node_modules/keyv}/dist/index.d.ts +0 -0
  828. /package/node_modules/{keyv → baileys/node_modules/keyv}/dist/index.js +0 -0
  829. /package/node_modules/{keyv → baileys/node_modules/keyv}/package.json +0 -0
  830. /package/node_modules/{libsignal → baileys/node_modules/libsignal}/LICENSE +0 -0
  831. /package/node_modules/{libsignal → baileys/node_modules/libsignal}/README.md +0 -0
  832. /package/node_modules/{libsignal → baileys/node_modules/libsignal}/index.d.ts +0 -0
  833. /package/node_modules/{libsignal → baileys/node_modules/libsignal}/index.js +0 -0
  834. /package/node_modules/{libsignal → baileys/node_modules/libsignal}/package.json +0 -0
  835. /package/node_modules/{libsignal → baileys/node_modules/libsignal}/src/.eslintrc.json +0 -0
  836. /package/node_modules/{libsignal → baileys/node_modules/libsignal}/src/WhisperTextProtocol.js +0 -0
  837. /package/node_modules/{libsignal → baileys/node_modules/libsignal}/src/base_key_type.js +0 -0
  838. /package/node_modules/{libsignal → baileys/node_modules/libsignal}/src/chain_type.js +0 -0
  839. /package/node_modules/{libsignal → baileys/node_modules/libsignal}/src/crypto.d.ts +0 -0
  840. /package/node_modules/{libsignal → baileys/node_modules/libsignal}/src/crypto.js +0 -0
  841. /package/node_modules/{libsignal → baileys/node_modules/libsignal}/src/curve.d.ts +0 -0
  842. /package/node_modules/{libsignal → baileys/node_modules/libsignal}/src/curve.js +0 -0
  843. /package/node_modules/{libsignal → baileys/node_modules/libsignal}/src/errors.js +0 -0
  844. /package/node_modules/{libsignal → baileys/node_modules/libsignal}/src/keyhelper.js +0 -0
  845. /package/node_modules/{libsignal → baileys/node_modules/libsignal}/src/numeric_fingerprint.js +0 -0
  846. /package/node_modules/{libsignal → baileys/node_modules/libsignal}/src/protobufs.js +0 -0
  847. /package/node_modules/{libsignal → baileys/node_modules/libsignal}/src/protocol_address.js +0 -0
  848. /package/node_modules/{libsignal → baileys/node_modules/libsignal}/src/queue_job.js +0 -0
  849. /package/node_modules/{libsignal → baileys/node_modules/libsignal}/src/session_builder.js +0 -0
  850. /package/node_modules/{libsignal → baileys/node_modules/libsignal}/src/session_cipher.js +0 -0
  851. /package/node_modules/{libsignal → baileys/node_modules/libsignal}/src/session_record.js +0 -0
  852. /package/node_modules/{long → baileys/node_modules/long}/LICENSE +0 -0
  853. /package/node_modules/{long → baileys/node_modules/long}/README.md +0 -0
  854. /package/node_modules/{long → baileys/node_modules/long}/index.d.ts +0 -0
  855. /package/node_modules/{long → baileys/node_modules/long}/index.js +0 -0
  856. /package/node_modules/{long → baileys/node_modules/long}/package.json +0 -0
  857. /package/node_modules/{long → baileys/node_modules/long}/types.d.ts +0 -0
  858. /package/node_modules/{long → baileys/node_modules/long}/umd/index.d.ts +0 -0
  859. /package/node_modules/{long → baileys/node_modules/long}/umd/index.js +0 -0
  860. /package/node_modules/{long → baileys/node_modules/long}/umd/package.json +0 -0
  861. /package/node_modules/{long → baileys/node_modules/long}/umd/types.d.ts +0 -0
  862. /package/node_modules/{lru-cache → baileys/node_modules/lru-cache}/LICENSE.md +0 -0
  863. /package/node_modules/{lru-cache → baileys/node_modules/lru-cache}/README.md +0 -0
  864. /package/node_modules/{lru-cache → baileys/node_modules/lru-cache}/dist/commonjs/browser/diagnostics-channel-browser.d.ts.map +0 -0
  865. /package/node_modules/{lru-cache → baileys/node_modules/lru-cache}/dist/commonjs/browser/diagnostics-channel-browser.js.map +0 -0
  866. /package/node_modules/{lru-cache → baileys/node_modules/lru-cache}/dist/commonjs/browser/diagnostics-channel.d.ts +0 -0
  867. /package/node_modules/{lru-cache → baileys/node_modules/lru-cache}/dist/commonjs/browser/diagnostics-channel.js +0 -0
  868. /package/node_modules/{lru-cache → baileys/node_modules/lru-cache}/dist/commonjs/browser/index.d.ts +0 -0
  869. /package/node_modules/{lru-cache → baileys/node_modules/lru-cache}/dist/commonjs/browser/perf.d.ts +0 -0
  870. /package/node_modules/{lru-cache → baileys/node_modules/lru-cache}/dist/commonjs/browser/perf.d.ts.map +0 -0
  871. /package/node_modules/{lru-cache → baileys/node_modules/lru-cache}/dist/commonjs/browser/perf.js +0 -0
  872. /package/node_modules/{lru-cache → baileys/node_modules/lru-cache}/dist/commonjs/browser/perf.js.map +0 -0
  873. /package/node_modules/{lru-cache → baileys/node_modules/lru-cache}/dist/commonjs/diagnostics-channel-cjs.cjs.map +0 -0
  874. /package/node_modules/{lru-cache → baileys/node_modules/lru-cache}/dist/commonjs/diagnostics-channel-cjs.d.cts.map +0 -0
  875. /package/node_modules/{lru-cache → baileys/node_modules/lru-cache}/dist/commonjs/diagnostics-channel.d.ts +0 -0
  876. /package/node_modules/{lru-cache → baileys/node_modules/lru-cache}/dist/commonjs/diagnostics-channel.js +0 -0
  877. /package/node_modules/{lru-cache → baileys/node_modules/lru-cache}/dist/commonjs/index.d.ts +0 -0
  878. /package/node_modules/{lru-cache → baileys/node_modules/lru-cache}/dist/commonjs/node/diagnostics-channel-node.d.ts.map +0 -0
  879. /package/node_modules/{lru-cache → baileys/node_modules/lru-cache}/dist/commonjs/node/diagnostics-channel-node.js.map +0 -0
  880. /package/node_modules/{lru-cache → baileys/node_modules/lru-cache}/dist/commonjs/node/diagnostics-channel.d.ts +0 -0
  881. /package/node_modules/{lru-cache → baileys/node_modules/lru-cache}/dist/commonjs/node/diagnostics-channel.js +0 -0
  882. /package/node_modules/{lru-cache → baileys/node_modules/lru-cache}/dist/commonjs/node/index.d.ts +0 -0
  883. /package/node_modules/{lru-cache → baileys/node_modules/lru-cache}/dist/commonjs/node/perf.d.ts +0 -0
  884. /package/node_modules/{lru-cache → baileys/node_modules/lru-cache}/dist/commonjs/node/perf.d.ts.map +0 -0
  885. /package/node_modules/{lru-cache → baileys/node_modules/lru-cache}/dist/commonjs/node/perf.js +0 -0
  886. /package/node_modules/{lru-cache → baileys/node_modules/lru-cache}/dist/commonjs/node/perf.js.map +0 -0
  887. /package/node_modules/{lru-cache → baileys/node_modules/lru-cache}/dist/commonjs/package.json +0 -0
  888. /package/node_modules/{lru-cache → baileys/node_modules/lru-cache}/dist/commonjs/perf.d.ts +0 -0
  889. /package/node_modules/{lru-cache → baileys/node_modules/lru-cache}/dist/commonjs/perf.d.ts.map +0 -0
  890. /package/node_modules/{lru-cache → baileys/node_modules/lru-cache}/dist/commonjs/perf.js +0 -0
  891. /package/node_modules/{lru-cache → baileys/node_modules/lru-cache}/dist/commonjs/perf.js.map +0 -0
  892. /package/node_modules/{lru-cache → baileys/node_modules/lru-cache}/dist/esm/browser/diagnostics-channel-browser.d.ts.map +0 -0
  893. /package/node_modules/{lru-cache → baileys/node_modules/lru-cache}/dist/esm/browser/diagnostics-channel-browser.js.map +0 -0
  894. /package/node_modules/{lru-cache → baileys/node_modules/lru-cache}/dist/esm/browser/diagnostics-channel.d.ts +0 -0
  895. /package/node_modules/{lru-cache → baileys/node_modules/lru-cache}/dist/esm/browser/diagnostics-channel.js +0 -0
  896. /package/node_modules/{lru-cache → baileys/node_modules/lru-cache}/dist/esm/browser/index.d.ts +0 -0
  897. /package/node_modules/{lru-cache → baileys/node_modules/lru-cache}/dist/esm/browser/perf.d.ts +0 -0
  898. /package/node_modules/{lru-cache → baileys/node_modules/lru-cache}/dist/esm/browser/perf.d.ts.map +0 -0
  899. /package/node_modules/{lru-cache → baileys/node_modules/lru-cache}/dist/esm/browser/perf.js +0 -0
  900. /package/node_modules/{lru-cache → baileys/node_modules/lru-cache}/dist/esm/browser/perf.js.map +0 -0
  901. /package/node_modules/{lru-cache → baileys/node_modules/lru-cache}/dist/esm/diagnostics-channel-esm.d.mts.map +0 -0
  902. /package/node_modules/{lru-cache → baileys/node_modules/lru-cache}/dist/esm/diagnostics-channel-esm.mjs.map +0 -0
  903. /package/node_modules/{lru-cache → baileys/node_modules/lru-cache}/dist/esm/diagnostics-channel.d.ts +0 -0
  904. /package/node_modules/{lru-cache → baileys/node_modules/lru-cache}/dist/esm/diagnostics-channel.js +0 -0
  905. /package/node_modules/{lru-cache → baileys/node_modules/lru-cache}/dist/esm/index.d.ts +0 -0
  906. /package/node_modules/{lru-cache → baileys/node_modules/lru-cache}/dist/esm/node/diagnostics-channel-node.d.ts.map +0 -0
  907. /package/node_modules/{lru-cache → baileys/node_modules/lru-cache}/dist/esm/node/diagnostics-channel-node.js.map +0 -0
  908. /package/node_modules/{lru-cache → baileys/node_modules/lru-cache}/dist/esm/node/diagnostics-channel.d.ts +0 -0
  909. /package/node_modules/{lru-cache → baileys/node_modules/lru-cache}/dist/esm/node/diagnostics-channel.js +0 -0
  910. /package/node_modules/{lru-cache → baileys/node_modules/lru-cache}/dist/esm/node/index.d.ts +0 -0
  911. /package/node_modules/{lru-cache → baileys/node_modules/lru-cache}/dist/esm/node/perf.d.ts +0 -0
  912. /package/node_modules/{lru-cache → baileys/node_modules/lru-cache}/dist/esm/node/perf.d.ts.map +0 -0
  913. /package/node_modules/{lru-cache → baileys/node_modules/lru-cache}/dist/esm/node/perf.js +0 -0
  914. /package/node_modules/{lru-cache → baileys/node_modules/lru-cache}/dist/esm/node/perf.js.map +0 -0
  915. /package/node_modules/{lru-cache → baileys/node_modules/lru-cache}/dist/esm/package.json +0 -0
  916. /package/node_modules/{lru-cache → baileys/node_modules/lru-cache}/dist/esm/perf.d.ts +0 -0
  917. /package/node_modules/{lru-cache → baileys/node_modules/lru-cache}/dist/esm/perf.d.ts.map +0 -0
  918. /package/node_modules/{lru-cache → baileys/node_modules/lru-cache}/dist/esm/perf.js +0 -0
  919. /package/node_modules/{lru-cache → baileys/node_modules/lru-cache}/dist/esm/perf.js.map +0 -0
  920. /package/node_modules/{media-typer → baileys/node_modules/media-typer}/LICENSE +0 -0
  921. /package/node_modules/{media-typer → baileys/node_modules/media-typer}/README.md +0 -0
  922. /package/node_modules/{media-typer → baileys/node_modules/media-typer}/dist/index.d.ts +0 -0
  923. /package/node_modules/{media-typer → baileys/node_modules/media-typer}/dist/index.js +0 -0
  924. /package/node_modules/{media-typer → baileys/node_modules/media-typer}/dist/index.js.map +0 -0
  925. /package/node_modules/{media-typer → baileys/node_modules/media-typer}/package.json +0 -0
  926. /package/node_modules/{ms → baileys/node_modules/ms}/index.js +0 -0
  927. /package/node_modules/{ms → baileys/node_modules/ms}/license.md +0 -0
  928. /package/node_modules/{ms → baileys/node_modules/ms}/package.json +0 -0
  929. /package/node_modules/{ms → baileys/node_modules/ms}/readme.md +0 -0
  930. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/LICENSE.txt +0 -0
  931. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/README.md +0 -0
  932. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/ParseError.d.ts +0 -0
  933. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/ParseError.js +0 -0
  934. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/ParserFactory.d.ts +0 -0
  935. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/ParserFactory.js +0 -0
  936. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/aiff/AiffLoader.d.ts +0 -0
  937. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/aiff/AiffLoader.js +0 -0
  938. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/aiff/AiffParser.d.ts +0 -0
  939. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/aiff/AiffParser.js +0 -0
  940. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/aiff/AiffTagMap.d.ts +0 -0
  941. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/aiff/AiffTagMap.js +0 -0
  942. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/aiff/AiffToken.d.ts +0 -0
  943. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/aiff/AiffToken.js +0 -0
  944. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/apev2/APEv2Parser.d.ts +0 -0
  945. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/apev2/APEv2Parser.js +0 -0
  946. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/apev2/APEv2TagMapper.d.ts +0 -0
  947. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/apev2/APEv2TagMapper.js +0 -0
  948. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/apev2/APEv2Token.d.ts +0 -0
  949. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/apev2/APEv2Token.js +0 -0
  950. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/apev2/Apev2Loader.d.ts +0 -0
  951. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/apev2/Apev2Loader.js +0 -0
  952. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/asf/AsfGuid.d.ts +0 -0
  953. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/asf/AsfGuid.js +0 -0
  954. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/asf/AsfLoader.d.ts +0 -0
  955. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/asf/AsfLoader.js +0 -0
  956. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/asf/AsfObject.d.ts +0 -0
  957. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/asf/AsfObject.js +0 -0
  958. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/asf/AsfParser.d.ts +0 -0
  959. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/asf/AsfParser.js +0 -0
  960. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/asf/AsfTagMapper.d.ts +0 -0
  961. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/asf/AsfTagMapper.js +0 -0
  962. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/asf/AsfUtil.d.ts +0 -0
  963. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/asf/AsfUtil.js +0 -0
  964. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/common/BasicParser.d.ts +0 -0
  965. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/common/BasicParser.js +0 -0
  966. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/common/CaseInsensitiveTagMap.d.ts +0 -0
  967. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/common/CaseInsensitiveTagMap.js +0 -0
  968. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/common/CombinedTagMapper.d.ts +0 -0
  969. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/common/CombinedTagMapper.js +0 -0
  970. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/common/FourCC.d.ts +0 -0
  971. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/common/FourCC.js +0 -0
  972. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/common/GenericTagMapper.d.ts +0 -0
  973. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/common/GenericTagMapper.js +0 -0
  974. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/common/GenericTagTypes.d.ts +0 -0
  975. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/common/GenericTagTypes.js +0 -0
  976. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/common/MetadataCollector.d.ts +0 -0
  977. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/common/MetadataCollector.js +0 -0
  978. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/core.d.ts +0 -0
  979. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/core.js +0 -0
  980. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/dsdiff/DsdiffLoader.d.ts +0 -0
  981. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/dsdiff/DsdiffLoader.js +0 -0
  982. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/dsdiff/DsdiffParser.d.ts +0 -0
  983. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/dsdiff/DsdiffParser.js +0 -0
  984. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/dsdiff/DsdiffToken.d.ts +0 -0
  985. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/dsdiff/DsdiffToken.js +0 -0
  986. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/dsf/DsfChunk.d.ts +0 -0
  987. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/dsf/DsfChunk.js +0 -0
  988. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/dsf/DsfLoader.d.ts +0 -0
  989. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/dsf/DsfLoader.js +0 -0
  990. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/dsf/DsfParser.d.ts +0 -0
  991. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/dsf/DsfParser.js +0 -0
  992. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/ebml/EbmlIterator.d.ts +0 -0
  993. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/ebml/EbmlIterator.js +0 -0
  994. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/ebml/types.d.ts +0 -0
  995. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/ebml/types.js +0 -0
  996. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/flac/FlacLoader.d.ts +0 -0
  997. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/flac/FlacLoader.js +0 -0
  998. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/flac/FlacParser.d.ts +0 -0
  999. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/flac/FlacParser.js +0 -0
  1000. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/flac/FlacToken.d.ts +0 -0
  1001. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/flac/FlacToken.js +0 -0
  1002. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/id3v1/ID3v1Parser.d.ts +0 -0
  1003. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/id3v1/ID3v1Parser.js +0 -0
  1004. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/id3v1/ID3v1TagMap.d.ts +0 -0
  1005. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/id3v1/ID3v1TagMap.js +0 -0
  1006. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/id3v2/AbstractID3Parser.d.ts +0 -0
  1007. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/id3v2/AbstractID3Parser.js +0 -0
  1008. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/id3v2/FrameHeader.d.ts +0 -0
  1009. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/id3v2/FrameParser.d.ts +0 -0
  1010. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/id3v2/ID3v22TagMapper.d.ts +0 -0
  1011. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/id3v2/ID3v22TagMapper.js +0 -0
  1012. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/id3v2/ID3v24TagMapper.d.ts +0 -0
  1013. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/id3v2/ID3v24TagMapper.js +0 -0
  1014. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/id3v2/ID3v2ChapterToken.d.ts +0 -0
  1015. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/id3v2/ID3v2ChapterToken.js +0 -0
  1016. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/id3v2/ID3v2Parser.d.ts +0 -0
  1017. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/id3v2/ID3v2Parser.js +0 -0
  1018. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/id3v2/ID3v2Token.d.ts +0 -0
  1019. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/iff/index.d.ts +0 -0
  1020. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/iff/index.js +0 -0
  1021. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/index.d.ts +0 -0
  1022. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/index.js +0 -0
  1023. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/lrc/LyricsParser.d.ts +0 -0
  1024. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/lrc/LyricsParser.js +0 -0
  1025. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/lyrics3/Lyrics3.d.ts +0 -0
  1026. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/lyrics3/Lyrics3.js +0 -0
  1027. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/matroska/MatroskaDtd.d.ts +0 -0
  1028. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/matroska/MatroskaDtd.js +0 -0
  1029. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/matroska/MatroskaLoader.d.ts +0 -0
  1030. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/matroska/MatroskaLoader.js +0 -0
  1031. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/matroska/MatroskaParser.d.ts +0 -0
  1032. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/matroska/MatroskaParser.js +0 -0
  1033. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/matroska/MatroskaTagMapper.d.ts +0 -0
  1034. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/matroska/MatroskaTagMapper.js +0 -0
  1035. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/matroska/types.d.ts +0 -0
  1036. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/matroska/types.js +0 -0
  1037. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/mp4/Atom.d.ts +0 -0
  1038. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/mp4/Atom.js +0 -0
  1039. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/mp4/AtomToken.d.ts +0 -0
  1040. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/mp4/MP4Parser.d.ts +0 -0
  1041. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/mp4/MP4Parser.js +0 -0
  1042. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/mp4/MP4TagMapper.d.ts +0 -0
  1043. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/mp4/MP4TagMapper.js +0 -0
  1044. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/mp4/Mp4Loader.d.ts +0 -0
  1045. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/mp4/Mp4Loader.js +0 -0
  1046. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/mpeg/ExtendedLameHeader.d.ts +0 -0
  1047. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/mpeg/ExtendedLameHeader.js +0 -0
  1048. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/mpeg/MpegLoader.d.ts +0 -0
  1049. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/mpeg/MpegLoader.js +0 -0
  1050. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/mpeg/MpegParser.d.ts +0 -0
  1051. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/mpeg/ReplayGainDataFormat.d.ts +0 -0
  1052. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/mpeg/ReplayGainDataFormat.js +0 -0
  1053. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/mpeg/XingTag.d.ts +0 -0
  1054. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/mpeg/XingTag.js +0 -0
  1055. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/musepack/MusepackConentError.d.ts +0 -0
  1056. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/musepack/MusepackConentError.js +0 -0
  1057. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/musepack/MusepackLoader.d.ts +0 -0
  1058. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/musepack/MusepackLoader.js +0 -0
  1059. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/musepack/MusepackParser.d.ts +0 -0
  1060. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/musepack/MusepackParser.js +0 -0
  1061. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/musepack/sv7/BitReader.d.ts +0 -0
  1062. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/musepack/sv7/BitReader.js +0 -0
  1063. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/musepack/sv7/MpcSv7Parser.d.ts +0 -0
  1064. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/musepack/sv7/MpcSv7Parser.js +0 -0
  1065. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/musepack/sv7/StreamVersion7.d.ts +0 -0
  1066. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/musepack/sv7/StreamVersion7.js +0 -0
  1067. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/musepack/sv8/MpcSv8Parser.d.ts +0 -0
  1068. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/musepack/sv8/MpcSv8Parser.js +0 -0
  1069. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/musepack/sv8/StreamVersion8.d.ts +0 -0
  1070. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/musepack/sv8/StreamVersion8.js +0 -0
  1071. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/ogg/OggLoader.d.ts +0 -0
  1072. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/ogg/OggLoader.js +0 -0
  1073. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/ogg/OggParser.d.ts +0 -0
  1074. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/ogg/OggParser.js +0 -0
  1075. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/ogg/OggToken.d.ts +0 -0
  1076. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/ogg/OggToken.js +0 -0
  1077. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/ogg/flac/FlacStream.d.ts +0 -0
  1078. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/ogg/flac/FlacStream.js +0 -0
  1079. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/ogg/opus/Opus.d.ts +0 -0
  1080. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/ogg/opus/Opus.js +0 -0
  1081. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/ogg/opus/OpusStream.d.ts +0 -0
  1082. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/ogg/opus/OpusStream.js +0 -0
  1083. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/ogg/speex/Speex.d.ts +0 -0
  1084. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/ogg/speex/Speex.js +0 -0
  1085. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/ogg/speex/SpeexStream.d.ts +0 -0
  1086. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/ogg/speex/SpeexStream.js +0 -0
  1087. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/ogg/theora/Theora.d.ts +0 -0
  1088. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/ogg/theora/Theora.js +0 -0
  1089. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/ogg/theora/TheoraStream.d.ts +0 -0
  1090. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/ogg/theora/TheoraStream.js +0 -0
  1091. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/ogg/vorbis/Vorbis.d.ts +0 -0
  1092. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/ogg/vorbis/Vorbis.js +0 -0
  1093. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/ogg/vorbis/VorbisDecoder.d.ts +0 -0
  1094. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/ogg/vorbis/VorbisDecoder.js +0 -0
  1095. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/ogg/vorbis/VorbisStream.d.ts +0 -0
  1096. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/ogg/vorbis/VorbisStream.js +0 -0
  1097. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/ogg/vorbis/VorbisTagMapper.d.ts +0 -0
  1098. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/ogg/vorbis/VorbisTagMapper.js +0 -0
  1099. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/riff/RiffChunk.d.ts +0 -0
  1100. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/riff/RiffChunk.js +0 -0
  1101. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/riff/RiffInfoTagMap.d.ts +0 -0
  1102. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/riff/RiffInfoTagMap.js +0 -0
  1103. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/type.d.ts +0 -0
  1104. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/type.js +0 -0
  1105. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/wav/BwfChunk.d.ts +0 -0
  1106. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/wav/BwfChunk.js +0 -0
  1107. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/wav/WaveChunk.d.ts +0 -0
  1108. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/wav/WaveChunk.js +0 -0
  1109. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/wav/WaveLoader.d.ts +0 -0
  1110. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/wav/WaveLoader.js +0 -0
  1111. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/wav/WaveParser.d.ts +0 -0
  1112. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/wav/WaveParser.js +0 -0
  1113. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/wavpack/WavPackLoader.d.ts +0 -0
  1114. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/wavpack/WavPackLoader.js +0 -0
  1115. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/wavpack/WavPackParser.d.ts +0 -0
  1116. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/wavpack/WavPackParser.js +0 -0
  1117. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/wavpack/WavPackToken.d.ts +0 -0
  1118. /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/wavpack/WavPackToken.js +0 -0
  1119. /package/node_modules/{on-exit-leak-free → baileys/node_modules/on-exit-leak-free}/.github/dependabot.yml +0 -0
  1120. /package/node_modules/{on-exit-leak-free → baileys/node_modules/on-exit-leak-free}/.github/workflows/ci.yml +0 -0
  1121. /package/node_modules/{on-exit-leak-free → baileys/node_modules/on-exit-leak-free}/LICENSE +0 -0
  1122. /package/node_modules/{on-exit-leak-free → baileys/node_modules/on-exit-leak-free}/README.md +0 -0
  1123. /package/node_modules/{on-exit-leak-free → baileys/node_modules/on-exit-leak-free}/index.js +0 -0
  1124. /package/node_modules/{on-exit-leak-free → baileys/node_modules/on-exit-leak-free}/package.json +0 -0
  1125. /package/node_modules/{on-exit-leak-free → baileys/node_modules/on-exit-leak-free}/test/base.test.js +0 -0
  1126. /package/node_modules/{on-exit-leak-free → baileys/node_modules/on-exit-leak-free}/test/event-emitter-leak.test.js +0 -0
  1127. /package/node_modules/{on-exit-leak-free → baileys/node_modules/on-exit-leak-free}/test/fixtures/beforeExit.js +0 -0
  1128. /package/node_modules/{on-exit-leak-free → baileys/node_modules/on-exit-leak-free}/test/fixtures/close.js +0 -0
  1129. /package/node_modules/{on-exit-leak-free → baileys/node_modules/on-exit-leak-free}/test/fixtures/gc-not-close.js +0 -0
  1130. /package/node_modules/{on-exit-leak-free → baileys/node_modules/on-exit-leak-free}/test/fixtures/unregister.js +0 -0
  1131. /package/node_modules/{p-queue → baileys/node_modules/p-queue}/dist/index.d.ts +0 -0
  1132. /package/node_modules/{p-queue → baileys/node_modules/p-queue}/dist/lower-bound.d.ts +0 -0
  1133. /package/node_modules/{p-queue → baileys/node_modules/p-queue}/dist/lower-bound.js +0 -0
  1134. /package/node_modules/{p-queue → baileys/node_modules/p-queue}/dist/options.d.ts +0 -0
  1135. /package/node_modules/{p-queue → baileys/node_modules/p-queue}/dist/options.js +0 -0
  1136. /package/node_modules/{p-queue → baileys/node_modules/p-queue}/dist/priority-queue.d.ts +0 -0
  1137. /package/node_modules/{p-queue → baileys/node_modules/p-queue}/dist/priority-queue.js +0 -0
  1138. /package/node_modules/{p-queue → baileys/node_modules/p-queue}/dist/queue.d.ts +0 -0
  1139. /package/node_modules/{p-queue → baileys/node_modules/p-queue}/dist/queue.js +0 -0
  1140. /package/node_modules/{p-queue → baileys/node_modules/p-queue}/license +0 -0
  1141. /package/node_modules/{p-queue → baileys/node_modules/p-queue}/readme.md +0 -0
  1142. /package/node_modules/{p-timeout → baileys/node_modules/p-timeout}/index.d.ts +0 -0
  1143. /package/node_modules/{p-timeout → baileys/node_modules/p-timeout}/index.js +0 -0
  1144. /package/node_modules/{p-timeout → baileys/node_modules/p-timeout}/license +0 -0
  1145. /package/node_modules/{p-timeout → baileys/node_modules/p-timeout}/package.json +0 -0
  1146. /package/node_modules/{p-timeout → baileys/node_modules/p-timeout}/readme.md +0 -0
  1147. /package/node_modules/{pino → baileys/node_modules/pino}/.eslintignore +0 -0
  1148. /package/node_modules/{pino → baileys/node_modules/pino}/.eslintrc +0 -0
  1149. /package/node_modules/{pino → baileys/node_modules/pino}/.github/dependabot.yml +0 -0
  1150. /package/node_modules/{pino → baileys/node_modules/pino}/.github/workflows/bench.yml +0 -0
  1151. /package/node_modules/{pino → baileys/node_modules/pino}/.github/workflows/ci.yml +0 -0
  1152. /package/node_modules/{pino → baileys/node_modules/pino}/.github/workflows/lock-threads.yml +0 -0
  1153. /package/node_modules/{pino → baileys/node_modules/pino}/.github/workflows/publish-release.yml +0 -0
  1154. /package/node_modules/{pino → baileys/node_modules/pino}/.github/workflows/target-main.yml +0 -0
  1155. /package/node_modules/{pino → baileys/node_modules/pino}/.nojekyll +0 -0
  1156. /package/node_modules/{pino → baileys/node_modules/pino}/.prettierignore +0 -0
  1157. /package/node_modules/{pino → baileys/node_modules/pino}/.taprc.yaml +0 -0
  1158. /package/node_modules/{pino → baileys/node_modules/pino}/CNAME +0 -0
  1159. /package/node_modules/{pino → baileys/node_modules/pino}/CONTRIBUTING.md +0 -0
  1160. /package/node_modules/{pino → baileys/node_modules/pino}/LICENSE +0 -0
  1161. /package/node_modules/{pino → baileys/node_modules/pino}/README.md +0 -0
  1162. /package/node_modules/{pino → baileys/node_modules/pino}/SECURITY.md +0 -0
  1163. /package/node_modules/{pino → baileys/node_modules/pino}/benchmarks/basic.bench.js +0 -0
  1164. /package/node_modules/{pino → baileys/node_modules/pino}/benchmarks/child-child.bench.js +0 -0
  1165. /package/node_modules/{pino → baileys/node_modules/pino}/benchmarks/child-creation.bench.js +0 -0
  1166. /package/node_modules/{pino → baileys/node_modules/pino}/benchmarks/child.bench.js +0 -0
  1167. /package/node_modules/{pino → baileys/node_modules/pino}/benchmarks/deep-object.bench.js +0 -0
  1168. /package/node_modules/{pino → baileys/node_modules/pino}/benchmarks/formatters.bench.js +0 -0
  1169. /package/node_modules/{pino → baileys/node_modules/pino}/benchmarks/internal/custom-levels.js +0 -0
  1170. /package/node_modules/{pino → baileys/node_modules/pino}/benchmarks/internal/just-pino-heavy.bench.js +0 -0
  1171. /package/node_modules/{pino → baileys/node_modules/pino}/benchmarks/internal/just-pino.bench.js +0 -0
  1172. /package/node_modules/{pino → baileys/node_modules/pino}/benchmarks/internal/parent-vs-child.bench.js +0 -0
  1173. /package/node_modules/{pino → baileys/node_modules/pino}/benchmarks/internal/redact.bench.js +0 -0
  1174. /package/node_modules/{pino → baileys/node_modules/pino}/benchmarks/long-string.bench.js +0 -0
  1175. /package/node_modules/{pino → baileys/node_modules/pino}/benchmarks/multi-arg.bench.js +0 -0
  1176. /package/node_modules/{pino → baileys/node_modules/pino}/benchmarks/multistream.js +0 -0
  1177. /package/node_modules/{pino → baileys/node_modules/pino}/benchmarks/object.bench.js +0 -0
  1178. /package/node_modules/{pino → baileys/node_modules/pino}/benchmarks/utils/generate-benchmark-doc.js +0 -0
  1179. /package/node_modules/{pino → baileys/node_modules/pino}/benchmarks/utils/runbench.js +0 -0
  1180. /package/node_modules/{pino → baileys/node_modules/pino}/benchmarks/utils/wrap-log-level.js +0 -0
  1181. /package/node_modules/{pino → baileys/node_modules/pino}/bin.js +0 -0
  1182. /package/node_modules/{pino → baileys/node_modules/pino}/browser.js +0 -0
  1183. /package/node_modules/{pino → baileys/node_modules/pino}/build/sync-version.js +0 -0
  1184. /package/node_modules/{pino → baileys/node_modules/pino}/docs/api.md +0 -0
  1185. /package/node_modules/{pino → baileys/node_modules/pino}/docs/asynchronous.md +0 -0
  1186. /package/node_modules/{pino → baileys/node_modules/pino}/docs/benchmarks.md +0 -0
  1187. /package/node_modules/{pino → baileys/node_modules/pino}/docs/browser.md +0 -0
  1188. /package/node_modules/{pino → baileys/node_modules/pino}/docs/bundling.md +0 -0
  1189. /package/node_modules/{pino → baileys/node_modules/pino}/docs/child-loggers.md +0 -0
  1190. /package/node_modules/{pino → baileys/node_modules/pino}/docs/diagnostics.md +0 -0
  1191. /package/node_modules/{pino → baileys/node_modules/pino}/docs/ecosystem.md +0 -0
  1192. /package/node_modules/{pino → baileys/node_modules/pino}/docs/help.md +0 -0
  1193. /package/node_modules/{pino → baileys/node_modules/pino}/docs/lts.md +0 -0
  1194. /package/node_modules/{pino → baileys/node_modules/pino}/docs/pretty.md +0 -0
  1195. /package/node_modules/{pino → baileys/node_modules/pino}/docs/redaction.md +0 -0
  1196. /package/node_modules/{pino → baileys/node_modules/pino}/docs/transports.md +0 -0
  1197. /package/node_modules/{pino → baileys/node_modules/pino}/docs/web.md +0 -0
  1198. /package/node_modules/{pino → baileys/node_modules/pino}/docsify/sidebar.md +0 -0
  1199. /package/node_modules/{pino → baileys/node_modules/pino}/examples/basic.js +0 -0
  1200. /package/node_modules/{pino → baileys/node_modules/pino}/examples/transport.js +0 -0
  1201. /package/node_modules/{pino → baileys/node_modules/pino}/favicon-16x16.png +0 -0
  1202. /package/node_modules/{pino → baileys/node_modules/pino}/favicon-32x32.png +0 -0
  1203. /package/node_modules/{pino → baileys/node_modules/pino}/favicon.ico +0 -0
  1204. /package/node_modules/{pino → baileys/node_modules/pino}/file.js +0 -0
  1205. /package/node_modules/{pino → baileys/node_modules/pino}/inc-version.sh +0 -0
  1206. /package/node_modules/{pino → baileys/node_modules/pino}/index.html +0 -0
  1207. /package/node_modules/{pino → baileys/node_modules/pino}/lib/caller.js +0 -0
  1208. /package/node_modules/{pino → baileys/node_modules/pino}/lib/constants.js +0 -0
  1209. /package/node_modules/{pino → baileys/node_modules/pino}/lib/deprecations.js +0 -0
  1210. /package/node_modules/{pino → baileys/node_modules/pino}/lib/levels.js +0 -0
  1211. /package/node_modules/{pino → baileys/node_modules/pino}/lib/meta.js +0 -0
  1212. /package/node_modules/{pino → baileys/node_modules/pino}/lib/multistream.js +0 -0
  1213. /package/node_modules/{pino → baileys/node_modules/pino}/lib/proto.js +0 -0
  1214. /package/node_modules/{pino → baileys/node_modules/pino}/lib/redaction.js +0 -0
  1215. /package/node_modules/{pino → baileys/node_modules/pino}/lib/symbols.js +0 -0
  1216. /package/node_modules/{pino → baileys/node_modules/pino}/lib/time.js +0 -0
  1217. /package/node_modules/{pino → baileys/node_modules/pino}/lib/tools.js +0 -0
  1218. /package/node_modules/{pino → baileys/node_modules/pino}/lib/transport-stream.js +0 -0
  1219. /package/node_modules/{pino → baileys/node_modules/pino}/lib/transport.js +0 -0
  1220. /package/node_modules/{pino → baileys/node_modules/pino}/lib/worker.js +0 -0
  1221. /package/node_modules/{pino → baileys/node_modules/pino}/package.json +0 -0
  1222. /package/node_modules/{pino → baileys/node_modules/pino}/pino-banner.png +0 -0
  1223. /package/node_modules/{pino → baileys/node_modules/pino}/pino-logo-hire.png +0 -0
  1224. /package/node_modules/{pino → baileys/node_modules/pino}/pino-tree.png +0 -0
  1225. /package/node_modules/{pino → baileys/node_modules/pino}/pino.d.ts +0 -0
  1226. /package/node_modules/{pino → baileys/node_modules/pino}/pino.js +0 -0
  1227. /package/node_modules/{pino → baileys/node_modules/pino}/pretty-demo.png +0 -0
  1228. /package/node_modules/{pino → baileys/node_modules/pino}/test/basic.test.js +0 -0
  1229. /package/node_modules/{pino → baileys/node_modules/pino}/test/broken-pipe.test.js +0 -0
  1230. /package/node_modules/{pino → baileys/node_modules/pino}/test/browser-child.test.js +0 -0
  1231. /package/node_modules/{pino → baileys/node_modules/pino}/test/browser-disabled.test.js +0 -0
  1232. /package/node_modules/{pino → baileys/node_modules/pino}/test/browser-early-console-freeze.test.js +0 -0
  1233. /package/node_modules/{pino → baileys/node_modules/pino}/test/browser-is-level-enabled.test.js +0 -0
  1234. /package/node_modules/{pino → baileys/node_modules/pino}/test/browser-levels.test.js +0 -0
  1235. /package/node_modules/{pino → baileys/node_modules/pino}/test/browser-serializers.test.js +0 -0
  1236. /package/node_modules/{pino → baileys/node_modules/pino}/test/browser-timestamp.test.js +0 -0
  1237. /package/node_modules/{pino → baileys/node_modules/pino}/test/browser-transmit.test.js +0 -0
  1238. /package/node_modules/{pino → baileys/node_modules/pino}/test/browser.test.js +0 -0
  1239. /package/node_modules/{pino → baileys/node_modules/pino}/test/complex-objects.test.js +0 -0
  1240. /package/node_modules/{pino → baileys/node_modules/pino}/test/crlf.test.js +0 -0
  1241. /package/node_modules/{pino → baileys/node_modules/pino}/test/custom-levels.test.js +0 -0
  1242. /package/node_modules/{pino → baileys/node_modules/pino}/test/diagnostics.test.js +0 -0
  1243. /package/node_modules/{pino → baileys/node_modules/pino}/test/error.test.js +0 -0
  1244. /package/node_modules/{pino → baileys/node_modules/pino}/test/errorKey.test.js +0 -0
  1245. /package/node_modules/{pino → baileys/node_modules/pino}/test/escaping.test.js +0 -0
  1246. /package/node_modules/{pino → baileys/node_modules/pino}/test/esm/esm.mjs +0 -0
  1247. /package/node_modules/{pino → baileys/node_modules/pino}/test/esm/index.test.js +0 -0
  1248. /package/node_modules/{pino → baileys/node_modules/pino}/test/esm/named-exports.mjs +0 -0
  1249. /package/node_modules/{pino → baileys/node_modules/pino}/test/exit.test.js +0 -0
  1250. /package/node_modules/{pino → baileys/node_modules/pino}/test/fixtures/broken-pipe/basic.js +0 -0
  1251. /package/node_modules/{pino → baileys/node_modules/pino}/test/fixtures/broken-pipe/destination.js +0 -0
  1252. /package/node_modules/{pino → baileys/node_modules/pino}/test/fixtures/broken-pipe/syncfalse.js +0 -0
  1253. /package/node_modules/{pino → baileys/node_modules/pino}/test/fixtures/console-transport.js +0 -0
  1254. /package/node_modules/{pino → baileys/node_modules/pino}/test/fixtures/crashing-transport.js +0 -0
  1255. /package/node_modules/{pino → baileys/node_modules/pino}/test/fixtures/default-exit.js +0 -0
  1256. /package/node_modules/{pino → baileys/node_modules/pino}/test/fixtures/destination-exit.js +0 -0
  1257. /package/node_modules/{pino → baileys/node_modules/pino}/test/fixtures/eval/index.js +0 -0
  1258. /package/node_modules/{pino → baileys/node_modules/pino}/test/fixtures/eval/node_modules/14-files.js +0 -0
  1259. /package/node_modules/{pino → baileys/node_modules/pino}/test/fixtures/eval/node_modules/2-files.js +0 -0
  1260. /package/node_modules/{pino → baileys/node_modules/pino}/test/fixtures/eval/node_modules/file1.js +0 -0
  1261. /package/node_modules/{pino → baileys/node_modules/pino}/test/fixtures/eval/node_modules/file10.js +0 -0
  1262. /package/node_modules/{pino → baileys/node_modules/pino}/test/fixtures/eval/node_modules/file11.js +0 -0
  1263. /package/node_modules/{pino → baileys/node_modules/pino}/test/fixtures/eval/node_modules/file12.js +0 -0
  1264. /package/node_modules/{pino → baileys/node_modules/pino}/test/fixtures/eval/node_modules/file13.js +0 -0
  1265. /package/node_modules/{pino → baileys/node_modules/pino}/test/fixtures/eval/node_modules/file14.js +0 -0
  1266. /package/node_modules/{pino → baileys/node_modules/pino}/test/fixtures/eval/node_modules/file2.js +0 -0
  1267. /package/node_modules/{pino → baileys/node_modules/pino}/test/fixtures/eval/node_modules/file3.js +0 -0
  1268. /package/node_modules/{pino → baileys/node_modules/pino}/test/fixtures/eval/node_modules/file4.js +0 -0
  1269. /package/node_modules/{pino → baileys/node_modules/pino}/test/fixtures/eval/node_modules/file5.js +0 -0
  1270. /package/node_modules/{pino → baileys/node_modules/pino}/test/fixtures/eval/node_modules/file6.js +0 -0
  1271. /package/node_modules/{pino → baileys/node_modules/pino}/test/fixtures/eval/node_modules/file7.js +0 -0
  1272. /package/node_modules/{pino → baileys/node_modules/pino}/test/fixtures/eval/node_modules/file8.js +0 -0
  1273. /package/node_modules/{pino → baileys/node_modules/pino}/test/fixtures/eval/node_modules/file9.js +0 -0
  1274. /package/node_modules/{pino → baileys/node_modules/pino}/test/fixtures/noop-transport.js +0 -0
  1275. /package/node_modules/{pino → baileys/node_modules/pino}/test/fixtures/pretty/null-prototype.js +0 -0
  1276. /package/node_modules/{pino → baileys/node_modules/pino}/test/fixtures/stdout-hack-protection.js +0 -0
  1277. /package/node_modules/{pino → baileys/node_modules/pino}/test/fixtures/syncfalse-child.js +0 -0
  1278. /package/node_modules/{pino → baileys/node_modules/pino}/test/fixtures/syncfalse-exit.js +0 -0
  1279. /package/node_modules/{pino → baileys/node_modules/pino}/test/fixtures/syncfalse-flush-exit.js +0 -0
  1280. /package/node_modules/{pino → baileys/node_modules/pino}/test/fixtures/syncfalse.js +0 -0
  1281. /package/node_modules/{pino → baileys/node_modules/pino}/test/fixtures/syntax-error-esm.mjs +0 -0
  1282. /package/node_modules/{pino → baileys/node_modules/pino}/test/fixtures/to-file-transport-with-transform.js +0 -0
  1283. /package/node_modules/{pino → baileys/node_modules/pino}/test/fixtures/to-file-transport.js +0 -0
  1284. /package/node_modules/{pino → baileys/node_modules/pino}/test/fixtures/to-file-transport.mjs +0 -0
  1285. /package/node_modules/{pino → baileys/node_modules/pino}/test/fixtures/transport/index.js +0 -0
  1286. /package/node_modules/{pino → baileys/node_modules/pino}/test/fixtures/transport/package.json +0 -0
  1287. /package/node_modules/{pino → baileys/node_modules/pino}/test/fixtures/transport-exit-immediately-with-async-dest.js +0 -0
  1288. /package/node_modules/{pino → baileys/node_modules/pino}/test/fixtures/transport-exit-immediately.js +0 -0
  1289. /package/node_modules/{pino → baileys/node_modules/pino}/test/fixtures/transport-exit-on-ready.js +0 -0
  1290. /package/node_modules/{pino → baileys/node_modules/pino}/test/fixtures/transport-main.js +0 -0
  1291. /package/node_modules/{pino → baileys/node_modules/pino}/test/fixtures/transport-many-lines.js +0 -0
  1292. /package/node_modules/{pino → baileys/node_modules/pino}/test/fixtures/transport-string-stdout.js +0 -0
  1293. /package/node_modules/{pino → baileys/node_modules/pino}/test/fixtures/transport-transform.js +0 -0
  1294. /package/node_modules/{pino → baileys/node_modules/pino}/test/fixtures/transport-uses-pino-config.js +0 -0
  1295. /package/node_modules/{pino → baileys/node_modules/pino}/test/fixtures/transport-with-on-exit.js +0 -0
  1296. /package/node_modules/{pino → baileys/node_modules/pino}/test/fixtures/transport-worker-data.js +0 -0
  1297. /package/node_modules/{pino → baileys/node_modules/pino}/test/fixtures/transport-worker.js +0 -0
  1298. /package/node_modules/{pino → baileys/node_modules/pino}/test/fixtures/transport-wrong-export-type.js +0 -0
  1299. /package/node_modules/{pino → baileys/node_modules/pino}/test/fixtures/ts/to-file-transport-with-transform.ts +0 -0
  1300. /package/node_modules/{pino → baileys/node_modules/pino}/test/fixtures/ts/to-file-transport.ts +0 -0
  1301. /package/node_modules/{pino → baileys/node_modules/pino}/test/fixtures/ts/transpile.cjs +0 -0
  1302. /package/node_modules/{pino → baileys/node_modules/pino}/test/fixtures/ts/transport-exit-immediately-with-async-dest.ts +0 -0
  1303. /package/node_modules/{pino → baileys/node_modules/pino}/test/fixtures/ts/transport-exit-immediately.ts +0 -0
  1304. /package/node_modules/{pino → baileys/node_modules/pino}/test/fixtures/ts/transport-exit-on-ready.ts +0 -0
  1305. /package/node_modules/{pino → baileys/node_modules/pino}/test/fixtures/ts/transport-main.ts +0 -0
  1306. /package/node_modules/{pino → baileys/node_modules/pino}/test/fixtures/ts/transport-string-stdout.ts +0 -0
  1307. /package/node_modules/{pino → baileys/node_modules/pino}/test/fixtures/ts/transport-worker.ts +0 -0
  1308. /package/node_modules/{pino → baileys/node_modules/pino}/test/formatters.test.js +0 -0
  1309. /package/node_modules/{pino → baileys/node_modules/pino}/test/helper.d.ts +0 -0
  1310. /package/node_modules/{pino → baileys/node_modules/pino}/test/helper.js +0 -0
  1311. /package/node_modules/{pino → baileys/node_modules/pino}/test/hooks.test.js +0 -0
  1312. /package/node_modules/{pino → baileys/node_modules/pino}/test/http.test.js +0 -0
  1313. /package/node_modules/{pino → baileys/node_modules/pino}/test/internals/version.test.js +0 -0
  1314. /package/node_modules/{pino → baileys/node_modules/pino}/test/is-level-enabled.test.js +0 -0
  1315. /package/node_modules/{pino → baileys/node_modules/pino}/test/jest/basic.spec.js +0 -0
  1316. /package/node_modules/{pino → baileys/node_modules/pino}/test/levels.test.js +0 -0
  1317. /package/node_modules/{pino → baileys/node_modules/pino}/test/metadata.test.js +0 -0
  1318. /package/node_modules/{pino → baileys/node_modules/pino}/test/mixin-merge-strategy.test.js +0 -0
  1319. /package/node_modules/{pino → baileys/node_modules/pino}/test/mixin.test.js +0 -0
  1320. /package/node_modules/{pino → baileys/node_modules/pino}/test/multistream.test.js +0 -0
  1321. /package/node_modules/{pino → baileys/node_modules/pino}/test/pkg/index.js +0 -0
  1322. /package/node_modules/{pino → baileys/node_modules/pino}/test/pkg/pkg.config.json +0 -0
  1323. /package/node_modules/{pino → baileys/node_modules/pino}/test/pkg/pkg.test.js +0 -0
  1324. /package/node_modules/{pino → baileys/node_modules/pino}/test/redact.test.js +0 -0
  1325. /package/node_modules/{pino → baileys/node_modules/pino}/test/serializers.test.js +0 -0
  1326. /package/node_modules/{pino → baileys/node_modules/pino}/test/sinon-child-logger.test.js +0 -0
  1327. /package/node_modules/{pino → baileys/node_modules/pino}/test/stdout-protection.test.js +0 -0
  1328. /package/node_modules/{pino → baileys/node_modules/pino}/test/syncfalse.test.js +0 -0
  1329. /package/node_modules/{pino → baileys/node_modules/pino}/test/timestamp-nano.test.js +0 -0
  1330. /package/node_modules/{pino → baileys/node_modules/pino}/test/timestamp.test.js +0 -0
  1331. /package/node_modules/{pino → baileys/node_modules/pino}/test/transport/big.test.js +0 -0
  1332. /package/node_modules/{pino → baileys/node_modules/pino}/test/transport/bundlers-support.test.js +0 -0
  1333. /package/node_modules/{pino → baileys/node_modules/pino}/test/transport/caller.test.js +0 -0
  1334. /package/node_modules/{pino → baileys/node_modules/pino}/test/transport/core.test.js +0 -0
  1335. /package/node_modules/{pino → baileys/node_modules/pino}/test/transport/core.test.ts +0 -0
  1336. /package/node_modules/{pino → baileys/node_modules/pino}/test/transport/core.transpiled.test.ts +0 -0
  1337. /package/node_modules/{pino → baileys/node_modules/pino}/test/transport/crash.test.js +0 -0
  1338. /package/node_modules/{pino → baileys/node_modules/pino}/test/transport/module-link.test.js +0 -0
  1339. /package/node_modules/{pino → baileys/node_modules/pino}/test/transport/pipeline.test.js +0 -0
  1340. /package/node_modules/{pino → baileys/node_modules/pino}/test/transport/repl.test.js +0 -0
  1341. /package/node_modules/{pino → baileys/node_modules/pino}/test/transport/syncTrue.test.js +0 -0
  1342. /package/node_modules/{pino → baileys/node_modules/pino}/test/transport/syncfalse.test.js +0 -0
  1343. /package/node_modules/{pino → baileys/node_modules/pino}/test/transport/targets.test.js +0 -0
  1344. /package/node_modules/{pino → baileys/node_modules/pino}/test/transport/uses-pino-config.test.js +0 -0
  1345. /package/node_modules/{pino → baileys/node_modules/pino}/test/transport-stream.test.js +0 -0
  1346. /package/node_modules/{pino → baileys/node_modules/pino}/test/types/pino-import.test-d.cts +0 -0
  1347. /package/node_modules/{pino → baileys/node_modules/pino}/test/types/pino-multistream.test-d.ts +0 -0
  1348. /package/node_modules/{pino → baileys/node_modules/pino}/test/types/pino-top-export.test-d.ts +0 -0
  1349. /package/node_modules/{pino → baileys/node_modules/pino}/test/types/pino-transport.test-d.ts +0 -0
  1350. /package/node_modules/{pino → baileys/node_modules/pino}/test/types/pino-type-only.test-d.ts +0 -0
  1351. /package/node_modules/{pino → baileys/node_modules/pino}/test/types/pino.test-d.ts +0 -0
  1352. /package/node_modules/{pino → baileys/node_modules/pino}/test/types/pino.ts +0 -0
  1353. /package/node_modules/{pino → baileys/node_modules/pino}/tsconfig.json +0 -0
  1354. /package/node_modules/{pino-abstract-transport → baileys/node_modules/pino-abstract-transport}/.github/dependabot.yml +0 -0
  1355. /package/node_modules/{pino-abstract-transport → baileys/node_modules/pino-abstract-transport}/.github/workflows/ci.yml +0 -0
  1356. /package/node_modules/{pino-abstract-transport → baileys/node_modules/pino-abstract-transport}/.husky/pre-commit +0 -0
  1357. /package/node_modules/{pino-abstract-transport → baileys/node_modules/pino-abstract-transport}/LICENSE +0 -0
  1358. /package/node_modules/{pino-abstract-transport → baileys/node_modules/pino-abstract-transport}/README.md +0 -0
  1359. /package/node_modules/{pino-abstract-transport → baileys/node_modules/pino-abstract-transport}/index.d.ts +0 -0
  1360. /package/node_modules/{pino-abstract-transport → baileys/node_modules/pino-abstract-transport}/index.js +0 -0
  1361. /package/node_modules/{pino-abstract-transport → baileys/node_modules/pino-abstract-transport}/package.json +0 -0
  1362. /package/node_modules/{pino-abstract-transport → baileys/node_modules/pino-abstract-transport}/test/base.test.js +0 -0
  1363. /package/node_modules/{pino-abstract-transport → baileys/node_modules/pino-abstract-transport}/test/fixtures/transport-async-iteration.js +0 -0
  1364. /package/node_modules/{pino-abstract-transport → baileys/node_modules/pino-abstract-transport}/test/fixtures/transport-on-data.js +0 -0
  1365. /package/node_modules/{pino-abstract-transport → baileys/node_modules/pino-abstract-transport}/test/fixtures/transport-transform.js +0 -0
  1366. /package/node_modules/{pino-abstract-transport → baileys/node_modules/pino-abstract-transport}/test/fixtures/worker-pipeline.js +0 -0
  1367. /package/node_modules/{pino-abstract-transport → baileys/node_modules/pino-abstract-transport}/test/types/index.test-d.ts +0 -0
  1368. /package/node_modules/{pino-abstract-transport → baileys/node_modules/pino-abstract-transport}/test/worker.test.js +0 -0
  1369. /package/node_modules/{pino-std-serializers → baileys/node_modules/pino-std-serializers}/.editorconfig +0 -0
  1370. /package/node_modules/{pino-std-serializers → baileys/node_modules/pino-std-serializers}/.github/dependabot.yml +0 -0
  1371. /package/node_modules/{pino-std-serializers → baileys/node_modules/pino-std-serializers}/.github/workflows/ci.yml +0 -0
  1372. /package/node_modules/{pino-std-serializers → baileys/node_modules/pino-std-serializers}/LICENSE +0 -0
  1373. /package/node_modules/{pino-std-serializers → baileys/node_modules/pino-std-serializers}/Readme.md +0 -0
  1374. /package/node_modules/{pino-std-serializers → baileys/node_modules/pino-std-serializers}/eslint.config.js +0 -0
  1375. /package/node_modules/{pino-std-serializers → baileys/node_modules/pino-std-serializers}/index.d.ts +0 -0
  1376. /package/node_modules/{pino-std-serializers → baileys/node_modules/pino-std-serializers}/index.js +0 -0
  1377. /package/node_modules/{pino-std-serializers → baileys/node_modules/pino-std-serializers}/lib/err-helpers.js +0 -0
  1378. /package/node_modules/{pino-std-serializers → baileys/node_modules/pino-std-serializers}/lib/err-proto.js +0 -0
  1379. /package/node_modules/{pino-std-serializers → baileys/node_modules/pino-std-serializers}/lib/err-with-cause.js +0 -0
  1380. /package/node_modules/{pino-std-serializers → baileys/node_modules/pino-std-serializers}/lib/err.js +0 -0
  1381. /package/node_modules/{pino-std-serializers → baileys/node_modules/pino-std-serializers}/lib/req.js +0 -0
  1382. /package/node_modules/{pino-std-serializers → baileys/node_modules/pino-std-serializers}/lib/res.js +0 -0
  1383. /package/node_modules/{pino-std-serializers → baileys/node_modules/pino-std-serializers}/package.json +0 -0
  1384. /package/node_modules/{pino-std-serializers → baileys/node_modules/pino-std-serializers}/test/err-with-cause.test.js +0 -0
  1385. /package/node_modules/{pino-std-serializers → baileys/node_modules/pino-std-serializers}/test/err.test.js +0 -0
  1386. /package/node_modules/{pino-std-serializers → baileys/node_modules/pino-std-serializers}/test/req.test.js +0 -0
  1387. /package/node_modules/{pino-std-serializers → baileys/node_modules/pino-std-serializers}/test/res.test.js +0 -0
  1388. /package/node_modules/{pino-std-serializers → baileys/node_modules/pino-std-serializers}/test/types/index.test-d.ts +0 -0
  1389. /package/node_modules/{pino-std-serializers → baileys/node_modules/pino-std-serializers}/tsconfig.json +0 -0
  1390. /package/node_modules/{process-warning → baileys/node_modules/process-warning}/.gitattributes +0 -0
  1391. /package/node_modules/{process-warning → baileys/node_modules/process-warning}/.github/dependabot.yml +0 -0
  1392. /package/node_modules/{process-warning → baileys/node_modules/process-warning}/.github/workflows/ci.yml +0 -0
  1393. /package/node_modules/{process-warning → baileys/node_modules/process-warning}/LICENSE +0 -0
  1394. /package/node_modules/{process-warning → baileys/node_modules/process-warning}/README.md +0 -0
  1395. /package/node_modules/{process-warning → baileys/node_modules/process-warning}/benchmarks/warn.js +0 -0
  1396. /package/node_modules/{process-warning → baileys/node_modules/process-warning}/eslint.config.js +0 -0
  1397. /package/node_modules/{process-warning → baileys/node_modules/process-warning}/examples/example.js +0 -0
  1398. /package/node_modules/{process-warning → baileys/node_modules/process-warning}/index.js +0 -0
  1399. /package/node_modules/{process-warning → baileys/node_modules/process-warning}/package.json +0 -0
  1400. /package/node_modules/{process-warning → baileys/node_modules/process-warning}/test/emit-interpolated-string.test.js +0 -0
  1401. /package/node_modules/{process-warning → baileys/node_modules/process-warning}/test/emit-once-only.test.js +0 -0
  1402. /package/node_modules/{process-warning → baileys/node_modules/process-warning}/test/emit-reset.test.js +0 -0
  1403. /package/node_modules/{process-warning → baileys/node_modules/process-warning}/test/emit-set.test.js +0 -0
  1404. /package/node_modules/{process-warning → baileys/node_modules/process-warning}/test/emit-unlimited.test.js +0 -0
  1405. /package/node_modules/{process-warning → baileys/node_modules/process-warning}/test/index.test.js +0 -0
  1406. /package/node_modules/{process-warning → baileys/node_modules/process-warning}/test/issue-88.test.js +0 -0
  1407. /package/node_modules/{process-warning → baileys/node_modules/process-warning}/test/jest.test.js +0 -0
  1408. /package/node_modules/{process-warning → baileys/node_modules/process-warning}/test/no-warnings.test.js +0 -0
  1409. /package/node_modules/{process-warning → baileys/node_modules/process-warning}/test/promise.js +0 -0
  1410. /package/node_modules/{process-warning → baileys/node_modules/process-warning}/types/index.d.ts +0 -0
  1411. /package/node_modules/{process-warning → baileys/node_modules/process-warning}/types/index.test-d.ts +0 -0
  1412. /package/node_modules/{protobufjs → baileys/node_modules/protobufjs}/LICENSE +0 -0
  1413. /package/node_modules/{protobufjs → baileys/node_modules/protobufjs}/README.md +0 -0
  1414. /package/node_modules/{protobufjs → baileys/node_modules/protobufjs}/ext/debug/README.md +0 -0
  1415. /package/node_modules/{protobufjs → baileys/node_modules/protobufjs}/ext/debug/index.js +0 -0
  1416. /package/node_modules/{protobufjs → baileys/node_modules/protobufjs}/ext/descriptor/README.md +0 -0
  1417. /package/node_modules/{protobufjs → baileys/node_modules/protobufjs}/ext/descriptor/index.d.ts +0 -0
  1418. /package/node_modules/{protobufjs → baileys/node_modules/protobufjs}/ext/descriptor/index.js +0 -0
  1419. /package/node_modules/{protobufjs → baileys/node_modules/protobufjs}/ext/descriptor/test.js +0 -0
  1420. /package/node_modules/{protobufjs → baileys/node_modules/protobufjs}/google/LICENSE +0 -0
  1421. /package/node_modules/{protobufjs → baileys/node_modules/protobufjs}/google/README.md +0 -0
  1422. /package/node_modules/{protobufjs → baileys/node_modules/protobufjs}/google/api/annotations.json +0 -0
  1423. /package/node_modules/{protobufjs → baileys/node_modules/protobufjs}/google/api/annotations.proto +0 -0
  1424. /package/node_modules/{protobufjs → baileys/node_modules/protobufjs}/google/api/http.json +0 -0
  1425. /package/node_modules/{protobufjs → baileys/node_modules/protobufjs}/google/api/http.proto +0 -0
  1426. /package/node_modules/{protobufjs → baileys/node_modules/protobufjs}/google/protobuf/api.json +0 -0
  1427. /package/node_modules/{protobufjs → baileys/node_modules/protobufjs}/google/protobuf/api.proto +0 -0
  1428. /package/node_modules/{protobufjs → baileys/node_modules/protobufjs}/google/protobuf/descriptor.json +0 -0
  1429. /package/node_modules/{protobufjs → baileys/node_modules/protobufjs}/google/protobuf/descriptor.proto +0 -0
  1430. /package/node_modules/{protobufjs → baileys/node_modules/protobufjs}/google/protobuf/source_context.json +0 -0
  1431. /package/node_modules/{protobufjs → baileys/node_modules/protobufjs}/google/protobuf/source_context.proto +0 -0
  1432. /package/node_modules/{protobufjs → baileys/node_modules/protobufjs}/google/protobuf/type.json +0 -0
  1433. /package/node_modules/{protobufjs → baileys/node_modules/protobufjs}/google/protobuf/type.proto +0 -0
  1434. /package/node_modules/{protobufjs → baileys/node_modules/protobufjs}/index.js +0 -0
  1435. /package/node_modules/{protobufjs → baileys/node_modules/protobufjs}/light.d.ts +0 -0
  1436. /package/node_modules/{protobufjs → baileys/node_modules/protobufjs}/light.js +0 -0
  1437. /package/node_modules/{protobufjs → baileys/node_modules/protobufjs}/minimal.d.ts +0 -0
  1438. /package/node_modules/{protobufjs → baileys/node_modules/protobufjs}/minimal.js +0 -0
  1439. /package/node_modules/{protobufjs → baileys/node_modules/protobufjs}/scripts/postinstall.js +0 -0
  1440. /package/node_modules/{protobufjs → baileys/node_modules/protobufjs}/src/common.js +0 -0
  1441. /package/node_modules/{protobufjs → baileys/node_modules/protobufjs}/src/converter.js +0 -0
  1442. /package/node_modules/{protobufjs → baileys/node_modules/protobufjs}/src/decoder.js +0 -0
  1443. /package/node_modules/{protobufjs → baileys/node_modules/protobufjs}/src/encoder.js +0 -0
  1444. /package/node_modules/{protobufjs → baileys/node_modules/protobufjs}/src/enum.js +0 -0
  1445. /package/node_modules/{protobufjs → baileys/node_modules/protobufjs}/src/field.js +0 -0
  1446. /package/node_modules/{protobufjs → baileys/node_modules/protobufjs}/src/index-light.js +0 -0
  1447. /package/node_modules/{protobufjs → baileys/node_modules/protobufjs}/src/index-minimal.js +0 -0
  1448. /package/node_modules/{protobufjs → baileys/node_modules/protobufjs}/src/index.js +0 -0
  1449. /package/node_modules/{protobufjs → baileys/node_modules/protobufjs}/src/mapfield.js +0 -0
  1450. /package/node_modules/{protobufjs → baileys/node_modules/protobufjs}/src/message.js +0 -0
  1451. /package/node_modules/{protobufjs → baileys/node_modules/protobufjs}/src/method.js +0 -0
  1452. /package/node_modules/{protobufjs → baileys/node_modules/protobufjs}/src/namespace.js +0 -0
  1453. /package/node_modules/{protobufjs → baileys/node_modules/protobufjs}/src/object.js +0 -0
  1454. /package/node_modules/{protobufjs → baileys/node_modules/protobufjs}/src/oneof.js +0 -0
  1455. /package/node_modules/{protobufjs → baileys/node_modules/protobufjs}/src/reader.js +0 -0
  1456. /package/node_modules/{protobufjs → baileys/node_modules/protobufjs}/src/reader_buffer.js +0 -0
  1457. /package/node_modules/{protobufjs → baileys/node_modules/protobufjs}/src/root.js +0 -0
  1458. /package/node_modules/{protobufjs → baileys/node_modules/protobufjs}/src/roots.js +0 -0
  1459. /package/node_modules/{protobufjs → baileys/node_modules/protobufjs}/src/rpc/service.js +0 -0
  1460. /package/node_modules/{protobufjs → baileys/node_modules/protobufjs}/src/rpc.js +0 -0
  1461. /package/node_modules/{protobufjs → baileys/node_modules/protobufjs}/src/service.js +0 -0
  1462. /package/node_modules/{protobufjs → baileys/node_modules/protobufjs}/src/tokenize.js +0 -0
  1463. /package/node_modules/{protobufjs → baileys/node_modules/protobufjs}/src/type.js +0 -0
  1464. /package/node_modules/{protobufjs → baileys/node_modules/protobufjs}/src/types.js +0 -0
  1465. /package/node_modules/{protobufjs → baileys/node_modules/protobufjs}/src/typescript.jsdoc +0 -0
  1466. /package/node_modules/{protobufjs → baileys/node_modules/protobufjs}/src/util/fs.js +0 -0
  1467. /package/node_modules/{protobufjs → baileys/node_modules/protobufjs}/src/util/longbits.js +0 -0
  1468. /package/node_modules/{protobufjs → baileys/node_modules/protobufjs}/src/util/patterns.js +0 -0
  1469. /package/node_modules/{protobufjs → baileys/node_modules/protobufjs}/src/util.js +0 -0
  1470. /package/node_modules/{protobufjs → baileys/node_modules/protobufjs}/src/verifier.js +0 -0
  1471. /package/node_modules/{protobufjs → baileys/node_modules/protobufjs}/src/wrappers.js +0 -0
  1472. /package/node_modules/{protobufjs → baileys/node_modules/protobufjs}/src/writer.js +0 -0
  1473. /package/node_modules/{protobufjs → baileys/node_modules/protobufjs}/src/writer_buffer.js +0 -0
  1474. /package/node_modules/{protobufjs → baileys/node_modules/protobufjs}/tsconfig.json +0 -0
  1475. /package/node_modules/{qified → baileys/node_modules/qified}/LICENSE +0 -0
  1476. /package/node_modules/{qified → baileys/node_modules/qified}/README.md +0 -0
  1477. /package/node_modules/{qified → baileys/node_modules/qified}/dist/index.cjs +0 -0
  1478. /package/node_modules/{qified → baileys/node_modules/qified}/dist/index.d.cts +0 -0
  1479. /package/node_modules/{qified → baileys/node_modules/qified}/dist/index.d.mts +0 -0
  1480. /package/node_modules/{qified → baileys/node_modules/qified}/dist/index.mjs +0 -0
  1481. /package/node_modules/{qified → baileys/node_modules/qified}/node_modules/hookified/LICENSE +0 -0
  1482. /package/node_modules/{qified → baileys/node_modules/qified}/node_modules/hookified/README.md +0 -0
  1483. /package/node_modules/{qified → baileys/node_modules/qified}/node_modules/hookified/dist/browser/index.global.js +0 -0
  1484. /package/node_modules/{qified → baileys/node_modules/qified}/node_modules/hookified/dist/browser/index.global.js.map +0 -0
  1485. /package/node_modules/{qified → baileys/node_modules/qified}/node_modules/hookified/dist/browser/index.js +0 -0
  1486. /package/node_modules/{qified → baileys/node_modules/qified}/node_modules/hookified/dist/browser/index.js.map +0 -0
  1487. /package/node_modules/{qified → baileys/node_modules/qified}/node_modules/hookified/dist/node/index.cjs +0 -0
  1488. /package/node_modules/{qified → baileys/node_modules/qified}/node_modules/hookified/dist/node/index.d.cts +0 -0
  1489. /package/node_modules/{qified → baileys/node_modules/qified}/node_modules/hookified/dist/node/index.d.ts +0 -0
  1490. /package/node_modules/{qified → baileys/node_modules/qified}/node_modules/hookified/dist/node/index.js +0 -0
  1491. /package/node_modules/{qified → baileys/node_modules/qified}/node_modules/hookified/package.json +0 -0
  1492. /package/node_modules/{qified → baileys/node_modules/qified}/package.json +0 -0
  1493. /package/node_modules/{quick-format-unescaped → baileys/node_modules/quick-format-unescaped}/.github/workflows/ci.yml +0 -0
  1494. /package/node_modules/{quick-format-unescaped → baileys/node_modules/quick-format-unescaped}/LICENSE +0 -0
  1495. /package/node_modules/{quick-format-unescaped → baileys/node_modules/quick-format-unescaped}/benchmark.js +0 -0
  1496. /package/node_modules/{quick-format-unescaped → baileys/node_modules/quick-format-unescaped}/index.js +0 -0
  1497. /package/node_modules/{quick-format-unescaped → baileys/node_modules/quick-format-unescaped}/package.json +0 -0
  1498. /package/node_modules/{quick-format-unescaped → baileys/node_modules/quick-format-unescaped}/readme.md +0 -0
  1499. /package/node_modules/{quick-format-unescaped → baileys/node_modules/quick-format-unescaped}/test/index.js +0 -0
  1500. /package/node_modules/{real-require → baileys/node_modules/real-require}/LICENSE.md +0 -0
  1501. /package/node_modules/{real-require → baileys/node_modules/real-require}/README.md +0 -0
  1502. /package/node_modules/{real-require → baileys/node_modules/real-require}/package.json +0 -0
  1503. /package/node_modules/{real-require → baileys/node_modules/real-require}/src/index.js +0 -0
  1504. /package/node_modules/{safe-stable-stringify → baileys/node_modules/safe-stable-stringify}/LICENSE +0 -0
  1505. /package/node_modules/{safe-stable-stringify → baileys/node_modules/safe-stable-stringify}/esm/package.json +0 -0
  1506. /package/node_modules/{safe-stable-stringify → baileys/node_modules/safe-stable-stringify}/esm/wrapper.d.ts +0 -0
  1507. /package/node_modules/{safe-stable-stringify → baileys/node_modules/safe-stable-stringify}/esm/wrapper.js +0 -0
  1508. /package/node_modules/{safe-stable-stringify → baileys/node_modules/safe-stable-stringify}/index.d.ts +0 -0
  1509. /package/node_modules/{safe-stable-stringify → baileys/node_modules/safe-stable-stringify}/index.js +0 -0
  1510. /package/node_modules/{safe-stable-stringify → baileys/node_modules/safe-stable-stringify}/package.json +0 -0
  1511. /package/node_modules/{safe-stable-stringify → baileys/node_modules/safe-stable-stringify}/readme.md +0 -0
  1512. /package/node_modules/{sonic-boom → baileys/node_modules/sonic-boom}/.eslintignore +0 -0
  1513. /package/node_modules/{sonic-boom → baileys/node_modules/sonic-boom}/.taprc +0 -0
  1514. /package/node_modules/{sonic-boom → baileys/node_modules/sonic-boom}/LICENSE +0 -0
  1515. /package/node_modules/{sonic-boom → baileys/node_modules/sonic-boom}/README.md +0 -0
  1516. /package/node_modules/{sonic-boom → baileys/node_modules/sonic-boom}/bench.js +0 -0
  1517. /package/node_modules/{sonic-boom → baileys/node_modules/sonic-boom}/check.js +0 -0
  1518. /package/node_modules/{sonic-boom → baileys/node_modules/sonic-boom}/example.js +0 -0
  1519. /package/node_modules/{sonic-boom → baileys/node_modules/sonic-boom}/fixtures/firehose.js +0 -0
  1520. /package/node_modules/{sonic-boom → baileys/node_modules/sonic-boom}/index.js +0 -0
  1521. /package/node_modules/{sonic-boom → baileys/node_modules/sonic-boom}/package.json +0 -0
  1522. /package/node_modules/{sonic-boom → baileys/node_modules/sonic-boom}/test/destroy.test.js +0 -0
  1523. /package/node_modules/{sonic-boom → baileys/node_modules/sonic-boom}/test/end.test.js +0 -0
  1524. /package/node_modules/{sonic-boom → baileys/node_modules/sonic-boom}/test/flush-sync.test.js +0 -0
  1525. /package/node_modules/{sonic-boom → baileys/node_modules/sonic-boom}/test/flush.test.js +0 -0
  1526. /package/node_modules/{sonic-boom → baileys/node_modules/sonic-boom}/test/fsync.test.js +0 -0
  1527. /package/node_modules/{sonic-boom → baileys/node_modules/sonic-boom}/test/helper.js +0 -0
  1528. /package/node_modules/{sonic-boom → baileys/node_modules/sonic-boom}/test/minlength.test.js +0 -0
  1529. /package/node_modules/{sonic-boom → baileys/node_modules/sonic-boom}/test/mode.test.js +0 -0
  1530. /package/node_modules/{sonic-boom → baileys/node_modules/sonic-boom}/test/periodicflush.test.js +0 -0
  1531. /package/node_modules/{sonic-boom → baileys/node_modules/sonic-boom}/test/reopen.test.js +0 -0
  1532. /package/node_modules/{sonic-boom → baileys/node_modules/sonic-boom}/test/retry.test.js +0 -0
  1533. /package/node_modules/{sonic-boom → baileys/node_modules/sonic-boom}/test/sync.test.js +0 -0
  1534. /package/node_modules/{sonic-boom → baileys/node_modules/sonic-boom}/test/write.test.js +0 -0
  1535. /package/node_modules/{sonic-boom → baileys/node_modules/sonic-boom}/types/index.d.ts +0 -0
  1536. /package/node_modules/{sonic-boom → baileys/node_modules/sonic-boom}/types/tests/test.ts +0 -0
  1537. /package/node_modules/{split2 → baileys/node_modules/split2}/LICENSE +0 -0
  1538. /package/node_modules/{split2 → baileys/node_modules/split2}/README.md +0 -0
  1539. /package/node_modules/{split2 → baileys/node_modules/split2}/bench.js +0 -0
  1540. /package/node_modules/{split2 → baileys/node_modules/split2}/index.js +0 -0
  1541. /package/node_modules/{split2 → baileys/node_modules/split2}/package.json +0 -0
  1542. /package/node_modules/{split2 → baileys/node_modules/split2}/test.js +0 -0
  1543. /package/node_modules/{strtok3 → baileys/node_modules/strtok3}/LICENSE.txt +0 -0
  1544. /package/node_modules/{strtok3 → baileys/node_modules/strtok3}/README.md +0 -0
  1545. /package/node_modules/{strtok3 → baileys/node_modules/strtok3}/lib/AbstractTokenizer.d.ts +0 -0
  1546. /package/node_modules/{strtok3 → baileys/node_modules/strtok3}/lib/AbstractTokenizer.js +0 -0
  1547. /package/node_modules/{strtok3 → baileys/node_modules/strtok3}/lib/BlobTokenizer.d.ts +0 -0
  1548. /package/node_modules/{strtok3 → baileys/node_modules/strtok3}/lib/BlobTokenizer.js +0 -0
  1549. /package/node_modules/{strtok3 → baileys/node_modules/strtok3}/lib/BufferTokenizer.d.ts +0 -0
  1550. /package/node_modules/{strtok3 → baileys/node_modules/strtok3}/lib/BufferTokenizer.js +0 -0
  1551. /package/node_modules/{strtok3 → baileys/node_modules/strtok3}/lib/FileTokenizer.d.ts +0 -0
  1552. /package/node_modules/{strtok3 → baileys/node_modules/strtok3}/lib/FileTokenizer.js +0 -0
  1553. /package/node_modules/{strtok3 → baileys/node_modules/strtok3}/lib/ReadStreamTokenizer.d.ts +0 -0
  1554. /package/node_modules/{strtok3 → baileys/node_modules/strtok3}/lib/ReadStreamTokenizer.js +0 -0
  1555. /package/node_modules/{strtok3 → baileys/node_modules/strtok3}/lib/core.d.ts +0 -0
  1556. /package/node_modules/{strtok3 → baileys/node_modules/strtok3}/lib/core.js +0 -0
  1557. /package/node_modules/{strtok3 → baileys/node_modules/strtok3}/lib/index.d.ts +0 -0
  1558. /package/node_modules/{strtok3 → baileys/node_modules/strtok3}/lib/index.js +0 -0
  1559. /package/node_modules/{strtok3 → baileys/node_modules/strtok3}/lib/stream/AbstractStreamReader.d.ts +0 -0
  1560. /package/node_modules/{strtok3 → baileys/node_modules/strtok3}/lib/stream/AbstractStreamReader.js +0 -0
  1561. /package/node_modules/{strtok3 → baileys/node_modules/strtok3}/lib/stream/Deferred.d.ts +0 -0
  1562. /package/node_modules/{strtok3 → baileys/node_modules/strtok3}/lib/stream/Deferred.js +0 -0
  1563. /package/node_modules/{strtok3 → baileys/node_modules/strtok3}/lib/stream/Errors.d.ts +0 -0
  1564. /package/node_modules/{strtok3 → baileys/node_modules/strtok3}/lib/stream/Errors.js +0 -0
  1565. /package/node_modules/{strtok3 → baileys/node_modules/strtok3}/lib/stream/StreamReader.d.ts +0 -0
  1566. /package/node_modules/{strtok3 → baileys/node_modules/strtok3}/lib/stream/StreamReader.js +0 -0
  1567. /package/node_modules/{strtok3 → baileys/node_modules/strtok3}/lib/stream/WebStreamByobReader.d.ts +0 -0
  1568. /package/node_modules/{strtok3 → baileys/node_modules/strtok3}/lib/stream/WebStreamByobReader.js +0 -0
  1569. /package/node_modules/{strtok3 → baileys/node_modules/strtok3}/lib/stream/WebStreamDefaultReader.d.ts +0 -0
  1570. /package/node_modules/{strtok3 → baileys/node_modules/strtok3}/lib/stream/WebStreamDefaultReader.js +0 -0
  1571. /package/node_modules/{strtok3 → baileys/node_modules/strtok3}/lib/stream/WebStreamReader.d.ts +0 -0
  1572. /package/node_modules/{strtok3 → baileys/node_modules/strtok3}/lib/stream/WebStreamReader.js +0 -0
  1573. /package/node_modules/{strtok3 → baileys/node_modules/strtok3}/lib/stream/WebStreamReaderFactory.d.ts +0 -0
  1574. /package/node_modules/{strtok3 → baileys/node_modules/strtok3}/lib/stream/WebStreamReaderFactory.js +0 -0
  1575. /package/node_modules/{strtok3 → baileys/node_modules/strtok3}/lib/stream/index.d.ts +0 -0
  1576. /package/node_modules/{strtok3 → baileys/node_modules/strtok3}/lib/stream/index.js +0 -0
  1577. /package/node_modules/{strtok3 → baileys/node_modules/strtok3}/lib/types.d.ts +0 -0
  1578. /package/node_modules/{strtok3 → baileys/node_modules/strtok3}/lib/types.js +0 -0
  1579. /package/node_modules/{strtok3 → baileys/node_modules/strtok3}/package.json +0 -0
  1580. /package/node_modules/{thread-stream → baileys/node_modules/thread-stream}/.claude/settings.local.json +0 -0
  1581. /package/node_modules/{thread-stream → baileys/node_modules/thread-stream}/.github/dependabot.yml +0 -0
  1582. /package/node_modules/{thread-stream → baileys/node_modules/thread-stream}/.github/workflows/ci.yml +0 -0
  1583. /package/node_modules/{thread-stream → baileys/node_modules/thread-stream}/.husky/pre-commit +0 -0
  1584. /package/node_modules/{thread-stream → baileys/node_modules/thread-stream}/.taprc +0 -0
  1585. /package/node_modules/{thread-stream → baileys/node_modules/thread-stream}/CLAUDE.md +0 -0
  1586. /package/node_modules/{thread-stream → baileys/node_modules/thread-stream}/LICENSE +0 -0
  1587. /package/node_modules/{thread-stream → baileys/node_modules/thread-stream}/README.md +0 -0
  1588. /package/node_modules/{thread-stream → baileys/node_modules/thread-stream}/bench.js +0 -0
  1589. /package/node_modules/{thread-stream → baileys/node_modules/thread-stream}/index.d.ts +0 -0
  1590. /package/node_modules/{thread-stream → baileys/node_modules/thread-stream}/index.js +0 -0
  1591. /package/node_modules/{thread-stream → baileys/node_modules/thread-stream}/lib/indexes.js +0 -0
  1592. /package/node_modules/{thread-stream → baileys/node_modules/thread-stream}/lib/wait.js +0 -0
  1593. /package/node_modules/{thread-stream → baileys/node_modules/thread-stream}/lib/worker.js +0 -0
  1594. /package/node_modules/{thread-stream → baileys/node_modules/thread-stream}/package.json +0 -0
  1595. /package/node_modules/{thread-stream → baileys/node_modules/thread-stream}/test/base.test.js +0 -0
  1596. /package/node_modules/{thread-stream → baileys/node_modules/thread-stream}/test/bench.test.js +0 -0
  1597. /package/node_modules/{thread-stream → baileys/node_modules/thread-stream}/test/bundlers.test.js +0 -0
  1598. /package/node_modules/{thread-stream → baileys/node_modules/thread-stream}/test/close-on-gc.js +0 -0
  1599. /package/node_modules/{thread-stream → baileys/node_modules/thread-stream}/test/commonjs-fallback.test.js +0 -0
  1600. /package/node_modules/{thread-stream → baileys/node_modules/thread-stream}/test/context.test.js +0 -0
  1601. /package/node_modules/{thread-stream → baileys/node_modules/thread-stream}/test/create-and-exit.js +0 -0
  1602. /package/node_modules/{thread-stream → baileys/node_modules/thread-stream}/test/custom-worker.js +0 -0
  1603. /package/node_modules/{thread-stream → baileys/node_modules/thread-stream}/test/dir with spaces/test-package.zip +0 -0
  1604. /package/node_modules/{thread-stream → baileys/node_modules/thread-stream}/test/emit-event.js +0 -0
  1605. /package/node_modules/{thread-stream → baileys/node_modules/thread-stream}/test/end.test.js +0 -0
  1606. /package/node_modules/{thread-stream → baileys/node_modules/thread-stream}/test/error.js +0 -0
  1607. /package/node_modules/{thread-stream → baileys/node_modules/thread-stream}/test/esm.test.mjs +0 -0
  1608. /package/node_modules/{thread-stream → baileys/node_modules/thread-stream}/test/event.test.js +0 -0
  1609. /package/node_modules/{thread-stream → baileys/node_modules/thread-stream}/test/exit.js +0 -0
  1610. /package/node_modules/{thread-stream → baileys/node_modules/thread-stream}/test/get-context.js +0 -0
  1611. /package/node_modules/{thread-stream → baileys/node_modules/thread-stream}/test/helper.d.ts +0 -0
  1612. /package/node_modules/{thread-stream → baileys/node_modules/thread-stream}/test/helper.js +0 -0
  1613. /package/node_modules/{thread-stream → baileys/node_modules/thread-stream}/test/indexes.test.js +0 -0
  1614. /package/node_modules/{thread-stream → baileys/node_modules/thread-stream}/test/message-without-code.js +0 -0
  1615. /package/node_modules/{thread-stream → baileys/node_modules/thread-stream}/test/multibyte-chars.test.mjs +0 -0
  1616. /package/node_modules/{thread-stream → baileys/node_modules/thread-stream}/test/never-drain.test.js +0 -0
  1617. /package/node_modules/{thread-stream → baileys/node_modules/thread-stream}/test/on-message.js +0 -0
  1618. /package/node_modules/{thread-stream → baileys/node_modules/thread-stream}/test/pkg/index.js +0 -0
  1619. /package/node_modules/{thread-stream → baileys/node_modules/thread-stream}/test/pkg/pkg.config.json +0 -0
  1620. /package/node_modules/{thread-stream → baileys/node_modules/thread-stream}/test/pkg/pkg.test.js +0 -0
  1621. /package/node_modules/{thread-stream → baileys/node_modules/thread-stream}/test/port.js +0 -0
  1622. /package/node_modules/{thread-stream → baileys/node_modules/thread-stream}/test/post-message.test.js +0 -0
  1623. /package/node_modules/{thread-stream → baileys/node_modules/thread-stream}/test/string-limit-2.test.js +0 -0
  1624. /package/node_modules/{thread-stream → baileys/node_modules/thread-stream}/test/string-limit.test.js +0 -0
  1625. /package/node_modules/{thread-stream → baileys/node_modules/thread-stream}/test/syntax-error.mjs +0 -0
  1626. /package/node_modules/{thread-stream → baileys/node_modules/thread-stream}/test/thread-management.test.js +0 -0
  1627. /package/node_modules/{thread-stream → baileys/node_modules/thread-stream}/test/to-file-on-destroy.js +0 -0
  1628. /package/node_modules/{thread-stream → baileys/node_modules/thread-stream}/test/to-file-on-final.js +0 -0
  1629. /package/node_modules/{thread-stream → baileys/node_modules/thread-stream}/test/to-file.js +0 -0
  1630. /package/node_modules/{thread-stream → baileys/node_modules/thread-stream}/test/to-file.mjs +0 -0
  1631. /package/node_modules/{thread-stream → baileys/node_modules/thread-stream}/test/to-next.js +0 -0
  1632. /package/node_modules/{thread-stream → baileys/node_modules/thread-stream}/test/transpiled.test.js +0 -0
  1633. /package/node_modules/{thread-stream → baileys/node_modules/thread-stream}/test/ts/to-file.ts +0 -0
  1634. /package/node_modules/{thread-stream → baileys/node_modules/thread-stream}/test/ts/transpile.sh +0 -0
  1635. /package/node_modules/{thread-stream → baileys/node_modules/thread-stream}/test/ts-commonjs-default-export.zip +0 -0
  1636. /package/node_modules/{thread-stream → baileys/node_modules/thread-stream}/test/ts.test.ts +0 -0
  1637. /package/node_modules/{thread-stream → baileys/node_modules/thread-stream}/test/uncaughtException.js +0 -0
  1638. /package/node_modules/{thread-stream → baileys/node_modules/thread-stream}/test/unhandledRejection.js +0 -0
  1639. /package/node_modules/{thread-stream → baileys/node_modules/thread-stream}/test/watch-mode.test.js +0 -0
  1640. /package/node_modules/{thread-stream → baileys/node_modules/thread-stream}/test/yarnrc.yml +0 -0
  1641. /package/node_modules/{thread-stream → baileys/node_modules/thread-stream}/tsconfig.json +0 -0
  1642. /package/node_modules/{token-types → baileys/node_modules/token-types}/LICENSE.txt +0 -0
  1643. /package/node_modules/{token-types → baileys/node_modules/token-types}/README.md +0 -0
  1644. /package/node_modules/{token-types → baileys/node_modules/token-types}/lib/index.d.ts +0 -0
  1645. /package/node_modules/{token-types → baileys/node_modules/token-types}/lib/index.js +0 -0
  1646. /package/node_modules/{token-types → baileys/node_modules/token-types}/package.json +0 -0
  1647. /package/node_modules/{tslib → baileys/node_modules/tslib}/CopyrightNotice.txt +0 -0
  1648. /package/node_modules/{tslib → baileys/node_modules/tslib}/LICENSE.txt +0 -0
  1649. /package/node_modules/{tslib → baileys/node_modules/tslib}/README.md +0 -0
  1650. /package/node_modules/{tslib → baileys/node_modules/tslib}/SECURITY.md +0 -0
  1651. /package/node_modules/{tslib → baileys/node_modules/tslib}/modules/index.d.ts +0 -0
  1652. /package/node_modules/{tslib → baileys/node_modules/tslib}/modules/index.js +0 -0
  1653. /package/node_modules/{tslib → baileys/node_modules/tslib}/modules/package.json +0 -0
  1654. /package/node_modules/{tslib → baileys/node_modules/tslib}/package.json +0 -0
  1655. /package/node_modules/{tslib → baileys/node_modules/tslib}/tslib.d.ts +0 -0
  1656. /package/node_modules/{tslib → baileys/node_modules/tslib}/tslib.es6.html +0 -0
  1657. /package/node_modules/{tslib → baileys/node_modules/tslib}/tslib.es6.js +0 -0
  1658. /package/node_modules/{tslib → baileys/node_modules/tslib}/tslib.es6.mjs +0 -0
  1659. /package/node_modules/{tslib → baileys/node_modules/tslib}/tslib.html +0 -0
  1660. /package/node_modules/{tslib → baileys/node_modules/tslib}/tslib.js +0 -0
  1661. /package/node_modules/{uint8array-extras → baileys/node_modules/uint8array-extras}/index.d.ts +0 -0
  1662. /package/node_modules/{uint8array-extras → baileys/node_modules/uint8array-extras}/index.js +0 -0
  1663. /package/node_modules/{uint8array-extras → baileys/node_modules/uint8array-extras}/license +0 -0
  1664. /package/node_modules/{uint8array-extras → baileys/node_modules/uint8array-extras}/package.json +0 -0
  1665. /package/node_modules/{uint8array-extras → baileys/node_modules/uint8array-extras}/readme.md +0 -0
  1666. /package/node_modules/{undici-types → baileys/node_modules/undici-types}/LICENSE +0 -0
  1667. /package/node_modules/{undici-types → baileys/node_modules/undici-types}/README.md +0 -0
  1668. /package/node_modules/{undici-types → baileys/node_modules/undici-types}/agent.d.ts +0 -0
  1669. /package/node_modules/{undici-types → baileys/node_modules/undici-types}/api.d.ts +0 -0
  1670. /package/node_modules/{undici-types → baileys/node_modules/undici-types}/balanced-pool.d.ts +0 -0
  1671. /package/node_modules/{undici-types → baileys/node_modules/undici-types}/cache-interceptor.d.ts +0 -0
  1672. /package/node_modules/{undici-types → baileys/node_modules/undici-types}/cache.d.ts +0 -0
  1673. /package/node_modules/{undici-types → baileys/node_modules/undici-types}/client-stats.d.ts +0 -0
  1674. /package/node_modules/{undici-types → baileys/node_modules/undici-types}/client.d.ts +0 -0
  1675. /package/node_modules/{undici-types → baileys/node_modules/undici-types}/connector.d.ts +0 -0
  1676. /package/node_modules/{undici-types → baileys/node_modules/undici-types}/content-type.d.ts +0 -0
  1677. /package/node_modules/{undici-types → baileys/node_modules/undici-types}/cookies.d.ts +0 -0
  1678. /package/node_modules/{undici-types → baileys/node_modules/undici-types}/diagnostics-channel.d.ts +0 -0
  1679. /package/node_modules/{undici-types → baileys/node_modules/undici-types}/dispatcher.d.ts +0 -0
  1680. /package/node_modules/{undici-types → baileys/node_modules/undici-types}/dispatcher1-wrapper.d.ts +0 -0
  1681. /package/node_modules/{undici-types → baileys/node_modules/undici-types}/env-http-proxy-agent.d.ts +0 -0
  1682. /package/node_modules/{undici-types → baileys/node_modules/undici-types}/errors.d.ts +0 -0
  1683. /package/node_modules/{undici-types → baileys/node_modules/undici-types}/eventsource.d.ts +0 -0
  1684. /package/node_modules/{undici-types → baileys/node_modules/undici-types}/fetch.d.ts +0 -0
  1685. /package/node_modules/{undici-types → baileys/node_modules/undici-types}/formdata.d.ts +0 -0
  1686. /package/node_modules/{undici-types → baileys/node_modules/undici-types}/global-dispatcher.d.ts +0 -0
  1687. /package/node_modules/{undici-types → baileys/node_modules/undici-types}/global-origin.d.ts +0 -0
  1688. /package/node_modules/{undici-types → baileys/node_modules/undici-types}/h2c-client.d.ts +0 -0
  1689. /package/node_modules/{undici-types → baileys/node_modules/undici-types}/handlers.d.ts +0 -0
  1690. /package/node_modules/{undici-types → baileys/node_modules/undici-types}/header.d.ts +0 -0
  1691. /package/node_modules/{undici-types → baileys/node_modules/undici-types}/index.d.ts +0 -0
  1692. /package/node_modules/{undici-types → baileys/node_modules/undici-types}/interceptors.d.ts +0 -0
  1693. /package/node_modules/{undici-types → baileys/node_modules/undici-types}/mock-agent.d.ts +0 -0
  1694. /package/node_modules/{undici-types → baileys/node_modules/undici-types}/mock-call-history.d.ts +0 -0
  1695. /package/node_modules/{undici-types → baileys/node_modules/undici-types}/mock-client.d.ts +0 -0
  1696. /package/node_modules/{undici-types → baileys/node_modules/undici-types}/mock-errors.d.ts +0 -0
  1697. /package/node_modules/{undici-types → baileys/node_modules/undici-types}/mock-interceptor.d.ts +0 -0
  1698. /package/node_modules/{undici-types → baileys/node_modules/undici-types}/mock-pool.d.ts +0 -0
  1699. /package/node_modules/{undici-types → baileys/node_modules/undici-types}/package.json +0 -0
  1700. /package/node_modules/{undici-types → baileys/node_modules/undici-types}/patch.d.ts +0 -0
  1701. /package/node_modules/{undici-types → baileys/node_modules/undici-types}/pool-stats.d.ts +0 -0
  1702. /package/node_modules/{undici-types → baileys/node_modules/undici-types}/pool.d.ts +0 -0
  1703. /package/node_modules/{undici-types → baileys/node_modules/undici-types}/proxy-agent.d.ts +0 -0
  1704. /package/node_modules/{undici-types → baileys/node_modules/undici-types}/readable.d.ts +0 -0
  1705. /package/node_modules/{undici-types → baileys/node_modules/undici-types}/retry-agent.d.ts +0 -0
  1706. /package/node_modules/{undici-types → baileys/node_modules/undici-types}/retry-handler.d.ts +0 -0
  1707. /package/node_modules/{undici-types → baileys/node_modules/undici-types}/round-robin-pool.d.ts +0 -0
  1708. /package/node_modules/{undici-types → baileys/node_modules/undici-types}/snapshot-agent.d.ts +0 -0
  1709. /package/node_modules/{undici-types → baileys/node_modules/undici-types}/socks5-proxy-agent.d.ts +0 -0
  1710. /package/node_modules/{undici-types → baileys/node_modules/undici-types}/util.d.ts +0 -0
  1711. /package/node_modules/{undici-types → baileys/node_modules/undici-types}/utility.d.ts +0 -0
  1712. /package/node_modules/{undici-types → baileys/node_modules/undici-types}/webidl.d.ts +0 -0
  1713. /package/node_modules/{undici-types → baileys/node_modules/undici-types}/websocket.d.ts +0 -0
  1714. /package/node_modules/{whatsapp-rust-bridge → baileys/node_modules/whatsapp-rust-bridge}/README.md +0 -0
  1715. /package/node_modules/{whatsapp-rust-bridge → baileys/node_modules/whatsapp-rust-bridge}/dist/index.d.ts +0 -0
  1716. /package/node_modules/{whatsapp-rust-bridge → baileys/node_modules/whatsapp-rust-bridge}/dist/index.js +0 -0
  1717. /package/node_modules/{whatsapp-rust-bridge → baileys/node_modules/whatsapp-rust-bridge}/package.json +0 -0
  1718. /package/node_modules/{whatsapp-rust-bridge → baileys/node_modules/whatsapp-rust-bridge}/pkg/whatsapp_rust_bridge.d.ts +0 -0
  1719. /package/node_modules/{win-guid → baileys/node_modules/win-guid}/LICENSE.txt +0 -0
  1720. /package/node_modules/{win-guid → baileys/node_modules/win-guid}/README.md +0 -0
  1721. /package/node_modules/{win-guid → baileys/node_modules/win-guid}/lib/guid.d.ts +0 -0
  1722. /package/node_modules/{win-guid → baileys/node_modules/win-guid}/lib/guid.js +0 -0
  1723. /package/node_modules/{win-guid → baileys/node_modules/win-guid}/package.json +0 -0
  1724. /package/node_modules/{ws → baileys/node_modules/ws}/LICENSE +0 -0
  1725. /package/node_modules/{ws → baileys/node_modules/ws}/README.md +0 -0
  1726. /package/node_modules/{ws → baileys/node_modules/ws}/browser.js +0 -0
  1727. /package/node_modules/{ws → baileys/node_modules/ws}/index.js +0 -0
  1728. /package/node_modules/{ws → baileys/node_modules/ws}/lib/buffer-util.js +0 -0
  1729. /package/node_modules/{ws → baileys/node_modules/ws}/lib/constants.js +0 -0
  1730. /package/node_modules/{ws → baileys/node_modules/ws}/lib/event-target.js +0 -0
  1731. /package/node_modules/{ws → baileys/node_modules/ws}/lib/extension.js +0 -0
  1732. /package/node_modules/{ws → baileys/node_modules/ws}/lib/limiter.js +0 -0
  1733. /package/node_modules/{ws → baileys/node_modules/ws}/lib/receiver.js +0 -0
  1734. /package/node_modules/{ws → baileys/node_modules/ws}/lib/sender.js +0 -0
  1735. /package/node_modules/{ws → baileys/node_modules/ws}/lib/stream.js +0 -0
  1736. /package/node_modules/{ws → baileys/node_modules/ws}/lib/subprotocol.js +0 -0
  1737. /package/node_modules/{ws → baileys/node_modules/ws}/lib/validation.js +0 -0
  1738. /package/node_modules/{ws → baileys/node_modules/ws}/lib/websocket-server.js +0 -0
  1739. /package/node_modules/{ws → baileys/node_modules/ws}/lib/websocket.js +0 -0
  1740. /package/node_modules/{ws → baileys/node_modules/ws}/wrapper.mjs +0 -0
@@ -1,4379 +0,0 @@
1
- import { a as resolveWhatsAppAccount, s as resolveWhatsAppMediaMaxBytes } from "./accounts-CSqLvCY5.js";
2
- import { a as normalizeWhatsAppOutboundPayload, c as prepareWhatsAppOutboundMedia, r as sendReactionWhatsApp, s as normalizeWhatsAppPayloadTextPreservingIndentation, u as resolveWhatsAppReactionLevel } from "./send-BTXJAyK4.js";
3
- import { i as getWhatsAppRuntime } from "./runtime-BLlToOi6.js";
4
- import { r as getWhatsAppConnectionController } from "./connection-controller-runtime-context-DG0tuYuw.js";
5
- import { a as markdownToWhatsAppChunks, c as toWhatsappJid, l as toWhatsappJidWithLid, n as isSelfChatMode, o as resolveEquivalentWhatsAppDirectChatJids, r as jidToE164, s as resolveJidToE164 } from "./targets-runtime-TMk0lGuy.js";
6
- import { t as normalizeE164 } from "./text-runtime-CaKLhowd.js";
7
- import { a as cacheInboundMessageMeta, i as buildQuotedMessageOptions, n as resolveWhatsAppGroupSessionRoute, o as lookupInboundMessageMeta, r as resolveWhatsAppLegacyGroupSessionKey } from "./group-session-key-DVMZlO3x.js";
8
- import { g as readWebSelfId, o as getWebAuthAgeMs, r as WhatsAppAuthUnstableError, v as readWebSelfIdentityForDecision } from "./auth-store-DcEpIOmE.js";
9
- import { a as getSelfIdentity, c as resolveComparableIdentity, i as getReplyContext, n as getMentionIdentities, o as getSenderIdentity, r as getPrimaryIdentityId, s as identitiesOverlap, t as getComparableIdentityValues } from "./identity-CPrT5aEU.js";
10
- import { n as resolveWhatsAppGroupsConfigPath } from "./group-config-path-BGyzT9Lg.js";
11
- import { a as waitForWaConnection, c as isWhatsAppSocketOperationTimeoutError, d as withWhatsAppSocketOperationTimeout, l as resolveWhatsAppSocketOperationTimeoutMs, r as createWaSocket, s as createWhatsAppSocketOperationTimeoutAdapter, u as resolveWhatsAppSocketTiming } from "./socket-close-DridEuzz.js";
12
- import { n as getStatusCode, t as formatError } from "./session-errors-JuazczrA.js";
13
- import { t as BufferJSON } from "./session.runtime-Nsqaehbd.js";
14
- import { c as requireWhatsAppInboundAdmission, i as resolveWhatsAppInboundPolicy, l as resolveWhatsAppGroupConversationId, o as buildDeprecatedFlatWhatsAppInboundAdmission, r as resolveWhatsAppCommandAuthorized, s as requireAdmittedWhatsAppInboundMessage, t as checkInboundAccessControl } from "./access-control-pZcxTmd5.js";
15
- import { _ as extractMediaKind, a as mayContainWhatsAppOutboundMention, b as hasInboundUserContent, c as DisconnectReason, d as normalizeMessageContent, f as describeReplyContext, g as extractLocationData, h as extractExternalAdReplyContext, i as addWhatsAppOutboundMentionsToContent, l as downloadMediaMessage, m as extractContextInfo, n as listWhatsAppSendResultMessageIds, o as resolveWhatsAppOutboundMentions, p as extractContactContext, r as normalizeWhatsAppSendResult, s as addWhatsAppImagePreviewFields, t as createWebSendApi, u as isJidGroup, v as extractMentionedJids, x as resolveInboundMediaMimetype, y as extractText } from "./send-api-BY_AkSiB.js";
16
- import { c as computeBackoff, d as resolveReconnectPolicy, f as sleepWithAbort, l as newConnectionId, n as WHATSAPP_WATCHDOG_TIMEOUT_ERROR, r as WhatsAppConnectionController, s as DEFAULT_RECONNECT_POLICY, u as resolveHeartbeatSeconds } from "./connection-controller-BOB2MVKY.js";
17
- import { n as maybeResolveWhatsAppApprovalReaction } from "./approval-reactions-Cu66aYdq.js";
18
- import { t as maybeResolveWhatsAppQuestionReaction } from "./question-reactions-CRsnyoMK.js";
19
- import { normalizeLowercaseStringOrEmpty, normalizeStringEntries } from "openclaw/plugin-sdk/string-coerce-runtime";
20
- import { filterSupplementalContextItems, resolvePinnedMainDmOwnerFromAllowlist } from "openclaw/plugin-sdk/security-runtime";
21
- import { createAckReactionHandle, createStatusReactionController, logAckFailure, removeAckReactionHandleAfterReply, shouldAckReactionForWhatsApp } from "openclaw/plugin-sdk/channel-feedback";
22
- import { formatCliCommand } from "openclaw/plugin-sdk/cli-runtime";
23
- import { getChildLogger } from "openclaw/plugin-sdk/logging-core";
24
- import { resolveMarkdownTableMode as resolveMarkdownTableMode$1 } from "openclaw/plugin-sdk/markdown-table-runtime";
25
- import { createSubsystemLogger, defaultRuntime, formatDurationPrecise, getChildLogger as getChildLogger$1, logVerbose, logVerbose as logVerbose$1, registerUnhandledRejectionHandler, shouldLogVerbose, shouldLogVerbose as shouldLogVerbose$1, warn } from "openclaw/plugin-sdk/runtime-env";
26
- import { registerChannelRuntimeContext } from "openclaw/plugin-sdk/channel-runtime-context";
27
- import { bindIngressLifecycleToReplyOptions, createChannelIngressMonitor, createChannelMessageReplyPipeline, createMessageReceiptFromOutboundResults, resolveChannelMessageSourceReplyDeliveryMode, resolveChannelStreamingBlockEnabled } from "openclaw/plugin-sdk/channel-outbound";
28
- import { getAgentScopedMediaLocalRoots } from "openclaw/plugin-sdk/media-runtime";
29
- import { isReasoningReplyPayload, resolveSendableOutboundReplyParts, sendMediaWithLeadingCaption } from "openclaw/plugin-sdk/reply-payload";
30
- import { truncateUtf16Safe } from "openclaw/plugin-sdk/text-utility-runtime";
31
- import { createLazyRuntimeModule } from "openclaw/plugin-sdk/lazy-runtime";
32
- import { buildChannelInboundEventContext, filterChannelInboundQuoteContext, formatInboundEnvelope, formatInboundEnvelope as formatInboundEnvelope$1, formatInboundMediaUnavailableText, formatLocationText, formatMediaPlaceholderText, hasVisibleInboundReplyDispatch, isChannelPartialDeliveryError, resolveInboundSessionEnvelopeContext, resolveInboundSupplementalSenderAllowed, runChannelInboundEvent, shouldDebounceTextInbound, toInboundMediaFacts, toLocationContext } from "openclaw/plugin-sdk/channel-inbound";
33
- import { DEFAULT_ACCOUNT_ID, DEFAULT_MAIN_KEY, buildAgentMainSessionKey, buildAgentSessionKey, buildGroupHistoryKey, deriveLastRoutePolicy, normalizeAccountId, normalizeAgentId, resolveAgentRoute, resolveInboundLastRouteSessionKey } from "openclaw/plugin-sdk/routing";
34
- import { asDateTimestampMs, parseStrictFiniteNumber, resolveExpiresAtMsFromDurationMs } from "openclaw/plugin-sdk/number-runtime";
35
- import { createHash } from "node:crypto";
36
- import { fanInChannelIngressLifecycles } from "openclaw/plugin-sdk/channel-ingress-runtime";
37
- import { getSessionEntry, patchSessionEntry, resolveStorePath, resolveStorePath as resolveStorePath$1, updateLastRoute } from "openclaw/plugin-sdk/session-store-runtime";
38
- import { recordChannelActivity } from "openclaw/plugin-sdk/channel-activity-runtime";
39
- import { resolveChunkMode, resolveTextChunkLimit } from "openclaw/plugin-sdk/reply-runtime";
40
- import { CHANNEL_APPROVAL_NATIVE_RUNTIME_CONTEXT_CAPABILITY } from "openclaw/plugin-sdk/approval-handler-runtime";
41
- import { createInboundDebouncer, resolveInboundDebounceMs } from "openclaw/plugin-sdk/channel-inbound-debounce";
42
- import { drainPendingDeliveries } from "openclaw/plugin-sdk/delivery-queue-runtime";
43
- import { DEFAULT_GROUP_HISTORY_LIMIT, buildHistoryContextFromEntries, buildInboundHistoryFromEntries, createChannelHistoryWindow } from "openclaw/plugin-sdk/reply-history";
44
- import { enqueueSystemEvent } from "openclaw/plugin-sdk/system-event-runtime";
45
- import { createDedupeCache } from "openclaw/plugin-sdk/dedupe-runtime";
46
- import { saveMediaStream } from "openclaw/plugin-sdk/media-store";
47
- import { getRuntimeConfig as getRuntimeConfig$1 } from "openclaw/plugin-sdk/runtime-config-snapshot";
48
- import { resolveChannelContextVisibilityMode } from "openclaw/plugin-sdk/context-visibility-runtime";
49
- import { buildMentionRegexes, implicitMentionKindWhen, normalizeMentionText, resolveInboundMentionDecision } from "openclaw/plugin-sdk/channel-mention-gating";
50
- import { createConnectedChannelStatusPatch, createTransportActivityStatusPatch } from "openclaw/plugin-sdk/gateway-runtime";
51
- import { ensureConfiguredBindingRouteReady, resolveConfiguredBindingRoute } from "openclaw/plugin-sdk/conversation-binding-runtime";
52
- import { resolveAgentIdentity, resolveIdentityNamePrefix as resolveIdentityNamePrefix$1 } from "openclaw/plugin-sdk/agent-runtime";
53
- import { normalizeGroupActivation, parseActivationCommand } from "openclaw/plugin-sdk/group-activation";
54
- import { hasControlCommand, isControlCommandMessage, shouldComputeCommandAuthorized } from "openclaw/plugin-sdk/command-detection";
55
- import { createInternalHookEvent, deriveInboundMessageHookContext, fireAndForgetBoundedHook, toInternalMessageReceivedContext, toPluginMessageContext, toPluginMessageReceivedEvent, triggerInternalHook } from "openclaw/plugin-sdk/hook-runtime";
56
- import { getGlobalHookRunner } from "openclaw/plugin-sdk/plugin-runtime";
57
- import { resolveBatchedReplyThreadingPolicy } from "openclaw/plugin-sdk/reply-reference";
58
- import { LocalMediaAccessError, getDefaultLocalRoots, loadWebMedia, loadWebMediaRaw, optimizeImageToJpeg, optimizeImageToPng } from "openclaw/plugin-sdk/web-media";
59
- import { createChannelApiRetryRunner } from "openclaw/plugin-sdk/retry-runtime";
60
- //#region extensions/whatsapp/src/inbound/message-aliases.ts
61
- function normalizeQuoteSender(sender) {
62
- if (!sender?.displayName && !sender?.jid && !sender?.e164) return;
63
- return sender;
64
- }
65
- function buildQuoteFromFlatAliases(msg) {
66
- if (msg.replyTo) return {
67
- context: msg.replyTo,
68
- id: msg.replyTo.id,
69
- body: msg.replyTo.body,
70
- sender: normalizeQuoteSender({
71
- displayName: msg.replyTo.sender?.label ?? msg.replyToSender,
72
- jid: msg.replyTo.sender?.jid ?? msg.replyToSenderJid,
73
- e164: msg.replyTo.sender?.e164 ?? msg.replyToSenderE164
74
- })
75
- };
76
- if (!msg.replyToId && !msg.replyToBody && !msg.replyToSender && !msg.replyToSenderJid && !msg.replyToSenderE164) return;
77
- return {
78
- id: msg.replyToId,
79
- body: msg.replyToBody,
80
- sender: normalizeQuoteSender({
81
- displayName: msg.replyToSender,
82
- jid: msg.replyToSenderJid,
83
- e164: msg.replyToSenderE164
84
- })
85
- };
86
- }
87
- function buildGroupFromFlatAliases(msg) {
88
- const mentionJids = msg.mentions ?? msg.mentionedJids;
89
- if (!msg.groupSubject && !msg.groupParticipants?.length && !mentionJids?.length) return;
90
- return {
91
- subject: msg.groupSubject,
92
- participants: msg.groupParticipants,
93
- mentions: mentionJids?.length ? { jids: mentionJids } : void 0
94
- };
95
- }
96
- function ensureQuote(msg) {
97
- return msg.quote ??= {};
98
- }
99
- function ensureQuoteSender(msg) {
100
- const quote = ensureQuote(msg);
101
- return quote.sender ??= {};
102
- }
103
- function ensureGroup(msg) {
104
- return msg.group ??= {};
105
- }
106
- function ensureGroupMentions(msg) {
107
- const group = ensureGroup(msg);
108
- return group.mentions ??= {};
109
- }
110
- function ensureMedia(msg) {
111
- return msg.payload.media ??= {};
112
- }
113
- function setMediaField(msg, key, value) {
114
- if (value === void 0 && !msg.payload.media) return;
115
- ensureMedia(msg)[key] = value;
116
- }
117
- function defineDeprecatedAccessors(msg, descriptors) {
118
- Object.defineProperties(msg, Object.fromEntries(Object.entries(descriptors).map(([key, descriptor]) => [key, {
119
- configurable: true,
120
- enumerable: true,
121
- get: descriptor.get,
122
- set: descriptor.set
123
- }])));
124
- return msg;
125
- }
126
- function defineDeprecatedAliasAccessors(msg, descriptors) {
127
- defineDeprecatedAccessors(msg, descriptors);
128
- return msg;
129
- }
130
- function defineDeprecatedStructuredContextPayloadAlias(msg) {
131
- const channelStructuredContext = msg.payload.channelStructuredContext ?? msg.payload.untrustedStructuredContext;
132
- if (channelStructuredContext !== void 0) msg.payload.channelStructuredContext = channelStructuredContext;
133
- Object.defineProperty(msg.payload, "untrustedStructuredContext", {
134
- configurable: true,
135
- enumerable: true,
136
- get: () => msg.payload.channelStructuredContext,
137
- set: (value) => {
138
- msg.payload.channelStructuredContext = value;
139
- }
140
- });
141
- }
142
- function defineDeprecatedAdmissionTopLevelAccessors(msg) {
143
- let fallbackConversationId = msg.conversationId || msg.from;
144
- let fallbackAccountId = msg.accountId;
145
- let fallbackAccessControlPassed = msg.accessControlPassed;
146
- let fallbackChatType = msg.chatType;
147
- const conversationId = () => msg.admission?.conversation.id ?? fallbackConversationId;
148
- const setConversationId = (value) => {
149
- const next = value;
150
- fallbackConversationId = next;
151
- if (msg.admission) {
152
- msg.admission.conversation.id = next;
153
- msg.admission.conversation.groupSessionId = resolveWhatsAppGroupConversationId(next);
154
- }
155
- };
156
- return defineDeprecatedAccessors(msg, {
157
- from: {
158
- get: conversationId,
159
- set: setConversationId
160
- },
161
- conversationId: {
162
- get: conversationId,
163
- set: setConversationId
164
- },
165
- accountId: {
166
- get: () => msg.admission?.accountId ?? fallbackAccountId,
167
- set: (value) => {
168
- const next = value;
169
- fallbackAccountId = next;
170
- if (msg.admission) {
171
- msg.admission.accountId = next;
172
- msg.admission.account.accountId = next;
173
- }
174
- }
175
- },
176
- accessControlPassed: {
177
- get: () => msg.admission ? msg.admission.ingress.decision === "allow" : fallbackAccessControlPassed,
178
- set: (value) => {
179
- fallbackAccessControlPassed = value;
180
- }
181
- },
182
- chatType: {
183
- get: () => msg.admission?.conversation.kind ?? fallbackChatType,
184
- set: (value) => {
185
- const next = value;
186
- fallbackChatType = next;
187
- if (msg.admission) msg.admission.conversation.kind = next;
188
- }
189
- }
190
- });
191
- }
192
- function withDeprecatedWebInboundMessageFlatAliases(msg) {
193
- defineDeprecatedStructuredContextPayloadAlias(msg);
194
- return defineDeprecatedAliasAccessors(defineDeprecatedAdmissionTopLevelAccessors(msg), {
195
- id: {
196
- get: () => msg.event.id,
197
- set: (value) => msg.event.id = value
198
- },
199
- to: {
200
- get: () => msg.platform.recipientJid,
201
- set: (value) => msg.platform.recipientJid = value
202
- },
203
- body: {
204
- get: () => msg.payload.body,
205
- set: (value) => msg.payload.body = value
206
- },
207
- pushName: {
208
- get: () => msg.platform.pushName,
209
- set: (value) => msg.platform.pushName = value
210
- },
211
- timestamp: {
212
- get: () => msg.event.timestamp,
213
- set: (value) => msg.event.timestamp = value
214
- },
215
- chatId: {
216
- get: () => msg.platform.chatJid,
217
- set: (value) => msg.platform.chatJid = value
218
- },
219
- sender: {
220
- get: () => msg.platform.sender,
221
- set: (value) => msg.platform.sender = value
222
- },
223
- senderJid: {
224
- get: () => msg.platform.senderJid,
225
- set: (value) => msg.platform.senderJid = value
226
- },
227
- senderE164: {
228
- get: () => msg.platform.senderE164,
229
- set: (value) => msg.platform.senderE164 = value
230
- },
231
- senderName: {
232
- get: () => msg.platform.senderName,
233
- set: (value) => msg.platform.senderName = value
234
- },
235
- replyTo: {
236
- get: () => msg.quote?.context,
237
- set: (value) => ensureQuote(msg).context = value
238
- },
239
- replyToId: {
240
- get: () => msg.quote?.id ?? msg.quote?.context?.id,
241
- set: (value) => ensureQuote(msg).id = value
242
- },
243
- replyToBody: {
244
- get: () => msg.quote?.body ?? msg.quote?.context?.body,
245
- set: (value) => ensureQuote(msg).body = value
246
- },
247
- replyToSender: {
248
- get: () => msg.quote?.context?.sender?.label ?? msg.quote?.sender?.displayName,
249
- set: (value) => {
250
- const sender = ensureQuoteSender(msg);
251
- sender.displayName = value;
252
- if (msg.quote?.context?.sender) msg.quote.context.sender.label = value;
253
- }
254
- },
255
- replyToSenderJid: {
256
- get: () => msg.quote?.context?.sender?.jid ?? msg.quote?.sender?.jid,
257
- set: (value) => {
258
- const jid = value;
259
- ensureQuoteSender(msg).jid = jid;
260
- if (msg.quote?.context?.sender) msg.quote.context.sender.jid = jid;
261
- }
262
- },
263
- replyToSenderE164: {
264
- get: () => msg.quote?.context?.sender?.e164 ?? msg.quote?.sender?.e164,
265
- set: (value) => {
266
- const e164 = value;
267
- ensureQuoteSender(msg).e164 = e164;
268
- if (msg.quote?.context?.sender) msg.quote.context.sender.e164 = e164;
269
- }
270
- },
271
- groupSubject: {
272
- get: () => msg.group?.subject,
273
- set: (value) => ensureGroup(msg).subject = value
274
- },
275
- groupParticipants: {
276
- get: () => msg.group?.participants,
277
- set: (value) => ensureGroup(msg).participants = value
278
- },
279
- mentions: {
280
- get: () => msg.group?.mentions?.jids,
281
- set: (value) => ensureGroupMentions(msg).jids = value
282
- },
283
- mentionedJids: {
284
- get: () => msg.group?.mentions?.jids,
285
- set: (value) => ensureGroupMentions(msg).jids = value
286
- },
287
- self: {
288
- get: () => msg.platform.self,
289
- set: (value) => msg.platform.self = value
290
- },
291
- selfJid: {
292
- get: () => msg.platform.selfJid,
293
- set: (value) => msg.platform.selfJid = value
294
- },
295
- selfLid: {
296
- get: () => msg.platform.selfLid,
297
- set: (value) => msg.platform.selfLid = value
298
- },
299
- selfE164: {
300
- get: () => msg.platform.selfE164,
301
- set: (value) => msg.platform.selfE164 = value
302
- },
303
- fromMe: {
304
- get: () => msg.platform.fromMe,
305
- set: (value) => msg.platform.fromMe = value
306
- },
307
- location: {
308
- get: () => msg.payload.location,
309
- set: (value) => msg.payload.location = value
310
- },
311
- sendComposing: {
312
- get: () => msg.platform.sendComposing,
313
- set: (value) => msg.platform.sendComposing = value
314
- },
315
- reply: {
316
- get: () => msg.platform.reply,
317
- set: (value) => msg.platform.reply = value
318
- },
319
- sendMedia: {
320
- get: () => msg.platform.sendMedia,
321
- set: (value) => msg.platform.sendMedia = value
322
- },
323
- mediaPath: {
324
- get: () => msg.payload.media?.path,
325
- set: (value) => setMediaField(msg, "path", value)
326
- },
327
- mediaType: {
328
- get: () => msg.payload.media?.type,
329
- set: (value) => setMediaField(msg, "type", value)
330
- },
331
- mediaFileName: {
332
- get: () => msg.payload.media?.fileName,
333
- set: (value) => setMediaField(msg, "fileName", value)
334
- },
335
- mediaUrl: {
336
- get: () => msg.payload.media?.url,
337
- set: (value) => setMediaField(msg, "url", value)
338
- },
339
- channelStructuredContext: {
340
- get: () => msg.payload.channelStructuredContext,
341
- set: (value) => msg.payload.channelStructuredContext = value
342
- },
343
- untrustedStructuredContext: {
344
- get: () => msg.payload.channelStructuredContext,
345
- set: (value) => msg.payload.channelStructuredContext = value
346
- },
347
- isBatched: {
348
- get: () => msg.event.isBatched,
349
- set: (value) => msg.event.isBatched = value
350
- }
351
- });
352
- }
353
- function normalizeLegacyFlatWebInboundMessage(msg) {
354
- const media = msg.mediaPath || msg.mediaType || msg.mediaFileName || msg.mediaUrl ? {
355
- path: msg.mediaPath,
356
- type: msg.mediaType,
357
- fileName: msg.mediaFileName,
358
- url: msg.mediaUrl
359
- } : void 0;
360
- return withDeprecatedWebInboundMessageFlatAliases({
361
- ...msg,
362
- admission: msg.admission ?? buildDeprecatedFlatWhatsAppInboundAdmission(msg),
363
- event: {
364
- id: msg.id,
365
- timestamp: msg.timestamp,
366
- isBatched: msg.isBatched
367
- },
368
- payload: {
369
- body: msg.body,
370
- media,
371
- location: msg.location,
372
- channelStructuredContext: msg.channelStructuredContext ?? msg.untrustedStructuredContext
373
- },
374
- platform: {
375
- chatJid: msg.chatId,
376
- recipientJid: msg.to,
377
- sender: msg.sender,
378
- senderJid: msg.senderJid,
379
- senderE164: msg.senderE164,
380
- senderName: msg.senderName,
381
- pushName: msg.pushName,
382
- self: msg.self,
383
- selfJid: msg.selfJid,
384
- selfLid: msg.selfLid,
385
- selfE164: msg.selfE164,
386
- fromMe: msg.fromMe,
387
- sendComposing: msg.sendComposing,
388
- reply: msg.reply,
389
- sendMedia: msg.sendMedia
390
- },
391
- quote: buildQuoteFromFlatAliases(msg),
392
- group: buildGroupFromFlatAliases(msg)
393
- });
394
- }
395
- function normalizeWebInboundMessage(msg) {
396
- if (msg.event && msg.payload && msg.platform) return withDeprecatedWebInboundMessageFlatAliases(msg);
397
- if (msg.event || msg.payload || msg.platform || msg.quote || msg.group) throw new Error("WhatsApp inbound messages must be either legacy flat or canonical nested; partial nested contexts are not supported.");
398
- return normalizeLegacyFlatWebInboundMessage(msg);
399
- }
400
- //#endregion
401
- //#region extensions/whatsapp/src/inbound/dedupe.ts
402
- const recentOutboundMessages = createDedupeCache({
403
- ttlMs: 20 * 6e4,
404
- maxSize: 5e3
405
- });
406
- function buildMessageKey(params) {
407
- const accountId = params.accountId.trim();
408
- const remoteJid = params.remoteJid.trim();
409
- const messageId = params.messageId.trim();
410
- if (!accountId || !remoteJid || !messageId || messageId === "unknown") return null;
411
- return `${accountId}:${remoteJid}:${messageId}`;
412
- }
413
- function resetWebInboundDedupe() {
414
- recentOutboundMessages.clear();
415
- }
416
- function rememberRecentOutboundMessage(params) {
417
- const key = buildMessageKey(params);
418
- if (!key) return;
419
- recentOutboundMessages.check(key);
420
- }
421
- function isRecentOutboundMessage(params) {
422
- const key = buildMessageKey(params);
423
- if (!key) return false;
424
- return recentOutboundMessages.peek(key);
425
- }
426
- //#endregion
427
- //#region extensions/whatsapp/src/inbound/durable-payload.ts
428
- var WhatsAppIngressPermanentError = class extends Error {
429
- constructor(reason, message, options) {
430
- super(message, options);
431
- this.reason = reason;
432
- this.name = "WhatsAppIngressPermanentError";
433
- }
434
- };
435
- function serializeWhatsAppDurableInboundMessage(message) {
436
- const timestamp = message.messageTimestamp;
437
- let serializedMessage = message;
438
- if (timestamp != null && typeof timestamp === "object") try {
439
- const numericTimestamp = Number(timestamp);
440
- if (Number.isFinite(numericTimestamp)) serializedMessage = {
441
- ...message,
442
- messageTimestamp: numericTimestamp
443
- };
444
- } catch {}
445
- return JSON.parse(JSON.stringify(serializedMessage, BufferJSON.replacer));
446
- }
447
- function deserializeWhatsAppDurableInboundMessage(message) {
448
- try {
449
- return JSON.parse(JSON.stringify(message), BufferJSON.reviver);
450
- } catch (error) {
451
- throw new WhatsAppIngressPermanentError("invalid-payload", "WhatsApp ingress row contains an invalid serialized message", { cause: error });
452
- }
453
- }
454
- //#endregion
455
- //#region extensions/whatsapp/src/inbound/durable-receive.ts
456
- const WHATSAPP_DURABLE_INBOUND_PENDING_MAX_ENTRIES = 450;
457
- const WHATSAPP_DURABLE_INBOUND_COMPLETED_MAX_ENTRIES = 5e3;
458
- const WHATSAPP_DURABLE_INBOUND_PENDING_TTL_MS = 720 * 60 * 60 * 1e3;
459
- const WHATSAPP_DURABLE_INBOUND_COMPLETED_TTL_MS = 10080 * 60 * 1e3;
460
- const WHATSAPP_DURABLE_INBOUND_PRUNE_INTERVAL_MS = 3600 * 1e3;
461
- const WHATSAPP_DURABLE_INBOUND_PAYLOAD_VERSION = 1;
462
- function hashNamespacePart(value) {
463
- return createHash("sha256").update(value).digest("hex").slice(0, 24);
464
- }
465
- function createWhatsAppDurableInboundMessageId(params) {
466
- return createHash("sha256").update(`${params.remoteJid}\n${params.id}`).digest("hex");
467
- }
468
- function inspectWhatsAppIngressMessage(message) {
469
- const remoteJid = message.key?.remoteJid?.trim();
470
- const id = message.key?.id?.trim();
471
- if (!remoteJid || !id) throw new WhatsAppIngressPermanentError("missing-message-key", "WhatsApp ingress message is missing key.remoteJid or key.id");
472
- return {
473
- eventId: createWhatsAppDurableInboundMessageId({
474
- remoteJid,
475
- id
476
- }),
477
- laneKey: remoteJid
478
- };
479
- }
480
- /** Account-scoped queue shared with the pre-drain WhatsApp receive journal. */
481
- function createWhatsAppDurableInboundQueue(accountId) {
482
- return getWhatsAppRuntime().state.openChannelIngressQueue({
483
- accountId: hashNamespacePart(accountId),
484
- stateDir: getWhatsAppRuntime().state.resolveStateDir()
485
- });
486
- }
487
- function resolveWhatsAppIngressNonRetryableFailure(error) {
488
- return error instanceof WhatsAppIngressPermanentError ? {
489
- reason: error.reason,
490
- message: error.message
491
- } : null;
492
- }
493
- /** Shared monitor with per-conversation lanes and completion at reply-lane adoption. */
494
- function createWhatsAppIngressMonitor(params) {
495
- return createChannelIngressMonitor({
496
- queue: params.queue,
497
- inspect: (admission) => inspectWhatsAppIngressMessage(admission.message),
498
- payload: {
499
- version: WHATSAPP_DURABLE_INBOUND_PAYLOAD_VERSION,
500
- serialize: (admission, { receivedAt }) => ({
501
- ...admission,
502
- message: serializeWhatsAppDurableInboundMessage(admission.message),
503
- receivedAt
504
- }),
505
- deserialize: (payload) => ({
506
- ...payload,
507
- message: deserializeWhatsAppDurableInboundMessage(payload.message)
508
- }),
509
- encode: ({ body }) => body,
510
- decode: (payload) => ({
511
- version: WHATSAPP_DURABLE_INBOUND_PAYLOAD_VERSION,
512
- body: payload
513
- }),
514
- createClaimError: (kind) => new WhatsAppIngressPermanentError(kind === "invalid-version" ? "invalid-payload" : "event-id-mismatch", kind === "invalid-version" ? "WhatsApp ingress row has an invalid payload version" : "WhatsApp ingress row identity does not match its transport message key")
515
- },
516
- deliver: (admission, lifecycle) => params.dispatch(admission, lifecycle),
517
- pollIntervalMs: params.pollIntervalMs,
518
- retention: {
519
- pruneIntervalMs: WHATSAPP_DURABLE_INBOUND_PRUNE_INTERVAL_MS,
520
- pendingTtlMs: WHATSAPP_DURABLE_INBOUND_PENDING_TTL_MS,
521
- pendingMaxEntries: WHATSAPP_DURABLE_INBOUND_PENDING_MAX_ENTRIES,
522
- completedTtlMs: WHATSAPP_DURABLE_INBOUND_COMPLETED_TTL_MS,
523
- completedMaxEntries: WHATSAPP_DURABLE_INBOUND_COMPLETED_MAX_ENTRIES,
524
- failedTtlMs: WHATSAPP_DURABLE_INBOUND_PENDING_TTL_MS,
525
- failedMaxEntries: WHATSAPP_DURABLE_INBOUND_PENDING_MAX_ENTRIES
526
- },
527
- drain: {
528
- resolveNonRetryableFailure: resolveWhatsAppIngressNonRetryableFailure,
529
- deriveLaneKey: (record) => {
530
- try {
531
- return inspectWhatsAppIngressMessage(deserializeWhatsAppDurableInboundMessage(record.payload.message)).laneKey;
532
- } catch {
533
- return record.id;
534
- }
535
- },
536
- ...params.onLog ? { onLog: params.onLog } : {}
537
- },
538
- ...params.abortSignal ? { abortSignal: params.abortSignal } : {},
539
- admissionMode: "while-running",
540
- createStoppedError: () => /* @__PURE__ */ new Error("WhatsApp ingress monitor is stopped."),
541
- ...params.onError ? { onError: params.onError } : {},
542
- ...params.onActivityChange ? { onActivityChange: params.onActivityChange } : {}
543
- });
544
- }
545
- //#endregion
546
- //#region extensions/whatsapp/src/inbound/ingress-lifecycle.ts
547
- const ingressLifecycleKey = Symbol("whatsappIngressLifecycle");
548
- function attachWhatsAppIngressLifecycle(message, lifecycle) {
549
- if (lifecycle) message[ingressLifecycleKey] = lifecycle;
550
- return message;
551
- }
552
- function resolveWhatsAppIngressLifecycle(message) {
553
- return message[ingressLifecycleKey];
554
- }
555
- //#endregion
556
- //#region extensions/whatsapp/src/inbound/lifecycle.ts
557
- function attachEmitterListener(emitter, event, listener) {
558
- emitter.on(event, listener);
559
- return () => {
560
- if (typeof emitter.off === "function") {
561
- emitter.off(event, listener);
562
- return;
563
- }
564
- if (typeof emitter.removeListener === "function") emitter.removeListener(event, listener);
565
- };
566
- }
567
- function closeInboundMonitorSocket(sock) {
568
- if (typeof sock.end === "function") {
569
- sock.end(/* @__PURE__ */ new Error("OpenClaw WhatsApp listener close"));
570
- return;
571
- }
572
- sock.ws?.close?.();
573
- }
574
- //#endregion
575
- //#region extensions/whatsapp/src/inbound/media.ts
576
- var WhatsAppInboundMediaLimitExceededError = class extends Error {
577
- constructor(maxBytes) {
578
- super(`Media exceeds ${Math.round(maxBytes / (1024 * 1024))}MB limit`);
579
- this.name = "WhatsAppInboundMediaLimitExceededError";
580
- }
581
- };
582
- function unwrapMessage(message) {
583
- return normalizeMessageContent(message);
584
- }
585
- async function downloadInboundMedia(msg, sock, maxBytes = 50 * 1024 * 1024) {
586
- const message = unwrapMessage(msg.message);
587
- if (!message) return;
588
- const mimetype = resolveInboundMediaMimetype(message);
589
- const fileName = message.documentMessage?.fileName ?? void 0;
590
- if (!message.imageMessage && !message.videoMessage && !message.documentMessage && !message.audioMessage && !message.stickerMessage) return;
591
- return {
592
- saved: await saveMediaStream(await downloadMediaMessage(msg, "stream", {}, {
593
- reuploadRequest: sock.updateMediaMessage,
594
- logger: sock.logger
595
- }), mimetype, "inbound", maxBytes, fileName).catch((err) => {
596
- if (err instanceof Error && /Media exceeds/i.test(err.message)) throw new WhatsAppInboundMediaLimitExceededError(maxBytes);
597
- throw err;
598
- }),
599
- mimetype,
600
- fileName
601
- };
602
- }
603
- async function downloadQuotedInboundMedia(msg, sock, maxBytes = 50 * 1024 * 1024) {
604
- const contextInfo = extractContextInfo(unwrapMessage(msg.message));
605
- if (!contextInfo?.quotedMessage) return;
606
- const quotedMessage = contextInfo.quotedMessage;
607
- return downloadInboundMedia({
608
- key: {
609
- id: contextInfo?.stanzaId || void 0,
610
- remoteJid: contextInfo.remoteJid ?? msg.key?.remoteJid ?? void 0,
611
- participant: contextInfo?.participant ?? void 0,
612
- fromMe: false
613
- },
614
- message: quotedMessage,
615
- messageTimestamp: msg.messageTimestamp
616
- }, sock, maxBytes);
617
- }
618
- //#endregion
619
- //#region extensions/whatsapp/src/inbound/monitor.ts
620
- const LOGGED_OUT_STATUS = DisconnectReason.loggedOut;
621
- const RECONNECT_IN_PROGRESS_ERROR = "no active socket - reconnection in progress";
622
- const GROUP_META_TTL_MS = 300 * 1e3;
623
- const BAILEYS_MESSAGE_TTL_MS = 600 * 1e3;
624
- const INBOUND_CLOSE_DRAIN_TIMEOUT_MS = 5e3;
625
- const WHATSAPP_INGRESS_DRAIN_INTERVAL_MS = 1e3;
626
- const WHATSAPP_GROUP_METADATA_CACHE_MAX_ENTRIES = 500;
627
- function resolveGroupMetadataExpiresAt(nowRaw = Date.now()) {
628
- const now = asDateTimestampMs(nowRaw);
629
- return now === void 0 ? void 0 : resolveExpiresAtMsFromDurationMs(GROUP_META_TTL_MS, { nowMs: now });
630
- }
631
- function parseWhatsAppTimestampSeconds(value) {
632
- if (value == null) return;
633
- if (typeof value === "string") return parseStrictFiniteNumber(value);
634
- const parsed = Number(value);
635
- return Number.isFinite(parsed) ? parsed : void 0;
636
- }
637
- function rememberGroupMetadataCacheEntry(cache, jid, entry) {
638
- if (asDateTimestampMs(entry.expires) === void 0) {
639
- cache.delete(jid);
640
- return;
641
- }
642
- if (cache.has(jid)) cache.delete(jid);
643
- cache.set(jid, entry);
644
- while (cache.size > WHATSAPP_GROUP_METADATA_CACHE_MAX_ENTRIES) {
645
- const oldest = cache.keys().next();
646
- if (oldest.done) break;
647
- cache.delete(oldest.value);
648
- }
649
- }
650
- function readGroupMetadataCacheEntry(cache, jid) {
651
- const entry = cache.get(jid);
652
- if (!entry) return null;
653
- const now = asDateTimestampMs(Date.now());
654
- const expires = asDateTimestampMs(entry.expires);
655
- if (now === void 0 || expires === void 0 || expires <= now) {
656
- cache.delete(jid);
657
- return null;
658
- }
659
- cache.delete(jid);
660
- cache.set(jid, entry);
661
- return entry;
662
- }
663
- function rememberWhatsAppBaileysCacheEntry(cache, key, value, ttlMs) {
664
- if (!cache) return;
665
- if (cache.has(key)) cache.delete(key);
666
- cache.set(key, {
667
- expiresAt: Date.now() + ttlMs,
668
- value
669
- });
670
- while (cache.size > WHATSAPP_GROUP_METADATA_CACHE_MAX_ENTRIES) {
671
- const oldest = cache.keys().next();
672
- if (oldest.done) break;
673
- cache.delete(oldest.value);
674
- }
675
- }
676
- function readWhatsAppBaileysCacheEntry(cache, key) {
677
- const entry = cache.get(key);
678
- if (!entry) return;
679
- if (entry.expiresAt <= Date.now()) {
680
- cache.delete(key);
681
- return;
682
- }
683
- cache.delete(key);
684
- cache.set(key, entry);
685
- return entry.value;
686
- }
687
- function logWhatsAppVerbose(enabled, message) {
688
- if (!enabled) return;
689
- defaultRuntime.log(message);
690
- }
691
- function isDirectUserJid(jid) {
692
- return /^(\d+)(?::\d+)?@(s\.whatsapp\.net|c\.us|lid|hosted|hosted\.lid)$/i.test(jid.trim());
693
- }
694
- function getActiveReachoutTimelock(state) {
695
- if (state?.isActive !== true) return;
696
- const endsAt = state.timeEnforcementEnds?.getTime();
697
- return endsAt === void 0 || !Number.isFinite(endsAt) || endsAt > Date.now() ? state : void 0;
698
- }
699
- function formatReachoutTimelockError(state) {
700
- const details = [state.enforcementType ? `type=${state.enforcementType}` : void 0, state.timeEnforcementEnds instanceof Date && Number.isFinite(state.timeEnforcementEnds.getTime()) ? `until=${state.timeEnforcementEnds.toISOString()}` : void 0].filter(Boolean);
701
- return `WhatsApp reachout timelock is active; direct messages are temporarily blocked${details.length ? ` (${details.join(", ")})` : ""}`;
702
- }
703
- function recordAcceptedInboundActivity(accountId) {
704
- recordChannelActivity({
705
- channel: "whatsapp",
706
- accountId,
707
- direction: "inbound"
708
- });
709
- }
710
- function isRetryableSendDisconnectError(err) {
711
- if (isWhatsAppSocketOperationTimeoutError(err)) return false;
712
- return /closed|reset|timed\s*out|disconnect|no active socket/i.test(formatError(err));
713
- }
714
- function shouldClearSocketRefAfterSendFailure(err) {
715
- return /closed|reset|disconnect|no active socket/i.test(formatError(err));
716
- }
717
- async function attachWebInboxToSocket(options) {
718
- const inboundLogger = getChildLogger({ module: "web-inbound" });
719
- const inboundConsoleLog = createSubsystemLogger("gateway/channels/whatsapp").child("inbound");
720
- const sock = options.sock;
721
- const connectedAtMs = Date.now();
722
- if (options.socketRef) options.socketRef.current = sock;
723
- const shouldRetryDisconnect = () => options.shouldRetryDisconnect?.() === true;
724
- const disconnectRetryPolicy = options.disconnectRetryPolicy ?? DEFAULT_RECONNECT_POLICY;
725
- const sendRetryMaxAttempts = disconnectRetryPolicy.maxAttempts > 0 ? disconnectRetryPolicy.maxAttempts : DEFAULT_RECONNECT_POLICY.maxAttempts;
726
- const sendOperationTimeoutMs = resolveWhatsAppSocketOperationTimeoutMs(options.socketTiming.defaultQueryTimeoutMs);
727
- let onCloseResolve = null;
728
- const onClose = new Promise((resolve) => {
729
- onCloseResolve = resolve;
730
- });
731
- const resolveClose = (reason) => {
732
- if (!onCloseResolve) return;
733
- const resolver = onCloseResolve;
734
- onCloseResolve = null;
735
- resolver(reason);
736
- };
737
- const presence = options.selfChatMode ? "unavailable" : "available";
738
- try {
739
- await createWhatsAppSocketOperationTimeoutAdapter(sock, sendOperationTimeoutMs).sendPresenceUpdate(presence);
740
- logWhatsAppVerbose(options.verbose, `Sent global '${presence}' presence on connect`);
741
- } catch (err) {
742
- logWhatsAppVerbose(options.verbose, `Failed to send '${presence}' presence on connect: ${String(err)}`);
743
- }
744
- const selfIdentity = await readWebSelfIdentityForDecision(options.authDir, sock.user);
745
- if (selfIdentity.outcome === "unstable") throw new WhatsAppAuthUnstableError("WhatsApp auth state is still stabilizing; retrying inbox attach.");
746
- const self = selfIdentity.identity;
747
- const getCurrentSock = () => {
748
- if (!options.socketRef) return sock;
749
- if (options.socketRef.current) return options.socketRef.current;
750
- if (!self.e164 && !self.jid && !self.lid) return null;
751
- const successor = getWhatsAppConnectionController(options.accountId);
752
- if (!successor) return null;
753
- const successorIdentity = successor.getSelfIdentity();
754
- if (!successorIdentity || !identitiesOverlap(self, successorIdentity)) return null;
755
- return successor.getCurrentSock();
756
- };
757
- const durableInboundQueue = options.durableInboundQueue ?? createWhatsAppDurableInboundQueue(options.accountId);
758
- const inboundDebounceMs = Math.max(0, Math.trunc(options.debounceMs ?? 0));
759
- const pendingDebounceKeys = /* @__PURE__ */ new Set();
760
- const activeInboundFlushes = /* @__PURE__ */ new Set();
761
- const pendingMessageHandlers = /* @__PURE__ */ new Set();
762
- let durableIngressActive = false;
763
- const debounceWorkWaiters = /* @__PURE__ */ new Set();
764
- const notifyDebounceWork = () => {
765
- if (debounceWorkWaiters.size === 0) return;
766
- const waiters = [...debounceWorkWaiters];
767
- debounceWorkWaiters.clear();
768
- for (const resolve of waiters) resolve();
769
- };
770
- const waitForDebounceWorkOrIdle = (handlers) => {
771
- if (pendingDebounceKeys.size > 0 || activeInboundFlushes.size > 0) return Promise.resolve();
772
- if (pendingMessageHandlers.size === 0) return Promise.resolve();
773
- return new Promise((resolve) => {
774
- const finish = () => {
775
- debounceWorkWaiters.delete(finish);
776
- resolve();
777
- };
778
- debounceWorkWaiters.add(finish);
779
- Promise.allSettled(handlers).then(finish);
780
- });
781
- };
782
- let nextReceiveOrder = 0;
783
- const publishPendingWorkState = (at = Date.now()) => {
784
- options.onPendingWorkChanged?.(pendingMessageHandlers.size + pendingDebounceKeys.size + activeInboundFlushes.size + (durableIngressActive ? 1 : 0), at);
785
- };
786
- const buildInboundDebounceKey = (msg) => {
787
- const admission = requireWhatsAppInboundAdmission(msg);
788
- const sender = msg.platform.sender;
789
- const senderKey = admission.conversation.kind === "group" ? getPrimaryIdentityId(sender ?? null) ?? msg.platform.senderJid ?? msg.platform.senderE164 ?? msg.platform.senderName ?? admission.sender.id : admission.conversation.id;
790
- if (!senderKey) return null;
791
- return `${admission.accountId}:${admission.conversation.id}:${senderKey}`;
792
- };
793
- const shouldDebounceInboundMessage = (msg) => options.shouldDebounce?.(msg) ?? true;
794
- const orderDebouncedInboundEntries = (entries) => entries.toSorted((a, b) => {
795
- const timestampDiff = (a.event.timestamp ?? 0) - (b.event.timestamp ?? 0);
796
- if (timestampDiff !== 0) return timestampDiff;
797
- return (a.receiveOrder ?? 0) - (b.receiveOrder ?? 0);
798
- });
799
- const debouncer = createInboundDebouncer({
800
- debounceMs: inboundDebounceMs,
801
- buildKey: (msg) => msg.debounceKey ?? buildInboundDebounceKey(msg),
802
- shouldDebounce: shouldDebounceInboundMessage,
803
- onFlush: async (entries) => {
804
- let finishFlush;
805
- const flushTask = new Promise((resolve) => {
806
- finishFlush = resolve;
807
- });
808
- activeInboundFlushes.add(flushTask);
809
- publishPendingWorkState();
810
- notifyDebounceWork();
811
- try {
812
- const orderedEntries = orderDebouncedInboundEntries(entries);
813
- const last = orderedEntries.at(-1);
814
- if (!last) return;
815
- const { lifecycle, settle, abandon } = fanInChannelIngressLifecycles(orderedEntries.map((entry) => entry.turnAdoptionLifecycle));
816
- try {
817
- if (orderedEntries.length === 1) {
818
- await options.onMessage(attachWhatsAppIngressLifecycle(last, lifecycle));
819
- await settle();
820
- await Promise.all(orderedEntries.map((entry) => maybeMarkInboundAsRead(entry.readReceipt)));
821
- return;
822
- }
823
- const mentioned = /* @__PURE__ */ new Set();
824
- for (const entry of orderedEntries) for (const jid of entry.group?.mentions?.jids ?? []) mentioned.add(jid);
825
- const combinedBody = orderedEntries.map((entry) => entry.payload.body).filter(Boolean).join("\n");
826
- const combinedCommandBody = orderedEntries.map((entry) => entry.payload.commandBody ?? entry.payload.body).filter(Boolean).join("\n");
827
- const combinedMentions = mentioned.size > 0 ? {
828
- ...last.group?.mentions,
829
- jids: Array.from(mentioned)
830
- } : last.group?.mentions;
831
- const combinedGroup = last.group || combinedMentions ? {
832
- ...last.group,
833
- mentions: combinedMentions
834
- } : void 0;
835
- const combinedMessage = attachWhatsAppIngressLifecycle(withDeprecatedWebInboundMessageFlatAliases({
836
- ...last,
837
- ...lifecycle ? { turnAdoptionLifecycle: lifecycle } : {},
838
- payload: {
839
- ...last.payload,
840
- body: combinedBody,
841
- commandBody: combinedCommandBody
842
- },
843
- group: combinedGroup,
844
- event: {
845
- ...last.event,
846
- isBatched: true
847
- }
848
- }), lifecycle);
849
- await options.onMessage(combinedMessage);
850
- await settle();
851
- await Promise.all(orderedEntries.map((entry) => maybeMarkInboundAsRead(entry.readReceipt)));
852
- } catch (error) {
853
- await abandon();
854
- throw error;
855
- }
856
- } finally {
857
- for (const entry of entries) if (entry.debounceKey) pendingDebounceKeys.delete(entry.debounceKey);
858
- activeInboundFlushes.delete(flushTask);
859
- finishFlush();
860
- publishPendingWorkState();
861
- }
862
- },
863
- onError: (err) => {
864
- inboundLogger.error({ error: String(err) }, "failed handling inbound web message");
865
- inboundConsoleLog.error(`Failed handling inbound web message: ${String(err)}`);
866
- }
867
- });
868
- const groupMetadataCache = options.groupMetadataCache ?? /* @__PURE__ */ new Map();
869
- const groupMetaCache = /* @__PURE__ */ new Map();
870
- const lidLookup = sock.signalRepository?.lidMapping;
871
- const publishedGroupMetadataJids = /* @__PURE__ */ new Set();
872
- const invalidatedGroupMetadataJids = /* @__PURE__ */ new Set();
873
- let groupMetadataCacheClosed = false;
874
- const resolveInboundJid = async (jid) => resolveJidToE164(jid, {
875
- authDir: options.authDir,
876
- lidLookup
877
- });
878
- const resolveReactionTargetJids = async (jid) => resolveEquivalentWhatsAppDirectChatJids(jid, {
879
- authDir: options.authDir,
880
- lidLookup
881
- });
882
- const rememberBaileysMessage = (remoteJid, messageId, message) => {
883
- if (!options.recentMessageKeys || !remoteJid || !messageId || !message) return;
884
- rememberWhatsAppBaileysCacheEntry(options.recentMessageKeys, `${remoteJid}:${messageId}`, message, BAILEYS_MESSAGE_TTL_MS);
885
- };
886
- const rememberOutboundMessage = (remoteJid, result) => {
887
- const messageId = typeof result === "object" && result && "key" in result ? result.key?.id ?? "" : "";
888
- if (!messageId) return;
889
- rememberRecentOutboundMessage({
890
- accountId: options.accountId,
891
- remoteJid,
892
- messageId
893
- });
894
- const message = typeof result === "object" && result && "message" in result ? result.message : void 0;
895
- rememberBaileysMessage(remoteJid, messageId, message);
896
- cacheInboundMessageMeta(options.accountId, remoteJid, messageId, {
897
- fromMe: true,
898
- body: extractText(message ?? void 0)
899
- });
900
- };
901
- const trackLateAcceptedSend = (jid, promise) => {
902
- promise.then((result) => {
903
- rememberOutboundMessage(jid, result);
904
- }, () => {});
905
- };
906
- let reachoutTimeLock;
907
- let reachoutTimeLockFetch;
908
- let reachoutTimeLockVersion = 0;
909
- let verifiedSendReady;
910
- const rememberReachoutTimeLock = (state) => {
911
- reachoutTimeLock = state;
912
- reachoutTimeLockVersion += 1;
913
- verifiedSendReady = void 0;
914
- };
915
- const fetchReachoutTimeLock = async (currentSock) => {
916
- if (typeof currentSock.fetchAccountReachoutTimelock !== "function") return;
917
- if (!reachoutTimeLockFetch) reachoutTimeLockFetch = currentSock.fetchAccountReachoutTimelock().then((state) => {
918
- rememberReachoutTimeLock(state);
919
- return state;
920
- }).catch((err) => {
921
- logWhatsAppVerbose(options.verbose, `Failed fetching WhatsApp reachout timelock before send: ${formatError(err)}`);
922
- }).finally(() => {
923
- reachoutTimeLockFetch = void 0;
924
- });
925
- return await reachoutTimeLockFetch;
926
- };
927
- const rememberVerifiedSendReady = (jid, currentSock) => {
928
- verifiedSendReady = {
929
- jid,
930
- sock: currentSock,
931
- reachoutTimeLockVersion
932
- };
933
- };
934
- const consumeVerifiedSendReady = (jid, currentSock) => {
935
- if (verifiedSendReady?.jid !== jid || verifiedSendReady.sock !== currentSock || verifiedSendReady.reachoutTimeLockVersion !== reachoutTimeLockVersion) return false;
936
- verifiedSendReady = void 0;
937
- return true;
938
- };
939
- const assertCanSendToJid = async (jid, currentSock, readinessOptions) => {
940
- if (!isDirectUserJid(jid)) return;
941
- if (readinessOptions?.useVerifiedReady && consumeVerifiedSendReady(jid, currentSock)) return;
942
- const state = getActiveReachoutTimelock(reachoutTimeLock) ?? await fetchReachoutTimeLock(currentSock);
943
- const activeState = getActiveReachoutTimelock(state);
944
- if (activeState) throw new Error(formatReachoutTimelockError(activeState));
945
- if (readinessOptions?.rememberReady && state) rememberVerifiedSendReady(jid, currentSock);
946
- };
947
- const assertCanSendTo = async (to) => {
948
- const currentSock = getCurrentSock();
949
- if (!currentSock) throw new Error(RECONNECT_IN_PROGRESS_ERROR);
950
- const jid = options.authDir ? toWhatsappJidWithLid(to, { authDir: options.authDir }) : toWhatsappJid(to);
951
- await assertCanSendToJid(jid, currentSock, { rememberReady: true });
952
- };
953
- const sendTrackedMessage = async (jid, content, sendOptions) => {
954
- let lastErr = /* @__PURE__ */ new Error(RECONNECT_IN_PROGRESS_ERROR);
955
- for (let attempt = 1;; attempt++) {
956
- const currentSock = getCurrentSock();
957
- if (currentSock) try {
958
- await assertCanSendToJid(jid, currentSock, { useVerifiedReady: true });
959
- const result = await createWhatsAppSocketOperationTimeoutAdapter(currentSock, sendOperationTimeoutMs, { onSendMessageTimeout: ({ jid: timedOutJid, promise }) => {
960
- trackLateAcceptedSend(timedOutJid, promise);
961
- } }).sendMessage(jid, content, sendOptions);
962
- rememberOutboundMessage(jid, result);
963
- return result;
964
- } catch (err) {
965
- if (!shouldRetryDisconnect() || !isRetryableSendDisconnectError(err)) throw err;
966
- lastErr = err;
967
- if (shouldClearSocketRefAfterSendFailure(err) && options.socketRef?.current === currentSock) options.socketRef.current = null;
968
- }
969
- else if (!shouldRetryDisconnect()) throw lastErr;
970
- if (attempt >= sendRetryMaxAttempts) throw lastErr;
971
- const delayMs = computeBackoff(disconnectRetryPolicy, attempt);
972
- logWhatsAppVerbose(options.verbose, `Waiting ${delayMs}ms for WhatsApp reconnect before retrying send to ${jid}: ${formatError(lastErr)}`);
973
- try {
974
- await sleepWithAbort(delayMs, options.disconnectRetryAbortSignal);
975
- } catch {
976
- throw lastErr;
977
- }
978
- }
979
- };
980
- const sendApiSocketOperations = {
981
- sendMessage: (jid, content, sendOptions) => sendTrackedMessage(jid, content, sendOptions),
982
- sendPresenceUpdate: async (presenceLocal, jid) => {
983
- const currentSock = getCurrentSock();
984
- if (!currentSock) throw new Error(RECONNECT_IN_PROGRESS_ERROR);
985
- return await createWhatsAppSocketOperationTimeoutAdapter(currentSock, sendOperationTimeoutMs).sendPresenceUpdate(presenceLocal, jid);
986
- }
987
- };
988
- const summarizeGroupMeta = async (meta) => {
989
- const participantEntries = await Promise.all(meta.participants?.map(async (p) => {
990
- const mapped = await resolveInboundJid(p.id);
991
- return {
992
- display: mapped ?? p.id,
993
- mention: {
994
- id: p.id,
995
- lid: p.lid,
996
- phoneNumber: p.phoneNumber,
997
- e164: mapped
998
- }
999
- };
1000
- }) ?? []);
1001
- const participants = participantEntries.map((entry) => entry.display).filter(Boolean);
1002
- const mentionParticipants = participantEntries.map((entry) => entry.mention);
1003
- return {
1004
- subject: meta.subject,
1005
- participants,
1006
- mentionParticipants,
1007
- expires: resolveGroupMetadataExpiresAt() ?? 0
1008
- };
1009
- };
1010
- const summarizeGroupMetaForReconnectCache = (meta) => ({
1011
- subject: meta.subject,
1012
- expires: resolveGroupMetadataExpiresAt() ?? NaN
1013
- });
1014
- const getGroupMeta = async (jid) => {
1015
- const cached = readGroupMetadataCacheEntry(groupMetaCache, jid);
1016
- if (cached) return cached;
1017
- try {
1018
- const meta = await (getCurrentSock() ?? sock).groupMetadata(jid);
1019
- rememberWhatsAppBaileysCacheEntry(options.baileysGroupMetaCache, jid, meta, GROUP_META_TTL_MS);
1020
- publishedGroupMetadataJids.add(jid);
1021
- const entry = await summarizeGroupMeta(meta);
1022
- rememberGroupMetadataCacheEntry(groupMetadataCache, jid, {
1023
- subject: entry.subject,
1024
- expires: entry.expires
1025
- });
1026
- rememberGroupMetadataCacheEntry(groupMetaCache, jid, entry);
1027
- return entry;
1028
- } catch (err) {
1029
- const hydrated = readGroupMetadataCacheEntry(groupMetadataCache, jid);
1030
- if (hydrated) {
1031
- rememberGroupMetadataCacheEntry(groupMetaCache, jid, hydrated);
1032
- logWhatsAppVerbose(options.verbose, `Using cached group metadata for ${jid} after fetch failure: ${String(err)}`);
1033
- return hydrated;
1034
- }
1035
- logWhatsAppVerbose(options.verbose, `Failed to fetch group metadata for ${jid}: ${String(err)}`);
1036
- return { expires: resolveGroupMetadataExpiresAt() ?? 0 };
1037
- }
1038
- };
1039
- const resolveOutboundMentionsForGroup = async (jid, text) => {
1040
- if (isJidGroup(jid) !== true || !mayContainWhatsAppOutboundMention(text)) return {
1041
- text,
1042
- mentionedJids: []
1043
- };
1044
- return resolveWhatsAppOutboundMentions({
1045
- chatJid: jid,
1046
- text,
1047
- participants: (await getGroupMeta(jid)).mentionParticipants
1048
- });
1049
- };
1050
- const applyOutboundMentionsToContent = async (jid, content) => {
1051
- if ("text" in content && typeof content.text === "string") {
1052
- const resolved = await resolveOutboundMentionsForGroup(jid, content.text);
1053
- return addWhatsAppOutboundMentionsToContent({
1054
- ...content,
1055
- text: resolved.text
1056
- }, resolved.mentionedJids);
1057
- }
1058
- const caption = content.caption;
1059
- if (typeof caption === "string") {
1060
- const resolved = await resolveOutboundMentionsForGroup(jid, caption);
1061
- return addWhatsAppOutboundMentionsToContent({
1062
- ...content,
1063
- caption: resolved.text
1064
- }, resolved.mentionedJids);
1065
- }
1066
- return content;
1067
- };
1068
- const shouldSkipRecentOutboundEcho = (msg) => {
1069
- const id = msg.key?.id ?? void 0;
1070
- const remoteJid = msg.key?.remoteJid;
1071
- if (!msg.key?.fromMe || !id || !remoteJid || !isRecentOutboundMessage({
1072
- accountId: options.accountId,
1073
- remoteJid,
1074
- messageId: id
1075
- })) return false;
1076
- logWhatsAppVerbose(options.verbose, `Skipping recent outbound WhatsApp echo ${id} for ${remoteJid}`);
1077
- return true;
1078
- };
1079
- const normalizeInboundMessage = async (msg) => {
1080
- const id = msg.key?.id ?? void 0;
1081
- const remoteJid = msg.key?.remoteJid;
1082
- if (!remoteJid) return null;
1083
- if (remoteJid.endsWith("@status") || remoteJid.endsWith("@broadcast")) return null;
1084
- const group = isJidGroup(remoteJid) === true;
1085
- if (shouldSkipRecentOutboundEcho(msg)) return null;
1086
- if (!hasInboundUserContent(msg.message ?? void 0)) return null;
1087
- const participantJid = msg.key?.participant ?? void 0;
1088
- const from = group ? remoteJid : await resolveInboundJid(remoteJid);
1089
- if (!from) return null;
1090
- const senderE164 = group ? participantJid ? await resolveInboundJid(participantJid) : null : from;
1091
- let groupSubject;
1092
- let groupParticipants;
1093
- if (group) {
1094
- const meta = await getGroupMeta(remoteJid);
1095
- groupSubject = meta.subject;
1096
- groupParticipants = meta.participants;
1097
- }
1098
- const messageTimestampSeconds = parseWhatsAppTimestampSeconds(msg.messageTimestamp);
1099
- const messageTimestampMs = messageTimestampSeconds !== void 0 ? messageTimestampSeconds * 1e3 : void 0;
1100
- const access = await checkInboundAccessControl({
1101
- cfg: options.loadConfig?.() ?? options.cfg,
1102
- accountId: options.accountId,
1103
- from,
1104
- selfE164: self.e164 ?? null,
1105
- senderE164,
1106
- senderJid: participantJid,
1107
- group,
1108
- pushName: msg.pushName ?? void 0,
1109
- isFromMe: Boolean(msg.key?.fromMe),
1110
- messageTimestampMs,
1111
- connectedAtMs,
1112
- verbose: options.verbose,
1113
- sock: { sendMessage: (jid, content) => sendTrackedMessage(jid, content) },
1114
- remoteJid
1115
- });
1116
- if (!access.allowed) return null;
1117
- return {
1118
- id,
1119
- remoteJid,
1120
- group,
1121
- participantJid,
1122
- from,
1123
- senderE164,
1124
- groupSubject,
1125
- groupParticipants,
1126
- messageTimestampMs,
1127
- access
1128
- };
1129
- };
1130
- const buildReadReceiptTarget = (inbound) => inbound.id ? {
1131
- remoteJid: inbound.remoteJid,
1132
- id: inbound.id,
1133
- ...inbound.participantJid ? { participant: inbound.participantJid } : {}
1134
- } : void 0;
1135
- const maybeMarkInboundAsRead = async (target) => {
1136
- if (!target || options.sendReadReceipts === false) return;
1137
- const { id, remoteJid, participant } = target;
1138
- try {
1139
- await withWhatsAppSocketOperationTimeout("readMessages", (getCurrentSock() ?? sock).readMessages([{
1140
- remoteJid,
1141
- id,
1142
- participant,
1143
- fromMe: false
1144
- }]), sendOperationTimeoutMs);
1145
- const suffix = participant ? ` (participant ${participant})` : "";
1146
- logWhatsAppVerbose(options.verbose, `Marked message ${id} as read for ${remoteJid}${suffix}`);
1147
- } catch (err) {
1148
- logWhatsAppVerbose(options.verbose, `Failed to mark message ${id} read: ${String(err)}`);
1149
- }
1150
- };
1151
- const maybeLogSkippedSelfChatReadReceipt = (inbound, target) => {
1152
- if (target?.id && inbound.access.isSelfChat && options.verbose) logWhatsAppVerbose(options.verbose, `Self-chat mode: skipping read receipt for ${target.id}`);
1153
- };
1154
- const maybeMarkNonSelfChatReadReceipt = async (inbound, target) => {
1155
- if (inbound.access.isSelfChat) {
1156
- maybeLogSkippedSelfChatReadReceipt(inbound, target);
1157
- return;
1158
- }
1159
- await maybeMarkInboundAsRead(target);
1160
- };
1161
- const shouldSkipStaleAppend = (msg, upsertType) => {
1162
- if (upsertType !== "append") return false;
1163
- const APPEND_RECENT_GRACE_MS = 6e4;
1164
- const msgTsSeconds = parseWhatsAppTimestampSeconds(msg.messageTimestamp);
1165
- const msgTsMs = msgTsSeconds !== void 0 ? msgTsSeconds * 1e3 : 0;
1166
- const nowMs = Date.now();
1167
- return msgTsMs < (options.appendReplyWindow && nowMs <= options.appendReplyWindow.untilMs ? Math.max(options.appendReplyWindow.afterMs, nowMs - options.appendReplyWindow.maxAgeMs) : connectedAtMs - APPEND_RECENT_GRACE_MS);
1168
- };
1169
- const preparedInboundByDurableId = /* @__PURE__ */ new Map();
1170
- const enrichInboundMessage = async (msg) => {
1171
- const location = extractLocationData(msg.message ?? void 0);
1172
- const locationText = location ? formatLocationText(location) : void 0;
1173
- const contactContext = extractContactContext(msg.message ?? void 0);
1174
- const externalAdReplyContext = extractExternalAdReplyContext(msg.message ?? void 0);
1175
- let mediaKind = extractMediaKind(msg.message ?? void 0);
1176
- let body = extractText(msg.message ?? void 0);
1177
- if (locationText) body = [body, locationText].filter(Boolean).join("\n").trim();
1178
- if (!body && !mediaKind) return null;
1179
- body = body ?? "";
1180
- const commandBody = body;
1181
- const replyContext = describeReplyContext(msg.message);
1182
- let mediaPath;
1183
- let mediaType = mediaKind ? resolveInboundMediaMimetype(msg.message) : void 0;
1184
- const nativeMedia = mediaKind ? {
1185
- contentType: mediaType,
1186
- kind: mediaKind
1187
- } : void 0;
1188
- let mediaFileName;
1189
- const maxBytes = (typeof options.mediaMaxMb === "number" && options.mediaMaxMb > 0 ? options.mediaMaxMb : 50) * 1024 * 1024;
1190
- const saveInboundMedia = async (inboundMedia) => {
1191
- if (!inboundMedia) return;
1192
- mediaPath = inboundMedia.saved.path;
1193
- mediaType = inboundMedia.mimetype;
1194
- mediaFileName = inboundMedia.fileName;
1195
- };
1196
- try {
1197
- await saveInboundMedia(await downloadInboundMedia(msg, sock, maxBytes));
1198
- } catch (err) {
1199
- logWhatsAppVerbose(options.verbose, `Inbound media download failed: ${String(err)}`);
1200
- body = formatInboundMediaUnavailableText({
1201
- body,
1202
- notice: "[whatsapp attachment unavailable]"
1203
- });
1204
- }
1205
- if (!mediaPath && !mediaKind && replyContext?.media) try {
1206
- await saveInboundMedia(await downloadQuotedInboundMedia(msg, sock, maxBytes));
1207
- mediaKind = replyContext.media.kind ?? void 0;
1208
- mediaType = mediaType ?? replyContext.media.contentType ?? void 0;
1209
- } catch (err) {
1210
- logWhatsAppVerbose(options.verbose, `Quoted media download failed: ${String(err)}`);
1211
- body = formatInboundMediaUnavailableText({
1212
- body,
1213
- notice: "[whatsapp quoted attachment unavailable]"
1214
- });
1215
- }
1216
- return {
1217
- body,
1218
- commandBody,
1219
- location: location ?? void 0,
1220
- contactContext,
1221
- externalAdReplyContext,
1222
- replyContext,
1223
- mediaPath,
1224
- mediaType,
1225
- mediaFileName,
1226
- mediaKind,
1227
- nativeMedia
1228
- };
1229
- };
1230
- const enqueueInboundMessage = async (msg, inbound, enriched, durable) => {
1231
- const chatJid = inbound.remoteJid;
1232
- const sendComposing = async () => {
1233
- const currentSock = getCurrentSock();
1234
- if (!currentSock) return;
1235
- try {
1236
- await assertCanSendToJid(chatJid, currentSock);
1237
- await sendApiSocketOperations.sendPresenceUpdate("composing", chatJid);
1238
- } catch (err) {
1239
- logWhatsAppVerbose(options.verbose, `Presence update failed: ${String(err)}`);
1240
- }
1241
- };
1242
- const reply = async (text, optionsResult) => {
1243
- const resolved = await resolveOutboundMentionsForGroup(chatJid, text);
1244
- return normalizeWhatsAppSendResult(await sendTrackedMessage(chatJid, addWhatsAppOutboundMentionsToContent({ text: resolved.text }, resolved.mentionedJids), optionsResult), "text");
1245
- };
1246
- const sendMedia = async (payload, optionsValue) => {
1247
- const previewPayload = await addWhatsAppImagePreviewFields(payload);
1248
- return normalizeWhatsAppSendResult(await sendTrackedMessage(chatJid, await applyOutboundMentionsToContent(chatJid, previewPayload), optionsValue), "media");
1249
- };
1250
- const timestamp = inbound.messageTimestampMs;
1251
- const mentionedJids = extractMentionedJids(msg.message);
1252
- const senderName = msg.pushName ?? void 0;
1253
- inboundLogger.info({
1254
- from: inbound.from,
1255
- to: self.e164 ?? "me",
1256
- body: enriched.body,
1257
- mediaPath: enriched.mediaPath,
1258
- mediaType: enriched.mediaType,
1259
- mediaFileName: enriched.mediaFileName,
1260
- timestamp
1261
- }, "inbound message");
1262
- const media = enriched.mediaPath || enriched.mediaType || enriched.mediaFileName || enriched.mediaKind ? {
1263
- path: enriched.mediaPath,
1264
- type: enriched.mediaType,
1265
- fileName: enriched.mediaFileName,
1266
- kind: enriched.mediaKind
1267
- } : void 0;
1268
- const groupMentions = mentionedJids ? { jids: mentionedJids } : void 0;
1269
- const group = inbound.group && (inbound.groupSubject || inbound.groupParticipants?.length || groupMentions) ? {
1270
- subject: inbound.groupSubject,
1271
- participants: inbound.groupParticipants,
1272
- mentions: groupMentions
1273
- } : void 0;
1274
- const channelStructuredContext = [
1275
- ...enriched.nativeMedia ? [{
1276
- label: "WhatsApp media",
1277
- source: "whatsapp",
1278
- type: "media",
1279
- payload: enriched.nativeMedia
1280
- }] : [],
1281
- ...enriched.contactContext ? [{
1282
- label: "WhatsApp contact",
1283
- source: "whatsapp",
1284
- type: enriched.contactContext.kind,
1285
- payload: enriched.contactContext
1286
- }] : [],
1287
- ...enriched.externalAdReplyContext ? [{
1288
- label: "WhatsApp external ad reply",
1289
- source: "whatsapp",
1290
- type: "external_ad_reply",
1291
- payload: enriched.externalAdReplyContext
1292
- }] : []
1293
- ];
1294
- const inboundMessage = withDeprecatedWebInboundMessageFlatAliases({
1295
- admission: inbound.access.admission,
1296
- event: {
1297
- id: inbound.id,
1298
- timestamp
1299
- },
1300
- payload: {
1301
- body: enriched.body,
1302
- commandBody: enriched.commandBody,
1303
- location: enriched.location ?? void 0,
1304
- channelStructuredContext: channelStructuredContext.length > 0 ? channelStructuredContext : void 0,
1305
- media
1306
- },
1307
- platform: {
1308
- chatJid: inbound.remoteJid,
1309
- recipientJid: self.e164 ?? "me",
1310
- pushName: senderName,
1311
- sender: resolveComparableIdentity({
1312
- jid: inbound.participantJid,
1313
- e164: inbound.senderE164 ?? void 0,
1314
- name: senderName
1315
- }),
1316
- senderJid: inbound.participantJid,
1317
- senderE164: inbound.senderE164 ?? void 0,
1318
- senderName,
1319
- self,
1320
- selfJid: self.jid ?? void 0,
1321
- selfLid: self.lid ?? void 0,
1322
- selfE164: self.e164 ?? void 0,
1323
- fromMe: Boolean(msg.key?.fromMe),
1324
- sendComposing,
1325
- reply,
1326
- sendMedia
1327
- },
1328
- quote: enriched.replyContext ? {
1329
- context: enriched.replyContext,
1330
- id: enriched.replyContext.id,
1331
- body: enriched.replyContext.body,
1332
- media: enriched.replyContext.media,
1333
- sender: {
1334
- displayName: enriched.replyContext.sender?.label ?? void 0,
1335
- jid: enriched.replyContext.sender?.jid ?? void 0,
1336
- e164: enriched.replyContext.sender?.e164 ?? void 0
1337
- }
1338
- } : void 0,
1339
- group,
1340
- turnAdoptionLifecycle: durable.turnAdoptionLifecycle,
1341
- readReceipt: durable.readReceipt,
1342
- receiveOrder: durable.receiveOrder
1343
- });
1344
- const debounceKey = buildInboundDebounceKey(inboundMessage);
1345
- if (debounceKey) {
1346
- inboundMessage.debounceKey = debounceKey;
1347
- if (inboundDebounceMs > 0 && shouldDebounceInboundMessage(inboundMessage)) {
1348
- pendingDebounceKeys.add(debounceKey);
1349
- publishPendingWorkState();
1350
- notifyDebounceWork();
1351
- }
1352
- }
1353
- if (inboundMessage.event.id) {
1354
- const admission = requireWhatsAppInboundAdmission(inboundMessage);
1355
- cacheInboundMessageMeta(admission.accountId, inboundMessage.platform.chatJid, inboundMessage.event.id, {
1356
- participant: inboundMessage.platform.senderJid,
1357
- participantE164: admission.conversation.kind === "direct" ? inboundMessage.platform.senderE164 : void 0,
1358
- body: inboundMessage.payload.body,
1359
- media: enriched.nativeMedia,
1360
- fromMe: inboundMessage.platform.fromMe
1361
- });
1362
- }
1363
- await debouncer.enqueue(inboundMessage);
1364
- };
1365
- const processDurableInboundMessage = async (admission, lifecycle) => {
1366
- const { message: msg, ...context } = admission;
1367
- rememberBaileysMessage(msg.key?.remoteJid, msg.key?.id, msg.message);
1368
- const remoteJid = msg.key?.remoteJid;
1369
- const id = msg.key?.id;
1370
- const durableId = remoteJid && id ? createHash("sha256").update(`${remoteJid}\n${id}`).digest("hex") : void 0;
1371
- const preparation = durableId ? preparedInboundByDurableId.get(durableId) : void 0;
1372
- if (durableId) preparedInboundByDurableId.delete(durableId);
1373
- if (context.skipRecentOutboundEcho === true) return "completed";
1374
- const prepared = await preparation;
1375
- if (prepared === null) return "completed";
1376
- const inbound = prepared ?? await normalizeInboundMessage(msg);
1377
- if (!inbound) return "completed";
1378
- if (await maybeResolveWhatsAppQuestionReaction({
1379
- cfg: options.loadConfig?.() ?? options.cfg,
1380
- accountId: options.accountId,
1381
- msg,
1382
- senderId: inbound.senderE164 ?? inbound.from,
1383
- resolveReactionTargetJids,
1384
- logDebug: (message) => logWhatsAppVerbose(options.verbose, message)
1385
- })) return "completed";
1386
- const readReceipt = buildReadReceiptTarget(inbound);
1387
- const deliveryReadReceipt = inbound.access.isSelfChat ? void 0 : readReceipt;
1388
- if (context.skipStaleAppend === true) {
1389
- await maybeMarkNonSelfChatReadReceipt(inbound, readReceipt);
1390
- return "completed";
1391
- }
1392
- const enriched = await enrichInboundMessage(msg);
1393
- if (!enriched) {
1394
- await maybeMarkNonSelfChatReadReceipt(inbound, deliveryReadReceipt);
1395
- return "completed";
1396
- }
1397
- recordAcceptedInboundActivity(options.accountId);
1398
- await enqueueInboundMessage(msg, inbound, enriched, {
1399
- readReceipt: deliveryReadReceipt,
1400
- receiveOrder: context.receiveOrder ?? context.receivedAt,
1401
- turnAdoptionLifecycle: lifecycle
1402
- });
1403
- return "deferred";
1404
- };
1405
- const durableInboundMonitor = createWhatsAppIngressMonitor({
1406
- queue: durableInboundQueue,
1407
- dispatch: async (admission, lifecycle) => ({ kind: await processDurableInboundMessage(admission, lifecycle) }),
1408
- pollIntervalMs: WHATSAPP_INGRESS_DRAIN_INTERVAL_MS,
1409
- onLog: (message) => inboundLogger.warn({ message }, "whatsapp ingress drain"),
1410
- onError: (error) => inboundLogger.error({ error: formatError(error) }, "whatsapp durable inbound drain failed"),
1411
- onActivityChange: (active) => {
1412
- durableIngressActive = active;
1413
- publishPendingWorkState();
1414
- }
1415
- });
1416
- const handleMessagesUpsert = async (upsert) => {
1417
- if (upsert.type !== "notify" && upsert.type !== "append") return;
1418
- for (const msg of upsert.messages ?? []) {
1419
- rememberBaileysMessage(msg.key?.remoteJid, msg.key?.id, msg.message);
1420
- const receiveOrder = nextReceiveOrder++;
1421
- if (await maybeResolveWhatsAppApprovalReaction({
1422
- cfg: options.loadConfig?.() ?? options.cfg,
1423
- accountId: options.accountId,
1424
- msg,
1425
- selfJid: self.jid,
1426
- selfLid: self.lid,
1427
- resolveInboundJid,
1428
- resolveReactionTargetJids,
1429
- logVerboseMessage: (message) => logWhatsAppVerbose(options.verbose, message)
1430
- })) continue;
1431
- const receivedAt = Date.now();
1432
- const skipStaleAppend = shouldSkipStaleAppend(msg, upsert.type);
1433
- const skipRecentOutboundEcho = shouldSkipRecentOutboundEcho(msg);
1434
- const remoteJid = msg.key?.remoteJid;
1435
- const id = msg.key?.id;
1436
- const durableId = remoteJid && id ? createHash("sha256").update(`${remoteJid}\n${id}`).digest("hex") : void 0;
1437
- let resolvePrepared;
1438
- if (durableId && !preparedInboundByDurableId.has(durableId)) {
1439
- if (preparedInboundByDurableId.size >= 1e3) {
1440
- const oldest = preparedInboundByDurableId.keys().next().value;
1441
- if (oldest !== void 0) preparedInboundByDurableId.delete(oldest);
1442
- }
1443
- preparedInboundByDurableId.set(durableId, new Promise((resolve) => {
1444
- resolvePrepared = resolve;
1445
- }));
1446
- }
1447
- const finishPreparation = (inbound, keepForDrain = false) => {
1448
- resolvePrepared?.(inbound);
1449
- if (!keepForDrain && durableId && resolvePrepared) preparedInboundByDurableId.delete(durableId);
1450
- };
1451
- let result;
1452
- try {
1453
- result = await durableInboundMonitor.admit({
1454
- message: msg,
1455
- upsertType: upsert.type,
1456
- skipStaleAppend,
1457
- skipRecentOutboundEcho,
1458
- receivedAt,
1459
- receiveOrder
1460
- }, { receivedAt });
1461
- } catch (error) {
1462
- finishPreparation(void 0);
1463
- const formattedError = formatError(error);
1464
- inboundLogger.error({ error: formattedError }, "failed persisting durable WhatsApp inbound after retries; message dropped");
1465
- inboundConsoleLog.error(`Failed persisting durable WhatsApp inbound after retries; message dropped: ${formattedError}`);
1466
- continue;
1467
- }
1468
- if (result.kind === "durable" && result.queueResult.kind === "completed") {
1469
- finishPreparation(void 0);
1470
- const inbound = await normalizeInboundMessage(msg);
1471
- if (inbound) await maybeMarkNonSelfChatReadReceipt(inbound, buildReadReceiptTarget(inbound));
1472
- } else if (result.kind === "durable" && result.queueResult.kind === "accepted") if (skipRecentOutboundEcho) finishPreparation(null);
1473
- else try {
1474
- finishPreparation(await normalizeInboundMessage(msg), true);
1475
- } catch (error) {
1476
- finishPreparation(void 0);
1477
- inboundLogger.warn({ error: formatError(error) }, "failed preparing WhatsApp inbound identity; durable drain will normalize again");
1478
- }
1479
- else finishPreparation(void 0);
1480
- }
1481
- };
1482
- const handleMessagesUpsertEvent = (upsert) => {
1483
- const task = handleMessagesUpsert(upsert).catch((err) => {
1484
- inboundLogger.error({ error: String(err) }, "messages.upsert handler error");
1485
- inboundConsoleLog.error(`Messages upsert handler error: ${String(err)}`);
1486
- });
1487
- pendingMessageHandlers.add(task);
1488
- publishPendingWorkState();
1489
- task.finally(() => {
1490
- pendingMessageHandlers.delete(task);
1491
- publishPendingWorkState();
1492
- });
1493
- };
1494
- const drainDebouncedInboundMessages = async () => {
1495
- while (pendingDebounceKeys.size > 0 || activeInboundFlushes.size > 0) {
1496
- const debounceKeys = Array.from(pendingDebounceKeys);
1497
- if (debounceKeys.length > 0) await Promise.all(debounceKeys.map((key) => debouncer.flushKey(key)));
1498
- const flushes = Array.from(activeInboundFlushes);
1499
- if (flushes.length > 0) await Promise.allSettled(flushes);
1500
- await Promise.resolve();
1501
- }
1502
- };
1503
- const drainInboundBeforeSocketClose = async () => {
1504
- groupMetadataCacheClosed = true;
1505
- for (;;) {
1506
- await drainDebouncedInboundMessages();
1507
- if (pendingMessageHandlers.size === 0) break;
1508
- const handlers = Array.from(pendingMessageHandlers);
1509
- await Promise.race([Promise.allSettled(handlers), waitForDebounceWorkOrIdle(handlers)]);
1510
- if (pendingMessageHandlers.size === 0 && pendingDebounceKeys.size === 0 && activeInboundFlushes.size === 0) break;
1511
- }
1512
- await drainDebouncedInboundMessages();
1513
- for (;;) {
1514
- await durableInboundMonitor.waitForIdle();
1515
- if (pendingDebounceKeys.size === 0 && activeInboundFlushes.size === 0) break;
1516
- await drainDebouncedInboundMessages();
1517
- }
1518
- await durableInboundMonitor.stop();
1519
- };
1520
- const drainInboundBeforeSocketCloseWithTimeout = async () => {
1521
- let timeout = null;
1522
- try {
1523
- await Promise.race([drainInboundBeforeSocketClose(), new Promise((_, reject) => {
1524
- timeout = setTimeout(() => {
1525
- reject(/* @__PURE__ */ new Error(`Timed out draining WhatsApp inbound debounce after ${INBOUND_CLOSE_DRAIN_TIMEOUT_MS}ms`));
1526
- }, INBOUND_CLOSE_DRAIN_TIMEOUT_MS);
1527
- timeout.unref?.();
1528
- })]);
1529
- } finally {
1530
- if (timeout) clearTimeout(timeout);
1531
- durableInboundMonitor.stop();
1532
- }
1533
- };
1534
- const handleConnectionUpdate = (update) => {
1535
- try {
1536
- if ("reachoutTimeLock" in update) rememberReachoutTimeLock(update.reachoutTimeLock);
1537
- if (update.connection === "close") {
1538
- if (options.socketRef?.current === sock) options.socketRef.current = null;
1539
- const status = getStatusCode(update.lastDisconnect?.error);
1540
- resolveClose({
1541
- status,
1542
- isLoggedOut: status === LOGGED_OUT_STATUS,
1543
- error: update.lastDisconnect?.error
1544
- });
1545
- }
1546
- } catch (err) {
1547
- inboundLogger.error({ error: String(err) }, "connection.update handler error");
1548
- resolveClose({
1549
- status: void 0,
1550
- isLoggedOut: false,
1551
- error: err
1552
- });
1553
- }
1554
- };
1555
- const attachSockListener = (event, listener) => attachEmitterListener(sock.ev, event, listener);
1556
- const detachMessagesUpsert = attachSockListener("messages.upsert", handleMessagesUpsertEvent);
1557
- const detachConnectionUpdate = attachSockListener("connection.update", handleConnectionUpdate);
1558
- const isFullGroupMetadataUpdate = (update) => typeof update.id === "string" && typeof update.subject === "string" && Array.isArray(update.participants);
1559
- const rememberFullGroupMetadataUpdate = (jid, meta) => {
1560
- if (groupMetadataCacheClosed) return;
1561
- rememberWhatsAppBaileysCacheEntry(options.baileysGroupMetaCache, jid, meta, GROUP_META_TTL_MS);
1562
- publishedGroupMetadataJids.add(jid);
1563
- invalidatedGroupMetadataJids.delete(jid);
1564
- rememberGroupMetadataCacheEntry(groupMetadataCache, jid, summarizeGroupMetaForReconnectCache(meta));
1565
- groupMetaCache.delete(jid);
1566
- };
1567
- const forgetFullGroupMetadata = (jid) => {
1568
- options.baileysGroupMetaCache?.delete(jid);
1569
- groupMetadataCache.delete(jid);
1570
- groupMetaCache.delete(jid);
1571
- publishedGroupMetadataJids.delete(jid);
1572
- invalidatedGroupMetadataJids.add(jid);
1573
- };
1574
- const detachGroupsUpsert = attachSockListener("groups.upsert", ((groups) => {
1575
- for (const group of groups) if (group.id) rememberFullGroupMetadataUpdate(group.id, group);
1576
- }));
1577
- const detachGroupsUpdate = attachSockListener("groups.update", ((updates) => {
1578
- for (const update of updates) {
1579
- if (!update.id) continue;
1580
- if (isFullGroupMetadataUpdate(update)) {
1581
- rememberFullGroupMetadataUpdate(update.id, update);
1582
- continue;
1583
- }
1584
- forgetFullGroupMetadata(update.id);
1585
- }
1586
- }));
1587
- const detachGroupParticipantsUpdate = attachSockListener("group-participants.update", ((update) => {
1588
- forgetFullGroupMetadata(update.id);
1589
- }));
1590
- durableInboundMonitor.start();
1591
- (async () => {
1592
- try {
1593
- const groups = await sock.groupFetchAllParticipating();
1594
- if (groupMetadataCacheClosed) return;
1595
- for (const [jid, meta] of Object.entries(groups ?? {})) if (meta && !publishedGroupMetadataJids.has(jid) && !invalidatedGroupMetadataJids.has(jid)) {
1596
- rememberGroupMetadataCacheEntry(groupMetadataCache, jid, summarizeGroupMetaForReconnectCache(meta));
1597
- rememberWhatsAppBaileysCacheEntry(options.baileysGroupMetaCache, jid, meta, GROUP_META_TTL_MS);
1598
- publishedGroupMetadataJids.add(jid);
1599
- }
1600
- logWhatsAppVerbose(options.verbose, `Hydrated ${Object.keys(groups ?? {}).length} participating groups on connect`);
1601
- } catch (err) {
1602
- const error = String(err);
1603
- inboundLogger.warn({ error }, "failed hydrating participating groups on connect");
1604
- inboundConsoleLog.warn(`Failed hydrating participating groups on connect: ${error}`);
1605
- logWhatsAppVerbose(options.verbose, `Failed to hydrate participating groups on connect: ${error}`);
1606
- }
1607
- })();
1608
- const sendApi = createWebSendApi({
1609
- sock: sendApiSocketOperations,
1610
- defaultAccountId: options.accountId,
1611
- resolveOutboundMentions: ({ jid, text }) => resolveOutboundMentionsForGroup(jid, text),
1612
- authDir: options.authDir
1613
- });
1614
- return {
1615
- close: async () => {
1616
- try {
1617
- detachMessagesUpsert();
1618
- detachConnectionUpdate();
1619
- detachGroupsUpsert();
1620
- detachGroupsUpdate();
1621
- detachGroupParticipantsUpdate();
1622
- await drainInboundBeforeSocketCloseWithTimeout();
1623
- } catch (err) {
1624
- logWhatsAppVerbose(options.verbose, `Inbound close drain failed: ${String(err)}`);
1625
- }
1626
- try {
1627
- closeInboundMonitorSocket(sock);
1628
- } catch (err) {
1629
- logWhatsAppVerbose(options.verbose, `Socket close failed: ${String(err)}`);
1630
- }
1631
- },
1632
- onClose,
1633
- signalClose: (reason) => {
1634
- resolveClose(reason ?? {
1635
- status: void 0,
1636
- isLoggedOut: false,
1637
- error: "closed"
1638
- });
1639
- },
1640
- assertSendReady: assertCanSendTo,
1641
- sendComposingTo: sendApi.sendComposingTo,
1642
- sendMessage: sendApi.sendMessage,
1643
- sendPoll: sendApi.sendPoll,
1644
- sendReaction: sendApi.sendReaction
1645
- };
1646
- }
1647
- async function monitorWebInbox(options) {
1648
- const socketTiming = options.socketTiming ?? resolveWhatsAppSocketTiming();
1649
- const recentMessageKeys = options.recentMessageKeys ?? /* @__PURE__ */ new Map();
1650
- const baileysGroupMetaCache = options.baileysGroupMetaCache ?? /* @__PURE__ */ new Map();
1651
- const sock = await createWaSocket(false, options.verbose, {
1652
- authDir: options.authDir,
1653
- ...socketTiming,
1654
- getMessage: async (key) => key.id && key.remoteJid ? readWhatsAppBaileysCacheEntry(recentMessageKeys, `${key.remoteJid}:${key.id}`) : void 0,
1655
- cachedGroupMetadata: async (jid) => {
1656
- const meta = readWhatsAppBaileysCacheEntry(baileysGroupMetaCache, jid);
1657
- return meta?.participants?.length ? meta : void 0;
1658
- }
1659
- });
1660
- try {
1661
- await waitForWaConnection(sock, { timeoutMs: socketTiming.connectTimeoutMs });
1662
- } catch (err) {
1663
- closeInboundMonitorSocket(sock);
1664
- throw err;
1665
- }
1666
- const shouldDebounce = options.shouldDebounce;
1667
- const normalizeAdmittedWebInboundMessage = (msg) => requireAdmittedWhatsAppInboundMessage(normalizeWebInboundMessage(msg));
1668
- return attachWebInboxToSocket({
1669
- ...options,
1670
- onMessage: async (msg) => {
1671
- await options.onMessage(normalizeAdmittedWebInboundMessage(msg));
1672
- },
1673
- shouldDebounce: shouldDebounce ? (msg) => shouldDebounce(normalizeAdmittedWebInboundMessage(msg)) : void 0,
1674
- socketTiming,
1675
- sock,
1676
- recentMessageKeys,
1677
- baileysGroupMetaCache
1678
- });
1679
- }
1680
- //#endregion
1681
- //#region extensions/whatsapp/src/auto-reply/loggers.ts
1682
- const whatsappLog = createSubsystemLogger("gateway/channels/whatsapp");
1683
- const whatsappInboundLog = whatsappLog.child("inbound");
1684
- const whatsappOutboundLog = whatsappLog.child("outbound");
1685
- const whatsappHeartbeatLog = whatsappLog.child("heartbeat");
1686
- //#endregion
1687
- //#region extensions/whatsapp/src/auto-reply/mentions.ts
1688
- function buildMentionConfig(cfg, agentId, options) {
1689
- return {
1690
- mentionRegexes: buildMentionRegexes(cfg, agentId, options),
1691
- allowFrom: cfg.channels?.whatsapp?.allowFrom
1692
- };
1693
- }
1694
- function resolveMentionTargets(msg, authDir) {
1695
- return {
1696
- normalizedMentions: getMentionIdentities(msg, authDir),
1697
- self: getSelfIdentity(msg, authDir)
1698
- };
1699
- }
1700
- function isBotMentionedFromTargets(msg, mentionCfg, targets) {
1701
- const clean = (text) => normalizeMentionText(text);
1702
- const explicitSelfChatOverride = typeof mentionCfg.isSelfChat === "boolean";
1703
- const isGroupConversation = requireWhatsAppInboundAdmission(msg).conversation.kind === "group";
1704
- const isSelfChat = explicitSelfChatOverride ? Boolean(mentionCfg.isSelfChat) : isSelfChatMode(targets.self.e164, mentionCfg.allowFrom) && !isGroupConversation;
1705
- const hasMentions = targets.normalizedMentions.length > 0;
1706
- const hasNativeMentionsOutsideSelfChat = hasMentions && !isSelfChat;
1707
- if (hasNativeMentionsOutsideSelfChat) {
1708
- for (const mention of targets.normalizedMentions) if (identitiesOverlap(targets.self, mention)) return true;
1709
- } else if (hasMentions && isSelfChat) {}
1710
- const bodyClean = clean(msg.payload.body);
1711
- if (mentionCfg.mentionRegexes.some((re) => re.test(bodyClean))) return true;
1712
- if (hasNativeMentionsOutsideSelfChat) return false;
1713
- if (targets.self.e164) {
1714
- const selfDigits = targets.self.e164.replace(/\D/g, "");
1715
- if (selfDigits) {
1716
- if (bodyClean.replace(/[^\d]/g, "").includes(selfDigits)) return true;
1717
- const bodyNoSpace = msg.payload.body.replace(/[\s-]/g, "");
1718
- if (new RegExp(`\\+?${selfDigits}`, "i").test(bodyNoSpace)) return true;
1719
- }
1720
- }
1721
- return false;
1722
- }
1723
- function debugMention(msg, mentionCfg, authDir) {
1724
- const mentionTargets = resolveMentionTargets(msg, authDir);
1725
- return {
1726
- wasMentioned: isBotMentionedFromTargets(msg, mentionCfg, mentionTargets),
1727
- details: {
1728
- from: requireWhatsAppInboundAdmission(msg).conversation.id,
1729
- body: msg.payload.body,
1730
- bodyClean: normalizeMentionText(msg.payload.body),
1731
- mentionedJids: msg.group?.mentions?.jids ?? null,
1732
- normalizedMentionedJids: mentionTargets.normalizedMentions.length ? mentionTargets.normalizedMentions.map((identity) => getComparableIdentityValues(identity)) : null,
1733
- selfJid: msg.platform.self?.jid ?? msg.platform.selfJid ?? null,
1734
- selfLid: msg.platform.self?.lid ?? msg.platform.selfLid ?? null,
1735
- selfE164: msg.platform.self?.e164 ?? msg.platform.selfE164 ?? null,
1736
- resolvedSelf: mentionTargets.self
1737
- }
1738
- };
1739
- }
1740
- function resolveOwnerList(mentionCfg, selfE164) {
1741
- const allowFrom = mentionCfg.allowFrom;
1742
- return (Array.isArray(allowFrom) && allowFrom.length > 0 ? allowFrom : selfE164 ? [selfE164] : []).filter((entry) => Boolean(entry && entry !== "*")).map((entry) => normalizeE164(entry)).filter((entry) => Boolean(entry));
1743
- }
1744
- //#endregion
1745
- //#region extensions/whatsapp/src/auto-reply/monitor-state.ts
1746
- function cloneStatus(status) {
1747
- return {
1748
- ...status,
1749
- lastDisconnect: status.lastDisconnect ? { ...status.lastDisconnect } : null
1750
- };
1751
- }
1752
- function isTerminalHealthState(healthState) {
1753
- return healthState === "conflict" || healthState === "logged-out" || healthState === "stopped";
1754
- }
1755
- function createWebChannelStatusController(statusSink) {
1756
- let lastDisconnectWasWatchdogRecovery = false;
1757
- const status = {
1758
- running: true,
1759
- connected: false,
1760
- reconnectAttempts: 0,
1761
- lastConnectedAt: null,
1762
- lastDisconnect: null,
1763
- lastInboundAt: null,
1764
- lastMessageAt: null,
1765
- lastEventAt: null,
1766
- lastError: null,
1767
- busy: false,
1768
- lastRunActivityAt: null,
1769
- healthState: "starting"
1770
- };
1771
- const emit = () => {
1772
- statusSink?.(cloneStatus(status));
1773
- };
1774
- return {
1775
- emit,
1776
- snapshot: () => status,
1777
- noteConnected(at = Date.now()) {
1778
- Object.assign(status, createConnectedChannelStatusPatch(at));
1779
- Object.assign(status, createTransportActivityStatusPatch(at));
1780
- if (lastDisconnectWasWatchdogRecovery) {
1781
- status.lastDisconnect = null;
1782
- status.reconnectAttempts = 0;
1783
- lastDisconnectWasWatchdogRecovery = false;
1784
- }
1785
- status.lastError = null;
1786
- status.healthState = "healthy";
1787
- status.terminalDisconnect = void 0;
1788
- emit();
1789
- },
1790
- noteInbound(at = Date.now()) {
1791
- status.lastInboundAt = at;
1792
- status.lastMessageAt = at;
1793
- status.lastEventAt = at;
1794
- Object.assign(status, createTransportActivityStatusPatch(at));
1795
- if (status.connected) status.healthState = "healthy";
1796
- emit();
1797
- },
1798
- noteTransportActivity(at = Date.now()) {
1799
- if (status.lastTransportActivityAt === at) return;
1800
- Object.assign(status, createTransportActivityStatusPatch(at));
1801
- emit();
1802
- },
1803
- noteBusy(busy, at = Date.now()) {
1804
- if (status.busy === busy && status.lastRunActivityAt === at) return;
1805
- status.busy = busy;
1806
- status.lastRunActivityAt = at;
1807
- if (status.connected && busy) status.healthState = "healthy";
1808
- emit();
1809
- },
1810
- noteWatchdogStale(at = Date.now()) {
1811
- status.lastEventAt = at;
1812
- if (status.connected) status.healthState = "stale";
1813
- emit();
1814
- },
1815
- noteReconnectAttempts(reconnectAttempts) {
1816
- status.reconnectAttempts = reconnectAttempts;
1817
- emit();
1818
- },
1819
- noteClose(params) {
1820
- const at = params.at ?? Date.now();
1821
- lastDisconnectWasWatchdogRecovery = params.watchdogRecovery === true;
1822
- status.connected = false;
1823
- status.lastEventAt = at;
1824
- status.lastDisconnect = {
1825
- at,
1826
- status: params.statusCode,
1827
- error: params.error,
1828
- loggedOut: Boolean(params.loggedOut)
1829
- };
1830
- status.lastError = params.error ?? null;
1831
- status.reconnectAttempts = params.reconnectAttempts;
1832
- status.healthState = params.healthState;
1833
- emit();
1834
- },
1835
- markStopped(at = Date.now()) {
1836
- status.running = false;
1837
- status.connected = false;
1838
- status.lastEventAt = at;
1839
- status.terminalDisconnect = status.healthState === "logged-out" || status.healthState === "conflict";
1840
- if (!isTerminalHealthState(status.healthState)) status.healthState = "stopped";
1841
- emit();
1842
- }
1843
- };
1844
- }
1845
- //#endregion
1846
- //#region extensions/whatsapp/src/auto-reply/monitor/echo.ts
1847
- function createEchoTracker(params) {
1848
- const recentlySent = /* @__PURE__ */ new Set();
1849
- const maxItems = Math.max(1, params.maxItems ?? 100);
1850
- const buildCombinedKey = (p) => `combined:${p.sessionKey}:${p.combinedBody}`;
1851
- const trim = () => {
1852
- while (recentlySent.size > maxItems) {
1853
- const firstKey = recentlySent.values().next().value;
1854
- if (!firstKey) break;
1855
- recentlySent.delete(firstKey);
1856
- }
1857
- };
1858
- const rememberText = (text, opts) => {
1859
- if (!text) return;
1860
- recentlySent.add(text);
1861
- if (opts.combinedBody && opts.combinedBodySessionKey) recentlySent.add(buildCombinedKey({
1862
- sessionKey: opts.combinedBodySessionKey,
1863
- combinedBody: opts.combinedBody
1864
- }));
1865
- if (opts.logVerboseMessage) params.logVerbose?.(`Added to echo detection set (size now: ${recentlySent.size}): ${truncateUtf16Safe(text, 50)}...`);
1866
- trim();
1867
- };
1868
- return {
1869
- rememberText,
1870
- has: (key) => recentlySent.has(key),
1871
- forget: (key) => {
1872
- recentlySent.delete(key);
1873
- },
1874
- buildCombinedKey
1875
- };
1876
- }
1877
- //#endregion
1878
- //#region extensions/whatsapp/src/auto-reply/monitor/listener-log.ts
1879
- function formatWhatsAppInboundListeningLog(account) {
1880
- if (account.groupPolicy === "disabled") return "Listening for WhatsApp inbound messages (DM + groups disabled by groupPolicy).";
1881
- if (account.groupPolicy === "allowlist" && !account.hasGroupAllowFrom) return "Listening for WhatsApp inbound messages (DM + group inbound blocked by empty groupPolicy allowlist).";
1882
- const groups = account.groups ?? {};
1883
- if (Object.keys(groups).length === 0) return `Listening for WhatsApp inbound messages (DM + all groups; ${account.groupPolicy === "allowlist" ? "sender allowlist configured" : "no group allowlist configured"}).`;
1884
- if (Object.hasOwn(groups, "*")) return "Listening for WhatsApp inbound messages (DM + all groups; wildcard configured).";
1885
- const explicitGroupCount = Object.keys(groups).length;
1886
- return `Listening for WhatsApp inbound messages (DM + ${explicitGroupCount} configured ${explicitGroupCount === 1 ? "group" : "groups"}).`;
1887
- }
1888
- //#endregion
1889
- //#region extensions/whatsapp/src/auto-reply/monitor/ack-emoji.ts
1890
- const DEFAULT_WHATSAPP_ACK_REACTION = "👀";
1891
- function resolveWhatsAppAckEmoji(params) {
1892
- if (!params.ackConfig) return "";
1893
- return (typeof params.ackConfig === "string" ? params.ackConfig : params.ackConfig.emoji)?.trim() || resolveAgentIdentityEmoji(params.cfg, params.agentId) || DEFAULT_WHATSAPP_ACK_REACTION;
1894
- }
1895
- function resolveAgentIdentityEmoji(cfg, agentId) {
1896
- return resolveAgentIdentity(cfg, agentId)?.emoji?.trim() || void 0;
1897
- }
1898
- //#endregion
1899
- //#region extensions/whatsapp/src/auto-reply/monitor/group-activation.ts
1900
- function hasNamedWhatsAppAccounts(cfg) {
1901
- return Object.keys(cfg.channels?.whatsapp?.accounts ?? {}).some((accountId) => normalizeAccountId(accountId) !== DEFAULT_ACCOUNT_ID);
1902
- }
1903
- function isActivationOnlyEntry(entry) {
1904
- return entry?.groupActivation !== void 0 && typeof entry?.sessionId !== "string" && typeof entry?.updatedAt !== "number";
1905
- }
1906
- /** Resolves group activation for a WhatsApp conversation and backfills scoped session metadata. */
1907
- async function resolveGroupActivationFor(params) {
1908
- const sessionScope = {
1909
- storePath: resolveStorePath(params.cfg.session?.store, { agentId: params.agentId }),
1910
- agentId: params.agentId
1911
- };
1912
- const legacySessionKey = resolveWhatsAppLegacyGroupSessionKey({
1913
- sessionKey: params.sessionKey,
1914
- accountId: params.accountId
1915
- });
1916
- const legacyEntry = legacySessionKey ? getSessionEntry({
1917
- ...sessionScope,
1918
- sessionKey: legacySessionKey
1919
- }) : void 0;
1920
- const scopedEntry = getSessionEntry({
1921
- ...sessionScope,
1922
- sessionKey: params.sessionKey
1923
- });
1924
- const activation = (normalizeAccountId(params.accountId) === DEFAULT_ACCOUNT_ID && hasNamedWhatsAppAccounts(params.cfg) && isActivationOnlyEntry(scopedEntry) ? void 0 : scopedEntry?.groupActivation) ?? legacyEntry?.groupActivation;
1925
- if (activation !== void 0 && scopedEntry?.groupActivation === void 0) {
1926
- if (scopedEntry) await patchSessionEntry({
1927
- ...sessionScope,
1928
- sessionKey: params.sessionKey,
1929
- replaceEntry: true,
1930
- update: (entry) => {
1931
- if (entry.groupActivation !== void 0) return null;
1932
- return {
1933
- ...entry,
1934
- groupActivation: activation
1935
- };
1936
- }
1937
- });
1938
- }
1939
- const defaultActivation = !resolveWhatsAppInboundPolicy({
1940
- cfg: params.cfg,
1941
- accountId: params.accountId
1942
- }).resolveConversationRequireMention(params.conversationId) ? "always" : "mention";
1943
- return normalizeGroupActivation(activation) ?? defaultActivation;
1944
- }
1945
- //#endregion
1946
- //#region extensions/whatsapp/src/auto-reply/monitor/reaction-participant.ts
1947
- function resolveReactionParticipant(msg) {
1948
- const sender = getSenderIdentity(msg);
1949
- return sender.jid ?? sender.lid ?? void 0;
1950
- }
1951
- //#endregion
1952
- //#region extensions/whatsapp/src/auto-reply/monitor/reaction-eligibility.ts
1953
- const DISABLED_REACTION = { status: "disabled" };
1954
- async function resolveWhatsAppReactionEligibility(params) {
1955
- const messageId = params.msg.event.id;
1956
- if (!messageId) return DISABLED_REACTION;
1957
- const admission = requireWhatsAppInboundAdmission(params.msg);
1958
- const accountId = admission.accountId;
1959
- if (resolveWhatsAppReactionLevel({
1960
- cfg: params.cfg,
1961
- accountId
1962
- }).level === "off") return DISABLED_REACTION;
1963
- const scope = params.cfg.messages?.ackReactionScope ?? "group-mentions";
1964
- if (scope === "off" || scope === "none") return DISABLED_REACTION;
1965
- const emoji = resolveWhatsAppAckEmoji({
1966
- cfg: params.cfg,
1967
- agentId: params.agentId,
1968
- ackConfig: params.cfg.messages?.ackReaction
1969
- });
1970
- const directEnabled = scope === "all" || scope === "direct";
1971
- const groupMode = scope === "all" || scope === "group-all" ? "always" : scope === "direct" ? "never" : "mentions";
1972
- const isGroup = admission.conversation.kind === "group";
1973
- const activation = isGroup ? await resolveGroupActivationFor({
1974
- cfg: params.cfg,
1975
- accountId,
1976
- agentId: params.agentId,
1977
- sessionKey: params.sessionKey,
1978
- conversationId: admission.conversation.id
1979
- }) : null;
1980
- if (!shouldAckReactionForWhatsApp({
1981
- emoji,
1982
- isDirect: admission.conversation.kind === "direct",
1983
- isGroup,
1984
- directEnabled,
1985
- groupMode,
1986
- wasMentioned: (params.msg.groupMention?.wasMentioned ?? params.msg.wasMentioned) === true,
1987
- groupActivated: activation === "always"
1988
- })) return DISABLED_REACTION;
1989
- const participant = resolveReactionParticipant(params.msg);
1990
- return {
1991
- status: "prepared",
1992
- chatId: params.msg.platform.chatJid,
1993
- messageId,
1994
- emoji,
1995
- reactionOptions: {
1996
- verbose: params.verbose,
1997
- fromMe: false,
1998
- ...participant ? { participant } : {},
1999
- accountId,
2000
- cfg: params.cfg
2001
- }
2002
- };
2003
- }
2004
- //#endregion
2005
- //#region extensions/whatsapp/src/auto-reply/monitor/ack-reaction.ts
2006
- async function maybeSendAckReaction(params) {
2007
- const eligibility = await resolveWhatsAppReactionEligibility({
2008
- cfg: params.cfg,
2009
- msg: params.msg,
2010
- agentId: params.agentId,
2011
- sessionKey: params.sessionKey,
2012
- verbose: params.verbose
2013
- });
2014
- if (eligibility.status === "disabled") return null;
2015
- const { chatId, messageId, emoji, reactionOptions } = eligibility;
2016
- params.info({
2017
- chatId,
2018
- messageId,
2019
- emoji
2020
- }, "sending ack reaction");
2021
- return createAckReactionHandle({
2022
- ackReactionValue: emoji,
2023
- send: () => sendReactionWhatsApp(chatId, messageId, emoji, reactionOptions),
2024
- remove: () => sendReactionWhatsApp(chatId, messageId, "", reactionOptions),
2025
- onSendError: (err) => {
2026
- params.warn({
2027
- error: formatError(err),
2028
- chatId,
2029
- messageId
2030
- }, "failed to send ack reaction");
2031
- logVerbose(`WhatsApp ack reaction failed for chat ${chatId}: ${formatError(err)}`);
2032
- }
2033
- });
2034
- }
2035
- //#endregion
2036
- //#region extensions/whatsapp/src/auto-reply/monitor/broadcast.ts
2037
- function buildBroadcastRouteKeys(params) {
2038
- const admission = requireWhatsAppInboundAdmission(params.msg);
2039
- const sessionKey = buildAgentSessionKey({
2040
- agentId: params.agentId,
2041
- channel: "whatsapp",
2042
- accountId: params.route.accountId,
2043
- peer: {
2044
- kind: admission.conversation.kind,
2045
- id: params.peerId
2046
- },
2047
- dmScope: params.cfg.session?.dmScope,
2048
- identityLinks: params.cfg.session?.identityLinks
2049
- });
2050
- const mainSessionKey = buildAgentMainSessionKey({
2051
- agentId: params.agentId,
2052
- mainKey: DEFAULT_MAIN_KEY
2053
- });
2054
- return {
2055
- sessionKey,
2056
- mainSessionKey,
2057
- lastRoutePolicy: deriveLastRoutePolicy({
2058
- sessionKey,
2059
- mainSessionKey
2060
- })
2061
- };
2062
- }
2063
- async function maybeBroadcastMessage(params) {
2064
- const broadcastAgents = params.cfg.broadcast?.[params.peerId];
2065
- if (!broadcastAgents || !Array.isArray(broadcastAgents)) return false;
2066
- if (broadcastAgents.length === 0) return false;
2067
- const strategy = params.cfg.broadcast?.strategy || "parallel";
2068
- whatsappInboundLog.info(`Broadcasting message to ${broadcastAgents.length} agents (${strategy})`);
2069
- const agentIds = params.cfg.agents?.list?.map((agent) => normalizeAgentId(agent.id));
2070
- const hasKnownAgents = (agentIds?.length ?? 0) > 0;
2071
- const isGroupConversation = requireWhatsAppInboundAdmission(params.msg).conversation.kind === "group";
2072
- const groupHistorySnapshot = isGroupConversation ? params.groupHistories.get(params.groupHistoryKey) ?? [] : void 0;
2073
- const processForAgent = async (agentId) => {
2074
- const normalizedAgentId = normalizeAgentId(agentId);
2075
- if (hasKnownAgents && !agentIds?.includes(normalizedAgentId)) {
2076
- whatsappInboundLog.warn(`Broadcast agent ${agentId} not found in agents.list; skipping`);
2077
- return false;
2078
- }
2079
- const routeKeys = buildBroadcastRouteKeys({
2080
- cfg: params.cfg,
2081
- msg: params.msg,
2082
- route: params.route,
2083
- peerId: params.peerId,
2084
- agentId: normalizedAgentId
2085
- });
2086
- const baseAgentRoute = {
2087
- ...params.route,
2088
- agentId: normalizedAgentId,
2089
- ...routeKeys
2090
- };
2091
- const agentRoute = isGroupConversation ? resolveWhatsAppGroupSessionRoute(baseAgentRoute) : baseAgentRoute;
2092
- try {
2093
- const opts = {
2094
- groupHistory: groupHistorySnapshot,
2095
- suppressGroupHistoryClear: true
2096
- };
2097
- if (params.preflightAudioTranscript !== void 0) opts.preflightAudioTranscript = params.preflightAudioTranscript;
2098
- if (params.ackAlreadySent === true) opts.ackAlreadySent = true;
2099
- if (params.ackReaction !== void 0) opts.ackReaction = params.ackReaction;
2100
- return await params.processMessage(params.msg, agentRoute, params.groupHistoryKey, opts);
2101
- } catch (err) {
2102
- whatsappInboundLog.error(`Broadcast agent ${agentId} failed: ${formatError(err)}`);
2103
- return false;
2104
- }
2105
- };
2106
- if (strategy === "sequential") for (const agentId of broadcastAgents) await processForAgent(agentId);
2107
- else await Promise.allSettled(broadcastAgents.map(processForAgent));
2108
- if (isGroupConversation) params.groupHistories.set(params.groupHistoryKey, []);
2109
- return true;
2110
- }
2111
- //#endregion
2112
- //#region extensions/whatsapp/src/auto-reply/monitor/commands.ts
2113
- function stripMentionsForCommand(text, mentionRegexes, selfE164) {
2114
- let result = text;
2115
- for (const re of mentionRegexes) result = result.replace(re, " ");
2116
- if (selfE164) {
2117
- const digits = selfE164.replace(/\D/g, "");
2118
- if (digits) {
2119
- const pattern = new RegExp(`\\+?${digits}`, "g");
2120
- result = result.replace(pattern, " ");
2121
- }
2122
- }
2123
- return result.replace(/\s+/g, " ").trim();
2124
- }
2125
- //#endregion
2126
- //#region extensions/whatsapp/src/auto-reply/monitor/group-members.ts
2127
- function appendNormalizedUnique(entries, seen, ordered) {
2128
- for (const entry of entries) {
2129
- const normalized = normalizeE164(entry) ?? entry;
2130
- if (!normalized || seen.has(normalized)) continue;
2131
- seen.add(normalized);
2132
- ordered.push(normalized);
2133
- }
2134
- }
2135
- function noteGroupMember(groupMemberNames, conversationId, e164, name) {
2136
- if (!e164 || !name) return;
2137
- const key = normalizeE164(e164) ?? e164;
2138
- if (!key) return;
2139
- let roster = groupMemberNames.get(conversationId);
2140
- if (!roster) {
2141
- roster = /* @__PURE__ */ new Map();
2142
- groupMemberNames.set(conversationId, roster);
2143
- }
2144
- roster.set(key, name);
2145
- }
2146
- function formatGroupMembers(params) {
2147
- const { participants, roster, fallbackE164 } = params;
2148
- const seen = /* @__PURE__ */ new Set();
2149
- const ordered = [];
2150
- if (participants?.length) appendNormalizedUnique(participants, seen, ordered);
2151
- if (roster) appendNormalizedUnique(roster.keys(), seen, ordered);
2152
- if (ordered.length === 0 && fallbackE164) {
2153
- const normalized = normalizeE164(fallbackE164) ?? fallbackE164;
2154
- if (normalized) ordered.push(normalized);
2155
- }
2156
- if (ordered.length === 0) return;
2157
- return ordered.map((entry) => {
2158
- const name = roster?.get(entry);
2159
- return name ? `${name} (${entry})` : entry;
2160
- }).join(", ");
2161
- }
2162
- //#endregion
2163
- //#region extensions/whatsapp/src/auto-reply/monitor/group-gating.ts
2164
- const groupDropWarned = createDedupeCache({
2165
- ttlMs: 0,
2166
- maxSize: 100
2167
- });
2168
- function shouldWarnForGroupDrop(warnKey) {
2169
- return !groupDropWarned.check(warnKey);
2170
- }
2171
- function isOwnerSender(baseMentionConfig, msg, authDir) {
2172
- const sender = normalizeE164(getSenderIdentity(msg, authDir).e164 ?? "");
2173
- if (!sender) return false;
2174
- return resolveOwnerList(baseMentionConfig, getSelfIdentity(msg, authDir).e164 ?? void 0).includes(sender);
2175
- }
2176
- function recordPendingGroupHistoryEntry(params) {
2177
- const senderIdentity = getSenderIdentity(params.msg);
2178
- const sender = senderIdentity.name && senderIdentity.e164 ? `${senderIdentity.name} (${senderIdentity.e164})` : senderIdentity.name ?? senderIdentity.e164 ?? getPrimaryIdentityId(senderIdentity) ?? "Unknown";
2179
- createChannelHistoryWindow({ historyMap: params.groupHistories }).record({
2180
- historyKey: params.groupHistoryKey,
2181
- limit: params.groupHistoryLimit,
2182
- entry: {
2183
- sender,
2184
- body: params.body ?? params.msg.payload.body,
2185
- timestamp: params.msg.event.timestamp,
2186
- id: params.msg.event.id,
2187
- senderJid: senderIdentity.jid ?? params.msg.platform.senderJid,
2188
- ...params.body === void 0 && params.msg.payload.media ? { media: [{
2189
- path: params.msg.payload.media.path,
2190
- url: params.msg.payload.media.url ?? params.msg.payload.media.path,
2191
- contentType: params.msg.payload.media.type,
2192
- kind: params.msg.payload.media.kind ?? void 0
2193
- }] } : {}
2194
- }
2195
- });
2196
- }
2197
- function skipGroupMessageAndStoreHistory(params, verboseMessage, body) {
2198
- params.logVerbose(verboseMessage);
2199
- recordPendingGroupHistoryEntry({
2200
- msg: params.msg,
2201
- body,
2202
- groupHistories: params.groupHistories,
2203
- groupHistoryKey: params.groupHistoryKey,
2204
- groupHistoryLimit: params.groupHistoryLimit
2205
- });
2206
- return { shouldProcess: false };
2207
- }
2208
- async function applyGroupGating(params) {
2209
- const sender = getSenderIdentity(params.msg);
2210
- const self = getSelfIdentity(params.msg, params.authDir);
2211
- const admission = requireWhatsAppInboundAdmission(params.msg);
2212
- const conversationId = admission.conversation.id;
2213
- const inboundPolicy = resolveWhatsAppInboundPolicy({
2214
- cfg: params.cfg,
2215
- accountId: admission.accountId,
2216
- selfE164: self.e164 ?? null
2217
- });
2218
- const conversationGroupPolicy = inboundPolicy.resolveConversationGroupPolicy(conversationId);
2219
- if (conversationGroupPolicy.allowlistEnabled && !conversationGroupPolicy.allowed) {
2220
- const accountId = inboundPolicy.account.accountId;
2221
- if (shouldWarnForGroupDrop(`${accountId}:${conversationId}`)) {
2222
- const groupsPath = resolveWhatsAppGroupsConfigPath({
2223
- cfg: params.cfg,
2224
- accountId
2225
- });
2226
- params.replyLogger.warn({
2227
- conversationId,
2228
- accountId,
2229
- groupsPath
2230
- }, `WhatsApp group ${conversationId} not in ${groupsPath} — inbound dropped. Add the group JID to ${groupsPath} (or add "*" there to admit all groups). Sender authorization still applies.`);
2231
- }
2232
- params.logVerbose(`Dropping message from unregistered WhatsApp group ${conversationId}. Add the group JID to channels.whatsapp.groups, or add "*" there to admit all groups. Sender authorization still applies.`);
2233
- return { shouldProcess: false };
2234
- }
2235
- noteGroupMember(params.groupMemberNames, params.groupHistoryKey, sender.e164 ?? void 0, sender.name ?? void 0);
2236
- const baseMentionConfig = {
2237
- ...params.baseMentionConfig,
2238
- allowFrom: inboundPolicy.configuredAllowFrom
2239
- };
2240
- const mentionConfig = {
2241
- ...buildMentionConfig(params.cfg, params.agentId, {
2242
- provider: "whatsapp",
2243
- conversationId,
2244
- providerPolicy: params.providerMentionPatterns
2245
- }),
2246
- allowFrom: inboundPolicy.configuredAllowFrom
2247
- };
2248
- const mentionMsg = params.mentionText !== void 0 ? {
2249
- ...params.msg,
2250
- payload: {
2251
- ...params.msg.payload,
2252
- body: params.mentionText
2253
- }
2254
- } : {
2255
- ...params.msg,
2256
- payload: {
2257
- ...params.msg.payload,
2258
- body: params.msg.payload.commandBody ?? params.msg.payload.body
2259
- }
2260
- };
2261
- const commandBody = stripMentionsForCommand(mentionMsg.payload.body, mentionConfig.mentionRegexes, self.e164);
2262
- const activationCommand = parseActivationCommand(commandBody);
2263
- const owner = isOwnerSender(baseMentionConfig, params.msg, params.authDir);
2264
- const shouldBypassMention = owner && hasControlCommand(commandBody, params.cfg);
2265
- if (activationCommand.hasCommand && !owner) return skipGroupMessageAndStoreHistory(params, `Ignoring /activation from non-owner in group ${conversationId}`);
2266
- const mentionDebug = debugMention(mentionMsg, mentionConfig, params.authDir);
2267
- params.replyLogger.debug({
2268
- conversationId,
2269
- wasMentioned: mentionDebug.wasMentioned,
2270
- ...mentionDebug.details
2271
- }, "group mention debug");
2272
- const wasMentioned = mentionDebug.wasMentioned;
2273
- const requireMention = await resolveGroupActivationFor({
2274
- cfg: params.cfg,
2275
- accountId: inboundPolicy.account.accountId,
2276
- agentId: params.agentId,
2277
- sessionKey: params.sessionKey,
2278
- conversationId
2279
- }) !== "always";
2280
- const replyContext = getReplyContext(params.msg, params.authDir);
2281
- const mentionDecision = resolveInboundMentionDecision({
2282
- facts: {
2283
- canDetectMention: true,
2284
- wasMentioned,
2285
- implicitMentionKinds: implicitMentionKindWhen("quoted_bot", !(params.selfChatMode === true && identitiesOverlap(self, sender)) && identitiesOverlap(self, replyContext?.sender))
2286
- },
2287
- policy: {
2288
- isGroup: true,
2289
- requireMention,
2290
- allowTextCommands: false,
2291
- hasControlCommand: false,
2292
- commandAuthorized: false
2293
- }
2294
- });
2295
- const effectiveWasMentioned = mentionDecision.effectiveWasMentioned || shouldBypassMention;
2296
- params.msg.groupMention = {
2297
- wasMentioned: effectiveWasMentioned,
2298
- requireMention
2299
- };
2300
- if (!shouldBypassMention && requireMention && mentionDecision.shouldSkip) {
2301
- if (params.deferMissingMention === true) {
2302
- params.logVerbose(`Deferring group mention skip until audio preflight completes in ${conversationId}`);
2303
- return {
2304
- shouldProcess: false,
2305
- needsMentionText: true
2306
- };
2307
- }
2308
- return skipGroupMessageAndStoreHistory(params, `Group message stored for context (no mention detected) in ${conversationId}: ${mentionMsg.payload.body}`, params.mentionText);
2309
- }
2310
- return { shouldProcess: true };
2311
- }
2312
- //#endregion
2313
- //#region extensions/whatsapp/src/auto-reply/monitor/last-route.ts
2314
- function trackBackgroundTask(backgroundTasks, task) {
2315
- backgroundTasks.add(task);
2316
- const cleanup = () => {
2317
- backgroundTasks.delete(task);
2318
- };
2319
- task.then(cleanup, cleanup);
2320
- }
2321
- function updateLastRouteInBackground(params) {
2322
- const storePath = resolveStorePath$1(params.cfg.session?.store, { agentId: params.storeAgentId });
2323
- const task = updateLastRoute({
2324
- storePath,
2325
- sessionKey: params.sessionKey,
2326
- deliveryContext: {
2327
- channel: params.channel,
2328
- to: params.to,
2329
- accountId: params.accountId
2330
- },
2331
- ctx: params.ctx
2332
- }).catch((err) => {
2333
- params.warn({
2334
- error: formatError(err),
2335
- storePath,
2336
- sessionKey: params.sessionKey,
2337
- to: params.to
2338
- }, "failed updating last route");
2339
- });
2340
- trackBackgroundTask(params.backgroundTasks, task);
2341
- }
2342
- //#endregion
2343
- //#region extensions/whatsapp/src/auto-reply/monitor/peer.ts
2344
- function resolvePeerId(msg) {
2345
- const admission = requireWhatsAppInboundAdmission(msg);
2346
- if (admission.conversation.kind === "group") return admission.conversation.id;
2347
- const sender = getSenderIdentity(msg);
2348
- if (sender.e164) return normalizeE164(sender.e164) ?? sender.e164;
2349
- const conversationId = admission.conversation.id;
2350
- if (conversationId.includes("@")) return jidToE164(conversationId) ?? conversationId;
2351
- return normalizeE164(conversationId) ?? conversationId;
2352
- }
2353
- //#endregion
2354
- //#region extensions/whatsapp/src/system-prompt.ts
2355
- function resolveWhatsAppGroupSystemPrompt(params) {
2356
- if (!params.groupId) return;
2357
- const groups = params.accountConfig?.groups;
2358
- const specific = groups?.[params.groupId];
2359
- if (specific != null && specific.systemPrompt != null) return specific.systemPrompt.trim() || void 0;
2360
- const wildcard = groups?.["*"]?.systemPrompt;
2361
- return wildcard != null ? wildcard.trim() || void 0 : void 0;
2362
- }
2363
- function resolveWhatsAppDirectSystemPrompt(params) {
2364
- if (!params.peerId) return;
2365
- const direct = params.accountConfig?.direct;
2366
- const specific = direct?.[params.peerId];
2367
- if (specific != null && specific.systemPrompt != null) return specific.systemPrompt.trim() || void 0;
2368
- const wildcard = direct?.["*"]?.systemPrompt;
2369
- return wildcard != null ? wildcard.trim() || void 0 : void 0;
2370
- }
2371
- //#endregion
2372
- //#region extensions/whatsapp/src/outbound-retry.ts
2373
- const WHATSAPP_OUTBOUND_MAX_ATTEMPTS = 3;
2374
- const WHATSAPP_OUTBOUND_MIN_DELAY_MS = 500;
2375
- const WHATSAPP_OUTBOUND_MAX_DELAY_MS = 1e3;
2376
- const WHATSAPP_RETRYABLE_OUTBOUND_ERROR_PATTERN = /closed|reset|timed\s*out|disconnect/i;
2377
- var WhatsAppOutboundRetryError = class extends Error {
2378
- constructor(original) {
2379
- super(formatError(original), { cause: original });
2380
- this.original = original;
2381
- }
2382
- };
2383
- function isRetryableWhatsAppOutboundError(error) {
2384
- if (isWhatsAppSocketOperationTimeoutError(error)) return false;
2385
- return WHATSAPP_RETRYABLE_OUTBOUND_ERROR_PATTERN.test(formatError(error));
2386
- }
2387
- async function sendWhatsAppOutboundWithRetry(params) {
2388
- const runWithRetry = createChannelApiRetryRunner({
2389
- retry: {
2390
- attempts: WHATSAPP_OUTBOUND_MAX_ATTEMPTS,
2391
- minDelayMs: WHATSAPP_OUTBOUND_MIN_DELAY_MS,
2392
- maxDelayMs: WHATSAPP_OUTBOUND_MAX_DELAY_MS,
2393
- jitter: 0
2394
- },
2395
- strictShouldRetry: true,
2396
- retryAfterMs: () => void 0,
2397
- shouldRetry: (error, attempt) => {
2398
- if (!(error instanceof WhatsAppOutboundRetryError) || !isRetryableWhatsAppOutboundError(error.original)) return false;
2399
- params.onRetry?.({
2400
- attempt,
2401
- maxAttempts: WHATSAPP_OUTBOUND_MAX_ATTEMPTS,
2402
- backoffMs: Math.min(WHATSAPP_OUTBOUND_MIN_DELAY_MS * 2 ** (attempt - 1), WHATSAPP_OUTBOUND_MAX_DELAY_MS),
2403
- error: error.original,
2404
- errorText: formatError(error.original)
2405
- });
2406
- return true;
2407
- }
2408
- });
2409
- try {
2410
- return await runWithRetry(async () => {
2411
- try {
2412
- return await params.send();
2413
- } catch (error) {
2414
- throw new WhatsAppOutboundRetryError(error);
2415
- }
2416
- });
2417
- } catch (error) {
2418
- if (error instanceof WhatsAppOutboundRetryError) throw error.original;
2419
- throw error;
2420
- }
2421
- }
2422
- //#endregion
2423
- //#region extensions/whatsapp/src/auto-reply/util.ts
2424
- function elide(text, limit = 400) {
2425
- if (!text) return text;
2426
- if (text.length <= limit) return text;
2427
- const truncated = truncateUtf16Safe(text, limit);
2428
- return `${truncated}… (truncated ${text.length - truncated.length} chars)`;
2429
- }
2430
- function markWhatsAppVisibleDeliveryError(error) {
2431
- if (typeof error === "object" && error !== null && !Array.isArray(error)) try {
2432
- Object.assign(error, {
2433
- sentBeforeError: true,
2434
- visibleReplySent: true
2435
- });
2436
- return error;
2437
- } catch {}
2438
- const visibleError = new Error("visible WhatsApp reply delivery failed", { cause: error });
2439
- Object.assign(visibleError, {
2440
- sentBeforeError: true,
2441
- visibleReplySent: true
2442
- });
2443
- return visibleError;
2444
- }
2445
- function isLikelyWhatsAppCryptoError(reason) {
2446
- const formatReason = (value) => {
2447
- if (value == null) return "";
2448
- if (typeof value === "string") return value;
2449
- if (value instanceof Error) return `${value.message}\n${value.stack ?? ""}`;
2450
- if (typeof value === "object") try {
2451
- return JSON.stringify(value);
2452
- } catch {
2453
- return Object.prototype.toString.call(value);
2454
- }
2455
- if (typeof value === "number") return String(value);
2456
- if (typeof value === "boolean") return String(value);
2457
- if (typeof value === "bigint") return String(value);
2458
- if (typeof value === "symbol") return value.description ?? value.toString();
2459
- if (typeof value === "function") return value.name ? `[function ${value.name}]` : "[function]";
2460
- return Object.prototype.toString.call(value);
2461
- };
2462
- const haystack = normalizeLowercaseStringOrEmpty(reason instanceof Error ? `${reason.message}\n${reason.stack ?? ""}` : formatReason(reason));
2463
- if (!(haystack.includes("unsupported state or unable to authenticate data") || haystack.includes("bad mac"))) return false;
2464
- return haystack.includes("baileys") || haystack.includes("noise-handler") || haystack.includes("aesdecryptgcm");
2465
- }
2466
- //#endregion
2467
- //#region extensions/whatsapp/src/auto-reply/deliver-reply.ts
2468
- function resolveWhatsAppReceiptKind(results) {
2469
- if (results.length > 0 && results.every((result) => result.kind === "text")) return "text";
2470
- if (results.length > 0 && results.every((result) => result.kind === "media")) return "media";
2471
- return "unknown";
2472
- }
2473
- function createWhatsAppReplyDeliveryReceipt(results) {
2474
- const receiptResultsById = /* @__PURE__ */ new Map();
2475
- for (const result of results) {
2476
- if (result.receipt?.parts.length) {
2477
- for (const part of result.receipt.parts) receiptResultsById.set(part.platformMessageId, {
2478
- ...part.raw ?? {
2479
- channel: "whatsapp",
2480
- messageId: part.platformMessageId
2481
- },
2482
- meta: {
2483
- ...part.raw?.meta,
2484
- kind: result.kind,
2485
- providerAccepted: result.providerAccepted
2486
- }
2487
- });
2488
- continue;
2489
- }
2490
- for (const messageId of listWhatsAppSendResultMessageIds(result)) receiptResultsById.set(messageId, {
2491
- channel: "whatsapp",
2492
- messageId,
2493
- meta: {
2494
- kind: result.kind,
2495
- providerAccepted: result.providerAccepted
2496
- }
2497
- });
2498
- }
2499
- return createMessageReceiptFromOutboundResults({
2500
- results: [...receiptResultsById.values()],
2501
- kind: resolveWhatsAppReceiptKind(results)
2502
- });
2503
- }
2504
- async function deliverWebReply(params) {
2505
- const { replyResult, msg, maxMediaBytes, textLimit, replyLogger, connectionId, skipLog } = params;
2506
- const admission = requireWhatsAppInboundAdmission(msg);
2507
- const conversationId = admission.conversation.id;
2508
- const isGroupConversation = admission.conversation.kind === "group";
2509
- const replyStarted = Date.now();
2510
- const sendResults = [];
2511
- const rememberSendResult = (result) => {
2512
- if (result) sendResults.push(result);
2513
- };
2514
- const finishDelivery = () => {
2515
- const receipt = createWhatsAppReplyDeliveryReceipt(sendResults);
2516
- return {
2517
- results: sendResults,
2518
- receipt,
2519
- providerAccepted: sendResults.some((result) => result.providerAccepted)
2520
- };
2521
- };
2522
- if (isReasoningReplyPayload(replyResult)) {
2523
- whatsappOutboundLog.debug(`Suppressed reasoning payload to ${conversationId}`);
2524
- return finishDelivery();
2525
- }
2526
- const tableMode = params.tableMode ?? "code";
2527
- const chunkMode = params.chunkMode ?? "length";
2528
- const normalizedReply = params.normalizedReplyResult ?? normalizeWhatsAppOutboundPayload(replyResult, { normalizeText: normalizeWhatsAppPayloadTextPreservingIndentation });
2529
- const textChunks = markdownToWhatsAppChunks(normalizedReply.text ?? "", textLimit, tableMode, chunkMode);
2530
- const mediaList = normalizedReply.mediaUrls ?? [];
2531
- const getQuote = () => {
2532
- if (!replyResult.replyToId) return;
2533
- const cached = lookupInboundMessageMeta(admission.accountId, msg.platform.chatJid, replyResult.replyToId);
2534
- return buildQuotedMessageOptions({
2535
- messageId: replyResult.replyToId,
2536
- remoteJid: msg.platform.chatJid,
2537
- fromMe: cached?.fromMe ?? false,
2538
- participant: cached?.participant ?? (isGroupConversation ? msg.platform.senderJid : void 0),
2539
- messageText: cached?.body ?? "",
2540
- media: cached?.media
2541
- });
2542
- };
2543
- const sendWithRetry = async (fn, label) => {
2544
- try {
2545
- return await sendWhatsAppOutboundWithRetry({
2546
- send: fn,
2547
- onRetry: ({ attempt, maxAttempts: retryMaxAttempts, backoffMs, errorText }) => {
2548
- logVerbose(`Retrying ${label} to ${conversationId} after failure (${attempt}/${retryMaxAttempts - 1}) in ${backoffMs}ms: ${errorText}`);
2549
- }
2550
- });
2551
- } catch (error) {
2552
- if (sendResults.some((result) => result.providerAccepted)) throw markWhatsAppVisibleDeliveryError(error);
2553
- throw error;
2554
- }
2555
- };
2556
- if (mediaList.length === 0 && textChunks.length) {
2557
- const totalChunks = textChunks.length;
2558
- for (const [index, chunk] of textChunks.entries()) {
2559
- const chunkStarted = Date.now();
2560
- const quote = getQuote();
2561
- rememberSendResult(await sendWithRetry(() => msg.platform.reply(chunk, quote), "text"));
2562
- if (!skipLog) {
2563
- const durationMs = Date.now() - chunkStarted;
2564
- whatsappOutboundLog.debug(`Sent chunk ${index + 1}/${totalChunks} to ${conversationId} (${durationMs.toFixed(0)}ms)`);
2565
- }
2566
- }
2567
- const delivery = finishDelivery();
2568
- const logPayload = {
2569
- correlationId: msg.event.id ?? newConnectionId(),
2570
- connectionId: connectionId ?? null,
2571
- to: conversationId,
2572
- from: msg.platform.recipientJid,
2573
- text: elide(replyResult.text, 240),
2574
- mediaUrl: null,
2575
- mediaSizeBytes: null,
2576
- mediaKind: null,
2577
- durationMs: Date.now() - replyStarted
2578
- };
2579
- if (delivery.providerAccepted) replyLogger.info(logPayload, "auto-reply sent (text)");
2580
- else replyLogger.warn(logPayload, "auto-reply text was not accepted by WhatsApp provider");
2581
- return delivery;
2582
- }
2583
- const remainingText = [...textChunks];
2584
- await sendMediaWithLeadingCaption({
2585
- mediaUrls: mediaList,
2586
- caption: remainingText.shift() || "",
2587
- send: async ({ mediaUrl, caption }) => {
2588
- const media = await prepareWhatsAppOutboundMedia(await loadWebMedia(mediaUrl, {
2589
- maxBytes: maxMediaBytes,
2590
- localRoots: params.mediaLocalRoots
2591
- }), mediaUrl);
2592
- if (shouldLogVerbose()) {
2593
- logVerbose(`Web auto-reply media size: ${(media.buffer.length / (1024 * 1024)).toFixed(2)}MB`);
2594
- logVerbose(`Web auto-reply media source: ${mediaUrl} (kind ${media.kind})`);
2595
- }
2596
- if (media.kind === "image") {
2597
- const quote = getQuote();
2598
- rememberSendResult(await sendWithRetry(() => msg.platform.sendMedia({
2599
- image: media.buffer,
2600
- caption,
2601
- mimetype: media.mimetype
2602
- }, quote), "media:image"));
2603
- } else if (media.kind === "audio") {
2604
- const quote = getQuote();
2605
- rememberSendResult(await sendWithRetry(() => msg.platform.sendMedia({
2606
- audio: media.buffer,
2607
- ptt: true,
2608
- mimetype: media.mimetype
2609
- }, quote), "media:audio"));
2610
- if (caption) rememberSendResult(await sendWithRetry(() => msg.platform.reply(caption, quote), "media:audio-text"));
2611
- } else if (media.kind === "video") {
2612
- const quote = getQuote();
2613
- rememberSendResult(await sendWithRetry(() => msg.platform.sendMedia({
2614
- video: media.buffer,
2615
- caption,
2616
- mimetype: media.mimetype
2617
- }, quote), "media:video"));
2618
- } else {
2619
- const quote = getQuote();
2620
- rememberSendResult(await sendWithRetry(() => msg.platform.sendMedia({
2621
- document: media.buffer,
2622
- fileName: media.fileName,
2623
- caption,
2624
- mimetype: media.mimetype
2625
- }, quote), "media:document"));
2626
- }
2627
- whatsappOutboundLog.info(`Sent media reply to ${conversationId} (${(media.buffer.length / (1024 * 1024)).toFixed(2)}MB)`);
2628
- replyLogger.info({
2629
- correlationId: msg.event.id ?? newConnectionId(),
2630
- connectionId: connectionId ?? null,
2631
- to: conversationId,
2632
- from: msg.platform.recipientJid,
2633
- text: caption ?? null,
2634
- mediaUrl,
2635
- mediaSizeBytes: media.buffer.length,
2636
- mediaKind: media.kind,
2637
- durationMs: Date.now() - replyStarted
2638
- }, "auto-reply sent (media)");
2639
- },
2640
- onError: async ({ error, mediaUrl, caption, isFirst }) => {
2641
- whatsappOutboundLog.error(`Failed sending web media to ${conversationId}: ${formatError(error)}`);
2642
- replyLogger.warn({
2643
- err: error,
2644
- mediaUrl
2645
- }, "failed to send web media reply");
2646
- if (!isFirst) {
2647
- whatsappOutboundLog.warn(`Trailing media failed; sent warning to ${conversationId}`);
2648
- rememberSendResult(await sendWithRetry(() => msg.platform.reply("⚠️ Media unavailable.", getQuote()), "media:fallback-unavailable"));
2649
- return;
2650
- }
2651
- const fallbackText = [caption ?? "", "⚠️ Media failed."].filter(Boolean).join("\n");
2652
- if (!fallbackText) return;
2653
- whatsappOutboundLog.warn(`Media skipped; sent text-only to ${conversationId}`);
2654
- rememberSendResult(await sendWithRetry(() => msg.platform.reply(fallbackText, getQuote()), "media:fallback-text"));
2655
- }
2656
- });
2657
- for (const chunk of remainingText) rememberSendResult(await sendWithRetry(() => msg.platform.reply(chunk, getQuote()), "media:text"));
2658
- return finishDelivery();
2659
- }
2660
- //#endregion
2661
- //#region extensions/whatsapp/src/auto-reply/monitor/inbound-context.ts
2662
- function isWhatsAppSupplementalSenderAllowed(params) {
2663
- if (params.allowFrom.includes("*")) return true;
2664
- const senderValues = new Set(getComparableIdentityValues(resolveComparableIdentity(params.sender, params.authDir)));
2665
- if (senderValues.size === 0) return false;
2666
- for (const entry of params.allowFrom) {
2667
- const rawEntry = entry.trim();
2668
- if (!rawEntry) continue;
2669
- const normalizedEntry = normalizeE164(rawEntry);
2670
- if (normalizedEntry && senderValues.has(normalizedEntry) || senderValues.has(rawEntry)) return true;
2671
- }
2672
- return false;
2673
- }
2674
- function resolveVisibleWhatsAppGroupHistory(params) {
2675
- return filterSupplementalContextItems({
2676
- items: params.history,
2677
- mode: params.mode,
2678
- kind: "history",
2679
- isSenderAllowed: (entry) => resolveInboundSupplementalSenderAllowed({
2680
- isGroup: true,
2681
- groupPolicy: params.groupPolicy,
2682
- allowFrom: params.groupAllowFrom,
2683
- isSenderAllowed: (allowFrom) => isWhatsAppSupplementalSenderAllowed({
2684
- allowFrom,
2685
- authDir: params.authDir,
2686
- sender: entry.senderJid ? { jid: entry.senderJid } : null
2687
- })
2688
- })
2689
- }).items;
2690
- }
2691
- function resolveVisibleWhatsAppReplyContext(params) {
2692
- const replyTo = getReplyContext(params.msg, params.authDir);
2693
- if (!replyTo) return null;
2694
- const admission = requireWhatsAppInboundAdmission(params.msg);
2695
- const previewBody = [replyTo.body, formatMediaPlaceholderText(replyTo.media ? [replyTo.media] : [])].filter(Boolean).join("\n");
2696
- const senderAllowed = resolveInboundSupplementalSenderAllowed({
2697
- isGroup: admission.conversation.kind === "group",
2698
- groupPolicy: params.groupPolicy,
2699
- allowFrom: params.groupAllowFrom,
2700
- isSenderAllowed: (allowFrom) => isWhatsAppSupplementalSenderAllowed({
2701
- allowFrom,
2702
- authDir: params.authDir,
2703
- sender: replyTo.sender
2704
- })
2705
- });
2706
- const visible = filterChannelInboundQuoteContext(params.mode, {
2707
- id: replyTo.id,
2708
- body: previewBody,
2709
- sender: replyTo.sender?.label ?? void 0,
2710
- senderAllowed
2711
- });
2712
- return visible ? {
2713
- ...replyTo,
2714
- body: visible.body ?? ""
2715
- } : null;
2716
- }
2717
- //#endregion
2718
- //#region extensions/whatsapp/src/auto-reply/monitor/inbound-dispatch.ts
2719
- function normalizeErrForLog(err) {
2720
- if (err instanceof Error) return {
2721
- ...Object.fromEntries(Object.entries(err)),
2722
- type: err.name,
2723
- message: err.message,
2724
- stack: err.stack
2725
- };
2726
- return err;
2727
- }
2728
- function whatsAppReplyDeliveryVisibility(visibleReplySent) {
2729
- return { visibleReplySent };
2730
- }
2731
- function isWhatsAppVisibleDeliveryError(error) {
2732
- return typeof error === "object" && error !== null && !Array.isArray(error) && error.visibleReplySent === true || isChannelPartialDeliveryError(error) && error.deliveryResult.visibleReplySent;
2733
- }
2734
- function readTrimmedString(value) {
2735
- return typeof value === "string" ? value.trim() : "";
2736
- }
2737
- function markWhatsAppReplyDeliveryErrorVisibleAfterFlush(error, flushResult) {
2738
- if (flushResult.delivered === 0) return error;
2739
- if (isWhatsAppVisibleDeliveryError(error)) return error;
2740
- return markWhatsAppVisibleDeliveryError(new Error("deferred WhatsApp media delivery failed after an earlier visible send", { cause: error }));
2741
- }
2742
- function logWhatsAppReplyDeliveryError(params) {
2743
- const admission = requireWhatsAppInboundAdmission(params.msg);
2744
- params.replyLogger.error({
2745
- err: normalizeErrForLog(params.err),
2746
- replyKind: params.info.kind,
2747
- correlationId: params.msg.event.id ?? null,
2748
- connectionId: params.connectionId,
2749
- conversationId: admission.conversation.id,
2750
- chatId: params.msg.platform.chatJid ?? null,
2751
- to: admission.conversation.id,
2752
- from: params.msg.platform.recipientJid ?? null
2753
- }, "auto-reply delivery failed");
2754
- }
2755
- function resolveWhatsAppDurableReplyToId(params) {
2756
- if (params.payload.replyToId === null) return null;
2757
- const explicitPayloadReplyToId = readTrimmedString(params.payload.replyToId);
2758
- if (explicitPayloadReplyToId) return explicitPayloadReplyToId;
2759
- const hasVisibleInboundReplyTarget = Boolean(readTrimmedString(params.context.ReplyToId)) || Boolean(readTrimmedString(params.context.ReplyToIdFull));
2760
- const currentInboundMessageId = readTrimmedString(params.msg.event.id);
2761
- if (params.info.kind === "final" && hasVisibleInboundReplyTarget && currentInboundMessageId) return currentInboundMessageId;
2762
- return null;
2763
- }
2764
- function resolveWhatsAppDisableBlockStreaming(cfg) {
2765
- const enabled = resolveChannelStreamingBlockEnabled(cfg.channels?.whatsapp);
2766
- return typeof enabled === "boolean" ? !enabled : void 0;
2767
- }
2768
- function resolveWhatsAppDeliverablePayload(payload, info) {
2769
- if (payload.isReasoning === true || payload.isCompactionNotice === true) return null;
2770
- if (payload.isError === true) return null;
2771
- if (info.kind === "tool") {
2772
- if (!resolveSendableOutboundReplyParts(payload).hasMedia) return null;
2773
- return {
2774
- ...payload,
2775
- text: void 0
2776
- };
2777
- }
2778
- return payload;
2779
- }
2780
- function getWhatsAppPayloadMediaUrls(payload) {
2781
- return new Set(normalizeStringEntries([...Array.isArray(payload.mediaUrls) ? payload.mediaUrls : [], ...typeof payload.mediaUrl === "string" ? [payload.mediaUrl] : []]));
2782
- }
2783
- function hasWhatsAppMediaUrlOverlap(left, right) {
2784
- for (const url of left) if (right.has(url)) return true;
2785
- return false;
2786
- }
2787
- function shouldDeferWhatsAppMediaOnlyPayload(params) {
2788
- return params.info.kind !== "final" && params.reply.hasMedia && !params.reply.text.trim() && params.mediaUrls.size > 0;
2789
- }
2790
- function createWhatsAppMediaOnlyReplyCoalescer(params) {
2791
- const pendingMediaOnlyPayloads = [];
2792
- const flushWhere = async (shouldFlush) => {
2793
- const flushResult = {
2794
- delivered: 0,
2795
- droppedDuplicateMedia: 0
2796
- };
2797
- const candidates = [];
2798
- const retained = [];
2799
- for (const pending of pendingMediaOnlyPayloads.splice(0)) if (shouldFlush(pending)) candidates.push(pending);
2800
- else retained.push(pending);
2801
- pendingMediaOnlyPayloads.push(...retained);
2802
- for (const [index, candidate] of candidates.entries()) try {
2803
- const delivery = await params.deliver(candidate);
2804
- candidate.resolveFinalization(delivery);
2805
- if (delivery.visibleReplySent) flushResult.delivered += 1;
2806
- } catch (error) {
2807
- const visibleError = markWhatsAppReplyDeliveryErrorVisibleAfterFlush(error, flushResult);
2808
- candidate.rejectFinalization(error);
2809
- for (const remaining of candidates.slice(index + 1)) remaining.rejectFinalization(new Error("deferred WhatsApp media delivery was not attempted", { cause: error }));
2810
- throw visibleError;
2811
- }
2812
- return flushResult;
2813
- };
2814
- return {
2815
- defer(pending) {
2816
- let resolveFinalization;
2817
- let rejectFinalization;
2818
- const finalization = new Promise((resolve, reject) => {
2819
- resolveFinalization = resolve;
2820
- rejectFinalization = reject;
2821
- });
2822
- pendingMediaOnlyPayloads.push({
2823
- ...pending,
2824
- resolveFinalization,
2825
- rejectFinalization
2826
- });
2827
- return finalization;
2828
- },
2829
- flushNonDuplicateMedia: (mediaUrls) => flushWhere((pending) => !hasWhatsAppMediaUrlOverlap(pending.mediaUrls, mediaUrls)),
2830
- dropDuplicateMedia(mediaUrls) {
2831
- const flushResult = {
2832
- delivered: 0,
2833
- droppedDuplicateMedia: 0
2834
- };
2835
- const retained = [];
2836
- for (const pending of pendingMediaOnlyPayloads.splice(0)) if (hasWhatsAppMediaUrlOverlap(pending.mediaUrls, mediaUrls)) {
2837
- pending.resolveFinalization(whatsAppReplyDeliveryVisibility(false));
2838
- flushResult.droppedDuplicateMedia += 1;
2839
- } else retained.push(pending);
2840
- pendingMediaOnlyPayloads.push(...retained);
2841
- return flushResult;
2842
- },
2843
- flushAll: () => flushWhere(() => true)
2844
- };
2845
- }
2846
- function logWhatsAppMediaOnlyFlushResult(result) {
2847
- if (!shouldLogVerbose$1()) return;
2848
- if (result.droppedDuplicateMedia > 0) logVerbose$1(`Dropped ${result.droppedDuplicateMedia} deferred media-only WhatsApp reply payload(s) superseded by captioned media`);
2849
- if (result.delivered > 0) logVerbose$1(`Flushed ${result.delivered} deferred media-only WhatsApp reply payload(s)`);
2850
- }
2851
- function resolveWhatsAppResponsePrefix(params) {
2852
- const configuredResponsePrefix = params.cfg.messages?.responsePrefix;
2853
- return params.pipelineResponsePrefix ?? (configuredResponsePrefix === "auto" ? resolveIdentityNamePrefix$1(params.cfg, params.agentId) : configuredResponsePrefix) ?? (params.isSelfChat ? resolveIdentityNamePrefix$1(params.cfg, params.agentId) : void 0);
2854
- }
2855
- async function buildWhatsAppInboundContext(params) {
2856
- const admission = requireWhatsAppInboundAdmission(params.msg);
2857
- const conversationId = admission.conversation.id;
2858
- const conversationKind = admission.conversation.kind;
2859
- const wasMentioned = params.msg.groupMention?.wasMentioned ?? params.msg.wasMentioned;
2860
- const inboundHistory = conversationKind === "group" ? buildInboundHistoryFromEntries({
2861
- entries: (params.groupHistory ?? []).map((entry) => ({
2862
- sender: entry.sender,
2863
- body: entry.body,
2864
- timestamp: entry.timestamp,
2865
- messageId: entry.id,
2866
- media: entry.media
2867
- })),
2868
- limit: params.groupHistory?.length ?? 1
2869
- }) : void 0;
2870
- const media = toInboundMediaFacts(params.msg.payload.media ? [{
2871
- path: params.msg.payload.media?.path,
2872
- url: params.msg.payload.media?.url ?? params.msg.payload.media?.path,
2873
- contentType: params.msg.payload.media?.type,
2874
- kind: params.msg.payload.media?.kind
2875
- }] : void 0, { transcribed: (_entry, index) => params.mediaTranscribedIndexes?.includes(index) === true });
2876
- return buildChannelInboundEventContext({
2877
- channel: "whatsapp",
2878
- supplemental: {
2879
- quote: params.visibleReplyTo ? {
2880
- id: params.visibleReplyTo.id,
2881
- body: params.visibleReplyTo.body,
2882
- sender: params.visibleReplyTo.sender?.label ?? void 0
2883
- } : void 0,
2884
- groupSystemPrompt: params.groupSystemPrompt,
2885
- channelStructuredContext: params.msg.payload.channelStructuredContext
2886
- },
2887
- media,
2888
- messageId: params.msg.event.id,
2889
- timestamp: params.msg.event.timestamp,
2890
- from: conversationId,
2891
- sender: {
2892
- id: params.sender.id ?? params.sender.e164,
2893
- name: params.sender.name
2894
- },
2895
- conversation: {
2896
- kind: conversationKind,
2897
- id: conversationId,
2898
- label: conversationId
2899
- },
2900
- route: {
2901
- agentId: params.route.agentId,
2902
- dmScope: params.route.dmScope,
2903
- accountId: params.route.accountId,
2904
- routeSessionKey: params.route.sessionKey
2905
- },
2906
- reply: {
2907
- to: params.msg.platform.recipientJid,
2908
- originatingTo: conversationId
2909
- },
2910
- message: {
2911
- body: params.combinedBody,
2912
- bodyForAgent: params.bodyForAgent ?? params.msg.payload.body,
2913
- inboundHistory,
2914
- rawBody: params.rawBody ?? params.msg.payload.body,
2915
- commandBody: params.command?.body ?? params.msg.payload.body
2916
- },
2917
- sessionTranscript: { historyLimit: conversationKind === "group" ? params.groupHistoryLimit ?? params.groupHistory?.length ?? 0 : 0 },
2918
- access: {
2919
- ...wasMentioned !== void 0 ? { mentions: {
2920
- canDetectMention: conversationKind === "group",
2921
- wasMentioned,
2922
- requireMention: params.msg.groupMention?.requireMention
2923
- } } : {},
2924
- commands: { authorized: params.command?.authorized === true }
2925
- },
2926
- command: params.command,
2927
- extra: {
2928
- Transcript: params.transcript,
2929
- GroupSubject: params.msg.group?.subject,
2930
- GroupMembers: formatGroupMembers({
2931
- participants: params.msg.group?.participants,
2932
- roster: params.groupMemberRoster,
2933
- fallbackE164: params.sender.e164
2934
- }),
2935
- SenderE164: params.sender.e164,
2936
- ReplyThreading: params.replyThreading,
2937
- SuppressMessageReceivedHooks: params.suppressMessageReceivedHooks,
2938
- ...params.msg.payload.location ? toLocationContext(params.msg.payload.location) : {}
2939
- }
2940
- });
2941
- }
2942
- function resolveWhatsAppDmRouteTarget(params) {
2943
- const admission = requireWhatsAppInboundAdmission(params.msg);
2944
- const conversationId = admission.conversation.id;
2945
- if (admission.conversation.kind === "group") return;
2946
- if (params.senderE164) return params.normalizeE164(params.senderE164) ?? void 0;
2947
- if (conversationId.includes("@")) return jidToE164(conversationId) ?? void 0;
2948
- return params.normalizeE164(conversationId) ?? void 0;
2949
- }
2950
- function updateWhatsAppMainLastRoute(params) {
2951
- const shouldUpdateMainLastRoute = !params.pinnedMainDmRecipient || params.pinnedMainDmRecipient === params.dmRouteTarget;
2952
- const inboundLastRouteSessionKey = resolveInboundLastRouteSessionKey({
2953
- route: params.route,
2954
- sessionKey: params.route.sessionKey
2955
- });
2956
- if (params.dmRouteTarget && inboundLastRouteSessionKey === params.route.mainSessionKey && shouldUpdateMainLastRoute) {
2957
- params.updateLastRoute({
2958
- cfg: params.cfg,
2959
- backgroundTasks: params.backgroundTasks,
2960
- storeAgentId: params.route.agentId,
2961
- sessionKey: params.route.mainSessionKey,
2962
- channel: "whatsapp",
2963
- to: params.dmRouteTarget,
2964
- accountId: params.route.accountId,
2965
- ctx: params.ctx,
2966
- warn: params.warn
2967
- });
2968
- return;
2969
- }
2970
- if (params.dmRouteTarget && inboundLastRouteSessionKey === params.route.mainSessionKey && params.pinnedMainDmRecipient) logVerbose$1(`Skipping main-session last route update for ${params.dmRouteTarget} (pinned owner ${params.pinnedMainDmRecipient})`);
2971
- }
2972
- function createWhatsAppReplyPlan(params) {
2973
- const admission = requireWhatsAppInboundAdmission(params.msg);
2974
- const ingressLifecycle = resolveWhatsAppIngressLifecycle(params.msg);
2975
- const conversationId = admission.conversation.id;
2976
- const conversationKind = admission.conversation.kind;
2977
- const statusReactionController = params.statusReactionController ?? null;
2978
- const textLimit = params.maxMediaTextChunkLimit ?? resolveTextChunkLimit(params.cfg, "whatsapp");
2979
- const chunkMode = resolveChunkMode(params.cfg, "whatsapp", params.route.accountId);
2980
- const tableMode = resolveMarkdownTableMode$1({
2981
- cfg: params.cfg,
2982
- channel: "whatsapp",
2983
- accountId: params.route.accountId
2984
- });
2985
- const mediaLocalRoots = getAgentScopedMediaLocalRoots(params.cfg, params.route.agentId);
2986
- const sourceReplyDeliveryMode = params.context.ChatType === "group" || params.context.ChatType === "channel" ? resolveChannelMessageSourceReplyDeliveryMode({
2987
- cfg: params.cfg,
2988
- ctx: params.context
2989
- }) : void 0;
2990
- const sourceRepliesAreToolOnly = sourceReplyDeliveryMode === "message_tool_only";
2991
- const disableBlockStreaming = sourceRepliesAreToolOnly ? true : resolveWhatsAppDisableBlockStreaming(params.cfg);
2992
- let didSendReply = false;
2993
- let didLogHeartbeatStrip = false;
2994
- const recordDeliveredPayload = (payload) => {
2995
- didSendReply = true;
2996
- const shouldLog = payload.text ? true : void 0;
2997
- params.rememberSentText(payload.text, {
2998
- combinedBody: params.context.Body,
2999
- combinedBodySessionKey: params.route.sessionKey,
3000
- logVerboseMessage: shouldLog
3001
- });
3002
- if (shouldLogVerbose$1()) {
3003
- const reply = resolveSendableOutboundReplyParts(payload);
3004
- logVerbose$1(`Reply body: ${payload.text != null ? reply.text : "<media>"}${reply.hasMedia ? " (media)" : ""} -> ${conversationId}`);
3005
- }
3006
- };
3007
- const deliverNormalizedPayload = async (normalizedDeliveryPayload, info, options) => {
3008
- const reply = resolveSendableOutboundReplyParts(normalizedDeliveryPayload);
3009
- if (!reply.hasMedia && !reply.text.trim()) return whatsAppReplyDeliveryVisibility(false);
3010
- if (!(await params.deliverReply({
3011
- replyResult: normalizedDeliveryPayload,
3012
- normalizedReplyResult: normalizedDeliveryPayload,
3013
- msg: params.msg,
3014
- mediaLocalRoots,
3015
- maxMediaBytes: params.maxMediaBytes,
3016
- textLimit,
3017
- chunkMode,
3018
- replyLogger: params.replyLogger,
3019
- connectionId: params.connectionId,
3020
- skipLog: false,
3021
- tableMode
3022
- })).providerAccepted) {
3023
- params.replyLogger.warn({
3024
- correlationId: params.msg.event.id ?? null,
3025
- connectionId: params.connectionId,
3026
- conversationId,
3027
- chatId: params.msg.platform.chatJid,
3028
- to: conversationId,
3029
- from: params.msg.platform.recipientJid,
3030
- replyKind: info.kind
3031
- }, "auto-reply was not accepted by WhatsApp provider");
3032
- return whatsAppReplyDeliveryVisibility(false);
3033
- }
3034
- if (options?.recordDelivery !== false) try {
3035
- recordDeliveredPayload(normalizedDeliveryPayload);
3036
- } catch (error) {
3037
- throw markWhatsAppVisibleDeliveryError(error);
3038
- }
3039
- return whatsAppReplyDeliveryVisibility(true);
3040
- };
3041
- const mediaOnlyCoalescer = createWhatsAppMediaOnlyReplyCoalescer({ deliver: async (pending) => {
3042
- return await deliverNormalizedPayload(pending.payload, pending.info);
3043
- } });
3044
- return {
3045
- afterRecord: () => {
3046
- if (statusReactionController) statusReactionController.setThinking();
3047
- },
3048
- dispatcherOptions: {
3049
- ...params.replyPipeline,
3050
- onHeartbeatStrip: () => {
3051
- if (!didLogHeartbeatStrip) {
3052
- didLogHeartbeatStrip = true;
3053
- logVerbose$1("Stripped stray HEARTBEAT_OK token from web reply");
3054
- }
3055
- },
3056
- onSettled: async () => {
3057
- const flushResult = await mediaOnlyCoalescer.flushAll();
3058
- logWhatsAppMediaOnlyFlushResult(flushResult);
3059
- return whatsAppReplyDeliveryVisibility(didSendReply || flushResult.delivered > 0);
3060
- },
3061
- onReplyStart: params.msg.platform.sendComposing
3062
- },
3063
- delivery: {
3064
- preparePayload: async (payload, info) => {
3065
- const deliveryPayload = resolveWhatsAppDeliverablePayload(payload, info);
3066
- if (!deliveryPayload) return null;
3067
- const normalizedOutboundPayload = normalizeWhatsAppOutboundPayload(deliveryPayload, { normalizeText: normalizeWhatsAppPayloadTextPreservingIndentation });
3068
- const normalizedDeliveryPayload = deliveryPayload.text === void 0 ? {
3069
- ...normalizedOutboundPayload,
3070
- text: void 0
3071
- } : normalizedOutboundPayload;
3072
- const reply = resolveSendableOutboundReplyParts(normalizedDeliveryPayload);
3073
- if (!reply.hasMedia && !reply.text.trim()) return normalizedDeliveryPayload;
3074
- const mediaUrls = getWhatsAppPayloadMediaUrls(normalizedDeliveryPayload);
3075
- logWhatsAppMediaOnlyFlushResult(reply.hasMedia ? shouldDeferWhatsAppMediaOnlyPayload({
3076
- info,
3077
- mediaUrls,
3078
- reply
3079
- }) ? {
3080
- delivered: 0,
3081
- droppedDuplicateMedia: 0
3082
- } : await mediaOnlyCoalescer.flushNonDuplicateMedia(mediaUrls) : await mediaOnlyCoalescer.flushAll());
3083
- return normalizedDeliveryPayload;
3084
- },
3085
- durable: (payload, info) => {
3086
- const reply = resolveSendableOutboundReplyParts(payload);
3087
- if (reply.hasMedia || !reply.text.trim()) return false;
3088
- return {
3089
- to: conversationId,
3090
- replyToId: resolveWhatsAppDurableReplyToId({
3091
- context: params.context,
3092
- info,
3093
- msg: params.msg,
3094
- payload
3095
- }),
3096
- formatting: {
3097
- textLimit,
3098
- tableMode,
3099
- chunkMode
3100
- }
3101
- };
3102
- },
3103
- deliver: async (payload, info) => {
3104
- const normalizedDeliveryPayload = payload;
3105
- const reply = resolveSendableOutboundReplyParts(normalizedDeliveryPayload);
3106
- if (!reply.hasMedia && !reply.text.trim()) return whatsAppReplyDeliveryVisibility(false);
3107
- if (!reply.hasMedia) return await deliverNormalizedPayload(normalizedDeliveryPayload, info, { recordDelivery: false });
3108
- const mediaUrls = getWhatsAppPayloadMediaUrls(normalizedDeliveryPayload);
3109
- if (shouldDeferWhatsAppMediaOnlyPayload({
3110
- info,
3111
- mediaUrls,
3112
- reply
3113
- })) return {
3114
- visibleReplySent: false,
3115
- finalization: mediaOnlyCoalescer.defer({
3116
- info,
3117
- mediaUrls,
3118
- payload: normalizedDeliveryPayload
3119
- })
3120
- };
3121
- try {
3122
- const result = await deliverNormalizedPayload(normalizedDeliveryPayload, info);
3123
- if (result.visibleReplySent) logWhatsAppMediaOnlyFlushResult(mediaOnlyCoalescer.dropDuplicateMedia(mediaUrls));
3124
- return result;
3125
- } catch (error) {
3126
- if (isWhatsAppVisibleDeliveryError(error)) logWhatsAppMediaOnlyFlushResult(mediaOnlyCoalescer.dropDuplicateMedia(mediaUrls));
3127
- throw error;
3128
- }
3129
- },
3130
- onDelivered: (payload, _info, result) => {
3131
- if (!resolveSendableOutboundReplyParts(payload).hasMedia && result?.visibleReplySent === true) recordDeliveredPayload(payload);
3132
- },
3133
- onError: (err, info) => {
3134
- if (didSendReply) markWhatsAppVisibleDeliveryError(err);
3135
- logWhatsAppReplyDeliveryError({
3136
- err,
3137
- info,
3138
- connectionId: params.connectionId,
3139
- msg: params.msg,
3140
- replyLogger: params.replyLogger
3141
- });
3142
- }
3143
- },
3144
- replyOptions: {
3145
- ...ingressLifecycle ? bindIngressLifecycleToReplyOptions(ingressLifecycle) : {},
3146
- suppressTyping: sourceRepliesAreToolOnly && conversationKind === "group" && !(params.msg.groupMention?.wasMentioned ?? params.msg.wasMentioned),
3147
- disableBlockStreaming,
3148
- ...sourceReplyDeliveryMode ? { sourceReplyDeliveryMode } : {},
3149
- onModelSelected: params.onModelSelected,
3150
- ...statusReactionController ? {
3151
- onToolStart: async (payload) => {
3152
- const toolName = payload.name?.trim();
3153
- if (toolName) await statusReactionController.setTool(toolName);
3154
- },
3155
- onCompactionStart: async () => {
3156
- await statusReactionController.setCompacting();
3157
- },
3158
- onCompactionEnd: async () => {
3159
- statusReactionController.cancelPending();
3160
- await statusReactionController.setThinking();
3161
- }
3162
- } : {}
3163
- },
3164
- replyResolver: params.replyResolver,
3165
- finalize: (dispatchResult) => {
3166
- const didQueueVisibleReply = hasVisibleInboundReplyDispatch(dispatchResult);
3167
- const didDeliverVisibleReply = didSendReply || dispatchResult.observedReplyDelivery === true;
3168
- if (!didQueueVisibleReply && !didDeliverVisibleReply) {
3169
- if (statusReactionController) finalizeWhatsAppStatusReaction({
3170
- controller: statusReactionController,
3171
- outcome: "error"
3172
- });
3173
- if (params.shouldClearGroupHistory) params.groupHistories.set(params.groupHistoryKey, []);
3174
- logVerbose$1("Skipping auto-reply: silent token or no text/media returned from resolver");
3175
- return false;
3176
- }
3177
- if (statusReactionController) finalizeWhatsAppStatusReaction({
3178
- controller: statusReactionController,
3179
- outcome: didDeliverVisibleReply ? "done" : "error"
3180
- });
3181
- if (params.shouldClearGroupHistory) params.groupHistories.set(params.groupHistoryKey, []);
3182
- return didDeliverVisibleReply;
3183
- }
3184
- };
3185
- }
3186
- async function finalizeWhatsAppStatusReaction(params) {
3187
- if (params.outcome === "done") await params.controller.setDone();
3188
- else await params.controller.setError();
3189
- await params.controller.restoreInitial();
3190
- }
3191
- //#endregion
3192
- //#region extensions/whatsapp/src/auto-reply/monitor/message-line.runtime.ts
3193
- function normalizeAgentId$1(agentId) {
3194
- return agentId.trim().toLowerCase() || "main";
3195
- }
3196
- function resolveIdentityNamePrefix(cfg, agentId) {
3197
- const normalizedAgentId = normalizeAgentId$1(agentId);
3198
- const identityName = cfg.agents?.list?.find((agent) => normalizeAgentId$1(agent.id ?? "") === normalizedAgentId)?.identity?.name?.trim();
3199
- return identityName ? `[${identityName}]` : void 0;
3200
- }
3201
- function resolveMessagePrefix(cfg, agentId, opts) {
3202
- const configured = opts?.configured;
3203
- if (configured !== void 0) return configured;
3204
- if (opts?.hasAllowFrom === true) return "";
3205
- return resolveIdentityNamePrefix(cfg, agentId) ?? opts?.fallback ?? "[openclaw]";
3206
- }
3207
- //#endregion
3208
- //#region extensions/whatsapp/src/auto-reply/monitor/message-line.ts
3209
- function formatReplyTarget(replyTo) {
3210
- if (!replyTo?.body) return null;
3211
- return `[Replying to ${replyTo.sender?.label ?? replyTo.sender?.e164 ?? "unknown sender"}${replyTo.id ? ` id:${replyTo.id}` : ""}]\n${replyTo.body}\n[/Replying]`;
3212
- }
3213
- function formatReplyContext(msg) {
3214
- return formatReplyTarget(getReplyContext(msg));
3215
- }
3216
- function buildInboundLine(params) {
3217
- const { cfg, msg, agentId, previousTimestamp, envelope } = params;
3218
- const messagePrefix = resolveMessagePrefix(cfg, agentId, {
3219
- configured: cfg.channels?.whatsapp?.responsePrefix,
3220
- hasAllowFrom: (cfg.channels?.whatsapp?.allowFrom?.length ?? 0) > 0
3221
- });
3222
- const admission = requireWhatsAppInboundAdmission(msg);
3223
- const conversationId = admission.conversation.id;
3224
- const conversationKind = admission.conversation.kind;
3225
- const prefixStr = messagePrefix ? `${messagePrefix} ` : "";
3226
- const replyContext = params.visibleReplyTo === void 0 ? formatReplyContext(msg) : formatReplyTarget(params.visibleReplyTo);
3227
- const baseLine = `${prefixStr}${msg.payload.body}${replyContext ? `\n\n${replyContext}` : ""}`;
3228
- const sender = getSenderIdentity(msg);
3229
- return formatInboundEnvelope({
3230
- channel: "WhatsApp",
3231
- from: conversationKind === "group" ? conversationId : conversationId.replace(/^whatsapp:/, ""),
3232
- timestamp: msg.event.timestamp,
3233
- body: baseLine,
3234
- chatType: conversationKind,
3235
- sender: {
3236
- name: sender.name ?? void 0,
3237
- e164: sender.e164 ?? void 0,
3238
- id: getPrimaryIdentityId(sender) ?? void 0
3239
- },
3240
- previousTimestamp,
3241
- envelope,
3242
- fromMe: msg.platform.fromMe
3243
- });
3244
- }
3245
- //#endregion
3246
- //#region extensions/whatsapp/src/auto-reply/monitor/status-reaction.ts
3247
- async function createWhatsAppStatusReactionController(params) {
3248
- if (!params.msg.event.id) return null;
3249
- if ((params.cfg.messages?.statusReactions)?.enabled !== true) return null;
3250
- const eligibility = await resolveWhatsAppReactionEligibility({
3251
- cfg: params.cfg,
3252
- msg: params.msg,
3253
- agentId: params.agentId,
3254
- sessionKey: params.sessionKey,
3255
- verbose: params.verbose
3256
- });
3257
- if (eligibility.status === "disabled") return null;
3258
- const { chatId, messageId, emoji: initialEmoji, reactionOptions } = eligibility;
3259
- return createStatusReactionController({
3260
- enabled: true,
3261
- adapter: {
3262
- setReaction: async (emoji) => {
3263
- await sendReactionWhatsApp(chatId, messageId, emoji, reactionOptions);
3264
- },
3265
- clearReaction: async () => {
3266
- await sendReactionWhatsApp(chatId, messageId, "", reactionOptions);
3267
- }
3268
- },
3269
- initialEmoji,
3270
- emojis: void 0,
3271
- onError: (err) => {
3272
- logVerbose(`WhatsApp status-reaction error for chat ${chatId}/${messageId}: ${String(err)}`);
3273
- }
3274
- });
3275
- }
3276
- //#endregion
3277
- //#region extensions/whatsapp/src/auto-reply/monitor/process-message.ts
3278
- const WHATSAPP_MESSAGE_RECEIVED_HOOK_LIMITS = {
3279
- maxConcurrency: 8,
3280
- maxQueue: 128,
3281
- timeoutMs: 2e3
3282
- };
3283
- function readWhatsAppMessageReceivedHookOptIn(value) {
3284
- if (!value || typeof value !== "object") return;
3285
- const pluginHooks = value.pluginHooks;
3286
- if (pluginHooks?.messageReceived === void 0) return;
3287
- return pluginHooks.messageReceived;
3288
- }
3289
- function shouldEmitWhatsAppMessageReceivedHooks(params) {
3290
- const channelConfig = params.cfg.channels?.whatsapp;
3291
- return readWhatsAppMessageReceivedHookOptIn(params.accountId && channelConfig?.accounts ? channelConfig.accounts[params.accountId] : void 0) ?? readWhatsAppMessageReceivedHookOptIn(channelConfig) ?? false;
3292
- }
3293
- function emitWhatsAppMessageReceivedHooks(params) {
3294
- const canonical = deriveInboundMessageHookContext(params.ctx);
3295
- const hookRunner = getGlobalHookRunner();
3296
- if (hookRunner?.hasHooks("message_received")) fireAndForgetBoundedHook(() => hookRunner.runMessageReceived(toPluginMessageReceivedEvent(canonical), toPluginMessageContext(canonical)), "whatsapp: message_received plugin hook failed", void 0, WHATSAPP_MESSAGE_RECEIVED_HOOK_LIMITS);
3297
- fireAndForgetBoundedHook(() => triggerInternalHook(createInternalHookEvent("message", "received", params.sessionKey, toInternalMessageReceivedContext(canonical))), "whatsapp: message_received internal hook failed", void 0, WHATSAPP_MESSAGE_RECEIVED_HOOK_LIMITS);
3298
- }
3299
- function emitWhatsAppMessageReceivedHooksIfEnabled(params) {
3300
- if (!shouldEmitWhatsAppMessageReceivedHooks({
3301
- cfg: params.cfg,
3302
- accountId: params.accountId
3303
- })) return;
3304
- emitWhatsAppMessageReceivedHooks({
3305
- ctx: params.ctx,
3306
- sessionKey: params.sessionKey
3307
- });
3308
- }
3309
- function resolvePinnedMainDmRecipient(params) {
3310
- return resolvePinnedMainDmOwnerFromAllowlist({
3311
- dmScope: params.cfg.session?.dmScope,
3312
- allowFrom: params.allowFrom,
3313
- normalizeEntry: (entry) => normalizeE164(entry)
3314
- });
3315
- }
3316
- async function processMessage(params) {
3317
- const admission = requireWhatsAppInboundAdmission(params.msg);
3318
- if (admission.ingress.admission !== "dispatch" && admission.ingress.admission !== "observe") return false;
3319
- const conversationId = admission.conversation.id;
3320
- const conversationKind = admission.conversation.kind;
3321
- const self = getSelfIdentity(params.msg);
3322
- const inboundPolicy = resolveWhatsAppInboundPolicy({
3323
- cfg: params.cfg,
3324
- accountId: params.route.accountId ?? admission.accountId,
3325
- selfE164: self.e164 ?? null
3326
- });
3327
- const account = inboundPolicy.account;
3328
- const contextVisibilityMode = resolveChannelContextVisibilityMode({
3329
- cfg: params.cfg,
3330
- channel: "whatsapp",
3331
- accountId: account.accountId
3332
- });
3333
- const { storePath, envelopeOptions, previousTimestamp } = resolveInboundSessionEnvelopeContext({
3334
- cfg: params.cfg,
3335
- agentId: params.route.agentId,
3336
- sessionKey: params.route.sessionKey
3337
- });
3338
- let audioTranscript = params.preflightAudioTranscript ?? void 0;
3339
- const hasAudioBody = (params.msg.payload.media?.kind === "audio" || params.msg.payload.media?.type?.startsWith("audio/") === true) && !params.msg.payload.body.trim();
3340
- if (params.preflightAudioTranscript === void 0 && hasAudioBody && params.msg.payload.media?.path) try {
3341
- const { transcribeFirstAudio } = await import("./audio-preflight.runtime-C_glQhZY.js");
3342
- audioTranscript = await transcribeFirstAudio({
3343
- ctx: {
3344
- media: [{
3345
- path: params.msg.payload.media.path,
3346
- contentType: params.msg.payload.media.type,
3347
- kind: params.msg.payload.media.kind ?? void 0
3348
- }],
3349
- From: conversationId,
3350
- To: params.msg.platform.recipientJid,
3351
- Provider: "whatsapp",
3352
- Surface: "whatsapp",
3353
- OriginatingChannel: "whatsapp",
3354
- OriginatingTo: conversationId,
3355
- AccountId: params.route.accountId
3356
- },
3357
- cfg: params.cfg
3358
- });
3359
- } catch {
3360
- if (shouldLogVerbose$1()) logVerbose$1("whatsapp: audio preflight transcription failed, keeping structured audio");
3361
- }
3362
- const msgForAgent = audioTranscript !== void 0 ? {
3363
- ...params.msg,
3364
- payload: {
3365
- ...params.msg.payload,
3366
- body: audioTranscript
3367
- }
3368
- } : params.msg;
3369
- const visibleReplyTo = resolveVisibleWhatsAppReplyContext({
3370
- msg: params.msg,
3371
- authDir: account.authDir,
3372
- mode: contextVisibilityMode,
3373
- groupPolicy: inboundPolicy.groupPolicy,
3374
- groupAllowFrom: inboundPolicy.groupAllowFrom
3375
- });
3376
- let combinedBody = buildInboundLine({
3377
- cfg: params.cfg,
3378
- msg: msgForAgent,
3379
- agentId: params.route.agentId,
3380
- previousTimestamp,
3381
- envelope: envelopeOptions,
3382
- visibleReplyTo
3383
- });
3384
- let shouldClearGroupHistory = false;
3385
- const visibleGroupHistory = conversationKind === "group" ? resolveVisibleWhatsAppGroupHistory({
3386
- history: params.groupHistory ?? params.groupHistories.get(params.groupHistoryKey) ?? [],
3387
- mode: contextVisibilityMode,
3388
- groupPolicy: inboundPolicy.groupPolicy,
3389
- groupAllowFrom: inboundPolicy.groupAllowFrom,
3390
- authDir: account.authDir
3391
- }) : void 0;
3392
- if (conversationKind === "group") {
3393
- const history = visibleGroupHistory ?? [];
3394
- if (history.length > 0) combinedBody = buildHistoryContextFromEntries({
3395
- entries: history.map((m) => ({
3396
- sender: m.sender,
3397
- body: m.body,
3398
- timestamp: m.timestamp,
3399
- media: m.media
3400
- })),
3401
- currentMessage: combinedBody,
3402
- excludeLast: false,
3403
- formatEntry: (entry) => {
3404
- return formatInboundEnvelope$1({
3405
- channel: "WhatsApp",
3406
- from: conversationId,
3407
- timestamp: entry.timestamp,
3408
- body: [entry.body, formatMediaPlaceholderText(entry.media ?? [])].filter(Boolean).join("\n"),
3409
- chatType: "group",
3410
- senderLabel: entry.sender,
3411
- envelope: envelopeOptions
3412
- });
3413
- }
3414
- });
3415
- shouldClearGroupHistory = !(params.suppressGroupHistoryClear ?? false);
3416
- }
3417
- const combinedEchoKey = params.buildCombinedEchoKey({
3418
- sessionKey: params.route.sessionKey,
3419
- combinedBody
3420
- });
3421
- if (params.echoHas(combinedEchoKey)) {
3422
- logVerbose$1("Skipping auto-reply: detected echo for combined message");
3423
- params.echoForget(combinedEchoKey);
3424
- return false;
3425
- }
3426
- const statusReactionController = params.statusReactionController ?? (params.cfg.messages?.statusReactions?.enabled === true && !params.ackAlreadySent ? await createWhatsAppStatusReactionController({
3427
- cfg: params.cfg,
3428
- msg: params.msg,
3429
- agentId: params.route.agentId,
3430
- sessionKey: params.route.sessionKey,
3431
- verbose: params.verbose
3432
- }) : null);
3433
- if (statusReactionController && !params.statusReactionController) statusReactionController.setQueued();
3434
- let ackReaction = params.ackReaction ?? null;
3435
- if (!statusReactionController && !ackReaction && params.ackAlreadySent !== true) ackReaction = await maybeSendAckReaction({
3436
- cfg: params.cfg,
3437
- msg: params.msg,
3438
- agentId: params.route.agentId,
3439
- sessionKey: params.route.sessionKey,
3440
- verbose: params.verbose,
3441
- info: params.replyLogger.info.bind(params.replyLogger),
3442
- warn: params.replyLogger.warn.bind(params.replyLogger)
3443
- });
3444
- const correlationId = params.msg.event.id ?? newConnectionId();
3445
- params.replyLogger.info({
3446
- connectionId: params.connectionId,
3447
- correlationId,
3448
- from: conversationId,
3449
- to: params.msg.platform.recipientJid,
3450
- body: elide(combinedBody, 240),
3451
- mediaType: params.msg.payload.media?.type ?? null,
3452
- mediaPath: params.msg.payload.media?.path ?? null
3453
- }, "inbound web message");
3454
- const fromDisplay = conversationId;
3455
- const kindLabel = params.msg.payload.media?.type ? `, ${params.msg.payload.media?.type}` : "";
3456
- whatsappInboundLog.info(`Inbound message ${fromDisplay} -> ${params.msg.platform.recipientJid} (${conversationKind}${kindLabel}, ${combinedBody.length} chars)`);
3457
- if (shouldLogVerbose$1()) whatsappInboundLog.debug(`Inbound body: ${elide(combinedBody, 400)}`);
3458
- const sender = getSenderIdentity(params.msg);
3459
- const commandBody = params.msg.payload.commandBody ?? params.msg.payload.body;
3460
- const dmRouteTarget = resolveWhatsAppDmRouteTarget({
3461
- msg: params.msg,
3462
- senderE164: sender.e164 ?? void 0,
3463
- normalizeE164
3464
- });
3465
- const shouldCheckCommandAuth = shouldComputeCommandAuthorized(commandBody, params.cfg);
3466
- const isTextCommand = isControlCommandMessage(commandBody, params.cfg);
3467
- const commandAuthorized = shouldCheckCommandAuth ? await resolveWhatsAppCommandAuthorized({
3468
- cfg: params.cfg,
3469
- msg: params.msg,
3470
- policy: inboundPolicy,
3471
- authDir: account.authDir
3472
- }) : void 0;
3473
- const { onModelSelected, ...replyPipeline } = createChannelMessageReplyPipeline({
3474
- cfg: params.cfg,
3475
- agentId: params.route.agentId,
3476
- channel: "whatsapp",
3477
- accountId: params.route.accountId
3478
- });
3479
- const responsePrefix = resolveWhatsAppResponsePrefix({
3480
- cfg: params.cfg,
3481
- agentId: params.route.agentId,
3482
- isSelfChat: conversationKind !== "group" && inboundPolicy.isSelfChat,
3483
- pipelineResponsePrefix: replyPipeline.responsePrefix
3484
- });
3485
- const replyThreading = resolveBatchedReplyThreadingPolicy(account.replyToMode ?? "off", params.msg.event.isBatched === true);
3486
- const conversationSystemPrompt = conversationKind === "group" ? resolveWhatsAppGroupSystemPrompt({
3487
- accountConfig: account,
3488
- groupId: conversationId
3489
- }) : resolveWhatsAppDirectSystemPrompt({
3490
- accountConfig: account,
3491
- peerId: dmRouteTarget ?? conversationId
3492
- });
3493
- const ctxPayload = await buildWhatsAppInboundContext({
3494
- bodyForAgent: msgForAgent.payload.body,
3495
- combinedBody,
3496
- command: {
3497
- kind: isTextCommand ? "text-slash" : "normal",
3498
- body: commandBody,
3499
- authorized: commandAuthorized
3500
- },
3501
- groupHistory: visibleGroupHistory,
3502
- groupHistoryLimit: params.groupHistoryLimit,
3503
- groupMemberRoster: params.groupMemberNames.get(params.groupHistoryKey),
3504
- groupSystemPrompt: conversationSystemPrompt,
3505
- msg: params.msg,
3506
- rawBody: commandBody,
3507
- route: params.route,
3508
- sender: {
3509
- id: getPrimaryIdentityId(sender) ?? void 0,
3510
- name: sender.name ?? void 0,
3511
- e164: sender.e164 ?? void 0
3512
- },
3513
- ...audioTranscript !== void 0 ? { transcript: audioTranscript } : {},
3514
- ...audioTranscript !== void 0 ? { mediaTranscribedIndexes: [0] } : {},
3515
- replyThreading,
3516
- visibleReplyTo: visibleReplyTo ?? void 0,
3517
- suppressMessageReceivedHooks: true
3518
- });
3519
- emitWhatsAppMessageReceivedHooksIfEnabled({
3520
- cfg: params.cfg,
3521
- ctx: ctxPayload,
3522
- accountId: params.route.accountId,
3523
- sessionKey: params.route.sessionKey
3524
- });
3525
- const pinnedMainDmRecipient = resolvePinnedMainDmRecipient({
3526
- cfg: params.cfg,
3527
- allowFrom: inboundPolicy.configuredAllowFrom
3528
- });
3529
- updateWhatsAppMainLastRoute({
3530
- backgroundTasks: params.backgroundTasks,
3531
- cfg: params.cfg,
3532
- ctx: ctxPayload,
3533
- dmRouteTarget,
3534
- pinnedMainDmRecipient,
3535
- route: params.route,
3536
- updateLastRoute: updateLastRouteInBackground,
3537
- warn: params.replyLogger.warn.bind(params.replyLogger)
3538
- });
3539
- let finalizeReply;
3540
- const turnResult = await runChannelInboundEvent({
3541
- channel: "whatsapp",
3542
- accountId: params.route.accountId,
3543
- raw: params.msg,
3544
- adapter: {
3545
- ingest: () => ({
3546
- id: params.msg.event.id ?? `${conversationId}:${Date.now()}`,
3547
- timestamp: params.msg.event.timestamp,
3548
- rawText: ctxPayload.RawBody ?? "",
3549
- textForAgent: ctxPayload.BodyForAgent,
3550
- textForCommands: ctxPayload.CommandBody,
3551
- raw: params.msg
3552
- }),
3553
- preflight: () => {
3554
- const reason = admission.ingress.reasonCode;
3555
- if (admission.ingress.admission === "dispatch") return { admission: {
3556
- kind: "dispatch",
3557
- reason
3558
- } };
3559
- if (admission.ingress.admission === "observe") return { admission: {
3560
- kind: "observeOnly",
3561
- reason
3562
- } };
3563
- if (admission.ingress.admission === "skip") return { admission: {
3564
- kind: "handled",
3565
- reason
3566
- } };
3567
- return { admission: {
3568
- kind: "drop",
3569
- reason,
3570
- recordHistory: false
3571
- } };
3572
- },
3573
- resolveTurn: () => {
3574
- const { finalize, ...replyPlan } = createWhatsAppReplyPlan({
3575
- cfg: params.cfg,
3576
- connectionId: params.connectionId,
3577
- context: ctxPayload,
3578
- deliverReply: deliverWebReply,
3579
- groupHistories: params.groupHistories,
3580
- groupHistoryKey: params.groupHistoryKey,
3581
- maxMediaBytes: params.maxMediaBytes,
3582
- maxMediaTextChunkLimit: params.maxMediaTextChunkLimit,
3583
- msg: params.msg,
3584
- onModelSelected,
3585
- rememberSentText: params.rememberSentText,
3586
- replyLogger: params.replyLogger,
3587
- replyPipeline: {
3588
- ...replyPipeline,
3589
- responsePrefix
3590
- },
3591
- replyResolver: params.replyResolver,
3592
- route: params.route,
3593
- shouldClearGroupHistory,
3594
- statusReactionController
3595
- });
3596
- finalizeReply = finalize;
3597
- return {
3598
- cfg: params.cfg,
3599
- channel: "whatsapp",
3600
- accountId: params.route.accountId,
3601
- route: {
3602
- agentId: params.route.agentId,
3603
- sessionKey: params.route.sessionKey
3604
- },
3605
- ctxPayload,
3606
- record: {
3607
- onRecordError: (err) => {
3608
- params.replyLogger.warn({
3609
- error: formatError(err),
3610
- storePath,
3611
- sessionKey: params.route.sessionKey
3612
- }, "failed updating session meta");
3613
- },
3614
- trackSessionMetaTask: (task) => {
3615
- trackBackgroundTask(params.backgroundTasks, task);
3616
- }
3617
- },
3618
- ...replyPlan
3619
- };
3620
- }
3621
- }
3622
- });
3623
- const didSendReply = turnResult.dispatched ? finalizeReply?.(turnResult.dispatchResult) ?? false : false;
3624
- removeAckReactionHandleAfterReply({
3625
- removeAfterReply: false,
3626
- ackReaction,
3627
- onError: (err) => {
3628
- logAckFailure({
3629
- log: logVerbose$1,
3630
- channel: "whatsapp",
3631
- target: `${params.msg.platform.chatJid ?? conversationId}/${params.msg.event.id ?? "unknown"}`,
3632
- error: err
3633
- });
3634
- }
3635
- });
3636
- return didSendReply;
3637
- }
3638
- //#endregion
3639
- //#region extensions/whatsapp/src/auto-reply/monitor/on-message.ts
3640
- function createWebOnMessageHandler(params) {
3641
- const hasExplicitlyPassedInboundAccess = (msg) => msg.admission ? msg.admission.ingress.decision === "allow" : msg.accessControlPassed === true;
3642
- const withDirectSenderPeer = (msg, peerId) => {
3643
- if (requireWhatsAppInboundAdmission(msg).conversation.kind === "group" || msg.platform.sender?.e164 || msg.platform.senderE164 || !peerId.startsWith("+")) return msg;
3644
- const normalized = normalizeE164(peerId);
3645
- if (!normalized) return msg;
3646
- return requireAdmittedWhatsAppInboundMessage(withDeprecatedWebInboundMessageFlatAliases({
3647
- ...msg,
3648
- platform: {
3649
- ...msg.platform,
3650
- sender: {
3651
- ...msg.platform.sender,
3652
- e164: normalized
3653
- },
3654
- senderE164: normalized
3655
- }
3656
- }));
3657
- };
3658
- const processForRoute = async (cfg, msg, route, groupHistoryKey, opts) => {
3659
- const processParams = {
3660
- cfg,
3661
- msg,
3662
- route,
3663
- groupHistoryKey,
3664
- groupHistories: params.groupHistories,
3665
- groupHistoryLimit: params.groupHistoryLimit,
3666
- groupMemberNames: params.groupMemberNames,
3667
- connectionId: params.connectionId,
3668
- verbose: params.verbose,
3669
- maxMediaBytes: params.maxMediaBytes,
3670
- replyResolver: params.replyResolver,
3671
- replyLogger: params.replyLogger,
3672
- backgroundTasks: params.backgroundTasks,
3673
- rememberSentText: params.echoTracker.rememberText,
3674
- echoHas: params.echoTracker.has,
3675
- echoForget: params.echoTracker.forget,
3676
- buildCombinedEchoKey: params.echoTracker.buildCombinedKey
3677
- };
3678
- if (opts?.groupHistory !== void 0) processParams.groupHistory = opts.groupHistory;
3679
- if (opts?.suppressGroupHistoryClear !== void 0) processParams.suppressGroupHistoryClear = opts.suppressGroupHistoryClear;
3680
- if (opts?.preflightAudioTranscript !== void 0) processParams.preflightAudioTranscript = opts.preflightAudioTranscript;
3681
- if (opts?.ackAlreadySent === true) processParams.ackAlreadySent = true;
3682
- if (opts?.ackReaction !== void 0) processParams.ackReaction = opts.ackReaction;
3683
- if (opts?.statusReactionController !== void 0) processParams.statusReactionController = opts.statusReactionController;
3684
- return processMessage(processParams);
3685
- };
3686
- return async (rawMsg) => {
3687
- const canRunDirectEarlyAudioPreflight = hasExplicitlyPassedInboundAccess(rawMsg);
3688
- const normalizedMsg = requireAdmittedWhatsAppInboundMessage(normalizeWebInboundMessage(rawMsg));
3689
- const cfg = params.loadConfig?.() ?? params.cfg;
3690
- const peerId = resolvePeerId(normalizedMsg);
3691
- const msg = withDirectSenderPeer(normalizedMsg, peerId);
3692
- const admission = requireWhatsAppInboundAdmission(msg);
3693
- if (admission.ingress.admission !== "dispatch" && admission.ingress.admission !== "observe") return;
3694
- const conversationId = admission.conversation.id;
3695
- const conversationKind = admission.conversation.kind;
3696
- const baseRoute = resolveAgentRoute({
3697
- cfg,
3698
- channel: "whatsapp",
3699
- accountId: admission.accountId,
3700
- peer: {
3701
- kind: conversationKind,
3702
- id: peerId
3703
- }
3704
- });
3705
- const baseConversationRoute = conversationKind === "group" ? resolveWhatsAppGroupSessionRoute(baseRoute) : baseRoute;
3706
- const routeAccountId = baseConversationRoute.accountId ?? admission.accountId;
3707
- const account = resolveWhatsAppAccount({
3708
- cfg,
3709
- accountId: routeAccountId
3710
- });
3711
- const baseMentionConfig = buildMentionConfig(cfg);
3712
- if (conversationId === msg.platform.recipientJid) logVerbose(`📱 Same-phone mode detected (from === to: ${conversationId})`);
3713
- if (params.echoTracker.has(msg.payload.body)) {
3714
- logVerbose("Skipping auto-reply: detected echo (message matches recently sent text)");
3715
- params.echoTracker.forget(msg.payload.body);
3716
- return;
3717
- }
3718
- const configuredRoute = resolveConfiguredBindingRoute({
3719
- cfg,
3720
- route: baseConversationRoute,
3721
- channel: "whatsapp",
3722
- accountId: routeAccountId,
3723
- conversationId: peerId
3724
- });
3725
- const route = configuredRoute.route;
3726
- const groupHistoryKey = conversationKind === "group" ? buildGroupHistoryKey({
3727
- channel: "whatsapp",
3728
- accountId: route.accountId,
3729
- peerKind: "group",
3730
- peerId
3731
- }) : route.sessionKey;
3732
- let preflightAudioTranscript;
3733
- const hasAudioBody = (msg.payload.media?.kind === "audio" || msg.payload.media?.type?.startsWith("audio/") === true) && !msg.payload.body.trim();
3734
- const canRunEarlyAudioPreflight = conversationKind === "group" || canRunDirectEarlyAudioPreflight;
3735
- let ackAlreadySent = false;
3736
- let ackReaction = null;
3737
- let statusReactionController = null;
3738
- let recordAcceptedConfiguredGroupRoute = null;
3739
- const clearPreDispatchReaction = async () => {
3740
- try {
3741
- if (statusReactionController) {
3742
- const controller = statusReactionController;
3743
- statusReactionController = null;
3744
- controller.cancelPending();
3745
- await controller.clear();
3746
- return;
3747
- }
3748
- if (ackReaction && await ackReaction.ackReactionPromise) await ackReaction.remove();
3749
- } catch (err) {
3750
- params.replyLogger.warn({ error: String(err) }, "whatsapp: failed to clear pre-dispatch reaction after pre-dispatch rejection");
3751
- }
3752
- };
3753
- const transcribeAudioOnce = async () => {
3754
- if (preflightAudioTranscript !== void 0 || !hasAudioBody || !msg.payload.media?.path) return;
3755
- try {
3756
- const { transcribeFirstAudio } = await import("./audio-preflight.runtime-C_glQhZY.js");
3757
- preflightAudioTranscript = await transcribeFirstAudio({
3758
- ctx: {
3759
- media: [{
3760
- path: msg.payload.media.path,
3761
- contentType: msg.payload.media.type,
3762
- kind: msg.payload.media.kind ?? void 0
3763
- }],
3764
- From: conversationId,
3765
- To: msg.platform.recipientJid,
3766
- Provider: "whatsapp",
3767
- Surface: "whatsapp",
3768
- OriginatingChannel: "whatsapp",
3769
- OriginatingTo: conversationId,
3770
- AccountId: route.accountId
3771
- },
3772
- cfg
3773
- }) ?? null;
3774
- } catch {
3775
- preflightAudioTranscript = null;
3776
- }
3777
- };
3778
- const runAudioPreflightOnce = async () => {
3779
- if (preflightAudioTranscript !== void 0 || !canRunEarlyAudioPreflight || !hasAudioBody || !msg.payload.media?.path) return;
3780
- if (cfg.messages?.statusReactions?.enabled === true) {
3781
- statusReactionController = await createWhatsAppStatusReactionController({
3782
- cfg,
3783
- msg,
3784
- agentId: route.agentId,
3785
- sessionKey: route.sessionKey,
3786
- verbose: params.verbose
3787
- });
3788
- if (statusReactionController) await statusReactionController.setQueued();
3789
- } else {
3790
- ackReaction = await maybeSendAckReaction({
3791
- cfg,
3792
- msg,
3793
- agentId: route.agentId,
3794
- sessionKey: route.sessionKey,
3795
- verbose: params.verbose,
3796
- info: params.replyLogger.info.bind(params.replyLogger),
3797
- warn: params.replyLogger.warn.bind(params.replyLogger)
3798
- });
3799
- ackAlreadySent = ackReaction !== null;
3800
- }
3801
- await transcribeAudioOnce();
3802
- };
3803
- if (conversationKind === "group") {
3804
- const sender = getSenderIdentity(msg);
3805
- const metaCtx = {
3806
- From: conversationId,
3807
- To: msg.platform.recipientJid,
3808
- SessionKey: route.sessionKey,
3809
- AccountId: route.accountId,
3810
- ChatType: conversationKind,
3811
- ConversationLabel: conversationId,
3812
- GroupSubject: msg.group?.subject,
3813
- SenderName: sender.name ?? void 0,
3814
- SenderId: getPrimaryIdentityId(sender) ?? void 0,
3815
- SenderE164: sender.e164 ?? void 0,
3816
- Provider: "whatsapp",
3817
- Surface: "whatsapp",
3818
- OriginatingChannel: "whatsapp",
3819
- OriginatingTo: conversationId
3820
- };
3821
- const recordGroupRoute = () => updateLastRouteInBackground({
3822
- cfg,
3823
- backgroundTasks: params.backgroundTasks,
3824
- storeAgentId: route.agentId,
3825
- sessionKey: route.sessionKey,
3826
- channel: "whatsapp",
3827
- to: conversationId,
3828
- accountId: route.accountId,
3829
- ctx: metaCtx,
3830
- warn: params.replyLogger.warn.bind(params.replyLogger)
3831
- });
3832
- recordAcceptedConfiguredGroupRoute = recordGroupRoute;
3833
- let gating = await applyGroupGating({
3834
- cfg,
3835
- msg,
3836
- deferMissingMention: hasAudioBody && Boolean(msg.payload.media?.path),
3837
- groupHistoryKey,
3838
- agentId: route.agentId,
3839
- sessionKey: route.sessionKey,
3840
- baseMentionConfig,
3841
- providerMentionPatterns: account.mentionPatterns,
3842
- authDir: account.authDir,
3843
- selfChatMode: account.selfChatMode,
3844
- groupHistories: params.groupHistories,
3845
- groupHistoryLimit: params.groupHistoryLimit,
3846
- groupMemberNames: params.groupMemberNames,
3847
- logVerbose,
3848
- replyLogger: params.replyLogger
3849
- });
3850
- if (!gating.shouldProcess && "needsMentionText" in gating && gating.needsMentionText === true) {
3851
- await runAudioPreflightOnce();
3852
- gating = await applyGroupGating({
3853
- cfg,
3854
- msg,
3855
- ...typeof preflightAudioTranscript === "string" ? { mentionText: preflightAudioTranscript } : {},
3856
- groupHistoryKey,
3857
- agentId: route.agentId,
3858
- sessionKey: route.sessionKey,
3859
- baseMentionConfig,
3860
- providerMentionPatterns: account.mentionPatterns,
3861
- authDir: account.authDir,
3862
- selfChatMode: account.selfChatMode,
3863
- groupHistories: params.groupHistories,
3864
- groupHistoryLimit: params.groupHistoryLimit,
3865
- groupMemberNames: params.groupMemberNames,
3866
- logVerbose,
3867
- replyLogger: params.replyLogger
3868
- });
3869
- }
3870
- if (!gating.shouldProcess) {
3871
- await clearPreDispatchReaction();
3872
- return;
3873
- }
3874
- }
3875
- if (configuredRoute.bindingResolution) {
3876
- const ensured = await ensureConfiguredBindingRouteReady({
3877
- cfg,
3878
- bindingResolution: configuredRoute.bindingResolution
3879
- });
3880
- if (!ensured.ok) {
3881
- params.replyLogger.warn(`whatsapp: configured ACP binding unavailable for conversation ${configuredRoute.bindingResolution.record.conversation.conversationId}: ${ensured.error}`);
3882
- await clearPreDispatchReaction();
3883
- return;
3884
- }
3885
- }
3886
- if (recordAcceptedConfiguredGroupRoute && !configuredRoute.bindingResolution) {
3887
- recordAcceptedConfiguredGroupRoute();
3888
- recordAcceptedConfiguredGroupRoute = null;
3889
- }
3890
- await runAudioPreflightOnce();
3891
- const hasBroadcastTargets = !configuredRoute.bindingResolution && Array.isArray(cfg.broadcast?.[peerId]) && cfg.broadcast[peerId].length > 0;
3892
- if (hasBroadcastTargets && statusReactionController) await clearPreDispatchReaction();
3893
- if (hasBroadcastTargets && !canRunEarlyAudioPreflight) await transcribeAudioOnce();
3894
- if (!configuredRoute.bindingResolution && await maybeBroadcastMessage({
3895
- cfg,
3896
- msg,
3897
- peerId,
3898
- route,
3899
- groupHistoryKey,
3900
- groupHistories: params.groupHistories,
3901
- ...preflightAudioTranscript !== void 0 ? { preflightAudioTranscript } : {},
3902
- ...ackAlreadySent && conversationKind !== "group" ? { ackAlreadySent: true } : {},
3903
- ...ackReaction && conversationKind !== "group" ? { ackReaction } : {},
3904
- ...statusReactionController && conversationKind !== "group" ? { ackAlreadySent: true } : {},
3905
- processMessage: (m, r, k, opts) => processForRoute(cfg, m, r, k, opts)
3906
- })) return;
3907
- recordAcceptedConfiguredGroupRoute?.();
3908
- await processForRoute(cfg, msg, route, groupHistoryKey, {
3909
- ...preflightAudioTranscript !== void 0 ? { preflightAudioTranscript } : {},
3910
- ...ackAlreadySent ? { ackAlreadySent: true } : {},
3911
- ...ackReaction ? { ackReaction } : {},
3912
- ...statusReactionController ? { statusReactionController } : {}
3913
- });
3914
- };
3915
- }
3916
- //#endregion
3917
- //#region extensions/whatsapp/src/auto-reply/monitor.ts
3918
- function isNonRetryableWebCloseStatus(statusCode) {
3919
- return statusCode === 440;
3920
- }
3921
- const loadReplyResolverRuntime = createLazyRuntimeModule(() => import("./reply-resolver.runtime-Ded8D58Y.js"));
3922
- function resolveWebMonitorConfigSnapshot(params) {
3923
- const account = resolveWhatsAppAccount({
3924
- cfg: params.cfg,
3925
- accountId: params.accountId
3926
- });
3927
- return {
3928
- cfg: {
3929
- ...params.cfg,
3930
- channels: {
3931
- ...params.cfg.channels,
3932
- whatsapp: {
3933
- ...params.cfg.channels?.whatsapp,
3934
- responsePrefix: account.messagePrefix,
3935
- allowFrom: account.allowFrom,
3936
- groupAllowFrom: account.groupAllowFrom,
3937
- groupPolicy: account.groupPolicy,
3938
- textChunkLimit: account.textChunkLimit,
3939
- streaming: account.streaming,
3940
- mediaMaxMb: account.mediaMaxMb,
3941
- groups: account.groups
3942
- }
3943
- }
3944
- },
3945
- account
3946
- };
3947
- }
3948
- function isNoListenerReconnectError(lastError) {
3949
- return typeof lastError === "string" && /No active WhatsApp Web listener/i.test(lastError);
3950
- }
3951
- function normalizeReconnectAccountId(accountId) {
3952
- return (accountId ?? "").trim() || "default";
3953
- }
3954
- function isRetryableAuthUnstableError(error) {
3955
- return error instanceof WhatsAppAuthUnstableError || typeof error === "object" && error !== null && "code" in error && error.code === "whatsapp-auth-unstable";
3956
- }
3957
- const DEFAULT_TRANSPORT_TIMEOUT_MS = 300 * 1e3;
3958
- const WHATSAPP_RECONNECT_CATCH_UP_MAX_MS = 20 * 6e4;
3959
- async function monitorWebChannel(verbose, listenerFactory = attachWebInboxToSocket, keepAlive = true, replyResolver, runtime = defaultRuntime, abortSignal, tuning = {}) {
3960
- const activeReplyResolver = replyResolver ?? (await loadReplyResolverRuntime()).getReplyFromConfig;
3961
- const runId = newConnectionId();
3962
- const replyLogger = getChildLogger$1({
3963
- module: "web-auto-reply",
3964
- runId
3965
- });
3966
- const heartbeatLogger = getChildLogger$1({
3967
- module: "web-heartbeat",
3968
- runId
3969
- });
3970
- const reconnectLogger = getChildLogger$1({
3971
- module: "web-reconnect",
3972
- runId
3973
- });
3974
- const { cfg, account } = resolveWebMonitorConfigSnapshot({
3975
- cfg: getRuntimeConfig$1(),
3976
- accountId: tuning.accountId
3977
- });
3978
- const loadCurrentMonitorConfig = () => resolveWebMonitorConfigSnapshot({
3979
- cfg: getRuntimeConfig$1(),
3980
- accountId: account.accountId
3981
- }).cfg;
3982
- const maxMediaBytes = resolveWhatsAppMediaMaxBytes(account);
3983
- const heartbeatSeconds = resolveHeartbeatSeconds(cfg, tuning.heartbeatSeconds);
3984
- const reconnectPolicy = resolveReconnectPolicy(cfg, tuning.reconnect);
3985
- const socketTiming = resolveWhatsAppSocketTiming(tuning.socketTiming);
3986
- const baseMentionConfig = buildMentionConfig(cfg);
3987
- const groupHistoryLimit = account.historyLimit ?? cfg.channels?.whatsapp?.historyLimit ?? cfg.messages?.groupChat?.historyLimit ?? DEFAULT_GROUP_HISTORY_LIMIT;
3988
- const groupHistories = /* @__PURE__ */ new Map();
3989
- const groupMemberNames = /* @__PURE__ */ new Map();
3990
- const groupMetadataCache = /* @__PURE__ */ new Map();
3991
- const recentMessageKeys = /* @__PURE__ */ new Map();
3992
- const baileysGroupMetaCache = /* @__PURE__ */ new Map();
3993
- const echoTracker = createEchoTracker({
3994
- maxItems: 100,
3995
- logVerbose
3996
- });
3997
- const sleep = tuning.sleep ?? ((ms, signal) => sleepWithAbort(ms, signal ?? abortSignal));
3998
- const stopRequested = () => abortSignal?.aborted === true;
3999
- const currentMaxListeners = process.getMaxListeners?.() ?? 10;
4000
- if (process.setMaxListeners && currentMaxListeners < 50) process.setMaxListeners(50);
4001
- let sigintStop = false;
4002
- const handleSigint = () => {
4003
- sigintStop = true;
4004
- };
4005
- process.once("SIGINT", handleSigint);
4006
- const transportTimeoutMs = tuning.transportTimeoutMs ?? DEFAULT_TRANSPORT_TIMEOUT_MS;
4007
- const messageTimeoutMs = tuning.messageTimeoutMs ?? 1800 * 1e3;
4008
- const reconnectCatchUpWindowMs = Math.min(Math.max(messageTimeoutMs, 6e4), WHATSAPP_RECONNECT_CATCH_UP_MAX_MS);
4009
- const watchdogCheckMs = tuning.watchdogCheckMs ?? 60 * 1e3;
4010
- const controller = new WhatsAppConnectionController({
4011
- accountId: account.accountId,
4012
- authDir: account.authDir,
4013
- verbose,
4014
- keepAlive,
4015
- heartbeatSeconds,
4016
- transportTimeoutMs,
4017
- messageTimeoutMs,
4018
- watchdogCheckMs,
4019
- reconnectPolicy,
4020
- socketTiming,
4021
- abortSignal,
4022
- sleep,
4023
- isNonRetryableStatus: isNonRetryableWebCloseStatus
4024
- });
4025
- const statusController = createWebChannelStatusController(tuning.statusSink);
4026
- statusController.emit();
4027
- try {
4028
- while (true) {
4029
- if (stopRequested()) break;
4030
- const connectionId = newConnectionId();
4031
- const inboundDebounceMs = resolveInboundDebounceMs({
4032
- cfg,
4033
- channel: "whatsapp"
4034
- });
4035
- const shouldDebounce = (msg) => {
4036
- const normalized = normalizeWebInboundMessage(msg);
4037
- return shouldDebounceTextInbound({
4038
- text: normalized.payload.commandBody ?? normalized.payload.body,
4039
- cfg,
4040
- hasMedia: Boolean(normalized.payload.media?.path || normalized.payload.media?.type),
4041
- allowDebounce: !(normalized.payload.location || normalized.quote?.id || normalized.quote?.body)
4042
- });
4043
- };
4044
- let connection;
4045
- try {
4046
- connection = await controller.openConnection({
4047
- connectionId,
4048
- getMessage: async (key) => key.id && key.remoteJid ? readWhatsAppBaileysCacheEntry(recentMessageKeys, `${key.remoteJid}:${key.id}`) : void 0,
4049
- cachedGroupMetadata: async (jid) => {
4050
- const meta = readWhatsAppBaileysCacheEntry(baileysGroupMetaCache, jid);
4051
- return meta?.participants?.length ? meta : void 0;
4052
- },
4053
- createListener: async ({ sock, connection: connectionLocal }) => {
4054
- const onMessage = createWebOnMessageHandler({
4055
- cfg,
4056
- loadConfig: loadCurrentMonitorConfig,
4057
- verbose,
4058
- connectionId,
4059
- maxMediaBytes,
4060
- groupHistoryLimit,
4061
- groupHistories,
4062
- groupMemberNames,
4063
- echoTracker,
4064
- backgroundTasks: connectionLocal.backgroundTasks,
4065
- replyResolver: activeReplyResolver,
4066
- replyLogger,
4067
- baseMentionConfig,
4068
- account
4069
- });
4070
- return await (listenerFactory ?? attachWebInboxToSocket)({
4071
- cfg,
4072
- loadConfig: loadCurrentMonitorConfig,
4073
- verbose,
4074
- accountId: account.accountId,
4075
- authDir: account.authDir,
4076
- mediaMaxMb: account.mediaMaxMb,
4077
- selfChatMode: account.selfChatMode,
4078
- sendReadReceipts: account.sendReadReceipts,
4079
- socketTiming,
4080
- debounceMs: inboundDebounceMs,
4081
- appendReplyWindow: connectionLocal.openedAfterRecentInbound ? {
4082
- afterMs: connectionLocal.startedAt - reconnectCatchUpWindowMs,
4083
- untilMs: connectionLocal.startedAt + reconnectCatchUpWindowMs,
4084
- maxAgeMs: reconnectCatchUpWindowMs
4085
- } : void 0,
4086
- shouldDebounce,
4087
- socketRef: controller.socketRef,
4088
- shouldRetryDisconnect: () => !sigintStop && controller.shouldRetryDisconnect(),
4089
- disconnectRetryPolicy: reconnectPolicy,
4090
- disconnectRetryAbortSignal: controller.getDisconnectRetryAbortSignal(),
4091
- groupMetadataCache,
4092
- recentMessageKeys,
4093
- baileysGroupMetaCache,
4094
- onMessage: async (msg) => {
4095
- const normalized = normalizeWebInboundMessage(msg);
4096
- const inboundAt = Date.now();
4097
- controller.noteInbound(inboundAt);
4098
- statusController.noteInbound(inboundAt);
4099
- await onMessage(normalized);
4100
- },
4101
- onPendingWorkChanged: (pendingWorkCount, at) => {
4102
- statusController.noteBusy(pendingWorkCount > 0, at);
4103
- },
4104
- sock
4105
- });
4106
- },
4107
- onHeartbeat: (snapshot) => {
4108
- const authAgeMs = getWebAuthAgeMs(account.authDir);
4109
- const minutesSinceLastMessage = snapshot.lastInboundAt ? Math.floor((Date.now() - snapshot.lastInboundAt) / 6e4) : null;
4110
- const logData = {
4111
- connectionId: snapshot.connectionId,
4112
- reconnectAttempts: snapshot.reconnectAttempts,
4113
- messagesHandled: snapshot.handledMessages,
4114
- lastInboundAt: snapshot.lastInboundAt,
4115
- lastTransportActivityAt: snapshot.lastTransportActivityAt,
4116
- authAgeMs,
4117
- uptimeMs: snapshot.uptimeMs,
4118
- ...minutesSinceLastMessage !== null && minutesSinceLastMessage > 30 ? { minutesSinceLastMessage } : {}
4119
- };
4120
- statusController.noteTransportActivity(snapshot.lastTransportActivityAt);
4121
- if (minutesSinceLastMessage && minutesSinceLastMessage > 30) heartbeatLogger.warn(logData, "⚠️ web gateway heartbeat - no messages in 30+ minutes");
4122
- else heartbeatLogger.info(logData, "web gateway heartbeat");
4123
- },
4124
- onWatchdogTimeout: (snapshot) => {
4125
- const now = Date.now();
4126
- const transportSilentMs = now - snapshot.lastTransportActivityAt;
4127
- const appBaselineAt = snapshot.lastInboundAt ?? snapshot.startedAt;
4128
- const minutesSinceTransportActivity = Math.floor(transportSilentMs / 6e4);
4129
- const minutesSinceAppActivity = Math.floor((now - appBaselineAt) / 6e4);
4130
- const watchdogReason = transportSilentMs > transportTimeoutMs ? "transport-inactive" : "app-silent";
4131
- statusController.noteWatchdogStale();
4132
- heartbeatLogger.warn({
4133
- connectionId: snapshot.connectionId,
4134
- watchdogReason,
4135
- minutesSinceTransportActivity,
4136
- minutesSinceAppActivity,
4137
- lastInboundAt: snapshot.lastInboundAt ? new Date(snapshot.lastInboundAt) : null,
4138
- lastTransportActivityAt: new Date(snapshot.lastTransportActivityAt),
4139
- messagesHandled: snapshot.handledMessages
4140
- }, "WhatsApp watchdog timeout detected - forcing reconnect");
4141
- whatsappHeartbeatLog.warn(`WhatsApp watchdog timeout (${watchdogReason}) - restarting connection`);
4142
- }
4143
- });
4144
- } catch (error) {
4145
- const setupDecision = controller.resolveSetupErrorDecision(error);
4146
- if (setupDecision === "aborted") {
4147
- await controller.shutdown();
4148
- break;
4149
- }
4150
- if (setupDecision) {
4151
- statusController.noteReconnectAttempts(setupDecision.reconnectAttempts);
4152
- statusController.noteClose({
4153
- statusCode: setupDecision.normalized.statusCode,
4154
- error: formatError(error),
4155
- reconnectAttempts: setupDecision.reconnectAttempts,
4156
- healthState: setupDecision.healthState
4157
- });
4158
- if (setupDecision.action === "stop") {
4159
- reconnectLogger.warn({
4160
- connectionId,
4161
- status: setupDecision.normalized.statusLabel,
4162
- reconnectAttempts: setupDecision.reconnectAttempts,
4163
- maxAttempts: reconnectPolicy.maxAttempts
4164
- }, "web reconnect: setup status error; max attempts reached");
4165
- if (setupDecision.healthState === "logged-out") runtime.error(`WhatsApp session logged out during setup. Run \`${formatCliCommand("openclaw channels login --channel whatsapp")}\` to relink.`);
4166
- else if (setupDecision.healthState === "conflict") runtime.error(`WhatsApp Web connection closed during setup (status ${setupDecision.normalized.statusLabel}: session conflict). Resolve conflicting WhatsApp Web sessions, then restart the channel. To force a fresh QR, run \`${formatCliCommand("openclaw channels logout --channel whatsapp")}\` before \`${formatCliCommand("openclaw channels login --channel whatsapp")}\`. Stopping web monitoring.`);
4167
- else runtime.error(`WhatsApp Web connection closed during setup (status ${setupDecision.normalized.statusLabel}) after ${setupDecision.reconnectAttempts}/${reconnectPolicy.maxAttempts} attempts. Relink with \`${formatCliCommand("openclaw channels login --channel whatsapp")}\` if the issue persists.`);
4168
- await controller.shutdown();
4169
- break;
4170
- }
4171
- reconnectLogger.info({
4172
- connectionId,
4173
- status: setupDecision.normalized.statusLabel,
4174
- reconnectAttempts: setupDecision.reconnectAttempts,
4175
- delayMs: setupDecision.delayMs
4176
- }, "web reconnect: setup status error; retrying");
4177
- runtime.error(`WhatsApp Web connection closed during setup (status ${setupDecision.normalized.statusLabel}). Retry ${setupDecision.reconnectAttempts}/${reconnectPolicy.maxAttempts || "∞"} in ${formatDurationPrecise(setupDecision.delayMs ?? 0)}.`);
4178
- try {
4179
- await controller.waitBeforeRetry(setupDecision.delayMs ?? 0);
4180
- } catch {
4181
- break;
4182
- }
4183
- continue;
4184
- }
4185
- if (!isRetryableAuthUnstableError(error)) throw error;
4186
- const retryDecision = controller.consumeReconnectAttempt();
4187
- statusController.noteReconnectAttempts(retryDecision.reconnectAttempts);
4188
- statusController.noteClose({
4189
- error: error.message,
4190
- reconnectAttempts: retryDecision.reconnectAttempts,
4191
- healthState: retryDecision.healthState
4192
- });
4193
- if (retryDecision.action === "stop") {
4194
- reconnectLogger.warn({
4195
- connectionId,
4196
- reconnectAttempts: retryDecision.reconnectAttempts,
4197
- maxAttempts: reconnectPolicy.maxAttempts
4198
- }, "web reconnect: auth state stayed unstable; max attempts reached");
4199
- runtime.error(`WhatsApp auth state is still stabilizing after ${retryDecision.reconnectAttempts}/${reconnectPolicy.maxAttempts} attempts. Stopping web monitoring.`);
4200
- await controller.shutdown();
4201
- break;
4202
- }
4203
- reconnectLogger.info({
4204
- connectionId,
4205
- reconnectAttempts: retryDecision.reconnectAttempts,
4206
- delayMs: retryDecision.delayMs
4207
- }, "web reconnect: auth state still stabilizing during inbox attach; retrying");
4208
- runtime.error(`WhatsApp auth state is still stabilizing. Retry ${retryDecision.reconnectAttempts}/${reconnectPolicy.maxAttempts || "∞"} for inbox attach in ${formatDurationPrecise(retryDecision.delayMs ?? 0)}.`);
4209
- try {
4210
- await controller.waitBeforeRetry(retryDecision.delayMs ?? 0);
4211
- } catch {
4212
- break;
4213
- }
4214
- continue;
4215
- }
4216
- statusController.noteConnected();
4217
- const approvalContextLease = registerChannelRuntimeContext({
4218
- channelRuntime: tuning.channelRuntime,
4219
- channelId: "whatsapp",
4220
- accountId: account.accountId,
4221
- capability: CHANNEL_APPROVAL_NATIVE_RUNTIME_CONTEXT_CAPABILITY,
4222
- context: { accountId: account.accountId },
4223
- abortSignal
4224
- });
4225
- controller.setUnhandledRejectionCleanup(registerUnhandledRejectionHandler((reason) => {
4226
- if (!isLikelyWhatsAppCryptoError(reason)) return false;
4227
- const errorStr = formatError(reason);
4228
- reconnectLogger.warn({
4229
- connectionId: connection.connectionId,
4230
- error: errorStr
4231
- }, "web reconnect: unhandled rejection from WhatsApp socket; forcing reconnect");
4232
- controller.forceClose({
4233
- status: 499,
4234
- isLoggedOut: false,
4235
- error: reason
4236
- });
4237
- return true;
4238
- }));
4239
- const { e164: selfE164 } = readWebSelfId(account.authDir);
4240
- const connectRoute = resolveAgentRoute({
4241
- cfg,
4242
- channel: "whatsapp",
4243
- accountId: account.accountId
4244
- });
4245
- enqueueSystemEvent(`WhatsApp gateway connected${selfE164 ? ` as ${selfE164}` : ""}.`, { sessionKey: connectRoute.sessionKey });
4246
- const normalizedAccountId = normalizeReconnectAccountId(account.accountId);
4247
- drainPendingDeliveries({
4248
- drainKey: `whatsapp:${normalizedAccountId}`,
4249
- logLabel: "WhatsApp reconnect drain",
4250
- cfg,
4251
- log: reconnectLogger,
4252
- selectEntry: (entry) => ({
4253
- match: entry.channel === "whatsapp" && normalizeReconnectAccountId(entry.accountId) === normalizedAccountId,
4254
- bypassBackoff: isNoListenerReconnectError(entry.lastError)
4255
- })
4256
- }).catch((err) => {
4257
- reconnectLogger.warn({
4258
- connectionId: connection.connectionId,
4259
- error: String(err)
4260
- }, "reconnect drain failed");
4261
- });
4262
- const periodicDrainInterval = setInterval(() => {
4263
- drainPendingDeliveries({
4264
- drainKey: `whatsapp:${normalizedAccountId}`,
4265
- logLabel: "WhatsApp periodic drain",
4266
- cfg,
4267
- log: reconnectLogger,
4268
- selectEntry: (entry) => ({
4269
- match: entry.channel === "whatsapp" && normalizeReconnectAccountId(entry.accountId) === normalizedAccountId,
4270
- bypassBackoff: false
4271
- })
4272
- }).catch((err) => {
4273
- reconnectLogger.warn({
4274
- connectionId: connection.connectionId,
4275
- error: String(err)
4276
- }, "periodic drain failed");
4277
- });
4278
- }, 3e4);
4279
- const inboundPolicy = resolveWhatsAppInboundPolicy({
4280
- cfg,
4281
- accountId: account.accountId,
4282
- selfE164: selfE164 ?? null
4283
- });
4284
- whatsappLog.info(formatWhatsAppInboundListeningLog({
4285
- groups: inboundPolicy.account.groups,
4286
- groupPolicy: inboundPolicy.groupPolicy,
4287
- hasGroupAllowFrom: inboundPolicy.groupAllowFrom.length > 0
4288
- }));
4289
- if (process.stdout.isTTY || process.stderr.isTTY) whatsappLog.raw("Ctrl+C to stop.");
4290
- if (!keepAlive) {
4291
- clearInterval(periodicDrainInterval);
4292
- approvalContextLease?.dispose();
4293
- await controller.shutdown();
4294
- return;
4295
- }
4296
- const reason = await controller.waitForClose().finally(() => {
4297
- clearInterval(periodicDrainInterval);
4298
- approvalContextLease?.dispose();
4299
- });
4300
- if (stopRequested() || sigintStop || reason === "aborted") {
4301
- await controller.shutdown();
4302
- break;
4303
- }
4304
- const decision = controller.resolveCloseDecision(reason);
4305
- if (decision === "aborted") {
4306
- await controller.shutdown();
4307
- break;
4308
- }
4309
- statusController.noteReconnectAttempts(controller.getReconnectAttempts());
4310
- reconnectLogger.info({
4311
- connectionId: connection.connectionId,
4312
- status: decision.normalized.statusLabel,
4313
- loggedOut: decision.normalized.isLoggedOut,
4314
- reconnectAttempts: decision.reconnectAttempts,
4315
- error: decision.normalized.errorText
4316
- }, "web reconnect: connection closed");
4317
- enqueueSystemEvent(`WhatsApp gateway disconnected (status ${decision.normalized.statusLabel})`, { sessionKey: connectRoute.sessionKey });
4318
- if (decision.action === "stop") {
4319
- await controller.closeCurrentConnection();
4320
- statusController.noteClose({
4321
- statusCode: decision.normalized.statusCode,
4322
- loggedOut: decision.normalized.isLoggedOut,
4323
- error: decision.normalized.errorText,
4324
- reconnectAttempts: decision.reconnectAttempts,
4325
- healthState: decision.healthState
4326
- });
4327
- if (decision.healthState === "logged-out") runtime.error(`WhatsApp session logged out. Run \`${formatCliCommand("openclaw channels login --channel whatsapp")}\` to relink.`);
4328
- else if (decision.healthState === "conflict") {
4329
- reconnectLogger.warn({
4330
- connectionId: connection.connectionId,
4331
- status: decision.normalized.statusLabel,
4332
- error: decision.normalized.errorText
4333
- }, "web reconnect: non-retryable close status; stopping monitor");
4334
- runtime.error(`WhatsApp Web connection closed (status ${decision.normalized.statusLabel}: session conflict). Resolve conflicting WhatsApp Web sessions, then restart the channel. To force a fresh QR, run \`${formatCliCommand("openclaw channels logout --channel whatsapp")}\` before \`${formatCliCommand("openclaw channels login --channel whatsapp")}\`. Stopping web monitoring.`);
4335
- } else {
4336
- reconnectLogger.warn({
4337
- connectionId: connection.connectionId,
4338
- status: decision.normalized.statusLabel,
4339
- reconnectAttempts: decision.reconnectAttempts,
4340
- maxAttempts: reconnectPolicy.maxAttempts
4341
- }, "web reconnect: max attempts reached; continuing in degraded mode");
4342
- runtime.error(`WhatsApp Web reconnect: max attempts reached (${decision.reconnectAttempts}/${reconnectPolicy.maxAttempts}). Stopping web monitoring.`);
4343
- }
4344
- await controller.shutdown();
4345
- break;
4346
- }
4347
- const isWatchdogRecoveryReconnect = decision.normalized.error === WHATSAPP_WATCHDOG_TIMEOUT_ERROR;
4348
- statusController.noteClose({
4349
- statusCode: decision.normalized.statusCode,
4350
- error: decision.normalized.errorText,
4351
- reconnectAttempts: decision.reconnectAttempts,
4352
- healthState: decision.healthState,
4353
- watchdogRecovery: isWatchdogRecoveryReconnect
4354
- });
4355
- reconnectLogger.info({
4356
- connectionId: connection.connectionId,
4357
- status: decision.normalized.statusLabel,
4358
- reconnectAttempts: decision.reconnectAttempts,
4359
- maxAttempts: reconnectPolicy.maxAttempts || "unlimited",
4360
- delayMs: decision.delayMs
4361
- }, "web reconnect: scheduling retry");
4362
- const reconnectMessage = isWatchdogRecoveryReconnect ? `WhatsApp Web watchdog is recovering a stale connection (status ${decision.normalized.statusLabel}). Retry ${decision.reconnectAttempts}/${reconnectPolicy.maxAttempts || "∞"} in ${formatDurationPrecise(decision.delayMs ?? 0)}.` : `WhatsApp Web connection closed (status ${decision.normalized.statusLabel}). Retry ${decision.reconnectAttempts}/${reconnectPolicy.maxAttempts || "∞"} in ${formatDurationPrecise(decision.delayMs ?? 0)}… (${decision.normalized.errorText})`;
4363
- if (isWatchdogRecoveryReconnect) runtime.log(warn(reconnectMessage));
4364
- else runtime.error(reconnectMessage);
4365
- await controller.closeCurrentConnection();
4366
- try {
4367
- await controller.waitBeforeRetry(decision.delayMs ?? 0);
4368
- } catch {
4369
- break;
4370
- }
4371
- }
4372
- } finally {
4373
- statusController.markStopped();
4374
- process.removeListener("SIGINT", handleSigint);
4375
- await controller.shutdown();
4376
- }
4377
- }
4378
- //#endregion
4379
- export { loadWebMediaRaw as a, monitorWebInbox as c, loadWebMedia as i, resetWebInboundDedupe as l, LocalMediaAccessError as n, optimizeImageToJpeg as o, getDefaultLocalRoots as r, optimizeImageToPng as s, monitorWebChannel as t };