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