@openclaw/whatsapp 2026.7.2-beta.4 → 2026.7.2-beta.7

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