@qqbrowser/openclaw-qbot 0.0.127 → 0.0.129

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 (1470) hide show
  1. package/dist/account-lookup-CW-_CL7y.js +1 -1
  2. package/dist/acp-cli-01SGjPGi.js +1 -1
  3. package/dist/acp-cli-uxN405XG.js +1 -1
  4. package/dist/active-listener-BZ6loNaF.js +1 -1
  5. package/dist/active-listener-D8VOdVx3.js +1 -1
  6. package/dist/active-listener-DB5mhDuO.js +1 -1
  7. package/dist/active-listener-DeKRt_UV.js +1 -1
  8. package/dist/agent-scope-DAWJwFfl.js +1 -1
  9. package/dist/agent-scope-DXZc3eNT.js +1 -1
  10. package/dist/agents-BMh3ZeoB.js +1 -1
  11. package/dist/agents.config-B-0lZSmb.js +1 -1
  12. package/dist/agents.config-BDEN2Eph.js +1 -1
  13. package/dist/allow-from-B6dI7oz8.js +1 -1
  14. package/dist/allow-from-DEeVIPKS.js +1 -1
  15. package/dist/api-BeG0ObSq.js +1 -1
  16. package/dist/api-Dx8x1KTs.js +1 -1
  17. package/dist/api-key-rotation-C_MG2y1D.js +1 -1
  18. package/dist/api-key-rotation-D8WsZ43x.js +1 -1
  19. package/dist/api-key-rotation-DYYvcqSG.js +1 -1
  20. package/dist/api-key-rotation-dNu0GxPN.js +1 -1
  21. package/dist/arg-split-BOqSMBuf.js +1 -1
  22. package/dist/arg-split-DE5RqDHq.js +1 -1
  23. package/dist/audio-preflight--K4-eUVY.js +1 -1
  24. package/dist/audio-preflight-BKIm58PG.js +1 -1
  25. package/dist/audio-preflight-CAfi10dl.js +1 -1
  26. package/dist/audio-preflight-Xm0NL5JA.js +1 -1
  27. package/dist/audio-transcription-runner-BJNP7vB8.js +1 -1
  28. package/dist/audio-transcription-runner-BUsb6cqv.js +1 -1
  29. package/dist/audio-transcription-runner-C_31Yoq0.js +1 -1
  30. package/dist/audio-transcription-runner-CjKLRVPo.js +1 -1
  31. package/dist/audit-7DFnKINd.js +1 -1
  32. package/dist/audit-B6LsW3Ai.js +1 -1
  33. package/dist/audit-membership-runtime-BpRsMj5-.js +1 -1
  34. package/dist/audit-membership-runtime-BsfLZNBj.js +1 -1
  35. package/dist/audit-membership-runtime-DRHirRmx.js +1 -1
  36. package/dist/audit-membership-runtime-g0dEWJTp.js +1 -1
  37. package/dist/audit-membership-runtime-kdyToskD.js +1 -1
  38. package/dist/auth-choice-BNd2SNjJ.js +1 -1
  39. package/dist/auth-choice-C3aUWXx9.js +1 -1
  40. package/dist/auth-choice-DViEjgMg.js +1 -1
  41. package/dist/auth-choice-edozMf7r.js +1 -1
  42. package/dist/auth-choice-options-B3WQyS7I.js +1 -1
  43. package/dist/auth-choice-options-Dw14noox.js +1 -1
  44. package/dist/auth-choice-prompt-uegl56cf.js +1 -1
  45. package/dist/auth-choice-prompt-xYj13czb.js +1 -1
  46. package/dist/auth-choice.apply-helpers-CNLYnRxx.js +1 -1
  47. package/dist/auth-choice.apply-helpers-DCe5nTyP.js +1 -1
  48. package/dist/auth-profiles-BhXA8Jy2.js +1 -1
  49. package/dist/auth-token-C75IOb_K.js +1 -1
  50. package/dist/auth-token-CzgZf-ta.js +1 -1
  51. package/dist/banner-mIDEloRy.js +1 -1
  52. package/dist/bonjour-discovery-CpvzLjyB.js +1 -1
  53. package/dist/bonjour-discovery-wsh3Si1Q.js +1 -1
  54. package/dist/boolean-Ch3DfXPy.js +1 -1
  55. package/dist/boolean-D15s2V33.js +1 -1
  56. package/dist/boolean-DypnRoRK.js +1 -1
  57. package/dist/brew-COcDl8CB.js +1 -1
  58. package/dist/brew-DDPm_HfE.js +1 -1
  59. package/dist/browser-cli-BjzNbvF9.js +1 -1
  60. package/dist/browser-cli-CgHkgtgV.js +1 -1
  61. package/dist/build-info.json +3 -3
  62. package/dist/bundled/boot-md/handler.js +1 -1
  63. package/dist/bundled/bootstrap-extra-files/handler.js +1 -1
  64. package/dist/bundled/command-logger/handler.js +1 -1
  65. package/dist/bundled/session-memory/handler.js +1 -1
  66. package/dist/call-BA3O_Qpl.js +1 -1
  67. package/dist/call-BQT0zCgv.js +1 -1
  68. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  69. package/dist/channel-account-context-BMPAMZEv.js +1 -1
  70. package/dist/channel-account-context-DAcarnqW.js +1 -1
  71. package/dist/channel-activity-B04WbrrK.js +1 -1
  72. package/dist/channel-activity-BPRCQpI6.js +1 -1
  73. package/dist/channel-activity-D2VTmenR.js +1 -1
  74. package/dist/channel-activity-DHY5wAyl.js +1 -1
  75. package/dist/channel-activity-DYpm-0Cz.js +1 -1
  76. package/dist/channel-options-BYmHreMn.js +1 -1
  77. package/dist/channel-options-Cbv7VETu.js +1 -1
  78. package/dist/channel-selection-Ddyykqxv.js +1 -1
  79. package/dist/channel-selection-oRONo9z3.js +1 -1
  80. package/dist/channel-web-CK4RqVCH.js +1 -1
  81. package/dist/channel-web-Xw89Exy3.js +1 -1
  82. package/dist/channels/plugins/actions/discord.js +1 -1
  83. package/dist/channels/plugins/actions/signal.js +1 -1
  84. package/dist/channels/plugins/actions/telegram.js +1 -1
  85. package/dist/channels/plugins/agent-tools/whatsapp-login.js +1 -1
  86. package/dist/channels-cli-D2y5Xk5i.js +1 -1
  87. package/dist/channels-cli-cwFjBXcP.js +1 -1
  88. package/dist/channels-status-issues-8eFrGKyf.js +1 -1
  89. package/dist/channels-status-issues-PRgOT90w.js +1 -1
  90. package/dist/chat-envelope-Bznn2SoS.js +1 -1
  91. package/dist/chat-envelope-HVpKusFc.js +1 -1
  92. package/dist/clack-prompter-DBPdGdqp.js +1 -1
  93. package/dist/clack-prompter-Dq0aY6iM.js +1 -1
  94. package/dist/clawbot-cli-BwG1-8A9.js +1 -1
  95. package/dist/clawbot-cli-CaNu5A0G.js +1 -1
  96. package/dist/cleanup-utils-BWm70DoD.js +1 -1
  97. package/dist/cleanup-utils-D-RhEX6F.js +1 -1
  98. package/dist/cli-CQKA38bc.js +1 -1
  99. package/dist/cli-i7P4bYBg.js +1 -1
  100. package/dist/cli-utils-BY7dLMFy.js +1 -1
  101. package/dist/cli-utils-BleB1eys.js +1 -1
  102. package/dist/clipboard-Bk8cviBt.js +1 -1
  103. package/dist/clipboard-CKT_VIkG.js +1 -1
  104. package/dist/cmd-argv-BBT5l8AV.js +1 -1
  105. package/dist/cmd-argv-Bh-KpaZ0.js +1 -1
  106. package/dist/command-format-BbDT1tlm.js +1 -1
  107. package/dist/command-format-CLxIPuLR.js +1 -1
  108. package/dist/command-options-BpOUDl2S.js +1 -1
  109. package/dist/command-options-Bq5nQxz6.js +1 -1
  110. package/dist/command-poll-backoff-BZLHYB2k.js +1 -1
  111. package/dist/command-poll-backoff-Cww_r-24.js +1 -1
  112. package/dist/command-poll-backoff-Df6cOQrX.js +1 -1
  113. package/dist/command-poll-backoff-endAPdwn.js +1 -1
  114. package/dist/command-registry-BYk36N_R.js +1 -1
  115. package/dist/command-secret-targets-BBTiqQKa.js +1 -1
  116. package/dist/command-secret-targets-KM3OecbM.js +1 -1
  117. package/dist/commands-CGpM84iR.js +1 -1
  118. package/dist/commands-Dy7duWlt.js +1 -1
  119. package/dist/commands-registry-B3FI6TSl.js +1 -1
  120. package/dist/commands-registry-CxDVU5s9.js +1 -1
  121. package/dist/commands-registry-Dn2uuNuy.js +1 -1
  122. package/dist/commands-registry-Du79fdAL.js +1 -1
  123. package/dist/compact-CuBCVnVS.js +1 -1
  124. package/dist/completion-cli-CRNTbZlR.js +1 -1
  125. package/dist/completion-cli-DbGDCoiM.js +1 -1
  126. package/dist/config-BqW5S1xL.js +1 -1
  127. package/dist/config-DAQjvwZw.js +1 -1
  128. package/dist/config-cli-D_coAWd9.js +1 -1
  129. package/dist/config-cli-EKXoNzLf.js +1 -1
  130. package/dist/config-guard-U0wlYLUN.js +1 -1
  131. package/dist/config-guard-XayIkveC.js +1 -1
  132. package/dist/config-validation-B0nN9egx.js +1 -1
  133. package/dist/config-validation-CAHnpjrk.js +1 -1
  134. package/dist/configure-DNnQRKy8.js +1 -1
  135. package/dist/configure-NCNskZPe.js +1 -1
  136. package/dist/connection-auth-BcPbGyxw.js +1 -1
  137. package/dist/connection-auth-DZ-3Svr_.js +1 -1
  138. package/dist/context-window-guard-7crlatf9.js +1 -1
  139. package/dist/context-window-guard-CPChk363.js +1 -1
  140. package/dist/control-ui/apple-touch-icon.png +0 -0
  141. package/dist/control-ui/assets/de-DuUYLvt1.js +1 -0
  142. package/dist/control-ui/assets/es-DHtyqUQZ.js +1 -0
  143. package/dist/control-ui/assets/index-CYbiPp9k.js +8383 -0
  144. package/dist/control-ui/assets/index-C_GaJ8wS.css +1 -0
  145. package/dist/control-ui/assets/pt-BR-D2dJb9G8.js +1 -0
  146. package/dist/control-ui/assets/zh-CN-BgJ8_lE3.js +1 -0
  147. package/dist/control-ui/assets/zh-TW-cW5xB87I.js +1 -0
  148. package/dist/control-ui/favicon-32.png +0 -0
  149. package/dist/control-ui/favicon.ico +0 -0
  150. package/dist/control-ui/favicon.svg +22 -0
  151. package/dist/control-ui/index.html +17 -0
  152. package/dist/control-ui-assets-BIa0GGDg.js +1 -1
  153. package/dist/control-ui-assets-CTHGGgaX.js +1 -1
  154. package/dist/cron-cli-Cro66JtU.js +1 -1
  155. package/dist/cron-cli-DIeBukvk.js +1 -1
  156. package/dist/daemon-cli-Cw_fxNgE.js +1 -1
  157. package/dist/daemon-cli-DQsKS3pT.js +1 -1
  158. package/dist/daemon-cli.js +1 -1
  159. package/dist/daemon-install-C_DmJEkV.js +1 -1
  160. package/dist/daemon-install-D1DacLbM.js +1 -1
  161. package/dist/daemon-install-plan.shared-BSDdwWjB.js +1 -1
  162. package/dist/daemon-install-plan.shared-Dx3DBXCG.js +1 -1
  163. package/dist/daemon-runtime-DHiDbRuC.js +1 -1
  164. package/dist/daemon-runtime-VcpeBRJV.js +1 -1
  165. package/dist/dangerous-name-matching-BOmvAibz.js +1 -1
  166. package/dist/dangerous-name-matching-DtllRqBD.js +1 -1
  167. package/dist/dangerous-tools-CFRYQJ6V.js +1 -1
  168. package/dist/dangerous-tools-oYCu5wfC.js +1 -1
  169. package/dist/deliver-2c-EsQ_W.js +1 -1
  170. package/dist/deliver-BudDnEIb.js +1 -1
  171. package/dist/deliver-COKdxPmA.js +1 -1
  172. package/dist/deliver-DHP2vHKB.js +1 -1
  173. package/dist/delivery-queue-CKbauSFq.js +1 -1
  174. package/dist/delivery-queue-nkPJu0fY.js +1 -1
  175. package/dist/device-pairing-4eDo43Kk.js +1 -1
  176. package/dist/device-pairing-B7ZXiXp3.js +1 -1
  177. package/dist/devices-cli-BXUIb_UN.js +1 -1
  178. package/dist/devices-cli-D7PkbnHO.js +1 -1
  179. package/dist/diagnostic-Bzd5vlKH.js +1 -1
  180. package/dist/diagnostic-CFmHdXHP.js +1 -1
  181. package/dist/diagnostic-CW_Jv5UM.js +1 -1
  182. package/dist/diagnostic-Dza7-pMC.js +1 -1
  183. package/dist/diagnostics-BgbeL9KE.js +1 -1
  184. package/dist/diagnostics-Cdctg9K_.js +1 -1
  185. package/dist/directory-cli-CxeuNJcC.js +1 -1
  186. package/dist/directory-cli-DFlYCB5L.js +1 -1
  187. package/dist/dns-cli-BDbHznhi.js +1 -1
  188. package/dist/dns-cli-OuwliJ60.js +1 -1
  189. package/dist/docs-cli-Cdw9Iz9a.js +1 -1
  190. package/dist/docs-cli-ClD2UyX1.js +1 -1
  191. package/dist/doctor-completion-BSOX-LSq.js +1 -1
  192. package/dist/doctor-completion-DXqdpdlo.js +1 -1
  193. package/dist/doctor-config-flow-DHB8N7tT.js +1 -1
  194. package/dist/doctor-config-flow-MjfHBDlw.js +1 -1
  195. package/dist/enable-DVuqWT2a.js +1 -1
  196. package/dist/enable-DWaSH1HY.js +1 -1
  197. package/dist/entry-status-CCwwKO43.js +1 -1
  198. package/dist/entry-status-CoXkbJcX.js +1 -1
  199. package/dist/entry.js +1 -1
  200. package/dist/env-D7wNuBx1.js +1 -1
  201. package/dist/env-overrides-DHtB4kK3.js +1 -1
  202. package/dist/env-overrides-DXJbFrwI.js +1 -1
  203. package/dist/errors-6SQWM9dj.js +1 -1
  204. package/dist/errors-Bunti32V.js +1 -1
  205. package/dist/exec-B3eleY5O.js +1 -1
  206. package/dist/exec-DHqLtFYt.js +1 -1
  207. package/dist/exec-approvals-BXO9Cezj.js +1 -1
  208. package/dist/exec-approvals-BpBNEy6i.js +1 -1
  209. package/dist/exec-approvals-allowlist-BKFaHvA5.js +1 -1
  210. package/dist/exec-approvals-allowlist-DBh9Pm77.js +1 -1
  211. package/dist/exec-approvals-cli-0neCwpk-.js +1 -1
  212. package/dist/exec-approvals-cli-BuHSw09B.js +1 -1
  213. package/dist/exec-safe-bin-runtime-policy-Ck3GO5AB.js +1 -1
  214. package/dist/exec-safe-bin-runtime-policy-D2WexijZ.js +1 -1
  215. package/dist/fetch-BI3CnKE3.js +1 -1
  216. package/dist/fetch-BJT3BrkJ.js +1 -1
  217. package/dist/fetch-Bn0mWg6a.js +1 -1
  218. package/dist/fetch-CY5G3PDq.js +1 -1
  219. package/dist/fetch-Ce-scEU-.js +1 -1
  220. package/dist/fetch-D0rZDHKO.js +1 -1
  221. package/dist/fetch-DHo17YmK.js +1 -1
  222. package/dist/fetch-Dh-apy46.js +1 -1
  223. package/dist/fetch-Dikjvc5M.js +1 -1
  224. package/dist/fetch-DsjPfQlp.js +1 -1
  225. package/dist/fetch-_g8lZ8K8.js +1 -1
  226. package/dist/fetch-guard-BaRbr_V6.js +1 -1
  227. package/dist/fetch-guard-BmNIhXP-.js +1 -1
  228. package/dist/fetch-guard-ChVqc0HF.js +1 -1
  229. package/dist/fetch-guard-Cji70DJW.js +1 -1
  230. package/dist/fetch-hy0JKSsm.js +1 -1
  231. package/dist/fetch-timeout-CdYxWG9w.js +1 -1
  232. package/dist/fetch-timeout-Cj8_oAls.js +1 -1
  233. package/dist/fetch-timeout-DoOI_izT.js +1 -1
  234. package/dist/fetch-timeout-u8g99Ax0.js +1 -1
  235. package/dist/fetch-xT2jRpqs.js +1 -1
  236. package/dist/format-Bn1bwJKX.js +1 -1
  237. package/dist/format-Ce7I7s-k.js +1 -1
  238. package/dist/format-duration-C8AzNqKh.js +1 -1
  239. package/dist/format-duration-D5AMtmHa.js +1 -1
  240. package/dist/format-relative-B9pSIdGe.js +1 -1
  241. package/dist/format-relative-DkMjYy7z.js +1 -1
  242. package/dist/frontmatter-BkZkwkVO.js +1 -1
  243. package/dist/frontmatter-C7mzDNxd.js +1 -1
  244. package/dist/frontmatter-CzpfPBFl.js +1 -1
  245. package/dist/gateway-cli-Bj-BYgGN.js +1 -1
  246. package/dist/gateway-cli-DP65otLl.js +1 -1
  247. package/dist/gateway-install-token-BIqlEgy0.js +1 -1
  248. package/dist/gateway-install-token-CtUJl3A3.js +1 -1
  249. package/dist/gateway-rpc-DJHjmEZz.js +1 -1
  250. package/dist/gateway-rpc-XRAMeV67.js +1 -1
  251. package/dist/github-copilot-token-C79yeDKS.js +1 -1
  252. package/dist/github-copilot-token-DGYAlOmV.js +1 -1
  253. package/dist/github-copilot-token-DePP-lIf.js +1 -1
  254. package/dist/github-copilot-token-wm6mbypz.js +1 -1
  255. package/dist/gmail-setup-utils-CYOH3zzx.js +1 -1
  256. package/dist/gmail-setup-utils-S-MyEGuj.js +1 -1
  257. package/dist/group-access-BHKVOhrj.js +1 -1
  258. package/dist/group-access-D2DOYMfr.js +1 -1
  259. package/dist/health-Bedsiigi.js +1 -1
  260. package/dist/health-Cy_CvKbX.js +1 -1
  261. package/dist/health-format-B1nj3Wfn.js +1 -1
  262. package/dist/health-format-VBr6LEpt.js +1 -1
  263. package/dist/heartbeat-visibility-BQ_esv2m.js +1 -1
  264. package/dist/heartbeat-visibility-q74UdY8O.js +1 -1
  265. package/dist/help-format-B4aEI7V9.js +1 -1
  266. package/dist/help-format-BRbF_INg.js +1 -1
  267. package/dist/helpers-COz1ghcB.js +1 -1
  268. package/dist/helpers-Cp8gcO6u.js +1 -1
  269. package/dist/hooks-cli-DrnH2iDk.js +1 -1
  270. package/dist/hooks-cli-DvfZKyZl.js +1 -1
  271. package/dist/hooks-status-BHt-Xvh4.js +1 -1
  272. package/dist/hooks-status-CRJ4J0ZW.js +1 -1
  273. package/dist/image-BJC11A7e.js +1 -1
  274. package/dist/image-BKPxWO_2.js +1 -1
  275. package/dist/image-Ba-mOMMV.js +1 -1
  276. package/dist/image-D-R3N1it.js +1 -1
  277. package/dist/index.js +1 -1
  278. package/dist/inspect-BKV-I1UE.js +1 -1
  279. package/dist/inspect-z59cgmYc.js +1 -1
  280. package/dist/install-safe-path-C6kc_8NW.js +1 -1
  281. package/dist/install-safe-path-iesxijn2.js +1 -1
  282. package/dist/installs-BNeI_oML.js +1 -1
  283. package/dist/installs-C1xQLuby.js +1 -1
  284. package/dist/ipv4-BXZDlz5C.js +1 -1
  285. package/dist/ipv4-BnPLbv6y.js +1 -1
  286. package/dist/ir-BYCrFFZ9.js +1 -1
  287. package/dist/ir-CH7YvSi9.js +1 -1
  288. package/dist/ir-CSysIkNU.js +1 -1
  289. package/dist/ir-CZdZsdnI.js +1 -1
  290. package/dist/is-main-DG5ueqhF.js +1 -1
  291. package/dist/issue-format-CpTuk_rQ.js +1 -1
  292. package/dist/issue-format-kj7FXHhi.js +1 -1
  293. package/dist/kill-tree-DBJW8_Q-.js +1 -1
  294. package/dist/lifecycle-core-B72WHNHV.js +1 -1
  295. package/dist/lifecycle-core-dhkH_Nux.js +1 -1
  296. package/dist/line/accounts.js +1 -1
  297. package/dist/line/send.js +1 -1
  298. package/dist/line/template-messages.js +1 -1
  299. package/dist/links-CBnmRP9D.js +1 -1
  300. package/dist/links-CySwdMcF.js +1 -1
  301. package/dist/llm-slug-generator.js +1 -1
  302. package/dist/load-options-BsOW74dp.js +1 -1
  303. package/dist/load-options-C7dLuybp.js +1 -1
  304. package/dist/load-options-DV4j6Aqb.js +1 -1
  305. package/dist/load-options-Dwt0CeEg.js +1 -1
  306. package/dist/local-roots-Dxioh0C2.js +1 -1
  307. package/dist/logger-5W0OocJW.js +1 -1
  308. package/dist/logger-Bl8URnrW.js +1 -1
  309. package/dist/logger-DwWqfo66.js +1 -1
  310. package/dist/logger-kQAOe3qp.js +1 -1
  311. package/dist/logging-Dz4Qg6th.js +1 -1
  312. package/dist/logging-KiJmOmw4.js +1 -1
  313. package/dist/login-BMZxDYaU.js +1 -1
  314. package/dist/login-BdzP8F8J.js +1 -1
  315. package/dist/login-BzU0cMck.js +1 -1
  316. package/dist/login-Cb1A6qwM.js +1 -1
  317. package/dist/login-qr-BgsmAwKm.js +1 -1
  318. package/dist/login-qr-Bux8gWTO.js +1 -1
  319. package/dist/login-qr-COr_25Hx.js +1 -1
  320. package/dist/login-qr-CxBPOOAK.js +1 -1
  321. package/dist/login-qr-DnQm7bM4.js +1 -1
  322. package/dist/logs-cli-BM2XCmrH.js +1 -1
  323. package/dist/logs-cli-HKhyxaUs.js +1 -1
  324. package/dist/manager-B6zZuJEB.js +1 -1
  325. package/dist/manager-BwrZfep3.js +1 -1
  326. package/dist/manager-C5SBozw4.js +1 -1
  327. package/dist/manager-CjihRbGa.js +1 -1
  328. package/dist/memory-cli-CnruTL1h.js +1 -1
  329. package/dist/memory-cli-DHvscp7X.js +1 -1
  330. package/dist/model-catalog-BLdaFmIo.js +1 -1
  331. package/dist/model-catalog-vNCcsy4h.js +1 -1
  332. package/dist/model-param-b-B0r2cPDw.js +1 -1
  333. package/dist/model-param-b-BqIr5rY5.js +1 -1
  334. package/dist/model-picker-BaeW3tiV.js +1 -1
  335. package/dist/model-picker-DN0czUYS.js +1 -1
  336. package/dist/model-selection-C2QwHmXT.js +1 -1
  337. package/dist/model-selection-I1ctjFOB.js +1 -1
  338. package/dist/model-selection-qkByRv5A.js +1 -1
  339. package/dist/models-UTdl0vXO.js +1 -1
  340. package/dist/models-cli-QRONP7EL.js +1 -1
  341. package/dist/models-cli-vRoB_gfX.js +1 -1
  342. package/dist/models-config-CWIlroKT.js +1 -1
  343. package/dist/models-config-DN2Q51fC.js +1 -1
  344. package/dist/mutable-allowlist-detectors-C4rNVag8.js +1 -1
  345. package/dist/mutable-allowlist-detectors-CL0qe54J.js +1 -1
  346. package/dist/node-cli-2-E4-83G.js +1 -1
  347. package/dist/node-cli-DUI7Zctj.js +1 -1
  348. package/dist/node-command-policy-Bbmnc16l.js +1 -1
  349. package/dist/node-command-policy-DgkwfoCs.js +1 -1
  350. package/dist/node-commands-8GBOiktk.js +1 -1
  351. package/dist/node-commands-DdkziOTx.js +1 -1
  352. package/dist/node-resolve-B3BJbmQX.js +1 -1
  353. package/dist/node-resolve-DLZf3-1V.js +1 -1
  354. package/dist/node-service-BRfrNp8l.js +1 -1
  355. package/dist/node-service-C0bl7jcZ.js +1 -1
  356. package/dist/node-shell-dXp4vk-i.js +1 -1
  357. package/dist/nodes-cli-DU13-dCL.js +1 -1
  358. package/dist/nodes-cli-rPeIRj_f.js +1 -1
  359. package/dist/nodes-screen-C7-5RrbN.js +1 -1
  360. package/dist/note-D4GAwgha.js +1 -1
  361. package/dist/note-Dp-d_utk.js +1 -1
  362. package/dist/npm-pack-install-B23L-AtF.js +1 -1
  363. package/dist/npm-pack-install-C0te3Oap.js +1 -1
  364. package/dist/npm-resolution-BCXCw93f.js +1 -1
  365. package/dist/npm-resolution-Cmm82lui.js +1 -1
  366. package/dist/oauth-env-DAamJ1oz.js +1 -1
  367. package/dist/oauth-env-DSLBTWb1.js +1 -1
  368. package/dist/oauth-tls-preflight-BSBRDIfC.js +1 -1
  369. package/dist/oauth-tls-preflight-ByNjbUR5.js +1 -1
  370. package/dist/ollama-setup-CKt3tF-S.js +1 -1
  371. package/dist/ollama-setup-I8lghdX1.js +1 -1
  372. package/dist/onboard-B3WSjKCu.js +1 -1
  373. package/dist/onboard-C65vdb94.js +1 -1
  374. package/dist/onboard-channels-9CmG3Jgn.js +1 -1
  375. package/dist/onboard-channels-CV1AK9jY.js +1 -1
  376. package/dist/onboard-config-B7U20YRw.js +1 -1
  377. package/dist/onboard-config-DS9dUv8M.js +1 -1
  378. package/dist/onboard-custom-CwHYUB0T.js +1 -1
  379. package/dist/onboard-custom-uwufXtQf.js +1 -1
  380. package/dist/onboard-helpers-CGJLUoxR.js +1 -1
  381. package/dist/onboard-helpers-DbpWQoiB.js +1 -1
  382. package/dist/onboard-hooks-CERzXObm.js +1 -1
  383. package/dist/onboard-hooks-gQ3sxBNi.js +1 -1
  384. package/dist/onboard-provider-auth-flags-CqbipO7D.js +1 -1
  385. package/dist/onboard-provider-auth-flags-Dvwzdz37.js +1 -1
  386. package/dist/onboard-remote-BeDZ_gbH.js +1 -1
  387. package/dist/onboard-remote-KTUx-3G1.js +1 -1
  388. package/dist/onboard-search-f2tJD4hg.js +1 -1
  389. package/dist/onboard-search-fslKKhyg.js +1 -1
  390. package/dist/onboard-skills-BoS_oVdm.js +1 -1
  391. package/dist/onboard-skills-C4omGWoD.js +1 -1
  392. package/dist/onboarding-B8icigkk.js +1 -1
  393. package/dist/onboarding-BJRqNsZ8.js +1 -1
  394. package/dist/onboarding.finalize-D0qISqn-.js +1 -1
  395. package/dist/onboarding.finalize-Ds9NwPBL.js +1 -1
  396. package/dist/onboarding.gateway-config-F8n_QFUR.js +1 -1
  397. package/dist/onboarding.gateway-config-eno73eHw.js +1 -1
  398. package/dist/onboarding.secret-input-B6fzeucQ.js +1 -1
  399. package/dist/onboarding.secret-input-CBuD3c32.js +1 -1
  400. package/dist/openai-codex-model-default-Df2T3foI.js +1 -1
  401. package/dist/openai-codex-model-default-DtIeKJm0.js +1 -1
  402. package/dist/openai-model-default-DIE55yBt.js +1 -1
  403. package/dist/openai-model-default-sqvWk4kB.js +1 -1
  404. package/dist/openclaw-exec-env-BWbOu_YC.js +1 -1
  405. package/dist/openclaw-root-CnsBf6ZU.js +1 -1
  406. package/dist/openclaw-root-D_0Q6--h.js +1 -1
  407. package/dist/outbound-B88MLJN3.js +1 -1
  408. package/dist/outbound-C-4qToKv.js +1 -1
  409. package/dist/outbound-CSk4oF0g.js +1 -1
  410. package/dist/outbound-DKMI_4xm.js +1 -1
  411. package/dist/outbound-attachment-BOax42-M.js +1 -1
  412. package/dist/outbound-attachment-DBNxdLYh.js +1 -1
  413. package/dist/outbound-attachment-DVjJQ3V6.js +1 -1
  414. package/dist/outbound-attachment-aZWcoZ-N.js +1 -1
  415. package/dist/pairing-cli-Cby6Ww8F.js +1 -1
  416. package/dist/pairing-cli-DiJb_a0V.js +1 -1
  417. package/dist/pairing-labels-BP1h0iHy.js +1 -1
  418. package/dist/pairing-labels-ryOnuOFA.js +1 -1
  419. package/dist/pairing-store-Bv4KSELv.js +1 -1
  420. package/dist/pairing-store-CjTPxq0X.js +1 -1
  421. package/dist/pairing-token-CKX1ds78.js +1 -1
  422. package/dist/pairing-token-CX0SUJsB.js +1 -1
  423. package/dist/parse-duration-XTjMKl8s.js +1 -1
  424. package/dist/parse-finite-number-DqzUM-_s.js +1 -1
  425. package/dist/parse-finite-number-dBmDLLKL.js +1 -1
  426. package/dist/parse-log-line-CsYLg7Qu.js +1 -1
  427. package/dist/parse-log-line-NV-cipB_.js +1 -1
  428. package/dist/parse-port-Bv1Y9Wk5.js +1 -1
  429. package/dist/parse-port-JVwkxcZ8.js +1 -1
  430. package/dist/parse-timeout-DWSGfCkQ.js +1 -1
  431. package/dist/parse-timeout-Dx4QnVzo.js +1 -1
  432. package/dist/path-alias-guards-kY_ZbWs-.js +1 -1
  433. package/dist/path-alias-guards-mvyLCPlN.js +1 -1
  434. package/dist/path-env-BPd1Yd-i.js +1 -1
  435. package/dist/path-env-emdAQejM.js +1 -1
  436. package/dist/path-safety-BukYK8Kd.js +1 -1
  437. package/dist/path-safety-DaaMJFdt.js +1 -1
  438. package/dist/paths-B4IRk3wi.js +1 -1
  439. package/dist/paths-BfjJY2VL.js +1 -1
  440. package/dist/paths-BjD3T_xq.js +1 -1
  441. package/dist/paths-BpQOWYiT.js +1 -1
  442. package/dist/paths-CChBdtE8.js +1 -1
  443. package/dist/paths-CrCoPIVK.js +1 -1
  444. package/dist/paths-piJASC5k.js +1 -1
  445. package/dist/paths-yLEk_25I.js +1 -1
  446. package/dist/pi-embedded-ZEWNj7P5.js +1 -1
  447. package/dist/pi-embedded-bqE4EmdD.js +1 -1
  448. package/dist/pi-model-discovery-6myCPEJE.js +1 -1
  449. package/dist/pi-model-discovery-AiV9h8k6.js +1 -1
  450. package/dist/pi-model-discovery-BzqdozHB.js +1 -1
  451. package/dist/pi-model-discovery-C8YBu6D4.js +1 -1
  452. package/dist/pi-tools.before-tool-call.runtime-CPAJMO7J.js +1 -1
  453. package/dist/pi-tools.before-tool-call.runtime-CYmLHod0.js +1 -1
  454. package/dist/pi-tools.before-tool-call.runtime-CfVqI0Ng.js +1 -1
  455. package/dist/pi-tools.before-tool-call.runtime-D9FlPJ_v.js +1 -1
  456. package/dist/pi-tools.policy-CeSKHaKa.js +1 -1
  457. package/dist/plugin-auto-enable-Cp7L8ko8.js +1 -1
  458. package/dist/plugin-auto-enable-DCOxqfDQ.js +1 -1
  459. package/dist/plugin-install-plan-BobX0y9S.js +1 -1
  460. package/dist/plugin-install-plan-NvDGp0d8.js +1 -1
  461. package/dist/plugin-registry-Fg000e4I.js +1 -1
  462. package/dist/plugin-registry-fm5tDUbE.js +1 -1
  463. package/dist/plugin-sdk/account-id.cjs +1 -1
  464. package/dist/plugin-sdk/account-id.js +1 -1
  465. package/dist/plugin-sdk/acpx.cjs +1 -1
  466. package/dist/plugin-sdk/acpx.js +1 -1
  467. package/dist/plugin-sdk/active-listener-BFeaYGID.js +1 -1
  468. package/dist/plugin-sdk/active-listener-BszCM2Au.cjs +1 -1
  469. package/dist/plugin-sdk/active-listener-CIcleJgU.cjs +1 -1
  470. package/dist/plugin-sdk/active-listener-Cqgd7xVh.cjs +1 -1
  471. package/dist/plugin-sdk/active-listener-D578zEtk.cjs +1 -1
  472. package/dist/plugin-sdk/active-listener-D6gGPLq-.js +1 -1
  473. package/dist/plugin-sdk/active-listener-DKSZRn4x.cjs +1 -1
  474. package/dist/plugin-sdk/active-listener-DNO10F1L.js +1 -1
  475. package/dist/plugin-sdk/active-listener-DQq07Aar.js +1 -1
  476. package/dist/plugin-sdk/active-listener-Dle_kYqb.js +1 -1
  477. package/dist/plugin-sdk/active-listener-DmJcHkMC.js +1 -1
  478. package/dist/plugin-sdk/active-listener-UmFpcYFY.cjs +1 -1
  479. package/dist/plugin-sdk/api-key-rotation-39TRXDEA.cjs +1 -1
  480. package/dist/plugin-sdk/api-key-rotation-7qlqJ_ou.js +1 -1
  481. package/dist/plugin-sdk/api-key-rotation-BY7fLi9z.js +1 -1
  482. package/dist/plugin-sdk/api-key-rotation-CF9_CKS-.cjs +1 -1
  483. package/dist/plugin-sdk/api-key-rotation-CWylhFOt.cjs +1 -1
  484. package/dist/plugin-sdk/api-key-rotation-ClZmonv2.js +1 -1
  485. package/dist/plugin-sdk/api-key-rotation-CmesQWXP.cjs +1 -1
  486. package/dist/plugin-sdk/api-key-rotation-Cs6II2__.js +1 -1
  487. package/dist/plugin-sdk/api-key-rotation-CxaiMcI1.js +1 -1
  488. package/dist/plugin-sdk/api-key-rotation-D5cfmg7E.cjs +1 -1
  489. package/dist/plugin-sdk/api-key-rotation-DkP7KnSm.cjs +1 -1
  490. package/dist/plugin-sdk/api-key-rotation-mDqgBFMG.js +1 -1
  491. package/dist/plugin-sdk/audio-preflight-B-HrF5Oc.js +1 -1
  492. package/dist/plugin-sdk/audio-preflight-B2MGeSoT.js +1 -1
  493. package/dist/plugin-sdk/audio-preflight-BVjiz_Qk.cjs +1 -1
  494. package/dist/plugin-sdk/audio-preflight-Behqe7F3.cjs +1 -1
  495. package/dist/plugin-sdk/audio-preflight-C0ncOCbK.cjs +1 -1
  496. package/dist/plugin-sdk/audio-preflight-C1o1n-KK.js +1 -1
  497. package/dist/plugin-sdk/audio-preflight-CzLYTZ5P.cjs +1 -1
  498. package/dist/plugin-sdk/audio-preflight-DDiBwIB9.js +1 -1
  499. package/dist/plugin-sdk/audio-preflight-DQyh-XSn.cjs +1 -1
  500. package/dist/plugin-sdk/audio-preflight-WH9WDR81.cjs +1 -1
  501. package/dist/plugin-sdk/audio-preflight-ZPLO3G1S.js +1 -1
  502. package/dist/plugin-sdk/audio-preflight-s3BAID12.js +1 -1
  503. package/dist/plugin-sdk/audio-transcription-runner-2-ZQ5Md-.cjs +1 -1
  504. package/dist/plugin-sdk/audio-transcription-runner-BO7T_SzP.cjs +1 -1
  505. package/dist/plugin-sdk/audio-transcription-runner-CRYJlAeP.js +1 -1
  506. package/dist/plugin-sdk/audio-transcription-runner-CmW24oVR.js +1 -1
  507. package/dist/plugin-sdk/audio-transcription-runner-CmYuWS0_.cjs +1 -1
  508. package/dist/plugin-sdk/audio-transcription-runner-CslXJs5c.js +1 -1
  509. package/dist/plugin-sdk/audio-transcription-runner-DE1tKTQV.cjs +1 -1
  510. package/dist/plugin-sdk/audio-transcription-runner-DZR84B28.js +1 -1
  511. package/dist/plugin-sdk/audio-transcription-runner-DoR-NOcV.cjs +1 -1
  512. package/dist/plugin-sdk/audio-transcription-runner-IE4olXkd.cjs +1 -1
  513. package/dist/plugin-sdk/audio-transcription-runner-YiDQM_Rb.js +1 -1
  514. package/dist/plugin-sdk/audio-transcription-runner-kAVM4YFR.js +1 -1
  515. package/dist/plugin-sdk/audit-membership-runtime-7LqcvqFo.js +1 -1
  516. package/dist/plugin-sdk/audit-membership-runtime-BQFUzFc0.cjs +1 -1
  517. package/dist/plugin-sdk/audit-membership-runtime-BYtdDX9G.cjs +1 -1
  518. package/dist/plugin-sdk/audit-membership-runtime-BzEtBUX6.cjs +1 -1
  519. package/dist/plugin-sdk/audit-membership-runtime-CBUmGrl4.js +1 -1
  520. package/dist/plugin-sdk/audit-membership-runtime-ChlVgt2y.js +1 -1
  521. package/dist/plugin-sdk/audit-membership-runtime-DLRX7LR0.js +1 -1
  522. package/dist/plugin-sdk/audit-membership-runtime-DbJW5X3L.cjs +1 -1
  523. package/dist/plugin-sdk/audit-membership-runtime-Du9LAxDa.cjs +1 -1
  524. package/dist/plugin-sdk/audit-membership-runtime-DylNnj1m.js +1 -1
  525. package/dist/plugin-sdk/audit-membership-runtime-voi5sPwF.js +1 -1
  526. package/dist/plugin-sdk/audit-membership-runtime-yWYvSpgZ.cjs +1 -1
  527. package/dist/plugin-sdk/bluebubbles.cjs +1 -1
  528. package/dist/plugin-sdk/bluebubbles.js +1 -1
  529. package/dist/plugin-sdk/channel-activity-Bed876M5.js +1 -1
  530. package/dist/plugin-sdk/channel-activity-Bu8tAmGa.cjs +1 -1
  531. package/dist/plugin-sdk/channel-activity-C01Im_o1.js +1 -1
  532. package/dist/plugin-sdk/channel-activity-CIycjzUC.js +1 -1
  533. package/dist/plugin-sdk/channel-activity-Cdkn3O_i.js +1 -1
  534. package/dist/plugin-sdk/channel-activity-Cia2G3v5.js +1 -1
  535. package/dist/plugin-sdk/channel-activity-D6d2wU8H.cjs +1 -1
  536. package/dist/plugin-sdk/channel-activity-DNv7JLBx.cjs +1 -1
  537. package/dist/plugin-sdk/channel-activity-Df3DfYyZ.cjs +1 -1
  538. package/dist/plugin-sdk/channel-activity-Rut-HCfT.cjs +1 -1
  539. package/dist/plugin-sdk/channel-activity-mffNSQrX.cjs +1 -1
  540. package/dist/plugin-sdk/channel-activity-qjwFifkE.js +1 -1
  541. package/dist/plugin-sdk/channel-web-Ces_xx2T.js +1 -1
  542. package/dist/plugin-sdk/channel-web-CsmEnYD8.cjs +1 -1
  543. package/dist/plugin-sdk/channel-web-DtzNv49H.cjs +1 -1
  544. package/dist/plugin-sdk/channel-web-VEZVrMYU.js +1 -1
  545. package/dist/plugin-sdk/command-poll-backoff-4910Mpwp.js +1 -1
  546. package/dist/plugin-sdk/command-poll-backoff-BLJZzV5W.cjs +1 -1
  547. package/dist/plugin-sdk/command-poll-backoff-CUNcN0dv.cjs +1 -1
  548. package/dist/plugin-sdk/command-poll-backoff-Cww_r-24.js +1 -1
  549. package/dist/plugin-sdk/command-poll-backoff-D0lJhquZ.js +1 -1
  550. package/dist/plugin-sdk/command-poll-backoff-Glwt3wHa.cjs +1 -1
  551. package/dist/plugin-sdk/commands-registry-33H8WYTk.cjs +1 -1
  552. package/dist/plugin-sdk/commands-registry-BGdm1KdC.js +1 -1
  553. package/dist/plugin-sdk/commands-registry-BgV9i-bj.cjs +1 -1
  554. package/dist/plugin-sdk/commands-registry-BifdCfty.cjs +1 -1
  555. package/dist/plugin-sdk/commands-registry-CJLBIIIp.js +1 -1
  556. package/dist/plugin-sdk/commands-registry-CWK9ARbc.js +1 -1
  557. package/dist/plugin-sdk/commands-registry-CfVD1h8L.cjs +1 -1
  558. package/dist/plugin-sdk/commands-registry-CpG4pxrA.js +1 -1
  559. package/dist/plugin-sdk/commands-registry-D-AnIQWz.cjs +1 -1
  560. package/dist/plugin-sdk/commands-registry-DBI4cPqT.cjs +1 -1
  561. package/dist/plugin-sdk/commands-registry-DOBe9cWq.js +1 -1
  562. package/dist/plugin-sdk/commands-registry-DqemUyiv.js +1 -1
  563. package/dist/plugin-sdk/common-CEe87dmX.js +1 -1
  564. package/dist/plugin-sdk/common-CjMKHm2Z.cjs +1 -1
  565. package/dist/plugin-sdk/compat.cjs +1 -1
  566. package/dist/plugin-sdk/compat.js +1 -1
  567. package/dist/plugin-sdk/config-DT_csBcZ.cjs +1 -1
  568. package/dist/plugin-sdk/config-LR8GH3Ws.js +1 -1
  569. package/dist/plugin-sdk/copilot-proxy.cjs +1 -1
  570. package/dist/plugin-sdk/copilot-proxy.js +1 -1
  571. package/dist/plugin-sdk/core.cjs +1 -1
  572. package/dist/plugin-sdk/core.js +1 -1
  573. package/dist/plugin-sdk/deliver-AORlkcbD.cjs +1 -1
  574. package/dist/plugin-sdk/deliver-BiBFW5fm.cjs +1 -1
  575. package/dist/plugin-sdk/deliver-BpqEPwLO.cjs +1 -1
  576. package/dist/plugin-sdk/deliver-BvC6aUKM.js +1 -1
  577. package/dist/plugin-sdk/deliver-CT0AIuK1.cjs +1 -1
  578. package/dist/plugin-sdk/deliver-CmddcjtG.cjs +1 -1
  579. package/dist/plugin-sdk/deliver-DFz5N1Eh.js +1 -1
  580. package/dist/plugin-sdk/deliver-DcJWpoqf.cjs +1 -1
  581. package/dist/plugin-sdk/deliver-ILim6ANU.js +1 -1
  582. package/dist/plugin-sdk/deliver-QgxW9IxV.js +1 -1
  583. package/dist/plugin-sdk/deliver-cT-Q8v0h.js +1 -1
  584. package/dist/plugin-sdk/deliver-cu_NQTmb.js +1 -1
  585. package/dist/plugin-sdk/device-pair.cjs +1 -1
  586. package/dist/plugin-sdk/device-pair.js +1 -1
  587. package/dist/plugin-sdk/diagnostic-BCyE1aYH.cjs +1 -1
  588. package/dist/plugin-sdk/diagnostic-BFea3l_a.js +1 -1
  589. package/dist/plugin-sdk/diagnostic-BvR96WdC.js +1 -1
  590. package/dist/plugin-sdk/diagnostic-C0xDsk89.cjs +1 -1
  591. package/dist/plugin-sdk/diagnostic-CEPhLgsW.cjs +1 -1
  592. package/dist/plugin-sdk/diagnostic-CbLwUqTE.cjs +1 -1
  593. package/dist/plugin-sdk/diagnostic-CbfxoqI_.cjs +1 -1
  594. package/dist/plugin-sdk/diagnostic-DDwUPG1m.js +1 -1
  595. package/dist/plugin-sdk/diagnostic-DS_mKKOu.js +1 -1
  596. package/dist/plugin-sdk/diagnostic-DYpehqHU.cjs +1 -1
  597. package/dist/plugin-sdk/diagnostic-DkncnZ3G.js +1 -1
  598. package/dist/plugin-sdk/diagnostic-Dz8HPEDe.js +1 -1
  599. package/dist/plugin-sdk/diagnostics-otel.cjs +1 -1
  600. package/dist/plugin-sdk/diagnostics-otel.js +1 -1
  601. package/dist/plugin-sdk/diffs.cjs +1 -1
  602. package/dist/plugin-sdk/diffs.js +1 -1
  603. package/dist/plugin-sdk/discord.cjs +1 -1
  604. package/dist/plugin-sdk/discord.js +1 -1
  605. package/dist/plugin-sdk/dispatch-6m3206FH.js +1 -1
  606. package/dist/plugin-sdk/dispatch-BYZNaz0n.cjs +1 -1
  607. package/dist/plugin-sdk/dispatch-BahZCe-D.js +1 -1
  608. package/dist/plugin-sdk/dispatch-Bi3yeWxb.cjs +1 -1
  609. package/dist/plugin-sdk/dispatch-BjB_TqWy.cjs +1 -1
  610. package/dist/plugin-sdk/dispatch-CNR186B3.js +1 -1
  611. package/dist/plugin-sdk/dispatch-CStT30wi.cjs +1 -1
  612. package/dist/plugin-sdk/dispatch-CdZAW9dg.cjs +1 -1
  613. package/dist/plugin-sdk/dispatch-Ewg2Jgw9.js +1 -1
  614. package/dist/plugin-sdk/dispatch-HRTsdeCV.js +1 -1
  615. package/dist/plugin-sdk/feishu.cjs +1 -1
  616. package/dist/plugin-sdk/feishu.js +1 -1
  617. package/dist/plugin-sdk/fetch-7Iq9POda.js +1 -1
  618. package/dist/plugin-sdk/fetch-B1GR6-u4.js +1 -1
  619. package/dist/plugin-sdk/fetch-B27H-XCf.js +1 -1
  620. package/dist/plugin-sdk/fetch-BMYDLRWo.js +1 -1
  621. package/dist/plugin-sdk/fetch-BN9y3kTg.cjs +1 -1
  622. package/dist/plugin-sdk/fetch-BVEVk5YF.js +1 -1
  623. package/dist/plugin-sdk/fetch-BY6lVRlY.cjs +1 -1
  624. package/dist/plugin-sdk/fetch-Bi8krAaT.cjs +1 -1
  625. package/dist/plugin-sdk/fetch-BjXhwqrE.cjs +1 -1
  626. package/dist/plugin-sdk/fetch-BtZY623f.js +1 -1
  627. package/dist/plugin-sdk/fetch-C-HRWp5R.js +1 -1
  628. package/dist/plugin-sdk/fetch-C3LEMysf.js +1 -1
  629. package/dist/plugin-sdk/fetch-CCLWsYaQ.js +1 -1
  630. package/dist/plugin-sdk/fetch-CZewCAvu.cjs +1 -1
  631. package/dist/plugin-sdk/fetch-ClKErpni.cjs +1 -1
  632. package/dist/plugin-sdk/fetch-DBRI0sKI.js +1 -1
  633. package/dist/plugin-sdk/fetch-DQxuOB8o.cjs +1 -1
  634. package/dist/plugin-sdk/fetch-DUMEaqum.cjs +1 -1
  635. package/dist/plugin-sdk/fetch-DpwR_cJU.cjs +1 -1
  636. package/dist/plugin-sdk/fetch-J0IzopiJ.js +1 -1
  637. package/dist/plugin-sdk/fetch-guard-D8TdhTHU.js +1 -1
  638. package/dist/plugin-sdk/fetch-guard-DC_pFJEy.js +1 -1
  639. package/dist/plugin-sdk/fetch-guard-DDkd30BG.js +1 -1
  640. package/dist/plugin-sdk/fetch-guard-DELiFG5g.js +1 -1
  641. package/dist/plugin-sdk/fetch-guard-DIYjBRpq.cjs +1 -1
  642. package/dist/plugin-sdk/fetch-guard-DPVfELS7.js +1 -1
  643. package/dist/plugin-sdk/fetch-guard-Dpz6CnJY.cjs +1 -1
  644. package/dist/plugin-sdk/fetch-guard-DqNKwgHP.cjs +1 -1
  645. package/dist/plugin-sdk/fetch-guard-DqTxZ3G8.cjs +1 -1
  646. package/dist/plugin-sdk/fetch-guard-EoAitPe9.cjs +1 -1
  647. package/dist/plugin-sdk/fetch-guard-qfU6iTvp.js +1 -1
  648. package/dist/plugin-sdk/fetch-guard-u2Dt6P9i.cjs +1 -1
  649. package/dist/plugin-sdk/fetch-lw-aF17e.cjs +1 -1
  650. package/dist/plugin-sdk/fetch-timeout-6oZsqWxA.js +1 -1
  651. package/dist/plugin-sdk/fetch-timeout-BygUD0rd.cjs +1 -1
  652. package/dist/plugin-sdk/fetch-timeout-CLw1U7VS.js +1 -1
  653. package/dist/plugin-sdk/fetch-timeout-CX1w-9p4.cjs +1 -1
  654. package/dist/plugin-sdk/fetch-timeout-Coc9xyC3.cjs +1 -1
  655. package/dist/plugin-sdk/fetch-timeout-Cz6GuU_c.js +1 -1
  656. package/dist/plugin-sdk/fetch-timeout-DC8T2JCr.js +1 -1
  657. package/dist/plugin-sdk/fetch-timeout-DFDmks9T.cjs +1 -1
  658. package/dist/plugin-sdk/fetch-timeout-DkYpp08Q.js +1 -1
  659. package/dist/plugin-sdk/github-copilot-token-BHdMLLqf.cjs +1 -1
  660. package/dist/plugin-sdk/github-copilot-token-Bt4PduRB.js +1 -1
  661. package/dist/plugin-sdk/github-copilot-token-C1O2cBqk.cjs +1 -1
  662. package/dist/plugin-sdk/github-copilot-token-C1hiDugd.js +1 -1
  663. package/dist/plugin-sdk/github-copilot-token-C8j8_NjX.js +1 -1
  664. package/dist/plugin-sdk/github-copilot-token-CCrgp2py.cjs +1 -1
  665. package/dist/plugin-sdk/github-copilot-token-DoHgkI2r.cjs +1 -1
  666. package/dist/plugin-sdk/github-copilot-token-N8vnLZPw.js +1 -1
  667. package/dist/plugin-sdk/github-copilot-token-TMkfxxD2.cjs +1 -1
  668. package/dist/plugin-sdk/github-copilot-token-vKAKX6iE.js +1 -1
  669. package/dist/plugin-sdk/github-copilot-token-ylX_gawo.js +1 -1
  670. package/dist/plugin-sdk/github-copilot-token-zskwAEpd.cjs +1 -1
  671. package/dist/plugin-sdk/google-gemini-cli-auth.cjs +1 -1
  672. package/dist/plugin-sdk/google-gemini-cli-auth.js +1 -1
  673. package/dist/plugin-sdk/googlechat.cjs +1 -1
  674. package/dist/plugin-sdk/googlechat.js +1 -1
  675. package/dist/plugin-sdk/image-0OHO98b9.cjs +1 -1
  676. package/dist/plugin-sdk/image-B9SLKAOs.cjs +1 -1
  677. package/dist/plugin-sdk/image-BVnZq5Y4.js +1 -1
  678. package/dist/plugin-sdk/image-CKLAyhco.js +1 -1
  679. package/dist/plugin-sdk/image-DUHEJeBF.js +1 -1
  680. package/dist/plugin-sdk/image-DngxW2Nh.cjs +1 -1
  681. package/dist/plugin-sdk/image-DrPh2689.cjs +1 -1
  682. package/dist/plugin-sdk/image-ISWO0Dwt.js +1 -1
  683. package/dist/plugin-sdk/image-KfZYW6Lh.cjs +1 -1
  684. package/dist/plugin-sdk/image-YVlw68CK.js +1 -1
  685. package/dist/plugin-sdk/image-gehqJnV6.js +1 -1
  686. package/dist/plugin-sdk/image-jUYo-0eT.cjs +1 -1
  687. package/dist/plugin-sdk/imessage.cjs +1 -1
  688. package/dist/plugin-sdk/imessage.js +1 -1
  689. package/dist/plugin-sdk/index.cjs +1 -1
  690. package/dist/plugin-sdk/index.js +1 -1
  691. package/dist/plugin-sdk/ir-78toXVqC.cjs +1 -1
  692. package/dist/plugin-sdk/ir-A_TqKaXP.cjs +1 -1
  693. package/dist/plugin-sdk/ir-B0_rUT7m.js +1 -1
  694. package/dist/plugin-sdk/ir-B7agH4cQ.cjs +1 -1
  695. package/dist/plugin-sdk/ir-B9ap_YNW.cjs +1 -1
  696. package/dist/plugin-sdk/ir-BxKSHYao.cjs +1 -1
  697. package/dist/plugin-sdk/ir-BzZArF6l.js +1 -1
  698. package/dist/plugin-sdk/ir-CpkEWZD6.js +1 -1
  699. package/dist/plugin-sdk/ir-D4Dz-giw.cjs +1 -1
  700. package/dist/plugin-sdk/ir-DJ08DSkk.js +1 -1
  701. package/dist/plugin-sdk/ir-L2vhtuGx.js +1 -1
  702. package/dist/plugin-sdk/ir-ntSck5Kp.js +1 -1
  703. package/dist/plugin-sdk/irc.cjs +1 -1
  704. package/dist/plugin-sdk/irc.js +1 -1
  705. package/dist/plugin-sdk/keyed-async-queue.cjs +1 -1
  706. package/dist/plugin-sdk/keyed-async-queue.js +1 -1
  707. package/dist/plugin-sdk/line.cjs +1 -1
  708. package/dist/plugin-sdk/line.js +1 -1
  709. package/dist/plugin-sdk/llm-task.cjs +1 -1
  710. package/dist/plugin-sdk/llm-task.js +1 -1
  711. package/dist/plugin-sdk/load-options-B9Ss5YOO.js +1 -1
  712. package/dist/plugin-sdk/load-options-BOfn6Zgo.cjs +1 -1
  713. package/dist/plugin-sdk/load-options-BXvm8HVv.js +1 -1
  714. package/dist/plugin-sdk/load-options-Bb7u8yZz.cjs +1 -1
  715. package/dist/plugin-sdk/load-options-BcSg1ODN.js +1 -1
  716. package/dist/plugin-sdk/load-options-NqnXJ-Nh.cjs +1 -1
  717. package/dist/plugin-sdk/lobster.cjs +1 -1
  718. package/dist/plugin-sdk/lobster.js +1 -1
  719. package/dist/plugin-sdk/local-roots-B0zm186S.js +1 -1
  720. package/dist/plugin-sdk/local-roots-B4Uy4kG3.cjs +1 -1
  721. package/dist/plugin-sdk/local-roots-CM1R1Ncr.cjs +1 -1
  722. package/dist/plugin-sdk/local-roots-CW78ZeZV.js +1 -1
  723. package/dist/plugin-sdk/local-roots-CnsaE7a_.js +1 -1
  724. package/dist/plugin-sdk/local-roots-D1k-fAlE.cjs +1 -1
  725. package/dist/plugin-sdk/local-roots-DQ_vfJPK.js +1 -1
  726. package/dist/plugin-sdk/local-roots-DYlB1au6.cjs +1 -1
  727. package/dist/plugin-sdk/local-roots-H4-t0qG_.js +1 -1
  728. package/dist/plugin-sdk/local-roots-SCyeUfM3.cjs +1 -1
  729. package/dist/plugin-sdk/local-roots-l4PqCmiU.js +1 -1
  730. package/dist/plugin-sdk/local-roots-xHoEq1Fq.cjs +1 -1
  731. package/dist/plugin-sdk/logger-6O6OsYBL.cjs +1 -1
  732. package/dist/plugin-sdk/logger-BlddiV_d.cjs +1 -1
  733. package/dist/plugin-sdk/logger-Bm93ZKOk.cjs +1 -1
  734. package/dist/plugin-sdk/logger-BtrWb0dj.js +1 -1
  735. package/dist/plugin-sdk/logger-C210xuWx.js +1 -1
  736. package/dist/plugin-sdk/logger-DJGHvDbX.js +1 -1
  737. package/dist/plugin-sdk/logger-DPlqYkRm.cjs +1 -1
  738. package/dist/plugin-sdk/logger-DUYnS-W3.cjs +1 -1
  739. package/dist/plugin-sdk/logger-DwWqfo66.js +1 -1
  740. package/dist/plugin-sdk/logger-vBDTZWl3.js +1 -1
  741. package/dist/plugin-sdk/login-BN1TsFp4.cjs +1 -1
  742. package/dist/plugin-sdk/login-BXUtcSnB.cjs +1 -1
  743. package/dist/plugin-sdk/login-BoMH2iJT.js +1 -1
  744. package/dist/plugin-sdk/login-BtT7yRJO.js +1 -1
  745. package/dist/plugin-sdk/login-COzybMRK.js +1 -1
  746. package/dist/plugin-sdk/login-Cw1jFbel.cjs +1 -1
  747. package/dist/plugin-sdk/login-DEmpr5YK.js +1 -1
  748. package/dist/plugin-sdk/login-Dln00cFs.cjs +1 -1
  749. package/dist/plugin-sdk/login-S2Fe5n5K.cjs +1 -1
  750. package/dist/plugin-sdk/login-TieaF0ts.cjs +1 -1
  751. package/dist/plugin-sdk/login-ZQK4uJLw.js +1 -1
  752. package/dist/plugin-sdk/login-fKxJv0_F.js +1 -1
  753. package/dist/plugin-sdk/login-qr-1ilmySGx.js +1 -1
  754. package/dist/plugin-sdk/login-qr-B0ZSZaNI.js +1 -1
  755. package/dist/plugin-sdk/login-qr-B2P2Ky4j.js +1 -1
  756. package/dist/plugin-sdk/login-qr-B2U87iU8.js +1 -1
  757. package/dist/plugin-sdk/login-qr-B4x_eWI_.js +1 -1
  758. package/dist/plugin-sdk/login-qr-BIaJB24t.cjs +1 -1
  759. package/dist/plugin-sdk/login-qr-BMl5Beq2.cjs +1 -1
  760. package/dist/plugin-sdk/login-qr-Bkm3QorK.cjs +1 -1
  761. package/dist/plugin-sdk/login-qr-ClL8FMAJ.cjs +1 -1
  762. package/dist/plugin-sdk/login-qr-DFVK1lg-.js +1 -1
  763. package/dist/plugin-sdk/login-qr-DhieI9fL.cjs +1 -1
  764. package/dist/plugin-sdk/login-qr-DyQT1QnE.cjs +1 -1
  765. package/dist/plugin-sdk/manager-0tvX3Z_N.cjs +1 -1
  766. package/dist/plugin-sdk/manager-8uylP7PH.cjs +1 -1
  767. package/dist/plugin-sdk/manager-B6hWglXe.js +1 -1
  768. package/dist/plugin-sdk/manager-BGoKN9ur.js +1 -1
  769. package/dist/plugin-sdk/manager-BRP1lzb6.js +1 -1
  770. package/dist/plugin-sdk/manager-BeLNhsXC.cjs +1 -1
  771. package/dist/plugin-sdk/manager-BnytMgmq.js +1 -1
  772. package/dist/plugin-sdk/manager-BoMQeM1I.cjs +1 -1
  773. package/dist/plugin-sdk/manager-CYZY9vcM.js +1 -1
  774. package/dist/plugin-sdk/manager-DCDy2V1U.cjs +1 -1
  775. package/dist/plugin-sdk/manager-DE7sDip8.cjs +1 -1
  776. package/dist/plugin-sdk/manager-PwgQZNK1.js +1 -1
  777. package/dist/plugin-sdk/matrix.cjs +1 -1
  778. package/dist/plugin-sdk/matrix.js +1 -1
  779. package/dist/plugin-sdk/mattermost.cjs +1 -1
  780. package/dist/plugin-sdk/mattermost.js +1 -1
  781. package/dist/plugin-sdk/memory-core.cjs +1 -1
  782. package/dist/plugin-sdk/memory-core.js +1 -1
  783. package/dist/plugin-sdk/minimax-portal-auth.cjs +1 -1
  784. package/dist/plugin-sdk/minimax-portal-auth.js +1 -1
  785. package/dist/plugin-sdk/model-auth-BgS7ynQw.cjs +1 -1
  786. package/dist/plugin-sdk/model-auth-CKlA2xRB.cjs +1 -1
  787. package/dist/plugin-sdk/model-auth-CLnFIqcf.cjs +1 -1
  788. package/dist/plugin-sdk/model-auth-D7YupJDS.js +1 -1
  789. package/dist/plugin-sdk/model-auth-eNVBeC-B.js +1 -1
  790. package/dist/plugin-sdk/model-auth-fJrNIbke.cjs +1 -1
  791. package/dist/plugin-sdk/model-auth-g6eGgTwR.js +1 -1
  792. package/dist/plugin-sdk/model-auth-wcxJptQX.js +1 -1
  793. package/dist/plugin-sdk/model-selection-4ExiFkaW.js +1 -1
  794. package/dist/plugin-sdk/model-selection-CZY_x2-a.cjs +1 -1
  795. package/dist/plugin-sdk/msteams.cjs +1 -1
  796. package/dist/plugin-sdk/msteams.js +1 -1
  797. package/dist/plugin-sdk/nextcloud-talk.cjs +1 -1
  798. package/dist/plugin-sdk/nextcloud-talk.js +1 -1
  799. package/dist/plugin-sdk/nostr.cjs +1 -1
  800. package/dist/plugin-sdk/nostr.js +1 -1
  801. package/dist/plugin-sdk/outbound-2VVSR_d4.js +1 -1
  802. package/dist/plugin-sdk/outbound-B03BQa7T.cjs +1 -1
  803. package/dist/plugin-sdk/outbound-BE8CJ9c_.js +1 -1
  804. package/dist/plugin-sdk/outbound-BWtGs0dn.cjs +1 -1
  805. package/dist/plugin-sdk/outbound-BrD0UsX0.js +1 -1
  806. package/dist/plugin-sdk/outbound-Bvu4LbQx.js +1 -1
  807. package/dist/plugin-sdk/outbound-C5rNt-8z.cjs +1 -1
  808. package/dist/plugin-sdk/outbound-C6BJCoYf.cjs +1 -1
  809. package/dist/plugin-sdk/outbound-Cgc0JJtB.js +1 -1
  810. package/dist/plugin-sdk/outbound-DAHIkpiA.cjs +1 -1
  811. package/dist/plugin-sdk/outbound-DnO_udAm.cjs +1 -1
  812. package/dist/plugin-sdk/outbound-UAHsCNyW.js +1 -1
  813. package/dist/plugin-sdk/outbound-attachment-0QahtSQB.cjs +1 -1
  814. package/dist/plugin-sdk/outbound-attachment-8qvAj1MK.js +1 -1
  815. package/dist/plugin-sdk/outbound-attachment-B6SJy_CG.js +1 -1
  816. package/dist/plugin-sdk/outbound-attachment-BVdSGifg.js +1 -1
  817. package/dist/plugin-sdk/outbound-attachment-C-QqSQ79.cjs +1 -1
  818. package/dist/plugin-sdk/outbound-attachment-CYGrnygD.cjs +1 -1
  819. package/dist/plugin-sdk/outbound-attachment-CtA5eBgj.cjs +1 -1
  820. package/dist/plugin-sdk/outbound-attachment-D8Ng5uVX.cjs +1 -1
  821. package/dist/plugin-sdk/outbound-attachment-DS0S0NLK.js +1 -1
  822. package/dist/plugin-sdk/outbound-attachment-Ds2XsjQl.js +1 -1
  823. package/dist/plugin-sdk/outbound-attachment-acB4qID1.js +1 -1
  824. package/dist/plugin-sdk/outbound-attachment-x4Q2SVIA.cjs +1 -1
  825. package/dist/plugin-sdk/paths-BPlgbwrb.cjs +1 -1
  826. package/dist/plugin-sdk/paths-Bcdg3ma0.cjs +1 -1
  827. package/dist/plugin-sdk/paths-BpQOWYiT.js +1 -1
  828. package/dist/plugin-sdk/paths-BvlJvmRS.cjs +1 -1
  829. package/dist/plugin-sdk/paths-CIcxeNL-.cjs +1 -1
  830. package/dist/plugin-sdk/paths-CXgWvWAM.js +1 -1
  831. package/dist/plugin-sdk/paths-Chp3zwtq.cjs +1 -1
  832. package/dist/plugin-sdk/paths-CnHSNSeR.js +1 -1
  833. package/dist/plugin-sdk/paths-Cqca1YmF.cjs +1 -1
  834. package/dist/plugin-sdk/paths-CtrEseGU.js +1 -1
  835. package/dist/plugin-sdk/paths-D55o_j8-.js +1 -1
  836. package/dist/plugin-sdk/paths-D90l3h_o.cjs +1 -1
  837. package/dist/plugin-sdk/paths-DaRoqzBQ.js +1 -1
  838. package/dist/plugin-sdk/paths-Dd7r1qlB.cjs +1 -1
  839. package/dist/plugin-sdk/paths-DhSjTRMz.js +1 -1
  840. package/dist/plugin-sdk/paths-Do0djuaj.js +1 -1
  841. package/dist/plugin-sdk/paths-J4JUiRsa.js +1 -1
  842. package/dist/plugin-sdk/paths-cBAF6Bj0.js +1 -1
  843. package/dist/plugin-sdk/paths-piJASC5k.js +1 -1
  844. package/dist/plugin-sdk/paths-rO4ehkyU.js +1 -1
  845. package/dist/plugin-sdk/pi-model-discovery--UcCzdQg.js +1 -1
  846. package/dist/plugin-sdk/pi-model-discovery-Bi4dKtW0.cjs +1 -1
  847. package/dist/plugin-sdk/pi-model-discovery-CCK2Ppj9.js +1 -1
  848. package/dist/plugin-sdk/pi-model-discovery-CRSZ0OFi.js +1 -1
  849. package/dist/plugin-sdk/pi-model-discovery-Cx_r4FGY.js +1 -1
  850. package/dist/plugin-sdk/pi-model-discovery-D3JQMjAa.cjs +1 -1
  851. package/dist/plugin-sdk/pi-model-discovery-DN1RHetG.cjs +1 -1
  852. package/dist/plugin-sdk/pi-model-discovery-DVFSU0-f.cjs +1 -1
  853. package/dist/plugin-sdk/pi-model-discovery-DWMAAhA-.cjs +1 -1
  854. package/dist/plugin-sdk/pi-model-discovery-DYOHzCjs.js +1 -1
  855. package/dist/plugin-sdk/pi-model-discovery-DdSVvbQ5.cjs +1 -1
  856. package/dist/plugin-sdk/pi-model-discovery-DejkxBol.js +1 -1
  857. package/dist/plugin-sdk/pi-model-discovery-SmVAFMj_.cjs +1 -1
  858. package/dist/plugin-sdk/pi-model-discovery-ma8st1Ek.js +1 -1
  859. package/dist/plugin-sdk/pi-tools.before-tool-call.runtime-B2WodYBY.cjs +1 -1
  860. package/dist/plugin-sdk/pi-tools.before-tool-call.runtime-BC114tUb.js +1 -1
  861. package/dist/plugin-sdk/pi-tools.before-tool-call.runtime-BF6jP1nM.js +1 -1
  862. package/dist/plugin-sdk/pi-tools.before-tool-call.runtime-Beg-U7Z-.cjs +1 -1
  863. package/dist/plugin-sdk/pi-tools.before-tool-call.runtime-BkEYsSLL.js +1 -1
  864. package/dist/plugin-sdk/pi-tools.before-tool-call.runtime-C21sWtkh.js +1 -1
  865. package/dist/plugin-sdk/pi-tools.before-tool-call.runtime-CKkgBGIj.cjs +1 -1
  866. package/dist/plugin-sdk/pi-tools.before-tool-call.runtime-CNun__L-.js +1 -1
  867. package/dist/plugin-sdk/pi-tools.before-tool-call.runtime-Clulhv2X.cjs +1 -1
  868. package/dist/plugin-sdk/pi-tools.before-tool-call.runtime-DvwL5in9.cjs +1 -1
  869. package/dist/plugin-sdk/pi-tools.before-tool-call.runtime-FnzjmZqP.js +1 -1
  870. package/dist/plugin-sdk/pi-tools.before-tool-call.runtime-Rq5y0QJ2.cjs +1 -1
  871. package/dist/plugin-sdk/polls-BuaJuIpV.cjs +1 -1
  872. package/dist/plugin-sdk/polls-CBAGZuJ6.js +1 -1
  873. package/dist/plugin-sdk/polls-CSKMbBIS.js +1 -1
  874. package/dist/plugin-sdk/polls-D0wY0FvT.cjs +1 -1
  875. package/dist/plugin-sdk/polls-PGxiE05J.js +1 -1
  876. package/dist/plugin-sdk/polls-yWqSCEP0.cjs +1 -1
  877. package/dist/plugin-sdk/proxy-env-B765haXA.js +1 -1
  878. package/dist/plugin-sdk/proxy-env-Bcl14j2_.cjs +1 -1
  879. package/dist/plugin-sdk/proxy-env-BlrHtJWH.js +1 -1
  880. package/dist/plugin-sdk/proxy-env-D48qBPAr.cjs +1 -1
  881. package/dist/plugin-sdk/proxy-env-DGzNnnJh.js +1 -1
  882. package/dist/plugin-sdk/proxy-env-DQoJjkWE.cjs +1 -1
  883. package/dist/plugin-sdk/proxy-env-DWw9TnOj.cjs +1 -1
  884. package/dist/plugin-sdk/proxy-env-MEjSyzTr.js +1 -1
  885. package/dist/plugin-sdk/proxy-env-a590sPAz.cjs +1 -1
  886. package/dist/plugin-sdk/proxy-env-k93igu7v.cjs +1 -1
  887. package/dist/plugin-sdk/proxy-env-m9eG3uZN.js +1 -1
  888. package/dist/plugin-sdk/proxy-env-t6hcaFqC.js +1 -1
  889. package/dist/plugin-sdk/proxy-fetch-B9aXJVe-.js +1 -1
  890. package/dist/plugin-sdk/proxy-fetch-BaA3JYgW.cjs +1 -1
  891. package/dist/plugin-sdk/proxy-fetch-BwXFVsHE.cjs +1 -1
  892. package/dist/plugin-sdk/proxy-fetch-BzcKzknk.cjs +1 -1
  893. package/dist/plugin-sdk/proxy-fetch-CYVChsKE.js +1 -1
  894. package/dist/plugin-sdk/proxy-fetch-ClOb2LUH.js +1 -1
  895. package/dist/plugin-sdk/proxy-fetch-DH7VIiBH.cjs +1 -1
  896. package/dist/plugin-sdk/proxy-fetch-DPOhfrou.cjs +1 -1
  897. package/dist/plugin-sdk/proxy-fetch-DXt2R_Z5.js +1 -1
  898. package/dist/plugin-sdk/proxy-fetch-Del551nu.js +1 -1
  899. package/dist/plugin-sdk/proxy-fetch-YCVHz7Rl.js +1 -1
  900. package/dist/plugin-sdk/proxy-fetch-qbrYAz8k.cjs +1 -1
  901. package/dist/plugin-sdk/pw-ai-3piACPqP.cjs +1 -1
  902. package/dist/plugin-sdk/pw-ai-8dajXBkZ.js +1 -1
  903. package/dist/plugin-sdk/pw-ai-B7mrBDW5.js +1 -1
  904. package/dist/plugin-sdk/pw-ai-BLD7x-3a.js +1 -1
  905. package/dist/plugin-sdk/pw-ai-BYmANcaC.cjs +1 -1
  906. package/dist/plugin-sdk/pw-ai-C1rVW06B.cjs +1 -1
  907. package/dist/plugin-sdk/pw-ai-CCDvaBUm.cjs +1 -1
  908. package/dist/plugin-sdk/pw-ai-CVYUOcKM.js +1 -1
  909. package/dist/plugin-sdk/pw-ai-DBg5CCXp.cjs +1 -1
  910. package/dist/plugin-sdk/pw-ai-DY11CCd3.cjs +1 -1
  911. package/dist/plugin-sdk/pw-ai-Kf2RyA25.js +1 -1
  912. package/dist/plugin-sdk/pw-ai-f5yF3n3t.js +1 -1
  913. package/dist/plugin-sdk/qmd-manager-B3xNbdye.cjs +1 -1
  914. package/dist/plugin-sdk/qmd-manager-BMyDNBPi.js +1 -1
  915. package/dist/plugin-sdk/qmd-manager-BZhiv_zq.cjs +1 -1
  916. package/dist/plugin-sdk/qmd-manager-C3uVDbhW.js +1 -1
  917. package/dist/plugin-sdk/qmd-manager-CW46NrS-.cjs +1 -1
  918. package/dist/plugin-sdk/qmd-manager-C_e04BNg.js +1 -1
  919. package/dist/plugin-sdk/qmd-manager-CczVoslK.cjs +1 -1
  920. package/dist/plugin-sdk/qmd-manager-CzLKqPmR.js +1 -1
  921. package/dist/plugin-sdk/qmd-manager-DFh8b5N-.cjs +1 -1
  922. package/dist/plugin-sdk/qmd-manager-DXLfZZMI.js +1 -1
  923. package/dist/plugin-sdk/qmd-manager-FL9fAfNo.cjs +1 -1
  924. package/dist/plugin-sdk/qmd-manager-fWxbGqzk.js +1 -1
  925. package/dist/plugin-sdk/query-expansion-0zYzKrrd.cjs +1 -1
  926. package/dist/plugin-sdk/query-expansion-BYSjmpkV.cjs +1 -1
  927. package/dist/plugin-sdk/query-expansion-CAboqtWr.js +1 -1
  928. package/dist/plugin-sdk/query-expansion-C_DnhmUy.js +1 -1
  929. package/dist/plugin-sdk/query-expansion-Cb2vnF6y.js +1 -1
  930. package/dist/plugin-sdk/query-expansion-DCeqywxh.cjs +1 -1
  931. package/dist/plugin-sdk/query-expansion-DF4LMxRQ.js +1 -1
  932. package/dist/plugin-sdk/query-expansion-DKJkqmNM.cjs +1 -1
  933. package/dist/plugin-sdk/query-expansion-DO2CFW4z.cjs +1 -1
  934. package/dist/plugin-sdk/query-expansion-DyCDaZbL.js +1 -1
  935. package/dist/plugin-sdk/query-expansion-cpXCyoDy.cjs +1 -1
  936. package/dist/plugin-sdk/query-expansion-r_iXkNzt.js +1 -1
  937. package/dist/plugin-sdk/qwen-portal-auth.cjs +1 -1
  938. package/dist/plugin-sdk/qwen-portal-auth.js +1 -1
  939. package/dist/plugin-sdk/render-6fCdtAr6.cjs +1 -1
  940. package/dist/plugin-sdk/render-CBsnn-2A.js +1 -1
  941. package/dist/plugin-sdk/render-CzHaQB0d.cjs +1 -1
  942. package/dist/plugin-sdk/render-DGmfCIRG.js +1 -1
  943. package/dist/plugin-sdk/render-DhTJXP1U.js +1 -1
  944. package/dist/plugin-sdk/render-Djx15dPh.js +1 -1
  945. package/dist/plugin-sdk/render-DxBO2Blp.cjs +1 -1
  946. package/dist/plugin-sdk/render-g5VlmgpF.cjs +1 -1
  947. package/dist/plugin-sdk/reply-BrHB7v5V.cjs +1 -1
  948. package/dist/plugin-sdk/reply-Clex4c2R.js +1 -1
  949. package/dist/plugin-sdk/resolve-outbound-target-BHLQMMp-.cjs +1 -1
  950. package/dist/plugin-sdk/resolve-outbound-target-Cvz2WXAk.cjs +1 -1
  951. package/dist/plugin-sdk/resolve-outbound-target-DDqGniMw.js +1 -1
  952. package/dist/plugin-sdk/resolve-outbound-target-DEpmpEep.js +1 -1
  953. package/dist/plugin-sdk/send--HeMLLzj.js +1 -1
  954. package/dist/plugin-sdk/send-2IhtEEzb.js +1 -1
  955. package/dist/plugin-sdk/send-9tPLnqkc.js +1 -1
  956. package/dist/plugin-sdk/send-B-exJfkg.js +1 -1
  957. package/dist/plugin-sdk/send-B4kzPtcN.js +1 -1
  958. package/dist/plugin-sdk/send-BCSkdYN6.cjs +1 -1
  959. package/dist/plugin-sdk/send-BEmZxBcF.js +1 -1
  960. package/dist/plugin-sdk/send-BHvZIrbJ.cjs +1 -1
  961. package/dist/plugin-sdk/send-BLbCBxeF.js +1 -1
  962. package/dist/plugin-sdk/send-BOkABdQu.cjs +1 -1
  963. package/dist/plugin-sdk/send-BPNd63Qs.js +1 -1
  964. package/dist/plugin-sdk/send-BVAm6Zbr.cjs +1 -1
  965. package/dist/plugin-sdk/send-B_619b3s.js +1 -1
  966. package/dist/plugin-sdk/send-BcuylzbX.js +1 -1
  967. package/dist/plugin-sdk/send-BdFvK9Wc2.js +1 -1
  968. package/dist/plugin-sdk/send-Bh-J7XWZ.cjs +1 -1
  969. package/dist/plugin-sdk/send-BkREPc90.cjs +1 -1
  970. package/dist/plugin-sdk/send-Bp4f-KJu.cjs +1 -1
  971. package/dist/plugin-sdk/send-BtF36kYb.js +1 -1
  972. package/dist/plugin-sdk/send-C6S8tkTA.cjs +1 -1
  973. package/dist/plugin-sdk/send-CDQF_izk.js +1 -1
  974. package/dist/plugin-sdk/send-CF3qas-K.js +1 -1
  975. package/dist/plugin-sdk/send-CFKQX2Wo.js +1 -1
  976. package/dist/plugin-sdk/send-CIP1u5a-.js +1 -1
  977. package/dist/plugin-sdk/send-CIxh7PV0.cjs +1 -1
  978. package/dist/plugin-sdk/send-CJJdcDHX.js +1 -1
  979. package/dist/plugin-sdk/send-COtvydDt.cjs +1 -1
  980. package/dist/plugin-sdk/send-CPwh7tRu.js +1 -1
  981. package/dist/plugin-sdk/send-CRnIqXN9.cjs +1 -1
  982. package/dist/plugin-sdk/send-CSqipUeV.cjs +1 -1
  983. package/dist/plugin-sdk/send-Chfe8tPY.js +1 -1
  984. package/dist/plugin-sdk/send-ClMvdjfg.js +1 -1
  985. package/dist/plugin-sdk/send-CmoJSYhT.js +1 -1
  986. package/dist/plugin-sdk/send-Cs5jSTw0.cjs +1 -1
  987. package/dist/plugin-sdk/send-D-6Et_9H.js +1 -1
  988. package/dist/plugin-sdk/send-D13uFnzH.cjs +1 -1
  989. package/dist/plugin-sdk/send-D3eT0F4N.cjs +1 -1
  990. package/dist/plugin-sdk/send-DAtg_VHa.js +1 -1
  991. package/dist/plugin-sdk/send-DCF59ijQ.cjs +1 -1
  992. package/dist/plugin-sdk/send-DN2xic3w.cjs +1 -1
  993. package/dist/plugin-sdk/send-DOjSTB6D.cjs +1 -1
  994. package/dist/plugin-sdk/send-DavwL7cF.js +1 -1
  995. package/dist/plugin-sdk/send-Dbmn1rgD.cjs +1 -1
  996. package/dist/plugin-sdk/send-DhfDqcwc.cjs +1 -1
  997. package/dist/plugin-sdk/send-DsDCrJWq.js +1 -1
  998. package/dist/plugin-sdk/send-DyR5Lpl-.js +1 -1
  999. package/dist/plugin-sdk/send-DyzuwDjE.js +1 -1
  1000. package/dist/plugin-sdk/send-GtphEa1b.cjs +1 -1
  1001. package/dist/plugin-sdk/send-HZNY_u3L.cjs +1 -1
  1002. package/dist/plugin-sdk/send-IM-76QZu.js +1 -1
  1003. package/dist/plugin-sdk/send-IqcgAO8b.cjs +1 -1
  1004. package/dist/plugin-sdk/send-OQcuL9tP.js +1 -1
  1005. package/dist/plugin-sdk/send-_92aOzWU.cjs +1 -1
  1006. package/dist/plugin-sdk/send-h_kE-cAK.js +1 -1
  1007. package/dist/plugin-sdk/send-jOMdGt0L.cjs +1 -1
  1008. package/dist/plugin-sdk/send-mZ_d-t_3.cjs +1 -1
  1009. package/dist/plugin-sdk/send-puyUta4_.cjs +1 -1
  1010. package/dist/plugin-sdk/send-t5U34FhY.cjs +1 -1
  1011. package/dist/plugin-sdk/send-tvw8j-Se.cjs +1 -1
  1012. package/dist/plugin-sdk/send-z1vaCgF3.cjs +1 -1
  1013. package/dist/plugin-sdk/session--K1m5v7m.js +1 -1
  1014. package/dist/plugin-sdk/session-B1DJ45om.js +1 -1
  1015. package/dist/plugin-sdk/session-B80NWO1m.js +1 -1
  1016. package/dist/plugin-sdk/session-BKPBr445.js +1 -1
  1017. package/dist/plugin-sdk/session-BQLjsBwL.cjs +1 -1
  1018. package/dist/plugin-sdk/session-BZHltxdM.js +1 -1
  1019. package/dist/plugin-sdk/session-Bt5yI-VW.cjs +1 -1
  1020. package/dist/plugin-sdk/session-CC1GqwiM.cjs +1 -1
  1021. package/dist/plugin-sdk/session-C_yqyp3P.cjs +1 -1
  1022. package/dist/plugin-sdk/session-ClISxvtJ.js +1 -1
  1023. package/dist/plugin-sdk/session-D4nn-nXX.cjs +1 -1
  1024. package/dist/plugin-sdk/session-DOA4CJgj.cjs +1 -1
  1025. package/dist/plugin-sdk/sessions-BwTjGneU.js +1 -1
  1026. package/dist/plugin-sdk/sessions-CJbvfO6m.cjs +1 -1
  1027. package/dist/plugin-sdk/signal.cjs +1 -1
  1028. package/dist/plugin-sdk/signal.js +1 -1
  1029. package/dist/plugin-sdk/skill-commands-5WGHyr3h.cjs +1 -1
  1030. package/dist/plugin-sdk/skill-commands-BZlF3g3o.js +1 -1
  1031. package/dist/plugin-sdk/skill-commands-BmBQSmNH.js +1 -1
  1032. package/dist/plugin-sdk/skill-commands-CD4GQXTR.cjs +1 -1
  1033. package/dist/plugin-sdk/skill-commands-CGOPOT-r.js +1 -1
  1034. package/dist/plugin-sdk/skill-commands-CM9ziCQY.cjs +1 -1
  1035. package/dist/plugin-sdk/skill-commands-CVsU5rEy.js +1 -1
  1036. package/dist/plugin-sdk/skill-commands-DNPxE-kc.cjs +1 -1
  1037. package/dist/plugin-sdk/skill-commands-DcgKCVDt.js +1 -1
  1038. package/dist/plugin-sdk/skill-commands-IAwkVeOe.js +1 -1
  1039. package/dist/plugin-sdk/skill-commands-ZyLkXbR_.cjs +1 -1
  1040. package/dist/plugin-sdk/skill-commands-xJWQthd5.cjs +1 -1
  1041. package/dist/plugin-sdk/slack.cjs +1 -1
  1042. package/dist/plugin-sdk/slack.js +1 -1
  1043. package/dist/plugin-sdk/synology-chat.cjs +1 -1
  1044. package/dist/plugin-sdk/synology-chat.js +1 -1
  1045. package/dist/plugin-sdk/tables-BZUVdTR-.cjs +1 -1
  1046. package/dist/plugin-sdk/tables-Bbodvj_s.cjs +1 -1
  1047. package/dist/plugin-sdk/tables-C5b2CtNw.cjs +1 -1
  1048. package/dist/plugin-sdk/tables-C6TX2QvW.js +1 -1
  1049. package/dist/plugin-sdk/tables-Cz5osenc.js +1 -1
  1050. package/dist/plugin-sdk/tables-DBSeZ07-.cjs +1 -1
  1051. package/dist/plugin-sdk/tables-DLSXY2-Q.js +1 -1
  1052. package/dist/plugin-sdk/tables-DQad-z2Z.cjs +1 -1
  1053. package/dist/plugin-sdk/tables-DYuLwL1d.js +1 -1
  1054. package/dist/plugin-sdk/tables-D_J655yN.js +1 -1
  1055. package/dist/plugin-sdk/tables-_vqK8P0T.js +1 -1
  1056. package/dist/plugin-sdk/tables-bSgb8OzP.cjs +1 -1
  1057. package/dist/plugin-sdk/target-errors-B-mJ4s4b.cjs +1 -1
  1058. package/dist/plugin-sdk/target-errors-BAHAHc8f.js +1 -1
  1059. package/dist/plugin-sdk/target-errors-BKruhz8r.js +1 -1
  1060. package/dist/plugin-sdk/target-errors-BbQBR5da.js +1 -1
  1061. package/dist/plugin-sdk/target-errors-BjgLCOTm.cjs +1 -1
  1062. package/dist/plugin-sdk/target-errors-CQbFkOae.js +1 -1
  1063. package/dist/plugin-sdk/target-errors-C_HYvghh.cjs +1 -1
  1064. package/dist/plugin-sdk/target-errors-CaaKhU6m.js +1 -1
  1065. package/dist/plugin-sdk/target-errors-QWTCk98R.cjs +1 -1
  1066. package/dist/plugin-sdk/target-errors-oh0u5K2w.cjs +1 -1
  1067. package/dist/plugin-sdk/targets-BSc11Uk8.cjs +1 -1
  1068. package/dist/plugin-sdk/targets-BSkiizml.js +1 -1
  1069. package/dist/plugin-sdk/targets-CBI0xqve.cjs +1 -1
  1070. package/dist/plugin-sdk/targets-CL5fYQi7.js +1 -1
  1071. package/dist/plugin-sdk/targets-CUZWrFrm.cjs +1 -1
  1072. package/dist/plugin-sdk/targets-CVEYTFPQ.js +1 -1
  1073. package/dist/plugin-sdk/targets-Co2R6K14.cjs +1 -1
  1074. package/dist/plugin-sdk/targets-CrkJkzil.js +1 -1
  1075. package/dist/plugin-sdk/targets-D-m7SV9x.cjs +1 -1
  1076. package/dist/plugin-sdk/targets-D8HTxbo4.js +1 -1
  1077. package/dist/plugin-sdk/targets-DcGNB9nk.cjs +1 -1
  1078. package/dist/plugin-sdk/targets-Dn9gDiEw.js +1 -1
  1079. package/dist/plugin-sdk/targets-X28mff4s.cjs +1 -1
  1080. package/dist/plugin-sdk/targets-uycXZ8vQ.js +1 -1
  1081. package/dist/plugin-sdk/telegram.cjs +1 -1
  1082. package/dist/plugin-sdk/telegram.js +1 -1
  1083. package/dist/plugin-sdk/test-utils.cjs +1 -1
  1084. package/dist/plugin-sdk/test-utils.js +1 -1
  1085. package/dist/plugin-sdk/tlon.cjs +1 -1
  1086. package/dist/plugin-sdk/tlon.js +1 -1
  1087. package/dist/plugin-sdk/tokens-AAdZjj0M.js +1 -1
  1088. package/dist/plugin-sdk/tokens-B20KNIDD.js +1 -1
  1089. package/dist/plugin-sdk/tokens-B8ys7Q2e.js +1 -1
  1090. package/dist/plugin-sdk/tokens-BPc1fcZ3.js +1 -1
  1091. package/dist/plugin-sdk/tokens-BqABmXSe.js +1 -1
  1092. package/dist/plugin-sdk/tokens-CXsPDJTr.cjs +1 -1
  1093. package/dist/plugin-sdk/tokens-CnB4dJmp.cjs +1 -1
  1094. package/dist/plugin-sdk/tokens-CytSl1X8.cjs +1 -1
  1095. package/dist/plugin-sdk/tokens-DgPZk2Uu.js +1 -1
  1096. package/dist/plugin-sdk/tokens-Dq2wDF3_.cjs +1 -1
  1097. package/dist/plugin-sdk/tokens-DtrljGtQ.cjs +1 -1
  1098. package/dist/plugin-sdk/tokens-g5KWvWhD.cjs +1 -1
  1099. package/dist/plugin-sdk/twitch.cjs +1 -1
  1100. package/dist/plugin-sdk/twitch.js +1 -1
  1101. package/dist/plugin-sdk/utils-BJtJR72k.js +1 -1
  1102. package/dist/plugin-sdk/utils-PPIvU9qw.cjs +1 -1
  1103. package/dist/plugin-sdk/voice-call.cjs +1 -1
  1104. package/dist/plugin-sdk/voice-call.js +1 -1
  1105. package/dist/plugin-sdk/web-B4A8zBP9.cjs +1 -1
  1106. package/dist/plugin-sdk/web-BKKx3jqf.cjs +1 -1
  1107. package/dist/plugin-sdk/web-BTBgpaEi.js +1 -1
  1108. package/dist/plugin-sdk/web-BfjArU7g.js +1 -1
  1109. package/dist/plugin-sdk/web-C7KhecaH.cjs +1 -1
  1110. package/dist/plugin-sdk/web-CFMrBQv7.js +1 -1
  1111. package/dist/plugin-sdk/web-CS0AvKLx.js +1 -1
  1112. package/dist/plugin-sdk/web-EfgEjg15.cjs +1 -1
  1113. package/dist/plugin-sdk/weixin.cjs +1 -1
  1114. package/dist/plugin-sdk/weixin.js +1 -1
  1115. package/dist/plugin-sdk/whatsapp-actions-6N2LIWVD.js +1 -1
  1116. package/dist/plugin-sdk/whatsapp-actions-BGEghean.js +1 -1
  1117. package/dist/plugin-sdk/whatsapp-actions-BP_fSzB9.cjs +1 -1
  1118. package/dist/plugin-sdk/whatsapp-actions-BSx6-Onq.cjs +1 -1
  1119. package/dist/plugin-sdk/whatsapp-actions-BZAMGDn8.cjs +1 -1
  1120. package/dist/plugin-sdk/whatsapp-actions-BvZMduqd.js +1 -1
  1121. package/dist/plugin-sdk/whatsapp-actions-CDUbwNdp.cjs +1 -1
  1122. package/dist/plugin-sdk/whatsapp-actions-DNVIKnqz.cjs +1 -1
  1123. package/dist/plugin-sdk/whatsapp-actions-DTVbVkOo.js +1 -1
  1124. package/dist/plugin-sdk/whatsapp-actions-DjMYqpSS.js +1 -1
  1125. package/dist/plugin-sdk/whatsapp-actions-P1DVqKhD.cjs +1 -1
  1126. package/dist/plugin-sdk/whatsapp-actions-shElOKKX.js +1 -1
  1127. package/dist/plugin-sdk/whatsapp.cjs +1 -1
  1128. package/dist/plugin-sdk/whatsapp.js +1 -1
  1129. package/dist/plugin-sdk/zalo.cjs +1 -1
  1130. package/dist/plugin-sdk/zalo.js +1 -1
  1131. package/dist/plugin-sdk/zalouser.cjs +1 -1
  1132. package/dist/plugin-sdk/zalouser.js +1 -1
  1133. package/dist/plugins-CYLrFT4h.js +1 -1
  1134. package/dist/plugins-DNlgeTTc.js +1 -1
  1135. package/dist/plugins-cli-BiV4FaGs.js +1 -1
  1136. package/dist/plugins-cli-C0PLRxT0.js +1 -1
  1137. package/dist/polls-BIVz6a4F.js +1 -1
  1138. package/dist/polls-Bh5wc9-6.js +1 -1
  1139. package/dist/polls-C_XSFz3d.js +1 -1
  1140. package/dist/polls-DKJOFSzJ.js +1 -1
  1141. package/dist/ports-Bjc9q__g.js +1 -1
  1142. package/dist/ports-Di2_MOUb.js +1 -1
  1143. package/dist/probe-auth-9RrZOStc.js +1 -1
  1144. package/dist/probe-auth-Cg6SAov9.js +1 -1
  1145. package/dist/profile-utils-CWmra1aY.js +1 -1
  1146. package/dist/program-CI--7377.js +1 -1
  1147. package/dist/program-context-CH9p6anW.js +1 -1
  1148. package/dist/program-context-Cu8fVR-O.js +1 -1
  1149. package/dist/progress-LNttnI-y.js +1 -1
  1150. package/dist/progress-d1m2sqR1.js +1 -1
  1151. package/dist/prompt-select-styled-CbTtKeIC.js +1 -1
  1152. package/dist/prompt-select-styled-sYEl0gMg.js +1 -1
  1153. package/dist/prompt-style-BThRSQJR.js +1 -1
  1154. package/dist/prompt-style-CXKekIBY.js +1 -1
  1155. package/dist/prompts-CMzglboN.js +1 -1
  1156. package/dist/prompts-wv-lfVrJ.js +1 -1
  1157. package/dist/provider-auth-helpers-C3OaF218.js +1 -1
  1158. package/dist/provider-auth-helpers-CZyb7LUg.js +1 -1
  1159. package/dist/provider-env-vars-D8p6Ohpj.js +1 -1
  1160. package/dist/provider-env-vars-Dt0Q29Su.js +1 -1
  1161. package/dist/proxy-env-BNhTHkd_.js +1 -1
  1162. package/dist/proxy-env-DcmW_urA.js +1 -1
  1163. package/dist/proxy-env-DrC3TIGh.js +1 -1
  1164. package/dist/proxy-env-FJr5nlvs.js +1 -1
  1165. package/dist/proxy-fetch-BADsUK4d.js +1 -1
  1166. package/dist/proxy-fetch-BZ9O8Dvj.js +1 -1
  1167. package/dist/proxy-fetch-DnjU1fEB.js +1 -1
  1168. package/dist/proxy-fetch-gWETR3cl.js +1 -1
  1169. package/dist/push-apns-kySzOiJr.js +1 -1
  1170. package/dist/push-apns-tM6G9LLm.js +1 -1
  1171. package/dist/pw-ai-B7YMA_4Q.js +1 -1
  1172. package/dist/pw-ai-C7peCONw.js +1 -1
  1173. package/dist/pw-ai-CojtT9WR.js +1 -1
  1174. package/dist/pw-ai-DWJWFzTA.js +1 -1
  1175. package/dist/qmd-manager-C_e04BNg.js +1 -1
  1176. package/dist/qmd-manager-DSQ_mDCl.js +1 -1
  1177. package/dist/qmd-manager-DcBYbt_V.js +1 -1
  1178. package/dist/qmd-manager-NLI0R6kp.js +1 -1
  1179. package/dist/qr-cli-DUR7oW0_.js +1 -1
  1180. package/dist/qr-cli-kb3ygh9I.js +1 -1
  1181. package/dist/query-expansion-0OxEb1Io.js +1 -1
  1182. package/dist/query-expansion-BUUx_oWg.js +1 -1
  1183. package/dist/query-expansion-r_iXkNzt.js +1 -1
  1184. package/dist/reaction-level-DVPHL14p.js +1 -1
  1185. package/dist/reaction-message-id-BEEe7X3D.js +1 -1
  1186. package/dist/read-only-account-inspect-DEnPVHTo.js +1 -1
  1187. package/dist/redact-3_CiXMY6.js +1 -1
  1188. package/dist/redact-CnRxK70G.js +1 -1
  1189. package/dist/register.agent-BwmE1VD-.js +1 -1
  1190. package/dist/register.agent-D1hQi_68.js +1 -1
  1191. package/dist/register.backup-8s5jgnHQ.js +1 -1
  1192. package/dist/register.backup-CAiwLaIW.js +1 -1
  1193. package/dist/register.configure-BsTw4XfK.js +1 -1
  1194. package/dist/register.configure-DxR84Ot6.js +1 -1
  1195. package/dist/register.maintenance-3nzWAo_a.js +1 -1
  1196. package/dist/register.maintenance-DxKGQ9Jo.js +1 -1
  1197. package/dist/register.message-Bk1pHVSK.js +1 -1
  1198. package/dist/register.message-PcFtBR0-.js +1 -1
  1199. package/dist/register.onboard-AWxbhU7j.js +1 -1
  1200. package/dist/register.onboard-BTOZN8ro.js +1 -1
  1201. package/dist/register.setup-B-e1qIbc.js +1 -1
  1202. package/dist/register.setup-CweJJdt8.js +1 -1
  1203. package/dist/register.status-health-sessions-B1R_nl6P.js +1 -1
  1204. package/dist/register.status-health-sessions-CWNLXpAn.js +1 -1
  1205. package/dist/register.subclis-C0VQ_HfZ.js +1 -1
  1206. package/dist/registry-BptzrW8D.js +1 -1
  1207. package/dist/registry-hFAtCSWG.js +1 -1
  1208. package/dist/render-BXEUPIHe.js +1 -1
  1209. package/dist/render-CBsnn-2A.js +1 -1
  1210. package/dist/render-D8OWO2hT.js +1 -1
  1211. package/dist/render-DrrPmnMI.js +1 -1
  1212. package/dist/reply-r9KtzgpM.js +1 -1
  1213. package/dist/restart-CTfuVGfA.js +1 -1
  1214. package/dist/rpc-BQXfCyCw.js +1 -1
  1215. package/dist/rpc-CcrILVsV.js +1 -1
  1216. package/dist/run-main-CuQQyoU3.js +1 -1
  1217. package/dist/runtime-BlsMYeaw.js +1 -1
  1218. package/dist/runtime-DLxfCs7F.js +1 -1
  1219. package/dist/runtime-guard-DFYBaYZS.js +1 -1
  1220. package/dist/runtime-guard-DX2Ie4ri.js +1 -1
  1221. package/dist/runtime-status-CqFBmdRd.js +1 -1
  1222. package/dist/runtime-status-DszMjvJK.js +1 -1
  1223. package/dist/runtime-web-tools-BWv0X5qp.js +1 -1
  1224. package/dist/runtime-web-tools-CCIXUISf.js +1 -1
  1225. package/dist/sandbox-cli-CxluKLFV.js +1 -1
  1226. package/dist/sandbox-cli-xCX6FV4Z.js +1 -1
  1227. package/dist/scan-paths-C13EseXp.js +1 -1
  1228. package/dist/scan-paths-CWtvWW40.js +1 -1
  1229. package/dist/search-manager-KMRzwyPH.js +1 -1
  1230. package/dist/secret-file-C7JffiM_.js +1 -1
  1231. package/dist/secret-file-D60EFEOe.js +1 -1
  1232. package/dist/secret-file-DuWm26jS.js +1 -1
  1233. package/dist/secrets-cli-Be6OBr6Q.js +1 -1
  1234. package/dist/secrets-cli-DmDZiX17.js +1 -1
  1235. package/dist/secure-random-D7JQgiK-.js +1 -1
  1236. package/dist/security-cli-CllLwpQ-.js +1 -1
  1237. package/dist/security-cli-DcA9keUK.js +1 -1
  1238. package/dist/send-8rJCpsDu.js +1 -1
  1239. package/dist/send-BJjoLBo3.js +1 -1
  1240. package/dist/send-BOxuQt9L.js +1 -1
  1241. package/dist/send-BPfl_1It.js +1 -1
  1242. package/dist/send-BdS6jUBa.js +1 -1
  1243. package/dist/send-BeZJ1zbp.js +1 -1
  1244. package/dist/send-BkZ8dWQV2.js +1 -1
  1245. package/dist/send-CDAeI9xB2.js +1 -1
  1246. package/dist/send-CgeRzkWS.js +1 -1
  1247. package/dist/send-CiTZ4p2t.js +1 -1
  1248. package/dist/send-D0y-r_hg2.js +1 -1
  1249. package/dist/send-DIw8ExHc.js +1 -1
  1250. package/dist/send-DRm6AFp-.js +1 -1
  1251. package/dist/send-DS5Quwb7.js +1 -1
  1252. package/dist/send-DVmPgxm7.js +1 -1
  1253. package/dist/send-Ds5sy22D.js +1 -1
  1254. package/dist/send-DvGzdoKK.js +1 -1
  1255. package/dist/send-OVet2uKx.js +1 -1
  1256. package/dist/send-YPQFx-fV.js +1 -1
  1257. package/dist/send-e2ppdA_R.js +1 -1
  1258. package/dist/server-Dzqb5Tau.js +1 -1
  1259. package/dist/server-node-events-B2irOUJ_.js +1 -1
  1260. package/dist/server-node-events-DSr6P0VG.js +1 -1
  1261. package/dist/server-w7sUBJEA.js +1 -1
  1262. package/dist/service-BtB9epJk.js +1 -1
  1263. package/dist/service-DZ9EbS15.js +1 -1
  1264. package/dist/session-BYYOduc1.js +1 -1
  1265. package/dist/session-B_qrXLsR.js +1 -1
  1266. package/dist/session-Be0RV2V1.js +1 -1
  1267. package/dist/session-bk3gFwO4.js +1 -1
  1268. package/dist/session-cost-usage-BgqKixv0.js +1 -1
  1269. package/dist/session-cost-usage-CHtVgnE8.js +1 -1
  1270. package/dist/session-key-C7F_iqYg.js +1 -1
  1271. package/dist/session-key-D3P0tf5P.js +1 -1
  1272. package/dist/session-utils-CrR0wD3W.js +1 -1
  1273. package/dist/sessions-BvTGb3rW.js +1 -1
  1274. package/dist/shared-9x5sqYRb.js +1 -1
  1275. package/dist/shared-BKWhOp64.js +1 -1
  1276. package/dist/shared-BV-hfJ3h.js +1 -1
  1277. package/dist/skill-commands-C59b8Yso.js +1 -1
  1278. package/dist/skill-commands-CqIEajsA.js +1 -1
  1279. package/dist/skill-commands-F5NFH0NR.js +1 -1
  1280. package/dist/skill-commands-O39uSj-k.js +1 -1
  1281. package/dist/skill-scanner-CUUF3Fvo.js +1 -1
  1282. package/dist/skill-scanner-CkxXNioD.js +1 -1
  1283. package/dist/skills-CKTicUKS.js +1 -1
  1284. package/dist/skills-DHbOKEGc.js +1 -1
  1285. package/dist/skills-cli-CZD1Ng18.js +1 -1
  1286. package/dist/skills-cli-nj0w4fe0.js +1 -1
  1287. package/dist/skills-install-D0I6c17J.js +1 -1
  1288. package/dist/skills-install-XHpqMBWl.js +1 -1
  1289. package/dist/skills-status-BWIugRCz.js +1 -1
  1290. package/dist/skills-status-DswSl5aD.js +1 -1
  1291. package/dist/sqlite-CILF3z9U.js +1 -1
  1292. package/dist/stagger-DmFYysrJ.js +1 -1
  1293. package/dist/stagger-DxzgG2jd.js +1 -1
  1294. package/dist/status-DKB9gdSp.js +1 -1
  1295. package/dist/status-DgRrUxyg.js +1 -1
  1296. package/dist/status-YZD9V9xi.js +1 -1
  1297. package/dist/status-isxcm8Xz.js +1 -1
  1298. package/dist/status.update-B_8Gumuc.js +1 -1
  1299. package/dist/status.update-Cf2e-l9d.js +1 -1
  1300. package/dist/string-normalization-BrUPaXaM.js +1 -1
  1301. package/dist/string-normalization-DJT5zuUF.js +1 -1
  1302. package/dist/subsystem-BLbY429l.js +1 -1
  1303. package/dist/subsystem-Bc2XrjUz.js +1 -1
  1304. package/dist/subsystem-C5XF2Fy5.js +1 -1
  1305. package/dist/system-cli-CRs3TOTw.js +1 -1
  1306. package/dist/system-cli-GyoLZQpj.js +1 -1
  1307. package/dist/system-run-command-DCzdgYyb.js +1 -1
  1308. package/dist/system-run-command-FCk9hSMO.js +1 -1
  1309. package/dist/systemd-D7odsu4K.js +1 -1
  1310. package/dist/systemd-DbevZh65.js +1 -1
  1311. package/dist/systemd-hints-lXpMy-kY.js +1 -1
  1312. package/dist/systemd-hints-x1lJAOxS.js +1 -1
  1313. package/dist/systemd-linger-C2MJD6KG.js +1 -1
  1314. package/dist/systemd-linger-cWKbFNpu.js +1 -1
  1315. package/dist/table-CR7TFMew.js +1 -1
  1316. package/dist/table-CY440fI1.js +1 -1
  1317. package/dist/tables-3Rjt6nwZ.js +1 -1
  1318. package/dist/tables-B9wFKQvT.js +1 -1
  1319. package/dist/tables-D1pcaye7.js +1 -1
  1320. package/dist/tables-h7y1Jhf4.js +1 -1
  1321. package/dist/target-errors-CUQcIty1.js +1 -1
  1322. package/dist/target-errors-D55sWZ4E.js +1 -1
  1323. package/dist/target-errors-DH0aw-m5.js +1 -1
  1324. package/dist/target-errors-LuLROpta.js +1 -1
  1325. package/dist/targets-4EaxWBal.js +1 -1
  1326. package/dist/targets-BJTo7bqu.js +1 -1
  1327. package/dist/targets-BYVMrXDf.js +1 -1
  1328. package/dist/targets-Bq6rS6-Z.js +1 -1
  1329. package/dist/targets-CL5fYQi7.js +1 -1
  1330. package/dist/targets-fozeWOOg.js +1 -1
  1331. package/dist/targets-m_41k_Mv.js +1 -1
  1332. package/dist/telegram/audit.js +1 -1
  1333. package/dist/text-format-CvrvBBre.js +1 -1
  1334. package/dist/text-format-DEWK6oCT.js +1 -1
  1335. package/dist/token-DnTmiyJu.js +1 -1
  1336. package/dist/tokens-B2fq-rL6.js +1 -1
  1337. package/dist/tokens-CL2fSjGl.js +1 -1
  1338. package/dist/tokens-DRM8vzJx.js +1 -1
  1339. package/dist/tokens-XGbQGn67.js +1 -1
  1340. package/dist/tool-display-DJDtttQg.js +1 -1
  1341. package/dist/tool-display-DjuSUUbH.js +1 -1
  1342. package/dist/tui-CqEb9hrT.js +1 -1
  1343. package/dist/tui-DdZ8SpNW.js +1 -1
  1344. package/dist/tui-cli-Bj0okLCf.js +1 -1
  1345. package/dist/tui-cli-CYvBshyB.js +1 -1
  1346. package/dist/types.secrets-C-5U96pc.js +1 -1
  1347. package/dist/types.secrets-D4tbc3Wq.js +1 -1
  1348. package/dist/update-BGrxUIyz.js +1 -1
  1349. package/dist/update-CwTy5DPl.js +1 -1
  1350. package/dist/update-cli-lciKU8_L.js +1 -1
  1351. package/dist/update-cli-xb0jHjE8.js +1 -1
  1352. package/dist/update-runner-8Hto6X-M.js +1 -1
  1353. package/dist/update-runner-LVJcy569.js +1 -1
  1354. package/dist/usage-format-BWD8FJFL.js +1 -1
  1355. package/dist/usage-format-yPwal8Iz.js +1 -1
  1356. package/dist/utils-CGdo13HV.js +1 -1
  1357. package/dist/utils-D3t-vPka.js +1 -1
  1358. package/dist/utils-R-mFyVJi.js +1 -1
  1359. package/dist/utils-UGOV_184.js +1 -1
  1360. package/dist/version-q3SkUw2K.js +1 -1
  1361. package/dist/warning-filter.js +1 -1
  1362. package/dist/web-Bfz_qlYe.js +1 -1
  1363. package/dist/web-ClbIohhf.js +1 -1
  1364. package/dist/webhooks-cli-DKfKihmJ.js +1 -1
  1365. package/dist/webhooks-cli-LU2ADRQp.js +1 -1
  1366. package/dist/whatsapp-actions-1TJ8dlv0.js +1 -1
  1367. package/dist/whatsapp-actions-CuDiuPGa.js +1 -1
  1368. package/dist/whatsapp-actions-DkLDOIk1.js +1 -1
  1369. package/dist/whatsapp-actions-EnduXWui.js +1 -1
  1370. package/dist/widearea-dns-BDx7vkV2.js +1 -1
  1371. package/dist/widearea-dns-BFjqKXu_.js +1 -1
  1372. package/dist/windows-spawn-7oINn5ao.js +1 -1
  1373. package/dist/windows-spawn-AB7ItGAE.js +1 -1
  1374. package/dist/with-timeout-WveKxvFV.js +1 -1
  1375. package/dist/with-timeout-c1CzdShT.js +1 -1
  1376. package/dist/workspace-B0ZQeHXg.js +1 -1
  1377. package/dist/workspace-C45T1Cxg.js +1 -1
  1378. package/dist/workspace-dirs-A8Vib9_B.js +1 -1
  1379. package/dist/workspace-dirs-BhF1Dzxt.js +1 -1
  1380. package/dist/workspace-xNEpaJvu.js +1 -1
  1381. package/dist/wsl-DHxB2Ew_.js +1 -1
  1382. package/dist/wsl-Ok7GaSJ6.js +1 -1
  1383. package/extensions/memory-core/index.js +1 -0
  1384. package/extensions/memory-core/package.json +1 -1
  1385. package/extensions/openclaw-telemetry-galileo-embedded/index.js +4 -0
  1386. package/extensions/openclaw-telemetry-galileo-embedded/package.json +2 -2
  1387. package/extensions/openclaw-telemetry-galileo-embedded/src/service.js +13 -0
  1388. package/extensions/openclaw-weixin/index.js +1 -0
  1389. package/extensions/openclaw-weixin/package.json +3 -3
  1390. package/extensions/openclaw-weixin/src/api/api.js +1 -0
  1391. package/extensions/openclaw-weixin/src/api/config-cache.js +1 -0
  1392. package/extensions/openclaw-weixin/src/api/session-guard.js +1 -0
  1393. package/extensions/openclaw-weixin/src/api/types.js +1 -0
  1394. package/extensions/openclaw-weixin/src/auth/accounts.js +1 -0
  1395. package/extensions/openclaw-weixin/src/auth/login-qr.js +11 -0
  1396. package/extensions/openclaw-weixin/src/auth/pairing.js +1 -0
  1397. package/extensions/openclaw-weixin/src/cdn/aes-ecb.js +1 -0
  1398. package/extensions/openclaw-weixin/src/cdn/cdn-upload.js +1 -0
  1399. package/extensions/openclaw-weixin/src/cdn/cdn-url.js +1 -0
  1400. package/extensions/openclaw-weixin/src/cdn/pic-decrypt.js +1 -0
  1401. package/extensions/openclaw-weixin/src/cdn/upload.js +1 -0
  1402. package/extensions/openclaw-weixin/src/channel.js +6 -0
  1403. package/extensions/openclaw-weixin/src/config/config-schema.js +1 -0
  1404. package/extensions/openclaw-weixin/src/log-upload.js +4 -0
  1405. package/extensions/openclaw-weixin/src/media/media-download.js +1 -0
  1406. package/extensions/openclaw-weixin/src/media/mime.js +1 -0
  1407. package/extensions/openclaw-weixin/src/media/silk-transcode.js +1 -0
  1408. package/extensions/openclaw-weixin/src/messaging/debug-mode.js +1 -0
  1409. package/extensions/openclaw-weixin/src/messaging/error-notice.js +1 -0
  1410. package/extensions/openclaw-weixin/src/messaging/inbound.js +2 -0
  1411. package/extensions/openclaw-weixin/src/messaging/process-message.js +3 -0
  1412. package/extensions/openclaw-weixin/src/messaging/send-media.js +1 -0
  1413. package/extensions/openclaw-weixin/src/messaging/send.js +1 -0
  1414. package/extensions/openclaw-weixin/src/messaging/slash-commands.js +2 -0
  1415. package/extensions/openclaw-weixin/src/monitor/monitor.js +1 -0
  1416. package/extensions/openclaw-weixin/src/runtime.js +1 -0
  1417. package/extensions/openclaw-weixin/src/storage/state-dir.js +1 -0
  1418. package/extensions/openclaw-weixin/src/storage/sync-buf.js +1 -0
  1419. package/extensions/openclaw-weixin/src/util/logger.js +2 -0
  1420. package/extensions/openclaw-weixin/src/util/random.js +1 -0
  1421. package/extensions/openclaw-weixin/src/util/redact.js +1 -0
  1422. package/extensions/qbagent-mcp-server-x5uselocal-node/index.js +1 -0
  1423. package/extensions/qbagent-mcp-server-x5uselocal-node/package.json +1 -1
  1424. package/extensions/qbagent-mcp-server-x5uselocal-node/src/browser-use-tool.js +1 -0
  1425. package/extensions/qbagent-mcp-server-x5uselocal-node/src/server.js +1 -0
  1426. package/extensions/qbagent-mcp-server-x5uselocal-node/src/tools.js +1 -0
  1427. package/extensions/qbagent-mcp-server-x5uselocal-node/src/websocket-manager.js +1 -0
  1428. package/package.json +1 -1
  1429. package/extensions/memory-core/index.ts +0 -38
  1430. package/extensions/openclaw-telemetry-galileo-embedded/index.ts +0 -663
  1431. package/extensions/openclaw-telemetry-galileo-embedded/src/service.ts +0 -1590
  1432. package/extensions/openclaw-weixin/index.ts +0 -26
  1433. package/extensions/openclaw-weixin/src/api/api.ts +0 -238
  1434. package/extensions/openclaw-weixin/src/api/config-cache.ts +0 -79
  1435. package/extensions/openclaw-weixin/src/api/session-guard.ts +0 -58
  1436. package/extensions/openclaw-weixin/src/api/types.ts +0 -222
  1437. package/extensions/openclaw-weixin/src/auth/accounts.ts +0 -363
  1438. package/extensions/openclaw-weixin/src/auth/login-qr.ts +0 -344
  1439. package/extensions/openclaw-weixin/src/auth/pairing.ts +0 -120
  1440. package/extensions/openclaw-weixin/src/cdn/aes-ecb.ts +0 -21
  1441. package/extensions/openclaw-weixin/src/cdn/cdn-upload.ts +0 -75
  1442. package/extensions/openclaw-weixin/src/cdn/cdn-url.ts +0 -17
  1443. package/extensions/openclaw-weixin/src/cdn/pic-decrypt.ts +0 -85
  1444. package/extensions/openclaw-weixin/src/cdn/upload.ts +0 -154
  1445. package/extensions/openclaw-weixin/src/channel.ts +0 -483
  1446. package/extensions/openclaw-weixin/src/config/config-schema.ts +0 -21
  1447. package/extensions/openclaw-weixin/src/log-upload.ts +0 -129
  1448. package/extensions/openclaw-weixin/src/media/media-download.ts +0 -138
  1449. package/extensions/openclaw-weixin/src/media/mime.ts +0 -76
  1450. package/extensions/openclaw-weixin/src/media/silk-transcode.ts +0 -74
  1451. package/extensions/openclaw-weixin/src/messaging/debug-mode.ts +0 -68
  1452. package/extensions/openclaw-weixin/src/messaging/error-notice.ts +0 -36
  1453. package/extensions/openclaw-weixin/src/messaging/inbound.ts +0 -283
  1454. package/extensions/openclaw-weixin/src/messaging/process-message.ts +0 -488
  1455. package/extensions/openclaw-weixin/src/messaging/send-media.ts +0 -76
  1456. package/extensions/openclaw-weixin/src/messaging/send.ts +0 -267
  1457. package/extensions/openclaw-weixin/src/messaging/slash-commands.ts +0 -105
  1458. package/extensions/openclaw-weixin/src/monitor/monitor.ts +0 -225
  1459. package/extensions/openclaw-weixin/src/runtime.ts +0 -67
  1460. package/extensions/openclaw-weixin/src/storage/state-dir.ts +0 -11
  1461. package/extensions/openclaw-weixin/src/storage/sync-buf.ts +0 -79
  1462. package/extensions/openclaw-weixin/src/util/logger.ts +0 -146
  1463. package/extensions/openclaw-weixin/src/util/random.ts +0 -17
  1464. package/extensions/openclaw-weixin/src/util/redact.ts +0 -57
  1465. package/extensions/openclaw-weixin/src/vendor.d.ts +0 -21
  1466. package/extensions/qbagent-mcp-server-x5uselocal-node/index.ts +0 -140
  1467. package/extensions/qbagent-mcp-server-x5uselocal-node/src/browser-use-tool.ts +0 -157
  1468. package/extensions/qbagent-mcp-server-x5uselocal-node/src/server.ts +0 -135
  1469. package/extensions/qbagent-mcp-server-x5uselocal-node/src/tools.ts +0 -205
  1470. package/extensions/qbagent-mcp-server-x5uselocal-node/src/websocket-manager.ts +0 -351
@@ -1 +1 @@
1
- require(`./paths-Bcdg3ma0.cjs`);const e=require(`./model-auth-CLnFIqcf.cjs`),t=require(`./logger-6O6OsYBL.cjs`);let n=require(`@buape/carbon`);const r={attempts:3,minDelayMs:500,maxDelayMs:3e4,jitter:.1},i={attempts:3,minDelayMs:400,maxDelayMs:3e4,jitter:.1},a=/429|timeout|connect|reset|closed|unavailable|temporarily/i,o=t.O(`retry-policy`);function s(t){return t.shouldRetry?t.strictShouldRetry?t.shouldRetry:n=>t.shouldRetry?.(n)||a.test(e.hi(n)):t=>a.test(e.hi(t))}function c(e){if(!e||typeof e!=`object`)return;let t=`parameters`in e&&e.parameters&&typeof e.parameters==`object`?e.parameters.retry_after:`response`in e&&e.response&&typeof e.response==`object`&&`parameters`in e.response?e.response.parameters?.retry_after:`error`in e&&e.error&&typeof e.error==`object`&&`parameters`in e.error?e.error.parameters?.retry_after:void 0;return typeof t==`number`&&Number.isFinite(t)?t*1e3:void 0}function l(t){let i=e.Ls(r,{...t.configRetry,...t.retry});return(r,a)=>e.Rs(r,{...i,label:a,shouldRetry:e=>e instanceof n.RateLimitError,retryAfterMs:e=>e instanceof n.RateLimitError?e.retryAfter*1e3:void 0,onRetry:t.verbose?e=>{let t=e.label??`request`,n=Math.max(1,e.maxAttempts-1);o.warn(`discord ${t} rate limited, retry ${e.attempt}/${n} in ${e.delayMs}ms`)}:void 0})}function u(t){let n=e.Ls(i,{...t.configRetry,...t.retry}),r=s(t);return(i,a)=>e.Rs(i,{...n,label:a,shouldRetry:r,retryAfterMs:c,onRetry:t.verbose?t=>{let n=Math.max(1,t.maxAttempts-1);o.warn(`telegram send retry ${t.attempt}/${n} for ${t.label??a??`request`} in ${t.delayMs}ms: ${e.hi(t.err)}`)}:void 0})}const d=new Map;function f(e,t){return`${e}:${t||`default`}`}function p(e,t){let n=f(e,t),r=d.get(n);if(r)return r;let i={inboundAt:null,outboundAt:null};return d.set(n,i),i}function m(e){let t=typeof e.at==`number`?e.at:Date.now(),n=e.accountId?.trim()||`default`,r=p(e.channel,n);e.direction===`inbound`&&(r.inboundAt=t),e.direction===`outbound`&&(r.outboundAt=t)}function h(e){let t=e.accountId?.trim()||`default`;return d.get(f(e.channel,t))??{inboundAt:null,outboundAt:null}}Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return u}}),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return m}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return l}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return h}});
1
+ require(`./paths-Bcdg3ma0.cjs`);const e=require(`./model-auth-CLnFIqcf.cjs`),t=require(`./logger-6O6OsYBL.cjs`);let n=require(`@buape/carbon`);const r={attempts:3,minDelayMs:500,maxDelayMs:3e4,jitter:.1},i={attempts:3,minDelayMs:400,maxDelayMs:3e4,jitter:.1},a=/429|timeout|connect|reset|closed|unavailable|temporarily/i,o=t.O(`retry-policy`);function s(t){return t.shouldRetry?t.strictShouldRetry?t.shouldRetry:n=>t.shouldRetry?.(n)||a.test(e.hi(n)):t=>a.test(e.hi(t))}function c(e){if(!e||typeof e!=`object`)return;let t=`parameters`in e&&e.parameters&&typeof e.parameters==`object`?e.parameters.retry_after:`response`in e&&e.response&&typeof e.response==`object`&&`parameters`in e.response?e.response.parameters?.retry_after:`error`in e&&e.error&&typeof e.error==`object`&&`parameters`in e.error?e.error.parameters?.retry_after:void 0;return typeof t==`number`&&Number.isFinite(t)?t*1e3:void 0}function l(t){let i=e.Ls(r,{...t.configRetry,...t.retry});return(r,a)=>e.Rs(r,{...i,label:a,shouldRetry:e=>e instanceof n.RateLimitError,retryAfterMs:e=>e instanceof n.RateLimitError?e.retryAfter*1e3:void 0,onRetry:t.verbose?e=>{let t=e.label??`request`,n=Math.max(1,e.maxAttempts-1);o.warn(`discord ${t} rate limited, retry ${e.attempt}/${n} in ${e.delayMs}ms`)}:void 0})}function u(t){let n=e.Ls(i,{...t.configRetry,...t.retry}),r=s(t);return(i,a)=>e.Rs(i,{...n,label:a,shouldRetry:r,retryAfterMs:c,onRetry:t.verbose?t=>{let n=Math.max(1,t.maxAttempts-1);o.warn(`telegram send retry ${t.attempt}/${n} for ${t.label??a??`request`} in ${t.delayMs}ms: ${e.hi(t.err)}`)}:void 0})}const d=new Map;function f(e,t){return`${e}:${t||`default`}`}function p(e,t){let n=f(e,t),r=d.get(n);if(r)return r;let i={inboundAt:null,outboundAt:null};return d.set(n,i),i}function m(e){let t=typeof e.at==`number`?e.at:Date.now(),n=e.accountId?.trim()||`default`,r=p(e.channel,n);e.direction===`inbound`&&(r.inboundAt=t),e.direction===`outbound`&&(r.outboundAt=t)}function h(e){let t=e.accountId?.trim()||`default`;return d.get(f(e.channel,t))??{inboundAt:null,outboundAt:null}}Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return u}}),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return m}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return l}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return h}});
@@ -1 +1 @@
1
- require(`./paths-Bcdg3ma0.cjs`);const e=require(`./sessions-CJbvfO6m.cjs`),t=require(`./logger-DUYnS-W3.cjs`);let n=require(`@buape/carbon`);const r={attempts:3,minDelayMs:500,maxDelayMs:3e4,jitter:.1},i={attempts:3,minDelayMs:400,maxDelayMs:3e4,jitter:.1},a=/429|timeout|connect|reset|closed|unavailable|temporarily/i,o=t.O(`retry-policy`);function s(t){return t.shouldRetry?t.strictShouldRetry?t.shouldRetry:n=>t.shouldRetry?.(n)||a.test(e.wi(n)):t=>a.test(e.wi(t))}function c(e){if(!e||typeof e!=`object`)return;let t=`parameters`in e&&e.parameters&&typeof e.parameters==`object`?e.parameters.retry_after:`response`in e&&e.response&&typeof e.response==`object`&&`parameters`in e.response?e.response.parameters?.retry_after:`error`in e&&e.error&&typeof e.error==`object`&&`parameters`in e.error?e.error.parameters?.retry_after:void 0;return typeof t==`number`&&Number.isFinite(t)?t*1e3:void 0}function l(t){let i=e.bn(r,{...t.configRetry,...t.retry});return(r,a)=>e.xn(r,{...i,label:a,shouldRetry:e=>e instanceof n.RateLimitError,retryAfterMs:e=>e instanceof n.RateLimitError?e.retryAfter*1e3:void 0,onRetry:t.verbose?e=>{let t=e.label??`request`,n=Math.max(1,e.maxAttempts-1);o.warn(`discord ${t} rate limited, retry ${e.attempt}/${n} in ${e.delayMs}ms`)}:void 0})}function u(t){let n=e.bn(i,{...t.configRetry,...t.retry}),r=s(t);return(i,a)=>e.xn(i,{...n,label:a,shouldRetry:r,retryAfterMs:c,onRetry:t.verbose?t=>{let n=Math.max(1,t.maxAttempts-1);o.warn(`telegram send retry ${t.attempt}/${n} for ${t.label??a??`request`} in ${t.delayMs}ms: ${e.wi(t.err)}`)}:void 0})}const d=new Map;function f(e,t){return`${e}:${t||`default`}`}function p(e,t){let n=f(e,t),r=d.get(n);if(r)return r;let i={inboundAt:null,outboundAt:null};return d.set(n,i),i}function m(e){let t=typeof e.at==`number`?e.at:Date.now(),n=e.accountId?.trim()||`default`,r=p(e.channel,n);e.direction===`inbound`&&(r.inboundAt=t),e.direction===`outbound`&&(r.outboundAt=t)}function h(e){let t=e.accountId?.trim()||`default`;return d.get(f(e.channel,t))??{inboundAt:null,outboundAt:null}}Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return u}}),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return m}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return l}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return h}});
1
+ require(`./paths-Bcdg3ma0.cjs`);const e=require(`./sessions-CJbvfO6m.cjs`),t=require(`./logger-DUYnS-W3.cjs`);let n=require(`@buape/carbon`);const r={attempts:3,minDelayMs:500,maxDelayMs:3e4,jitter:.1},i={attempts:3,minDelayMs:400,maxDelayMs:3e4,jitter:.1},a=/429|timeout|connect|reset|closed|unavailable|temporarily/i,o=t.O(`retry-policy`);function s(t){return t.shouldRetry?t.strictShouldRetry?t.shouldRetry:n=>t.shouldRetry?.(n)||a.test(e.wi(n)):t=>a.test(e.wi(t))}function c(e){if(!e||typeof e!=`object`)return;let t=`parameters`in e&&e.parameters&&typeof e.parameters==`object`?e.parameters.retry_after:`response`in e&&e.response&&typeof e.response==`object`&&`parameters`in e.response?e.response.parameters?.retry_after:`error`in e&&e.error&&typeof e.error==`object`&&`parameters`in e.error?e.error.parameters?.retry_after:void 0;return typeof t==`number`&&Number.isFinite(t)?t*1e3:void 0}function l(t){let i=e.bn(r,{...t.configRetry,...t.retry});return(r,a)=>e.xn(r,{...i,label:a,shouldRetry:e=>e instanceof n.RateLimitError,retryAfterMs:e=>e instanceof n.RateLimitError?e.retryAfter*1e3:void 0,onRetry:t.verbose?e=>{let t=e.label??`request`,n=Math.max(1,e.maxAttempts-1);o.warn(`discord ${t} rate limited, retry ${e.attempt}/${n} in ${e.delayMs}ms`)}:void 0})}function u(t){let n=e.bn(i,{...t.configRetry,...t.retry}),r=s(t);return(i,a)=>e.xn(i,{...n,label:a,shouldRetry:r,retryAfterMs:c,onRetry:t.verbose?t=>{let n=Math.max(1,t.maxAttempts-1);o.warn(`telegram send retry ${t.attempt}/${n} for ${t.label??a??`request`} in ${t.delayMs}ms: ${e.wi(t.err)}`)}:void 0})}const d=new Map;function f(e,t){return`${e}:${t||`default`}`}function p(e,t){let n=f(e,t),r=d.get(n);if(r)return r;let i={inboundAt:null,outboundAt:null};return d.set(n,i),i}function m(e){let t=typeof e.at==`number`?e.at:Date.now(),n=e.accountId?.trim()||`default`,r=p(e.channel,n);e.direction===`inbound`&&(r.inboundAt=t),e.direction===`outbound`&&(r.outboundAt=t)}function h(e){let t=e.accountId?.trim()||`default`;return d.get(f(e.channel,t))??{inboundAt:null,outboundAt:null}}Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return u}}),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return m}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return l}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return h}});
@@ -1 +1 @@
1
- require(`./paths-Bcdg3ma0.cjs`);const e=require(`./utils-PPIvU9qw.cjs`),t=require(`./model-auth-BgS7ynQw.cjs`);let n=require(`@buape/carbon`);const r={attempts:3,minDelayMs:500,maxDelayMs:3e4,jitter:.1},i={attempts:3,minDelayMs:400,maxDelayMs:3e4,jitter:.1},a=/429|timeout|connect|reset|closed|unavailable|temporarily/i,o=e.O(`retry-policy`);function s(e){return e.shouldRetry?e.strictShouldRetry?e.shouldRetry:n=>e.shouldRetry?.(n)||a.test(t.Ir(n)):e=>a.test(t.Ir(e))}function c(e){if(!e||typeof e!=`object`)return;let t=`parameters`in e&&e.parameters&&typeof e.parameters==`object`?e.parameters.retry_after:`response`in e&&e.response&&typeof e.response==`object`&&`parameters`in e.response?e.response.parameters?.retry_after:`error`in e&&e.error&&typeof e.error==`object`&&`parameters`in e.error?e.error.parameters?.retry_after:void 0;return typeof t==`number`&&Number.isFinite(t)?t*1e3:void 0}function l(e){let i=t.es(r,{...e.configRetry,...e.retry});return(r,a)=>t.ts(r,{...i,label:a,shouldRetry:e=>e instanceof n.RateLimitError,retryAfterMs:e=>e instanceof n.RateLimitError?e.retryAfter*1e3:void 0,onRetry:e.verbose?e=>{let t=e.label??`request`,n=Math.max(1,e.maxAttempts-1);o.warn(`discord ${t} rate limited, retry ${e.attempt}/${n} in ${e.delayMs}ms`)}:void 0})}function u(e){let n=t.es(i,{...e.configRetry,...e.retry}),r=s(e);return(i,a)=>t.ts(i,{...n,label:a,shouldRetry:r,retryAfterMs:c,onRetry:e.verbose?e=>{let n=Math.max(1,e.maxAttempts-1);o.warn(`telegram send retry ${e.attempt}/${n} for ${e.label??a??`request`} in ${e.delayMs}ms: ${t.Ir(e.err)}`)}:void 0})}const d=new Map;function f(e,t){return`${e}:${t||`default`}`}function p(e,t){let n=f(e,t),r=d.get(n);if(r)return r;let i={inboundAt:null,outboundAt:null};return d.set(n,i),i}function m(e){let t=typeof e.at==`number`?e.at:Date.now(),n=e.accountId?.trim()||`default`,r=p(e.channel,n);e.direction===`inbound`&&(r.inboundAt=t),e.direction===`outbound`&&(r.outboundAt=t)}function h(e){let t=e.accountId?.trim()||`default`;return d.get(f(e.channel,t))??{inboundAt:null,outboundAt:null}}Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return u}}),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return m}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return l}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return h}});
1
+ require(`./paths-Bcdg3ma0.cjs`);const e=require(`./utils-PPIvU9qw.cjs`),t=require(`./model-auth-BgS7ynQw.cjs`);let n=require(`@buape/carbon`);const r={attempts:3,minDelayMs:500,maxDelayMs:3e4,jitter:.1},i={attempts:3,minDelayMs:400,maxDelayMs:3e4,jitter:.1},a=/429|timeout|connect|reset|closed|unavailable|temporarily/i,o=e.O(`retry-policy`);function s(e){return e.shouldRetry?e.strictShouldRetry?e.shouldRetry:n=>e.shouldRetry?.(n)||a.test(t.Ir(n)):e=>a.test(t.Ir(e))}function c(e){if(!e||typeof e!=`object`)return;let t=`parameters`in e&&e.parameters&&typeof e.parameters==`object`?e.parameters.retry_after:`response`in e&&e.response&&typeof e.response==`object`&&`parameters`in e.response?e.response.parameters?.retry_after:`error`in e&&e.error&&typeof e.error==`object`&&`parameters`in e.error?e.error.parameters?.retry_after:void 0;return typeof t==`number`&&Number.isFinite(t)?t*1e3:void 0}function l(e){let i=t.es(r,{...e.configRetry,...e.retry});return(r,a)=>t.ts(r,{...i,label:a,shouldRetry:e=>e instanceof n.RateLimitError,retryAfterMs:e=>e instanceof n.RateLimitError?e.retryAfter*1e3:void 0,onRetry:e.verbose?e=>{let t=e.label??`request`,n=Math.max(1,e.maxAttempts-1);o.warn(`discord ${t} rate limited, retry ${e.attempt}/${n} in ${e.delayMs}ms`)}:void 0})}function u(e){let n=t.es(i,{...e.configRetry,...e.retry}),r=s(e);return(i,a)=>t.ts(i,{...n,label:a,shouldRetry:r,retryAfterMs:c,onRetry:e.verbose?e=>{let n=Math.max(1,e.maxAttempts-1);o.warn(`telegram send retry ${e.attempt}/${n} for ${e.label??a??`request`} in ${e.delayMs}ms: ${t.Ir(e.err)}`)}:void 0})}const d=new Map;function f(e,t){return`${e}:${t||`default`}`}function p(e,t){let n=f(e,t),r=d.get(n);if(r)return r;let i={inboundAt:null,outboundAt:null};return d.set(n,i),i}function m(e){let t=typeof e.at==`number`?e.at:Date.now(),n=e.accountId?.trim()||`default`,r=p(e.channel,n);e.direction===`inbound`&&(r.inboundAt=t),e.direction===`outbound`&&(r.outboundAt=t)}function h(e){let t=e.accountId?.trim()||`default`;return d.get(f(e.channel,t))??{inboundAt:null,outboundAt:null}}Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return u}}),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return m}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return l}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return h}});
@@ -1 +1 @@
1
- import{Xt as e,Zt as t,js as n}from"./config-LR8GH3Ws.js";import{a as r}from"./logger-BtrWb0dj.js";import{RateLimitError as i}from"@buape/carbon";const a={attempts:3,minDelayMs:500,maxDelayMs:3e4,jitter:.1},o={attempts:3,minDelayMs:400,maxDelayMs:3e4,jitter:.1},s=/429|timeout|connect|reset|closed|unavailable|temporarily/i,c=r(`retry-policy`);function l(e){return e.shouldRetry?e.strictShouldRetry?e.shouldRetry:t=>e.shouldRetry?.(t)||s.test(n(t)):e=>s.test(n(e))}function u(e){if(!e||typeof e!=`object`)return;let t=`parameters`in e&&e.parameters&&typeof e.parameters==`object`?e.parameters.retry_after:`response`in e&&e.response&&typeof e.response==`object`&&`parameters`in e.response?e.response.parameters?.retry_after:`error`in e&&e.error&&typeof e.error==`object`&&`parameters`in e.error?e.error.parameters?.retry_after:void 0;return typeof t==`number`&&Number.isFinite(t)?t*1e3:void 0}function d(n){let r=e(a,{...n.configRetry,...n.retry});return(e,a)=>t(e,{...r,label:a,shouldRetry:e=>e instanceof i,retryAfterMs:e=>e instanceof i?e.retryAfter*1e3:void 0,onRetry:n.verbose?e=>{let t=e.label??`request`,n=Math.max(1,e.maxAttempts-1);c.warn(`discord ${t} rate limited, retry ${e.attempt}/${n} in ${e.delayMs}ms`)}:void 0})}function f(r){let i=e(o,{...r.configRetry,...r.retry}),a=l(r);return(e,o)=>t(e,{...i,label:o,shouldRetry:a,retryAfterMs:u,onRetry:r.verbose?e=>{let t=Math.max(1,e.maxAttempts-1);c.warn(`telegram send retry ${e.attempt}/${t} for ${e.label??o??`request`} in ${e.delayMs}ms: ${n(e.err)}`)}:void 0})}const p=new Map;function m(e,t){return`${e}:${t||`default`}`}function h(e,t){let n=m(e,t),r=p.get(n);if(r)return r;let i={inboundAt:null,outboundAt:null};return p.set(n,i),i}function g(e){let t=typeof e.at==`number`?e.at:Date.now(),n=e.accountId?.trim()||`default`,r=h(e.channel,n);e.direction===`inbound`&&(r.inboundAt=t),e.direction===`outbound`&&(r.outboundAt=t)}function _(e){let t=e.accountId?.trim()||`default`;return p.get(m(e.channel,t))??{inboundAt:null,outboundAt:null}}export{f as i,g as n,d as r,_ as t};
1
+ import{Xt as e,Zt as t,js as n}from"./config-LR8GH3Ws.js";import{a as r}from"./logger-BtrWb0dj.js";import{RateLimitError as i}from"@buape/carbon";const a={attempts:3,minDelayMs:500,maxDelayMs:3e4,jitter:.1},o={attempts:3,minDelayMs:400,maxDelayMs:3e4,jitter:.1},s=/429|timeout|connect|reset|closed|unavailable|temporarily/i,c=r(`retry-policy`);function l(e){return e.shouldRetry?e.strictShouldRetry?e.shouldRetry:t=>e.shouldRetry?.(t)||s.test(n(t)):e=>s.test(n(e))}function u(e){if(!e||typeof e!=`object`)return;let t=`parameters`in e&&e.parameters&&typeof e.parameters==`object`?e.parameters.retry_after:`response`in e&&e.response&&typeof e.response==`object`&&`parameters`in e.response?e.response.parameters?.retry_after:`error`in e&&e.error&&typeof e.error==`object`&&`parameters`in e.error?e.error.parameters?.retry_after:void 0;return typeof t==`number`&&Number.isFinite(t)?t*1e3:void 0}function d(n){let r=e(a,{...n.configRetry,...n.retry});return(e,a)=>t(e,{...r,label:a,shouldRetry:e=>e instanceof i,retryAfterMs:e=>e instanceof i?e.retryAfter*1e3:void 0,onRetry:n.verbose?e=>{let t=e.label??`request`,n=Math.max(1,e.maxAttempts-1);c.warn(`discord ${t} rate limited, retry ${e.attempt}/${n} in ${e.delayMs}ms`)}:void 0})}function f(r){let i=e(o,{...r.configRetry,...r.retry}),a=l(r);return(e,o)=>t(e,{...i,label:o,shouldRetry:a,retryAfterMs:u,onRetry:r.verbose?e=>{let t=Math.max(1,e.maxAttempts-1);c.warn(`telegram send retry ${e.attempt}/${t} for ${e.label??o??`request`} in ${e.delayMs}ms: ${n(e.err)}`)}:void 0})}const p=new Map;function m(e,t){return`${e}:${t||`default`}`}function h(e,t){let n=m(e,t),r=p.get(n);if(r)return r;let i={inboundAt:null,outboundAt:null};return p.set(n,i),i}function g(e){let t=typeof e.at==`number`?e.at:Date.now(),n=e.accountId?.trim()||`default`,r=h(e.channel,n);e.direction===`inbound`&&(r.inboundAt=t),e.direction===`outbound`&&(r.outboundAt=t)}function _(e){let t=e.accountId?.trim()||`default`;return p.get(m(e.channel,t))??{inboundAt:null,outboundAt:null}}export{f as i,g as n,d as r,_ as t};
@@ -2,4 +2,4 @@ import{Dt as e,Et as t,Mt as n,Rt as r,kt as i,s as a}from"./paths-cBAF6Bj0.js";
2
2
  `).trim();if(o||=pt(r),!o){let e=r?Ke(r):void 0;return T(`Quoted message missing extractable body${e?` (type ${e})`:``}`),null}let s=n?.participant??void 0,c=s?O(s)??s:void 0,l=c??`unknown sender`;return{id:n?.stanzaId?String(n.stanzaId):void 0,body:o,sender:l,senderJid:s,senderE164:c}}function Ct(e){return M({providerConfigPresent:e.providerConfigPresent,groupPolicy:e.groupPolicy,defaultGroupPolicy:e.defaultGroupPolicy})}async function wt(e){let t=f(),n=y({cfg:t,accountId:e.accountId}),r=n.dmPolicy??`pairing`,i=n.allowFrom??[],a=await B({provider:`whatsapp`,accountId:n.accountId,dmPolicy:r}),o=i.length===0&&e.selfE164?[e.selfE164]:[],s=i.length>0?i:o,c=n.groupAllowFrom??(i.length>0?i:void 0),l=e.from===e.selfE164,u=n.selfChatMode??A(e.selfE164,i),d=typeof e.pairingGraceMs==`number`&&e.pairingGraceMs>0?e.pairingGraceMs:3e4,p=typeof e.connectedAtMs==`number`&&typeof e.messageTimestampMs==`number`&&e.messageTimestampMs<e.connectedAtMs-d,m=ee(t),{groupPolicy:h,providerMissingFallbackApplied:g}=Ct({providerConfigPresent:t.channels?.whatsapp!==void 0,groupPolicy:n.groupPolicy,defaultGroupPolicy:m});N({providerMissingFallbackApplied:g,providerKey:`whatsapp`,accountId:n.accountId,log:e=>T(e)});let _=D(e.from),v=typeof e.senderE164==`string`?D(e.senderE164):null,b=Se({isGroup:e.group,dmPolicy:r,groupPolicy:h,allowFrom:e.group?i:s,groupAllowFrom:c,storeAllowFrom:a,isSenderAllowed:t=>{if(t.includes(`*`))return!0;let n=new Set(t.map(e=>D(String(e))).filter(e=>!!e));return!e.group&&l?!0:e.group?!!(v&&n.has(v)):n.has(_)}});if(e.group&&b.decision!==`allow`)return b.reason===`groupPolicy=disabled`?T(`Blocked group message (groupPolicy: disabled)`):b.reason===`groupPolicy=allowlist (empty allowlist)`?T(`Blocked group message (groupPolicy: allowlist, no groupAllowFrom)`):T(`Blocked group message from ${e.senderE164??`unknown sender`} (groupPolicy: allowlist)`),{allowed:!1,shouldMarkRead:!1,isSelfChat:u,resolvedAccountId:n.accountId};if(!e.group){if(e.isFromMe&&!l)return T(`Skipping outbound DM (fromMe); no pairing reply needed.`),{allowed:!1,shouldMarkRead:!1,isSelfChat:u,resolvedAccountId:n.accountId};if(b.decision===`block`&&b.reason===`dmPolicy=disabled`)return T(`Blocked dm (dmPolicy: disabled)`),{allowed:!1,shouldMarkRead:!1,isSelfChat:u,resolvedAccountId:n.accountId};if(b.decision===`pairing`&&!l){let t=e.from;return p?T(`Skipping pairing reply for historical DM from ${t}.`):await G({channel:`whatsapp`,senderId:t,senderIdLine:`Your WhatsApp phone number: ${t}`,meta:{name:(e.pushName??``).trim()||void 0},upsertPairingRequest:async({id:e,meta:t})=>await Ee({channel:`whatsapp`,id:e,accountId:n.accountId,meta:t}),onCreated:()=>{T(`whatsapp pairing request sender=${t} name=${e.pushName??`unknown`}`)},sendPairingReply:async t=>{await e.sock.sendMessage(e.remoteJid,{text:t})},onReplyError:e=>{T(`whatsapp pairing reply failed for ${t}: ${String(e)}`)}}),{allowed:!1,shouldMarkRead:!1,isSelfChat:u,resolvedAccountId:n.accountId}}if(b.decision!==`allow`)return T(`Blocked unauthorized sender ${e.from} (dmPolicy=${r})`),{allowed:!1,shouldMarkRead:!1,isSelfChat:u,resolvedAccountId:n.accountId}}return{allowed:!0,shouldMarkRead:!0,isSelfChat:u,resolvedAccountId:n.accountId}}function Tt(e){return Je(e)}function Et(e){let t=e.imageMessage?.mimetype??e.videoMessage?.mimetype??e.documentMessage?.mimetype??e.audioMessage?.mimetype??e.stickerMessage?.mimetype??void 0;if(t)return t;if(e.audioMessage)return`audio/ogg; codecs=opus`;if(e.imageMessage)return`image/jpeg`;if(e.videoMessage)return`video/mp4`;if(e.stickerMessage)return`image/webp`}async function Dt(e,t){let n=Tt(e.message);if(!n)return;let r=Et(n),i=n.documentMessage?.fileName??void 0;if(!(!n.imageMessage&&!n.videoMessage&&!n.documentMessage&&!n.audioMessage&&!n.stickerMessage))try{return{buffer:await We(e,`buffer`,{},{reuploadRequest:t.updateMediaMessage,logger:t.logger}),mimetype:r,fileName:i}}catch(e){T(`downloadMediaMessage failed: ${String(e)}`);return}}function Ot(e){Pe({channel:`whatsapp`,accountId:e,direction:`outbound`})}function kt(e){return typeof e==`object`&&e&&`key`in e?String(e.key?.id??`unknown`):`unknown`}function At(e){return{sendMessage:async(t,n,r,i,a)=>{let o=E(t),s;if(r&&i)if(i.startsWith(`image/`))s={image:r,caption:n||void 0,mimetype:i};else if(i.startsWith(`audio/`))s={audio:r,ptt:!0,mimetype:i};else if(i.startsWith(`video/`)){let e=a?.gifPlayback;s={video:r,caption:n||void 0,mimetype:i,...e?{gifPlayback:!0}:{}}}else s={document:r,fileName:a?.fileName?.trim()||`file`,caption:n||void 0,mimetype:i};else s={text:n};let c=await e.sock.sendMessage(o,s);return Ot(a?.accountId??e.defaultAccountId),{messageId:kt(c)}},sendPoll:async(t,n)=>{let r=E(t),i=await e.sock.sendMessage(r,{poll:{name:n.question,values:n.options,selectableCount:n.maxSelections??1}});return Ot(e.defaultAccountId),{messageId:kt(i)}},sendReaction:async(t,n,r,i,a)=>{let o=E(t);await e.sock.sendMessage(o,{react:{text:r,key:{remoteJid:o,id:n,fromMe:i,participant:a?E(a):void 0}}})},sendComposingTo:async t=>{let n=E(t);await e.sock.sendPresenceUpdate(`composing`,n)}}}async function jt(e){let t=S({module:`web-inbound`}),n=w(`gateway/channels/whatsapp`).child(`inbound`),r=await Ve(!1,e.verbose,{authDir:e.authDir});await ze(r);let i=Date.now(),a=null,o=new Promise(e=>{a=e}),s=e=>{if(!a)return;let t=a;a=null,t(e)};try{await r.sendPresenceUpdate(`available`),b()&&T(`Sent global 'available' presence on connect`)}catch(e){T(`Failed to send 'available' presence on connect: ${String(e)}`)}let c=r.user?.id,l=c?O(c):null,u=ne({debounceMs:e.debounceMs??0,buildKey:e=>{let t=e.chatType===`group`?e.senderJid??e.senderE164??e.senderName??e.from:e.from;if(!t)return null;let n=e.chatType===`group`?e.chatId:e.from;return`${e.accountId}:${n}:${t}`},shouldDebounce:e.shouldDebounce,onFlush:async t=>{let n=t.at(-1);if(!n)return;if(t.length===1){await e.onMessage(n);return}let r=new Set;for(let e of t)for(let t of e.mentionedJids??[])r.add(t);let i=t.map(e=>e.body).filter(Boolean).join(`
3
3
  `),a={...n,body:i,mentionedJids:r.size>0?Array.from(r):void 0};await e.onMessage(a)},onError:e=>{t.error({error:String(e)},`failed handling inbound web message`),n.error(`Failed handling inbound web message: ${String(e)}`)}}),d=new Map,f=300*1e3,p=r.signalRepository?.lidMapping,m=async t=>j(t,{authDir:e.authDir,lidLookup:p}),g=async e=>{let t=d.get(e);if(t&&t.expires>Date.now())return t;try{let t=await r.groupMetadata(e),n=(await Promise.all(t.participants?.map(async e=>await m(e.id)??e.id)??[])).filter(Boolean)??[],i={subject:t.subject,participants:n,expires:Date.now()+f};return d.set(e,i),i}catch(t){return T(`Failed to fetch group metadata for ${e}: ${String(t)}`),{expires:Date.now()+f}}},_=async t=>{let n=t.key?.id??void 0,a=t.key?.remoteJid;if(!a||a.endsWith(`@status`)||a.endsWith(`@broadcast`))return null;let o=qe(a)===!0;if(n&&rt(`${e.accountId}:${a}:${n}`))return null;let s=t.key?.participant??void 0,c=o?a:await m(a);if(!c)return null;let u=o?s?await m(s):null:c,d,f;if(o){let e=await g(a);d=e.subject,f=e.participants}let p=t.messageTimestamp?Number(t.messageTimestamp)*1e3:void 0,h=await wt({accountId:e.accountId,from:c,selfE164:l,senderE164:u,group:o,pushName:t.pushName??void 0,isFromMe:!!t.key?.fromMe,messageTimestampMs:p,connectedAtMs:i,sock:{sendMessage:(e,t)=>r.sendMessage(e,t)},remoteJid:a});return h.allowed?{id:n,remoteJid:a,group:o,participantJid:s,from:c,senderE164:u,groupSubject:d,groupParticipants:f,messageTimestampMs:p,access:h}:null},v=async t=>{let{id:n,remoteJid:i,participantJid:a,access:o}=t;if(n&&!o.isSelfChat&&e.sendReadReceipts!==!1)try{await r.readMessages([{remoteJid:i,id:n,participant:a,fromMe:!1}]),b()&&T(`Marked message ${n} as read for ${i}${a?` (participant ${a})`:``}`)}catch(e){T(`Failed to mark message ${n} read: ${String(e)}`)}else n&&o.isSelfChat&&b()&&T(`Self-chat mode: skipping read receipt for ${n}`)},y=async t=>{let n=xt(t.message??void 0),i=n?Ce(n):void 0,a=ft(t.message??void 0);if(i&&(a=[a,i].filter(Boolean).join(`
4
4
  `).trim()),!a&&(a=pt(t.message??void 0),!a))return null;let o=St(t.message),s,c,l;try{let n=await Dt(t,r);if(n){let t=(typeof e.mediaMaxMb==`number`&&e.mediaMaxMb>0?e.mediaMaxMb:50)*1024*1024;s=(await h(n.buffer,n.mimetype,`inbound`,t,n.fileName)).path,c=n.mimetype,l=n.fileName}}catch(e){T(`Inbound media download failed: ${String(e)}`)}return{body:a,location:n??void 0,replyContext:o,mediaPath:s,mediaType:c,mediaFileName:l}},x=async(e,i,a)=>{let o=i.remoteJid,s=async()=>{try{await r.sendPresenceUpdate(`composing`,o)}catch(e){T(`Presence update failed: ${String(e)}`)}},d=async e=>{await r.sendMessage(o,{text:e})},f=async e=>{await r.sendMessage(o,e)},p=i.messageTimestampMs,m=dt(e.message),h=e.pushName??void 0;t.info({from:i.from,to:l??`me`,body:a.body,mediaPath:a.mediaPath,mediaType:a.mediaType,mediaFileName:a.mediaFileName,timestamp:p},`inbound message`);let g={id:i.id,from:i.from,conversationId:i.from,to:l??`me`,accountId:i.access.resolvedAccountId,body:a.body,pushName:h,timestamp:p,chatType:i.group?`group`:`direct`,chatId:i.remoteJid,senderJid:i.participantJid,senderE164:i.senderE164??void 0,senderName:h,replyToId:a.replyContext?.id,replyToBody:a.replyContext?.body,replyToSender:a.replyContext?.sender,replyToSenderJid:a.replyContext?.senderJid,replyToSenderE164:a.replyContext?.senderE164,groupSubject:i.groupSubject,groupParticipants:i.groupParticipants,mentionedJids:m??void 0,selfJid:c,selfE164:l,fromMe:!!e.key?.fromMe,location:a.location??void 0,sendComposing:s,reply:d,sendMedia:f,mediaPath:a.mediaPath,mediaType:a.mediaType,mediaFileName:a.mediaFileName};try{Promise.resolve(u.enqueue(g)).catch(e=>{t.error({error:String(e)},`failed handling inbound web message`),n.error(`Failed handling inbound web message: ${String(e)}`)})}catch(e){t.error({error:String(e)},`failed handling inbound web message`),n.error(`Failed handling inbound web message: ${String(e)}`)}},C=async t=>{if(!(t.type!==`notify`&&t.type!==`append`))for(let n of t.messages??[]){Pe({channel:`whatsapp`,accountId:e.accountId,direction:`inbound`});let r=await _(n);if(!r||(await v(r),t.type===`append`))continue;let i=await y(n);i&&await x(n,r,i)}};r.ev.on(`messages.upsert`,C);let E=e=>{try{if(e.connection===`close`){let t=Be(e.lastDisconnect?.error);s({status:t,isLoggedOut:t===Ue.loggedOut,error:e.lastDisconnect?.error})}}catch(e){t.error({error:String(e)},`connection.update handler error`),s({status:void 0,isLoggedOut:!1,error:e})}};return r.ev.on(`connection.update`,E),{close:async()=>{try{let e=r.ev,t=C,n=E;typeof e.off==`function`?(e.off(`messages.upsert`,t),e.off(`connection.update`,n)):typeof e.removeListener==`function`&&(e.removeListener(`messages.upsert`,t),e.removeListener(`connection.update`,n)),r.ws?.close()}catch(e){T(`Socket close failed: ${String(e)}`)}},onClose:o,signalClose:e=>{s(e??{status:void 0,isLoggedOut:!1,error:`closed`})},...At({sock:{sendMessage:(e,t)=>r.sendMessage(e,t),sendPresenceUpdate:(e,t)=>r.sendPresenceUpdate(e,t)},defaultAccountId:e.accountId})}}function Mt(e,t){return{mentionRegexes:I(e,t),allowFrom:e.channels?.whatsapp?.allowFrom}}function Nt(e,t){let n=t?{authDir:t}:void 0;return{normalizedMentions:e.mentionedJids?.length?e.mentionedJids.map(e=>O(e,n)??e).filter(Boolean):[],selfE164:e.selfE164??(e.selfJid?O(e.selfJid,n):null),selfJid:e.selfJid?e.selfJid.replace(/:\\d+/,``):null}}function Pt(e,t,n){let r=e=>re(e),i=A(n.selfE164,t.allowFrom);if((e.mentionedJids?.length??0)>0&&!i)return!!(n.selfE164&&n.normalizedMentions.includes(n.selfE164)||n.selfJid&&n.normalizedMentions.includes(n.selfJid));let a=r(e.body);if(t.mentionRegexes.some(e=>e.test(a)))return!0;if(n.selfE164){let t=n.selfE164.replace(/\D/g,``);if(t){if(a.replace(/[^\d]/g,``).includes(t))return!0;let n=e.body.replace(/[\s-]/g,``);if(RegExp(`\\+?${t}`,`i`).test(n))return!0}}return!1}function Ft(e,t,n){let r=Nt(e,n);return{wasMentioned:Pt(e,t,r),details:{from:e.from,body:e.body,bodyClean:re(e.body),mentionedJids:e.mentionedJids??null,normalizedMentionedJids:r.normalizedMentions.length?r.normalizedMentions:null,selfJid:e.selfJid??null,selfJidBare:r.selfJid,selfE164:e.selfE164??null,resolvedSelfE164:r.selfE164}}}function It(e,t){let n=e.allowFrom;return(Array.isArray(n)&&n.length>0?n:t?[t]:[]).filter(e=>!!(e&&e!==`*`)).map(e=>D(e)).filter(e=>!!e)}function Lt(e){let t=new Set,n=Math.max(1,e.maxItems??100),r=e=>`combined:${e.sessionKey}:${e.combinedBody}`,i=()=>{for(;t.size>n;){let e=t.values().next().value;if(!e)break;t.delete(e)}};return{rememberText:(n,a)=>{n&&(t.add(n),a.combinedBody&&a.combinedBodySessionKey&&t.add(r({sessionKey:a.combinedBodySessionKey,combinedBody:a.combinedBody})),a.logVerboseMessage&&e.logVerbose?.(`Added to echo detection set (size now: ${t.size}): ${n.substring(0,50)}...`),i())},has:e=>t.has(e),forget:e=>{t.delete(e)},buildCombinedKey:r}}function Rt(n){let r=de({agentId:n.agentId,channel:`whatsapp`,accountId:n.route.accountId,peer:{kind:n.msg.chatType===`group`?`group`:`direct`,id:n.peerId},dmScope:n.cfg.session?.dmScope,identityLinks:n.cfg.session?.identityLinks}),i=e({agentId:n.agentId,mainKey:t});return{sessionKey:r,mainSessionKey:i,lastRoutePolicy:P({sessionKey:r,mainSessionKey:i})}}async function zt(e){let t=e.cfg.broadcast?.[e.peerId];if(!t||!Array.isArray(t)||t.length===0)return!1;let r=e.cfg.broadcast?.strategy||`parallel`;X.info(`Broadcasting message to ${t.length} agents (${r})`);let i=e.cfg.agents?.list?.map(e=>n(e.id)),a=(i?.length??0)>0,o=e.msg.chatType===`group`?e.groupHistories.get(e.groupHistoryKey)??[]:void 0,s=async t=>{let r=n(t);if(a&&!i?.includes(r))return X.warn(`Broadcast agent ${t} not found in agents.list; skipping`),!1;let s=Rt({cfg:e.cfg,msg:e.msg,route:e.route,peerId:e.peerId,agentId:r}),c={...e.route,agentId:r,...s};try{return await e.processMessage(e.msg,c,e.groupHistoryKey,{groupHistory:o,suppressGroupHistoryClear:!0})}catch(e){return X.error(`Broadcast agent ${t} failed: ${q(e)}`),!1}};if(r===`sequential`)for(let e of t)await s(e);else await Promise.allSettled(t.map(s));return e.msg.chatType===`group`&&e.groupHistories.set(e.groupHistoryKey,[]),!0}function Bt(e,t,n){let r=e;for(let e of t)r=r.replace(e,` `);if(n){let e=n.replace(/\D/g,``);if(e){let t=RegExp(`\\+?${e}`,`g`);r=r.replace(t,` `)}}return r.replace(/\s+/g,` `).trim()}function Vt(e,t){let n=v({From:t,ChatType:`group`,Provider:`whatsapp`})?.id,r=e.channels?.whatsapp,i=!!(r?.groupAllowFrom?.length||r?.allowFrom?.length);return c({cfg:e,channel:`whatsapp`,groupId:n??t,hasGroupAllowFrom:i})}function Ht(e,t){let n=v({From:t,ChatType:`group`,Provider:`whatsapp`})?.id;return d({cfg:e,channel:`whatsapp`,groupId:n??t})}function Ut(e){let t=p(a(e.cfg.session?.store,{agentId:e.agentId}))[e.sessionKey],n=Ht(e.cfg,e.conversationId)?`mention`:`always`;return V(t?.groupActivation)??n}function Wt(e,t,n){for(let r of e){let e=D(r)??r;!e||t.has(e)||(t.add(e),n.push(e))}}function Gt(e,t,n,r){if(!n||!r)return;let i=D(n)??n;if(!i)return;let a=e.get(t);a||(a=new Map,e.set(t,a)),a.set(i,r)}function Kt(e){let{participants:t,roster:n,fallbackE164:r}=e,i=new Set,a=[];if(t?.length&&Wt(t,i,a),n&&Wt(n.keys(),i,a),a.length===0&&r){let e=D(r)??r;e&&a.push(e)}if(a.length!==0)return a.map(e=>{let t=n?.get(e);return t?`${t} (${e})`:e}).join(`, `)}function qt(e,t){let n=D(t.senderE164??``);return n?It(e,t.selfE164??void 0).includes(n):!1}function Jt(e){let t=e.msg.senderName&&e.msg.senderE164?`${e.msg.senderName} (${e.msg.senderE164})`:e.msg.senderName??e.msg.senderE164??`Unknown`;K({historyMap:e.groupHistories,historyKey:e.groupHistoryKey,limit:e.groupHistoryLimit,entry:{sender:t,body:e.msg.body,timestamp:e.msg.timestamp,id:e.msg.id,senderJid:e.msg.senderJid}})}function Yt(e,t){return e.logVerbose(t),Jt({msg:e.msg,groupHistories:e.groupHistories,groupHistoryKey:e.groupHistoryKey,groupHistoryLimit:e.groupHistoryLimit}),{shouldProcess:!1}}function Xt(e){let t=Vt(e.cfg,e.conversationId);if(t.allowlistEnabled&&!t.allowed)return e.logVerbose(`Skipping group message ${e.conversationId} (not in allowlist)`),{shouldProcess:!1};Gt(e.groupMemberNames,e.groupHistoryKey,e.msg.senderE164,e.msg.senderName);let n=Mt(e.cfg,e.agentId),r=Bt(e.msg.body,n.mentionRegexes,e.msg.selfE164),i=me(r),a=qt(e.baseMentionConfig,e.msg),o=a&&oe(r,e.cfg);if(i.hasCommand&&!a)return Yt(e,`Ignoring /activation from non-owner in group ${e.conversationId}`);let s=Ft(e.msg,n,e.authDir);e.replyLogger.debug({conversationId:e.conversationId,wasMentioned:s.wasMentioned,...s.details},`group mention debug`);let c=s.wasMentioned,l=Ut({cfg:e.cfg,agentId:e.agentId,sessionKey:e.sessionKey,conversationId:e.conversationId})!==`always`,u=e.msg.selfJid?.replace(/:\\d+/,``),d=e.msg.replyToSenderJid?.replace(/:\\d+/,``),f=e.msg.selfE164?D(e.msg.selfE164):null,p=e.msg.replyToSenderE164?D(e.msg.replyToSenderE164):null,m=he({requireMention:l,canDetectMention:!0,wasMentioned:c,implicitMention:!!(u&&d&&u===d||f&&p&&f===p),shouldBypassMention:o});return e.msg.wasMentioned=m.effectiveWasMentioned,!o&&l&&m.shouldSkip?Yt(e,`Group message stored for context (no mention detected) in ${e.conversationId}: ${e.msg.body}`):{shouldProcess:!0}}function Zt(e,t){e.add(t),t.finally(()=>{e.delete(t)})}function Qt(e){let t=a(e.cfg.session?.store,{agentId:e.storeAgentId}),n=m({storePath:t,sessionKey:e.sessionKey,deliveryContext:{channel:e.channel,to:e.to,accountId:e.accountId},ctx:e.ctx}).catch(n=>{e.warn({error:q(n),storePath:t,sessionKey:e.sessionKey,to:e.to},`failed updating last route`)});Zt(e.backgroundTasks,n)}function $t(e){return e.chatType===`group`?e.conversationId??e.from:e.senderE164?D(e.senderE164)??e.senderE164:e.from.includes(`@`)?O(e.from)??e.from:D(e.from)??e.from}function $(e,t=400){return!e||e.length<=t?e:`${e.slice(0,t)}… (truncated ${e.length-t} chars)`}function en(e){let t=(e instanceof Error?`${e.message}\n${e.stack??``}`:(e=>{if(e==null)return``;if(typeof e==`string`)return e;if(e instanceof Error)return`${e.message}\n${e.stack??``}`;if(typeof e==`object`)try{return JSON.stringify(e)}catch{return Object.prototype.toString.call(e)}return typeof e==`number`||typeof e==`boolean`||typeof e==`bigint`?String(e):typeof e==`symbol`?e.description??e.toString():typeof e==`function`?e.name?`[function ${e.name}]`:`[function]`:Object.prototype.toString.call(e)})(e)).toLowerCase();return t.includes(`unsupported state or unable to authenticate data`)||t.includes(`bad mac`)?t.includes(`@whiskeysockets/baileys`)||t.includes(`baileys`)||t.includes(`noise-handler`)||t.includes(`aesdecryptgcm`):!1}function tn(e){if(e.isReasoning===!0)return!0;let t=e.text;return typeof t==`string`?t.trimStart().toLowerCase().startsWith(`reasoning:`):!1}async function nn(e){let{replyResult:t,msg:n,maxMediaBytes:r,textLimit:i,replyLogger:a,connectionId:o,skipLog:s}=e,c=Date.now();if(tn(t)){Z.debug(`Suppressed reasoning payload to ${n.from}`);return}let l=e.tableMode??`code`,u=e.chunkMode??`length`,d=Ae(Le(Fe(t.text||``,l)),i,u),f=t.mediaUrls?.length?t.mediaUrls:t.mediaUrl?[t.mediaUrl]:[],p=async(e,t,r=3)=>{let i;for(let a=1;a<=r;a++)try{return await e()}catch(e){i=e;let o=q(e),s=a===r;if(!/closed|reset|timed\s*out|disconnect/i.test(o)||s)throw e;let c=500*a;T(`Retrying ${t} to ${n.from} after failure (${a}/${r-1}) in ${c}ms: ${o}`),await x(c)}throw i};if(f.length===0&&d.length){let e=d.length;for(let[t,r]of d.entries()){let i=Date.now();if(await p(()=>n.reply(r),`text`),!s){let r=Date.now()-i;Z.debug(`Sent chunk ${t+1}/${e} to ${n.from} (${r.toFixed(0)}ms)`)}}a.info({correlationId:n.id??J(),connectionId:o??null,to:n.from,from:n.to,text:$(t.text,240),mediaUrl:null,mediaSizeBytes:null,mediaKind:null,durationMs:Date.now()-c},`auto-reply sent (text)`);return}let m=[...d];for(let[t,i]of f.entries()){let s=t===0&&m.shift()||void 0;try{let t=await ke(i,{maxBytes:r,localRoots:e.mediaLocalRoots});if(b()&&(T(`Web auto-reply media size: ${(t.buffer.length/(1024*1024)).toFixed(2)}MB`),T(`Web auto-reply media source: ${i} (kind ${t.kind})`)),t.kind===`image`)await p(()=>n.sendMedia({image:t.buffer,caption:s,mimetype:t.contentType}),`media:image`);else if(t.kind===`audio`)await p(()=>n.sendMedia({audio:t.buffer,ptt:!0,mimetype:t.contentType,caption:s}),`media:audio`);else if(t.kind===`video`)await p(()=>n.sendMedia({video:t.buffer,caption:s,mimetype:t.contentType}),`media:video`);else{let e=t.fileName??i.split(`/`).pop()??`file`,r=t.contentType??`application/octet-stream`;await p(()=>n.sendMedia({document:t.buffer,fileName:e,caption:s,mimetype:r}),`media:document`)}Z.info(`Sent media reply to ${n.from} (${(t.buffer.length/(1024*1024)).toFixed(2)}MB)`),a.info({correlationId:n.id??J(),connectionId:o??null,to:n.from,from:n.to,text:s??null,mediaUrl:i,mediaSizeBytes:t.buffer.length,mediaKind:t.kind,durationMs:Date.now()-c},`auto-reply sent (media)`)}catch(e){if(Z.error(`Failed sending web media to ${n.from}: ${q(e)}`),a.warn({err:e,mediaUrl:i},`failed to send web media reply`),t===0){let t=e instanceof Error?`⚠️ Media failed: ${e.message}`:`⚠️ Media failed.`,r=[m.shift()??s??``,t].filter(Boolean).join(`
5
- `);r&&(Z.warn(`Media skipped; sent text-only to ${n.from}`),await n.reply(r))}}}for(let e of m)await n.reply(e)}function rn(e){if(!e.msg.id)return;let t=e.cfg.channels?.whatsapp?.ackReaction,n=(t?.emoji??``).trim(),r=t?.direct??!0,i=t?.group??`mentions`,a=e.msg.conversationId??e.msg.from,o=e.msg.chatType===`group`?Ut({cfg:e.cfg,agentId:e.agentId,sessionKey:e.sessionKey,conversationId:a}):null;F({emoji:n,isDirect:e.msg.chatType===`direct`,isGroup:e.msg.chatType===`group`,directEnabled:r,groupMode:i,wasMentioned:e.msg.wasMentioned===!0,groupActivated:o===`always`})&&(e.info({chatId:e.msg.chatId,messageId:e.msg.id,emoji:n},`sending ack reaction`),Re(e.msg.chatId,e.msg.id,n,{verbose:e.verbose,fromMe:!1,participant:e.msg.senderJid,accountId:e.accountId}).catch(t=>{e.warn({error:q(t),chatId:e.msg.chatId,messageId:e.msg.id},`failed to send ack reaction`),T(`WhatsApp ack reaction failed for chat ${e.msg.chatId}: ${q(t)}`)}))}function an(e){return e.replyToBody?`[Replying to ${e.replyToSender??`unknown sender`}${e.replyToId?` id:${e.replyToId}`:``}]\n${e.replyToBody}\n[/Replying]`:null}function on(e){let{cfg:t,msg:n,agentId:r,previousTimestamp:i,envelope:a}=e,o=ge(t,r,{configured:t.channels?.whatsapp?.messagePrefix,hasAllowFrom:(t.channels?.whatsapp?.allowFrom?.length??0)>0}),s=o?`${o} `:``,c=an(n),l=`${s}${n.body}${c?`\n\n${c}`:``}`;return z({channel:`WhatsApp`,from:n.chatType===`group`?n.from:n.from?.replace(/^whatsapp:/,``),timestamp:n.timestamp,body:l,chatType:n.chatType,sender:{name:n.senderName,e164:n.senderE164,id:n.senderJid},previousTimestamp:i,envelope:a,fromMe:n.fromMe})}async function sn(e){let t=e.cfg.commands?.useAccessGroups!==!1;if(!t)return!0;let n=e.msg.chatType===`group`,r=D(n?e.msg.senderE164??``:e.msg.senderE164??e.msg.from??``);if(!r)return!1;let i=y({cfg:e.cfg,accountId:e.msg.accountId}),a=i.dmPolicy??`pairing`,o=i.groupPolicy??`allowlist`,s=i.allowFrom??[],c=i.groupAllowFrom??(s.length>0?s:void 0),l=n?[]:await B({provider:`whatsapp`,accountId:e.msg.accountId,dmPolicy:a});return ye({isGroup:n,dmPolicy:a,groupPolicy:o,allowFrom:s.length>0?s:e.msg.selfE164?[e.msg.selfE164]:[],groupAllowFrom:c,storeAllowFrom:l,isSenderAllowed:e=>e.includes(`*`)?!0:e.map(e=>D(String(e))).filter(e=>!!e).includes(r),command:{useAccessGroups:t,allowTextCommands:!0,hasControlCommand:!0}}).commandAuthorized}function cn(e){let t=y({cfg:e.cfg,accountId:e.msg.accountId});return H({dmScope:e.cfg.session?.dmScope,allowFrom:t.allowFrom,normalizeEntry:e=>D(e)})}async function ln(e){let t=e.msg.conversationId??e.msg.from,{storePath:n,envelopeOptions:r,previousTimestamp:i}=U({cfg:e.cfg,agentId:e.route.agentId,sessionKey:e.route.sessionKey}),a=on({cfg:e.cfg,msg:e.msg,agentId:e.route.agentId,previousTimestamp:i,envelope:r}),o=!1;if(e.msg.chatType===`group`){let n=e.groupHistory??e.groupHistories.get(e.groupHistoryKey)??[];n.length>0&&(a=le({entries:n.map(e=>({sender:e.sender,body:e.body,timestamp:e.timestamp})),currentMessage:a,excludeLast:!1,formatEntry:e=>z({channel:`WhatsApp`,from:t,timestamp:e.timestamp,body:e.body,chatType:`group`,senderLabel:e.sender,envelope:r})})),o=!(e.suppressGroupHistoryClear??!1)}let s=e.buildCombinedEchoKey({sessionKey:e.route.sessionKey,combinedBody:a});if(e.echoHas(s))return T(`Skipping auto-reply: detected echo for combined message`),e.echoForget(s),!1;rn({cfg:e.cfg,msg:e.msg,agentId:e.route.agentId,sessionKey:e.route.sessionKey,conversationId:t,verbose:e.verbose,accountId:e.route.accountId,info:e.replyLogger.info.bind(e.replyLogger),warn:e.replyLogger.warn.bind(e.replyLogger)});let c=e.msg.id??J();e.replyLogger.info({connectionId:e.connectionId,correlationId:c,from:e.msg.chatType===`group`?t:e.msg.from,to:e.msg.to,body:$(a,240),mediaType:e.msg.mediaType??null,mediaPath:e.msg.mediaPath??null},`inbound web message`);let l=e.msg.chatType===`group`?t:e.msg.from,u=e.msg.mediaType?`, ${e.msg.mediaType}`:``;X.info(`Inbound message ${l} -> ${e.msg.to} (${e.msg.chatType}${u}, ${a.length} chars)`),b()&&X.debug(`Inbound body: ${$(a,400)}`);let d=e.msg.chatType===`group`?void 0:e.msg.senderE164?D(e.msg.senderE164):e.msg.from.includes(`@`)?O(e.msg.from):D(e.msg.from),f=e.maxMediaTextChunkLimit??je(e.cfg,`whatsapp`),p=Me(e.cfg,`whatsapp`,e.route.accountId),m=Ne({cfg:e.cfg,channel:`whatsapp`,accountId:e.route.accountId}),h=Oe(e.cfg,e.route.agentId),_=!1,v=!1,y=se(e.msg.body,e.cfg)?await sn({cfg:e.cfg,msg:e.msg}):void 0,x=e.cfg.messages?.responsePrefix,{onModelSelected:S,...C}=pe({cfg:e.cfg,agentId:e.route.agentId,channel:`whatsapp`,accountId:e.route.accountId}),w=e.msg.chatType!==`group`&&!!e.msg.selfE164&&D(e.msg.from)===D(e.msg.selfE164??``),E=C.responsePrefix??(x===void 0&&w?ie(e.cfg,e.route.agentId):void 0),k=e.msg.chatType===`group`?(e.groupHistory??e.groupHistories.get(e.groupHistoryKey)??[]).map(e=>({sender:e.sender,body:e.body,timestamp:e.timestamp})):void 0,A=R({Body:a,BodyForAgent:e.msg.body,InboundHistory:k,RawBody:e.msg.body,CommandBody:e.msg.body,From:e.msg.from,To:e.msg.to,SessionKey:e.route.sessionKey,AccountId:e.route.accountId,MessageSid:e.msg.id,ReplyToId:e.msg.replyToId,ReplyToBody:e.msg.replyToBody,ReplyToSender:e.msg.replyToSender,MediaPath:e.msg.mediaPath,MediaUrl:e.msg.mediaUrl,MediaType:e.msg.mediaType,ChatType:e.msg.chatType,ConversationLabel:e.msg.chatType===`group`?t:e.msg.from,GroupSubject:e.msg.groupSubject,GroupMembers:Kt({participants:e.msg.groupParticipants,roster:e.groupMemberNames.get(e.groupHistoryKey),fallbackE164:e.msg.senderE164}),SenderName:e.msg.senderName,SenderId:e.msg.senderJid?.trim()||e.msg.senderE164,SenderE164:e.msg.senderE164,CommandAuthorized:y,WasMentioned:e.msg.wasMentioned,...e.msg.location?we(e.msg.location):{},Provider:`whatsapp`,Surface:`whatsapp`,OriginatingChannel:`whatsapp`,OriginatingTo:e.msg.from}),j=cn({cfg:e.cfg,msg:e.msg}),ee=!j||j===d,M=ae({route:e.route,sessionKey:e.route.sessionKey});d&&M===e.route.mainSessionKey&&ee?Qt({cfg:e.cfg,backgroundTasks:e.backgroundTasks,storeAgentId:e.route.agentId,sessionKey:e.route.mainSessionKey,channel:`whatsapp`,to:d,accountId:e.route.accountId,ctx:A,warn:e.replyLogger.warn.bind(e.replyLogger)}):d&&M===e.route.mainSessionKey&&j&&T(`Skipping main-session last route update for ${d} (pinned owner ${j})`);let N=g({storePath:n,sessionKey:e.route.sessionKey,ctx:A}).catch(t=>{e.replyLogger.warn({error:q(t),storePath:n,sessionKey:e.route.sessionKey},`failed updating session meta`)});Zt(e.backgroundTasks,N);let{queuedFinal:P}=await be({ctx:A,cfg:e.cfg,replyResolver:e.replyResolver,dispatcherOptions:{...C,responsePrefix:E,onHeartbeatStrip:()=>{_||(_=!0,T(`Stripped stray HEARTBEAT_OK token from web reply`))},deliver:async(n,r)=>{if(r.kind!==`final`)return;await nn({replyResult:n,msg:e.msg,mediaLocalRoots:h,maxMediaBytes:e.maxMediaBytes,textLimit:f,chunkMode:p,replyLogger:e.replyLogger,connectionId:e.connectionId,skipLog:!1,tableMode:m}),v=!0;let i=n.text?!0:void 0;e.rememberSentText(n.text,{combinedBody:a,combinedBodySessionKey:e.route.sessionKey,logVerboseMessage:i});let o=e.msg.chatType===`group`?t:e.msg.from??`unknown`,s=!!(n.mediaUrl||n.mediaUrls?.length);if(Z.info(`Auto-replied to ${o}${s?` (media)`:``}`),b()){let e=n.text==null?`<media>`:$(n.text,400);Z.debug(`Reply body: ${e}${s?` (media)`:``}`)}},onError:(n,r)=>{let i=r.kind===`tool`?`tool update`:r.kind===`block`?`block update`:`auto-reply`;Z.error(`Failed sending web ${i} to ${e.msg.from??t}: ${q(n)}`)},onReplyStart:e.msg.sendComposing},replyOptions:{disableBlockStreaming:!0,onModelSelected:S}});return P?(o&&e.groupHistories.set(e.groupHistoryKey,[]),v):(o&&e.groupHistories.set(e.groupHistoryKey,[]),T(`Skipping auto-reply: silent token or no text/media returned from resolver`),!1)}function un(e){let t=async(t,n,r,i)=>ln({cfg:e.cfg,msg:t,route:n,groupHistoryKey:r,groupHistories:e.groupHistories,groupMemberNames:e.groupMemberNames,connectionId:e.connectionId,verbose:e.verbose,maxMediaBytes:e.maxMediaBytes,replyResolver:e.replyResolver,replyLogger:e.replyLogger,backgroundTasks:e.backgroundTasks,rememberSentText:e.echoTracker.rememberText,echoHas:e.echoTracker.has,echoForget:e.echoTracker.forget,buildCombinedEchoKey:e.echoTracker.buildCombinedKey,groupHistory:i?.groupHistory,suppressGroupHistoryClear:i?.suppressGroupHistoryClear});return async n=>{let r=n.conversationId??n.from,a=$t(n),o=ue({cfg:f(),channel:`whatsapp`,accountId:n.accountId,peer:{kind:n.chatType===`group`?`group`:`direct`,id:a}}),s=n.chatType===`group`?i({channel:`whatsapp`,accountId:o.accountId,peerKind:`group`,peerId:a}):o.sessionKey;if(n.from===n.to&&T(`📱 Same-phone mode detected (from === to: ${n.from})`),e.echoTracker.has(n.body)){T(`Skipping auto-reply: detected echo (message matches recently sent text)`),e.echoTracker.forget(n.body);return}if(n.chatType===`group`){let t={From:n.from,To:n.to,SessionKey:o.sessionKey,AccountId:o.accountId,ChatType:n.chatType,ConversationLabel:r,GroupSubject:n.groupSubject,SenderName:n.senderName,SenderId:n.senderJid?.trim()||n.senderE164,SenderE164:n.senderE164,Provider:`whatsapp`,Surface:`whatsapp`,OriginatingChannel:`whatsapp`,OriginatingTo:r};if(Qt({cfg:e.cfg,backgroundTasks:e.backgroundTasks,storeAgentId:o.agentId,sessionKey:o.sessionKey,channel:`whatsapp`,to:r,accountId:o.accountId,ctx:t,warn:e.replyLogger.warn.bind(e.replyLogger)}),!Xt({cfg:e.cfg,msg:n,conversationId:r,groupHistoryKey:s,agentId:o.agentId,sessionKey:o.sessionKey,baseMentionConfig:e.baseMentionConfig,authDir:e.account.authDir,groupHistories:e.groupHistories,groupHistoryLimit:e.groupHistoryLimit,groupMemberNames:e.groupMemberNames,logVerbose:T,replyLogger:e.replyLogger}).shouldProcess)return}else !n.senderE164&&a&&a.startsWith(`+`)&&(n.senderE164=D(a)??n.senderE164);await zt({cfg:e.cfg,msg:n,peerId:a,route:o,groupHistoryKey:s,groupHistories:e.groupHistories,processMessage:t})||await t(n,o,s)}}function dn(e){return e===440}async function fn(e,t=jt,n=!0,r=_e,i=C,a,s={}){let c=J(),d=S({module:`web-auto-reply`,runId:c}),p=S({module:`web-heartbeat`,runId:c}),m=S({module:`web-reconnect`,runId:c}),h={running:!0,connected:!1,reconnectAttempts:0,lastConnectedAt:null,lastDisconnect:null,lastMessageAt:null,lastEventAt:null,lastError:null},g=()=>{s.statusSink?.({...h,lastDisconnect:h.lastDisconnect?{...h.lastDisconnect}:null})};g();let v=f(),b=y({cfg:v,accountId:s.accountId}),x={...v,channels:{...v.channels,whatsapp:{...v.channels?.whatsapp,ackReaction:b.ackReaction,messagePrefix:b.messagePrefix,allowFrom:b.allowFrom,groupAllowFrom:b.groupAllowFrom,groupPolicy:b.groupPolicy,textChunkLimit:b.textChunkLimit,chunkMode:b.chunkMode,mediaMaxMb:b.mediaMaxMb,blockStreaming:b.blockStreaming,groups:b.groups}}},w=o(b),E=Qe(x,s.heartbeatSeconds),D=$e(x,s.reconnect),O=Mt(x),k=x.channels?.whatsapp?.accounts?.[s.accountId??``]?.historyLimit??x.channels?.whatsapp?.historyLimit??x.messages?.groupChat?.historyLimit??50,A=new Map,j=new Map,ee=Lt({maxItems:100,logVerbose:T}),M=s.sleep??((e,t)=>W(e,t??a)),N=()=>a?.aborted===!0,P=a&&new Promise(e=>a.addEventListener(`abort`,()=>e(`aborted`),{once:!0})),F=process.getMaxListeners?.()??10;process.setMaxListeners&&F<50&&process.setMaxListeners(50);let ne=!1,I=()=>{ne=!0};process.once(`SIGINT`,I);let L=0;for(;!N();){let o=J(),c=Date.now(),f=null,v=null,y=null,S=0,C=null,F=s.messageTimeoutMs??1800*1e3,re=s.watchdogCheckMs??60*1e3,R=new Set,ie=un({cfg:x,verbose:e,connectionId:o,maxMediaBytes:w,groupHistoryLimit:k,groupHistories:A,groupMemberNames:j,echoTracker:ee,backgroundTasks:R,replyResolver:r??_e,replyLogger:d,baseMentionConfig:O,account:b}),ae=te({cfg:x,channel:`whatsapp`}),z=await(t??jt)({verbose:e,accountId:b.accountId,authDir:b.authDir,mediaMaxMb:b.mediaMaxMb,sendReadReceipts:b.sendReadReceipts,debounceMs:ae,shouldDebounce:e=>e.mediaPath||e.mediaType||e.location||e.replyToId||e.replyToBody?!1:!oe(e.body,x),onMessage:async e=>{S+=1,y=Date.now(),h.lastMessageAt=y,h.lastEventAt=y,g(),await ie(e)}});Object.assign(h,fe()),h.lastError=null,g();let{e164:se}=u(b.authDir),B=ue({cfg:x,channel:`whatsapp`,accountId:b.accountId});xe(`WhatsApp gateway connected${se?` as ${se}`:``}.`,{sessionKey:B.sessionKey}),Ie(b.accountId,z),C=De(e=>{if(!en(e))return!1;let t=q(e);return m.warn({connectionId:o,error:t},`web reconnect: unhandled rejection from WhatsApp socket; forcing reconnect`),z.signalClose?.({status:499,isLoggedOut:!1,error:e}),!0});let V=async()=>{Ie(b.accountId,null),C&&=(C(),null),f&&clearInterval(f),v&&clearInterval(v),R.size>0&&(await Promise.allSettled(R),R.clear());try{await z.close()}catch(e){T(`Socket close failed: ${q(e)}`)}};if(n&&(f=setInterval(()=>{let e=l(b.authDir),t=y?Math.floor((Date.now()-y)/6e4):null,n={connectionId:o,reconnectAttempts:L,messagesHandled:S,lastMessageAt:y,authAgeMs:e,uptimeMs:Date.now()-c,...t!==null&&t>30?{minutesSinceLastMessage:t}:{}};t&&t>30?p.warn(n,`⚠️ web gateway heartbeat - no messages in 30+ minutes`):p.info(n,`web gateway heartbeat`)},E*1e3),v=setInterval(()=>{if(!y)return;let e=Date.now()-y;if(e<=F)return;let t=Math.floor(e/6e4);p.warn({connectionId:o,minutesSinceLastMessage:t,lastMessageAt:new Date(y),messagesHandled:S},`Message timeout detected - forcing reconnect`),et.warn(`No messages received in ${t}m - restarting connection`),V().catch(e=>{T(`Close listener failed: ${q(e)}`)}),z.signalClose?.({status:499,isLoggedOut:!1,error:`watchdog-timeout`})},re)),Y.info(`Listening for personal WhatsApp inbound messages.`),(process.stdout.isTTY||process.stderr.isTTY)&&Y.raw(`Ctrl+C to stop.`),!n){await V(),process.removeListener(`SIGINT`,I);return}let H=await Promise.race([z.onClose?.catch(e=>(m.error({error:q(e)},`listener.onClose rejected`),{status:500,isLoggedOut:!1,error:e}))??tt(),P??tt()]);if(Date.now()-c>E*1e3&&(L=0),h.reconnectAttempts=L,g(),N()||ne||H===`aborted`){await V();break}let U=(typeof H==`object`&&H&&`status`in H?H.status:void 0)??`unknown`,W=typeof H==`object`&&H&&`isLoggedOut`in H&&H.isLoggedOut,G=q(H);if(h.connected=!1,h.lastEventAt=Date.now(),h.lastDisconnect={at:h.lastEventAt,status:typeof U==`number`?U:void 0,error:G,loggedOut:!!W},h.lastError=G,h.reconnectAttempts=L,g(),m.info({connectionId:o,status:U,loggedOut:W,reconnectAttempts:L,error:G},`web reconnect: connection closed`),xe(`WhatsApp gateway disconnected (status ${U??`unknown`})`,{sessionKey:B.sessionKey}),W){i.error(`WhatsApp session logged out. Run \`${_(`openclaw channels login --channel web`)}\` to relink.`),await V();break}if(dn(U)){m.warn({connectionId:o,status:U,error:G},`web reconnect: non-retryable close status; stopping monitor`),i.error(`WhatsApp Web connection closed (status ${U}: session conflict). Resolve conflicting WhatsApp Web sessions, then relink with \`${_(`openclaw channels login --channel web`)}\`. Stopping web monitoring.`),await V();break}if(L+=1,h.reconnectAttempts=L,g(),D.maxAttempts>0&&L>=D.maxAttempts){m.warn({connectionId:o,status:U,reconnectAttempts:L,maxAttempts:D.maxAttempts},`web reconnect: max attempts reached; continuing in degraded mode`),i.error(`WhatsApp Web reconnect: max attempts reached (${L}/${D.maxAttempts}). Stopping web monitoring.`),await V();break}let K=ve(D,L);m.info({connectionId:o,status:U,reconnectAttempts:L,maxAttempts:D.maxAttempts||`unlimited`,delayMs:K},`web reconnect: scheduling retry`),i.error(`WhatsApp Web connection closed (status ${U}). Retry ${L}/${D.maxAttempts||`∞`} in ${ce(K)}… (${G})`),await V();try{await M(K,a)}catch{break}}h.running=!1,h.connected=!1,h.lastEventAt=Date.now(),g(),process.removeListener(`SIGINT`,I)}export{jt as n,Xe as r,fn as t};
5
+ `);r&&(Z.warn(`Media skipped; sent text-only to ${n.from}`),await n.reply(r))}}}for(let e of m)await n.reply(e)}function rn(e){if(!e.msg.id)return;let t=e.cfg.channels?.whatsapp?.ackReaction,n=(t?.emoji??``).trim(),r=t?.direct??!0,i=t?.group??`mentions`,a=e.msg.conversationId??e.msg.from,o=e.msg.chatType===`group`?Ut({cfg:e.cfg,agentId:e.agentId,sessionKey:e.sessionKey,conversationId:a}):null;F({emoji:n,isDirect:e.msg.chatType===`direct`,isGroup:e.msg.chatType===`group`,directEnabled:r,groupMode:i,wasMentioned:e.msg.wasMentioned===!0,groupActivated:o===`always`})&&(e.info({chatId:e.msg.chatId,messageId:e.msg.id,emoji:n},`sending ack reaction`),Re(e.msg.chatId,e.msg.id,n,{verbose:e.verbose,fromMe:!1,participant:e.msg.senderJid,accountId:e.accountId}).catch(t=>{e.warn({error:q(t),chatId:e.msg.chatId,messageId:e.msg.id},`failed to send ack reaction`),T(`WhatsApp ack reaction failed for chat ${e.msg.chatId}: ${q(t)}`)}))}function an(e){return e.replyToBody?`[Replying to ${e.replyToSender??`unknown sender`}${e.replyToId?` id:${e.replyToId}`:``}]\n${e.replyToBody}\n[/Replying]`:null}function on(e){let{cfg:t,msg:n,agentId:r,previousTimestamp:i,envelope:a}=e,o=ge(t,r,{configured:t.channels?.whatsapp?.messagePrefix,hasAllowFrom:(t.channels?.whatsapp?.allowFrom?.length??0)>0}),s=o?`${o} `:``,c=an(n),l=`${s}${n.body}${c?`\n\n${c}`:``}`;return z({channel:`WhatsApp`,from:n.chatType===`group`?n.from:n.from?.replace(/^whatsapp:/,``),timestamp:n.timestamp,body:l,chatType:n.chatType,sender:{name:n.senderName,e164:n.senderE164,id:n.senderJid},previousTimestamp:i,envelope:a,fromMe:n.fromMe})}async function sn(e){let t=e.cfg.commands?.useAccessGroups!==!1;if(!t)return!0;let n=e.msg.chatType===`group`,r=D(n?e.msg.senderE164??``:e.msg.senderE164??e.msg.from??``);if(!r)return!1;let i=y({cfg:e.cfg,accountId:e.msg.accountId}),a=i.dmPolicy??`pairing`,o=i.groupPolicy??`allowlist`,s=i.allowFrom??[],c=i.groupAllowFrom??(s.length>0?s:void 0),l=n?[]:await B({provider:`whatsapp`,accountId:e.msg.accountId,dmPolicy:a});return ye({isGroup:n,dmPolicy:a,groupPolicy:o,allowFrom:s.length>0?s:e.msg.selfE164?[e.msg.selfE164]:[],groupAllowFrom:c,storeAllowFrom:l,isSenderAllowed:e=>e.includes(`*`)?!0:e.map(e=>D(String(e))).filter(e=>!!e).includes(r),command:{useAccessGroups:t,allowTextCommands:!0,hasControlCommand:!0}}).commandAuthorized}function cn(e){let t=y({cfg:e.cfg,accountId:e.msg.accountId});return H({dmScope:e.cfg.session?.dmScope,allowFrom:t.allowFrom,normalizeEntry:e=>D(e)})}async function ln(e){let t=e.msg.conversationId??e.msg.from,{storePath:n,envelopeOptions:r,previousTimestamp:i}=U({cfg:e.cfg,agentId:e.route.agentId,sessionKey:e.route.sessionKey}),a=on({cfg:e.cfg,msg:e.msg,agentId:e.route.agentId,previousTimestamp:i,envelope:r}),o=!1;if(e.msg.chatType===`group`){let n=e.groupHistory??e.groupHistories.get(e.groupHistoryKey)??[];n.length>0&&(a=le({entries:n.map(e=>({sender:e.sender,body:e.body,timestamp:e.timestamp})),currentMessage:a,excludeLast:!1,formatEntry:e=>z({channel:`WhatsApp`,from:t,timestamp:e.timestamp,body:e.body,chatType:`group`,senderLabel:e.sender,envelope:r})})),o=!(e.suppressGroupHistoryClear??!1)}let s=e.buildCombinedEchoKey({sessionKey:e.route.sessionKey,combinedBody:a});if(e.echoHas(s))return T(`Skipping auto-reply: detected echo for combined message`),e.echoForget(s),!1;rn({cfg:e.cfg,msg:e.msg,agentId:e.route.agentId,sessionKey:e.route.sessionKey,conversationId:t,verbose:e.verbose,accountId:e.route.accountId,info:e.replyLogger.info.bind(e.replyLogger),warn:e.replyLogger.warn.bind(e.replyLogger)});let c=e.msg.id??J();e.replyLogger.info({connectionId:e.connectionId,correlationId:c,from:e.msg.chatType===`group`?t:e.msg.from,to:e.msg.to,body:$(a,240),mediaType:e.msg.mediaType??null,mediaPath:e.msg.mediaPath??null},`inbound web message`);let l=e.msg.chatType===`group`?t:e.msg.from,u=e.msg.mediaType?`, ${e.msg.mediaType}`:``;X.info(`Inbound message ${l} -> ${e.msg.to} (${e.msg.chatType}${u}, ${a.length} chars)`),b()&&X.debug(`Inbound body: ${$(a,400)}`);let d=e.msg.chatType===`group`?void 0:e.msg.senderE164?D(e.msg.senderE164):e.msg.from.includes(`@`)?O(e.msg.from):D(e.msg.from),f=e.maxMediaTextChunkLimit??je(e.cfg,`whatsapp`),p=Me(e.cfg,`whatsapp`,e.route.accountId),m=Ne({cfg:e.cfg,channel:`whatsapp`,accountId:e.route.accountId}),h=Oe(e.cfg,e.route.agentId),_=!1,v=!1,y=se(e.msg.body,e.cfg)?await sn({cfg:e.cfg,msg:e.msg}):void 0,x=e.cfg.messages?.responsePrefix,{onModelSelected:S,...C}=pe({cfg:e.cfg,agentId:e.route.agentId,channel:`whatsapp`,accountId:e.route.accountId}),w=e.msg.chatType!==`group`&&!!e.msg.selfE164&&D(e.msg.from)===D(e.msg.selfE164??``),E=C.responsePrefix??(x===void 0&&w?ie(e.cfg,e.route.agentId):void 0),k=e.msg.chatType===`group`?(e.groupHistory??e.groupHistories.get(e.groupHistoryKey)??[]).map(e=>({sender:e.sender,body:e.body,timestamp:e.timestamp})):void 0,A=R({Body:a,BodyForAgent:e.msg.body,InboundHistory:k,RawBody:e.msg.body,CommandBody:e.msg.body,From:e.msg.from,To:e.msg.to,SessionKey:e.route.sessionKey,AccountId:e.route.accountId,MessageSid:e.msg.id,ReplyToId:e.msg.replyToId,ReplyToBody:e.msg.replyToBody,ReplyToSender:e.msg.replyToSender,MediaPath:e.msg.mediaPath,MediaUrl:e.msg.mediaUrl,MediaType:e.msg.mediaType,ChatType:e.msg.chatType,ConversationLabel:e.msg.chatType===`group`?t:e.msg.from,GroupSubject:e.msg.groupSubject,GroupMembers:Kt({participants:e.msg.groupParticipants,roster:e.groupMemberNames.get(e.groupHistoryKey),fallbackE164:e.msg.senderE164}),SenderName:e.msg.senderName,SenderId:e.msg.senderJid?.trim()||e.msg.senderE164,SenderE164:e.msg.senderE164,CommandAuthorized:y,WasMentioned:e.msg.wasMentioned,...e.msg.location?we(e.msg.location):{},Provider:`whatsapp`,Surface:`whatsapp`,OriginatingChannel:`whatsapp`,OriginatingTo:e.msg.from}),j=cn({cfg:e.cfg,msg:e.msg}),ee=!j||j===d,M=ae({route:e.route,sessionKey:e.route.sessionKey});d&&M===e.route.mainSessionKey&&ee?Qt({cfg:e.cfg,backgroundTasks:e.backgroundTasks,storeAgentId:e.route.agentId,sessionKey:e.route.mainSessionKey,channel:`whatsapp`,to:d,accountId:e.route.accountId,ctx:A,warn:e.replyLogger.warn.bind(e.replyLogger)}):d&&M===e.route.mainSessionKey&&j&&T(`Skipping main-session last route update for ${d} (pinned owner ${j})`);let N=g({storePath:n,sessionKey:e.route.sessionKey,ctx:A}).catch(t=>{e.replyLogger.warn({error:q(t),storePath:n,sessionKey:e.route.sessionKey},`failed updating session meta`)});Zt(e.backgroundTasks,N);let{queuedFinal:P}=await be({ctx:A,cfg:e.cfg,replyResolver:e.replyResolver,dispatcherOptions:{...C,responsePrefix:E,onHeartbeatStrip:()=>{_||(_=!0,T(`Stripped stray HEARTBEAT_OK token from web reply`))},deliver:async(n,r)=>{if(r.kind!==`final`)return;await nn({replyResult:n,msg:e.msg,mediaLocalRoots:h,maxMediaBytes:e.maxMediaBytes,textLimit:f,chunkMode:p,replyLogger:e.replyLogger,connectionId:e.connectionId,skipLog:!1,tableMode:m}),v=!0;let i=n.text?!0:void 0;e.rememberSentText(n.text,{combinedBody:a,combinedBodySessionKey:e.route.sessionKey,logVerboseMessage:i});let o=e.msg.chatType===`group`?t:e.msg.from??`unknown`,s=!!(n.mediaUrl||n.mediaUrls?.length);if(Z.info(`Auto-replied to ${o}${s?` (media)`:``}`),b()){let e=n.text==null?`<media>`:$(n.text,400);Z.debug(`Reply body: ${e}${s?` (media)`:``}`)}},onError:(n,r)=>{let i=r.kind===`tool`?`tool update`:r.kind===`block`?`block update`:`auto-reply`;Z.error(`Failed sending web ${i} to ${e.msg.from??t}: ${q(n)}`)},onReplyStart:e.msg.sendComposing},replyOptions:{disableBlockStreaming:!0,onModelSelected:S}});return P?(o&&e.groupHistories.set(e.groupHistoryKey,[]),v):(o&&e.groupHistories.set(e.groupHistoryKey,[]),T(`Skipping auto-reply: silent token or no text/media returned from resolver`),!1)}function un(e){let t=async(t,n,r,i)=>ln({cfg:e.cfg,msg:t,route:n,groupHistoryKey:r,groupHistories:e.groupHistories,groupMemberNames:e.groupMemberNames,connectionId:e.connectionId,verbose:e.verbose,maxMediaBytes:e.maxMediaBytes,replyResolver:e.replyResolver,replyLogger:e.replyLogger,backgroundTasks:e.backgroundTasks,rememberSentText:e.echoTracker.rememberText,echoHas:e.echoTracker.has,echoForget:e.echoTracker.forget,buildCombinedEchoKey:e.echoTracker.buildCombinedKey,groupHistory:i?.groupHistory,suppressGroupHistoryClear:i?.suppressGroupHistoryClear});return async n=>{let r=n.conversationId??n.from,a=$t(n),o=ue({cfg:f(),channel:`whatsapp`,accountId:n.accountId,peer:{kind:n.chatType===`group`?`group`:`direct`,id:a}}),s=n.chatType===`group`?i({channel:`whatsapp`,accountId:o.accountId,peerKind:`group`,peerId:a}):o.sessionKey;if(n.from===n.to&&T(`📱 Same-phone mode detected (from === to: ${n.from})`),e.echoTracker.has(n.body)){T(`Skipping auto-reply: detected echo (message matches recently sent text)`),e.echoTracker.forget(n.body);return}if(n.chatType===`group`){let t={From:n.from,To:n.to,SessionKey:o.sessionKey,AccountId:o.accountId,ChatType:n.chatType,ConversationLabel:r,GroupSubject:n.groupSubject,SenderName:n.senderName,SenderId:n.senderJid?.trim()||n.senderE164,SenderE164:n.senderE164,Provider:`whatsapp`,Surface:`whatsapp`,OriginatingChannel:`whatsapp`,OriginatingTo:r};if(Qt({cfg:e.cfg,backgroundTasks:e.backgroundTasks,storeAgentId:o.agentId,sessionKey:o.sessionKey,channel:`whatsapp`,to:r,accountId:o.accountId,ctx:t,warn:e.replyLogger.warn.bind(e.replyLogger)}),!Xt({cfg:e.cfg,msg:n,conversationId:r,groupHistoryKey:s,agentId:o.agentId,sessionKey:o.sessionKey,baseMentionConfig:e.baseMentionConfig,authDir:e.account.authDir,groupHistories:e.groupHistories,groupHistoryLimit:e.groupHistoryLimit,groupMemberNames:e.groupMemberNames,logVerbose:T,replyLogger:e.replyLogger}).shouldProcess)return}else !n.senderE164&&a&&a.startsWith(`+`)&&(n.senderE164=D(a)??n.senderE164);await zt({cfg:e.cfg,msg:n,peerId:a,route:o,groupHistoryKey:s,groupHistories:e.groupHistories,processMessage:t})||await t(n,o,s)}}function dn(e){return e===440}async function fn(e,t=jt,n=!0,r=_e,i=C,a,s={}){let c=J(),d=S({module:`web-auto-reply`,runId:c}),p=S({module:`web-heartbeat`,runId:c}),m=S({module:`web-reconnect`,runId:c}),h={running:!0,connected:!1,reconnectAttempts:0,lastConnectedAt:null,lastDisconnect:null,lastMessageAt:null,lastEventAt:null,lastError:null},g=()=>{s.statusSink?.({...h,lastDisconnect:h.lastDisconnect?{...h.lastDisconnect}:null})};g();let v=f(),b=y({cfg:v,accountId:s.accountId}),x={...v,channels:{...v.channels,whatsapp:{...v.channels?.whatsapp,ackReaction:b.ackReaction,messagePrefix:b.messagePrefix,allowFrom:b.allowFrom,groupAllowFrom:b.groupAllowFrom,groupPolicy:b.groupPolicy,textChunkLimit:b.textChunkLimit,chunkMode:b.chunkMode,mediaMaxMb:b.mediaMaxMb,blockStreaming:b.blockStreaming,groups:b.groups}}},w=o(b),E=Qe(x,s.heartbeatSeconds),D=$e(x,s.reconnect),O=Mt(x),k=x.channels?.whatsapp?.accounts?.[s.accountId??``]?.historyLimit??x.channels?.whatsapp?.historyLimit??x.messages?.groupChat?.historyLimit??50,A=new Map,j=new Map,ee=Lt({maxItems:100,logVerbose:T}),M=s.sleep??((e,t)=>W(e,t??a)),N=()=>a?.aborted===!0,P=a&&new Promise(e=>a.addEventListener(`abort`,()=>e(`aborted`),{once:!0})),F=process.getMaxListeners?.()??10;process.setMaxListeners&&F<50&&process.setMaxListeners(50);let ne=!1,I=()=>{ne=!0};process.once(`SIGINT`,I);let L=0;for(;!N();){let o=J(),c=Date.now(),f=null,v=null,y=null,S=0,C=null,F=s.messageTimeoutMs??1800*1e3,re=s.watchdogCheckMs??60*1e3,R=new Set,ie=un({cfg:x,verbose:e,connectionId:o,maxMediaBytes:w,groupHistoryLimit:k,groupHistories:A,groupMemberNames:j,echoTracker:ee,backgroundTasks:R,replyResolver:r??_e,replyLogger:d,baseMentionConfig:O,account:b}),ae=te({cfg:x,channel:`whatsapp`}),z=await(t??jt)({verbose:e,accountId:b.accountId,authDir:b.authDir,mediaMaxMb:b.mediaMaxMb,sendReadReceipts:b.sendReadReceipts,debounceMs:ae,shouldDebounce:e=>e.mediaPath||e.mediaType||e.location||e.replyToId||e.replyToBody?!1:!oe(e.body,x),onMessage:async e=>{S+=1,y=Date.now(),h.lastMessageAt=y,h.lastEventAt=y,g(),await ie(e)}});Object.assign(h,fe()),h.lastError=null,g();let{e164:se}=u(b.authDir),B=ue({cfg:x,channel:`whatsapp`,accountId:b.accountId});xe(`WhatsApp gateway connected${se?` as ${se}`:``}.`,{sessionKey:B.sessionKey}),Ie(b.accountId,z),C=De(e=>{if(!en(e))return!1;let t=q(e);return m.warn({connectionId:o,error:t},`web reconnect: unhandled rejection from WhatsApp socket; forcing reconnect`),z.signalClose?.({status:499,isLoggedOut:!1,error:e}),!0});let V=async()=>{Ie(b.accountId,null),C&&=(C(),null),f&&clearInterval(f),v&&clearInterval(v),R.size>0&&(await Promise.allSettled(R),R.clear());try{await z.close()}catch(e){T(`Socket close failed: ${q(e)}`)}};if(n&&(f=setInterval(()=>{let e=l(b.authDir),t=y?Math.floor((Date.now()-y)/6e4):null,n={connectionId:o,reconnectAttempts:L,messagesHandled:S,lastMessageAt:y,authAgeMs:e,uptimeMs:Date.now()-c,...t!==null&&t>30?{minutesSinceLastMessage:t}:{}};t&&t>30?p.warn(n,`⚠️ web gateway heartbeat - no messages in 30+ minutes`):p.info(n,`web gateway heartbeat`)},E*1e3),v=setInterval(()=>{if(!y)return;let e=Date.now()-y;if(e<=F)return;let t=Math.floor(e/6e4);p.warn({connectionId:o,minutesSinceLastMessage:t,lastMessageAt:new Date(y),messagesHandled:S},`Message timeout detected - forcing reconnect`),et.warn(`No messages received in ${t}m - restarting connection`),V().catch(e=>{T(`Close listener failed: ${q(e)}`)}),z.signalClose?.({status:499,isLoggedOut:!1,error:`watchdog-timeout`})},re)),Y.info(`Listening for personal WhatsApp inbound messages.`),(process.stdout.isTTY||process.stderr.isTTY)&&Y.raw(`Ctrl+C to stop.`),!n){await V(),process.removeListener(`SIGINT`,I);return}let H=await Promise.race([z.onClose?.catch(e=>(m.error({error:q(e)},`listener.onClose rejected`),{status:500,isLoggedOut:!1,error:e}))??tt(),P??tt()]);if(Date.now()-c>E*1e3&&(L=0),h.reconnectAttempts=L,g(),N()||ne||H===`aborted`){await V();break}let U=(typeof H==`object`&&H&&`status`in H?H.status:void 0)??`unknown`,W=typeof H==`object`&&H&&`isLoggedOut`in H&&H.isLoggedOut,G=q(H);if(h.connected=!1,h.lastEventAt=Date.now(),h.lastDisconnect={at:h.lastEventAt,status:typeof U==`number`?U:void 0,error:G,loggedOut:!!W},h.lastError=G,h.reconnectAttempts=L,g(),m.info({connectionId:o,status:U,loggedOut:W,reconnectAttempts:L,error:G},`web reconnect: connection closed`),xe(`WhatsApp gateway disconnected (status ${U??`unknown`})`,{sessionKey:B.sessionKey}),W){i.error(`WhatsApp session logged out. Run \`${_(`openclaw channels login --channel web`)}\` to relink.`),await V();break}if(dn(U)){m.warn({connectionId:o,status:U,error:G},`web reconnect: non-retryable close status; stopping monitor`),i.error(`WhatsApp Web connection closed (status ${U}: session conflict). Resolve conflicting WhatsApp Web sessions, then relink with \`${_(`openclaw channels login --channel web`)}\`. Stopping web monitoring.`),await V();break}if(L+=1,h.reconnectAttempts=L,g(),D.maxAttempts>0&&L>=D.maxAttempts){m.warn({connectionId:o,status:U,reconnectAttempts:L,maxAttempts:D.maxAttempts},`web reconnect: max attempts reached; continuing in degraded mode`),i.error(`WhatsApp Web reconnect: max attempts reached (${L}/${D.maxAttempts}). Stopping web monitoring.`),await V();break}let K=ve(D,L);m.info({connectionId:o,status:U,reconnectAttempts:L,maxAttempts:D.maxAttempts||`unlimited`,delayMs:K},`web reconnect: scheduling retry`),i.error(`WhatsApp Web connection closed (status ${U}). Retry ${L}/${D.maxAttempts||`∞`} in ${ce(K)}… (${G})`),await V();try{await M(K,a)}catch{break}}h.running=!1,h.connected=!1,h.lastEventAt=Date.now(),g(),process.removeListener(`SIGINT`,I)}export{jt as n,Xe as r,fn as t};
@@ -2,4 +2,4 @@ require(`./paths-BvlJvmRS.cjs`);const e=require(`./paths-BPlgbwrb.cjs`),t=requir
2
2
  `).trim();if(s||=L(i),!s){let e=i?(0,h.getContentType)(i):void 0;return r.R(`Quoted message missing extractable body${e?` (type ${e})`:``}`),null}let c=n?.participant??void 0,u=c?r.S(c)??c:void 0,d=u??`unknown sender`;return{id:n?.stanzaId?String(n.stanzaId):void 0,body:s,sender:d,senderJid:c,senderE164:u}}function ae(e){return i.Pt({providerConfigPresent:e.providerConfigPresent,groupPolicy:e.groupPolicy,defaultGroupPolicy:e.defaultGroupPolicy})}async function W(e){let a=t.r(),o=t.Ha({cfg:a,accountId:e.accountId}),s=o.dmPolicy??`pairing`,c=o.allowFrom??[],u=await n.zt({provider:`whatsapp`,accountId:o.accountId,dmPolicy:s}),d=c.length===0&&e.selfE164?[e.selfE164]:[],f=c.length>0?c:d,p=o.groupAllowFrom??(c.length>0?c:void 0),m=e.from===e.selfE164,h=o.selfChatMode??r.x(e.selfE164,c),g=typeof e.pairingGraceMs==`number`&&e.pairingGraceMs>0?e.pairingGraceMs:3e4,_=typeof e.connectedAtMs==`number`&&typeof e.messageTimestampMs==`number`&&e.messageTimestampMs<e.connectedAtMs-g,v=i.Nt(a),{groupPolicy:y,providerMissingFallbackApplied:b}=ae({providerConfigPresent:a.channels?.whatsapp!==void 0,groupPolicy:o.groupPolicy,defaultGroupPolicy:v});i.It({providerMissingFallbackApplied:b,providerKey:`whatsapp`,accountId:o.accountId,log:e=>r.R(e)});let x=r.C(e.from),S=typeof e.senderE164==`string`?r.C(e.senderE164):null,C=n.Ut({isGroup:e.group,dmPolicy:s,groupPolicy:y,allowFrom:e.group?c:f,groupAllowFrom:p,storeAllowFrom:u,isSenderAllowed:t=>{if(t.includes(`*`))return!0;let n=new Set(t.map(e=>r.C(String(e))).filter(e=>!!e));return!e.group&&m?!0:e.group?!!(S&&n.has(S)):n.has(x)}});if(e.group&&C.decision!==`allow`)return C.reason===`groupPolicy=disabled`?r.R(`Blocked group message (groupPolicy: disabled)`):C.reason===`groupPolicy=allowlist (empty allowlist)`?r.R(`Blocked group message (groupPolicy: allowlist, no groupAllowFrom)`):r.R(`Blocked group message from ${e.senderE164??`unknown sender`} (groupPolicy: allowlist)`),{allowed:!1,shouldMarkRead:!1,isSelfChat:h,resolvedAccountId:o.accountId};if(!e.group){if(e.isFromMe&&!m)return r.R(`Skipping outbound DM (fromMe); no pairing reply needed.`),{allowed:!1,shouldMarkRead:!1,isSelfChat:h,resolvedAccountId:o.accountId};if(C.decision===`block`&&C.reason===`dmPolicy=disabled`)return r.R(`Blocked dm (dmPolicy: disabled)`),{allowed:!1,shouldMarkRead:!1,isSelfChat:h,resolvedAccountId:o.accountId};if(C.decision===`pairing`&&!m){let t=e.from;return _?r.R(`Skipping pairing reply for historical DM from ${t}.`):await n.jt({channel:`whatsapp`,senderId:t,senderIdLine:`Your WhatsApp phone number: ${t}`,meta:{name:(e.pushName??``).trim()||void 0},upsertPairingRequest:async({id:e,meta:t})=>await l.nt({channel:`whatsapp`,id:e,accountId:o.accountId,meta:t}),onCreated:()=>{r.R(`whatsapp pairing request sender=${t} name=${e.pushName??`unknown`}`)},sendPairingReply:async t=>{await e.sock.sendMessage(e.remoteJid,{text:t})},onReplyError:e=>{r.R(`whatsapp pairing reply failed for ${t}: ${String(e)}`)}}),{allowed:!1,shouldMarkRead:!1,isSelfChat:h,resolvedAccountId:o.accountId}}if(C.decision!==`allow`)return r.R(`Blocked unauthorized sender ${e.from} (dmPolicy=${s})`),{allowed:!1,shouldMarkRead:!1,isSelfChat:h,resolvedAccountId:o.accountId}}return{allowed:!0,shouldMarkRead:!0,isSelfChat:h,resolvedAccountId:o.accountId}}function G(e){return(0,h.normalizeMessageContent)(e)}function K(e){let t=e.imageMessage?.mimetype??e.videoMessage?.mimetype??e.documentMessage?.mimetype??e.audioMessage?.mimetype??e.stickerMessage?.mimetype??void 0;if(t)return t;if(e.audioMessage)return`audio/ogg; codecs=opus`;if(e.imageMessage)return`image/jpeg`;if(e.videoMessage)return`video/mp4`;if(e.stickerMessage)return`image/webp`}async function q(e,t){let n=G(e.message);if(!n)return;let i=K(n),a=n.documentMessage?.fileName??void 0;if(!(!n.imageMessage&&!n.videoMessage&&!n.documentMessage&&!n.audioMessage&&!n.stickerMessage))try{return{buffer:await(0,h.downloadMediaMessage)(e,`buffer`,{},{reuploadRequest:t.updateMediaMessage,logger:t.logger}),mimetype:i,fileName:a}}catch(e){r.R(`downloadMediaMessage failed: ${String(e)}`);return}}function J(e){a.n({channel:`whatsapp`,accountId:e,direction:`outbound`})}function Y(e){return typeof e==`object`&&e&&`key`in e?String(e.key?.id??`unknown`):`unknown`}function X(e){return{sendMessage:async(t,n,i,a,o)=>{let s=r.N(t),c;if(i&&a)if(a.startsWith(`image/`))c={image:i,caption:n||void 0,mimetype:a};else if(a.startsWith(`audio/`))c={audio:i,ptt:!0,mimetype:a};else if(a.startsWith(`video/`)){let e=o?.gifPlayback;c={video:i,caption:n||void 0,mimetype:a,...e?{gifPlayback:!0}:{}}}else c={document:i,fileName:o?.fileName?.trim()||`file`,caption:n||void 0,mimetype:a};else c={text:n};let l=await e.sock.sendMessage(s,c);return J(o?.accountId??e.defaultAccountId),{messageId:Y(l)}},sendPoll:async(t,n)=>{let i=r.N(t),a=await e.sock.sendMessage(i,{poll:{name:n.question,values:n.options,selectableCount:n.maxSelections??1}});return J(e.defaultAccountId),{messageId:Y(a)}},sendReaction:async(t,n,i,a,o)=>{let s=r.N(t);await e.sock.sendMessage(s,{react:{text:i,key:{remoteJid:s,id:n,fromMe:a,participant:o?r.N(o):void 0}}})},sendComposingTo:async t=>{let n=r.N(t);await e.sock.sendPresenceUpdate(`composing`,n)}}}async function oe(e){let i=r.K({module:`web-inbound`}),o=r.a(`gateway/channels/whatsapp`).child(`inbound`),s=await p.t(!1,e.verbose,{authDir:e.authDir});await p.i(s);let c=Date.now(),u=null,d=new Promise(e=>{u=e}),f=e=>{if(!u)return;let t=u;u=null,t(e)};try{await s.sendPresenceUpdate(`available`),r.B()&&r.R(`Sent global 'available' presence on connect`)}catch(e){r.R(`Failed to send 'available' presence on connect: ${String(e)}`)}let m=s.user?.id,g=m?r.S(m):null,_=n.rt({debounceMs:e.debounceMs??0,buildKey:e=>{let t=e.chatType===`group`?e.senderJid??e.senderE164??e.senderName??e.from:e.from;if(!t)return null;let n=e.chatType===`group`?e.chatId:e.from;return`${e.accountId}:${n}:${t}`},shouldDebounce:e.shouldDebounce,onFlush:async t=>{let n=t.at(-1);if(!n)return;if(t.length===1){await e.onMessage(n);return}let r=new Set;for(let e of t)for(let t of e.mentionedJids??[])r.add(t);let i=t.map(e=>e.body).filter(Boolean).join(`
3
3
  `),a={...n,body:i,mentionedJids:r.size>0?Array.from(r):void 0};await e.onMessage(a)},onError:e=>{i.error({error:String(e)},`failed handling inbound web message`),o.error(`Failed handling inbound web message: ${String(e)}`)}}),v=new Map,y=300*1e3,b=s.signalRepository?.lidMapping,x=async t=>r.E(t,{authDir:e.authDir,lidLookup:b}),S=async e=>{let t=v.get(e);if(t&&t.expires>Date.now())return t;try{let t=await s.groupMetadata(e),n=(await Promise.all(t.participants?.map(async e=>await x(e.id)??e.id)??[])).filter(Boolean)??[],r={subject:t.subject,participants:n,expires:Date.now()+y};return v.set(e,r),r}catch(t){return r.R(`Failed to fetch group metadata for ${e}: ${String(t)}`),{expires:Date.now()+y}}},C=async t=>{let n=t.key?.id??void 0,r=t.key?.remoteJid;if(!r||r.endsWith(`@status`)||r.endsWith(`@broadcast`))return null;let i=(0,h.isJidGroup)(r)===!0;if(n&&D(`${e.accountId}:${r}:${n}`))return null;let a=t.key?.participant??void 0,o=i?r:await x(r);if(!o)return null;let l=i?a?await x(a):null:o,u,d;if(i){let e=await S(r);u=e.subject,d=e.participants}let f=t.messageTimestamp?Number(t.messageTimestamp)*1e3:void 0,p=await W({accountId:e.accountId,from:o,selfE164:g,senderE164:l,group:i,pushName:t.pushName??void 0,isFromMe:!!t.key?.fromMe,messageTimestampMs:f,connectedAtMs:c,sock:{sendMessage:(e,t)=>s.sendMessage(e,t)},remoteJid:r});return p.allowed?{id:n,remoteJid:r,group:i,participantJid:a,from:o,senderE164:l,groupSubject:u,groupParticipants:d,messageTimestampMs:f,access:p}:null},w=async t=>{let{id:n,remoteJid:i,participantJid:a,access:o}=t;if(n&&!o.isSelfChat&&e.sendReadReceipts!==!1)try{await s.readMessages([{remoteJid:i,id:n,participant:a,fromMe:!1}]),r.B()&&r.R(`Marked message ${n} as read for ${i}${a?` (participant ${a})`:``}`)}catch(e){r.R(`Failed to mark message ${n} read: ${String(e)}`)}else n&&o.isSelfChat&&r.B()&&r.R(`Self-chat mode: skipping read receipt for ${n}`)},ee=async n=>{let i=U(n.message??void 0),a=i?l.J(i):void 0,o=I(n.message??void 0);if(a&&(o=[o,a].filter(Boolean).join(`
4
4
  `).trim()),!o&&(o=L(n.message??void 0),!o))return null;let c=ie(n.message),u,d,f;try{let r=await q(n,s);if(r){let n=(typeof e.mediaMaxMb==`number`&&e.mediaMaxMb>0?e.mediaMaxMb:50)*1024*1024;u=(await t.Ts(r.buffer,r.mimetype,`inbound`,n,r.fileName)).path,d=r.mimetype,f=r.fileName}}catch(e){r.R(`Inbound media download failed: ${String(e)}`)}return{body:o,location:i??void 0,replyContext:c,mediaPath:u,mediaType:d,mediaFileName:f}},T=async(e,t,n)=>{let a=t.remoteJid,c=async()=>{try{await s.sendPresenceUpdate(`composing`,a)}catch(e){r.R(`Presence update failed: ${String(e)}`)}},l=async e=>{await s.sendMessage(a,{text:e})},u=async e=>{await s.sendMessage(a,e)},d=t.messageTimestampMs,f=F(e.message),p=e.pushName??void 0;i.info({from:t.from,to:g??`me`,body:n.body,mediaPath:n.mediaPath,mediaType:n.mediaType,mediaFileName:n.mediaFileName,timestamp:d},`inbound message`);let h={id:t.id,from:t.from,conversationId:t.from,to:g??`me`,accountId:t.access.resolvedAccountId,body:n.body,pushName:p,timestamp:d,chatType:t.group?`group`:`direct`,chatId:t.remoteJid,senderJid:t.participantJid,senderE164:t.senderE164??void 0,senderName:p,replyToId:n.replyContext?.id,replyToBody:n.replyContext?.body,replyToSender:n.replyContext?.sender,replyToSenderJid:n.replyContext?.senderJid,replyToSenderE164:n.replyContext?.senderE164,groupSubject:t.groupSubject,groupParticipants:t.groupParticipants,mentionedJids:f??void 0,selfJid:m,selfE164:g,fromMe:!!e.key?.fromMe,location:n.location??void 0,sendComposing:c,reply:l,sendMedia:u,mediaPath:n.mediaPath,mediaType:n.mediaType,mediaFileName:n.mediaFileName};try{Promise.resolve(_.enqueue(h)).catch(e=>{i.error({error:String(e)},`failed handling inbound web message`),o.error(`Failed handling inbound web message: ${String(e)}`)})}catch(e){i.error({error:String(e)},`failed handling inbound web message`),o.error(`Failed handling inbound web message: ${String(e)}`)}},E=async t=>{if(!(t.type!==`notify`&&t.type!==`append`))for(let n of t.messages??[]){a.n({channel:`whatsapp`,accountId:e.accountId,direction:`inbound`});let r=await C(n);if(!r||(await w(r),t.type===`append`))continue;let i=await ee(n);i&&await T(n,r,i)}};s.ev.on(`messages.upsert`,E);let O=e=>{try{if(e.connection===`close`){let t=p.r(e.lastDisconnect?.error);f({status:t,isLoggedOut:t===h.DisconnectReason.loggedOut,error:e.lastDisconnect?.error})}}catch(e){i.error({error:String(e)},`connection.update handler error`),f({status:void 0,isLoggedOut:!1,error:e})}};return s.ev.on(`connection.update`,O),{close:async()=>{try{let e=s.ev,t=E,n=O;typeof e.off==`function`?(e.off(`messages.upsert`,t),e.off(`connection.update`,n)):typeof e.removeListener==`function`&&(e.removeListener(`messages.upsert`,t),e.removeListener(`connection.update`,n)),s.ws?.close()}catch(e){r.R(`Socket close failed: ${String(e)}`)}},onClose:d,signalClose:e=>{f(e??{status:void 0,isLoggedOut:!1,error:`closed`})},...X({sock:{sendMessage:(e,t)=>s.sendMessage(e,t),sendPresenceUpdate:(e,t)=>s.sendPresenceUpdate(e,t)},defaultAccountId:e.accountId})}}function Z(e,t){return{mentionRegexes:n.st(e,t),allowFrom:e.channels?.whatsapp?.allowFrom}}function Q(e,t){let n=t?{authDir:t}:void 0;return{normalizedMentions:e.mentionedJids?.length?e.mentionedJids.map(e=>r.S(e,n)??e).filter(Boolean):[],selfE164:e.selfE164??(e.selfJid?r.S(e.selfJid,n):null),selfJid:e.selfJid?e.selfJid.replace(/:\\d+/,``):null}}function se(e,t,i){let a=e=>n.ct(e),o=r.x(i.selfE164,t.allowFrom);if((e.mentionedJids?.length??0)>0&&!o)return!!(i.selfE164&&i.normalizedMentions.includes(i.selfE164)||i.selfJid&&i.normalizedMentions.includes(i.selfJid));let s=a(e.body);if(t.mentionRegexes.some(e=>e.test(s)))return!0;if(i.selfE164){let t=i.selfE164.replace(/\D/g,``);if(t){if(s.replace(/[^\d]/g,``).includes(t))return!0;let n=e.body.replace(/[\s-]/g,``);if(RegExp(`\\+?${t}`,`i`).test(n))return!0}}return!1}function ce(e,t,r){let i=Q(e,r);return{wasMentioned:se(e,t,i),details:{from:e.from,body:e.body,bodyClean:n.ct(e.body),mentionedJids:e.mentionedJids??null,normalizedMentionedJids:i.normalizedMentions.length?i.normalizedMentions:null,selfJid:e.selfJid??null,selfJidBare:i.selfJid,selfE164:e.selfE164??null,resolvedSelfE164:i.selfE164}}}function le(e,t){let n=e.allowFrom;return(Array.isArray(n)&&n.length>0?n:t?[t]:[]).filter(e=>!!(e&&e!==`*`)).map(e=>r.C(e)).filter(e=>!!e)}function ue(e){let t=new Set,n=Math.max(1,e.maxItems??100),r=e=>`combined:${e.sessionKey}:${e.combinedBody}`,i=()=>{for(;t.size>n;){let e=t.values().next().value;if(!e)break;t.delete(e)}};return{rememberText:(n,a)=>{n&&(t.add(n),a.combinedBody&&a.combinedBodySessionKey&&t.add(r({sessionKey:a.combinedBodySessionKey,combinedBody:a.combinedBody})),a.logVerboseMessage&&e.logVerbose?.(`Added to echo detection set (size now: ${t.size}): ${n.substring(0,50)}...`),i())},has:e=>t.has(e),forget:e=>{t.delete(e)},buildCombinedKey:r}}function de(t){let r=n.U({agentId:t.agentId,channel:`whatsapp`,accountId:t.route.accountId,peer:{kind:t.msg.chatType===`group`?`group`:`direct`,id:t.peerId},dmScope:t.cfg.session?.dmScope,identityLinks:t.cfg.session?.identityLinks}),i=e.Mt({agentId:t.agentId,mainKey:e.jt});return{sessionKey:r,mainSessionKey:i,lastRoutePolicy:n.W({sessionKey:r,mainSessionKey:i})}}async function fe(t){let n=t.cfg.broadcast?.[t.peerId];if(!n||!Array.isArray(n)||n.length===0)return!1;let r=t.cfg.broadcast?.strategy||`parallel`;C.info(`Broadcasting message to ${n.length} agents (${r})`);let i=t.cfg.agents?.list?.map(t=>e.Lt(t.id)),a=(i?.length??0)>0,o=t.msg.chatType===`group`?t.groupHistories.get(t.groupHistoryKey)??[]:void 0,s=async n=>{let r=e.Lt(n);if(a&&!i?.includes(r))return C.warn(`Broadcast agent ${n} not found in agents.list; skipping`),!1;let s=de({cfg:t.cfg,msg:t.msg,route:t.route,peerId:t.peerId,agentId:r}),c={...t.route,agentId:r,...s};try{return await t.processMessage(t.msg,c,t.groupHistoryKey,{groupHistory:o,suppressGroupHistoryClear:!0})}catch(e){return C.error(`Broadcast agent ${n} failed: ${p.n(e)}`),!1}};if(r===`sequential`)for(let e of n)await s(e);else await Promise.allSettled(n.map(s));return t.msg.chatType===`group`&&t.groupHistories.set(t.groupHistoryKey,[]),!0}function pe(e,t,n){let r=e;for(let e of t)r=r.replace(e,` `);if(n){let e=n.replace(/\D/g,``);if(e){let t=RegExp(`\\+?${e}`,`g`);r=r.replace(t,` `)}}return r.replace(/\s+/g,` `).trim()}function me(e,n){let r=t.Ro({From:n,ChatType:`group`,Provider:`whatsapp`})?.id,i=e.channels?.whatsapp,a=!!(i?.groupAllowFrom?.length||i?.allowFrom?.length);return t.jo({cfg:e,channel:`whatsapp`,groupId:r??n,hasGroupAllowFrom:a})}function he(e,n){let r=t.Ro({From:n,ChatType:`group`,Provider:`whatsapp`})?.id;return t.Mo({cfg:e,channel:`whatsapp`,groupId:r??n})}function ge(r){let i=t.Or(e.s(r.cfg.session?.store,{agentId:r.agentId}))[r.sessionKey],a=he(r.cfg,r.conversationId)?`mention`:`always`;return n.d(i?.groupActivation)??a}function _e(e,t,n){for(let i of e){let e=r.C(i)??i;!e||t.has(e)||(t.add(e),n.push(e))}}function ve(e,t,n,i){if(!n||!i)return;let a=r.C(n)??n;if(!a)return;let o=e.get(t);o||(o=new Map,e.set(t,o)),o.set(a,i)}function ye(e){let{participants:t,roster:n,fallbackE164:i}=e,a=new Set,o=[];if(t?.length&&_e(t,a,o),n&&_e(n.keys(),a,o),o.length===0&&i){let e=r.C(i)??i;e&&o.push(e)}if(o.length!==0)return o.map(e=>{let t=n?.get(e);return t?`${t} (${e})`:e}).join(`, `)}function be(e,t){let n=r.C(t.senderE164??``);return n?le(e,t.selfE164??void 0).includes(n):!1}function xe(e){let t=e.msg.senderName&&e.msg.senderE164?`${e.msg.senderName} (${e.msg.senderE164})`:e.msg.senderName??e.msg.senderE164??`Unknown`;n.V({historyMap:e.groupHistories,historyKey:e.groupHistoryKey,limit:e.groupHistoryLimit,entry:{sender:t,body:e.msg.body,timestamp:e.msg.timestamp,id:e.msg.id,senderJid:e.msg.senderJid}})}function Se(e,t){return e.logVerbose(t),xe({msg:e.msg,groupHistories:e.groupHistories,groupHistoryKey:e.groupHistoryKey,groupHistoryLimit:e.groupHistoryLimit}),{shouldProcess:!1}}function Ce(e){let t=me(e.cfg,e.conversationId);if(t.allowlistEnabled&&!t.allowed)return e.logVerbose(`Skipping group message ${e.conversationId} (not in allowlist)`),{shouldProcess:!1};ve(e.groupMemberNames,e.groupHistoryKey,e.msg.senderE164,e.msg.senderName);let i=Z(e.cfg,e.agentId),a=pe(e.msg.body,i.mentionRegexes,e.msg.selfE164),o=n.f(a),s=be(e.baseMentionConfig,e.msg),c=s&&n.at(a,e.cfg);if(o.hasCommand&&!s)return Se(e,`Ignoring /activation from non-owner in group ${e.conversationId}`);let l=ce(e.msg,i,e.authDir);e.replyLogger.debug({conversationId:e.conversationId,wasMentioned:l.wasMentioned,...l.details},`group mention debug`);let u=l.wasMentioned,d=ge({cfg:e.cfg,agentId:e.agentId,sessionKey:e.sessionKey,conversationId:e.conversationId})!==`always`,f=e.msg.selfJid?.replace(/:\\d+/,``),p=e.msg.replyToSenderJid?.replace(/:\\d+/,``),m=e.msg.selfE164?r.C(e.msg.selfE164):null,h=e.msg.replyToSenderE164?r.C(e.msg.replyToSenderE164):null,g=n.E({requireMention:d,canDetectMention:!0,wasMentioned:u,implicitMention:!!(f&&p&&f===p||m&&h&&m===h),shouldBypassMention:c});return e.msg.wasMentioned=g.effectiveWasMentioned,!c&&d&&g.shouldSkip?Se(e,`Group message stored for context (no mention detected) in ${e.conversationId}: ${e.msg.body}`):{shouldProcess:!0}}function we(e,t){e.add(t),t.finally(()=>{e.delete(t)})}function Te(n){let r=e.s(n.cfg.session?.store,{agentId:n.storeAgentId}),i=t.Mr({storePath:r,sessionKey:n.sessionKey,deliveryContext:{channel:n.channel,to:n.to,accountId:n.accountId},ctx:n.ctx}).catch(e=>{n.warn({error:p.n(e),storePath:r,sessionKey:n.sessionKey,to:n.to},`failed updating last route`)});we(n.backgroundTasks,i)}function Ee(e){return e.chatType===`group`?e.conversationId??e.from:e.senderE164?r.C(e.senderE164)??e.senderE164:e.from.includes(`@`)?r.S(e.from)??e.from:r.C(e.from)??e.from}function $(e,t=400){return!e||e.length<=t?e:`${e.slice(0,t)}… (truncated ${e.length-t} chars)`}function De(e){let t=(e instanceof Error?`${e.message}\n${e.stack??``}`:(e=>{if(e==null)return``;if(typeof e==`string`)return e;if(e instanceof Error)return`${e.message}\n${e.stack??``}`;if(typeof e==`object`)try{return JSON.stringify(e)}catch{return Object.prototype.toString.call(e)}return typeof e==`number`||typeof e==`boolean`||typeof e==`bigint`?String(e):typeof e==`symbol`?e.description??e.toString():typeof e==`function`?e.name?`[function ${e.name}]`:`[function]`:Object.prototype.toString.call(e)})(e)).toLowerCase();return t.includes(`unsupported state or unable to authenticate data`)||t.includes(`bad mac`)?t.includes(`@whiskeysockets/baileys`)||t.includes(`baileys`)||t.includes(`noise-handler`)||t.includes(`aesdecryptgcm`):!1}function Oe(e){if(e.isReasoning===!0)return!0;let t=e.text;return typeof t==`string`?t.trimStart().toLowerCase().startsWith(`reasoning:`):!1}async function ke(e){let{replyResult:t,msg:n,maxMediaBytes:i,textLimit:a,replyLogger:o,connectionId:l,skipLog:u}=e,d=Date.now();if(Oe(t)){w.debug(`Suppressed reasoning payload to ${n.from}`);return}let m=e.tableMode??`code`,h=e.chunkMode??`length`,g=s.c(f.i(c.t(t.text||``,m)),a,h),_=t.mediaUrls?.length?t.mediaUrls:t.mediaUrl?[t.mediaUrl]:[],v=async(e,t,i=3)=>{let a;for(let o=1;o<=i;o++)try{return await e()}catch(e){a=e;let s=p.n(e),c=o===i;if(!/closed|reset|timed\s*out|disconnect/i.test(s)||c)throw e;let l=500*o;r.R(`Retrying ${t} to ${n.from} after failure (${o}/${i-1}) in ${l}ms: ${s}`),await r.j(l)}throw a};if(_.length===0&&g.length){let e=g.length;for(let[t,r]of g.entries()){let i=Date.now();if(await v(()=>n.reply(r),`text`),!u){let r=Date.now()-i;w.debug(`Sent chunk ${t+1}/${e} to ${n.from} (${r.toFixed(0)}ms)`)}}o.info({correlationId:n.id??x(),connectionId:l??null,to:n.from,from:n.to,text:$(t.text,240),mediaUrl:null,mediaSizeBytes:null,mediaKind:null,durationMs:Date.now()-d},`auto-reply sent (text)`);return}let y=[...g];for(let[t,a]of _.entries()){let c=t===0&&y.shift()||void 0;try{let t=await s.v(a,{maxBytes:i,localRoots:e.mediaLocalRoots});if(r.B()&&(r.R(`Web auto-reply media size: ${(t.buffer.length/(1024*1024)).toFixed(2)}MB`),r.R(`Web auto-reply media source: ${a} (kind ${t.kind})`)),t.kind===`image`)await v(()=>n.sendMedia({image:t.buffer,caption:c,mimetype:t.contentType}),`media:image`);else if(t.kind===`audio`)await v(()=>n.sendMedia({audio:t.buffer,ptt:!0,mimetype:t.contentType,caption:c}),`media:audio`);else if(t.kind===`video`)await v(()=>n.sendMedia({video:t.buffer,caption:c,mimetype:t.contentType}),`media:video`);else{let e=t.fileName??a.split(`/`).pop()??`file`,r=t.contentType??`application/octet-stream`;await v(()=>n.sendMedia({document:t.buffer,fileName:e,caption:c,mimetype:r}),`media:document`)}w.info(`Sent media reply to ${n.from} (${(t.buffer.length/(1024*1024)).toFixed(2)}MB)`),o.info({correlationId:n.id??x(),connectionId:l??null,to:n.from,from:n.to,text:c??null,mediaUrl:a,mediaSizeBytes:t.buffer.length,mediaKind:t.kind,durationMs:Date.now()-d},`auto-reply sent (media)`)}catch(e){if(w.error(`Failed sending web media to ${n.from}: ${p.n(e)}`),o.warn({err:e,mediaUrl:a},`failed to send web media reply`),t===0){let t=e instanceof Error?`⚠️ Media failed: ${e.message}`:`⚠️ Media failed.`,r=[y.shift()??c??``,t].filter(Boolean).join(`
5
- `);r&&(w.warn(`Media skipped; sent text-only to ${n.from}`),await n.reply(r))}}}for(let e of y)await n.reply(e)}function Ae(e){if(!e.msg.id)return;let t=e.cfg.channels?.whatsapp?.ackReaction,i=(t?.emoji??``).trim(),a=t?.direct??!0,o=t?.group??`mentions`,s=e.msg.conversationId??e.msg.from,c=e.msg.chatType===`group`?ge({cfg:e.cfg,agentId:e.agentId,sessionKey:e.sessionKey,conversationId:s}):null;n.et({emoji:i,isDirect:e.msg.chatType===`direct`,isGroup:e.msg.chatType===`group`,directEnabled:a,groupMode:o,wasMentioned:e.msg.wasMentioned===!0,groupActivated:c===`always`})&&(e.info({chatId:e.msg.chatId,messageId:e.msg.id,emoji:i},`sending ack reaction`),f.r(e.msg.chatId,e.msg.id,i,{verbose:e.verbose,fromMe:!1,participant:e.msg.senderJid,accountId:e.accountId}).catch(t=>{e.warn({error:p.n(t),chatId:e.msg.chatId,messageId:e.msg.id},`failed to send ack reaction`),r.R(`WhatsApp ack reaction failed for chat ${e.msg.chatId}: ${p.n(t)}`)}))}function je(e){return e.replyToBody?`[Replying to ${e.replyToSender??`unknown sender`}${e.replyToId?` id:${e.replyToId}`:``}]\n${e.replyToBody}\n[/Replying]`:null}function Me(e){let{cfg:t,msg:r,agentId:i,previousTimestamp:a,envelope:o}=e,s=n.bt(t,i,{configured:t.channels?.whatsapp?.messagePrefix,hasAllowFrom:(t.channels?.whatsapp?.allowFrom?.length??0)>0}),c=s?`${s} `:``,l=je(r),u=`${c}${r.body}${l?`\n\n${l}`:``}`;return n.Nt({channel:`WhatsApp`,from:r.chatType===`group`?r.from:r.from?.replace(/^whatsapp:/,``),timestamp:r.timestamp,body:u,chatType:r.chatType,sender:{name:r.senderName,e164:r.senderE164,id:r.senderJid},previousTimestamp:a,envelope:o,fromMe:r.fromMe})}async function Ne(e){let i=e.cfg.commands?.useAccessGroups!==!1;if(!i)return!0;let a=e.msg.chatType===`group`,o=r.C(a?e.msg.senderE164??``:e.msg.senderE164??e.msg.from??``);if(!o)return!1;let s=t.Ha({cfg:e.cfg,accountId:e.msg.accountId}),c=s.dmPolicy??`pairing`,l=s.groupPolicy??`allowlist`,u=s.allowFrom??[],d=s.groupAllowFrom??(u.length>0?u:void 0),f=a?[]:await n.zt({provider:`whatsapp`,accountId:e.msg.accountId,dmPolicy:c});return n.Ht({isGroup:a,dmPolicy:c,groupPolicy:l,allowFrom:u.length>0?u:e.msg.selfE164?[e.msg.selfE164]:[],groupAllowFrom:d,storeAllowFrom:f,isSenderAllowed:e=>e.includes(`*`)?!0:e.map(e=>r.C(String(e))).filter(e=>!!e).includes(o),command:{useAccessGroups:i,allowTextCommands:!0,hasControlCommand:!0}}).commandAuthorized}function Pe(e){let i=t.Ha({cfg:e.cfg,accountId:e.msg.accountId});return n.Gt({dmScope:e.cfg.session?.dmScope,allowFrom:i.allowFrom,normalizeEntry:e=>r.C(e)})}async function Fe(e){let i=e.msg.conversationId??e.msg.from,{storePath:a,envelopeOptions:c,previousTimestamp:u}=n.Mt({cfg:e.cfg,agentId:e.route.agentId,sessionKey:e.route.sessionKey}),d=Me({cfg:e.cfg,msg:e.msg,agentId:e.route.agentId,previousTimestamp:u,envelope:c}),f=!1;if(e.msg.chatType===`group`){let t=e.groupHistory??e.groupHistories.get(e.groupHistoryKey)??[];t.length>0&&(d=n.F({entries:t.map(e=>({sender:e.sender,body:e.body,timestamp:e.timestamp})),currentMessage:d,excludeLast:!1,formatEntry:e=>n.Nt({channel:`WhatsApp`,from:i,timestamp:e.timestamp,body:e.body,chatType:`group`,senderLabel:e.sender,envelope:c})})),f=!(e.suppressGroupHistoryClear??!1)}let m=e.buildCombinedEchoKey({sessionKey:e.route.sessionKey,combinedBody:d});if(e.echoHas(m))return r.R(`Skipping auto-reply: detected echo for combined message`),e.echoForget(m),!1;Ae({cfg:e.cfg,msg:e.msg,agentId:e.route.agentId,sessionKey:e.route.sessionKey,conversationId:i,verbose:e.verbose,accountId:e.route.accountId,info:e.replyLogger.info.bind(e.replyLogger),warn:e.replyLogger.warn.bind(e.replyLogger)});let h=e.msg.id??x();e.replyLogger.info({connectionId:e.connectionId,correlationId:h,from:e.msg.chatType===`group`?i:e.msg.from,to:e.msg.to,body:$(d,240),mediaType:e.msg.mediaType??null,mediaPath:e.msg.mediaPath??null},`inbound web message`);let g=e.msg.chatType===`group`?i:e.msg.from,_=e.msg.mediaType?`, ${e.msg.mediaType}`:``;C.info(`Inbound message ${g} -> ${e.msg.to} (${e.msg.chatType}${_}, ${d.length} chars)`),r.B()&&C.debug(`Inbound body: ${$(d,400)}`);let v=e.msg.chatType===`group`?void 0:e.msg.senderE164?r.C(e.msg.senderE164):e.msg.from.includes(`@`)?r.S(e.msg.from):r.C(e.msg.from),y=e.maxMediaTextChunkLimit??s.f(e.cfg,`whatsapp`),b=s.d(e.cfg,`whatsapp`,e.route.accountId),S=s.i({cfg:e.cfg,channel:`whatsapp`,accountId:e.route.accountId}),ee=o.t(e.cfg,e.route.agentId),T=!1,E=!1,D=n.ot(e.msg.body,e.cfg)?await Ne({cfg:e.cfg,msg:e.msg}):void 0,O=e.cfg.messages?.responsePrefix,{onModelSelected:k,...A}=n.A({cfg:e.cfg,agentId:e.route.agentId,channel:`whatsapp`,accountId:e.route.accountId}),j=e.msg.chatType!==`group`&&!!e.msg.selfE164&&r.C(e.msg.from)===r.C(e.msg.selfE164??``),M=A.responsePrefix??(O===void 0&&j?n.yt(e.cfg,e.route.agentId):void 0),te=e.msg.chatType===`group`?(e.groupHistory??e.groupHistories.get(e.groupHistoryKey)??[]).map(e=>({sender:e.sender,body:e.body,timestamp:e.timestamp})):void 0,N=n.wt({Body:d,BodyForAgent:e.msg.body,InboundHistory:te,RawBody:e.msg.body,CommandBody:e.msg.body,From:e.msg.from,To:e.msg.to,SessionKey:e.route.sessionKey,AccountId:e.route.accountId,MessageSid:e.msg.id,ReplyToId:e.msg.replyToId,ReplyToBody:e.msg.replyToBody,ReplyToSender:e.msg.replyToSender,MediaPath:e.msg.mediaPath,MediaUrl:e.msg.mediaUrl,MediaType:e.msg.mediaType,ChatType:e.msg.chatType,ConversationLabel:e.msg.chatType===`group`?i:e.msg.from,GroupSubject:e.msg.groupSubject,GroupMembers:ye({participants:e.msg.groupParticipants,roster:e.groupMemberNames.get(e.groupHistoryKey),fallbackE164:e.msg.senderE164}),SenderName:e.msg.senderName,SenderId:e.msg.senderJid?.trim()||e.msg.senderE164,SenderE164:e.msg.senderE164,CommandAuthorized:D,WasMentioned:e.msg.wasMentioned,...e.msg.location?l.Y(e.msg.location):{},Provider:`whatsapp`,Surface:`whatsapp`,OriginatingChannel:`whatsapp`,OriginatingTo:e.msg.from}),P=Pe({cfg:e.cfg,msg:e.msg}),F=!P||P===v,I=n.K({route:e.route,sessionKey:e.route.sessionKey});v&&I===e.route.mainSessionKey&&F?Te({cfg:e.cfg,backgroundTasks:e.backgroundTasks,storeAgentId:e.route.agentId,sessionKey:e.route.mainSessionKey,channel:`whatsapp`,to:v,accountId:e.route.accountId,ctx:N,warn:e.replyLogger.warn.bind(e.replyLogger)}):v&&I===e.route.mainSessionKey&&P&&r.R(`Skipping main-session last route update for ${v} (pinned owner ${P})`);let L=t.Ar({storePath:a,sessionKey:e.route.sessionKey,ctx:N}).catch(t=>{e.replyLogger.warn({error:p.n(t),storePath:a,sessionKey:e.route.sessionKey},`failed updating session meta`)});we(e.backgroundTasks,L);let{queuedFinal:R}=await n.tt({ctx:N,cfg:e.cfg,replyResolver:e.replyResolver,dispatcherOptions:{...A,responsePrefix:M,onHeartbeatStrip:()=>{T||(T=!0,r.R(`Stripped stray HEARTBEAT_OK token from web reply`))},deliver:async(t,n)=>{if(n.kind!==`final`)return;await ke({replyResult:t,msg:e.msg,mediaLocalRoots:ee,maxMediaBytes:e.maxMediaBytes,textLimit:y,chunkMode:b,replyLogger:e.replyLogger,connectionId:e.connectionId,skipLog:!1,tableMode:S}),E=!0;let a=t.text?!0:void 0;e.rememberSentText(t.text,{combinedBody:d,combinedBodySessionKey:e.route.sessionKey,logVerboseMessage:a});let o=e.msg.chatType===`group`?i:e.msg.from??`unknown`,s=!!(t.mediaUrl||t.mediaUrls?.length);if(w.info(`Auto-replied to ${o}${s?` (media)`:``}`),r.B()){let e=t.text==null?`<media>`:$(t.text,400);w.debug(`Reply body: ${e}${s?` (media)`:``}`)}},onError:(t,n)=>{let r=n.kind===`tool`?`tool update`:n.kind===`block`?`block update`:`auto-reply`;w.error(`Failed sending web ${r} to ${e.msg.from??i}: ${p.n(t)}`)},onReplyStart:e.msg.sendComposing},replyOptions:{disableBlockStreaming:!0,onModelSelected:k}});return R?(f&&e.groupHistories.set(e.groupHistoryKey,[]),E):(f&&e.groupHistories.set(e.groupHistoryKey,[]),r.R(`Skipping auto-reply: silent token or no text/media returned from resolver`),!1)}function Ie(i){let a=async(e,t,n,r)=>Fe({cfg:i.cfg,msg:e,route:t,groupHistoryKey:n,groupHistories:i.groupHistories,groupMemberNames:i.groupMemberNames,connectionId:i.connectionId,verbose:i.verbose,maxMediaBytes:i.maxMediaBytes,replyResolver:i.replyResolver,replyLogger:i.replyLogger,backgroundTasks:i.backgroundTasks,rememberSentText:i.echoTracker.rememberText,echoHas:i.echoTracker.has,echoForget:i.echoTracker.forget,buildCombinedEchoKey:i.echoTracker.buildCombinedKey,groupHistory:r?.groupHistory,suppressGroupHistoryClear:r?.suppressGroupHistoryClear});return async o=>{let s=o.conversationId??o.from,c=Ee(o),l=n.G({cfg:t.r(),channel:`whatsapp`,accountId:o.accountId,peer:{kind:o.chatType===`group`?`group`:`direct`,id:c}}),u=o.chatType===`group`?e.Pt({channel:`whatsapp`,accountId:l.accountId,peerKind:`group`,peerId:c}):l.sessionKey;if(o.from===o.to&&r.R(`📱 Same-phone mode detected (from === to: ${o.from})`),i.echoTracker.has(o.body)){r.R(`Skipping auto-reply: detected echo (message matches recently sent text)`),i.echoTracker.forget(o.body);return}if(o.chatType===`group`){let e={From:o.from,To:o.to,SessionKey:l.sessionKey,AccountId:l.accountId,ChatType:o.chatType,ConversationLabel:s,GroupSubject:o.groupSubject,SenderName:o.senderName,SenderId:o.senderJid?.trim()||o.senderE164,SenderE164:o.senderE164,Provider:`whatsapp`,Surface:`whatsapp`,OriginatingChannel:`whatsapp`,OriginatingTo:s};if(Te({cfg:i.cfg,backgroundTasks:i.backgroundTasks,storeAgentId:l.agentId,sessionKey:l.sessionKey,channel:`whatsapp`,to:s,accountId:l.accountId,ctx:e,warn:i.replyLogger.warn.bind(i.replyLogger)}),!Ce({cfg:i.cfg,msg:o,conversationId:s,groupHistoryKey:u,agentId:l.agentId,sessionKey:l.sessionKey,baseMentionConfig:i.baseMentionConfig,authDir:i.account.authDir,groupHistories:i.groupHistories,groupHistoryLimit:i.groupHistoryLimit,groupMemberNames:i.groupMemberNames,logVerbose:r.R,replyLogger:i.replyLogger}).shouldProcess)return}else !o.senderE164&&c&&c.startsWith(`+`)&&(o.senderE164=r.C(c)??o.senderE164);await fe({cfg:i.cfg,msg:o,peerId:c,route:l,groupHistoryKey:u,groupHistories:i.groupHistories,processMessage:a})||await a(o,l,u)}}function Le(e){return e===440}async function Re(e,i=oe,a=!0,o=n.r,s=r.l,c,l={}){let f=x(),m=r.K({module:`web-auto-reply`,runId:f}),h=r.K({module:`web-heartbeat`,runId:f}),g=r.K({module:`web-reconnect`,runId:f}),_={running:!0,connected:!1,reconnectAttempts:0,lastConnectedAt:null,lastDisconnect:null,lastMessageAt:null,lastEventAt:null,lastError:null},v=()=>{l.statusSink?.({..._,lastDisconnect:_.lastDisconnect?{..._.lastDisconnect}:null})};v();let C=t.r(),w=t.Ha({cfg:C,accountId:l.accountId}),E={...C,channels:{...C.channels,whatsapp:{...C.channels?.whatsapp,ackReaction:w.ackReaction,messagePrefix:w.messagePrefix,allowFrom:w.allowFrom,groupAllowFrom:w.groupAllowFrom,groupPolicy:w.groupPolicy,textChunkLimit:w.textChunkLimit,chunkMode:w.chunkMode,mediaMaxMb:w.mediaMaxMb,blockStreaming:w.blockStreaming,groups:w.groups}}},D=t.Wa(w),O=y(E,l.heartbeatSeconds),k=b(E,l.reconnect),A=Z(E),j=E.channels?.whatsapp?.accounts?.[l.accountId??``]?.historyLimit??E.channels?.whatsapp?.historyLimit??E.messages?.groupChat?.historyLimit??50,M=new Map,te=new Map,N=ue({maxItems:100,logVerbose:r.R}),P=l.sleep??((e,t)=>n.T(e,t??c)),F=()=>c?.aborted===!0,I=c&&new Promise(e=>c.addEventListener(`abort`,()=>e(`aborted`),{once:!0})),L=process.getMaxListeners?.()??10;process.setMaxListeners&&L<50&&process.setMaxListeners(50);let R=!1,z=()=>{R=!0};process.once(`SIGINT`,z);let B=0;for(;!F();){let f=x(),y=Date.now(),b=null,C=null,L=null,V=0,H=null,ne=l.messageTimeoutMs??1800*1e3,re=l.watchdogCheckMs??60*1e3,U=new Set,ie=Ie({cfg:E,verbose:e,connectionId:f,maxMediaBytes:D,groupHistoryLimit:j,groupHistories:M,groupMemberNames:te,echoTracker:N,backgroundTasks:U,replyResolver:o??n.r,replyLogger:m,baseMentionConfig:A,account:w}),ae=n.it({cfg:E,channel:`whatsapp`}),W=await(i??oe)({verbose:e,accountId:w.accountId,authDir:w.authDir,mediaMaxMb:w.mediaMaxMb,sendReadReceipts:w.sendReadReceipts,debounceMs:ae,shouldDebounce:e=>e.mediaPath||e.mediaType||e.location||e.replyToId||e.replyToBody?!1:!n.at(e.body,E),onMessage:async e=>{V+=1,L=Date.now(),_.lastMessageAt=L,_.lastEventAt=L,v(),await ie(e)}});Object.assign(_,n.C()),_.lastError=null,v();let{e164:G}=t.Qa(w.authDir),K=n.G({cfg:E,channel:`whatsapp`,accountId:w.accountId});n.q(`WhatsApp gateway connected${G?` as ${G}`:``}.`,{sessionKey:K.sessionKey}),d.r(w.accountId,W),H=u.p(e=>{if(!De(e))return!1;let t=p.n(e);return g.warn({connectionId:f,error:t},`web reconnect: unhandled rejection from WhatsApp socket; forcing reconnect`),W.signalClose?.({status:499,isLoggedOut:!1,error:e}),!0});let q=async()=>{d.r(w.accountId,null),H&&=(H(),null),b&&clearInterval(b),C&&clearInterval(C),U.size>0&&(await Promise.allSettled(U),U.clear());try{await W.close()}catch(e){r.R(`Socket close failed: ${p.n(e)}`)}};if(a&&(b=setInterval(()=>{let e=t.Ka(w.authDir),n=L?Math.floor((Date.now()-L)/6e4):null,r={connectionId:f,reconnectAttempts:B,messagesHandled:V,lastMessageAt:L,authAgeMs:e,uptimeMs:Date.now()-y,...n!==null&&n>30?{minutesSinceLastMessage:n}:{}};n&&n>30?h.warn(r,`⚠️ web gateway heartbeat - no messages in 30+ minutes`):h.info(r,`web gateway heartbeat`)},O*1e3),C=setInterval(()=>{if(!L)return;let e=Date.now()-L;if(e<=ne)return;let t=Math.floor(e/6e4);h.warn({connectionId:f,minutesSinceLastMessage:t,lastMessageAt:new Date(L),messagesHandled:V},`Message timeout detected - forcing reconnect`),ee.warn(`No messages received in ${t}m - restarting connection`),q().catch(e=>{r.R(`Close listener failed: ${p.n(e)}`)}),W.signalClose?.({status:499,isLoggedOut:!1,error:`watchdog-timeout`})},re)),S.info(`Listening for personal WhatsApp inbound messages.`),(process.stdout.isTTY||process.stderr.isTTY)&&S.raw(`Ctrl+C to stop.`),!a){await q(),process.removeListener(`SIGINT`,z);return}let J=await Promise.race([W.onClose?.catch(e=>(g.error({error:p.n(e)},`listener.onClose rejected`),{status:500,isLoggedOut:!1,error:e}))??T(),I??T()]);if(Date.now()-y>O*1e3&&(B=0),_.reconnectAttempts=B,v(),F()||R||J===`aborted`){await q();break}let Y=(typeof J==`object`&&J&&`status`in J?J.status:void 0)??`unknown`,X=typeof J==`object`&&J&&`isLoggedOut`in J&&J.isLoggedOut,Z=p.n(J);if(_.connected=!1,_.lastEventAt=Date.now(),_.lastDisconnect={at:_.lastEventAt,status:typeof Y==`number`?Y:void 0,error:Z,loggedOut:!!X},_.lastError=Z,_.reconnectAttempts=B,v(),g.info({connectionId:f,status:Y,loggedOut:X,reconnectAttempts:B,error:Z},`web reconnect: connection closed`),n.q(`WhatsApp gateway disconnected (status ${Y??`unknown`})`,{sessionKey:K.sessionKey}),X){s.error(`WhatsApp session logged out. Run \`${t.Hl(`openclaw channels login --channel web`)}\` to relink.`),await q();break}if(Le(Y)){g.warn({connectionId:f,status:Y,error:Z},`web reconnect: non-retryable close status; stopping monitor`),s.error(`WhatsApp Web connection closed (status ${Y}: session conflict). Resolve conflicting WhatsApp Web sessions, then relink with \`${t.Hl(`openclaw channels login --channel web`)}\`. Stopping web monitoring.`),await q();break}if(B+=1,_.reconnectAttempts=B,v(),k.maxAttempts>0&&B>=k.maxAttempts){g.warn({connectionId:f,status:Y,reconnectAttempts:B,maxAttempts:k.maxAttempts},`web reconnect: max attempts reached; continuing in degraded mode`),s.error(`WhatsApp Web reconnect: max attempts reached (${B}/${k.maxAttempts}). Stopping web monitoring.`),await q();break}let Q=n.w(k,B);g.info({connectionId:f,status:Y,reconnectAttempts:B,maxAttempts:k.maxAttempts||`unlimited`,delayMs:Q},`web reconnect: scheduling retry`),s.error(`WhatsApp Web connection closed (status ${Y}). Retry ${B}/${k.maxAttempts||`∞`} in ${n.J(Q)}… (${Z})`),await q();try{await P(Q,c)}catch{break}}_.running=!1,_.connected=!1,_.lastEventAt=Date.now(),v(),process.removeListener(`SIGINT`,z)}Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return oe}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return _}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return Re}});
5
+ `);r&&(w.warn(`Media skipped; sent text-only to ${n.from}`),await n.reply(r))}}}for(let e of y)await n.reply(e)}function Ae(e){if(!e.msg.id)return;let t=e.cfg.channels?.whatsapp?.ackReaction,i=(t?.emoji??``).trim(),a=t?.direct??!0,o=t?.group??`mentions`,s=e.msg.conversationId??e.msg.from,c=e.msg.chatType===`group`?ge({cfg:e.cfg,agentId:e.agentId,sessionKey:e.sessionKey,conversationId:s}):null;n.et({emoji:i,isDirect:e.msg.chatType===`direct`,isGroup:e.msg.chatType===`group`,directEnabled:a,groupMode:o,wasMentioned:e.msg.wasMentioned===!0,groupActivated:c===`always`})&&(e.info({chatId:e.msg.chatId,messageId:e.msg.id,emoji:i},`sending ack reaction`),f.r(e.msg.chatId,e.msg.id,i,{verbose:e.verbose,fromMe:!1,participant:e.msg.senderJid,accountId:e.accountId}).catch(t=>{e.warn({error:p.n(t),chatId:e.msg.chatId,messageId:e.msg.id},`failed to send ack reaction`),r.R(`WhatsApp ack reaction failed for chat ${e.msg.chatId}: ${p.n(t)}`)}))}function je(e){return e.replyToBody?`[Replying to ${e.replyToSender??`unknown sender`}${e.replyToId?` id:${e.replyToId}`:``}]\n${e.replyToBody}\n[/Replying]`:null}function Me(e){let{cfg:t,msg:r,agentId:i,previousTimestamp:a,envelope:o}=e,s=n.bt(t,i,{configured:t.channels?.whatsapp?.messagePrefix,hasAllowFrom:(t.channels?.whatsapp?.allowFrom?.length??0)>0}),c=s?`${s} `:``,l=je(r),u=`${c}${r.body}${l?`\n\n${l}`:``}`;return n.Nt({channel:`WhatsApp`,from:r.chatType===`group`?r.from:r.from?.replace(/^whatsapp:/,``),timestamp:r.timestamp,body:u,chatType:r.chatType,sender:{name:r.senderName,e164:r.senderE164,id:r.senderJid},previousTimestamp:a,envelope:o,fromMe:r.fromMe})}async function Ne(e){let i=e.cfg.commands?.useAccessGroups!==!1;if(!i)return!0;let a=e.msg.chatType===`group`,o=r.C(a?e.msg.senderE164??``:e.msg.senderE164??e.msg.from??``);if(!o)return!1;let s=t.Ha({cfg:e.cfg,accountId:e.msg.accountId}),c=s.dmPolicy??`pairing`,l=s.groupPolicy??`allowlist`,u=s.allowFrom??[],d=s.groupAllowFrom??(u.length>0?u:void 0),f=a?[]:await n.zt({provider:`whatsapp`,accountId:e.msg.accountId,dmPolicy:c});return n.Ht({isGroup:a,dmPolicy:c,groupPolicy:l,allowFrom:u.length>0?u:e.msg.selfE164?[e.msg.selfE164]:[],groupAllowFrom:d,storeAllowFrom:f,isSenderAllowed:e=>e.includes(`*`)?!0:e.map(e=>r.C(String(e))).filter(e=>!!e).includes(o),command:{useAccessGroups:i,allowTextCommands:!0,hasControlCommand:!0}}).commandAuthorized}function Pe(e){let i=t.Ha({cfg:e.cfg,accountId:e.msg.accountId});return n.Gt({dmScope:e.cfg.session?.dmScope,allowFrom:i.allowFrom,normalizeEntry:e=>r.C(e)})}async function Fe(e){let i=e.msg.conversationId??e.msg.from,{storePath:a,envelopeOptions:c,previousTimestamp:u}=n.Mt({cfg:e.cfg,agentId:e.route.agentId,sessionKey:e.route.sessionKey}),d=Me({cfg:e.cfg,msg:e.msg,agentId:e.route.agentId,previousTimestamp:u,envelope:c}),f=!1;if(e.msg.chatType===`group`){let t=e.groupHistory??e.groupHistories.get(e.groupHistoryKey)??[];t.length>0&&(d=n.F({entries:t.map(e=>({sender:e.sender,body:e.body,timestamp:e.timestamp})),currentMessage:d,excludeLast:!1,formatEntry:e=>n.Nt({channel:`WhatsApp`,from:i,timestamp:e.timestamp,body:e.body,chatType:`group`,senderLabel:e.sender,envelope:c})})),f=!(e.suppressGroupHistoryClear??!1)}let m=e.buildCombinedEchoKey({sessionKey:e.route.sessionKey,combinedBody:d});if(e.echoHas(m))return r.R(`Skipping auto-reply: detected echo for combined message`),e.echoForget(m),!1;Ae({cfg:e.cfg,msg:e.msg,agentId:e.route.agentId,sessionKey:e.route.sessionKey,conversationId:i,verbose:e.verbose,accountId:e.route.accountId,info:e.replyLogger.info.bind(e.replyLogger),warn:e.replyLogger.warn.bind(e.replyLogger)});let h=e.msg.id??x();e.replyLogger.info({connectionId:e.connectionId,correlationId:h,from:e.msg.chatType===`group`?i:e.msg.from,to:e.msg.to,body:$(d,240),mediaType:e.msg.mediaType??null,mediaPath:e.msg.mediaPath??null},`inbound web message`);let g=e.msg.chatType===`group`?i:e.msg.from,_=e.msg.mediaType?`, ${e.msg.mediaType}`:``;C.info(`Inbound message ${g} -> ${e.msg.to} (${e.msg.chatType}${_}, ${d.length} chars)`),r.B()&&C.debug(`Inbound body: ${$(d,400)}`);let v=e.msg.chatType===`group`?void 0:e.msg.senderE164?r.C(e.msg.senderE164):e.msg.from.includes(`@`)?r.S(e.msg.from):r.C(e.msg.from),y=e.maxMediaTextChunkLimit??s.f(e.cfg,`whatsapp`),b=s.d(e.cfg,`whatsapp`,e.route.accountId),S=s.i({cfg:e.cfg,channel:`whatsapp`,accountId:e.route.accountId}),ee=o.t(e.cfg,e.route.agentId),T=!1,E=!1,D=n.ot(e.msg.body,e.cfg)?await Ne({cfg:e.cfg,msg:e.msg}):void 0,O=e.cfg.messages?.responsePrefix,{onModelSelected:k,...A}=n.A({cfg:e.cfg,agentId:e.route.agentId,channel:`whatsapp`,accountId:e.route.accountId}),j=e.msg.chatType!==`group`&&!!e.msg.selfE164&&r.C(e.msg.from)===r.C(e.msg.selfE164??``),M=A.responsePrefix??(O===void 0&&j?n.yt(e.cfg,e.route.agentId):void 0),te=e.msg.chatType===`group`?(e.groupHistory??e.groupHistories.get(e.groupHistoryKey)??[]).map(e=>({sender:e.sender,body:e.body,timestamp:e.timestamp})):void 0,N=n.wt({Body:d,BodyForAgent:e.msg.body,InboundHistory:te,RawBody:e.msg.body,CommandBody:e.msg.body,From:e.msg.from,To:e.msg.to,SessionKey:e.route.sessionKey,AccountId:e.route.accountId,MessageSid:e.msg.id,ReplyToId:e.msg.replyToId,ReplyToBody:e.msg.replyToBody,ReplyToSender:e.msg.replyToSender,MediaPath:e.msg.mediaPath,MediaUrl:e.msg.mediaUrl,MediaType:e.msg.mediaType,ChatType:e.msg.chatType,ConversationLabel:e.msg.chatType===`group`?i:e.msg.from,GroupSubject:e.msg.groupSubject,GroupMembers:ye({participants:e.msg.groupParticipants,roster:e.groupMemberNames.get(e.groupHistoryKey),fallbackE164:e.msg.senderE164}),SenderName:e.msg.senderName,SenderId:e.msg.senderJid?.trim()||e.msg.senderE164,SenderE164:e.msg.senderE164,CommandAuthorized:D,WasMentioned:e.msg.wasMentioned,...e.msg.location?l.Y(e.msg.location):{},Provider:`whatsapp`,Surface:`whatsapp`,OriginatingChannel:`whatsapp`,OriginatingTo:e.msg.from}),P=Pe({cfg:e.cfg,msg:e.msg}),F=!P||P===v,I=n.K({route:e.route,sessionKey:e.route.sessionKey});v&&I===e.route.mainSessionKey&&F?Te({cfg:e.cfg,backgroundTasks:e.backgroundTasks,storeAgentId:e.route.agentId,sessionKey:e.route.mainSessionKey,channel:`whatsapp`,to:v,accountId:e.route.accountId,ctx:N,warn:e.replyLogger.warn.bind(e.replyLogger)}):v&&I===e.route.mainSessionKey&&P&&r.R(`Skipping main-session last route update for ${v} (pinned owner ${P})`);let L=t.Ar({storePath:a,sessionKey:e.route.sessionKey,ctx:N}).catch(t=>{e.replyLogger.warn({error:p.n(t),storePath:a,sessionKey:e.route.sessionKey},`failed updating session meta`)});we(e.backgroundTasks,L);let{queuedFinal:R}=await n.tt({ctx:N,cfg:e.cfg,replyResolver:e.replyResolver,dispatcherOptions:{...A,responsePrefix:M,onHeartbeatStrip:()=>{T||(T=!0,r.R(`Stripped stray HEARTBEAT_OK token from web reply`))},deliver:async(t,n)=>{if(n.kind!==`final`)return;await ke({replyResult:t,msg:e.msg,mediaLocalRoots:ee,maxMediaBytes:e.maxMediaBytes,textLimit:y,chunkMode:b,replyLogger:e.replyLogger,connectionId:e.connectionId,skipLog:!1,tableMode:S}),E=!0;let a=t.text?!0:void 0;e.rememberSentText(t.text,{combinedBody:d,combinedBodySessionKey:e.route.sessionKey,logVerboseMessage:a});let o=e.msg.chatType===`group`?i:e.msg.from??`unknown`,s=!!(t.mediaUrl||t.mediaUrls?.length);if(w.info(`Auto-replied to ${o}${s?` (media)`:``}`),r.B()){let e=t.text==null?`<media>`:$(t.text,400);w.debug(`Reply body: ${e}${s?` (media)`:``}`)}},onError:(t,n)=>{let r=n.kind===`tool`?`tool update`:n.kind===`block`?`block update`:`auto-reply`;w.error(`Failed sending web ${r} to ${e.msg.from??i}: ${p.n(t)}`)},onReplyStart:e.msg.sendComposing},replyOptions:{disableBlockStreaming:!0,onModelSelected:k}});return R?(f&&e.groupHistories.set(e.groupHistoryKey,[]),E):(f&&e.groupHistories.set(e.groupHistoryKey,[]),r.R(`Skipping auto-reply: silent token or no text/media returned from resolver`),!1)}function Ie(i){let a=async(e,t,n,r)=>Fe({cfg:i.cfg,msg:e,route:t,groupHistoryKey:n,groupHistories:i.groupHistories,groupMemberNames:i.groupMemberNames,connectionId:i.connectionId,verbose:i.verbose,maxMediaBytes:i.maxMediaBytes,replyResolver:i.replyResolver,replyLogger:i.replyLogger,backgroundTasks:i.backgroundTasks,rememberSentText:i.echoTracker.rememberText,echoHas:i.echoTracker.has,echoForget:i.echoTracker.forget,buildCombinedEchoKey:i.echoTracker.buildCombinedKey,groupHistory:r?.groupHistory,suppressGroupHistoryClear:r?.suppressGroupHistoryClear});return async o=>{let s=o.conversationId??o.from,c=Ee(o),l=n.G({cfg:t.r(),channel:`whatsapp`,accountId:o.accountId,peer:{kind:o.chatType===`group`?`group`:`direct`,id:c}}),u=o.chatType===`group`?e.Pt({channel:`whatsapp`,accountId:l.accountId,peerKind:`group`,peerId:c}):l.sessionKey;if(o.from===o.to&&r.R(`📱 Same-phone mode detected (from === to: ${o.from})`),i.echoTracker.has(o.body)){r.R(`Skipping auto-reply: detected echo (message matches recently sent text)`),i.echoTracker.forget(o.body);return}if(o.chatType===`group`){let e={From:o.from,To:o.to,SessionKey:l.sessionKey,AccountId:l.accountId,ChatType:o.chatType,ConversationLabel:s,GroupSubject:o.groupSubject,SenderName:o.senderName,SenderId:o.senderJid?.trim()||o.senderE164,SenderE164:o.senderE164,Provider:`whatsapp`,Surface:`whatsapp`,OriginatingChannel:`whatsapp`,OriginatingTo:s};if(Te({cfg:i.cfg,backgroundTasks:i.backgroundTasks,storeAgentId:l.agentId,sessionKey:l.sessionKey,channel:`whatsapp`,to:s,accountId:l.accountId,ctx:e,warn:i.replyLogger.warn.bind(i.replyLogger)}),!Ce({cfg:i.cfg,msg:o,conversationId:s,groupHistoryKey:u,agentId:l.agentId,sessionKey:l.sessionKey,baseMentionConfig:i.baseMentionConfig,authDir:i.account.authDir,groupHistories:i.groupHistories,groupHistoryLimit:i.groupHistoryLimit,groupMemberNames:i.groupMemberNames,logVerbose:r.R,replyLogger:i.replyLogger}).shouldProcess)return}else !o.senderE164&&c&&c.startsWith(`+`)&&(o.senderE164=r.C(c)??o.senderE164);await fe({cfg:i.cfg,msg:o,peerId:c,route:l,groupHistoryKey:u,groupHistories:i.groupHistories,processMessage:a})||await a(o,l,u)}}function Le(e){return e===440}async function Re(e,i=oe,a=!0,o=n.r,s=r.l,c,l={}){let f=x(),m=r.K({module:`web-auto-reply`,runId:f}),h=r.K({module:`web-heartbeat`,runId:f}),g=r.K({module:`web-reconnect`,runId:f}),_={running:!0,connected:!1,reconnectAttempts:0,lastConnectedAt:null,lastDisconnect:null,lastMessageAt:null,lastEventAt:null,lastError:null},v=()=>{l.statusSink?.({..._,lastDisconnect:_.lastDisconnect?{..._.lastDisconnect}:null})};v();let C=t.r(),w=t.Ha({cfg:C,accountId:l.accountId}),E={...C,channels:{...C.channels,whatsapp:{...C.channels?.whatsapp,ackReaction:w.ackReaction,messagePrefix:w.messagePrefix,allowFrom:w.allowFrom,groupAllowFrom:w.groupAllowFrom,groupPolicy:w.groupPolicy,textChunkLimit:w.textChunkLimit,chunkMode:w.chunkMode,mediaMaxMb:w.mediaMaxMb,blockStreaming:w.blockStreaming,groups:w.groups}}},D=t.Wa(w),O=y(E,l.heartbeatSeconds),k=b(E,l.reconnect),A=Z(E),j=E.channels?.whatsapp?.accounts?.[l.accountId??``]?.historyLimit??E.channels?.whatsapp?.historyLimit??E.messages?.groupChat?.historyLimit??50,M=new Map,te=new Map,N=ue({maxItems:100,logVerbose:r.R}),P=l.sleep??((e,t)=>n.T(e,t??c)),F=()=>c?.aborted===!0,I=c&&new Promise(e=>c.addEventListener(`abort`,()=>e(`aborted`),{once:!0})),L=process.getMaxListeners?.()??10;process.setMaxListeners&&L<50&&process.setMaxListeners(50);let R=!1,z=()=>{R=!0};process.once(`SIGINT`,z);let B=0;for(;!F();){let f=x(),y=Date.now(),b=null,C=null,L=null,V=0,H=null,ne=l.messageTimeoutMs??1800*1e3,re=l.watchdogCheckMs??60*1e3,U=new Set,ie=Ie({cfg:E,verbose:e,connectionId:f,maxMediaBytes:D,groupHistoryLimit:j,groupHistories:M,groupMemberNames:te,echoTracker:N,backgroundTasks:U,replyResolver:o??n.r,replyLogger:m,baseMentionConfig:A,account:w}),ae=n.it({cfg:E,channel:`whatsapp`}),W=await(i??oe)({verbose:e,accountId:w.accountId,authDir:w.authDir,mediaMaxMb:w.mediaMaxMb,sendReadReceipts:w.sendReadReceipts,debounceMs:ae,shouldDebounce:e=>e.mediaPath||e.mediaType||e.location||e.replyToId||e.replyToBody?!1:!n.at(e.body,E),onMessage:async e=>{V+=1,L=Date.now(),_.lastMessageAt=L,_.lastEventAt=L,v(),await ie(e)}});Object.assign(_,n.C()),_.lastError=null,v();let{e164:G}=t.Qa(w.authDir),K=n.G({cfg:E,channel:`whatsapp`,accountId:w.accountId});n.q(`WhatsApp gateway connected${G?` as ${G}`:``}.`,{sessionKey:K.sessionKey}),d.r(w.accountId,W),H=u.p(e=>{if(!De(e))return!1;let t=p.n(e);return g.warn({connectionId:f,error:t},`web reconnect: unhandled rejection from WhatsApp socket; forcing reconnect`),W.signalClose?.({status:499,isLoggedOut:!1,error:e}),!0});let q=async()=>{d.r(w.accountId,null),H&&=(H(),null),b&&clearInterval(b),C&&clearInterval(C),U.size>0&&(await Promise.allSettled(U),U.clear());try{await W.close()}catch(e){r.R(`Socket close failed: ${p.n(e)}`)}};if(a&&(b=setInterval(()=>{let e=t.Ka(w.authDir),n=L?Math.floor((Date.now()-L)/6e4):null,r={connectionId:f,reconnectAttempts:B,messagesHandled:V,lastMessageAt:L,authAgeMs:e,uptimeMs:Date.now()-y,...n!==null&&n>30?{minutesSinceLastMessage:n}:{}};n&&n>30?h.warn(r,`⚠️ web gateway heartbeat - no messages in 30+ minutes`):h.info(r,`web gateway heartbeat`)},O*1e3),C=setInterval(()=>{if(!L)return;let e=Date.now()-L;if(e<=ne)return;let t=Math.floor(e/6e4);h.warn({connectionId:f,minutesSinceLastMessage:t,lastMessageAt:new Date(L),messagesHandled:V},`Message timeout detected - forcing reconnect`),ee.warn(`No messages received in ${t}m - restarting connection`),q().catch(e=>{r.R(`Close listener failed: ${p.n(e)}`)}),W.signalClose?.({status:499,isLoggedOut:!1,error:`watchdog-timeout`})},re)),S.info(`Listening for personal WhatsApp inbound messages.`),(process.stdout.isTTY||process.stderr.isTTY)&&S.raw(`Ctrl+C to stop.`),!a){await q(),process.removeListener(`SIGINT`,z);return}let J=await Promise.race([W.onClose?.catch(e=>(g.error({error:p.n(e)},`listener.onClose rejected`),{status:500,isLoggedOut:!1,error:e}))??T(),I??T()]);if(Date.now()-y>O*1e3&&(B=0),_.reconnectAttempts=B,v(),F()||R||J===`aborted`){await q();break}let Y=(typeof J==`object`&&J&&`status`in J?J.status:void 0)??`unknown`,X=typeof J==`object`&&J&&`isLoggedOut`in J&&J.isLoggedOut,Z=p.n(J);if(_.connected=!1,_.lastEventAt=Date.now(),_.lastDisconnect={at:_.lastEventAt,status:typeof Y==`number`?Y:void 0,error:Z,loggedOut:!!X},_.lastError=Z,_.reconnectAttempts=B,v(),g.info({connectionId:f,status:Y,loggedOut:X,reconnectAttempts:B,error:Z},`web reconnect: connection closed`),n.q(`WhatsApp gateway disconnected (status ${Y??`unknown`})`,{sessionKey:K.sessionKey}),X){s.error(`WhatsApp session logged out. Run \`${t.Hl(`openclaw channels login --channel web`)}\` to relink.`),await q();break}if(Le(Y)){g.warn({connectionId:f,status:Y,error:Z},`web reconnect: non-retryable close status; stopping monitor`),s.error(`WhatsApp Web connection closed (status ${Y}: session conflict). Resolve conflicting WhatsApp Web sessions, then relink with \`${t.Hl(`openclaw channels login --channel web`)}\`. Stopping web monitoring.`),await q();break}if(B+=1,_.reconnectAttempts=B,v(),k.maxAttempts>0&&B>=k.maxAttempts){g.warn({connectionId:f,status:Y,reconnectAttempts:B,maxAttempts:k.maxAttempts},`web reconnect: max attempts reached; continuing in degraded mode`),s.error(`WhatsApp Web reconnect: max attempts reached (${B}/${k.maxAttempts}). Stopping web monitoring.`),await q();break}let Q=n.w(k,B);g.info({connectionId:f,status:Y,reconnectAttempts:B,maxAttempts:k.maxAttempts||`unlimited`,delayMs:Q},`web reconnect: scheduling retry`),s.error(`WhatsApp Web connection closed (status ${Y}). Retry ${B}/${k.maxAttempts||`∞`} in ${n.J(Q)}… (${Z})`),await q();try{await P(Q,c)}catch{break}}_.running=!1,_.connected=!1,_.lastEventAt=Date.now(),v(),process.removeListener(`SIGINT`,z)}Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return oe}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return _}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return Re}});
@@ -2,4 +2,4 @@ require(`./paths-Bcdg3ma0.cjs`);const e=require(`./paths-D90l3h_o.cjs`),t=requir
2
2
  `).trim();if(c||=L(i),!c){let e=i?(0,h.getContentType)(i):void 0;return n.R(`Quoted message missing extractable body${e?` (type ${e})`:``}`),null}let l=r?.participant??void 0,u=l?n.m(l)??l:void 0,d=u??`unknown sender`;return{id:r?.stanzaId?String(r.stanzaId):void 0,body:c,sender:d,senderJid:l,senderE164:u}}function ae(e){return r.It({providerConfigPresent:e.providerConfigPresent,groupPolicy:e.groupPolicy,defaultGroupPolicy:e.defaultGroupPolicy})}async function W(e){let o=t.Y(),s=t.Os({cfg:o,accountId:e.accountId}),c=s.dmPolicy??`pairing`,l=s.allowFrom??[],u=await i._({provider:`whatsapp`,accountId:s.accountId,dmPolicy:c}),d=l.length===0&&e.selfE164?[e.selfE164]:[],f=l.length>0?l:d,p=s.groupAllowFrom??(l.length>0?l:void 0),m=e.from===e.selfE164,h=s.selfChatMode??n.p(e.selfE164,l),g=typeof e.pairingGraceMs==`number`&&e.pairingGraceMs>0?e.pairingGraceMs:3e4,_=typeof e.connectedAtMs==`number`&&typeof e.messageTimestampMs==`number`&&e.messageTimestampMs<e.connectedAtMs-g,v=r.Ft(o),{groupPolicy:y,providerMissingFallbackApplied:b}=ae({providerConfigPresent:o.channels?.whatsapp!==void 0,groupPolicy:s.groupPolicy,defaultGroupPolicy:v});r.Lt({providerMissingFallbackApplied:b,providerKey:`whatsapp`,accountId:s.accountId,log:e=>n.R(e)});let x=n.h(e.from),S=typeof e.senderE164==`string`?n.h(e.senderE164):null,C=i.y({isGroup:e.group,dmPolicy:c,groupPolicy:y,allowFrom:e.group?l:f,groupAllowFrom:p,storeAllowFrom:u,isSenderAllowed:t=>{if(t.includes(`*`))return!0;let r=new Set(t.map(e=>n.h(String(e))).filter(e=>!!e));return!e.group&&m?!0:e.group?!!(S&&r.has(S)):r.has(x)}});if(e.group&&C.decision!==`allow`)return C.reason===`groupPolicy=disabled`?n.R(`Blocked group message (groupPolicy: disabled)`):C.reason===`groupPolicy=allowlist (empty allowlist)`?n.R(`Blocked group message (groupPolicy: allowlist, no groupAllowFrom)`):n.R(`Blocked group message from ${e.senderE164??`unknown sender`} (groupPolicy: allowlist)`),{allowed:!1,shouldMarkRead:!1,isSelfChat:h,resolvedAccountId:s.accountId};if(!e.group){if(e.isFromMe&&!m)return n.R(`Skipping outbound DM (fromMe); no pairing reply needed.`),{allowed:!1,shouldMarkRead:!1,isSelfChat:h,resolvedAccountId:s.accountId};if(C.decision===`block`&&C.reason===`dmPolicy=disabled`)return n.R(`Blocked dm (dmPolicy: disabled)`),{allowed:!1,shouldMarkRead:!1,isSelfChat:h,resolvedAccountId:s.accountId};if(C.decision===`pairing`&&!m){let t=e.from;return _?n.R(`Skipping pairing reply for historical DM from ${t}.`):await i.f({channel:`whatsapp`,senderId:t,senderIdLine:`Your WhatsApp phone number: ${t}`,meta:{name:(e.pushName??``).trim()||void 0},upsertPairingRequest:async({id:e,meta:t})=>await a.ot({channel:`whatsapp`,id:e,accountId:s.accountId,meta:t}),onCreated:()=>{n.R(`whatsapp pairing request sender=${t} name=${e.pushName??`unknown`}`)},sendPairingReply:async t=>{await e.sock.sendMessage(e.remoteJid,{text:t})},onReplyError:e=>{n.R(`whatsapp pairing reply failed for ${t}: ${String(e)}`)}}),{allowed:!1,shouldMarkRead:!1,isSelfChat:h,resolvedAccountId:s.accountId}}if(C.decision!==`allow`)return n.R(`Blocked unauthorized sender ${e.from} (dmPolicy=${c})`),{allowed:!1,shouldMarkRead:!1,isSelfChat:h,resolvedAccountId:s.accountId}}return{allowed:!0,shouldMarkRead:!0,isSelfChat:h,resolvedAccountId:s.accountId}}function G(e){return(0,h.normalizeMessageContent)(e)}function K(e){let t=e.imageMessage?.mimetype??e.videoMessage?.mimetype??e.documentMessage?.mimetype??e.audioMessage?.mimetype??e.stickerMessage?.mimetype??void 0;if(t)return t;if(e.audioMessage)return`audio/ogg; codecs=opus`;if(e.imageMessage)return`image/jpeg`;if(e.videoMessage)return`video/mp4`;if(e.stickerMessage)return`image/webp`}async function q(e,t){let r=G(e.message);if(!r)return;let i=K(r),a=r.documentMessage?.fileName??void 0;if(!(!r.imageMessage&&!r.videoMessage&&!r.documentMessage&&!r.audioMessage&&!r.stickerMessage))try{return{buffer:await(0,h.downloadMediaMessage)(e,`buffer`,{},{reuploadRequest:t.updateMediaMessage,logger:t.logger}),mimetype:i,fileName:a}}catch(e){n.R(`downloadMediaMessage failed: ${String(e)}`);return}}function J(e){l.n({channel:`whatsapp`,accountId:e,direction:`outbound`})}function Y(e){return typeof e==`object`&&e&&`key`in e?String(e.key?.id??`unknown`):`unknown`}function X(e){return{sendMessage:async(t,r,i,a,o)=>{let s=n.T(t),c;if(i&&a)if(a.startsWith(`image/`))c={image:i,caption:r||void 0,mimetype:a};else if(a.startsWith(`audio/`))c={audio:i,ptt:!0,mimetype:a};else if(a.startsWith(`video/`)){let e=o?.gifPlayback;c={video:i,caption:r||void 0,mimetype:a,...e?{gifPlayback:!0}:{}}}else c={document:i,fileName:o?.fileName?.trim()||`file`,caption:r||void 0,mimetype:a};else c={text:r};let l=await e.sock.sendMessage(s,c);return J(o?.accountId??e.defaultAccountId),{messageId:Y(l)}},sendPoll:async(t,r)=>{let i=n.T(t),a=await e.sock.sendMessage(i,{poll:{name:r.question,values:r.options,selectableCount:r.maxSelections??1}});return J(e.defaultAccountId),{messageId:Y(a)}},sendReaction:async(t,r,i,a,o)=>{let s=n.T(t);await e.sock.sendMessage(s,{react:{text:i,key:{remoteJid:s,id:r,fromMe:a,participant:o?n.T(o):void 0}}})},sendComposingTo:async t=>{let r=n.T(t);await e.sock.sendPresenceUpdate(`composing`,r)}}}async function oe(e){let r=n.K({module:`web-inbound`}),o=n.O(`gateway/channels/whatsapp`).child(`inbound`),s=await p.t(!1,e.verbose,{authDir:e.authDir});await p.i(s);let c=Date.now(),u=null,d=new Promise(e=>{u=e}),f=e=>{if(!u)return;let t=u;u=null,t(e)};try{await s.sendPresenceUpdate(`available`),n.B()&&n.R(`Sent global 'available' presence on connect`)}catch(e){n.R(`Failed to send 'available' presence on connect: ${String(e)}`)}let m=s.user?.id,g=m?n.m(m):null,_=i.E({debounceMs:e.debounceMs??0,buildKey:e=>{let t=e.chatType===`group`?e.senderJid??e.senderE164??e.senderName??e.from:e.from;if(!t)return null;let n=e.chatType===`group`?e.chatId:e.from;return`${e.accountId}:${n}:${t}`},shouldDebounce:e.shouldDebounce,onFlush:async t=>{let n=t.at(-1);if(!n)return;if(t.length===1){await e.onMessage(n);return}let r=new Set;for(let e of t)for(let t of e.mentionedJids??[])r.add(t);let i=t.map(e=>e.body).filter(Boolean).join(`
3
3
  `),a={...n,body:i,mentionedJids:r.size>0?Array.from(r):void 0};await e.onMessage(a)},onError:e=>{r.error({error:String(e)},`failed handling inbound web message`),o.error(`Failed handling inbound web message: ${String(e)}`)}}),v=new Map,y=300*1e3,b=s.signalRepository?.lidMapping,x=async t=>n.v(t,{authDir:e.authDir,lidLookup:b}),S=async e=>{let t=v.get(e);if(t&&t.expires>Date.now())return t;try{let t=await s.groupMetadata(e),n=(await Promise.all(t.participants?.map(async e=>await x(e.id)??e.id)??[])).filter(Boolean)??[],r={subject:t.subject,participants:n,expires:Date.now()+y};return v.set(e,r),r}catch(t){return n.R(`Failed to fetch group metadata for ${e}: ${String(t)}`),{expires:Date.now()+y}}},C=async t=>{let n=t.key?.id??void 0,r=t.key?.remoteJid;if(!r||r.endsWith(`@status`)||r.endsWith(`@broadcast`))return null;let i=(0,h.isJidGroup)(r)===!0;if(n&&D(`${e.accountId}:${r}:${n}`))return null;let a=t.key?.participant??void 0,o=i?r:await x(r);if(!o)return null;let l=i?a?await x(a):null:o,u,d;if(i){let e=await S(r);u=e.subject,d=e.participants}let f=t.messageTimestamp?Number(t.messageTimestamp)*1e3:void 0,p=await W({accountId:e.accountId,from:o,selfE164:g,senderE164:l,group:i,pushName:t.pushName??void 0,isFromMe:!!t.key?.fromMe,messageTimestampMs:f,connectedAtMs:c,sock:{sendMessage:(e,t)=>s.sendMessage(e,t)},remoteJid:r});return p.allowed?{id:n,remoteJid:r,group:i,participantJid:a,from:o,senderE164:l,groupSubject:u,groupParticipants:d,messageTimestampMs:f,access:p}:null},w=async t=>{let{id:r,remoteJid:i,participantJid:a,access:o}=t;if(r&&!o.isSelfChat&&e.sendReadReceipts!==!1)try{await s.readMessages([{remoteJid:i,id:r,participant:a,fromMe:!1}]),n.B()&&n.R(`Marked message ${r} as read for ${i}${a?` (participant ${a})`:``}`)}catch(e){n.R(`Failed to mark message ${r} read: ${String(e)}`)}else r&&o.isSelfChat&&n.B()&&n.R(`Self-chat mode: skipping read receipt for ${r}`)},ee=async r=>{let i=U(r.message??void 0),o=i?a.$(i):void 0,c=I(r.message??void 0);if(o&&(c=[c,o].filter(Boolean).join(`
4
4
  `).trim()),!c&&(c=L(r.message??void 0),!c))return null;let l=ie(r.message),u,d,f;try{let n=await q(r,s);if(n){let r=(typeof e.mediaMaxMb==`number`&&e.mediaMaxMb>0?e.mediaMaxMb:50)*1024*1024;u=(await t._i(n.buffer,n.mimetype,`inbound`,r,n.fileName)).path,d=n.mimetype,f=n.fileName}}catch(e){n.R(`Inbound media download failed: ${String(e)}`)}return{body:c,location:i??void 0,replyContext:l,mediaPath:u,mediaType:d,mediaFileName:f}},T=async(e,t,i)=>{let a=t.remoteJid,c=async()=>{try{await s.sendPresenceUpdate(`composing`,a)}catch(e){n.R(`Presence update failed: ${String(e)}`)}},l=async e=>{await s.sendMessage(a,{text:e})},u=async e=>{await s.sendMessage(a,e)},d=t.messageTimestampMs,f=F(e.message),p=e.pushName??void 0;r.info({from:t.from,to:g??`me`,body:i.body,mediaPath:i.mediaPath,mediaType:i.mediaType,mediaFileName:i.mediaFileName,timestamp:d},`inbound message`);let h={id:t.id,from:t.from,conversationId:t.from,to:g??`me`,accountId:t.access.resolvedAccountId,body:i.body,pushName:p,timestamp:d,chatType:t.group?`group`:`direct`,chatId:t.remoteJid,senderJid:t.participantJid,senderE164:t.senderE164??void 0,senderName:p,replyToId:i.replyContext?.id,replyToBody:i.replyContext?.body,replyToSender:i.replyContext?.sender,replyToSenderJid:i.replyContext?.senderJid,replyToSenderE164:i.replyContext?.senderE164,groupSubject:t.groupSubject,groupParticipants:t.groupParticipants,mentionedJids:f??void 0,selfJid:m,selfE164:g,fromMe:!!e.key?.fromMe,location:i.location??void 0,sendComposing:c,reply:l,sendMedia:u,mediaPath:i.mediaPath,mediaType:i.mediaType,mediaFileName:i.mediaFileName};try{Promise.resolve(_.enqueue(h)).catch(e=>{r.error({error:String(e)},`failed handling inbound web message`),o.error(`Failed handling inbound web message: ${String(e)}`)})}catch(e){r.error({error:String(e)},`failed handling inbound web message`),o.error(`Failed handling inbound web message: ${String(e)}`)}},E=async t=>{if(!(t.type!==`notify`&&t.type!==`append`))for(let n of t.messages??[]){l.n({channel:`whatsapp`,accountId:e.accountId,direction:`inbound`});let r=await C(n);if(!r||(await w(r),t.type===`append`))continue;let i=await ee(n);i&&await T(n,r,i)}};s.ev.on(`messages.upsert`,E);let O=e=>{try{if(e.connection===`close`){let t=p.r(e.lastDisconnect?.error);f({status:t,isLoggedOut:t===h.DisconnectReason.loggedOut,error:e.lastDisconnect?.error})}}catch(e){r.error({error:String(e)},`connection.update handler error`),f({status:void 0,isLoggedOut:!1,error:e})}};return s.ev.on(`connection.update`,O),{close:async()=>{try{let e=s.ev,t=E,n=O;typeof e.off==`function`?(e.off(`messages.upsert`,t),e.off(`connection.update`,n)):typeof e.removeListener==`function`&&(e.removeListener(`messages.upsert`,t),e.removeListener(`connection.update`,n)),s.ws?.close()}catch(e){n.R(`Socket close failed: ${String(e)}`)}},onClose:d,signalClose:e=>{f(e??{status:void 0,isLoggedOut:!1,error:`closed`})},...X({sock:{sendMessage:(e,t)=>s.sendMessage(e,t),sendPresenceUpdate:(e,t)=>s.sendPresenceUpdate(e,t)},defaultAccountId:e.accountId})}}function Z(e,t){return{mentionRegexes:i.F(e,t),allowFrom:e.channels?.whatsapp?.allowFrom}}function Q(e,t){let r=t?{authDir:t}:void 0;return{normalizedMentions:e.mentionedJids?.length?e.mentionedJids.map(e=>n.m(e,r)??e).filter(Boolean):[],selfE164:e.selfE164??(e.selfJid?n.m(e.selfJid,r):null),selfJid:e.selfJid?e.selfJid.replace(/:\\d+/,``):null}}function se(e,t,r){let a=e=>i.I(e),o=n.p(r.selfE164,t.allowFrom);if((e.mentionedJids?.length??0)>0&&!o)return!!(r.selfE164&&r.normalizedMentions.includes(r.selfE164)||r.selfJid&&r.normalizedMentions.includes(r.selfJid));let s=a(e.body);if(t.mentionRegexes.some(e=>e.test(s)))return!0;if(r.selfE164){let t=r.selfE164.replace(/\D/g,``);if(t){if(s.replace(/[^\d]/g,``).includes(t))return!0;let n=e.body.replace(/[\s-]/g,``);if(RegExp(`\\+?${t}`,`i`).test(n))return!0}}return!1}function ce(e,t,n){let r=Q(e,n);return{wasMentioned:se(e,t,r),details:{from:e.from,body:e.body,bodyClean:i.I(e.body),mentionedJids:e.mentionedJids??null,normalizedMentionedJids:r.normalizedMentions.length?r.normalizedMentions:null,selfJid:e.selfJid??null,selfJidBare:r.selfJid,selfE164:e.selfE164??null,resolvedSelfE164:r.selfE164}}}function le(e,t){let r=e.allowFrom;return(Array.isArray(r)&&r.length>0?r:t?[t]:[]).filter(e=>!!(e&&e!==`*`)).map(e=>n.h(e)).filter(e=>!!e)}function ue(e){let t=new Set,n=Math.max(1,e.maxItems??100),r=e=>`combined:${e.sessionKey}:${e.combinedBody}`,i=()=>{for(;t.size>n;){let e=t.values().next().value;if(!e)break;t.delete(e)}};return{rememberText:(n,a)=>{n&&(t.add(n),a.combinedBody&&a.combinedBodySessionKey&&t.add(r({sessionKey:a.combinedBodySessionKey,combinedBody:a.combinedBody})),a.logVerboseMessage&&e.logVerbose?.(`Added to echo detection set (size now: ${t.size}): ${n.substring(0,50)}...`),i())},has:e=>t.has(e),forget:e=>{t.delete(e)},buildCombinedKey:r}}function de(t){let n=i.k({agentId:t.agentId,channel:`whatsapp`,accountId:t.route.accountId,peer:{kind:t.msg.chatType===`group`?`group`:`direct`,id:t.peerId},dmScope:t.cfg.session?.dmScope,identityLinks:t.cfg.session?.identityLinks}),r=e.Dt({agentId:t.agentId,mainKey:e.Et});return{sessionKey:n,mainSessionKey:r,lastRoutePolicy:i.A({sessionKey:n,mainSessionKey:r})}}async function fe(t){let n=t.cfg.broadcast?.[t.peerId];if(!n||!Array.isArray(n)||n.length===0)return!1;let r=t.cfg.broadcast?.strategy||`parallel`;C.info(`Broadcasting message to ${n.length} agents (${r})`);let i=t.cfg.agents?.list?.map(t=>e.Mt(t.id)),a=(i?.length??0)>0,o=t.msg.chatType===`group`?t.groupHistories.get(t.groupHistoryKey)??[]:void 0,s=async n=>{let r=e.Mt(n);if(a&&!i?.includes(r))return C.warn(`Broadcast agent ${n} not found in agents.list; skipping`),!1;let s=de({cfg:t.cfg,msg:t.msg,route:t.route,peerId:t.peerId,agentId:r}),c={...t.route,agentId:r,...s};try{return await t.processMessage(t.msg,c,t.groupHistoryKey,{groupHistory:o,suppressGroupHistoryClear:!0})}catch(e){return C.error(`Broadcast agent ${n} failed: ${p.n(e)}`),!1}};if(r===`sequential`)for(let e of n)await s(e);else await Promise.allSettled(n.map(s));return t.msg.chatType===`group`&&t.groupHistories.set(t.groupHistoryKey,[]),!0}function pe(e,t,n){let r=e;for(let e of t)r=r.replace(e,` `);if(n){let e=n.replace(/\D/g,``);if(e){let t=RegExp(`\\+?${e}`,`g`);r=r.replace(t,` `)}}return r.replace(/\s+/g,` `).trim()}function me(e,n){let r=t.So({From:n,ChatType:`group`,Provider:`whatsapp`})?.id,i=e.channels?.whatsapp,a=!!(i?.groupAllowFrom?.length||i?.allowFrom?.length);return t.Vo({cfg:e,channel:`whatsapp`,groupId:r??n,hasGroupAllowFrom:a})}function he(e,n){let r=t.So({From:n,ChatType:`group`,Provider:`whatsapp`})?.id;return t.Ho({cfg:e,channel:`whatsapp`,groupId:r??n})}function ge(n){let r=t.c(e.s(n.cfg.session?.store,{agentId:n.agentId}))[n.sessionKey],a=he(n.cfg,n.conversationId)?`mention`:`always`;return i.a(r?.groupActivation)??a}function _e(e,t,r){for(let i of e){let e=n.h(i)??i;!e||t.has(e)||(t.add(e),r.push(e))}}function ve(e,t,r,i){if(!r||!i)return;let a=n.h(r)??r;if(!a)return;let o=e.get(t);o||(o=new Map,e.set(t,o)),o.set(a,i)}function ye(e){let{participants:t,roster:r,fallbackE164:i}=e,a=new Set,o=[];if(t?.length&&_e(t,a,o),r&&_e(r.keys(),a,o),o.length===0&&i){let e=n.h(i)??i;e&&o.push(e)}if(o.length!==0)return o.map(e=>{let t=r?.get(e);return t?`${t} (${e})`:e}).join(`, `)}function be(e,t){let r=n.h(t.senderE164??``);return r?le(e,t.selfE164??void 0).includes(r):!1}function xe(e){let t=e.msg.senderName&&e.msg.senderE164?`${e.msg.senderName} (${e.msg.senderE164})`:e.msg.senderName??e.msg.senderE164??`Unknown`;i.g({historyMap:e.groupHistories,historyKey:e.groupHistoryKey,limit:e.groupHistoryLimit,entry:{sender:t,body:e.msg.body,timestamp:e.msg.timestamp,id:e.msg.id,senderJid:e.msg.senderJid}})}function Se(e,t){return e.logVerbose(t),xe({msg:e.msg,groupHistories:e.groupHistories,groupHistoryKey:e.groupHistoryKey,groupHistoryLimit:e.groupHistoryLimit}),{shouldProcess:!1}}function Ce(e){let t=me(e.cfg,e.conversationId);if(t.allowlistEnabled&&!t.allowed)return e.logVerbose(`Skipping group message ${e.conversationId} (not in allowlist)`),{shouldProcess:!1};ve(e.groupMemberNames,e.groupHistoryKey,e.msg.senderE164,e.msg.senderName);let r=Z(e.cfg,e.agentId),a=pe(e.msg.body,r.mentionRegexes,e.msg.selfE164),o=i.o(a),s=be(e.baseMentionConfig,e.msg),c=s&&i.N(a,e.cfg);if(o.hasCommand&&!s)return Se(e,`Ignoring /activation from non-owner in group ${e.conversationId}`);let l=ce(e.msg,r,e.authDir);e.replyLogger.debug({conversationId:e.conversationId,wasMentioned:l.wasMentioned,...l.details},`group mention debug`);let u=l.wasMentioned,d=ge({cfg:e.cfg,agentId:e.agentId,sessionKey:e.sessionKey,conversationId:e.conversationId})!==`always`,f=e.msg.selfJid?.replace(/:\\d+/,``),p=e.msg.replyToSenderJid?.replace(/:\\d+/,``),m=e.msg.selfE164?n.h(e.msg.selfE164):null,h=e.msg.replyToSenderE164?n.h(e.msg.replyToSenderE164):null,g=i.p({requireMention:d,canDetectMention:!0,wasMentioned:u,implicitMention:!!(f&&p&&f===p||m&&h&&m===h),shouldBypassMention:c});return e.msg.wasMentioned=g.effectiveWasMentioned,!c&&d&&g.shouldSkip?Se(e,`Group message stored for context (no mention detected) in ${e.conversationId}: ${e.msg.body}`):{shouldProcess:!0}}function we(e,t){e.add(t),t.finally(()=>{e.delete(t)})}function Te(n){let r=e.s(n.cfg.session?.store,{agentId:n.storeAgentId}),i=t.f({storePath:r,sessionKey:n.sessionKey,deliveryContext:{channel:n.channel,to:n.to,accountId:n.accountId},ctx:n.ctx}).catch(e=>{n.warn({error:p.n(e),storePath:r,sessionKey:n.sessionKey,to:n.to},`failed updating last route`)});we(n.backgroundTasks,i)}function Ee(e){return e.chatType===`group`?e.conversationId??e.from:e.senderE164?n.h(e.senderE164)??e.senderE164:e.from.includes(`@`)?n.m(e.from)??e.from:n.h(e.from)??e.from}function $(e,t=400){return!e||e.length<=t?e:`${e.slice(0,t)}… (truncated ${e.length-t} chars)`}function De(e){let t=(e instanceof Error?`${e.message}\n${e.stack??``}`:(e=>{if(e==null)return``;if(typeof e==`string`)return e;if(e instanceof Error)return`${e.message}\n${e.stack??``}`;if(typeof e==`object`)try{return JSON.stringify(e)}catch{return Object.prototype.toString.call(e)}return typeof e==`number`||typeof e==`boolean`||typeof e==`bigint`?String(e):typeof e==`symbol`?e.description??e.toString():typeof e==`function`?e.name?`[function ${e.name}]`:`[function]`:Object.prototype.toString.call(e)})(e)).toLowerCase();return t.includes(`unsupported state or unable to authenticate data`)||t.includes(`bad mac`)?t.includes(`@whiskeysockets/baileys`)||t.includes(`baileys`)||t.includes(`noise-handler`)||t.includes(`aesdecryptgcm`):!1}function Oe(e){if(e.isReasoning===!0)return!0;let t=e.text;return typeof t==`string`?t.trimStart().toLowerCase().startsWith(`reasoning:`):!1}async function ke(e){let{replyResult:t,msg:r,maxMediaBytes:i,textLimit:a,replyLogger:o,connectionId:s,skipLog:l}=e,d=Date.now();if(Oe(t)){w.debug(`Suppressed reasoning payload to ${r.from}`);return}let m=e.tableMode??`code`,h=e.chunkMode??`length`,g=c.d(f.i(u.t(t.text||``,m)),a,h),_=t.mediaUrls?.length?t.mediaUrls:t.mediaUrl?[t.mediaUrl]:[],v=async(e,t,i=3)=>{let a;for(let o=1;o<=i;o++)try{return await e()}catch(e){a=e;let s=p.n(e),c=o===i;if(!/closed|reset|timed\s*out|disconnect/i.test(s)||c)throw e;let l=500*o;n.R(`Retrying ${t} to ${r.from} after failure (${o}/${i-1}) in ${l}ms: ${s}`),await n.C(l)}throw a};if(_.length===0&&g.length){let e=g.length;for(let[t,n]of g.entries()){let i=Date.now();if(await v(()=>r.reply(n),`text`),!l){let n=Date.now()-i;w.debug(`Sent chunk ${t+1}/${e} to ${r.from} (${n.toFixed(0)}ms)`)}}o.info({correlationId:r.id??x(),connectionId:s??null,to:r.from,from:r.to,text:$(t.text,240),mediaUrl:null,mediaSizeBytes:null,mediaKind:null,durationMs:Date.now()-d},`auto-reply sent (text)`);return}let y=[...g];for(let[t,a]of _.entries()){let l=t===0&&y.shift()||void 0;try{let t=await c.a(a,{maxBytes:i,localRoots:e.mediaLocalRoots});if(n.B()&&(n.R(`Web auto-reply media size: ${(t.buffer.length/(1024*1024)).toFixed(2)}MB`),n.R(`Web auto-reply media source: ${a} (kind ${t.kind})`)),t.kind===`image`)await v(()=>r.sendMedia({image:t.buffer,caption:l,mimetype:t.contentType}),`media:image`);else if(t.kind===`audio`)await v(()=>r.sendMedia({audio:t.buffer,ptt:!0,mimetype:t.contentType,caption:l}),`media:audio`);else if(t.kind===`video`)await v(()=>r.sendMedia({video:t.buffer,caption:l,mimetype:t.contentType}),`media:video`);else{let e=t.fileName??a.split(`/`).pop()??`file`,n=t.contentType??`application/octet-stream`;await v(()=>r.sendMedia({document:t.buffer,fileName:e,caption:l,mimetype:n}),`media:document`)}w.info(`Sent media reply to ${r.from} (${(t.buffer.length/(1024*1024)).toFixed(2)}MB)`),o.info({correlationId:r.id??x(),connectionId:s??null,to:r.from,from:r.to,text:l??null,mediaUrl:a,mediaSizeBytes:t.buffer.length,mediaKind:t.kind,durationMs:Date.now()-d},`auto-reply sent (media)`)}catch(e){if(w.error(`Failed sending web media to ${r.from}: ${p.n(e)}`),o.warn({err:e,mediaUrl:a},`failed to send web media reply`),t===0){let t=e instanceof Error?`⚠️ Media failed: ${e.message}`:`⚠️ Media failed.`,n=[y.shift()??l??``,t].filter(Boolean).join(`
5
- `);n&&(w.warn(`Media skipped; sent text-only to ${r.from}`),await r.reply(n))}}}for(let e of y)await r.reply(e)}function Ae(e){if(!e.msg.id)return;let t=e.cfg.channels?.whatsapp?.ackReaction,r=(t?.emoji??``).trim(),a=t?.direct??!0,o=t?.group??`mentions`,s=e.msg.conversationId??e.msg.from,c=e.msg.chatType===`group`?ge({cfg:e.cfg,agentId:e.agentId,sessionKey:e.sessionKey,conversationId:s}):null;i.C({emoji:r,isDirect:e.msg.chatType===`direct`,isGroup:e.msg.chatType===`group`,directEnabled:a,groupMode:o,wasMentioned:e.msg.wasMentioned===!0,groupActivated:c===`always`})&&(e.info({chatId:e.msg.chatId,messageId:e.msg.id,emoji:r},`sending ack reaction`),f.r(e.msg.chatId,e.msg.id,r,{verbose:e.verbose,fromMe:!1,participant:e.msg.senderJid,accountId:e.accountId}).catch(t=>{e.warn({error:p.n(t),chatId:e.msg.chatId,messageId:e.msg.id},`failed to send ack reaction`),n.R(`WhatsApp ack reaction failed for chat ${e.msg.chatId}: ${p.n(t)}`)}))}function je(e){return e.replyToBody?`[Replying to ${e.replyToSender??`unknown sender`}${e.replyToId?` id:${e.replyToId}`:``}]\n${e.replyToBody}\n[/Replying]`:null}function Me(e){let{cfg:t,msg:n,agentId:r,previousTimestamp:a,envelope:o}=e,s=i.q(t,r,{configured:t.channels?.whatsapp?.messagePrefix,hasAllowFrom:(t.channels?.whatsapp?.allowFrom?.length??0)>0}),c=s?`${s} `:``,l=je(n),u=`${c}${n.body}${l?`\n\n${l}`:``}`;return i.O({channel:`WhatsApp`,from:n.chatType===`group`?n.from:n.from?.replace(/^whatsapp:/,``),timestamp:n.timestamp,body:u,chatType:n.chatType,sender:{name:n.senderName,e164:n.senderE164,id:n.senderJid},previousTimestamp:a,envelope:o,fromMe:n.fromMe})}async function Ne(e){let r=e.cfg.commands?.useAccessGroups!==!1;if(!r)return!0;let a=e.msg.chatType===`group`,o=n.h(a?e.msg.senderE164??``:e.msg.senderE164??e.msg.from??``);if(!o)return!1;let s=t.Os({cfg:e.cfg,accountId:e.msg.accountId}),c=s.dmPolicy??`pairing`,l=s.groupPolicy??`allowlist`,u=s.allowFrom??[],d=s.groupAllowFrom??(u.length>0?u:void 0),f=a?[]:await i._({provider:`whatsapp`,accountId:e.msg.accountId,dmPolicy:c});return i.v({isGroup:a,dmPolicy:c,groupPolicy:l,allowFrom:u.length>0?u:e.msg.selfE164?[e.msg.selfE164]:[],groupAllowFrom:d,storeAllowFrom:f,isSenderAllowed:e=>e.includes(`*`)?!0:e.map(e=>n.h(String(e))).filter(e=>!!e).includes(o),command:{useAccessGroups:r,allowTextCommands:!0,hasControlCommand:!0}}).commandAuthorized}function Pe(e){let r=t.Os({cfg:e.cfg,accountId:e.msg.accountId});return i.b({dmScope:e.cfg.session?.dmScope,allowFrom:r.allowFrom,normalizeEntry:e=>n.h(e)})}async function Fe(e){let r=e.msg.conversationId??e.msg.from,{storePath:o,envelopeOptions:l,previousTimestamp:u}=i.c({cfg:e.cfg,agentId:e.route.agentId,sessionKey:e.route.sessionKey}),d=Me({cfg:e.cfg,msg:e.msg,agentId:e.route.agentId,previousTimestamp:u,envelope:l}),f=!1;if(e.msg.chatType===`group`){let t=e.groupHistory??e.groupHistories.get(e.groupHistoryKey)??[];t.length>0&&(d=i.h({entries:t.map(e=>({sender:e.sender,body:e.body,timestamp:e.timestamp})),currentMessage:d,excludeLast:!1,formatEntry:e=>i.O({channel:`WhatsApp`,from:r,timestamp:e.timestamp,body:e.body,chatType:`group`,senderLabel:e.sender,envelope:l})})),f=!(e.suppressGroupHistoryClear??!1)}let m=e.buildCombinedEchoKey({sessionKey:e.route.sessionKey,combinedBody:d});if(e.echoHas(m))return n.R(`Skipping auto-reply: detected echo for combined message`),e.echoForget(m),!1;Ae({cfg:e.cfg,msg:e.msg,agentId:e.route.agentId,sessionKey:e.route.sessionKey,conversationId:r,verbose:e.verbose,accountId:e.route.accountId,info:e.replyLogger.info.bind(e.replyLogger),warn:e.replyLogger.warn.bind(e.replyLogger)});let h=e.msg.id??x();e.replyLogger.info({connectionId:e.connectionId,correlationId:h,from:e.msg.chatType===`group`?r:e.msg.from,to:e.msg.to,body:$(d,240),mediaType:e.msg.mediaType??null,mediaPath:e.msg.mediaPath??null},`inbound web message`);let g=e.msg.chatType===`group`?r:e.msg.from,_=e.msg.mediaType?`, ${e.msg.mediaType}`:``;C.info(`Inbound message ${g} -> ${e.msg.to} (${e.msg.chatType}${_}, ${d.length} chars)`),n.B()&&C.debug(`Inbound body: ${$(d,400)}`);let v=e.msg.chatType===`group`?void 0:e.msg.senderE164?n.h(e.msg.senderE164):e.msg.from.includes(`@`)?n.m(e.msg.from):n.h(e.msg.from),y=e.maxMediaTextChunkLimit??c.h(e.cfg,`whatsapp`),b=c.m(e.cfg,`whatsapp`,e.route.accountId),S=c.s({cfg:e.cfg,channel:`whatsapp`,accountId:e.route.accountId}),ee=s.t(e.cfg,e.route.agentId),T=!1,E=!1,D=i.P(e.msg.body,e.cfg)?await Ne({cfg:e.cfg,msg:e.msg}):void 0,O=e.cfg.messages?.responsePrefix,{onModelSelected:k,...A}=i.m({cfg:e.cfg,agentId:e.route.agentId,channel:`whatsapp`,accountId:e.route.accountId}),j=e.msg.chatType!==`group`&&!!e.msg.selfE164&&n.h(e.msg.from)===n.h(e.msg.selfE164??``),M=A.responsePrefix??(O===void 0&&j?i.K(e.cfg,e.route.agentId):void 0),te=e.msg.chatType===`group`?(e.groupHistory??e.groupHistories.get(e.groupHistoryKey)??[]).map(e=>({sender:e.sender,body:e.body,timestamp:e.timestamp})):void 0,N=i.J({Body:d,BodyForAgent:e.msg.body,InboundHistory:te,RawBody:e.msg.body,CommandBody:e.msg.body,From:e.msg.from,To:e.msg.to,SessionKey:e.route.sessionKey,AccountId:e.route.accountId,MessageSid:e.msg.id,ReplyToId:e.msg.replyToId,ReplyToBody:e.msg.replyToBody,ReplyToSender:e.msg.replyToSender,MediaPath:e.msg.mediaPath,MediaUrl:e.msg.mediaUrl,MediaType:e.msg.mediaType,ChatType:e.msg.chatType,ConversationLabel:e.msg.chatType===`group`?r:e.msg.from,GroupSubject:e.msg.groupSubject,GroupMembers:ye({participants:e.msg.groupParticipants,roster:e.groupMemberNames.get(e.groupHistoryKey),fallbackE164:e.msg.senderE164}),SenderName:e.msg.senderName,SenderId:e.msg.senderJid?.trim()||e.msg.senderE164,SenderE164:e.msg.senderE164,CommandAuthorized:D,WasMentioned:e.msg.wasMentioned,...e.msg.location?a.et(e.msg.location):{},Provider:`whatsapp`,Surface:`whatsapp`,OriginatingChannel:`whatsapp`,OriginatingTo:e.msg.from}),P=Pe({cfg:e.cfg,msg:e.msg}),F=!P||P===v,I=i.M({route:e.route,sessionKey:e.route.sessionKey});v&&I===e.route.mainSessionKey&&F?Te({cfg:e.cfg,backgroundTasks:e.backgroundTasks,storeAgentId:e.route.agentId,sessionKey:e.route.mainSessionKey,channel:`whatsapp`,to:v,accountId:e.route.accountId,ctx:N,warn:e.replyLogger.warn.bind(e.replyLogger)}):v&&I===e.route.mainSessionKey&&P&&n.R(`Skipping main-session last route update for ${v} (pinned owner ${P})`);let L=t.u({storePath:o,sessionKey:e.route.sessionKey,ctx:N}).catch(t=>{e.replyLogger.warn({error:p.n(t),storePath:o,sessionKey:e.route.sessionKey},`failed updating session meta`)});we(e.backgroundTasks,L);let{queuedFinal:R}=await i.w({ctx:N,cfg:e.cfg,replyResolver:e.replyResolver,dispatcherOptions:{...A,responsePrefix:M,onHeartbeatStrip:()=>{T||(T=!0,n.R(`Stripped stray HEARTBEAT_OK token from web reply`))},deliver:async(t,i)=>{if(i.kind!==`final`)return;await ke({replyResult:t,msg:e.msg,mediaLocalRoots:ee,maxMediaBytes:e.maxMediaBytes,textLimit:y,chunkMode:b,replyLogger:e.replyLogger,connectionId:e.connectionId,skipLog:!1,tableMode:S}),E=!0;let a=t.text?!0:void 0;e.rememberSentText(t.text,{combinedBody:d,combinedBodySessionKey:e.route.sessionKey,logVerboseMessage:a});let o=e.msg.chatType===`group`?r:e.msg.from??`unknown`,s=!!(t.mediaUrl||t.mediaUrls?.length);if(w.info(`Auto-replied to ${o}${s?` (media)`:``}`),n.B()){let e=t.text==null?`<media>`:$(t.text,400);w.debug(`Reply body: ${e}${s?` (media)`:``}`)}},onError:(t,n)=>{let i=n.kind===`tool`?`tool update`:n.kind===`block`?`block update`:`auto-reply`;w.error(`Failed sending web ${i} to ${e.msg.from??r}: ${p.n(t)}`)},onReplyStart:e.msg.sendComposing},replyOptions:{disableBlockStreaming:!0,onModelSelected:k}});return R?(f&&e.groupHistories.set(e.groupHistoryKey,[]),E):(f&&e.groupHistories.set(e.groupHistoryKey,[]),n.R(`Skipping auto-reply: silent token or no text/media returned from resolver`),!1)}function Ie(r){let a=async(e,t,n,i)=>Fe({cfg:r.cfg,msg:e,route:t,groupHistoryKey:n,groupHistories:r.groupHistories,groupMemberNames:r.groupMemberNames,connectionId:r.connectionId,verbose:r.verbose,maxMediaBytes:r.maxMediaBytes,replyResolver:r.replyResolver,replyLogger:r.replyLogger,backgroundTasks:r.backgroundTasks,rememberSentText:r.echoTracker.rememberText,echoHas:r.echoTracker.has,echoForget:r.echoTracker.forget,buildCombinedEchoKey:r.echoTracker.buildCombinedKey,groupHistory:i?.groupHistory,suppressGroupHistoryClear:i?.suppressGroupHistoryClear});return async o=>{let s=o.conversationId??o.from,c=Ee(o),l=i.j({cfg:t.Y(),channel:`whatsapp`,accountId:o.accountId,peer:{kind:o.chatType===`group`?`group`:`direct`,id:c}}),u=o.chatType===`group`?e.kt({channel:`whatsapp`,accountId:l.accountId,peerKind:`group`,peerId:c}):l.sessionKey;if(o.from===o.to&&n.R(`📱 Same-phone mode detected (from === to: ${o.from})`),r.echoTracker.has(o.body)){n.R(`Skipping auto-reply: detected echo (message matches recently sent text)`),r.echoTracker.forget(o.body);return}if(o.chatType===`group`){let e={From:o.from,To:o.to,SessionKey:l.sessionKey,AccountId:l.accountId,ChatType:o.chatType,ConversationLabel:s,GroupSubject:o.groupSubject,SenderName:o.senderName,SenderId:o.senderJid?.trim()||o.senderE164,SenderE164:o.senderE164,Provider:`whatsapp`,Surface:`whatsapp`,OriginatingChannel:`whatsapp`,OriginatingTo:s};if(Te({cfg:r.cfg,backgroundTasks:r.backgroundTasks,storeAgentId:l.agentId,sessionKey:l.sessionKey,channel:`whatsapp`,to:s,accountId:l.accountId,ctx:e,warn:r.replyLogger.warn.bind(r.replyLogger)}),!Ce({cfg:r.cfg,msg:o,conversationId:s,groupHistoryKey:u,agentId:l.agentId,sessionKey:l.sessionKey,baseMentionConfig:r.baseMentionConfig,authDir:r.account.authDir,groupHistories:r.groupHistories,groupHistoryLimit:r.groupHistoryLimit,groupMemberNames:r.groupMemberNames,logVerbose:n.R,replyLogger:r.replyLogger}).shouldProcess)return}else !o.senderE164&&c&&c.startsWith(`+`)&&(o.senderE164=n.h(c)??o.senderE164);await fe({cfg:r.cfg,msg:o,peerId:c,route:l,groupHistoryKey:u,groupHistories:r.groupHistories,processMessage:a})||await a(o,l,u)}}function Le(e){return e===440}async function Re(e,r=oe,a=!0,s=i.t,c=n.M,l,u={}){let f=x(),m=n.K({module:`web-auto-reply`,runId:f}),h=n.K({module:`web-heartbeat`,runId:f}),g=n.K({module:`web-reconnect`,runId:f}),_={running:!0,connected:!1,reconnectAttempts:0,lastConnectedAt:null,lastDisconnect:null,lastMessageAt:null,lastEventAt:null,lastError:null},v=()=>{u.statusSink?.({..._,lastDisconnect:_.lastDisconnect?{..._.lastDisconnect}:null})};v();let C=t.Y(),w=t.Os({cfg:C,accountId:u.accountId}),E={...C,channels:{...C.channels,whatsapp:{...C.channels?.whatsapp,ackReaction:w.ackReaction,messagePrefix:w.messagePrefix,allowFrom:w.allowFrom,groupAllowFrom:w.groupAllowFrom,groupPolicy:w.groupPolicy,textChunkLimit:w.textChunkLimit,chunkMode:w.chunkMode,mediaMaxMb:w.mediaMaxMb,blockStreaming:w.blockStreaming,groups:w.groups}}},D=t.As(w),O=y(E,u.heartbeatSeconds),k=b(E,u.reconnect),A=Z(E),j=E.channels?.whatsapp?.accounts?.[u.accountId??``]?.historyLimit??E.channels?.whatsapp?.historyLimit??E.messages?.groupChat?.historyLimit??50,M=new Map,te=new Map,N=ue({maxItems:100,logVerbose:n.R}),P=u.sleep??((e,t)=>i.d(e,t??l)),F=()=>l?.aborted===!0,I=l&&new Promise(e=>l.addEventListener(`abort`,()=>e(`aborted`),{once:!0})),L=process.getMaxListeners?.()??10;process.setMaxListeners&&L<50&&process.setMaxListeners(50);let R=!1,z=()=>{R=!0};process.once(`SIGINT`,z);let B=0;for(;!F();){let f=x(),y=Date.now(),b=null,C=null,L=null,V=0,H=null,ne=u.messageTimeoutMs??1800*1e3,re=u.watchdogCheckMs??60*1e3,U=new Set,ie=Ie({cfg:E,verbose:e,connectionId:f,maxMediaBytes:D,groupHistoryLimit:j,groupHistories:M,groupMemberNames:te,echoTracker:N,backgroundTasks:U,replyResolver:s??i.t,replyLogger:m,baseMentionConfig:A,account:w}),ae=i.D({cfg:E,channel:`whatsapp`}),W=await(r??oe)({verbose:e,accountId:w.accountId,authDir:w.authDir,mediaMaxMb:w.mediaMaxMb,sendReadReceipts:w.sendReadReceipts,debounceMs:ae,shouldDebounce:e=>e.mediaPath||e.mediaType||e.location||e.replyToId||e.replyToBody?!1:!i.N(e.body,E),onMessage:async e=>{V+=1,L=Date.now(),_.lastMessageAt=L,_.lastEventAt=L,v(),await ie(e)}});Object.assign(_,i.l()),_.lastError=null,v();let{e164:G}=t.Rs(w.authDir),K=i.j({cfg:E,channel:`whatsapp`,accountId:w.accountId});i.x(`WhatsApp gateway connected${G?` as ${G}`:``}.`,{sessionKey:K.sessionKey}),d.r(w.accountId,W),H=o.f(e=>{if(!De(e))return!1;let t=p.n(e);return g.warn({connectionId:f,error:t},`web reconnect: unhandled rejection from WhatsApp socket; forcing reconnect`),W.signalClose?.({status:499,isLoggedOut:!1,error:e}),!0});let q=async()=>{d.r(w.accountId,null),H&&=(H(),null),b&&clearInterval(b),C&&clearInterval(C),U.size>0&&(await Promise.allSettled(U),U.clear());try{await W.close()}catch(e){n.R(`Socket close failed: ${p.n(e)}`)}};if(a&&(b=setInterval(()=>{let e=t.Ms(w.authDir),n=L?Math.floor((Date.now()-L)/6e4):null,r={connectionId:f,reconnectAttempts:B,messagesHandled:V,lastMessageAt:L,authAgeMs:e,uptimeMs:Date.now()-y,...n!==null&&n>30?{minutesSinceLastMessage:n}:{}};n&&n>30?h.warn(r,`⚠️ web gateway heartbeat - no messages in 30+ minutes`):h.info(r,`web gateway heartbeat`)},O*1e3),C=setInterval(()=>{if(!L)return;let e=Date.now()-L;if(e<=ne)return;let t=Math.floor(e/6e4);h.warn({connectionId:f,minutesSinceLastMessage:t,lastMessageAt:new Date(L),messagesHandled:V},`Message timeout detected - forcing reconnect`),ee.warn(`No messages received in ${t}m - restarting connection`),q().catch(e=>{n.R(`Close listener failed: ${p.n(e)}`)}),W.signalClose?.({status:499,isLoggedOut:!1,error:`watchdog-timeout`})},re)),S.info(`Listening for personal WhatsApp inbound messages.`),(process.stdout.isTTY||process.stderr.isTTY)&&S.raw(`Ctrl+C to stop.`),!a){await q(),process.removeListener(`SIGINT`,z);return}let J=await Promise.race([W.onClose?.catch(e=>(g.error({error:p.n(e)},`listener.onClose rejected`),{status:500,isLoggedOut:!1,error:e}))??T(),I??T()]);if(Date.now()-y>O*1e3&&(B=0),_.reconnectAttempts=B,v(),F()||R||J===`aborted`){await q();break}let Y=(typeof J==`object`&&J&&`status`in J?J.status:void 0)??`unknown`,X=typeof J==`object`&&J&&`isLoggedOut`in J&&J.isLoggedOut,Z=p.n(J);if(_.connected=!1,_.lastEventAt=Date.now(),_.lastDisconnect={at:_.lastEventAt,status:typeof Y==`number`?Y:void 0,error:Z,loggedOut:!!X},_.lastError=Z,_.reconnectAttempts=B,v(),g.info({connectionId:f,status:Y,loggedOut:X,reconnectAttempts:B,error:Z},`web reconnect: connection closed`),i.x(`WhatsApp gateway disconnected (status ${Y??`unknown`})`,{sessionKey:K.sessionKey}),X){c.error(`WhatsApp session logged out. Run \`${t.mc(`openclaw channels login --channel web`)}\` to relink.`),await q();break}if(Le(Y)){g.warn({connectionId:f,status:Y,error:Z},`web reconnect: non-retryable close status; stopping monitor`),c.error(`WhatsApp Web connection closed (status ${Y}: session conflict). Resolve conflicting WhatsApp Web sessions, then relink with \`${t.mc(`openclaw channels login --channel web`)}\`. Stopping web monitoring.`),await q();break}if(B+=1,_.reconnectAttempts=B,v(),k.maxAttempts>0&&B>=k.maxAttempts){g.warn({connectionId:f,status:Y,reconnectAttempts:B,maxAttempts:k.maxAttempts},`web reconnect: max attempts reached; continuing in degraded mode`),c.error(`WhatsApp Web reconnect: max attempts reached (${B}/${k.maxAttempts}). Stopping web monitoring.`),await q();break}let Q=i.u(k,B);g.info({connectionId:f,status:Y,reconnectAttempts:B,maxAttempts:k.maxAttempts||`unlimited`,delayMs:Q},`web reconnect: scheduling retry`),c.error(`WhatsApp Web connection closed (status ${Y}). Retry ${B}/${k.maxAttempts||`∞`} in ${i.S(Q)}… (${Z})`),await q();try{await P(Q,l)}catch{break}}_.running=!1,_.connected=!1,_.lastEventAt=Date.now(),v(),process.removeListener(`SIGINT`,z)}Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return oe}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return _}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return Re}});
5
+ `);n&&(w.warn(`Media skipped; sent text-only to ${r.from}`),await r.reply(n))}}}for(let e of y)await r.reply(e)}function Ae(e){if(!e.msg.id)return;let t=e.cfg.channels?.whatsapp?.ackReaction,r=(t?.emoji??``).trim(),a=t?.direct??!0,o=t?.group??`mentions`,s=e.msg.conversationId??e.msg.from,c=e.msg.chatType===`group`?ge({cfg:e.cfg,agentId:e.agentId,sessionKey:e.sessionKey,conversationId:s}):null;i.C({emoji:r,isDirect:e.msg.chatType===`direct`,isGroup:e.msg.chatType===`group`,directEnabled:a,groupMode:o,wasMentioned:e.msg.wasMentioned===!0,groupActivated:c===`always`})&&(e.info({chatId:e.msg.chatId,messageId:e.msg.id,emoji:r},`sending ack reaction`),f.r(e.msg.chatId,e.msg.id,r,{verbose:e.verbose,fromMe:!1,participant:e.msg.senderJid,accountId:e.accountId}).catch(t=>{e.warn({error:p.n(t),chatId:e.msg.chatId,messageId:e.msg.id},`failed to send ack reaction`),n.R(`WhatsApp ack reaction failed for chat ${e.msg.chatId}: ${p.n(t)}`)}))}function je(e){return e.replyToBody?`[Replying to ${e.replyToSender??`unknown sender`}${e.replyToId?` id:${e.replyToId}`:``}]\n${e.replyToBody}\n[/Replying]`:null}function Me(e){let{cfg:t,msg:n,agentId:r,previousTimestamp:a,envelope:o}=e,s=i.q(t,r,{configured:t.channels?.whatsapp?.messagePrefix,hasAllowFrom:(t.channels?.whatsapp?.allowFrom?.length??0)>0}),c=s?`${s} `:``,l=je(n),u=`${c}${n.body}${l?`\n\n${l}`:``}`;return i.O({channel:`WhatsApp`,from:n.chatType===`group`?n.from:n.from?.replace(/^whatsapp:/,``),timestamp:n.timestamp,body:u,chatType:n.chatType,sender:{name:n.senderName,e164:n.senderE164,id:n.senderJid},previousTimestamp:a,envelope:o,fromMe:n.fromMe})}async function Ne(e){let r=e.cfg.commands?.useAccessGroups!==!1;if(!r)return!0;let a=e.msg.chatType===`group`,o=n.h(a?e.msg.senderE164??``:e.msg.senderE164??e.msg.from??``);if(!o)return!1;let s=t.Os({cfg:e.cfg,accountId:e.msg.accountId}),c=s.dmPolicy??`pairing`,l=s.groupPolicy??`allowlist`,u=s.allowFrom??[],d=s.groupAllowFrom??(u.length>0?u:void 0),f=a?[]:await i._({provider:`whatsapp`,accountId:e.msg.accountId,dmPolicy:c});return i.v({isGroup:a,dmPolicy:c,groupPolicy:l,allowFrom:u.length>0?u:e.msg.selfE164?[e.msg.selfE164]:[],groupAllowFrom:d,storeAllowFrom:f,isSenderAllowed:e=>e.includes(`*`)?!0:e.map(e=>n.h(String(e))).filter(e=>!!e).includes(o),command:{useAccessGroups:r,allowTextCommands:!0,hasControlCommand:!0}}).commandAuthorized}function Pe(e){let r=t.Os({cfg:e.cfg,accountId:e.msg.accountId});return i.b({dmScope:e.cfg.session?.dmScope,allowFrom:r.allowFrom,normalizeEntry:e=>n.h(e)})}async function Fe(e){let r=e.msg.conversationId??e.msg.from,{storePath:o,envelopeOptions:l,previousTimestamp:u}=i.c({cfg:e.cfg,agentId:e.route.agentId,sessionKey:e.route.sessionKey}),d=Me({cfg:e.cfg,msg:e.msg,agentId:e.route.agentId,previousTimestamp:u,envelope:l}),f=!1;if(e.msg.chatType===`group`){let t=e.groupHistory??e.groupHistories.get(e.groupHistoryKey)??[];t.length>0&&(d=i.h({entries:t.map(e=>({sender:e.sender,body:e.body,timestamp:e.timestamp})),currentMessage:d,excludeLast:!1,formatEntry:e=>i.O({channel:`WhatsApp`,from:r,timestamp:e.timestamp,body:e.body,chatType:`group`,senderLabel:e.sender,envelope:l})})),f=!(e.suppressGroupHistoryClear??!1)}let m=e.buildCombinedEchoKey({sessionKey:e.route.sessionKey,combinedBody:d});if(e.echoHas(m))return n.R(`Skipping auto-reply: detected echo for combined message`),e.echoForget(m),!1;Ae({cfg:e.cfg,msg:e.msg,agentId:e.route.agentId,sessionKey:e.route.sessionKey,conversationId:r,verbose:e.verbose,accountId:e.route.accountId,info:e.replyLogger.info.bind(e.replyLogger),warn:e.replyLogger.warn.bind(e.replyLogger)});let h=e.msg.id??x();e.replyLogger.info({connectionId:e.connectionId,correlationId:h,from:e.msg.chatType===`group`?r:e.msg.from,to:e.msg.to,body:$(d,240),mediaType:e.msg.mediaType??null,mediaPath:e.msg.mediaPath??null},`inbound web message`);let g=e.msg.chatType===`group`?r:e.msg.from,_=e.msg.mediaType?`, ${e.msg.mediaType}`:``;C.info(`Inbound message ${g} -> ${e.msg.to} (${e.msg.chatType}${_}, ${d.length} chars)`),n.B()&&C.debug(`Inbound body: ${$(d,400)}`);let v=e.msg.chatType===`group`?void 0:e.msg.senderE164?n.h(e.msg.senderE164):e.msg.from.includes(`@`)?n.m(e.msg.from):n.h(e.msg.from),y=e.maxMediaTextChunkLimit??c.h(e.cfg,`whatsapp`),b=c.m(e.cfg,`whatsapp`,e.route.accountId),S=c.s({cfg:e.cfg,channel:`whatsapp`,accountId:e.route.accountId}),ee=s.t(e.cfg,e.route.agentId),T=!1,E=!1,D=i.P(e.msg.body,e.cfg)?await Ne({cfg:e.cfg,msg:e.msg}):void 0,O=e.cfg.messages?.responsePrefix,{onModelSelected:k,...A}=i.m({cfg:e.cfg,agentId:e.route.agentId,channel:`whatsapp`,accountId:e.route.accountId}),j=e.msg.chatType!==`group`&&!!e.msg.selfE164&&n.h(e.msg.from)===n.h(e.msg.selfE164??``),M=A.responsePrefix??(O===void 0&&j?i.K(e.cfg,e.route.agentId):void 0),te=e.msg.chatType===`group`?(e.groupHistory??e.groupHistories.get(e.groupHistoryKey)??[]).map(e=>({sender:e.sender,body:e.body,timestamp:e.timestamp})):void 0,N=i.J({Body:d,BodyForAgent:e.msg.body,InboundHistory:te,RawBody:e.msg.body,CommandBody:e.msg.body,From:e.msg.from,To:e.msg.to,SessionKey:e.route.sessionKey,AccountId:e.route.accountId,MessageSid:e.msg.id,ReplyToId:e.msg.replyToId,ReplyToBody:e.msg.replyToBody,ReplyToSender:e.msg.replyToSender,MediaPath:e.msg.mediaPath,MediaUrl:e.msg.mediaUrl,MediaType:e.msg.mediaType,ChatType:e.msg.chatType,ConversationLabel:e.msg.chatType===`group`?r:e.msg.from,GroupSubject:e.msg.groupSubject,GroupMembers:ye({participants:e.msg.groupParticipants,roster:e.groupMemberNames.get(e.groupHistoryKey),fallbackE164:e.msg.senderE164}),SenderName:e.msg.senderName,SenderId:e.msg.senderJid?.trim()||e.msg.senderE164,SenderE164:e.msg.senderE164,CommandAuthorized:D,WasMentioned:e.msg.wasMentioned,...e.msg.location?a.et(e.msg.location):{},Provider:`whatsapp`,Surface:`whatsapp`,OriginatingChannel:`whatsapp`,OriginatingTo:e.msg.from}),P=Pe({cfg:e.cfg,msg:e.msg}),F=!P||P===v,I=i.M({route:e.route,sessionKey:e.route.sessionKey});v&&I===e.route.mainSessionKey&&F?Te({cfg:e.cfg,backgroundTasks:e.backgroundTasks,storeAgentId:e.route.agentId,sessionKey:e.route.mainSessionKey,channel:`whatsapp`,to:v,accountId:e.route.accountId,ctx:N,warn:e.replyLogger.warn.bind(e.replyLogger)}):v&&I===e.route.mainSessionKey&&P&&n.R(`Skipping main-session last route update for ${v} (pinned owner ${P})`);let L=t.u({storePath:o,sessionKey:e.route.sessionKey,ctx:N}).catch(t=>{e.replyLogger.warn({error:p.n(t),storePath:o,sessionKey:e.route.sessionKey},`failed updating session meta`)});we(e.backgroundTasks,L);let{queuedFinal:R}=await i.w({ctx:N,cfg:e.cfg,replyResolver:e.replyResolver,dispatcherOptions:{...A,responsePrefix:M,onHeartbeatStrip:()=>{T||(T=!0,n.R(`Stripped stray HEARTBEAT_OK token from web reply`))},deliver:async(t,i)=>{if(i.kind!==`final`)return;await ke({replyResult:t,msg:e.msg,mediaLocalRoots:ee,maxMediaBytes:e.maxMediaBytes,textLimit:y,chunkMode:b,replyLogger:e.replyLogger,connectionId:e.connectionId,skipLog:!1,tableMode:S}),E=!0;let a=t.text?!0:void 0;e.rememberSentText(t.text,{combinedBody:d,combinedBodySessionKey:e.route.sessionKey,logVerboseMessage:a});let o=e.msg.chatType===`group`?r:e.msg.from??`unknown`,s=!!(t.mediaUrl||t.mediaUrls?.length);if(w.info(`Auto-replied to ${o}${s?` (media)`:``}`),n.B()){let e=t.text==null?`<media>`:$(t.text,400);w.debug(`Reply body: ${e}${s?` (media)`:``}`)}},onError:(t,n)=>{let i=n.kind===`tool`?`tool update`:n.kind===`block`?`block update`:`auto-reply`;w.error(`Failed sending web ${i} to ${e.msg.from??r}: ${p.n(t)}`)},onReplyStart:e.msg.sendComposing},replyOptions:{disableBlockStreaming:!0,onModelSelected:k}});return R?(f&&e.groupHistories.set(e.groupHistoryKey,[]),E):(f&&e.groupHistories.set(e.groupHistoryKey,[]),n.R(`Skipping auto-reply: silent token or no text/media returned from resolver`),!1)}function Ie(r){let a=async(e,t,n,i)=>Fe({cfg:r.cfg,msg:e,route:t,groupHistoryKey:n,groupHistories:r.groupHistories,groupMemberNames:r.groupMemberNames,connectionId:r.connectionId,verbose:r.verbose,maxMediaBytes:r.maxMediaBytes,replyResolver:r.replyResolver,replyLogger:r.replyLogger,backgroundTasks:r.backgroundTasks,rememberSentText:r.echoTracker.rememberText,echoHas:r.echoTracker.has,echoForget:r.echoTracker.forget,buildCombinedEchoKey:r.echoTracker.buildCombinedKey,groupHistory:i?.groupHistory,suppressGroupHistoryClear:i?.suppressGroupHistoryClear});return async o=>{let s=o.conversationId??o.from,c=Ee(o),l=i.j({cfg:t.Y(),channel:`whatsapp`,accountId:o.accountId,peer:{kind:o.chatType===`group`?`group`:`direct`,id:c}}),u=o.chatType===`group`?e.kt({channel:`whatsapp`,accountId:l.accountId,peerKind:`group`,peerId:c}):l.sessionKey;if(o.from===o.to&&n.R(`📱 Same-phone mode detected (from === to: ${o.from})`),r.echoTracker.has(o.body)){n.R(`Skipping auto-reply: detected echo (message matches recently sent text)`),r.echoTracker.forget(o.body);return}if(o.chatType===`group`){let e={From:o.from,To:o.to,SessionKey:l.sessionKey,AccountId:l.accountId,ChatType:o.chatType,ConversationLabel:s,GroupSubject:o.groupSubject,SenderName:o.senderName,SenderId:o.senderJid?.trim()||o.senderE164,SenderE164:o.senderE164,Provider:`whatsapp`,Surface:`whatsapp`,OriginatingChannel:`whatsapp`,OriginatingTo:s};if(Te({cfg:r.cfg,backgroundTasks:r.backgroundTasks,storeAgentId:l.agentId,sessionKey:l.sessionKey,channel:`whatsapp`,to:s,accountId:l.accountId,ctx:e,warn:r.replyLogger.warn.bind(r.replyLogger)}),!Ce({cfg:r.cfg,msg:o,conversationId:s,groupHistoryKey:u,agentId:l.agentId,sessionKey:l.sessionKey,baseMentionConfig:r.baseMentionConfig,authDir:r.account.authDir,groupHistories:r.groupHistories,groupHistoryLimit:r.groupHistoryLimit,groupMemberNames:r.groupMemberNames,logVerbose:n.R,replyLogger:r.replyLogger}).shouldProcess)return}else !o.senderE164&&c&&c.startsWith(`+`)&&(o.senderE164=n.h(c)??o.senderE164);await fe({cfg:r.cfg,msg:o,peerId:c,route:l,groupHistoryKey:u,groupHistories:r.groupHistories,processMessage:a})||await a(o,l,u)}}function Le(e){return e===440}async function Re(e,r=oe,a=!0,s=i.t,c=n.M,l,u={}){let f=x(),m=n.K({module:`web-auto-reply`,runId:f}),h=n.K({module:`web-heartbeat`,runId:f}),g=n.K({module:`web-reconnect`,runId:f}),_={running:!0,connected:!1,reconnectAttempts:0,lastConnectedAt:null,lastDisconnect:null,lastMessageAt:null,lastEventAt:null,lastError:null},v=()=>{u.statusSink?.({..._,lastDisconnect:_.lastDisconnect?{..._.lastDisconnect}:null})};v();let C=t.Y(),w=t.Os({cfg:C,accountId:u.accountId}),E={...C,channels:{...C.channels,whatsapp:{...C.channels?.whatsapp,ackReaction:w.ackReaction,messagePrefix:w.messagePrefix,allowFrom:w.allowFrom,groupAllowFrom:w.groupAllowFrom,groupPolicy:w.groupPolicy,textChunkLimit:w.textChunkLimit,chunkMode:w.chunkMode,mediaMaxMb:w.mediaMaxMb,blockStreaming:w.blockStreaming,groups:w.groups}}},D=t.As(w),O=y(E,u.heartbeatSeconds),k=b(E,u.reconnect),A=Z(E),j=E.channels?.whatsapp?.accounts?.[u.accountId??``]?.historyLimit??E.channels?.whatsapp?.historyLimit??E.messages?.groupChat?.historyLimit??50,M=new Map,te=new Map,N=ue({maxItems:100,logVerbose:n.R}),P=u.sleep??((e,t)=>i.d(e,t??l)),F=()=>l?.aborted===!0,I=l&&new Promise(e=>l.addEventListener(`abort`,()=>e(`aborted`),{once:!0})),L=process.getMaxListeners?.()??10;process.setMaxListeners&&L<50&&process.setMaxListeners(50);let R=!1,z=()=>{R=!0};process.once(`SIGINT`,z);let B=0;for(;!F();){let f=x(),y=Date.now(),b=null,C=null,L=null,V=0,H=null,ne=u.messageTimeoutMs??1800*1e3,re=u.watchdogCheckMs??60*1e3,U=new Set,ie=Ie({cfg:E,verbose:e,connectionId:f,maxMediaBytes:D,groupHistoryLimit:j,groupHistories:M,groupMemberNames:te,echoTracker:N,backgroundTasks:U,replyResolver:s??i.t,replyLogger:m,baseMentionConfig:A,account:w}),ae=i.D({cfg:E,channel:`whatsapp`}),W=await(r??oe)({verbose:e,accountId:w.accountId,authDir:w.authDir,mediaMaxMb:w.mediaMaxMb,sendReadReceipts:w.sendReadReceipts,debounceMs:ae,shouldDebounce:e=>e.mediaPath||e.mediaType||e.location||e.replyToId||e.replyToBody?!1:!i.N(e.body,E),onMessage:async e=>{V+=1,L=Date.now(),_.lastMessageAt=L,_.lastEventAt=L,v(),await ie(e)}});Object.assign(_,i.l()),_.lastError=null,v();let{e164:G}=t.Rs(w.authDir),K=i.j({cfg:E,channel:`whatsapp`,accountId:w.accountId});i.x(`WhatsApp gateway connected${G?` as ${G}`:``}.`,{sessionKey:K.sessionKey}),d.r(w.accountId,W),H=o.f(e=>{if(!De(e))return!1;let t=p.n(e);return g.warn({connectionId:f,error:t},`web reconnect: unhandled rejection from WhatsApp socket; forcing reconnect`),W.signalClose?.({status:499,isLoggedOut:!1,error:e}),!0});let q=async()=>{d.r(w.accountId,null),H&&=(H(),null),b&&clearInterval(b),C&&clearInterval(C),U.size>0&&(await Promise.allSettled(U),U.clear());try{await W.close()}catch(e){n.R(`Socket close failed: ${p.n(e)}`)}};if(a&&(b=setInterval(()=>{let e=t.Ms(w.authDir),n=L?Math.floor((Date.now()-L)/6e4):null,r={connectionId:f,reconnectAttempts:B,messagesHandled:V,lastMessageAt:L,authAgeMs:e,uptimeMs:Date.now()-y,...n!==null&&n>30?{minutesSinceLastMessage:n}:{}};n&&n>30?h.warn(r,`⚠️ web gateway heartbeat - no messages in 30+ minutes`):h.info(r,`web gateway heartbeat`)},O*1e3),C=setInterval(()=>{if(!L)return;let e=Date.now()-L;if(e<=ne)return;let t=Math.floor(e/6e4);h.warn({connectionId:f,minutesSinceLastMessage:t,lastMessageAt:new Date(L),messagesHandled:V},`Message timeout detected - forcing reconnect`),ee.warn(`No messages received in ${t}m - restarting connection`),q().catch(e=>{n.R(`Close listener failed: ${p.n(e)}`)}),W.signalClose?.({status:499,isLoggedOut:!1,error:`watchdog-timeout`})},re)),S.info(`Listening for personal WhatsApp inbound messages.`),(process.stdout.isTTY||process.stderr.isTTY)&&S.raw(`Ctrl+C to stop.`),!a){await q(),process.removeListener(`SIGINT`,z);return}let J=await Promise.race([W.onClose?.catch(e=>(g.error({error:p.n(e)},`listener.onClose rejected`),{status:500,isLoggedOut:!1,error:e}))??T(),I??T()]);if(Date.now()-y>O*1e3&&(B=0),_.reconnectAttempts=B,v(),F()||R||J===`aborted`){await q();break}let Y=(typeof J==`object`&&J&&`status`in J?J.status:void 0)??`unknown`,X=typeof J==`object`&&J&&`isLoggedOut`in J&&J.isLoggedOut,Z=p.n(J);if(_.connected=!1,_.lastEventAt=Date.now(),_.lastDisconnect={at:_.lastEventAt,status:typeof Y==`number`?Y:void 0,error:Z,loggedOut:!!X},_.lastError=Z,_.reconnectAttempts=B,v(),g.info({connectionId:f,status:Y,loggedOut:X,reconnectAttempts:B,error:Z},`web reconnect: connection closed`),i.x(`WhatsApp gateway disconnected (status ${Y??`unknown`})`,{sessionKey:K.sessionKey}),X){c.error(`WhatsApp session logged out. Run \`${t.mc(`openclaw channels login --channel web`)}\` to relink.`),await q();break}if(Le(Y)){g.warn({connectionId:f,status:Y,error:Z},`web reconnect: non-retryable close status; stopping monitor`),c.error(`WhatsApp Web connection closed (status ${Y}: session conflict). Resolve conflicting WhatsApp Web sessions, then relink with \`${t.mc(`openclaw channels login --channel web`)}\`. Stopping web monitoring.`),await q();break}if(B+=1,_.reconnectAttempts=B,v(),k.maxAttempts>0&&B>=k.maxAttempts){g.warn({connectionId:f,status:Y,reconnectAttempts:B,maxAttempts:k.maxAttempts},`web reconnect: max attempts reached; continuing in degraded mode`),c.error(`WhatsApp Web reconnect: max attempts reached (${B}/${k.maxAttempts}). Stopping web monitoring.`),await q();break}let Q=i.u(k,B);g.info({connectionId:f,status:Y,reconnectAttempts:B,maxAttempts:k.maxAttempts||`unlimited`,delayMs:Q},`web reconnect: scheduling retry`),c.error(`WhatsApp Web connection closed (status ${Y}). Retry ${B}/${k.maxAttempts||`∞`} in ${i.S(Q)}… (${Z})`),await q();try{await P(Q,l)}catch{break}}_.running=!1,_.connected=!1,_.lastEventAt=Date.now(),v(),process.removeListener(`SIGINT`,z)}Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return oe}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return _}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return Re}});
@@ -2,4 +2,4 @@ import{Lt as e,Mt as t,Pt as n,Ut as r,jt as i,s as a}from"./paths-J4JUiRsa.js";
2
2
  `).trim();if(o||=mt(r),!o){let e=r?qe(r):void 0;return W(`Quoted message missing extractable body${e?` (type ${e})`:``}`),null}let s=n?.participant??void 0,c=s?G(s)??s:void 0,l=c??`unknown sender`;return{id:n?.stanzaId?String(n.stanzaId):void 0,body:o,sender:l,senderJid:s,senderE164:c}}function wt(e){return Ce({providerConfigPresent:e.providerConfigPresent,groupPolicy:e.groupPolicy,defaultGroupPolicy:e.defaultGroupPolicy})}async function Tt(e){let t=v(),n=p({cfg:t,accountId:e.accountId}),r=n.dmPolicy??`pairing`,i=n.allowFrom??[],a=await R({provider:`whatsapp`,accountId:n.accountId,dmPolicy:r}),o=i.length===0&&e.selfE164?[e.selfE164]:[],s=i.length>0?i:o,c=n.groupAllowFrom??(i.length>0?i:void 0),l=e.from===e.selfE164,u=n.selfChatMode??be(e.selfE164,i),d=typeof e.pairingGraceMs==`number`&&e.pairingGraceMs>0?e.pairingGraceMs:3e4,f=typeof e.connectedAtMs==`number`&&typeof e.messageTimestampMs==`number`&&e.messageTimestampMs<e.connectedAtMs-d,m=Se(t),{groupPolicy:h,providerMissingFallbackApplied:g}=wt({providerConfigPresent:t.channels?.whatsapp!==void 0,groupPolicy:n.groupPolicy,defaultGroupPolicy:m});xe({providerMissingFallbackApplied:g,providerKey:`whatsapp`,accountId:n.accountId,log:e=>W(e)});let _=B(e.from),y=typeof e.senderE164==`string`?B(e.senderE164):null,b=ie({isGroup:e.group,dmPolicy:r,groupPolicy:h,allowFrom:e.group?i:s,groupAllowFrom:c,storeAllowFrom:a,isSenderAllowed:t=>{if(t.includes(`*`))return!0;let n=new Set(t.map(e=>B(String(e))).filter(e=>!!e));return!e.group&&l?!0:e.group?!!(y&&n.has(y)):n.has(_)}});if(e.group&&b.decision!==`allow`)return b.reason===`groupPolicy=disabled`?W(`Blocked group message (groupPolicy: disabled)`):b.reason===`groupPolicy=allowlist (empty allowlist)`?W(`Blocked group message (groupPolicy: allowlist, no groupAllowFrom)`):W(`Blocked group message from ${e.senderE164??`unknown sender`} (groupPolicy: allowlist)`),{allowed:!1,shouldMarkRead:!1,isSelfChat:u,resolvedAccountId:n.accountId};if(!e.group){if(e.isFromMe&&!l)return W(`Skipping outbound DM (fromMe); no pairing reply needed.`),{allowed:!1,shouldMarkRead:!1,isSelfChat:u,resolvedAccountId:n.accountId};if(b.decision===`block`&&b.reason===`dmPolicy=disabled`)return W(`Blocked dm (dmPolicy: disabled)`),{allowed:!1,shouldMarkRead:!1,isSelfChat:u,resolvedAccountId:n.accountId};if(b.decision===`pairing`&&!l){let t=e.from;return f?W(`Skipping pairing reply for historical DM from ${t}.`):await ce({channel:`whatsapp`,senderId:t,senderIdLine:`Your WhatsApp phone number: ${t}`,meta:{name:(e.pushName??``).trim()||void 0},upsertPairingRequest:async({id:e,meta:t})=>await Fe({channel:`whatsapp`,id:e,accountId:n.accountId,meta:t}),onCreated:()=>{W(`whatsapp pairing request sender=${t} name=${e.pushName??`unknown`}`)},sendPairingReply:async t=>{await e.sock.sendMessage(e.remoteJid,{text:t})},onReplyError:e=>{W(`whatsapp pairing reply failed for ${t}: ${String(e)}`)}}),{allowed:!1,shouldMarkRead:!1,isSelfChat:u,resolvedAccountId:n.accountId}}if(b.decision!==`allow`)return W(`Blocked unauthorized sender ${e.from} (dmPolicy=${r})`),{allowed:!1,shouldMarkRead:!1,isSelfChat:u,resolvedAccountId:n.accountId}}return{allowed:!0,shouldMarkRead:!0,isSelfChat:u,resolvedAccountId:n.accountId}}function Et(e){return Ye(e)}function Dt(e){let t=e.imageMessage?.mimetype??e.videoMessage?.mimetype??e.documentMessage?.mimetype??e.audioMessage?.mimetype??e.stickerMessage?.mimetype??void 0;if(t)return t;if(e.audioMessage)return`audio/ogg; codecs=opus`;if(e.imageMessage)return`image/jpeg`;if(e.videoMessage)return`video/mp4`;if(e.stickerMessage)return`image/webp`}async function Ot(e,t){let n=Et(e.message);if(!n)return;let r=Dt(n),i=n.documentMessage?.fileName??void 0;if(!(!n.imageMessage&&!n.videoMessage&&!n.documentMessage&&!n.audioMessage&&!n.stickerMessage))try{return{buffer:await Ge(e,`buffer`,{},{reuploadRequest:t.updateMediaMessage,logger:t.logger}),mimetype:r,fileName:i}}catch(e){W(`downloadMediaMessage failed: ${String(e)}`);return}}function kt(e){we({channel:`whatsapp`,accountId:e,direction:`outbound`})}function At(e){return typeof e==`object`&&e&&`key`in e?String(e.key?.id??`unknown`):`unknown`}function jt(e){return{sendMessage:async(t,n,r,i,a)=>{let o=U(t),s;if(r&&i)if(i.startsWith(`image/`))s={image:r,caption:n||void 0,mimetype:i};else if(i.startsWith(`audio/`))s={audio:r,ptt:!0,mimetype:i};else if(i.startsWith(`video/`)){let e=a?.gifPlayback;s={video:r,caption:n||void 0,mimetype:i,...e?{gifPlayback:!0}:{}}}else s={document:r,fileName:a?.fileName?.trim()||`file`,caption:n||void 0,mimetype:i};else s={text:n};let c=await e.sock.sendMessage(o,s);return kt(a?.accountId??e.defaultAccountId),{messageId:At(c)}},sendPoll:async(t,n)=>{let r=U(t),i=await e.sock.sendMessage(r,{poll:{name:n.question,values:n.options,selectableCount:n.maxSelections??1}});return kt(e.defaultAccountId),{messageId:At(i)}},sendReaction:async(t,n,r,i,a)=>{let o=U(t);await e.sock.sendMessage(o,{react:{text:r,key:{remoteJid:o,id:n,fromMe:i,participant:a?U(a):void 0}}})},sendComposingTo:async t=>{let n=U(t);await e.sock.sendPresenceUpdate(`composing`,n)}}}async function Q(e){let t=H({module:`web-inbound`}),n=ge(`gateway/channels/whatsapp`).child(`inbound`),r=await He(!1,e.verbose,{authDir:e.authDir});await Be(r);let i=Date.now(),a=null,o=new Promise(e=>{a=e}),s=e=>{if(!a)return;let t=a;a=null,t(e)};try{await r.sendPresenceUpdate(`available`),z()&&W(`Sent global 'available' presence on connect`)}catch(e){W(`Failed to send 'available' presence on connect: ${String(e)}`)}let c=r.user?.id,l=c?G(c):null,u=de({debounceMs:e.debounceMs??0,buildKey:e=>{let t=e.chatType===`group`?e.senderJid??e.senderE164??e.senderName??e.from:e.from;if(!t)return null;let n=e.chatType===`group`?e.chatId:e.from;return`${e.accountId}:${n}:${t}`},shouldDebounce:e.shouldDebounce,onFlush:async t=>{let n=t.at(-1);if(!n)return;if(t.length===1){await e.onMessage(n);return}let r=new Set;for(let e of t)for(let t of e.mentionedJids??[])r.add(t);let i=t.map(e=>e.body).filter(Boolean).join(`
3
3
  `),a={...n,body:i,mentionedJids:r.size>0?Array.from(r):void 0};await e.onMessage(a)},onError:e=>{t.error({error:String(e)},`failed handling inbound web message`),n.error(`Failed handling inbound web message: ${String(e)}`)}}),d=new Map,f=300*1e3,p=r.signalRepository?.lidMapping,m=async t=>V(t,{authDir:e.authDir,lidLookup:p}),h=async e=>{let t=d.get(e);if(t&&t.expires>Date.now())return t;try{let t=await r.groupMetadata(e),n=(await Promise.all(t.participants?.map(async e=>await m(e.id)??e.id)??[])).filter(Boolean)??[],i={subject:t.subject,participants:n,expires:Date.now()+f};return d.set(e,i),i}catch(t){return W(`Failed to fetch group metadata for ${e}: ${String(t)}`),{expires:Date.now()+f}}},g=async t=>{let n=t.key?.id??void 0,a=t.key?.remoteJid;if(!a||a.endsWith(`@status`)||a.endsWith(`@broadcast`))return null;let o=Je(a)===!0;if(n&&it(`${e.accountId}:${a}:${n}`))return null;let s=t.key?.participant??void 0,c=o?a:await m(a);if(!c)return null;let u=o?s?await m(s):null:c,d,f;if(o){let e=await h(a);d=e.subject,f=e.participants}let p=t.messageTimestamp?Number(t.messageTimestamp)*1e3:void 0,g=await Tt({accountId:e.accountId,from:c,selfE164:l,senderE164:u,group:o,pushName:t.pushName??void 0,isFromMe:!!t.key?.fromMe,messageTimestampMs:p,connectedAtMs:i,sock:{sendMessage:(e,t)=>r.sendMessage(e,t)},remoteJid:a});return g.allowed?{id:n,remoteJid:a,group:o,participantJid:s,from:c,senderE164:u,groupSubject:d,groupParticipants:f,messageTimestampMs:p,access:g}:null},_=async t=>{let{id:n,remoteJid:i,participantJid:a,access:o}=t;if(n&&!o.isSelfChat&&e.sendReadReceipts!==!1)try{await r.readMessages([{remoteJid:i,id:n,participant:a,fromMe:!1}]),z()&&W(`Marked message ${n} as read for ${i}${a?` (participant ${a})`:``}`)}catch(e){W(`Failed to mark message ${n} read: ${String(e)}`)}else n&&o.isSelfChat&&z()&&W(`Self-chat mode: skipping read receipt for ${n}`)},v=async t=>{let n=St(t.message??void 0),i=n?Me(n):void 0,a=pt(t.message??void 0);if(i&&(a=[a,i].filter(Boolean).join(`
4
4
  `).trim()),!a&&(a=mt(t.message??void 0),!a))return null;let o=Ct(t.message),s,c,l;try{let n=await Ot(t,r);if(n){let t=(typeof e.mediaMaxMb==`number`&&e.mediaMaxMb>0?e.mediaMaxMb:50)*1024*1024;s=(await y(n.buffer,n.mimetype,`inbound`,t,n.fileName)).path,c=n.mimetype,l=n.fileName}}catch(e){W(`Inbound media download failed: ${String(e)}`)}return{body:a,location:n??void 0,replyContext:o,mediaPath:s,mediaType:c,mediaFileName:l}},b=async(e,i,a)=>{let o=i.remoteJid,s=async()=>{try{await r.sendPresenceUpdate(`composing`,o)}catch(e){W(`Presence update failed: ${String(e)}`)}},d=async e=>{await r.sendMessage(o,{text:e})},f=async e=>{await r.sendMessage(o,e)},p=i.messageTimestampMs,m=ft(e.message),h=e.pushName??void 0;t.info({from:i.from,to:l??`me`,body:a.body,mediaPath:a.mediaPath,mediaType:a.mediaType,mediaFileName:a.mediaFileName,timestamp:p},`inbound message`);let g={id:i.id,from:i.from,conversationId:i.from,to:l??`me`,accountId:i.access.resolvedAccountId,body:a.body,pushName:h,timestamp:p,chatType:i.group?`group`:`direct`,chatId:i.remoteJid,senderJid:i.participantJid,senderE164:i.senderE164??void 0,senderName:h,replyToId:a.replyContext?.id,replyToBody:a.replyContext?.body,replyToSender:a.replyContext?.sender,replyToSenderJid:a.replyContext?.senderJid,replyToSenderE164:a.replyContext?.senderE164,groupSubject:i.groupSubject,groupParticipants:i.groupParticipants,mentionedJids:m??void 0,selfJid:c,selfE164:l,fromMe:!!e.key?.fromMe,location:a.location??void 0,sendComposing:s,reply:d,sendMedia:f,mediaPath:a.mediaPath,mediaType:a.mediaType,mediaFileName:a.mediaFileName};try{Promise.resolve(u.enqueue(g)).catch(e=>{t.error({error:String(e)},`failed handling inbound web message`),n.error(`Failed handling inbound web message: ${String(e)}`)})}catch(e){t.error({error:String(e)},`failed handling inbound web message`),n.error(`Failed handling inbound web message: ${String(e)}`)}},x=async t=>{if(!(t.type!==`notify`&&t.type!==`append`))for(let n of t.messages??[]){we({channel:`whatsapp`,accountId:e.accountId,direction:`inbound`});let r=await g(n);if(!r||(await _(r),t.type===`append`))continue;let i=await v(n);i&&await b(n,r,i)}};r.ev.on(`messages.upsert`,x);let S=e=>{try{if(e.connection===`close`){let t=Ve(e.lastDisconnect?.error);s({status:t,isLoggedOut:t===We.loggedOut,error:e.lastDisconnect?.error})}}catch(e){t.error({error:String(e)},`connection.update handler error`),s({status:void 0,isLoggedOut:!1,error:e})}};return r.ev.on(`connection.update`,S),{close:async()=>{try{let e=r.ev,t=x,n=S;typeof e.off==`function`?(e.off(`messages.upsert`,t),e.off(`connection.update`,n)):typeof e.removeListener==`function`&&(e.removeListener(`messages.upsert`,t),e.removeListener(`connection.update`,n)),r.ws?.close()}catch(e){W(`Socket close failed: ${String(e)}`)}},onClose:o,signalClose:e=>{s(e??{status:void 0,isLoggedOut:!1,error:`closed`})},...jt({sock:{sendMessage:(e,t)=>r.sendMessage(e,t),sendPresenceUpdate:(e,t)=>r.sendPresenceUpdate(e,t)},defaultAccountId:e.accountId})}}function Mt(e,t){return{mentionRegexes:fe(e,t),allowFrom:e.channels?.whatsapp?.allowFrom}}function Nt(e,t){let n=t?{authDir:t}:void 0;return{normalizedMentions:e.mentionedJids?.length?e.mentionedJids.map(e=>G(e,n)??e).filter(Boolean):[],selfE164:e.selfE164??(e.selfJid?G(e.selfJid,n):null),selfJid:e.selfJid?e.selfJid.replace(/:\\d+/,``):null}}function Pt(e,t,n){let r=e=>N(e),i=be(n.selfE164,t.allowFrom);if((e.mentionedJids?.length??0)>0&&!i)return!!(n.selfE164&&n.normalizedMentions.includes(n.selfE164)||n.selfJid&&n.normalizedMentions.includes(n.selfJid));let a=r(e.body);if(t.mentionRegexes.some(e=>e.test(a)))return!0;if(n.selfE164){let t=n.selfE164.replace(/\D/g,``);if(t){if(a.replace(/[^\d]/g,``).includes(t))return!0;let n=e.body.replace(/[\s-]/g,``);if(RegExp(`\\+?${t}`,`i`).test(n))return!0}}return!1}function Ft(e,t,n){let r=Nt(e,n);return{wasMentioned:Pt(e,t,r),details:{from:e.from,body:e.body,bodyClean:N(e.body),mentionedJids:e.mentionedJids??null,normalizedMentionedJids:r.normalizedMentions.length?r.normalizedMentions:null,selfJid:e.selfJid??null,selfJidBare:r.selfJid,selfE164:e.selfE164??null,resolvedSelfE164:r.selfE164}}}function It(e,t){let n=e.allowFrom;return(Array.isArray(n)&&n.length>0?n:t?[t]:[]).filter(e=>!!(e&&e!==`*`)).map(e=>B(e)).filter(e=>!!e)}function Lt(e){let t=new Set,n=Math.max(1,e.maxItems??100),r=e=>`combined:${e.sessionKey}:${e.combinedBody}`,i=()=>{for(;t.size>n;){let e=t.values().next().value;if(!e)break;t.delete(e)}};return{rememberText:(n,a)=>{n&&(t.add(n),a.combinedBody&&a.combinedBodySessionKey&&t.add(r({sessionKey:a.combinedBodySessionKey,combinedBody:a.combinedBody})),a.logVerboseMessage&&e.logVerbose?.(`Added to echo detection set (size now: ${t.size}): ${n.substring(0,50)}...`),i())},has:e=>t.has(e),forget:e=>{t.delete(e)},buildCombinedKey:r}}function Rt(e){let n=O({agentId:e.agentId,channel:`whatsapp`,accountId:e.route.accountId,peer:{kind:e.msg.chatType===`group`?`group`:`direct`,id:e.peerId},dmScope:e.cfg.session?.dmScope,identityLinks:e.cfg.session?.identityLinks}),r=t({agentId:e.agentId,mainKey:i});return{sessionKey:n,mainSessionKey:r,lastRoutePolicy:A({sessionKey:n,mainSessionKey:r})}}async function zt(t){let n=t.cfg.broadcast?.[t.peerId];if(!n||!Array.isArray(n)||n.length===0)return!1;let r=t.cfg.broadcast?.strategy||`parallel`;Y.info(`Broadcasting message to ${n.length} agents (${r})`);let i=t.cfg.agents?.list?.map(t=>e(t.id)),a=(i?.length??0)>0,o=t.msg.chatType===`group`?t.groupHistories.get(t.groupHistoryKey)??[]:void 0,s=async n=>{let r=e(n);if(a&&!i?.includes(r))return Y.warn(`Broadcast agent ${n} not found in agents.list; skipping`),!1;let s=Rt({cfg:t.cfg,msg:t.msg,route:t.route,peerId:t.peerId,agentId:r}),c={...t.route,agentId:r,...s};try{return await t.processMessage(t.msg,c,t.groupHistoryKey,{groupHistory:o,suppressGroupHistoryClear:!0})}catch(e){return Y.error(`Broadcast agent ${n} failed: ${K(e)}`),!1}};if(r===`sequential`)for(let e of n)await s(e);else await Promise.allSettled(n.map(s));return t.msg.chatType===`group`&&t.groupHistories.set(t.groupHistoryKey,[]),!0}function Bt(e,t,n){let r=e;for(let e of t)r=r.replace(e,` `);if(n){let e=n.replace(/\D/g,``);if(e){let t=RegExp(`\\+?${e}`,`g`);r=r.replace(t,` `)}}return r.replace(/\s+/g,` `).trim()}function Vt(e,t){let n=l({From:t,ChatType:`group`,Provider:`whatsapp`})?.id,r=e.channels?.whatsapp,i=!!(r?.groupAllowFrom?.length||r?.allowFrom?.length);return o({cfg:e,channel:`whatsapp`,groupId:n??t,hasGroupAllowFrom:i})}function Ht(e,t){let n=l({From:t,ChatType:`group`,Provider:`whatsapp`})?.id;return h({cfg:e,channel:`whatsapp`,groupId:n??t})}function Ut(e){let t=s(a(e.cfg.session?.store,{agentId:e.agentId}))[e.sessionKey],n=Ht(e.cfg,e.conversationId)?`mention`:`always`;return P(t?.groupActivation)??n}function Wt(e,t,n){for(let r of e){let e=B(r)??r;!e||t.has(e)||(t.add(e),n.push(e))}}function Gt(e,t,n,r){if(!n||!r)return;let i=B(n)??n;if(!i)return;let a=e.get(t);a||(a=new Map,e.set(t,a)),a.set(i,r)}function Kt(e){let{participants:t,roster:n,fallbackE164:r}=e,i=new Set,a=[];if(t?.length&&Wt(t,i,a),n&&Wt(n.keys(),i,a),a.length===0&&r){let e=B(r)??r;e&&a.push(e)}if(a.length!==0)return a.map(e=>{let t=n?.get(e);return t?`${t} (${e})`:e}).join(`, `)}function qt(e,t){let n=B(t.senderE164??``);return n?It(e,t.selfE164??void 0).includes(n):!1}function Jt(e){let t=e.msg.senderName&&e.msg.senderE164?`${e.msg.senderName} (${e.msg.senderE164})`:e.msg.senderName??e.msg.senderE164??`Unknown`;k({historyMap:e.groupHistories,historyKey:e.groupHistoryKey,limit:e.groupHistoryLimit,entry:{sender:t,body:e.msg.body,timestamp:e.msg.timestamp,id:e.msg.id,senderJid:e.msg.senderJid}})}function Yt(e,t){return e.logVerbose(t),Jt({msg:e.msg,groupHistories:e.groupHistories,groupHistoryKey:e.groupHistoryKey,groupHistoryLimit:e.groupHistoryLimit}),{shouldProcess:!1}}function Xt(e){let t=Vt(e.cfg,e.conversationId);if(t.allowlistEnabled&&!t.allowed)return e.logVerbose(`Skipping group message ${e.conversationId} (not in allowlist)`),{shouldProcess:!1};Gt(e.groupMemberNames,e.groupHistoryKey,e.msg.senderE164,e.msg.senderName);let n=Mt(e.cfg,e.agentId),r=Bt(e.msg.body,n.mentionRegexes,e.msg.selfE164),i=oe(r),a=qt(e.baseMentionConfig,e.msg),o=a&&ae(r,e.cfg);if(i.hasCommand&&!a)return Yt(e,`Ignoring /activation from non-owner in group ${e.conversationId}`);let s=Ft(e.msg,n,e.authDir);e.replyLogger.debug({conversationId:e.conversationId,wasMentioned:s.wasMentioned,...s.details},`group mention debug`);let c=s.wasMentioned,l=Ut({cfg:e.cfg,agentId:e.agentId,sessionKey:e.sessionKey,conversationId:e.conversationId})!==`always`,u=e.msg.selfJid?.replace(/:\\d+/,``),d=e.msg.replyToSenderJid?.replace(/:\\d+/,``),f=e.msg.selfE164?B(e.msg.selfE164):null,p=e.msg.replyToSenderE164?B(e.msg.replyToSenderE164):null,m=S({requireMention:l,canDetectMention:!0,wasMentioned:c,implicitMention:!!(u&&d&&u===d||f&&p&&f===p),shouldBypassMention:o});return e.msg.wasMentioned=m.effectiveWasMentioned,!o&&l&&m.shouldSkip?Yt(e,`Group message stored for context (no mention detected) in ${e.conversationId}: ${e.msg.body}`):{shouldProcess:!0}}function Zt(e,t){e.add(t),t.finally(()=>{e.delete(t)})}function Qt(e){let t=a(e.cfg.session?.store,{agentId:e.storeAgentId}),n=g({storePath:t,sessionKey:e.sessionKey,deliveryContext:{channel:e.channel,to:e.to,accountId:e.accountId},ctx:e.ctx}).catch(n=>{e.warn({error:K(n),storePath:t,sessionKey:e.sessionKey,to:e.to},`failed updating last route`)});Zt(e.backgroundTasks,n)}function $t(e){return e.chatType===`group`?e.conversationId??e.from:e.senderE164?B(e.senderE164)??e.senderE164:e.from.includes(`@`)?G(e.from)??e.from:B(e.from)??e.from}function $(e,t=400){return!e||e.length<=t?e:`${e.slice(0,t)}… (truncated ${e.length-t} chars)`}function en(e){let t=(e instanceof Error?`${e.message}\n${e.stack??``}`:(e=>{if(e==null)return``;if(typeof e==`string`)return e;if(e instanceof Error)return`${e.message}\n${e.stack??``}`;if(typeof e==`object`)try{return JSON.stringify(e)}catch{return Object.prototype.toString.call(e)}return typeof e==`number`||typeof e==`boolean`||typeof e==`bigint`?String(e):typeof e==`symbol`?e.description??e.toString():typeof e==`function`?e.name?`[function ${e.name}]`:`[function]`:Object.prototype.toString.call(e)})(e)).toLowerCase();return t.includes(`unsupported state or unable to authenticate data`)||t.includes(`bad mac`)?t.includes(`@whiskeysockets/baileys`)||t.includes(`baileys`)||t.includes(`noise-handler`)||t.includes(`aesdecryptgcm`):!1}function tn(e){if(e.isReasoning===!0)return!0;let t=e.text;return typeof t==`string`?t.trimStart().toLowerCase().startsWith(`reasoning:`):!1}async function nn(e){let{replyResult:t,msg:n,maxMediaBytes:r,textLimit:i,replyLogger:a,connectionId:o,skipLog:s}=e,c=Date.now();if(tn(t)){X.debug(`Suppressed reasoning payload to ${n.from}`);return}let l=e.tableMode??`code`,u=e.chunkMode??`length`,d=Ee(Re(je(t.text||``,l)),i,u),f=t.mediaUrls?.length?t.mediaUrls:t.mediaUrl?[t.mediaUrl]:[],p=async(e,t,r=3)=>{let i;for(let a=1;a<=r;a++)try{return await e()}catch(e){i=e;let o=K(e),s=a===r;if(!/closed|reset|timed\s*out|disconnect/i.test(o)||s)throw e;let c=500*a;W(`Retrying ${t} to ${n.from} after failure (${a}/${r-1}) in ${c}ms: ${o}`),await _e(c)}throw i};if(f.length===0&&d.length){let e=d.length;for(let[t,r]of d.entries()){let i=Date.now();if(await p(()=>n.reply(r),`text`),!s){let r=Date.now()-i;X.debug(`Sent chunk ${t+1}/${e} to ${n.from} (${r.toFixed(0)}ms)`)}}a.info({correlationId:n.id??q(),connectionId:o??null,to:n.from,from:n.to,text:$(t.text,240),mediaUrl:null,mediaSizeBytes:null,mediaKind:null,durationMs:Date.now()-c},`auto-reply sent (text)`);return}let m=[...d];for(let[t,i]of f.entries()){let s=t===0&&m.shift()||void 0;try{let t=await Ae(i,{maxBytes:r,localRoots:e.mediaLocalRoots});if(z()&&(W(`Web auto-reply media size: ${(t.buffer.length/(1024*1024)).toFixed(2)}MB`),W(`Web auto-reply media source: ${i} (kind ${t.kind})`)),t.kind===`image`)await p(()=>n.sendMedia({image:t.buffer,caption:s,mimetype:t.contentType}),`media:image`);else if(t.kind===`audio`)await p(()=>n.sendMedia({audio:t.buffer,ptt:!0,mimetype:t.contentType,caption:s}),`media:audio`);else if(t.kind===`video`)await p(()=>n.sendMedia({video:t.buffer,caption:s,mimetype:t.contentType}),`media:video`);else{let e=t.fileName??i.split(`/`).pop()??`file`,r=t.contentType??`application/octet-stream`;await p(()=>n.sendMedia({document:t.buffer,fileName:e,caption:s,mimetype:r}),`media:document`)}X.info(`Sent media reply to ${n.from} (${(t.buffer.length/(1024*1024)).toFixed(2)}MB)`),a.info({correlationId:n.id??q(),connectionId:o??null,to:n.from,from:n.to,text:s??null,mediaUrl:i,mediaSizeBytes:t.buffer.length,mediaKind:t.kind,durationMs:Date.now()-c},`auto-reply sent (media)`)}catch(e){if(X.error(`Failed sending web media to ${n.from}: ${K(e)}`),a.warn({err:e,mediaUrl:i},`failed to send web media reply`),t===0){let t=e instanceof Error?`⚠️ Media failed: ${e.message}`:`⚠️ Media failed.`,r=[m.shift()??s??``,t].filter(Boolean).join(`
5
- `);r&&(X.warn(`Media skipped; sent text-only to ${n.from}`),await n.reply(r))}}}for(let e of m)await n.reply(e)}function rn(e){if(!e.msg.id)return;let t=e.cfg.channels?.whatsapp?.ackReaction,n=(t?.emoji??``).trim(),r=t?.direct??!0,i=t?.group??`mentions`,a=e.msg.conversationId??e.msg.from,o=e.msg.chatType===`group`?Ut({cfg:e.cfg,agentId:e.agentId,sessionKey:e.sessionKey,conversationId:a}):null;F({emoji:n,isDirect:e.msg.chatType===`direct`,isGroup:e.msg.chatType===`group`,directEnabled:r,groupMode:i,wasMentioned:e.msg.wasMentioned===!0,groupActivated:o===`always`})&&(e.info({chatId:e.msg.chatId,messageId:e.msg.id,emoji:n},`sending ack reaction`),ze(e.msg.chatId,e.msg.id,n,{verbose:e.verbose,fromMe:!1,participant:e.msg.senderJid,accountId:e.accountId}).catch(t=>{e.warn({error:K(t),chatId:e.msg.chatId,messageId:e.msg.id},`failed to send ack reaction`),W(`WhatsApp ack reaction failed for chat ${e.msg.chatId}: ${K(t)}`)}))}function an(e){return e.replyToBody?`[Replying to ${e.replyToSender??`unknown sender`}${e.replyToId?` id:${e.replyToId}`:``}]\n${e.replyToBody}\n[/Replying]`:null}function on(e){let{cfg:t,msg:n,agentId:r,previousTimestamp:i,envelope:a}=e,o=M(t,r,{configured:t.channels?.whatsapp?.messagePrefix,hasAllowFrom:(t.channels?.whatsapp?.allowFrom?.length??0)>0}),s=o?`${o} `:``,c=an(n),l=`${s}${n.body}${c?`\n\n${c}`:``}`;return E({channel:`WhatsApp`,from:n.chatType===`group`?n.from:n.from?.replace(/^whatsapp:/,``),timestamp:n.timestamp,body:l,chatType:n.chatType,sender:{name:n.senderName,e164:n.senderE164,id:n.senderJid},previousTimestamp:i,envelope:a,fromMe:n.fromMe})}async function sn(e){let t=e.cfg.commands?.useAccessGroups!==!1;if(!t)return!0;let n=e.msg.chatType===`group`,r=B(n?e.msg.senderE164??``:e.msg.senderE164??e.msg.from??``);if(!r)return!1;let i=p({cfg:e.cfg,accountId:e.msg.accountId}),a=i.dmPolicy??`pairing`,o=i.groupPolicy??`allowlist`,s=i.allowFrom??[],c=i.groupAllowFrom??(s.length>0?s:void 0),l=n?[]:await R({provider:`whatsapp`,accountId:e.msg.accountId,dmPolicy:a});return T({isGroup:n,dmPolicy:a,groupPolicy:o,allowFrom:s.length>0?s:e.msg.selfE164?[e.msg.selfE164]:[],groupAllowFrom:c,storeAllowFrom:l,isSenderAllowed:e=>e.includes(`*`)?!0:e.map(e=>B(String(e))).filter(e=>!!e).includes(r),command:{useAccessGroups:t,allowTextCommands:!0,hasControlCommand:!0}}).commandAuthorized}function cn(e){let t=p({cfg:e.cfg,accountId:e.msg.accountId});return w({dmScope:e.cfg.session?.dmScope,allowFrom:t.allowFrom,normalizeEntry:e=>B(e)})}async function ln(e){let t=e.msg.conversationId??e.msg.from,{storePath:n,envelopeOptions:r,previousTimestamp:i}=re({cfg:e.cfg,agentId:e.route.agentId,sessionKey:e.route.sessionKey}),a=on({cfg:e.cfg,msg:e.msg,agentId:e.route.agentId,previousTimestamp:i,envelope:r}),o=!1;if(e.msg.chatType===`group`){let n=e.groupHistory??e.groupHistories.get(e.groupHistoryKey)??[];n.length>0&&(a=ee({entries:n.map(e=>({sender:e.sender,body:e.body,timestamp:e.timestamp})),currentMessage:a,excludeLast:!1,formatEntry:e=>E({channel:`WhatsApp`,from:t,timestamp:e.timestamp,body:e.body,chatType:`group`,senderLabel:e.sender,envelope:r})})),o=!(e.suppressGroupHistoryClear??!1)}let s=e.buildCombinedEchoKey({sessionKey:e.route.sessionKey,combinedBody:a});if(e.echoHas(s))return W(`Skipping auto-reply: detected echo for combined message`),e.echoForget(s),!1;rn({cfg:e.cfg,msg:e.msg,agentId:e.route.agentId,sessionKey:e.route.sessionKey,conversationId:t,verbose:e.verbose,accountId:e.route.accountId,info:e.replyLogger.info.bind(e.replyLogger),warn:e.replyLogger.warn.bind(e.replyLogger)});let c=e.msg.id??q();e.replyLogger.info({connectionId:e.connectionId,correlationId:c,from:e.msg.chatType===`group`?t:e.msg.from,to:e.msg.to,body:$(a,240),mediaType:e.msg.mediaType??null,mediaPath:e.msg.mediaPath??null},`inbound web message`);let l=e.msg.chatType===`group`?t:e.msg.from,u=e.msg.mediaType?`, ${e.msg.mediaType}`:``;Y.info(`Inbound message ${l} -> ${e.msg.to} (${e.msg.chatType}${u}, ${a.length} chars)`),z()&&Y.debug(`Inbound body: ${$(a,400)}`);let d=e.msg.chatType===`group`?void 0:e.msg.senderE164?B(e.msg.senderE164):e.msg.from.includes(`@`)?G(e.msg.from):B(e.msg.from),f=e.maxMediaTextChunkLimit??Oe(e.cfg,`whatsapp`),p=De(e.cfg,`whatsapp`,e.route.accountId),m=ke({cfg:e.cfg,channel:`whatsapp`,accountId:e.route.accountId}),h=Te(e.cfg,e.route.agentId),g=!1,v=!1,y=I(e.msg.body,e.cfg)?await sn({cfg:e.cfg,msg:e.msg}):void 0,x=e.cfg.messages?.responsePrefix,{onModelSelected:S,...C}=b({cfg:e.cfg,agentId:e.route.agentId,channel:`whatsapp`,accountId:e.route.accountId}),w=e.msg.chatType!==`group`&&!!e.msg.selfE164&&B(e.msg.from)===B(e.msg.selfE164??``),T=C.responsePrefix??(x===void 0&&w?he(e.cfg,e.route.agentId):void 0),te=e.msg.chatType===`group`?(e.groupHistory??e.groupHistories.get(e.groupHistoryKey)??[]).map(e=>({sender:e.sender,body:e.body,timestamp:e.timestamp})):void 0,D=me({Body:a,BodyForAgent:e.msg.body,InboundHistory:te,RawBody:e.msg.body,CommandBody:e.msg.body,From:e.msg.from,To:e.msg.to,SessionKey:e.route.sessionKey,AccountId:e.route.accountId,MessageSid:e.msg.id,ReplyToId:e.msg.replyToId,ReplyToBody:e.msg.replyToBody,ReplyToSender:e.msg.replyToSender,MediaPath:e.msg.mediaPath,MediaUrl:e.msg.mediaUrl,MediaType:e.msg.mediaType,ChatType:e.msg.chatType,ConversationLabel:e.msg.chatType===`group`?t:e.msg.from,GroupSubject:e.msg.groupSubject,GroupMembers:Kt({participants:e.msg.groupParticipants,roster:e.groupMemberNames.get(e.groupHistoryKey),fallbackE164:e.msg.senderE164}),SenderName:e.msg.senderName,SenderId:e.msg.senderJid?.trim()||e.msg.senderE164,SenderE164:e.msg.senderE164,CommandAuthorized:y,WasMentioned:e.msg.wasMentioned,...e.msg.location?Ne(e.msg.location):{},Provider:`whatsapp`,Surface:`whatsapp`,OriginatingChannel:`whatsapp`,OriginatingTo:e.msg.from}),O=cn({cfg:e.cfg,msg:e.msg}),ie=!O||O===d,k=ne({route:e.route,sessionKey:e.route.sessionKey});d&&k===e.route.mainSessionKey&&ie?Qt({cfg:e.cfg,backgroundTasks:e.backgroundTasks,storeAgentId:e.route.agentId,sessionKey:e.route.mainSessionKey,channel:`whatsapp`,to:d,accountId:e.route.accountId,ctx:D,warn:e.replyLogger.warn.bind(e.replyLogger)}):d&&k===e.route.mainSessionKey&&O&&W(`Skipping main-session last route update for ${d} (pinned owner ${O})`);let A=_({storePath:n,sessionKey:e.route.sessionKey,ctx:D}).catch(t=>{e.replyLogger.warn({error:K(t),storePath:n,sessionKey:e.route.sessionKey},`failed updating session meta`)});Zt(e.backgroundTasks,A);let{queuedFinal:j}=await L({ctx:D,cfg:e.cfg,replyResolver:e.replyResolver,dispatcherOptions:{...C,responsePrefix:T,onHeartbeatStrip:()=>{g||(g=!0,W(`Stripped stray HEARTBEAT_OK token from web reply`))},deliver:async(n,r)=>{if(r.kind!==`final`)return;await nn({replyResult:n,msg:e.msg,mediaLocalRoots:h,maxMediaBytes:e.maxMediaBytes,textLimit:f,chunkMode:p,replyLogger:e.replyLogger,connectionId:e.connectionId,skipLog:!1,tableMode:m}),v=!0;let i=n.text?!0:void 0;e.rememberSentText(n.text,{combinedBody:a,combinedBodySessionKey:e.route.sessionKey,logVerboseMessage:i});let o=e.msg.chatType===`group`?t:e.msg.from??`unknown`,s=!!(n.mediaUrl||n.mediaUrls?.length);if(X.info(`Auto-replied to ${o}${s?` (media)`:``}`),z()){let e=n.text==null?`<media>`:$(n.text,400);X.debug(`Reply body: ${e}${s?` (media)`:``}`)}},onError:(n,r)=>{let i=r.kind===`tool`?`tool update`:r.kind===`block`?`block update`:`auto-reply`;X.error(`Failed sending web ${i} to ${e.msg.from??t}: ${K(n)}`)},onReplyStart:e.msg.sendComposing},replyOptions:{disableBlockStreaming:!0,onModelSelected:S}});return j?(o&&e.groupHistories.set(e.groupHistoryKey,[]),v):(o&&e.groupHistories.set(e.groupHistoryKey,[]),W(`Skipping auto-reply: silent token or no text/media returned from resolver`),!1)}function un(e){let t=async(t,n,r,i)=>ln({cfg:e.cfg,msg:t,route:n,groupHistoryKey:r,groupHistories:e.groupHistories,groupMemberNames:e.groupMemberNames,connectionId:e.connectionId,verbose:e.verbose,maxMediaBytes:e.maxMediaBytes,replyResolver:e.replyResolver,replyLogger:e.replyLogger,backgroundTasks:e.backgroundTasks,rememberSentText:e.echoTracker.rememberText,echoHas:e.echoTracker.has,echoForget:e.echoTracker.forget,buildCombinedEchoKey:e.echoTracker.buildCombinedKey,groupHistory:i?.groupHistory,suppressGroupHistoryClear:i?.suppressGroupHistoryClear});return async r=>{let i=r.conversationId??r.from,a=$t(r),o=C({cfg:v(),channel:`whatsapp`,accountId:r.accountId,peer:{kind:r.chatType===`group`?`group`:`direct`,id:a}}),s=r.chatType===`group`?n({channel:`whatsapp`,accountId:o.accountId,peerKind:`group`,peerId:a}):o.sessionKey;if(r.from===r.to&&W(`📱 Same-phone mode detected (from === to: ${r.from})`),e.echoTracker.has(r.body)){W(`Skipping auto-reply: detected echo (message matches recently sent text)`),e.echoTracker.forget(r.body);return}if(r.chatType===`group`){let t={From:r.from,To:r.to,SessionKey:o.sessionKey,AccountId:o.accountId,ChatType:r.chatType,ConversationLabel:i,GroupSubject:r.groupSubject,SenderName:r.senderName,SenderId:r.senderJid?.trim()||r.senderE164,SenderE164:r.senderE164,Provider:`whatsapp`,Surface:`whatsapp`,OriginatingChannel:`whatsapp`,OriginatingTo:i};if(Qt({cfg:e.cfg,backgroundTasks:e.backgroundTasks,storeAgentId:o.agentId,sessionKey:o.sessionKey,channel:`whatsapp`,to:i,accountId:o.accountId,ctx:t,warn:e.replyLogger.warn.bind(e.replyLogger)}),!Xt({cfg:e.cfg,msg:r,conversationId:i,groupHistoryKey:s,agentId:o.agentId,sessionKey:o.sessionKey,baseMentionConfig:e.baseMentionConfig,authDir:e.account.authDir,groupHistories:e.groupHistories,groupHistoryLimit:e.groupHistoryLimit,groupMemberNames:e.groupMemberNames,logVerbose:W,replyLogger:e.replyLogger}).shouldProcess)return}else !r.senderE164&&a&&a.startsWith(`+`)&&(r.senderE164=B(a)??r.senderE164);await zt({cfg:e.cfg,msg:r,peerId:a,route:o,groupHistoryKey:s,groupHistories:e.groupHistories,processMessage:t})||await t(r,o,s)}}function dn(e){return e===440}async function fn(e,t=Q,n=!0,r=ue,i=ve,a,o={}){let s=q(),l=H({module:`web-auto-reply`,runId:s}),u=H({module:`web-heartbeat`,runId:s}),h=H({module:`web-reconnect`,runId:s}),g={running:!0,connected:!1,reconnectAttempts:0,lastConnectedAt:null,lastDisconnect:null,lastMessageAt:null,lastEventAt:null,lastError:null},_=()=>{o.statusSink?.({...g,lastDisconnect:g.lastDisconnect?{...g.lastDisconnect}:null})};_();let y=v(),b=p({cfg:y,accountId:o.accountId}),S={...y,channels:{...y.channels,whatsapp:{...y.channels?.whatsapp,ackReaction:b.ackReaction,messagePrefix:b.messagePrefix,allowFrom:b.allowFrom,groupAllowFrom:b.groupAllowFrom,groupPolicy:b.groupPolicy,textChunkLimit:b.textChunkLimit,chunkMode:b.chunkMode,mediaMaxMb:b.mediaMaxMb,blockStreaming:b.blockStreaming,groups:b.groups}}},ee=f(b),w=$e(S,o.heartbeatSeconds),T=et(S,o.reconnect),ne=Mt(S),re=S.channels?.whatsapp?.accounts?.[o.accountId??``]?.historyLimit??S.channels?.whatsapp?.historyLimit??S.messages?.groupChat?.historyLimit??50,E=new Map,O=new Map,ie=Lt({maxItems:100,logVerbose:W}),k=o.sleep??((e,t)=>D(e,t??a)),A=()=>a?.aborted===!0,j=a&&new Promise(e=>a.addEventListener(`abort`,()=>e(`aborted`),{once:!0})),M=process.getMaxListeners?.()??10;process.setMaxListeners&&M<50&&process.setMaxListeners(50);let N=!1,P=()=>{N=!0};process.once(`SIGINT`,P);let F=0;for(;!A();){let s=q(),f=Date.now(),p=null,v=null,y=null,D=0,M=null,oe=o.messageTimeoutMs??1800*1e3,ce=o.watchdogCheckMs??60*1e3,I=new Set,de=un({cfg:S,verbose:e,connectionId:s,maxMediaBytes:ee,groupHistoryLimit:re,groupHistories:E,groupMemberNames:O,echoTracker:ie,backgroundTasks:I,replyResolver:r??ue,replyLogger:l,baseMentionConfig:ne,account:b}),fe=se({cfg:S,channel:`whatsapp`}),L=await(t??Q)({verbose:e,accountId:b.accountId,authDir:b.authDir,mediaMaxMb:b.mediaMaxMb,sendReadReceipts:b.sendReadReceipts,debounceMs:fe,shouldDebounce:e=>e.mediaPath||e.mediaType||e.location||e.replyToId||e.replyToBody?!1:!ae(e.body,S),onMessage:async e=>{D+=1,y=Date.now(),g.lastMessageAt=y,g.lastEventAt=y,_(),await de(e)}});Object.assign(g,x()),g.lastError=null,_();let{e164:me}=m(b.authDir),he=C({cfg:S,channel:`whatsapp`,accountId:b.accountId});le(`WhatsApp gateway connected${me?` as ${me}`:``}.`,{sessionKey:he.sessionKey}),Le(b.accountId,L),M=Ie(e=>{if(!en(e))return!1;let t=K(e);return h.warn({connectionId:s,error:t},`web reconnect: unhandled rejection from WhatsApp socket; forcing reconnect`),L.signalClose?.({status:499,isLoggedOut:!1,error:e}),!0});let R=async()=>{Le(b.accountId,null),M&&=(M(),null),p&&clearInterval(p),v&&clearInterval(v),I.size>0&&(await Promise.allSettled(I),I.clear());try{await L.close()}catch(e){W(`Socket close failed: ${K(e)}`)}};if(n&&(p=setInterval(()=>{let e=c(b.authDir),t=y?Math.floor((Date.now()-y)/6e4):null,n={connectionId:s,reconnectAttempts:F,messagesHandled:D,lastMessageAt:y,authAgeMs:e,uptimeMs:Date.now()-f,...t!==null&&t>30?{minutesSinceLastMessage:t}:{}};t&&t>30?u.warn(n,`⚠️ web gateway heartbeat - no messages in 30+ minutes`):u.info(n,`web gateway heartbeat`)},w*1e3),v=setInterval(()=>{if(!y)return;let e=Date.now()-y;if(e<=oe)return;let t=Math.floor(e/6e4);u.warn({connectionId:s,minutesSinceLastMessage:t,lastMessageAt:new Date(y),messagesHandled:D},`Message timeout detected - forcing reconnect`),tt.warn(`No messages received in ${t}m - restarting connection`),R().catch(e=>{W(`Close listener failed: ${K(e)}`)}),L.signalClose?.({status:499,isLoggedOut:!1,error:`watchdog-timeout`})},ce)),J.info(`Listening for personal WhatsApp inbound messages.`),(process.stdout.isTTY||process.stderr.isTTY)&&J.raw(`Ctrl+C to stop.`),!n){await R(),process.removeListener(`SIGINT`,P);return}let z=await Promise.race([L.onClose?.catch(e=>(h.error({error:K(e)},`listener.onClose rejected`),{status:500,isLoggedOut:!1,error:e}))??nt(),j??nt()]);if(Date.now()-f>w*1e3&&(F=0),g.reconnectAttempts=F,_(),A()||N||z===`aborted`){await R();break}let B=(typeof z==`object`&&z&&`status`in z?z.status:void 0)??`unknown`,V=typeof z==`object`&&z&&`isLoggedOut`in z&&z.isLoggedOut,H=K(z);if(g.connected=!1,g.lastEventAt=Date.now(),g.lastDisconnect={at:g.lastEventAt,status:typeof B==`number`?B:void 0,error:H,loggedOut:!!V},g.lastError=H,g.reconnectAttempts=F,_(),h.info({connectionId:s,status:B,loggedOut:V,reconnectAttempts:F,error:H},`web reconnect: connection closed`),le(`WhatsApp gateway disconnected (status ${B??`unknown`})`,{sessionKey:he.sessionKey}),V){i.error(`WhatsApp session logged out. Run \`${d(`openclaw channels login --channel web`)}\` to relink.`),await R();break}if(dn(B)){h.warn({connectionId:s,status:B,error:H},`web reconnect: non-retryable close status; stopping monitor`),i.error(`WhatsApp Web connection closed (status ${B}: session conflict). Resolve conflicting WhatsApp Web sessions, then relink with \`${d(`openclaw channels login --channel web`)}\`. Stopping web monitoring.`),await R();break}if(F+=1,g.reconnectAttempts=F,_(),T.maxAttempts>0&&F>=T.maxAttempts){h.warn({connectionId:s,status:B,reconnectAttempts:F,maxAttempts:T.maxAttempts},`web reconnect: max attempts reached; continuing in degraded mode`),i.error(`WhatsApp Web reconnect: max attempts reached (${F}/${T.maxAttempts}). Stopping web monitoring.`),await R();break}let U=pe(T,F);h.info({connectionId:s,status:B,reconnectAttempts:F,maxAttempts:T.maxAttempts||`unlimited`,delayMs:U},`web reconnect: scheduling retry`),i.error(`WhatsApp Web connection closed (status ${B}). Retry ${F}/${T.maxAttempts||`∞`} in ${te(U)}… (${H})`),await R();try{await k(U,a)}catch{break}}g.running=!1,g.connected=!1,g.lastEventAt=Date.now(),_(),process.removeListener(`SIGINT`,P)}export{Q as n,Ze as r,fn as t};
5
+ `);r&&(X.warn(`Media skipped; sent text-only to ${n.from}`),await n.reply(r))}}}for(let e of m)await n.reply(e)}function rn(e){if(!e.msg.id)return;let t=e.cfg.channels?.whatsapp?.ackReaction,n=(t?.emoji??``).trim(),r=t?.direct??!0,i=t?.group??`mentions`,a=e.msg.conversationId??e.msg.from,o=e.msg.chatType===`group`?Ut({cfg:e.cfg,agentId:e.agentId,sessionKey:e.sessionKey,conversationId:a}):null;F({emoji:n,isDirect:e.msg.chatType===`direct`,isGroup:e.msg.chatType===`group`,directEnabled:r,groupMode:i,wasMentioned:e.msg.wasMentioned===!0,groupActivated:o===`always`})&&(e.info({chatId:e.msg.chatId,messageId:e.msg.id,emoji:n},`sending ack reaction`),ze(e.msg.chatId,e.msg.id,n,{verbose:e.verbose,fromMe:!1,participant:e.msg.senderJid,accountId:e.accountId}).catch(t=>{e.warn({error:K(t),chatId:e.msg.chatId,messageId:e.msg.id},`failed to send ack reaction`),W(`WhatsApp ack reaction failed for chat ${e.msg.chatId}: ${K(t)}`)}))}function an(e){return e.replyToBody?`[Replying to ${e.replyToSender??`unknown sender`}${e.replyToId?` id:${e.replyToId}`:``}]\n${e.replyToBody}\n[/Replying]`:null}function on(e){let{cfg:t,msg:n,agentId:r,previousTimestamp:i,envelope:a}=e,o=M(t,r,{configured:t.channels?.whatsapp?.messagePrefix,hasAllowFrom:(t.channels?.whatsapp?.allowFrom?.length??0)>0}),s=o?`${o} `:``,c=an(n),l=`${s}${n.body}${c?`\n\n${c}`:``}`;return E({channel:`WhatsApp`,from:n.chatType===`group`?n.from:n.from?.replace(/^whatsapp:/,``),timestamp:n.timestamp,body:l,chatType:n.chatType,sender:{name:n.senderName,e164:n.senderE164,id:n.senderJid},previousTimestamp:i,envelope:a,fromMe:n.fromMe})}async function sn(e){let t=e.cfg.commands?.useAccessGroups!==!1;if(!t)return!0;let n=e.msg.chatType===`group`,r=B(n?e.msg.senderE164??``:e.msg.senderE164??e.msg.from??``);if(!r)return!1;let i=p({cfg:e.cfg,accountId:e.msg.accountId}),a=i.dmPolicy??`pairing`,o=i.groupPolicy??`allowlist`,s=i.allowFrom??[],c=i.groupAllowFrom??(s.length>0?s:void 0),l=n?[]:await R({provider:`whatsapp`,accountId:e.msg.accountId,dmPolicy:a});return T({isGroup:n,dmPolicy:a,groupPolicy:o,allowFrom:s.length>0?s:e.msg.selfE164?[e.msg.selfE164]:[],groupAllowFrom:c,storeAllowFrom:l,isSenderAllowed:e=>e.includes(`*`)?!0:e.map(e=>B(String(e))).filter(e=>!!e).includes(r),command:{useAccessGroups:t,allowTextCommands:!0,hasControlCommand:!0}}).commandAuthorized}function cn(e){let t=p({cfg:e.cfg,accountId:e.msg.accountId});return w({dmScope:e.cfg.session?.dmScope,allowFrom:t.allowFrom,normalizeEntry:e=>B(e)})}async function ln(e){let t=e.msg.conversationId??e.msg.from,{storePath:n,envelopeOptions:r,previousTimestamp:i}=re({cfg:e.cfg,agentId:e.route.agentId,sessionKey:e.route.sessionKey}),a=on({cfg:e.cfg,msg:e.msg,agentId:e.route.agentId,previousTimestamp:i,envelope:r}),o=!1;if(e.msg.chatType===`group`){let n=e.groupHistory??e.groupHistories.get(e.groupHistoryKey)??[];n.length>0&&(a=ee({entries:n.map(e=>({sender:e.sender,body:e.body,timestamp:e.timestamp})),currentMessage:a,excludeLast:!1,formatEntry:e=>E({channel:`WhatsApp`,from:t,timestamp:e.timestamp,body:e.body,chatType:`group`,senderLabel:e.sender,envelope:r})})),o=!(e.suppressGroupHistoryClear??!1)}let s=e.buildCombinedEchoKey({sessionKey:e.route.sessionKey,combinedBody:a});if(e.echoHas(s))return W(`Skipping auto-reply: detected echo for combined message`),e.echoForget(s),!1;rn({cfg:e.cfg,msg:e.msg,agentId:e.route.agentId,sessionKey:e.route.sessionKey,conversationId:t,verbose:e.verbose,accountId:e.route.accountId,info:e.replyLogger.info.bind(e.replyLogger),warn:e.replyLogger.warn.bind(e.replyLogger)});let c=e.msg.id??q();e.replyLogger.info({connectionId:e.connectionId,correlationId:c,from:e.msg.chatType===`group`?t:e.msg.from,to:e.msg.to,body:$(a,240),mediaType:e.msg.mediaType??null,mediaPath:e.msg.mediaPath??null},`inbound web message`);let l=e.msg.chatType===`group`?t:e.msg.from,u=e.msg.mediaType?`, ${e.msg.mediaType}`:``;Y.info(`Inbound message ${l} -> ${e.msg.to} (${e.msg.chatType}${u}, ${a.length} chars)`),z()&&Y.debug(`Inbound body: ${$(a,400)}`);let d=e.msg.chatType===`group`?void 0:e.msg.senderE164?B(e.msg.senderE164):e.msg.from.includes(`@`)?G(e.msg.from):B(e.msg.from),f=e.maxMediaTextChunkLimit??Oe(e.cfg,`whatsapp`),p=De(e.cfg,`whatsapp`,e.route.accountId),m=ke({cfg:e.cfg,channel:`whatsapp`,accountId:e.route.accountId}),h=Te(e.cfg,e.route.agentId),g=!1,v=!1,y=I(e.msg.body,e.cfg)?await sn({cfg:e.cfg,msg:e.msg}):void 0,x=e.cfg.messages?.responsePrefix,{onModelSelected:S,...C}=b({cfg:e.cfg,agentId:e.route.agentId,channel:`whatsapp`,accountId:e.route.accountId}),w=e.msg.chatType!==`group`&&!!e.msg.selfE164&&B(e.msg.from)===B(e.msg.selfE164??``),T=C.responsePrefix??(x===void 0&&w?he(e.cfg,e.route.agentId):void 0),te=e.msg.chatType===`group`?(e.groupHistory??e.groupHistories.get(e.groupHistoryKey)??[]).map(e=>({sender:e.sender,body:e.body,timestamp:e.timestamp})):void 0,D=me({Body:a,BodyForAgent:e.msg.body,InboundHistory:te,RawBody:e.msg.body,CommandBody:e.msg.body,From:e.msg.from,To:e.msg.to,SessionKey:e.route.sessionKey,AccountId:e.route.accountId,MessageSid:e.msg.id,ReplyToId:e.msg.replyToId,ReplyToBody:e.msg.replyToBody,ReplyToSender:e.msg.replyToSender,MediaPath:e.msg.mediaPath,MediaUrl:e.msg.mediaUrl,MediaType:e.msg.mediaType,ChatType:e.msg.chatType,ConversationLabel:e.msg.chatType===`group`?t:e.msg.from,GroupSubject:e.msg.groupSubject,GroupMembers:Kt({participants:e.msg.groupParticipants,roster:e.groupMemberNames.get(e.groupHistoryKey),fallbackE164:e.msg.senderE164}),SenderName:e.msg.senderName,SenderId:e.msg.senderJid?.trim()||e.msg.senderE164,SenderE164:e.msg.senderE164,CommandAuthorized:y,WasMentioned:e.msg.wasMentioned,...e.msg.location?Ne(e.msg.location):{},Provider:`whatsapp`,Surface:`whatsapp`,OriginatingChannel:`whatsapp`,OriginatingTo:e.msg.from}),O=cn({cfg:e.cfg,msg:e.msg}),ie=!O||O===d,k=ne({route:e.route,sessionKey:e.route.sessionKey});d&&k===e.route.mainSessionKey&&ie?Qt({cfg:e.cfg,backgroundTasks:e.backgroundTasks,storeAgentId:e.route.agentId,sessionKey:e.route.mainSessionKey,channel:`whatsapp`,to:d,accountId:e.route.accountId,ctx:D,warn:e.replyLogger.warn.bind(e.replyLogger)}):d&&k===e.route.mainSessionKey&&O&&W(`Skipping main-session last route update for ${d} (pinned owner ${O})`);let A=_({storePath:n,sessionKey:e.route.sessionKey,ctx:D}).catch(t=>{e.replyLogger.warn({error:K(t),storePath:n,sessionKey:e.route.sessionKey},`failed updating session meta`)});Zt(e.backgroundTasks,A);let{queuedFinal:j}=await L({ctx:D,cfg:e.cfg,replyResolver:e.replyResolver,dispatcherOptions:{...C,responsePrefix:T,onHeartbeatStrip:()=>{g||(g=!0,W(`Stripped stray HEARTBEAT_OK token from web reply`))},deliver:async(n,r)=>{if(r.kind!==`final`)return;await nn({replyResult:n,msg:e.msg,mediaLocalRoots:h,maxMediaBytes:e.maxMediaBytes,textLimit:f,chunkMode:p,replyLogger:e.replyLogger,connectionId:e.connectionId,skipLog:!1,tableMode:m}),v=!0;let i=n.text?!0:void 0;e.rememberSentText(n.text,{combinedBody:a,combinedBodySessionKey:e.route.sessionKey,logVerboseMessage:i});let o=e.msg.chatType===`group`?t:e.msg.from??`unknown`,s=!!(n.mediaUrl||n.mediaUrls?.length);if(X.info(`Auto-replied to ${o}${s?` (media)`:``}`),z()){let e=n.text==null?`<media>`:$(n.text,400);X.debug(`Reply body: ${e}${s?` (media)`:``}`)}},onError:(n,r)=>{let i=r.kind===`tool`?`tool update`:r.kind===`block`?`block update`:`auto-reply`;X.error(`Failed sending web ${i} to ${e.msg.from??t}: ${K(n)}`)},onReplyStart:e.msg.sendComposing},replyOptions:{disableBlockStreaming:!0,onModelSelected:S}});return j?(o&&e.groupHistories.set(e.groupHistoryKey,[]),v):(o&&e.groupHistories.set(e.groupHistoryKey,[]),W(`Skipping auto-reply: silent token or no text/media returned from resolver`),!1)}function un(e){let t=async(t,n,r,i)=>ln({cfg:e.cfg,msg:t,route:n,groupHistoryKey:r,groupHistories:e.groupHistories,groupMemberNames:e.groupMemberNames,connectionId:e.connectionId,verbose:e.verbose,maxMediaBytes:e.maxMediaBytes,replyResolver:e.replyResolver,replyLogger:e.replyLogger,backgroundTasks:e.backgroundTasks,rememberSentText:e.echoTracker.rememberText,echoHas:e.echoTracker.has,echoForget:e.echoTracker.forget,buildCombinedEchoKey:e.echoTracker.buildCombinedKey,groupHistory:i?.groupHistory,suppressGroupHistoryClear:i?.suppressGroupHistoryClear});return async r=>{let i=r.conversationId??r.from,a=$t(r),o=C({cfg:v(),channel:`whatsapp`,accountId:r.accountId,peer:{kind:r.chatType===`group`?`group`:`direct`,id:a}}),s=r.chatType===`group`?n({channel:`whatsapp`,accountId:o.accountId,peerKind:`group`,peerId:a}):o.sessionKey;if(r.from===r.to&&W(`📱 Same-phone mode detected (from === to: ${r.from})`),e.echoTracker.has(r.body)){W(`Skipping auto-reply: detected echo (message matches recently sent text)`),e.echoTracker.forget(r.body);return}if(r.chatType===`group`){let t={From:r.from,To:r.to,SessionKey:o.sessionKey,AccountId:o.accountId,ChatType:r.chatType,ConversationLabel:i,GroupSubject:r.groupSubject,SenderName:r.senderName,SenderId:r.senderJid?.trim()||r.senderE164,SenderE164:r.senderE164,Provider:`whatsapp`,Surface:`whatsapp`,OriginatingChannel:`whatsapp`,OriginatingTo:i};if(Qt({cfg:e.cfg,backgroundTasks:e.backgroundTasks,storeAgentId:o.agentId,sessionKey:o.sessionKey,channel:`whatsapp`,to:i,accountId:o.accountId,ctx:t,warn:e.replyLogger.warn.bind(e.replyLogger)}),!Xt({cfg:e.cfg,msg:r,conversationId:i,groupHistoryKey:s,agentId:o.agentId,sessionKey:o.sessionKey,baseMentionConfig:e.baseMentionConfig,authDir:e.account.authDir,groupHistories:e.groupHistories,groupHistoryLimit:e.groupHistoryLimit,groupMemberNames:e.groupMemberNames,logVerbose:W,replyLogger:e.replyLogger}).shouldProcess)return}else !r.senderE164&&a&&a.startsWith(`+`)&&(r.senderE164=B(a)??r.senderE164);await zt({cfg:e.cfg,msg:r,peerId:a,route:o,groupHistoryKey:s,groupHistories:e.groupHistories,processMessage:t})||await t(r,o,s)}}function dn(e){return e===440}async function fn(e,t=Q,n=!0,r=ue,i=ve,a,o={}){let s=q(),l=H({module:`web-auto-reply`,runId:s}),u=H({module:`web-heartbeat`,runId:s}),h=H({module:`web-reconnect`,runId:s}),g={running:!0,connected:!1,reconnectAttempts:0,lastConnectedAt:null,lastDisconnect:null,lastMessageAt:null,lastEventAt:null,lastError:null},_=()=>{o.statusSink?.({...g,lastDisconnect:g.lastDisconnect?{...g.lastDisconnect}:null})};_();let y=v(),b=p({cfg:y,accountId:o.accountId}),S={...y,channels:{...y.channels,whatsapp:{...y.channels?.whatsapp,ackReaction:b.ackReaction,messagePrefix:b.messagePrefix,allowFrom:b.allowFrom,groupAllowFrom:b.groupAllowFrom,groupPolicy:b.groupPolicy,textChunkLimit:b.textChunkLimit,chunkMode:b.chunkMode,mediaMaxMb:b.mediaMaxMb,blockStreaming:b.blockStreaming,groups:b.groups}}},ee=f(b),w=$e(S,o.heartbeatSeconds),T=et(S,o.reconnect),ne=Mt(S),re=S.channels?.whatsapp?.accounts?.[o.accountId??``]?.historyLimit??S.channels?.whatsapp?.historyLimit??S.messages?.groupChat?.historyLimit??50,E=new Map,O=new Map,ie=Lt({maxItems:100,logVerbose:W}),k=o.sleep??((e,t)=>D(e,t??a)),A=()=>a?.aborted===!0,j=a&&new Promise(e=>a.addEventListener(`abort`,()=>e(`aborted`),{once:!0})),M=process.getMaxListeners?.()??10;process.setMaxListeners&&M<50&&process.setMaxListeners(50);let N=!1,P=()=>{N=!0};process.once(`SIGINT`,P);let F=0;for(;!A();){let s=q(),f=Date.now(),p=null,v=null,y=null,D=0,M=null,oe=o.messageTimeoutMs??1800*1e3,ce=o.watchdogCheckMs??60*1e3,I=new Set,de=un({cfg:S,verbose:e,connectionId:s,maxMediaBytes:ee,groupHistoryLimit:re,groupHistories:E,groupMemberNames:O,echoTracker:ie,backgroundTasks:I,replyResolver:r??ue,replyLogger:l,baseMentionConfig:ne,account:b}),fe=se({cfg:S,channel:`whatsapp`}),L=await(t??Q)({verbose:e,accountId:b.accountId,authDir:b.authDir,mediaMaxMb:b.mediaMaxMb,sendReadReceipts:b.sendReadReceipts,debounceMs:fe,shouldDebounce:e=>e.mediaPath||e.mediaType||e.location||e.replyToId||e.replyToBody?!1:!ae(e.body,S),onMessage:async e=>{D+=1,y=Date.now(),g.lastMessageAt=y,g.lastEventAt=y,_(),await de(e)}});Object.assign(g,x()),g.lastError=null,_();let{e164:me}=m(b.authDir),he=C({cfg:S,channel:`whatsapp`,accountId:b.accountId});le(`WhatsApp gateway connected${me?` as ${me}`:``}.`,{sessionKey:he.sessionKey}),Le(b.accountId,L),M=Ie(e=>{if(!en(e))return!1;let t=K(e);return h.warn({connectionId:s,error:t},`web reconnect: unhandled rejection from WhatsApp socket; forcing reconnect`),L.signalClose?.({status:499,isLoggedOut:!1,error:e}),!0});let R=async()=>{Le(b.accountId,null),M&&=(M(),null),p&&clearInterval(p),v&&clearInterval(v),I.size>0&&(await Promise.allSettled(I),I.clear());try{await L.close()}catch(e){W(`Socket close failed: ${K(e)}`)}};if(n&&(p=setInterval(()=>{let e=c(b.authDir),t=y?Math.floor((Date.now()-y)/6e4):null,n={connectionId:s,reconnectAttempts:F,messagesHandled:D,lastMessageAt:y,authAgeMs:e,uptimeMs:Date.now()-f,...t!==null&&t>30?{minutesSinceLastMessage:t}:{}};t&&t>30?u.warn(n,`⚠️ web gateway heartbeat - no messages in 30+ minutes`):u.info(n,`web gateway heartbeat`)},w*1e3),v=setInterval(()=>{if(!y)return;let e=Date.now()-y;if(e<=oe)return;let t=Math.floor(e/6e4);u.warn({connectionId:s,minutesSinceLastMessage:t,lastMessageAt:new Date(y),messagesHandled:D},`Message timeout detected - forcing reconnect`),tt.warn(`No messages received in ${t}m - restarting connection`),R().catch(e=>{W(`Close listener failed: ${K(e)}`)}),L.signalClose?.({status:499,isLoggedOut:!1,error:`watchdog-timeout`})},ce)),J.info(`Listening for personal WhatsApp inbound messages.`),(process.stdout.isTTY||process.stderr.isTTY)&&J.raw(`Ctrl+C to stop.`),!n){await R(),process.removeListener(`SIGINT`,P);return}let z=await Promise.race([L.onClose?.catch(e=>(h.error({error:K(e)},`listener.onClose rejected`),{status:500,isLoggedOut:!1,error:e}))??nt(),j??nt()]);if(Date.now()-f>w*1e3&&(F=0),g.reconnectAttempts=F,_(),A()||N||z===`aborted`){await R();break}let B=(typeof z==`object`&&z&&`status`in z?z.status:void 0)??`unknown`,V=typeof z==`object`&&z&&`isLoggedOut`in z&&z.isLoggedOut,H=K(z);if(g.connected=!1,g.lastEventAt=Date.now(),g.lastDisconnect={at:g.lastEventAt,status:typeof B==`number`?B:void 0,error:H,loggedOut:!!V},g.lastError=H,g.reconnectAttempts=F,_(),h.info({connectionId:s,status:B,loggedOut:V,reconnectAttempts:F,error:H},`web reconnect: connection closed`),le(`WhatsApp gateway disconnected (status ${B??`unknown`})`,{sessionKey:he.sessionKey}),V){i.error(`WhatsApp session logged out. Run \`${d(`openclaw channels login --channel web`)}\` to relink.`),await R();break}if(dn(B)){h.warn({connectionId:s,status:B,error:H},`web reconnect: non-retryable close status; stopping monitor`),i.error(`WhatsApp Web connection closed (status ${B}: session conflict). Resolve conflicting WhatsApp Web sessions, then relink with \`${d(`openclaw channels login --channel web`)}\`. Stopping web monitoring.`),await R();break}if(F+=1,g.reconnectAttempts=F,_(),T.maxAttempts>0&&F>=T.maxAttempts){h.warn({connectionId:s,status:B,reconnectAttempts:F,maxAttempts:T.maxAttempts},`web reconnect: max attempts reached; continuing in degraded mode`),i.error(`WhatsApp Web reconnect: max attempts reached (${F}/${T.maxAttempts}). Stopping web monitoring.`),await R();break}let U=pe(T,F);h.info({connectionId:s,status:B,reconnectAttempts:F,maxAttempts:T.maxAttempts||`unlimited`,delayMs:U},`web reconnect: scheduling retry`),i.error(`WhatsApp Web connection closed (status ${B}). Retry ${F}/${T.maxAttempts||`∞`} in ${te(U)}… (${H})`),await R();try{await k(U,a)}catch{break}}g.running=!1,g.connected=!1,g.lastEventAt=Date.now(),_(),process.removeListener(`SIGINT`,P)}export{Q as n,Ze as r,fn as t};
@@ -1 +1 @@
1
- const e=[5e3,1e4,3e4,6e4];function t(t){return e[Math.min(t,e.length-1)]??6e4}function n(n,r,i){n.commandPollCounts||=new Map;let a=n.commandPollCounts.get(r),o=Date.now();if(i)return n.commandPollCounts.set(r,{count:0,lastPollAt:o}),e[0]??5e3;let s=(a?.count??-1)+1;return n.commandPollCounts.set(r,{count:s,lastPollAt:o}),t(s)}function r(e,t){e.commandPollCounts?.delete(t)}function i(e,t=36e5){if(!e.commandPollCounts)return;let n=Date.now();for(let[r,i]of e.commandPollCounts.entries())n-i.lastPollAt>t&&e.commandPollCounts.delete(r)}export{n,r,i as t};
1
+ const e=[5e3,1e4,3e4,6e4];function t(t){return e[Math.min(t,e.length-1)]??6e4}function n(n,r,i){n.commandPollCounts||=new Map;let a=n.commandPollCounts.get(r),o=Date.now();if(i)return n.commandPollCounts.set(r,{count:0,lastPollAt:o}),e[0]??5e3;let s=(a?.count??-1)+1;return n.commandPollCounts.set(r,{count:s,lastPollAt:o}),t(s)}function r(e,t){e.commandPollCounts?.delete(t)}function i(e,t=36e5){if(!e.commandPollCounts)return;let n=Date.now();for(let[r,i]of e.commandPollCounts.entries())n-i.lastPollAt>t&&e.commandPollCounts.delete(r)}export{n,r,i as t};
@@ -1 +1 @@
1
- const e=[5e3,1e4,3e4,6e4];function t(t){return e[Math.min(t,e.length-1)]??6e4}function n(n,r,i){n.commandPollCounts||=new Map;let a=n.commandPollCounts.get(r),o=Date.now();if(i)return n.commandPollCounts.set(r,{count:0,lastPollAt:o}),e[0]??5e3;let s=(a?.count??-1)+1;return n.commandPollCounts.set(r,{count:s,lastPollAt:o}),t(s)}function r(e,t){e.commandPollCounts?.delete(t)}function i(e,t=36e5){if(!e.commandPollCounts)return;let n=Date.now();for(let[r,i]of e.commandPollCounts.entries())n-i.lastPollAt>t&&e.commandPollCounts.delete(r)}Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return n}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return r}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return i}});
1
+ const e=[5e3,1e4,3e4,6e4];function t(t){return e[Math.min(t,e.length-1)]??6e4}function n(n,r,i){n.commandPollCounts||=new Map;let a=n.commandPollCounts.get(r),o=Date.now();if(i)return n.commandPollCounts.set(r,{count:0,lastPollAt:o}),e[0]??5e3;let s=(a?.count??-1)+1;return n.commandPollCounts.set(r,{count:s,lastPollAt:o}),t(s)}function r(e,t){e.commandPollCounts?.delete(t)}function i(e,t=36e5){if(!e.commandPollCounts)return;let n=Date.now();for(let[r,i]of e.commandPollCounts.entries())n-i.lastPollAt>t&&e.commandPollCounts.delete(r)}Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return n}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return r}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return i}});