@qqbrowser/openclaw-qbot 0.0.128 → 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 (1471) 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 +2 -2
  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/preset-config.json +22 -0
  1430. package/extensions/memory-core/index.ts +0 -38
  1431. package/extensions/openclaw-telemetry-galileo-embedded/index.ts +0 -663
  1432. package/extensions/openclaw-telemetry-galileo-embedded/src/service.ts +0 -1590
  1433. package/extensions/openclaw-weixin/index.ts +0 -26
  1434. package/extensions/openclaw-weixin/src/api/api.ts +0 -238
  1435. package/extensions/openclaw-weixin/src/api/config-cache.ts +0 -79
  1436. package/extensions/openclaw-weixin/src/api/session-guard.ts +0 -58
  1437. package/extensions/openclaw-weixin/src/api/types.ts +0 -222
  1438. package/extensions/openclaw-weixin/src/auth/accounts.ts +0 -363
  1439. package/extensions/openclaw-weixin/src/auth/login-qr.ts +0 -344
  1440. package/extensions/openclaw-weixin/src/auth/pairing.ts +0 -120
  1441. package/extensions/openclaw-weixin/src/cdn/aes-ecb.ts +0 -21
  1442. package/extensions/openclaw-weixin/src/cdn/cdn-upload.ts +0 -75
  1443. package/extensions/openclaw-weixin/src/cdn/cdn-url.ts +0 -17
  1444. package/extensions/openclaw-weixin/src/cdn/pic-decrypt.ts +0 -85
  1445. package/extensions/openclaw-weixin/src/cdn/upload.ts +0 -154
  1446. package/extensions/openclaw-weixin/src/channel.ts +0 -483
  1447. package/extensions/openclaw-weixin/src/config/config-schema.ts +0 -21
  1448. package/extensions/openclaw-weixin/src/log-upload.ts +0 -129
  1449. package/extensions/openclaw-weixin/src/media/media-download.ts +0 -138
  1450. package/extensions/openclaw-weixin/src/media/mime.ts +0 -76
  1451. package/extensions/openclaw-weixin/src/media/silk-transcode.ts +0 -74
  1452. package/extensions/openclaw-weixin/src/messaging/debug-mode.ts +0 -68
  1453. package/extensions/openclaw-weixin/src/messaging/error-notice.ts +0 -36
  1454. package/extensions/openclaw-weixin/src/messaging/inbound.ts +0 -283
  1455. package/extensions/openclaw-weixin/src/messaging/process-message.ts +0 -488
  1456. package/extensions/openclaw-weixin/src/messaging/send-media.ts +0 -76
  1457. package/extensions/openclaw-weixin/src/messaging/send.ts +0 -267
  1458. package/extensions/openclaw-weixin/src/messaging/slash-commands.ts +0 -105
  1459. package/extensions/openclaw-weixin/src/monitor/monitor.ts +0 -225
  1460. package/extensions/openclaw-weixin/src/runtime.ts +0 -67
  1461. package/extensions/openclaw-weixin/src/storage/state-dir.ts +0 -11
  1462. package/extensions/openclaw-weixin/src/storage/sync-buf.ts +0 -79
  1463. package/extensions/openclaw-weixin/src/util/logger.ts +0 -146
  1464. package/extensions/openclaw-weixin/src/util/random.ts +0 -17
  1465. package/extensions/openclaw-weixin/src/util/redact.ts +0 -57
  1466. package/extensions/openclaw-weixin/src/vendor.d.ts +0 -21
  1467. package/extensions/qbagent-mcp-server-x5uselocal-node/index.ts +0 -140
  1468. package/extensions/qbagent-mcp-server-x5uselocal-node/src/browser-use-tool.ts +0 -157
  1469. package/extensions/qbagent-mcp-server-x5uselocal-node/src/server.ts +0 -135
  1470. package/extensions/qbagent-mcp-server-x5uselocal-node/src/tools.ts +0 -205
  1471. package/extensions/qbagent-mcp-server-x5uselocal-node/src/websocket-manager.ts +0 -351
@@ -2,4 +2,4 @@ import{S as e,T as t,j as n,p as r,t as i}from"./subsystem-BLbY429l.js";import{H
2
2
  `).trim();if(s||=ct(i),!s){let t=i?Ue(i):void 0;return e(`Quoted message missing extractable body${t?` (type ${t})`:``}`),null}let c=r?.participant??void 0,l=c?x(c)??c:void 0,u=l??`unknown sender`;return{id:r?.stanzaId?String(r.stanzaId):void 0,body:s,sender:u,senderJid:c,senderE164:l}}function vt(e){return Oe({providerConfigPresent:e.providerConfigPresent,groupPolicy:e.groupPolicy,defaultGroupPolicy:e.defaultGroupPolicy})}async function yt(t){let n=d(),r=E({cfg:n,accountId:t.accountId}),i=r.dmPolicy??`pairing`,a=r.allowFrom??[],o=await we({provider:`whatsapp`,accountId:r.accountId,dmPolicy:i}),s=a.length===0&&t.selfE164?[t.selfE164]:[],c=a.length>0?a:s,l=r.groupAllowFrom??(a.length>0?a:void 0),u=t.from===t.selfE164,f=r.selfChatMode??b(t.selfE164,a),p=typeof t.pairingGraceMs==`number`&&t.pairingGraceMs>0?t.pairingGraceMs:3e4,m=typeof t.connectedAtMs==`number`&&typeof t.messageTimestampMs==`number`&&t.messageTimestampMs<t.connectedAtMs-p,h=De(n),{groupPolicy:g,providerMissingFallbackApplied:_}=vt({providerConfigPresent:n.channels?.whatsapp!==void 0,groupPolicy:r.groupPolicy,defaultGroupPolicy:h});ke({providerMissingFallbackApplied:_,providerKey:`whatsapp`,accountId:r.accountId,log:t=>e(t)});let v=C(t.from),y=typeof t.senderE164==`string`?C(t.senderE164):null,x=Ce({isGroup:t.group,dmPolicy:i,groupPolicy:g,allowFrom:t.group?a:c,groupAllowFrom:l,storeAllowFrom:o,isSenderAllowed:e=>{if(e.includes(`*`))return!0;let n=new Set(e.map(e=>C(String(e))).filter(e=>!!e));return!t.group&&u?!0:t.group?!!(y&&n.has(y)):n.has(v)}});if(t.group&&x.decision!==`allow`)return x.reason===`groupPolicy=disabled`?e(`Blocked group message (groupPolicy: disabled)`):x.reason===`groupPolicy=allowlist (empty allowlist)`?e(`Blocked group message (groupPolicy: allowlist, no groupAllowFrom)`):e(`Blocked group message from ${t.senderE164??`unknown sender`} (groupPolicy: allowlist)`),{allowed:!1,shouldMarkRead:!1,isSelfChat:f,resolvedAccountId:r.accountId};if(!t.group){if(t.isFromMe&&!u)return e(`Skipping outbound DM (fromMe); no pairing reply needed.`),{allowed:!1,shouldMarkRead:!1,isSelfChat:f,resolvedAccountId:r.accountId};if(x.decision===`block`&&x.reason===`dmPolicy=disabled`)return e(`Blocked dm (dmPolicy: disabled)`),{allowed:!1,shouldMarkRead:!1,isSelfChat:f,resolvedAccountId:r.accountId};if(x.decision===`pairing`&&!u){let n=t.from;return m?e(`Skipping pairing reply for historical DM from ${n}.`):await M({channel:`whatsapp`,senderId:n,senderIdLine:`Your WhatsApp phone number: ${n}`,meta:{name:(t.pushName??``).trim()||void 0},upsertPairingRequest:async({id:e,meta:t})=>await Ee({channel:`whatsapp`,id:e,accountId:r.accountId,meta:t}),onCreated:()=>{e(`whatsapp pairing request sender=${n} name=${t.pushName??`unknown`}`)},sendPairingReply:async e=>{await t.sock.sendMessage(t.remoteJid,{text:e})},onReplyError:t=>{e(`whatsapp pairing reply failed for ${n}: ${String(t)}`)}}),{allowed:!1,shouldMarkRead:!1,isSelfChat:f,resolvedAccountId:r.accountId}}if(x.decision!==`allow`)return e(`Blocked unauthorized sender ${t.from} (dmPolicy=${i})`),{allowed:!1,shouldMarkRead:!1,isSelfChat:f,resolvedAccountId:r.accountId}}return{allowed:!0,shouldMarkRead:!0,isSelfChat:f,resolvedAccountId:r.accountId}}function bt(e){return Ge(e)}function xt(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 St(t,n){let r=bt(t.message);if(!r)return;let i=xt(r),a=r.documentMessage?.fileName??void 0;if(!(!r.imageMessage&&!r.videoMessage&&!r.documentMessage&&!r.audioMessage&&!r.stickerMessage))try{return{buffer:await Ve(t,`buffer`,{},{reuploadRequest:n.updateMediaMessage,logger:n.logger}),mimetype:i,fileName:a}}catch(t){e(`downloadMediaMessage failed: ${String(t)}`);return}}function Ct(e){Ae({channel:`whatsapp`,accountId:e,direction:`outbound`})}function wt(e){return typeof e==`object`&&e&&`key`in e?String(e.key?.id??`unknown`):`unknown`}function Tt(e){return{sendMessage:async(t,n,r,i,a)=>{let o=w(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 Ct(a?.accountId??e.defaultAccountId),{messageId:wt(c)}},sendPoll:async(t,n)=>{let r=w(t),i=await e.sock.sendMessage(r,{poll:{name:n.question,values:n.options,selectableCount:n.maxSelections??1}});return Ct(e.defaultAccountId),{messageId:wt(i)}},sendReaction:async(t,n,r,i,a)=>{let o=w(t);await e.sock.sendMessage(o,{react:{text:r,key:{remoteJid:o,id:n,fromMe:i,participant:a?w(a):void 0}}})},sendComposingTo:async t=>{let n=w(t);await e.sock.sendPresenceUpdate(`composing`,n)}}}async function Et(r){let a=n({module:`web-inbound`}),o=i(`gateway/channels/whatsapp`).child(`inbound`),s=await Re(!1,r.verbose,{authDir:r.authDir});await Ie(s);let c=Date.now(),l=null,d=new Promise(e=>{l=e}),f=e=>{if(!l)return;let t=l;l=null,t(e)};try{await s.sendPresenceUpdate(`available`),t()&&e(`Sent global 'available' presence on connect`)}catch(t){e(`Failed to send 'available' presence on connect: ${String(t)}`)}let p=s.user?.id,m=p?x(p):null,h=j({debounceMs:r.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:r.shouldDebounce,onFlush:async e=>{let t=e.at(-1);if(!t)return;if(e.length===1){await r.onMessage(t);return}let n=new Set;for(let t of e)for(let e of t.mentionedJids??[])n.add(e);let i=e.map(e=>e.body).filter(Boolean).join(`
3
3
  `),a={...t,body:i,mentionedJids:n.size>0?Array.from(n):void 0};await r.onMessage(a)},onError:e=>{a.error({error:String(e)},`failed handling inbound web message`),o.error(`Failed handling inbound web message: ${String(e)}`)}}),g=new Map,_=300*1e3,v=s.signalRepository?.lidMapping,b=async e=>y(e,{authDir:r.authDir,lidLookup:v}),S=async t=>{let n=g.get(t);if(n&&n.expires>Date.now())return n;try{let e=await s.groupMetadata(t),n=(await Promise.all(e.participants?.map(async e=>await b(e.id)??e.id)??[])).filter(Boolean)??[],r={subject:e.subject,participants:n,expires:Date.now()+_};return g.set(t,r),r}catch(n){return e(`Failed to fetch group metadata for ${t}: ${String(n)}`),{expires:Date.now()+_}}},C=async e=>{let t=e.key?.id??void 0,n=e.key?.remoteJid;if(!n||n.endsWith(`@status`)||n.endsWith(`@broadcast`))return null;let i=We(n)===!0;if(t&&Qe(`${r.accountId}:${n}:${t}`))return null;let a=e.key?.participant??void 0,o=i?n:await b(n);if(!o)return null;let l=i?a?await b(a):null:o,u,d;if(i){let e=await S(n);u=e.subject,d=e.participants}let f=e.messageTimestamp?Number(e.messageTimestamp)*1e3:void 0,p=await yt({accountId:r.accountId,from:o,selfE164:m,senderE164:l,group:i,pushName:e.pushName??void 0,isFromMe:!!e.key?.fromMe,messageTimestampMs:f,connectedAtMs:c,sock:{sendMessage:(e,t)=>s.sendMessage(e,t)},remoteJid:n});return p.allowed?{id:t,remoteJid:n,group:i,participantJid:a,from:o,senderE164:l,groupSubject:u,groupParticipants:d,messageTimestampMs:f,access:p}:null},w=async n=>{let{id:i,remoteJid:a,participantJid:o,access:c}=n;if(i&&!c.isSelfChat&&r.sendReadReceipts!==!1)try{await s.readMessages([{remoteJid:a,id:i,participant:o,fromMe:!1}]),t()&&e(`Marked message ${i} as read for ${a}${o?` (participant ${o})`:``}`)}catch(t){e(`Failed to mark message ${i} read: ${String(t)}`)}else i&&c.isSelfChat&&t()&&e(`Self-chat mode: skipping read receipt for ${i}`)},ee=async t=>{let n=gt(t.message??void 0),i=n?K(n):void 0,a=st(t.message??void 0);if(i&&(a=[a,i].filter(Boolean).join(`
4
4
  `).trim()),!a&&(a=ct(t.message??void 0),!a))return null;let o=_t(t.message),c,l,d;try{let e=await St(t,s);if(e){let t=(typeof r.mediaMaxMb==`number`&&r.mediaMaxMb>0?r.mediaMaxMb:50)*1024*1024;c=(await u(e.buffer,e.mimetype,`inbound`,t,e.fileName)).path,l=e.mimetype,d=e.fileName}}catch(t){e(`Inbound media download failed: ${String(t)}`)}return{body:a,location:n??void 0,replyContext:o,mediaPath:c,mediaType:l,mediaFileName:d}},T=async(t,n,r)=>{let i=n.remoteJid,c=async()=>{try{await s.sendPresenceUpdate(`composing`,i)}catch(t){e(`Presence update failed: ${String(t)}`)}},l=async e=>{await s.sendMessage(i,{text:e})},u=async e=>{await s.sendMessage(i,e)},d=n.messageTimestampMs,f=ot(t.message),g=t.pushName??void 0;a.info({from:n.from,to:m??`me`,body:r.body,mediaPath:r.mediaPath,mediaType:r.mediaType,mediaFileName:r.mediaFileName,timestamp:d},`inbound message`);let _={id:n.id,from:n.from,conversationId:n.from,to:m??`me`,accountId:n.access.resolvedAccountId,body:r.body,pushName:g,timestamp:d,chatType:n.group?`group`:`direct`,chatId:n.remoteJid,senderJid:n.participantJid,senderE164:n.senderE164??void 0,senderName:g,replyToId:r.replyContext?.id,replyToBody:r.replyContext?.body,replyToSender:r.replyContext?.sender,replyToSenderJid:r.replyContext?.senderJid,replyToSenderE164:r.replyContext?.senderE164,groupSubject:n.groupSubject,groupParticipants:n.groupParticipants,mentionedJids:f??void 0,selfJid:p,selfE164:m,fromMe:!!t.key?.fromMe,location:r.location??void 0,sendComposing:c,reply:l,sendMedia:u,mediaPath:r.mediaPath,mediaType:r.mediaType,mediaFileName:r.mediaFileName};try{Promise.resolve(h.enqueue(_)).catch(e=>{a.error({error:String(e)},`failed handling inbound web message`),o.error(`Failed handling inbound web message: ${String(e)}`)})}catch(e){a.error({error:String(e)},`failed handling inbound web message`),o.error(`Failed handling inbound web message: ${String(e)}`)}},E=async e=>{if(!(e.type!==`notify`&&e.type!==`append`))for(let t of e.messages??[]){Ae({channel:`whatsapp`,accountId:r.accountId,direction:`inbound`});let n=await C(t);if(!n||(await w(n),e.type===`append`))continue;let i=await ee(t);i&&await T(t,n,i)}};s.ev.on(`messages.upsert`,E);let D=e=>{try{if(e.connection===`close`){let t=Le(e.lastDisconnect?.error);f({status:t,isLoggedOut:t===Be.loggedOut,error:e.lastDisconnect?.error})}}catch(e){a.error({error:String(e)},`connection.update handler error`),f({status:void 0,isLoggedOut:!1,error:e})}};return s.ev.on(`connection.update`,D),{close:async()=>{try{let e=s.ev,t=E,n=D;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(t){e(`Socket close failed: ${String(t)}`)}},onClose:d,signalClose:e=>{f(e??{status:void 0,isLoggedOut:!1,error:`closed`})},...Tt({sock:{sendMessage:(e,t)=>s.sendMessage(e,t),sendPresenceUpdate:(e,t)=>s.sendPresenceUpdate(e,t)},defaultAccountId:r.accountId})}}function Dt(e,t){return{mentionRegexes:I(e,t),allowFrom:e.channels?.whatsapp?.allowFrom}}function Ot(e,t){let n=t?{authDir:t}:void 0;return{normalizedMentions:e.mentionedJids?.length?e.mentionedJids.map(e=>x(e,n)??e).filter(Boolean):[],selfE164:e.selfE164??(e.selfJid?x(e.selfJid,n):null),selfJid:e.selfJid?e.selfJid.replace(/:\\d+/,``):null}}function kt(e,t,n){let r=e=>L(e),i=b(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 At(e,t,n){let r=Ot(e,n);return{wasMentioned:kt(e,t,r),details:{from:e.from,body:e.body,bodyClean:L(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 jt(e,t){let n=e.allowFrom;return(Array.isArray(n)&&n.length>0?n:t?[t]:[]).filter(e=>!!(e&&e!==`*`)).map(e=>C(e)).filter(e=>!!e)}function Mt(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 Nt(e){let t=H({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}),n=_({agentId:e.agentId,mainKey:g});return{sessionKey:t,mainSessionKey:n,lastRoutePolicy:B({sessionKey:t,mainSessionKey:n})}}async function Pt(e){let t=e.cfg.broadcast?.[e.peerId];if(!t||!Array.isArray(t)||t.length===0)return!1;let n=e.cfg.broadcast?.strategy||`parallel`;X.info(`Broadcasting message to ${t.length} agents (${n})`);let r=e.cfg.agents?.list?.map(e=>h(e.id)),i=(r?.length??0)>0,a=e.msg.chatType===`group`?e.groupHistories.get(e.groupHistoryKey)??[]:void 0,o=async t=>{let n=h(t);if(i&&!r?.includes(n))return X.warn(`Broadcast agent ${t} not found in agents.list; skipping`),!1;let o=Nt({cfg:e.cfg,msg:e.msg,route:e.route,peerId:e.peerId,agentId:n}),s={...e.route,agentId:n,...o};try{return await e.processMessage(e.msg,s,e.groupHistoryKey,{groupHistory:a,suppressGroupHistoryClear:!0})}catch(e){return X.error(`Broadcast agent ${t} failed: ${q(e)}`),!1}};if(n===`sequential`)for(let e of t)await o(e);else await Promise.allSettled(t.map(o));return e.msg.chatType===`group`&&e.groupHistories.set(e.groupHistoryKey,[]),!0}function Ft(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 It(e,t){let n=l({From:t,ChatType:`group`,Provider:`whatsapp`})?.id,r=e.channels?.whatsapp,i=!!(r?.groupAllowFrom?.length||r?.allowFrom?.length);return a({cfg:e,channel:`whatsapp`,groupId:n??t,hasGroupAllowFrom:i})}function Lt(e,t){let n=l({From:t,ChatType:`group`,Provider:`whatsapp`})?.id;return c({cfg:e,channel:`whatsapp`,groupId:n??t})}function Rt(e){let t=f(G(e.cfg.session?.store,{agentId:e.agentId}))[e.sessionKey],n=Lt(e.cfg,e.conversationId)?`mention`:`always`;return U(t?.groupActivation)??n}function zt(e,t,n){for(let r of e){let e=C(r)??r;!e||t.has(e)||(t.add(e),n.push(e))}}function Bt(e,t,n,r){if(!n||!r)return;let i=C(n)??n;if(!i)return;let a=e.get(t);a||(a=new Map,e.set(t,a)),a.set(i,r)}function Vt(e){let{participants:t,roster:n,fallbackE164:r}=e,i=new Set,a=[];if(t?.length&&zt(t,i,a),n&&zt(n.keys(),i,a),a.length===0&&r){let e=C(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 Ht(e,t){let n=C(t.senderE164??``);return n?jt(e,t.selfE164??void 0).includes(n):!1}function Ut(e){let t=e.msg.senderName&&e.msg.senderE164?`${e.msg.senderName} (${e.msg.senderE164})`:e.msg.senderName??e.msg.senderE164??`Unknown`;O({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 Wt(e,t){return e.logVerbose(t),Ut({msg:e.msg,groupHistories:e.groupHistories,groupHistoryKey:e.groupHistoryKey,groupHistoryLimit:e.groupHistoryLimit}),{shouldProcess:!1}}function Gt(e){let t=It(e.cfg,e.conversationId);if(t.allowlistEnabled&&!t.allowed)return e.logVerbose(`Skipping group message ${e.conversationId} (not in allowlist)`),{shouldProcess:!1};Bt(e.groupMemberNames,e.groupHistoryKey,e.msg.senderE164,e.msg.senderName);let n=Dt(e.cfg,e.agentId),r=Ft(e.msg.body,n.mentionRegexes,e.msg.selfE164),i=z(r),a=Ht(e.baseMentionConfig,e.msg),o=a&&de(r,e.cfg);if(i.hasCommand&&!a)return Wt(e,`Ignoring /activation from non-owner in group ${e.conversationId}`);let s=At(e.msg,n,e.authDir);e.replyLogger.debug({conversationId:e.conversationId,wasMentioned:s.wasMentioned,...s.details},`group mention debug`);let c=s.wasMentioned,l=Rt({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?C(e.msg.selfE164):null,p=e.msg.replyToSenderE164?C(e.msg.replyToSenderE164):null,m=P({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?Wt(e,`Group message stored for context (no mention detected) in ${e.conversationId}: ${e.msg.body}`):{shouldProcess:!0}}function Kt(e,t){e.add(t),t.finally(()=>{e.delete(t)})}function qt(e){let t=G(e.cfg.session?.store,{agentId:e.storeAgentId}),n=o({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`)});Kt(e.backgroundTasks,n)}function Jt(e){return e.chatType===`group`?e.conversationId??e.from:e.senderE164?C(e.senderE164)??e.senderE164:e.from.includes(`@`)?x(e.from)??e.from: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 Yt(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 Xt(e){if(e.isReasoning===!0)return!0;let t=e.text;return typeof t==`string`?t.trimStart().toLowerCase().startsWith(`reasoning:`):!1}async function Zt(n){let{replyResult:r,msg:i,maxMediaBytes:a,textLimit:o,replyLogger:s,connectionId:c,skipLog:l}=n,u=Date.now();if(Xt(r)){Z.debug(`Suppressed reasoning payload to ${i.from}`);return}let d=n.tableMode??`code`,f=n.chunkMode??`length`,p=ge(Pe(je(r.text||``,d)),o,f),m=r.mediaUrls?.length?r.mediaUrls:r.mediaUrl?[r.mediaUrl]:[],h=async(t,n,r=3)=>{let a;for(let o=1;o<=r;o++)try{return await t()}catch(t){a=t;let s=q(t),c=o===r;if(!/closed|reset|timed\s*out|disconnect/i.test(s)||c)throw t;let l=500*o;e(`Retrying ${n} to ${i.from} after failure (${o}/${r-1}) in ${l}ms: ${s}`),await v(l)}throw a};if(m.length===0&&p.length){let e=p.length;for(let[t,n]of p.entries()){let r=Date.now();if(await h(()=>i.reply(n),`text`),!l){let n=Date.now()-r;Z.debug(`Sent chunk ${t+1}/${e} to ${i.from} (${n.toFixed(0)}ms)`)}}s.info({correlationId:i.id??J(),connectionId:c??null,to:i.from,from:i.to,text:$(r.text,240),mediaUrl:null,mediaSizeBytes:null,mediaKind:null,durationMs:Date.now()-u},`auto-reply sent (text)`);return}let g=[...p];for(let[r,o]of m.entries()){let l=r===0&&g.shift()||void 0;try{let r=await he(o,{maxBytes:a,localRoots:n.mediaLocalRoots});if(t()&&(e(`Web auto-reply media size: ${(r.buffer.length/(1024*1024)).toFixed(2)}MB`),e(`Web auto-reply media source: ${o} (kind ${r.kind})`)),r.kind===`image`)await h(()=>i.sendMedia({image:r.buffer,caption:l,mimetype:r.contentType}),`media:image`);else if(r.kind===`audio`)await h(()=>i.sendMedia({audio:r.buffer,ptt:!0,mimetype:r.contentType,caption:l}),`media:audio`);else if(r.kind===`video`)await h(()=>i.sendMedia({video:r.buffer,caption:l,mimetype:r.contentType}),`media:video`);else{let e=r.fileName??o.split(`/`).pop()??`file`,t=r.contentType??`application/octet-stream`;await h(()=>i.sendMedia({document:r.buffer,fileName:e,caption:l,mimetype:t}),`media:document`)}Z.info(`Sent media reply to ${i.from} (${(r.buffer.length/(1024*1024)).toFixed(2)}MB)`),s.info({correlationId:i.id??J(),connectionId:c??null,to:i.from,from:i.to,text:l??null,mediaUrl:o,mediaSizeBytes:r.buffer.length,mediaKind:r.kind,durationMs:Date.now()-u},`auto-reply sent (media)`)}catch(e){if(Z.error(`Failed sending web media to ${i.from}: ${q(e)}`),s.warn({err:e,mediaUrl:o},`failed to send web media reply`),r===0){let t=e instanceof Error?`⚠️ Media failed: ${e.message}`:`⚠️ Media failed.`,n=[g.shift()??l??``,t].filter(Boolean).join(`
5
- `);n&&(Z.warn(`Media skipped; sent text-only to ${i.from}`),await i.reply(n))}}}for(let e of g)await i.reply(e)}function Qt(t){if(!t.msg.id)return;let n=t.cfg.channels?.whatsapp?.ackReaction,r=(n?.emoji??``).trim(),i=n?.direct??!0,a=n?.group??`mentions`,o=t.msg.conversationId??t.msg.from,s=t.msg.chatType===`group`?Rt({cfg:t.cfg,agentId:t.agentId,sessionKey:t.sessionKey,conversationId:o}):null;F({emoji:r,isDirect:t.msg.chatType===`direct`,isGroup:t.msg.chatType===`group`,directEnabled:i,groupMode:a,wasMentioned:t.msg.wasMentioned===!0,groupActivated:s===`always`})&&(t.info({chatId:t.msg.chatId,messageId:t.msg.id,emoji:r},`sending ack reaction`),Fe(t.msg.chatId,t.msg.id,r,{verbose:t.verbose,fromMe:!1,participant:t.msg.senderJid,accountId:t.accountId}).catch(n=>{t.warn({error:q(n),chatId:t.msg.chatId,messageId:t.msg.id},`failed to send ack reaction`),e(`WhatsApp ack reaction failed for chat ${t.msg.chatId}: ${q(n)}`)}))}function $t(e){return e.replyToBody?`[Replying to ${e.replyToSender??`unknown sender`}${e.replyToId?` id:${e.replyToId}`:``}]\n${e.replyToBody}\n[/Replying]`:null}function en(e){let{cfg:t,msg:n,agentId:r,previousTimestamp:i,envelope:a}=e,o=N(t,r,{configured:t.channels?.whatsapp?.messagePrefix,hasAllowFrom:(t.channels?.whatsapp?.allowFrom?.length??0)>0}),s=o?`${o} `:``,c=$t(n),l=`${s}${n.body}${c?`\n\n${c}`:``}`;return A({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 tn(e){let t=e.cfg.commands?.useAccessGroups!==!1;if(!t)return!0;let n=e.msg.chatType===`group`,r=C(n?e.msg.senderE164??``:e.msg.senderE164??e.msg.from??``);if(!r)return!1;let i=E({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 we({provider:`whatsapp`,accountId:e.msg.accountId,dmPolicy:a});return Se({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=>C(String(e))).filter(e=>!!e).includes(r),command:{useAccessGroups:t,allowTextCommands:!0,hasControlCommand:!0}}).commandAuthorized}function nn(e){let t=E({cfg:e.cfg,accountId:e.msg.accountId});return Te({dmScope:e.cfg.session?.dmScope,allowFrom:t.allowFrom,normalizeEntry:e=>C(e)})}async function rn(n){let r=n.msg.conversationId??n.msg.from,{storePath:i,envelopeOptions:a,previousTimestamp:o}=R({cfg:n.cfg,agentId:n.route.agentId,sessionKey:n.route.sessionKey}),c=en({cfg:n.cfg,msg:n.msg,agentId:n.route.agentId,previousTimestamp:o,envelope:a}),l=!1;if(n.msg.chatType===`group`){let e=n.groupHistory??n.groupHistories.get(n.groupHistoryKey)??[];e.length>0&&(c=W({entries:e.map(e=>({sender:e.sender,body:e.body,timestamp:e.timestamp})),currentMessage:c,excludeLast:!1,formatEntry:e=>A({channel:`WhatsApp`,from:r,timestamp:e.timestamp,body:e.body,chatType:`group`,senderLabel:e.sender,envelope:a})})),l=!(n.suppressGroupHistoryClear??!1)}let u=n.buildCombinedEchoKey({sessionKey:n.route.sessionKey,combinedBody:c});if(n.echoHas(u))return e(`Skipping auto-reply: detected echo for combined message`),n.echoForget(u),!1;Qt({cfg:n.cfg,msg:n.msg,agentId:n.route.agentId,sessionKey:n.route.sessionKey,conversationId:r,verbose:n.verbose,accountId:n.route.accountId,info:n.replyLogger.info.bind(n.replyLogger),warn:n.replyLogger.warn.bind(n.replyLogger)});let d=n.msg.id??J();n.replyLogger.info({connectionId:n.connectionId,correlationId:d,from:n.msg.chatType===`group`?r:n.msg.from,to:n.msg.to,body:$(c,240),mediaType:n.msg.mediaType??null,mediaPath:n.msg.mediaPath??null},`inbound web message`);let f=n.msg.chatType===`group`?r:n.msg.from,p=n.msg.mediaType?`, ${n.msg.mediaType}`:``;X.info(`Inbound message ${f} -> ${n.msg.to} (${n.msg.chatType}${p}, ${c.length} chars)`),t()&&X.debug(`Inbound body: ${$(c,400)}`);let m=n.msg.chatType===`group`?void 0:n.msg.senderE164?C(n.msg.senderE164):n.msg.from.includes(`@`)?x(n.msg.from):C(n.msg.from),h=n.maxMediaTextChunkLimit??_e(n.cfg,`whatsapp`),g=ve(n.cfg,`whatsapp`,n.route.accountId),_=ye({cfg:n.cfg,channel:`whatsapp`,accountId:n.route.accountId}),v=pe(n.cfg,n.route.agentId),y=!1,b=!1,S=te(n.msg.body,n.cfg)?await tn({cfg:n.cfg,msg:n.msg}):void 0,w=n.cfg.messages?.responsePrefix,{onModelSelected:ee,...T}=ie({cfg:n.cfg,agentId:n.route.agentId,channel:`whatsapp`,accountId:n.route.accountId}),E=n.msg.chatType!==`group`&&!!n.msg.selfE164&&C(n.msg.from)===C(n.msg.selfE164??``),D=T.responsePrefix??(w===void 0&&E?V(n.cfg,n.route.agentId):void 0),O=n.msg.chatType===`group`?(n.groupHistory??n.groupHistories.get(n.groupHistoryKey)??[]).map(e=>({sender:e.sender,body:e.body,timestamp:e.timestamp})):void 0,k=ne({Body:c,BodyForAgent:n.msg.body,InboundHistory:O,RawBody:n.msg.body,CommandBody:n.msg.body,From:n.msg.from,To:n.msg.to,SessionKey:n.route.sessionKey,AccountId:n.route.accountId,MessageSid:n.msg.id,ReplyToId:n.msg.replyToId,ReplyToBody:n.msg.replyToBody,ReplyToSender:n.msg.replyToSender,MediaPath:n.msg.mediaPath,MediaUrl:n.msg.mediaUrl,MediaType:n.msg.mediaType,ChatType:n.msg.chatType,ConversationLabel:n.msg.chatType===`group`?r:n.msg.from,GroupSubject:n.msg.groupSubject,GroupMembers:Vt({participants:n.msg.groupParticipants,roster:n.groupMemberNames.get(n.groupHistoryKey),fallbackE164:n.msg.senderE164}),SenderName:n.msg.senderName,SenderId:n.msg.senderJid?.trim()||n.msg.senderE164,SenderE164:n.msg.senderE164,CommandAuthorized:S,WasMentioned:n.msg.wasMentioned,...n.msg.location?fe(n.msg.location):{},Provider:`whatsapp`,Surface:`whatsapp`,OriginatingChannel:`whatsapp`,OriginatingTo:n.msg.from}),j=nn({cfg:n.cfg,msg:n.msg}),M=!j||j===m,N=oe({route:n.route,sessionKey:n.route.sessionKey});m&&N===n.route.mainSessionKey&&M?qt({cfg:n.cfg,backgroundTasks:n.backgroundTasks,storeAgentId:n.route.agentId,sessionKey:n.route.mainSessionKey,channel:`whatsapp`,to:m,accountId:n.route.accountId,ctx:k,warn:n.replyLogger.warn.bind(n.replyLogger)}):m&&N===n.route.mainSessionKey&&j&&e(`Skipping main-session last route update for ${m} (pinned owner ${j})`);let P=s({storePath:i,sessionKey:n.route.sessionKey,ctx:k}).catch(e=>{n.replyLogger.warn({error:q(e),storePath:i,sessionKey:n.route.sessionKey},`failed updating session meta`)});Kt(n.backgroundTasks,P);let{queuedFinal:re}=await ae({ctx:k,cfg:n.cfg,replyResolver:n.replyResolver,dispatcherOptions:{...T,responsePrefix:D,onHeartbeatStrip:()=>{y||(y=!0,e(`Stripped stray HEARTBEAT_OK token from web reply`))},deliver:async(e,i)=>{if(i.kind!==`final`)return;await Zt({replyResult:e,msg:n.msg,mediaLocalRoots:v,maxMediaBytes:n.maxMediaBytes,textLimit:h,chunkMode:g,replyLogger:n.replyLogger,connectionId:n.connectionId,skipLog:!1,tableMode:_}),b=!0;let a=e.text?!0:void 0;n.rememberSentText(e.text,{combinedBody:c,combinedBodySessionKey:n.route.sessionKey,logVerboseMessage:a});let o=n.msg.chatType===`group`?r:n.msg.from??`unknown`,s=!!(e.mediaUrl||e.mediaUrls?.length);if(Z.info(`Auto-replied to ${o}${s?` (media)`:``}`),t()){let t=e.text==null?`<media>`:$(e.text,400);Z.debug(`Reply body: ${t}${s?` (media)`:``}`)}},onError:(e,t)=>{let i=t.kind===`tool`?`tool update`:t.kind===`block`?`block update`:`auto-reply`;Z.error(`Failed sending web ${i} to ${n.msg.from??r}: ${q(e)}`)},onReplyStart:n.msg.sendComposing},replyOptions:{disableBlockStreaming:!0,onModelSelected:ee}});return re?(l&&n.groupHistories.set(n.groupHistoryKey,[]),b):(l&&n.groupHistories.set(n.groupHistoryKey,[]),e(`Skipping auto-reply: silent token or no text/media returned from resolver`),!1)}function an(t){let n=async(e,n,r,i)=>rn({cfg:t.cfg,msg:e,route:n,groupHistoryKey:r,groupHistories:t.groupHistories,groupMemberNames:t.groupMemberNames,connectionId:t.connectionId,verbose:t.verbose,maxMediaBytes:t.maxMediaBytes,replyResolver:t.replyResolver,replyLogger:t.replyLogger,backgroundTasks:t.backgroundTasks,rememberSentText:t.echoTracker.rememberText,echoHas:t.echoTracker.has,echoForget:t.echoTracker.forget,buildCombinedEchoKey:t.echoTracker.buildCombinedKey,groupHistory:i?.groupHistory,suppressGroupHistoryClear:i?.suppressGroupHistoryClear});return async r=>{let i=r.conversationId??r.from,a=Jt(r),o=ce({cfg:d(),channel:`whatsapp`,accountId:r.accountId,peer:{kind:r.chatType===`group`?`group`:`direct`,id:a}}),s=r.chatType===`group`?m({channel:`whatsapp`,accountId:o.accountId,peerKind:`group`,peerId:a}):o.sessionKey;if(r.from===r.to&&e(`📱 Same-phone mode detected (from === to: ${r.from})`),t.echoTracker.has(r.body)){e(`Skipping auto-reply: detected echo (message matches recently sent text)`),t.echoTracker.forget(r.body);return}if(r.chatType===`group`){let n={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:t.cfg,backgroundTasks:t.backgroundTasks,storeAgentId:o.agentId,sessionKey:o.sessionKey,channel:`whatsapp`,to:i,accountId:o.accountId,ctx:n,warn:t.replyLogger.warn.bind(t.replyLogger)}),!Gt({cfg:t.cfg,msg:r,conversationId:i,groupHistoryKey:s,agentId:o.agentId,sessionKey:o.sessionKey,baseMentionConfig:t.baseMentionConfig,authDir:t.account.authDir,groupHistories:t.groupHistories,groupHistoryLimit:t.groupHistoryLimit,groupMemberNames:t.groupMemberNames,logVerbose:e,replyLogger:t.replyLogger}).shouldProcess)return}else !r.senderE164&&a&&a.startsWith(`+`)&&(r.senderE164=C(a)??r.senderE164);await Pt({cfg:t.cfg,msg:r,peerId:a,route:o,groupHistoryKey:s,groupHistories:t.groupHistories,processMessage:n})||await n(r,o,s)}}function on(e){return e===440}async function sn(t,i=Et,a=!0,o=re,s=r,c,l={}){let u=J(),f=n({module:`web-auto-reply`,runId:u}),m=n({module:`web-heartbeat`,runId:u}),h=n({module:`web-reconnect`,runId:u}),g={running:!0,connected:!1,reconnectAttempts:0,lastConnectedAt:null,lastDisconnect:null,lastMessageAt:null,lastEventAt:null,lastError:null},_=()=>{l.statusSink?.({...g,lastDisconnect:g.lastDisconnect?{...g.lastDisconnect}:null})};_();let v=d(),y=E({cfg:v,accountId:l.accountId}),b={...v,channels:{...v.channels,whatsapp:{...v.channels?.whatsapp,ackReaction:y.ackReaction,messagePrefix:y.messagePrefix,allowFrom:y.allowFrom,groupAllowFrom:y.groupAllowFrom,groupPolicy:y.groupPolicy,textChunkLimit:y.textChunkLimit,chunkMode:y.chunkMode,mediaMaxMb:y.mediaMaxMb,blockStreaming:y.blockStreaming,groups:y.groups}}},x=T(y),S=qe(b,l.heartbeatSeconds),C=Je(b,l.reconnect),w=Dt(b),O=b.channels?.whatsapp?.accounts?.[l.accountId??``]?.historyLimit??b.channels?.whatsapp?.historyLimit??b.messages?.groupChat?.historyLimit??50,te=new Map,ne=new Map,A=Mt({maxItems:100,logVerbose:e}),j=l.sleep??((e,t)=>xe(e,t??c)),M=()=>c?.aborted===!0,N=c&&new Promise(e=>c.addEventListener(`abort`,()=>e(`aborted`),{once:!0})),P=process.getMaxListeners?.()??10;process.setMaxListeners&&P<50&&process.setMaxListeners(50);let ie=!1,F=()=>{ie=!0};process.once(`SIGINT`,F);let I=0;for(;!M();){let n=J(),r=Date.now(),u=null,d=null,v=null,T=0,E=null,P=l.messageTimeoutMs??1800*1e3,ae=l.watchdogCheckMs??60*1e3,L=new Set,oe=an({cfg:b,verbose:t,connectionId:n,maxMediaBytes:x,groupHistoryLimit:O,groupHistories:te,groupMemberNames:ne,echoTracker:A,backgroundTasks:L,replyResolver:o??re,replyLogger:f,baseMentionConfig:w,account:y}),se=ue({cfg:b,channel:`whatsapp`}),R=await(i??Et)({verbose:t,accountId:y.accountId,authDir:y.authDir,mediaMaxMb:y.mediaMaxMb,sendReadReceipts:y.sendReadReceipts,debounceMs:se,shouldDebounce:e=>e.mediaPath||e.mediaType||e.location||e.replyToId||e.replyToBody?!1:!de(e.body,b),onMessage:async e=>{T+=1,v=Date.now(),g.lastMessageAt=v,g.lastEventAt=v,_(),await oe(e)}});Object.assign(g,le()),g.lastError=null,_();let{e164:z}=ee(y.authDir),B=ce({cfg:b,channel:`whatsapp`,accountId:y.accountId});k(`WhatsApp gateway connected${z?` as ${z}`:``}.`,{sessionKey:B.sessionKey}),Ne(y.accountId,R),E=me(e=>{if(!Yt(e))return!1;let t=q(e);return h.warn({connectionId:n,error:t},`web reconnect: unhandled rejection from WhatsApp socket; forcing reconnect`),R.signalClose?.({status:499,isLoggedOut:!1,error:e}),!0});let V=async()=>{Ne(y.accountId,null),E&&=(E(),null),u&&clearInterval(u),d&&clearInterval(d),L.size>0&&(await Promise.allSettled(L),L.clear());try{await R.close()}catch(t){e(`Socket close failed: ${q(t)}`)}};if(a&&(u=setInterval(()=>{let e=D(y.authDir),t=v?Math.floor((Date.now()-v)/6e4):null,i={connectionId:n,reconnectAttempts:I,messagesHandled:T,lastMessageAt:v,authAgeMs:e,uptimeMs:Date.now()-r,...t!==null&&t>30?{minutesSinceLastMessage:t}:{}};t&&t>30?m.warn(i,`⚠️ web gateway heartbeat - no messages in 30+ minutes`):m.info(i,`web gateway heartbeat`)},S*1e3),d=setInterval(()=>{if(!v)return;let t=Date.now()-v;if(t<=P)return;let r=Math.floor(t/6e4);m.warn({connectionId:n,minutesSinceLastMessage:r,lastMessageAt:new Date(v),messagesHandled:T},`Message timeout detected - forcing reconnect`),Ye.warn(`No messages received in ${r}m - restarting connection`),V().catch(t=>{e(`Close listener failed: ${q(t)}`)}),R.signalClose?.({status:499,isLoggedOut:!1,error:`watchdog-timeout`})},ae)),Y.info(`Listening for personal WhatsApp inbound messages.`),(process.stdout.isTTY||process.stderr.isTTY)&&Y.raw(`Ctrl+C to stop.`),!a){await V(),process.removeListener(`SIGINT`,F);return}let H=await Promise.race([R.onClose?.catch(e=>(h.error({error:q(e)},`listener.onClose rejected`),{status:500,isLoggedOut:!1,error:e}))??Xe(),N??Xe()]);if(Date.now()-r>S*1e3&&(I=0),g.reconnectAttempts=I,_(),M()||ie||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(g.connected=!1,g.lastEventAt=Date.now(),g.lastDisconnect={at:g.lastEventAt,status:typeof U==`number`?U:void 0,error:G,loggedOut:!!W},g.lastError=G,g.reconnectAttempts=I,_(),h.info({connectionId:n,status:U,loggedOut:W,reconnectAttempts:I,error:G},`web reconnect: connection closed`),k(`WhatsApp gateway disconnected (status ${U??`unknown`})`,{sessionKey:B.sessionKey}),W){s.error(`WhatsApp session logged out. Run \`${p(`openclaw channels login --channel web`)}\` to relink.`),await V();break}if(on(U)){h.warn({connectionId:n,status:U,error:G},`web reconnect: non-retryable close status; stopping monitor`),s.error(`WhatsApp Web connection closed (status ${U}: session conflict). Resolve conflicting WhatsApp Web sessions, then relink with \`${p(`openclaw channels login --channel web`)}\`. Stopping web monitoring.`),await V();break}if(I+=1,g.reconnectAttempts=I,_(),C.maxAttempts>0&&I>=C.maxAttempts){h.warn({connectionId:n,status:U,reconnectAttempts:I,maxAttempts:C.maxAttempts},`web reconnect: max attempts reached; continuing in degraded mode`),s.error(`WhatsApp Web reconnect: max attempts reached (${I}/${C.maxAttempts}). Stopping web monitoring.`),await V();break}let K=be(C,I);h.info({connectionId:n,status:U,reconnectAttempts:I,maxAttempts:C.maxAttempts||`unlimited`,delayMs:K},`web reconnect: scheduling retry`),s.error(`WhatsApp Web connection closed (status ${U}). Retry ${I}/${C.maxAttempts||`∞`} in ${Me(K)}… (${G})`),await V();try{await j(K,c)}catch{break}}g.running=!1,g.connected=!1,g.lastEventAt=Date.now(),_(),process.removeListener(`SIGINT`,F)}export{Et as n,sn as t};
5
+ `);n&&(Z.warn(`Media skipped; sent text-only to ${i.from}`),await i.reply(n))}}}for(let e of g)await i.reply(e)}function Qt(t){if(!t.msg.id)return;let n=t.cfg.channels?.whatsapp?.ackReaction,r=(n?.emoji??``).trim(),i=n?.direct??!0,a=n?.group??`mentions`,o=t.msg.conversationId??t.msg.from,s=t.msg.chatType===`group`?Rt({cfg:t.cfg,agentId:t.agentId,sessionKey:t.sessionKey,conversationId:o}):null;F({emoji:r,isDirect:t.msg.chatType===`direct`,isGroup:t.msg.chatType===`group`,directEnabled:i,groupMode:a,wasMentioned:t.msg.wasMentioned===!0,groupActivated:s===`always`})&&(t.info({chatId:t.msg.chatId,messageId:t.msg.id,emoji:r},`sending ack reaction`),Fe(t.msg.chatId,t.msg.id,r,{verbose:t.verbose,fromMe:!1,participant:t.msg.senderJid,accountId:t.accountId}).catch(n=>{t.warn({error:q(n),chatId:t.msg.chatId,messageId:t.msg.id},`failed to send ack reaction`),e(`WhatsApp ack reaction failed for chat ${t.msg.chatId}: ${q(n)}`)}))}function $t(e){return e.replyToBody?`[Replying to ${e.replyToSender??`unknown sender`}${e.replyToId?` id:${e.replyToId}`:``}]\n${e.replyToBody}\n[/Replying]`:null}function en(e){let{cfg:t,msg:n,agentId:r,previousTimestamp:i,envelope:a}=e,o=N(t,r,{configured:t.channels?.whatsapp?.messagePrefix,hasAllowFrom:(t.channels?.whatsapp?.allowFrom?.length??0)>0}),s=o?`${o} `:``,c=$t(n),l=`${s}${n.body}${c?`\n\n${c}`:``}`;return A({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 tn(e){let t=e.cfg.commands?.useAccessGroups!==!1;if(!t)return!0;let n=e.msg.chatType===`group`,r=C(n?e.msg.senderE164??``:e.msg.senderE164??e.msg.from??``);if(!r)return!1;let i=E({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 we({provider:`whatsapp`,accountId:e.msg.accountId,dmPolicy:a});return Se({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=>C(String(e))).filter(e=>!!e).includes(r),command:{useAccessGroups:t,allowTextCommands:!0,hasControlCommand:!0}}).commandAuthorized}function nn(e){let t=E({cfg:e.cfg,accountId:e.msg.accountId});return Te({dmScope:e.cfg.session?.dmScope,allowFrom:t.allowFrom,normalizeEntry:e=>C(e)})}async function rn(n){let r=n.msg.conversationId??n.msg.from,{storePath:i,envelopeOptions:a,previousTimestamp:o}=R({cfg:n.cfg,agentId:n.route.agentId,sessionKey:n.route.sessionKey}),c=en({cfg:n.cfg,msg:n.msg,agentId:n.route.agentId,previousTimestamp:o,envelope:a}),l=!1;if(n.msg.chatType===`group`){let e=n.groupHistory??n.groupHistories.get(n.groupHistoryKey)??[];e.length>0&&(c=W({entries:e.map(e=>({sender:e.sender,body:e.body,timestamp:e.timestamp})),currentMessage:c,excludeLast:!1,formatEntry:e=>A({channel:`WhatsApp`,from:r,timestamp:e.timestamp,body:e.body,chatType:`group`,senderLabel:e.sender,envelope:a})})),l=!(n.suppressGroupHistoryClear??!1)}let u=n.buildCombinedEchoKey({sessionKey:n.route.sessionKey,combinedBody:c});if(n.echoHas(u))return e(`Skipping auto-reply: detected echo for combined message`),n.echoForget(u),!1;Qt({cfg:n.cfg,msg:n.msg,agentId:n.route.agentId,sessionKey:n.route.sessionKey,conversationId:r,verbose:n.verbose,accountId:n.route.accountId,info:n.replyLogger.info.bind(n.replyLogger),warn:n.replyLogger.warn.bind(n.replyLogger)});let d=n.msg.id??J();n.replyLogger.info({connectionId:n.connectionId,correlationId:d,from:n.msg.chatType===`group`?r:n.msg.from,to:n.msg.to,body:$(c,240),mediaType:n.msg.mediaType??null,mediaPath:n.msg.mediaPath??null},`inbound web message`);let f=n.msg.chatType===`group`?r:n.msg.from,p=n.msg.mediaType?`, ${n.msg.mediaType}`:``;X.info(`Inbound message ${f} -> ${n.msg.to} (${n.msg.chatType}${p}, ${c.length} chars)`),t()&&X.debug(`Inbound body: ${$(c,400)}`);let m=n.msg.chatType===`group`?void 0:n.msg.senderE164?C(n.msg.senderE164):n.msg.from.includes(`@`)?x(n.msg.from):C(n.msg.from),h=n.maxMediaTextChunkLimit??_e(n.cfg,`whatsapp`),g=ve(n.cfg,`whatsapp`,n.route.accountId),_=ye({cfg:n.cfg,channel:`whatsapp`,accountId:n.route.accountId}),v=pe(n.cfg,n.route.agentId),y=!1,b=!1,S=te(n.msg.body,n.cfg)?await tn({cfg:n.cfg,msg:n.msg}):void 0,w=n.cfg.messages?.responsePrefix,{onModelSelected:ee,...T}=ie({cfg:n.cfg,agentId:n.route.agentId,channel:`whatsapp`,accountId:n.route.accountId}),E=n.msg.chatType!==`group`&&!!n.msg.selfE164&&C(n.msg.from)===C(n.msg.selfE164??``),D=T.responsePrefix??(w===void 0&&E?V(n.cfg,n.route.agentId):void 0),O=n.msg.chatType===`group`?(n.groupHistory??n.groupHistories.get(n.groupHistoryKey)??[]).map(e=>({sender:e.sender,body:e.body,timestamp:e.timestamp})):void 0,k=ne({Body:c,BodyForAgent:n.msg.body,InboundHistory:O,RawBody:n.msg.body,CommandBody:n.msg.body,From:n.msg.from,To:n.msg.to,SessionKey:n.route.sessionKey,AccountId:n.route.accountId,MessageSid:n.msg.id,ReplyToId:n.msg.replyToId,ReplyToBody:n.msg.replyToBody,ReplyToSender:n.msg.replyToSender,MediaPath:n.msg.mediaPath,MediaUrl:n.msg.mediaUrl,MediaType:n.msg.mediaType,ChatType:n.msg.chatType,ConversationLabel:n.msg.chatType===`group`?r:n.msg.from,GroupSubject:n.msg.groupSubject,GroupMembers:Vt({participants:n.msg.groupParticipants,roster:n.groupMemberNames.get(n.groupHistoryKey),fallbackE164:n.msg.senderE164}),SenderName:n.msg.senderName,SenderId:n.msg.senderJid?.trim()||n.msg.senderE164,SenderE164:n.msg.senderE164,CommandAuthorized:S,WasMentioned:n.msg.wasMentioned,...n.msg.location?fe(n.msg.location):{},Provider:`whatsapp`,Surface:`whatsapp`,OriginatingChannel:`whatsapp`,OriginatingTo:n.msg.from}),j=nn({cfg:n.cfg,msg:n.msg}),M=!j||j===m,N=oe({route:n.route,sessionKey:n.route.sessionKey});m&&N===n.route.mainSessionKey&&M?qt({cfg:n.cfg,backgroundTasks:n.backgroundTasks,storeAgentId:n.route.agentId,sessionKey:n.route.mainSessionKey,channel:`whatsapp`,to:m,accountId:n.route.accountId,ctx:k,warn:n.replyLogger.warn.bind(n.replyLogger)}):m&&N===n.route.mainSessionKey&&j&&e(`Skipping main-session last route update for ${m} (pinned owner ${j})`);let P=s({storePath:i,sessionKey:n.route.sessionKey,ctx:k}).catch(e=>{n.replyLogger.warn({error:q(e),storePath:i,sessionKey:n.route.sessionKey},`failed updating session meta`)});Kt(n.backgroundTasks,P);let{queuedFinal:re}=await ae({ctx:k,cfg:n.cfg,replyResolver:n.replyResolver,dispatcherOptions:{...T,responsePrefix:D,onHeartbeatStrip:()=>{y||(y=!0,e(`Stripped stray HEARTBEAT_OK token from web reply`))},deliver:async(e,i)=>{if(i.kind!==`final`)return;await Zt({replyResult:e,msg:n.msg,mediaLocalRoots:v,maxMediaBytes:n.maxMediaBytes,textLimit:h,chunkMode:g,replyLogger:n.replyLogger,connectionId:n.connectionId,skipLog:!1,tableMode:_}),b=!0;let a=e.text?!0:void 0;n.rememberSentText(e.text,{combinedBody:c,combinedBodySessionKey:n.route.sessionKey,logVerboseMessage:a});let o=n.msg.chatType===`group`?r:n.msg.from??`unknown`,s=!!(e.mediaUrl||e.mediaUrls?.length);if(Z.info(`Auto-replied to ${o}${s?` (media)`:``}`),t()){let t=e.text==null?`<media>`:$(e.text,400);Z.debug(`Reply body: ${t}${s?` (media)`:``}`)}},onError:(e,t)=>{let i=t.kind===`tool`?`tool update`:t.kind===`block`?`block update`:`auto-reply`;Z.error(`Failed sending web ${i} to ${n.msg.from??r}: ${q(e)}`)},onReplyStart:n.msg.sendComposing},replyOptions:{disableBlockStreaming:!0,onModelSelected:ee}});return re?(l&&n.groupHistories.set(n.groupHistoryKey,[]),b):(l&&n.groupHistories.set(n.groupHistoryKey,[]),e(`Skipping auto-reply: silent token or no text/media returned from resolver`),!1)}function an(t){let n=async(e,n,r,i)=>rn({cfg:t.cfg,msg:e,route:n,groupHistoryKey:r,groupHistories:t.groupHistories,groupMemberNames:t.groupMemberNames,connectionId:t.connectionId,verbose:t.verbose,maxMediaBytes:t.maxMediaBytes,replyResolver:t.replyResolver,replyLogger:t.replyLogger,backgroundTasks:t.backgroundTasks,rememberSentText:t.echoTracker.rememberText,echoHas:t.echoTracker.has,echoForget:t.echoTracker.forget,buildCombinedEchoKey:t.echoTracker.buildCombinedKey,groupHistory:i?.groupHistory,suppressGroupHistoryClear:i?.suppressGroupHistoryClear});return async r=>{let i=r.conversationId??r.from,a=Jt(r),o=ce({cfg:d(),channel:`whatsapp`,accountId:r.accountId,peer:{kind:r.chatType===`group`?`group`:`direct`,id:a}}),s=r.chatType===`group`?m({channel:`whatsapp`,accountId:o.accountId,peerKind:`group`,peerId:a}):o.sessionKey;if(r.from===r.to&&e(`📱 Same-phone mode detected (from === to: ${r.from})`),t.echoTracker.has(r.body)){e(`Skipping auto-reply: detected echo (message matches recently sent text)`),t.echoTracker.forget(r.body);return}if(r.chatType===`group`){let n={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:t.cfg,backgroundTasks:t.backgroundTasks,storeAgentId:o.agentId,sessionKey:o.sessionKey,channel:`whatsapp`,to:i,accountId:o.accountId,ctx:n,warn:t.replyLogger.warn.bind(t.replyLogger)}),!Gt({cfg:t.cfg,msg:r,conversationId:i,groupHistoryKey:s,agentId:o.agentId,sessionKey:o.sessionKey,baseMentionConfig:t.baseMentionConfig,authDir:t.account.authDir,groupHistories:t.groupHistories,groupHistoryLimit:t.groupHistoryLimit,groupMemberNames:t.groupMemberNames,logVerbose:e,replyLogger:t.replyLogger}).shouldProcess)return}else !r.senderE164&&a&&a.startsWith(`+`)&&(r.senderE164=C(a)??r.senderE164);await Pt({cfg:t.cfg,msg:r,peerId:a,route:o,groupHistoryKey:s,groupHistories:t.groupHistories,processMessage:n})||await n(r,o,s)}}function on(e){return e===440}async function sn(t,i=Et,a=!0,o=re,s=r,c,l={}){let u=J(),f=n({module:`web-auto-reply`,runId:u}),m=n({module:`web-heartbeat`,runId:u}),h=n({module:`web-reconnect`,runId:u}),g={running:!0,connected:!1,reconnectAttempts:0,lastConnectedAt:null,lastDisconnect:null,lastMessageAt:null,lastEventAt:null,lastError:null},_=()=>{l.statusSink?.({...g,lastDisconnect:g.lastDisconnect?{...g.lastDisconnect}:null})};_();let v=d(),y=E({cfg:v,accountId:l.accountId}),b={...v,channels:{...v.channels,whatsapp:{...v.channels?.whatsapp,ackReaction:y.ackReaction,messagePrefix:y.messagePrefix,allowFrom:y.allowFrom,groupAllowFrom:y.groupAllowFrom,groupPolicy:y.groupPolicy,textChunkLimit:y.textChunkLimit,chunkMode:y.chunkMode,mediaMaxMb:y.mediaMaxMb,blockStreaming:y.blockStreaming,groups:y.groups}}},x=T(y),S=qe(b,l.heartbeatSeconds),C=Je(b,l.reconnect),w=Dt(b),O=b.channels?.whatsapp?.accounts?.[l.accountId??``]?.historyLimit??b.channels?.whatsapp?.historyLimit??b.messages?.groupChat?.historyLimit??50,te=new Map,ne=new Map,A=Mt({maxItems:100,logVerbose:e}),j=l.sleep??((e,t)=>xe(e,t??c)),M=()=>c?.aborted===!0,N=c&&new Promise(e=>c.addEventListener(`abort`,()=>e(`aborted`),{once:!0})),P=process.getMaxListeners?.()??10;process.setMaxListeners&&P<50&&process.setMaxListeners(50);let ie=!1,F=()=>{ie=!0};process.once(`SIGINT`,F);let I=0;for(;!M();){let n=J(),r=Date.now(),u=null,d=null,v=null,T=0,E=null,P=l.messageTimeoutMs??1800*1e3,ae=l.watchdogCheckMs??60*1e3,L=new Set,oe=an({cfg:b,verbose:t,connectionId:n,maxMediaBytes:x,groupHistoryLimit:O,groupHistories:te,groupMemberNames:ne,echoTracker:A,backgroundTasks:L,replyResolver:o??re,replyLogger:f,baseMentionConfig:w,account:y}),se=ue({cfg:b,channel:`whatsapp`}),R=await(i??Et)({verbose:t,accountId:y.accountId,authDir:y.authDir,mediaMaxMb:y.mediaMaxMb,sendReadReceipts:y.sendReadReceipts,debounceMs:se,shouldDebounce:e=>e.mediaPath||e.mediaType||e.location||e.replyToId||e.replyToBody?!1:!de(e.body,b),onMessage:async e=>{T+=1,v=Date.now(),g.lastMessageAt=v,g.lastEventAt=v,_(),await oe(e)}});Object.assign(g,le()),g.lastError=null,_();let{e164:z}=ee(y.authDir),B=ce({cfg:b,channel:`whatsapp`,accountId:y.accountId});k(`WhatsApp gateway connected${z?` as ${z}`:``}.`,{sessionKey:B.sessionKey}),Ne(y.accountId,R),E=me(e=>{if(!Yt(e))return!1;let t=q(e);return h.warn({connectionId:n,error:t},`web reconnect: unhandled rejection from WhatsApp socket; forcing reconnect`),R.signalClose?.({status:499,isLoggedOut:!1,error:e}),!0});let V=async()=>{Ne(y.accountId,null),E&&=(E(),null),u&&clearInterval(u),d&&clearInterval(d),L.size>0&&(await Promise.allSettled(L),L.clear());try{await R.close()}catch(t){e(`Socket close failed: ${q(t)}`)}};if(a&&(u=setInterval(()=>{let e=D(y.authDir),t=v?Math.floor((Date.now()-v)/6e4):null,i={connectionId:n,reconnectAttempts:I,messagesHandled:T,lastMessageAt:v,authAgeMs:e,uptimeMs:Date.now()-r,...t!==null&&t>30?{minutesSinceLastMessage:t}:{}};t&&t>30?m.warn(i,`⚠️ web gateway heartbeat - no messages in 30+ minutes`):m.info(i,`web gateway heartbeat`)},S*1e3),d=setInterval(()=>{if(!v)return;let t=Date.now()-v;if(t<=P)return;let r=Math.floor(t/6e4);m.warn({connectionId:n,minutesSinceLastMessage:r,lastMessageAt:new Date(v),messagesHandled:T},`Message timeout detected - forcing reconnect`),Ye.warn(`No messages received in ${r}m - restarting connection`),V().catch(t=>{e(`Close listener failed: ${q(t)}`)}),R.signalClose?.({status:499,isLoggedOut:!1,error:`watchdog-timeout`})},ae)),Y.info(`Listening for personal WhatsApp inbound messages.`),(process.stdout.isTTY||process.stderr.isTTY)&&Y.raw(`Ctrl+C to stop.`),!a){await V(),process.removeListener(`SIGINT`,F);return}let H=await Promise.race([R.onClose?.catch(e=>(h.error({error:q(e)},`listener.onClose rejected`),{status:500,isLoggedOut:!1,error:e}))??Xe(),N??Xe()]);if(Date.now()-r>S*1e3&&(I=0),g.reconnectAttempts=I,_(),M()||ie||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(g.connected=!1,g.lastEventAt=Date.now(),g.lastDisconnect={at:g.lastEventAt,status:typeof U==`number`?U:void 0,error:G,loggedOut:!!W},g.lastError=G,g.reconnectAttempts=I,_(),h.info({connectionId:n,status:U,loggedOut:W,reconnectAttempts:I,error:G},`web reconnect: connection closed`),k(`WhatsApp gateway disconnected (status ${U??`unknown`})`,{sessionKey:B.sessionKey}),W){s.error(`WhatsApp session logged out. Run \`${p(`openclaw channels login --channel web`)}\` to relink.`),await V();break}if(on(U)){h.warn({connectionId:n,status:U,error:G},`web reconnect: non-retryable close status; stopping monitor`),s.error(`WhatsApp Web connection closed (status ${U}: session conflict). Resolve conflicting WhatsApp Web sessions, then relink with \`${p(`openclaw channels login --channel web`)}\`. Stopping web monitoring.`),await V();break}if(I+=1,g.reconnectAttempts=I,_(),C.maxAttempts>0&&I>=C.maxAttempts){h.warn({connectionId:n,status:U,reconnectAttempts:I,maxAttempts:C.maxAttempts},`web reconnect: max attempts reached; continuing in degraded mode`),s.error(`WhatsApp Web reconnect: max attempts reached (${I}/${C.maxAttempts}). Stopping web monitoring.`),await V();break}let K=be(C,I);h.info({connectionId:n,status:U,reconnectAttempts:I,maxAttempts:C.maxAttempts||`unlimited`,delayMs:K},`web reconnect: scheduling retry`),s.error(`WhatsApp Web connection closed (status ${U}). Retry ${I}/${C.maxAttempts||`∞`} in ${Me(K)}… (${G})`),await V();try{await j(K,c)}catch{break}}g.running=!1,g.connected=!1,g.lastEventAt=Date.now(),_(),process.removeListener(`SIGINT`,F)}export{Et as n,sn as t};
@@ -2,4 +2,4 @@ import{S as e,T as t,j as n,p as r,t as i}from"./subsystem-C5XF2Fy5.js";import{C
2
2
  `).trim();if(s||=ct(i),!s){let t=i?Ue(i):void 0;return e(`Quoted message missing extractable body${t?` (type ${t})`:``}`),null}let c=r?.participant??void 0,u=c?l(c)??c:void 0,d=u??`unknown sender`;return{id:r?.stanzaId?String(r.stanzaId):void 0,body:s,sender:d,senderJid:c,senderE164:u}}function vt(e){return _e({providerConfigPresent:e.providerConfigPresent,groupPolicy:e.groupPolicy,defaultGroupPolicy:e.defaultGroupPolicy})}async function yt(t){let n=_(),r=G({cfg:n,accountId:t.accountId}),i=r.dmPolicy??`pairing`,a=r.allowFrom??[],o=await De({provider:`whatsapp`,accountId:r.accountId,dmPolicy:i}),l=a.length===0&&t.selfE164?[t.selfE164]:[],u=a.length>0?a:l,d=r.groupAllowFrom??(a.length>0?a:void 0),f=t.from===t.selfE164,p=r.selfChatMode??s(t.selfE164,a),m=typeof t.pairingGraceMs==`number`&&t.pairingGraceMs>0?t.pairingGraceMs:3e4,h=typeof t.connectedAtMs==`number`&&typeof t.messageTimestampMs==`number`&&t.messageTimestampMs<t.connectedAtMs-m,g=ge(n),{groupPolicy:v,providerMissingFallbackApplied:y}=vt({providerConfigPresent:n.channels?.whatsapp!==void 0,groupPolicy:r.groupPolicy,defaultGroupPolicy:g});ve({providerMissingFallbackApplied:y,providerKey:`whatsapp`,accountId:r.accountId,log:t=>e(t)});let b=c(t.from),x=typeof t.senderE164==`string`?c(t.senderE164):null,S=Oe({isGroup:t.group,dmPolicy:i,groupPolicy:v,allowFrom:t.group?a:u,groupAllowFrom:d,storeAllowFrom:o,isSenderAllowed:e=>{if(e.includes(`*`))return!0;let n=new Set(e.map(e=>c(String(e))).filter(e=>!!e));return!t.group&&f?!0:t.group?!!(x&&n.has(x)):n.has(b)}});if(t.group&&S.decision!==`allow`)return S.reason===`groupPolicy=disabled`?e(`Blocked group message (groupPolicy: disabled)`):S.reason===`groupPolicy=allowlist (empty allowlist)`?e(`Blocked group message (groupPolicy: allowlist, no groupAllowFrom)`):e(`Blocked group message from ${t.senderE164??`unknown sender`} (groupPolicy: allowlist)`),{allowed:!1,shouldMarkRead:!1,isSelfChat:p,resolvedAccountId:r.accountId};if(!t.group){if(t.isFromMe&&!f)return e(`Skipping outbound DM (fromMe); no pairing reply needed.`),{allowed:!1,shouldMarkRead:!1,isSelfChat:p,resolvedAccountId:r.accountId};if(S.decision===`block`&&S.reason===`dmPolicy=disabled`)return e(`Blocked dm (dmPolicy: disabled)`),{allowed:!1,shouldMarkRead:!1,isSelfChat:p,resolvedAccountId:r.accountId};if(S.decision===`pairing`&&!f){let n=t.from;return h?e(`Skipping pairing reply for historical DM from ${n}.`):await I({channel:`whatsapp`,senderId:n,senderIdLine:`Your WhatsApp phone number: ${n}`,meta:{name:(t.pushName??``).trim()||void 0},upsertPairingRequest:async({id:e,meta:t})=>await he({channel:`whatsapp`,id:e,accountId:r.accountId,meta:t}),onCreated:()=>{e(`whatsapp pairing request sender=${n} name=${t.pushName??`unknown`}`)},sendPairingReply:async e=>{await t.sock.sendMessage(t.remoteJid,{text:e})},onReplyError:t=>{e(`whatsapp pairing reply failed for ${n}: ${String(t)}`)}}),{allowed:!1,shouldMarkRead:!1,isSelfChat:p,resolvedAccountId:r.accountId}}if(S.decision!==`allow`)return e(`Blocked unauthorized sender ${t.from} (dmPolicy=${i})`),{allowed:!1,shouldMarkRead:!1,isSelfChat:p,resolvedAccountId:r.accountId}}return{allowed:!0,shouldMarkRead:!0,isSelfChat:p,resolvedAccountId:r.accountId}}function bt(e){return Ge(e)}function xt(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 St(t,n){let r=bt(t.message);if(!r)return;let i=xt(r),a=r.documentMessage?.fileName??void 0;if(!(!r.imageMessage&&!r.videoMessage&&!r.documentMessage&&!r.audioMessage&&!r.stickerMessage))try{return{buffer:await Ve(t,`buffer`,{},{reuploadRequest:n.updateMediaMessage,logger:n.logger}),mimetype:i,fileName:a}}catch(t){e(`downloadMediaMessage failed: ${String(t)}`);return}}function Ct(e){Ae({channel:`whatsapp`,accountId:e,direction:`outbound`})}function wt(e){return typeof e==`object`&&e&&`key`in e?String(e.key?.id??`unknown`):`unknown`}function Tt(e){return{sendMessage:async(t,n,r,i,a)=>{let s=o(t),c;if(r&&i)if(i.startsWith(`image/`))c={image:r,caption:n||void 0,mimetype:i};else if(i.startsWith(`audio/`))c={audio:r,ptt:!0,mimetype:i};else if(i.startsWith(`video/`)){let e=a?.gifPlayback;c={video:r,caption:n||void 0,mimetype:i,...e?{gifPlayback:!0}:{}}}else c={document:r,fileName:a?.fileName?.trim()||`file`,caption:n||void 0,mimetype:i};else c={text:n};let l=await e.sock.sendMessage(s,c);return Ct(a?.accountId??e.defaultAccountId),{messageId:wt(l)}},sendPoll:async(t,n)=>{let r=o(t),i=await e.sock.sendMessage(r,{poll:{name:n.question,values:n.options,selectableCount:n.maxSelections??1}});return Ct(e.defaultAccountId),{messageId:wt(i)}},sendReaction:async(t,n,r,i,a)=>{let s=o(t);await e.sock.sendMessage(s,{react:{text:r,key:{remoteJid:s,id:n,fromMe:i,participant:a?o(a):void 0}}})},sendComposingTo:async t=>{let n=o(t);await e.sock.sendPresenceUpdate(`composing`,n)}}}async function Et(r){let a=n({module:`web-inbound`}),o=i(`gateway/channels/whatsapp`).child(`inbound`),s=await Re(!1,r.verbose,{authDir:r.authDir});await Ie(s);let c=Date.now(),u=null,f=new Promise(e=>{u=e}),p=e=>{if(!u)return;let t=u;u=null,t(e)};try{await s.sendPresenceUpdate(`available`),t()&&e(`Sent global 'available' presence on connect`)}catch(t){e(`Failed to send 'available' presence on connect: ${String(t)}`)}let h=s.user?.id,g=h?l(h):null,_=N({debounceMs:r.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:r.shouldDebounce,onFlush:async e=>{let t=e.at(-1);if(!t)return;if(e.length===1){await r.onMessage(t);return}let n=new Set;for(let t of e)for(let e of t.mentionedJids??[])n.add(e);let i=e.map(e=>e.body).filter(Boolean).join(`
3
3
  `),a={...t,body:i,mentionedJids:n.size>0?Array.from(n):void 0};await r.onMessage(a)},onError:e=>{a.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 e=>d(e,{authDir:r.authDir,lidLookup:b}),S=async t=>{let n=v.get(t);if(n&&n.expires>Date.now())return n;try{let e=await s.groupMetadata(t),n=(await Promise.all(e.participants?.map(async e=>await x(e.id)??e.id)??[])).filter(Boolean)??[],r={subject:e.subject,participants:n,expires:Date.now()+y};return v.set(t,r),r}catch(n){return e(`Failed to fetch group metadata for ${t}: ${String(n)}`),{expires:Date.now()+y}}},ee=async e=>{let t=e.key?.id??void 0,n=e.key?.remoteJid;if(!n||n.endsWith(`@status`)||n.endsWith(`@broadcast`))return null;let i=We(n)===!0;if(t&&Qe(`${r.accountId}:${n}:${t}`))return null;let a=e.key?.participant??void 0,o=i?n:await x(n);if(!o)return null;let l=i?a?await x(a):null:o,u,d;if(i){let e=await S(n);u=e.subject,d=e.participants}let f=e.messageTimestamp?Number(e.messageTimestamp)*1e3:void 0,p=await yt({accountId:r.accountId,from:o,selfE164:g,senderE164:l,group:i,pushName:e.pushName??void 0,isFromMe:!!e.key?.fromMe,messageTimestampMs:f,connectedAtMs:c,sock:{sendMessage:(e,t)=>s.sendMessage(e,t)},remoteJid:n});return p.allowed?{id:t,remoteJid:n,group:i,participantJid:a,from:o,senderE164:l,groupSubject:u,groupParticipants:d,messageTimestampMs:f,access:p}:null},C=async n=>{let{id:i,remoteJid:a,participantJid:o,access:c}=n;if(i&&!c.isSelfChat&&r.sendReadReceipts!==!1)try{await s.readMessages([{remoteJid:a,id:i,participant:o,fromMe:!1}]),t()&&e(`Marked message ${i} as read for ${a}${o?` (participant ${o})`:``}`)}catch(t){e(`Failed to mark message ${i} read: ${String(t)}`)}else i&&c.isSelfChat&&t()&&e(`Self-chat mode: skipping read receipt for ${i}`)},w=async t=>{let n=gt(t.message??void 0),i=n?ye(n):void 0,a=st(t.message??void 0);if(i&&(a=[a,i].filter(Boolean).join(`
4
4
  `).trim()),!a&&(a=ct(t.message??void 0),!a))return null;let o=_t(t.message),c,l,u;try{let e=await St(t,s);if(e){let t=(typeof r.mediaMaxMb==`number`&&r.mediaMaxMb>0?r.mediaMaxMb:50)*1024*1024;c=(await m(e.buffer,e.mimetype,`inbound`,t,e.fileName)).path,l=e.mimetype,u=e.fileName}}catch(t){e(`Inbound media download failed: ${String(t)}`)}return{body:a,location:n??void 0,replyContext:o,mediaPath:c,mediaType:l,mediaFileName:u}},T=async(t,n,r)=>{let i=n.remoteJid,c=async()=>{try{await s.sendPresenceUpdate(`composing`,i)}catch(t){e(`Presence update failed: ${String(t)}`)}},l=async e=>{await s.sendMessage(i,{text:e})},u=async e=>{await s.sendMessage(i,e)},d=n.messageTimestampMs,f=ot(t.message),p=t.pushName??void 0;a.info({from:n.from,to:g??`me`,body:r.body,mediaPath:r.mediaPath,mediaType:r.mediaType,mediaFileName:r.mediaFileName,timestamp:d},`inbound message`);let m={id:n.id,from:n.from,conversationId:n.from,to:g??`me`,accountId:n.access.resolvedAccountId,body:r.body,pushName:p,timestamp:d,chatType:n.group?`group`:`direct`,chatId:n.remoteJid,senderJid:n.participantJid,senderE164:n.senderE164??void 0,senderName:p,replyToId:r.replyContext?.id,replyToBody:r.replyContext?.body,replyToSender:r.replyContext?.sender,replyToSenderJid:r.replyContext?.senderJid,replyToSenderE164:r.replyContext?.senderE164,groupSubject:n.groupSubject,groupParticipants:n.groupParticipants,mentionedJids:f??void 0,selfJid:h,selfE164:g,fromMe:!!t.key?.fromMe,location:r.location??void 0,sendComposing:c,reply:l,sendMedia:u,mediaPath:r.mediaPath,mediaType:r.mediaType,mediaFileName:r.mediaFileName};try{Promise.resolve(_.enqueue(m)).catch(e=>{a.error({error:String(e)},`failed handling inbound web message`),o.error(`Failed handling inbound web message: ${String(e)}`)})}catch(e){a.error({error:String(e)},`failed handling inbound web message`),o.error(`Failed handling inbound web message: ${String(e)}`)}},E=async e=>{if(!(e.type!==`notify`&&e.type!==`append`))for(let t of e.messages??[]){Ae({channel:`whatsapp`,accountId:r.accountId,direction:`inbound`});let n=await ee(t);if(!n||(await C(n),e.type===`append`))continue;let i=await w(t);i&&await T(t,n,i)}};s.ev.on(`messages.upsert`,E);let D=e=>{try{if(e.connection===`close`){let t=Le(e.lastDisconnect?.error);p({status:t,isLoggedOut:t===Be.loggedOut,error:e.lastDisconnect?.error})}}catch(e){a.error({error:String(e)},`connection.update handler error`),p({status:void 0,isLoggedOut:!1,error:e})}};return s.ev.on(`connection.update`,D),{close:async()=>{try{let e=s.ev,t=E,n=D;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(t){e(`Socket close failed: ${String(t)}`)}},onClose:f,signalClose:e=>{p(e??{status:void 0,isLoggedOut:!1,error:`closed`})},...Tt({sock:{sendMessage:(e,t)=>s.sendMessage(e,t),sendPresenceUpdate:(e,t)=>s.sendPresenceUpdate(e,t)},defaultAccountId:r.accountId})}}function Dt(e,t){return{mentionRegexes:F(e,t),allowFrom:e.channels?.whatsapp?.allowFrom}}function Ot(e,t){let n=t?{authDir:t}:void 0;return{normalizedMentions:e.mentionedJids?.length?e.mentionedJids.map(e=>l(e,n)??e).filter(Boolean):[],selfE164:e.selfE164??(e.selfJid?l(e.selfJid,n):null),selfJid:e.selfJid?e.selfJid.replace(/:\\d+/,``):null}}function kt(e,t,n){let r=e=>A(e),i=s(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 At(e,t,n){let r=Ot(e,n);return{wasMentioned:kt(e,t,r),details:{from:e.from,body:e.body,bodyClean:A(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 jt(e,t){let n=e.allowFrom;return(Array.isArray(n)&&n.length>0?n:t?[t]:[]).filter(e=>!!(e&&e!==`*`)).map(e=>c(e)).filter(e=>!!e)}function Mt(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 Nt(e){let t=z({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}),n=U({agentId:e.agentId,mainKey:H});return{sessionKey:t,mainSessionKey:n,lastRoutePolicy:C({sessionKey:t,mainSessionKey:n})}}async function Pt(e){let t=e.cfg.broadcast?.[e.peerId];if(!t||!Array.isArray(t)||t.length===0)return!1;let n=e.cfg.broadcast?.strategy||`parallel`;X.info(`Broadcasting message to ${t.length} agents (${n})`);let r=e.cfg.agents?.list?.map(e=>V(e.id)),i=(r?.length??0)>0,a=e.msg.chatType===`group`?e.groupHistories.get(e.groupHistoryKey)??[]:void 0,o=async t=>{let n=V(t);if(i&&!r?.includes(n))return X.warn(`Broadcast agent ${t} not found in agents.list; skipping`),!1;let o=Nt({cfg:e.cfg,msg:e.msg,route:e.route,peerId:e.peerId,agentId:n}),s={...e.route,agentId:n,...o};try{return await e.processMessage(e.msg,s,e.groupHistoryKey,{groupHistory:a,suppressGroupHistoryClear:!0})}catch(e){return X.error(`Broadcast agent ${t} failed: ${q(e)}`),!1}};if(n===`sequential`)for(let e of t)await o(e);else await Promise.allSettled(t.map(o));return e.msg.chatType===`group`&&e.groupHistories.set(e.groupHistoryKey,[]),!0}function Ft(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 It(e,t){let n=v({From:t,ChatType:`group`,Provider:`whatsapp`})?.id,r=e.channels?.whatsapp,i=!!(r?.groupAllowFrom?.length||r?.allowFrom?.length);return h({cfg:e,channel:`whatsapp`,groupId:n??t,hasGroupAllowFrom:i})}function Lt(e,t){let n=v({From:t,ChatType:`group`,Provider:`whatsapp`})?.id;return y({cfg:e,channel:`whatsapp`,groupId:n??t})}function Rt(e){let t=f(K(e.cfg.session?.store,{agentId:e.agentId}))[e.sessionKey],n=Lt(e.cfg,e.conversationId)?`mention`:`always`;return se(t?.groupActivation)??n}function zt(e,t,n){for(let r of e){let e=c(r)??r;!e||t.has(e)||(t.add(e),n.push(e))}}function Bt(e,t,n,r){if(!n||!r)return;let i=c(n)??n;if(!i)return;let a=e.get(t);a||(a=new Map,e.set(t,a)),a.set(i,r)}function Vt(e){let{participants:t,roster:n,fallbackE164:r}=e,i=new Set,a=[];if(t?.length&&zt(t,i,a),n&&zt(n.keys(),i,a),a.length===0&&r){let e=c(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 Ht(e,t){let n=c(t.senderE164??``);return n?jt(e,t.selfE164??void 0).includes(n):!1}function Ut(e){let t=e.msg.senderName&&e.msg.senderE164?`${e.msg.senderName} (${e.msg.senderE164})`:e.msg.senderName??e.msg.senderE164??`Unknown`;R({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 Wt(e,t){return e.logVerbose(t),Ut({msg:e.msg,groupHistories:e.groupHistories,groupHistoryKey:e.groupHistoryKey,groupHistoryLimit:e.groupHistoryLimit}),{shouldProcess:!1}}function Gt(e){let t=It(e.cfg,e.conversationId);if(t.allowlistEnabled&&!t.allowed)return e.logVerbose(`Skipping group message ${e.conversationId} (not in allowlist)`),{shouldProcess:!1};Bt(e.groupMemberNames,e.groupHistoryKey,e.msg.senderE164,e.msg.senderName);let n=Dt(e.cfg,e.agentId),r=Ft(e.msg.body,n.mentionRegexes,e.msg.selfE164),i=ie(r),a=Ht(e.baseMentionConfig,e.msg),o=a&&b(r,e.cfg);if(i.hasCommand&&!a)return Wt(e,`Ignoring /activation from non-owner in group ${e.conversationId}`);let s=At(e.msg,n,e.authDir);e.replyLogger.debug({conversationId:e.conversationId,wasMentioned:s.wasMentioned,...s.details},`group mention debug`);let l=s.wasMentioned,u=Rt({cfg:e.cfg,agentId:e.agentId,sessionKey:e.sessionKey,conversationId:e.conversationId})!==`always`,d=e.msg.selfJid?.replace(/:\\d+/,``),f=e.msg.replyToSenderJid?.replace(/:\\d+/,``),p=e.msg.selfE164?c(e.msg.selfE164):null,m=e.msg.replyToSenderE164?c(e.msg.replyToSenderE164):null,h=re({requireMention:u,canDetectMention:!0,wasMentioned:l,implicitMention:!!(d&&f&&d===f||p&&m&&p===m),shouldBypassMention:o});return e.msg.wasMentioned=h.effectiveWasMentioned,!o&&u&&h.shouldSkip?Wt(e,`Group message stored for context (no mention detected) in ${e.conversationId}: ${e.msg.body}`):{shouldProcess:!0}}function Kt(e,t){e.add(t),t.finally(()=>{e.delete(t)})}function qt(e){let t=K(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:q(n),storePath:t,sessionKey:e.sessionKey,to:e.to},`failed updating last route`)});Kt(e.backgroundTasks,n)}function Jt(e){return e.chatType===`group`?e.conversationId??e.from:e.senderE164?c(e.senderE164)??e.senderE164:e.from.includes(`@`)?l(e.from)??e.from: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 Yt(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 Xt(e){if(e.isReasoning===!0)return!0;let t=e.text;return typeof t==`string`?t.trimStart().toLowerCase().startsWith(`reasoning:`):!1}async function Zt(n){let{replyResult:r,msg:i,maxMediaBytes:o,textLimit:s,replyLogger:c,connectionId:l,skipLog:u}=n,d=Date.now();if(Xt(r)){Z.debug(`Suppressed reasoning payload to ${i.from}`);return}let f=n.tableMode??`code`,p=n.chunkMode??`length`,m=Se(Pe(je(r.text||``,f)),s,p),h=r.mediaUrls?.length?r.mediaUrls:r.mediaUrl?[r.mediaUrl]:[],g=async(t,n,r=3)=>{let o;for(let s=1;s<=r;s++)try{return await t()}catch(t){o=t;let c=q(t),l=s===r;if(!/closed|reset|timed\s*out|disconnect/i.test(c)||l)throw t;let u=500*s;e(`Retrying ${n} to ${i.from} after failure (${s}/${r-1}) in ${u}ms: ${c}`),await a(u)}throw o};if(h.length===0&&m.length){let e=m.length;for(let[t,n]of m.entries()){let r=Date.now();if(await g(()=>i.reply(n),`text`),!u){let n=Date.now()-r;Z.debug(`Sent chunk ${t+1}/${e} to ${i.from} (${n.toFixed(0)}ms)`)}}c.info({correlationId:i.id??J(),connectionId:l??null,to:i.from,from:i.to,text:$(r.text,240),mediaUrl:null,mediaSizeBytes:null,mediaKind:null,durationMs:Date.now()-d},`auto-reply sent (text)`);return}let _=[...m];for(let[r,a]of h.entries()){let s=r===0&&_.shift()||void 0;try{let r=await xe(a,{maxBytes:o,localRoots:n.mediaLocalRoots});if(t()&&(e(`Web auto-reply media size: ${(r.buffer.length/(1024*1024)).toFixed(2)}MB`),e(`Web auto-reply media source: ${a} (kind ${r.kind})`)),r.kind===`image`)await g(()=>i.sendMedia({image:r.buffer,caption:s,mimetype:r.contentType}),`media:image`);else if(r.kind===`audio`)await g(()=>i.sendMedia({audio:r.buffer,ptt:!0,mimetype:r.contentType,caption:s}),`media:audio`);else if(r.kind===`video`)await g(()=>i.sendMedia({video:r.buffer,caption:s,mimetype:r.contentType}),`media:video`);else{let e=r.fileName??a.split(`/`).pop()??`file`,t=r.contentType??`application/octet-stream`;await g(()=>i.sendMedia({document:r.buffer,fileName:e,caption:s,mimetype:t}),`media:document`)}Z.info(`Sent media reply to ${i.from} (${(r.buffer.length/(1024*1024)).toFixed(2)}MB)`),c.info({correlationId:i.id??J(),connectionId:l??null,to:i.from,from:i.to,text:s??null,mediaUrl:a,mediaSizeBytes:r.buffer.length,mediaKind:r.kind,durationMs:Date.now()-d},`auto-reply sent (media)`)}catch(e){if(Z.error(`Failed sending web media to ${i.from}: ${q(e)}`),c.warn({err:e,mediaUrl:a},`failed to send web media reply`),r===0){let t=e instanceof Error?`⚠️ Media failed: ${e.message}`:`⚠️ Media failed.`,n=[_.shift()??s??``,t].filter(Boolean).join(`
5
- `);n&&(Z.warn(`Media skipped; sent text-only to ${i.from}`),await i.reply(n))}}}for(let e of _)await i.reply(e)}function Qt(t){if(!t.msg.id)return;let n=t.cfg.channels?.whatsapp?.ackReaction,r=(n?.emoji??``).trim(),i=n?.direct??!0,a=n?.group??`mentions`,o=t.msg.conversationId??t.msg.from,s=t.msg.chatType===`group`?Rt({cfg:t.cfg,agentId:t.agentId,sessionKey:t.sessionKey,conversationId:o}):null;T({emoji:r,isDirect:t.msg.chatType===`direct`,isGroup:t.msg.chatType===`group`,directEnabled:i,groupMode:a,wasMentioned:t.msg.wasMentioned===!0,groupActivated:s===`always`})&&(t.info({chatId:t.msg.chatId,messageId:t.msg.id,emoji:r},`sending ack reaction`),Fe(t.msg.chatId,t.msg.id,r,{verbose:t.verbose,fromMe:!1,participant:t.msg.senderJid,accountId:t.accountId}).catch(n=>{t.warn({error:q(n),chatId:t.msg.chatId,messageId:t.msg.id},`failed to send ack reaction`),e(`WhatsApp ack reaction failed for chat ${t.msg.chatId}: ${q(n)}`)}))}function $t(e){return e.replyToBody?`[Replying to ${e.replyToSender??`unknown sender`}${e.replyToId?` id:${e.replyToId}`:``}]\n${e.replyToBody}\n[/Replying]`:null}function en(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=$t(n),l=`${s}${n.body}${c?`\n\n${c}`:``}`;return j({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 tn(e){let t=e.cfg.commands?.useAccessGroups!==!1;if(!t)return!0;let n=e.msg.chatType===`group`,r=c(n?e.msg.senderE164??``:e.msg.senderE164??e.msg.from??``);if(!r)return!1;let i=G({cfg:e.cfg,accountId:e.msg.accountId}),a=i.dmPolicy??`pairing`,o=i.groupPolicy??`allowlist`,s=i.allowFrom??[],l=i.groupAllowFrom??(s.length>0?s:void 0),u=n?[]:await De({provider:`whatsapp`,accountId:e.msg.accountId,dmPolicy:a});return Ee({isGroup:n,dmPolicy:a,groupPolicy:o,allowFrom:s.length>0?s:e.msg.selfE164?[e.msg.selfE164]:[],groupAllowFrom:l,storeAllowFrom:u,isSenderAllowed:e=>e.includes(`*`)?!0:e.map(e=>c(String(e))).filter(e=>!!e).includes(r),command:{useAccessGroups:t,allowTextCommands:!0,hasControlCommand:!0}}).commandAuthorized}function nn(e){let t=G({cfg:e.cfg,accountId:e.msg.accountId});return ke({dmScope:e.cfg.session?.dmScope,allowFrom:t.allowFrom,normalizeEntry:e=>c(e)})}async function rn(n){let r=n.msg.conversationId??n.msg.from,{storePath:i,envelopeOptions:a,previousTimestamp:o}=le({cfg:n.cfg,agentId:n.route.agentId,sessionKey:n.route.sessionKey}),s=en({cfg:n.cfg,msg:n.msg,agentId:n.route.agentId,previousTimestamp:o,envelope:a}),u=!1;if(n.msg.chatType===`group`){let e=n.groupHistory??n.groupHistories.get(n.groupHistoryKey)??[];e.length>0&&(s=L({entries:e.map(e=>({sender:e.sender,body:e.body,timestamp:e.timestamp})),currentMessage:s,excludeLast:!1,formatEntry:e=>j({channel:`WhatsApp`,from:r,timestamp:e.timestamp,body:e.body,chatType:`group`,senderLabel:e.sender,envelope:a})})),u=!(n.suppressGroupHistoryClear??!1)}let d=n.buildCombinedEchoKey({sessionKey:n.route.sessionKey,combinedBody:s});if(n.echoHas(d))return e(`Skipping auto-reply: detected echo for combined message`),n.echoForget(d),!1;Qt({cfg:n.cfg,msg:n.msg,agentId:n.route.agentId,sessionKey:n.route.sessionKey,conversationId:r,verbose:n.verbose,accountId:n.route.accountId,info:n.replyLogger.info.bind(n.replyLogger),warn:n.replyLogger.warn.bind(n.replyLogger)});let f=n.msg.id??J();n.replyLogger.info({connectionId:n.connectionId,correlationId:f,from:n.msg.chatType===`group`?r:n.msg.from,to:n.msg.to,body:$(s,240),mediaType:n.msg.mediaType??null,mediaPath:n.msg.mediaPath??null},`inbound web message`);let m=n.msg.chatType===`group`?r:n.msg.from,h=n.msg.mediaType?`, ${n.msg.mediaType}`:``;X.info(`Inbound message ${m} -> ${n.msg.to} (${n.msg.chatType}${h}, ${s.length} chars)`),t()&&X.debug(`Inbound body: ${$(s,400)}`);let g=n.msg.chatType===`group`?void 0:n.msg.senderE164?c(n.msg.senderE164):n.msg.from.includes(`@`)?l(n.msg.from):c(n.msg.from),_=n.maxMediaTextChunkLimit??Ce(n.cfg,`whatsapp`),v=we(n.cfg,`whatsapp`,n.route.accountId),y=Te({cfg:n.cfg,channel:`whatsapp`,accountId:n.route.accountId}),b=me(n.cfg,n.route.agentId),x=!1,S=!1,C=ae(n.msg.body,n.cfg)?await tn({cfg:n.cfg,msg:n.msg}):void 0,T=n.cfg.messages?.responsePrefix,{onModelSelected:D,...O}=te({cfg:n.cfg,agentId:n.route.agentId,channel:`whatsapp`,accountId:n.route.accountId}),re=n.msg.chatType!==`group`&&!!n.msg.selfE164&&c(n.msg.from)===c(n.msg.selfE164??``),ie=O.responsePrefix??(T===void 0&&re?ee(n.cfg,n.route.agentId):void 0),k=n.msg.chatType===`group`?(n.groupHistory??n.groupHistories.get(n.groupHistoryKey)??[]).map(e=>({sender:e.sender,body:e.body,timestamp:e.timestamp})):void 0,A=ne({Body:s,BodyForAgent:n.msg.body,InboundHistory:k,RawBody:n.msg.body,CommandBody:n.msg.body,From:n.msg.from,To:n.msg.to,SessionKey:n.route.sessionKey,AccountId:n.route.accountId,MessageSid:n.msg.id,ReplyToId:n.msg.replyToId,ReplyToBody:n.msg.replyToBody,ReplyToSender:n.msg.replyToSender,MediaPath:n.msg.mediaPath,MediaUrl:n.msg.mediaUrl,MediaType:n.msg.mediaType,ChatType:n.msg.chatType,ConversationLabel:n.msg.chatType===`group`?r:n.msg.from,GroupSubject:n.msg.groupSubject,GroupMembers:Vt({participants:n.msg.groupParticipants,roster:n.groupMemberNames.get(n.groupHistoryKey),fallbackE164:n.msg.senderE164}),SenderName:n.msg.senderName,SenderId:n.msg.senderJid?.trim()||n.msg.senderE164,SenderE164:n.msg.senderE164,CommandAuthorized:C,WasMentioned:n.msg.wasMentioned,...n.msg.location?be(n.msg.location):{},Provider:`whatsapp`,Surface:`whatsapp`,OriginatingChannel:`whatsapp`,OriginatingTo:n.msg.from}),M=nn({cfg:n.cfg,msg:n.msg}),N=!M||M===g,P=E({route:n.route,sessionKey:n.route.sessionKey});g&&P===n.route.mainSessionKey&&N?qt({cfg:n.cfg,backgroundTasks:n.backgroundTasks,storeAgentId:n.route.agentId,sessionKey:n.route.mainSessionKey,channel:`whatsapp`,to:g,accountId:n.route.accountId,ctx:A,warn:n.replyLogger.warn.bind(n.replyLogger)}):g&&P===n.route.mainSessionKey&&M&&e(`Skipping main-session last route update for ${g} (pinned owner ${M})`);let F=p({storePath:i,sessionKey:n.route.sessionKey,ctx:A}).catch(e=>{n.replyLogger.warn({error:q(e),storePath:i,sessionKey:n.route.sessionKey},`failed updating session meta`)});Kt(n.backgroundTasks,F);let{queuedFinal:I}=await w({ctx:A,cfg:n.cfg,replyResolver:n.replyResolver,dispatcherOptions:{...O,responsePrefix:ie,onHeartbeatStrip:()=>{x||(x=!0,e(`Stripped stray HEARTBEAT_OK token from web reply`))},deliver:async(e,i)=>{if(i.kind!==`final`)return;await Zt({replyResult:e,msg:n.msg,mediaLocalRoots:b,maxMediaBytes:n.maxMediaBytes,textLimit:_,chunkMode:v,replyLogger:n.replyLogger,connectionId:n.connectionId,skipLog:!1,tableMode:y}),S=!0;let a=e.text?!0:void 0;n.rememberSentText(e.text,{combinedBody:s,combinedBodySessionKey:n.route.sessionKey,logVerboseMessage:a});let o=n.msg.chatType===`group`?r:n.msg.from??`unknown`,c=!!(e.mediaUrl||e.mediaUrls?.length);if(Z.info(`Auto-replied to ${o}${c?` (media)`:``}`),t()){let t=e.text==null?`<media>`:$(e.text,400);Z.debug(`Reply body: ${t}${c?` (media)`:``}`)}},onError:(e,t)=>{let i=t.kind===`tool`?`tool update`:t.kind===`block`?`block update`:`auto-reply`;Z.error(`Failed sending web ${i} to ${n.msg.from??r}: ${q(e)}`)},onReplyStart:n.msg.sendComposing},replyOptions:{disableBlockStreaming:!0,onModelSelected:D}});return I?(u&&n.groupHistories.set(n.groupHistoryKey,[]),S):(u&&n.groupHistories.set(n.groupHistoryKey,[]),e(`Skipping auto-reply: silent token or no text/media returned from resolver`),!1)}function an(t){let n=async(e,n,r,i)=>rn({cfg:t.cfg,msg:e,route:n,groupHistoryKey:r,groupHistories:t.groupHistories,groupMemberNames:t.groupMemberNames,connectionId:t.connectionId,verbose:t.verbose,maxMediaBytes:t.maxMediaBytes,replyResolver:t.replyResolver,replyLogger:t.replyLogger,backgroundTasks:t.backgroundTasks,rememberSentText:t.echoTracker.rememberText,echoHas:t.echoTracker.has,echoForget:t.echoTracker.forget,buildCombinedEchoKey:t.echoTracker.buildCombinedKey,groupHistory:i?.groupHistory,suppressGroupHistoryClear:i?.suppressGroupHistoryClear});return async r=>{let i=r.conversationId??r.from,a=Jt(r),o=O({cfg:_(),channel:`whatsapp`,accountId:r.accountId,peer:{kind:r.chatType===`group`?`group`:`direct`,id:a}}),s=r.chatType===`group`?B({channel:`whatsapp`,accountId:o.accountId,peerKind:`group`,peerId:a}):o.sessionKey;if(r.from===r.to&&e(`📱 Same-phone mode detected (from === to: ${r.from})`),t.echoTracker.has(r.body)){e(`Skipping auto-reply: detected echo (message matches recently sent text)`),t.echoTracker.forget(r.body);return}if(r.chatType===`group`){let n={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:t.cfg,backgroundTasks:t.backgroundTasks,storeAgentId:o.agentId,sessionKey:o.sessionKey,channel:`whatsapp`,to:i,accountId:o.accountId,ctx:n,warn:t.replyLogger.warn.bind(t.replyLogger)}),!Gt({cfg:t.cfg,msg:r,conversationId:i,groupHistoryKey:s,agentId:o.agentId,sessionKey:o.sessionKey,baseMentionConfig:t.baseMentionConfig,authDir:t.account.authDir,groupHistories:t.groupHistories,groupHistoryLimit:t.groupHistoryLimit,groupMemberNames:t.groupMemberNames,logVerbose:e,replyLogger:t.replyLogger}).shouldProcess)return}else !r.senderE164&&a&&a.startsWith(`+`)&&(r.senderE164=c(a)??r.senderE164);await Pt({cfg:t.cfg,msg:r,peerId:a,route:o,groupHistoryKey:s,groupHistories:t.groupHistories,processMessage:n})||await n(r,o,s)}}function on(e){return e===440}async function sn(t,i=Et,a=!0,o=oe,s=r,c,l={}){let u=J(),d=n({module:`web-auto-reply`,runId:u}),f=n({module:`web-heartbeat`,runId:u}),p=n({module:`web-reconnect`,runId:u}),m={running:!0,connected:!1,reconnectAttempts:0,lastConnectedAt:null,lastDisconnect:null,lastMessageAt:null,lastEventAt:null,lastError:null},h=()=>{l.statusSink?.({...m,lastDisconnect:m.lastDisconnect?{...m.lastDisconnect}:null})};h();let g=_(),v=G({cfg:g,accountId:l.accountId}),y={...g,channels:{...g.channels,whatsapp:{...g.channels?.whatsapp,ackReaction:v.ackReaction,messagePrefix:v.messagePrefix,allowFrom:v.allowFrom,groupAllowFrom:v.groupAllowFrom,groupPolicy:v.groupPolicy,textChunkLimit:v.textChunkLimit,chunkMode:v.chunkMode,mediaMaxMb:v.mediaMaxMb,blockStreaming:v.blockStreaming,groups:v.groups}}},ee=W(v),C=qe(y,l.heartbeatSeconds),w=Je(y,l.reconnect),T=Dt(y),E=y.channels?.whatsapp?.accounts?.[l.accountId??``]?.historyLimit??y.channels?.whatsapp?.historyLimit??y.messages?.groupChat?.historyLimit??50,te=new Map,ne=new Map,re=Mt({maxItems:100,logVerbose:e}),ie=l.sleep??((e,t)=>k(e,t??c)),ae=()=>c?.aborted===!0,A=c&&new Promise(e=>c.addEventListener(`abort`,()=>e(`aborted`),{once:!0})),j=process.getMaxListeners?.()??10;process.setMaxListeners&&j<50&&process.setMaxListeners(50);let M=!1,N=()=>{M=!0};process.once(`SIGINT`,N);let F=0;for(;!ae();){let n=J(),r=Date.now(),u=null,g=null,_=null,k=0,j=null,I=l.messageTimeoutMs??1800*1e3,se=l.watchdogCheckMs??60*1e3,L=new Set,ce=an({cfg:y,verbose:t,connectionId:n,maxMediaBytes:ee,groupHistoryLimit:E,groupHistories:te,groupMemberNames:ne,echoTracker:re,backgroundTasks:L,replyResolver:o??oe,replyLogger:d,baseMentionConfig:T,account:v}),le=S({cfg:y,channel:`whatsapp`}),R=await(i??Et)({verbose:t,accountId:v.accountId,authDir:v.authDir,mediaMaxMb:v.mediaMaxMb,sendReadReceipts:v.sendReadReceipts,debounceMs:le,shouldDebounce:e=>e.mediaPath||e.mediaType||e.location||e.replyToId||e.replyToBody?!1:!b(e.body,y),onMessage:async e=>{k+=1,_=Date.now(),m.lastMessageAt=_,m.lastEventAt=_,h(),await ce(e)}});Object.assign(m,x()),m.lastError=null,h();let{e164:z}=de(v.authDir),B=O({cfg:y,channel:`whatsapp`,accountId:v.accountId});D(`WhatsApp gateway connected${z?` as ${z}`:``}.`,{sessionKey:B.sessionKey}),Ne(v.accountId,R),j=pe(e=>{if(!Yt(e))return!1;let t=q(e);return p.warn({connectionId:n,error:t},`web reconnect: unhandled rejection from WhatsApp socket; forcing reconnect`),R.signalClose?.({status:499,isLoggedOut:!1,error:e}),!0});let V=async()=>{Ne(v.accountId,null),j&&=(j(),null),u&&clearInterval(u),g&&clearInterval(g),L.size>0&&(await Promise.allSettled(L),L.clear());try{await R.close()}catch(t){e(`Socket close failed: ${q(t)}`)}};if(a&&(u=setInterval(()=>{let e=fe(v.authDir),t=_?Math.floor((Date.now()-_)/6e4):null,i={connectionId:n,reconnectAttempts:F,messagesHandled:k,lastMessageAt:_,authAgeMs:e,uptimeMs:Date.now()-r,...t!==null&&t>30?{minutesSinceLastMessage:t}:{}};t&&t>30?f.warn(i,`⚠️ web gateway heartbeat - no messages in 30+ minutes`):f.info(i,`web gateway heartbeat`)},C*1e3),g=setInterval(()=>{if(!_)return;let t=Date.now()-_;if(t<=I)return;let r=Math.floor(t/6e4);f.warn({connectionId:n,minutesSinceLastMessage:r,lastMessageAt:new Date(_),messagesHandled:k},`Message timeout detected - forcing reconnect`),Ye.warn(`No messages received in ${r}m - restarting connection`),V().catch(t=>{e(`Close listener failed: ${q(t)}`)}),R.signalClose?.({status:499,isLoggedOut:!1,error:`watchdog-timeout`})},se)),Y.info(`Listening for personal WhatsApp inbound messages.`),(process.stdout.isTTY||process.stderr.isTTY)&&Y.raw(`Ctrl+C to stop.`),!a){await V(),process.removeListener(`SIGINT`,N);return}let H=await Promise.race([R.onClose?.catch(e=>(p.error({error:q(e)},`listener.onClose rejected`),{status:500,isLoggedOut:!1,error:e}))??Xe(),A??Xe()]);if(Date.now()-r>C*1e3&&(F=0),m.reconnectAttempts=F,h(),ae()||M||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(m.connected=!1,m.lastEventAt=Date.now(),m.lastDisconnect={at:m.lastEventAt,status:typeof U==`number`?U:void 0,error:G,loggedOut:!!W},m.lastError=G,m.reconnectAttempts=F,h(),p.info({connectionId:n,status:U,loggedOut:W,reconnectAttempts:F,error:G},`web reconnect: connection closed`),D(`WhatsApp gateway disconnected (status ${U??`unknown`})`,{sessionKey:B.sessionKey}),W){s.error(`WhatsApp session logged out. Run \`${ue(`openclaw channels login --channel web`)}\` to relink.`),await V();break}if(on(U)){p.warn({connectionId:n,status:U,error:G},`web reconnect: non-retryable close status; stopping monitor`),s.error(`WhatsApp Web connection closed (status ${U}: session conflict). Resolve conflicting WhatsApp Web sessions, then relink with \`${ue(`openclaw channels login --channel web`)}\`. Stopping web monitoring.`),await V();break}if(F+=1,m.reconnectAttempts=F,h(),w.maxAttempts>0&&F>=w.maxAttempts){p.warn({connectionId:n,status:U,reconnectAttempts:F,maxAttempts:w.maxAttempts},`web reconnect: max attempts reached; continuing in degraded mode`),s.error(`WhatsApp Web reconnect: max attempts reached (${F}/${w.maxAttempts}). Stopping web monitoring.`),await V();break}let K=P(w,F);p.info({connectionId:n,status:U,reconnectAttempts:F,maxAttempts:w.maxAttempts||`unlimited`,delayMs:K},`web reconnect: scheduling retry`),s.error(`WhatsApp Web connection closed (status ${U}). Retry ${F}/${w.maxAttempts||`∞`} in ${Me(K)}… (${G})`),await V();try{await ie(K,c)}catch{break}}m.running=!1,m.connected=!1,m.lastEventAt=Date.now(),h(),process.removeListener(`SIGINT`,N)}export{Et as n,Xe as r,sn as t};
5
+ `);n&&(Z.warn(`Media skipped; sent text-only to ${i.from}`),await i.reply(n))}}}for(let e of _)await i.reply(e)}function Qt(t){if(!t.msg.id)return;let n=t.cfg.channels?.whatsapp?.ackReaction,r=(n?.emoji??``).trim(),i=n?.direct??!0,a=n?.group??`mentions`,o=t.msg.conversationId??t.msg.from,s=t.msg.chatType===`group`?Rt({cfg:t.cfg,agentId:t.agentId,sessionKey:t.sessionKey,conversationId:o}):null;T({emoji:r,isDirect:t.msg.chatType===`direct`,isGroup:t.msg.chatType===`group`,directEnabled:i,groupMode:a,wasMentioned:t.msg.wasMentioned===!0,groupActivated:s===`always`})&&(t.info({chatId:t.msg.chatId,messageId:t.msg.id,emoji:r},`sending ack reaction`),Fe(t.msg.chatId,t.msg.id,r,{verbose:t.verbose,fromMe:!1,participant:t.msg.senderJid,accountId:t.accountId}).catch(n=>{t.warn({error:q(n),chatId:t.msg.chatId,messageId:t.msg.id},`failed to send ack reaction`),e(`WhatsApp ack reaction failed for chat ${t.msg.chatId}: ${q(n)}`)}))}function $t(e){return e.replyToBody?`[Replying to ${e.replyToSender??`unknown sender`}${e.replyToId?` id:${e.replyToId}`:``}]\n${e.replyToBody}\n[/Replying]`:null}function en(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=$t(n),l=`${s}${n.body}${c?`\n\n${c}`:``}`;return j({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 tn(e){let t=e.cfg.commands?.useAccessGroups!==!1;if(!t)return!0;let n=e.msg.chatType===`group`,r=c(n?e.msg.senderE164??``:e.msg.senderE164??e.msg.from??``);if(!r)return!1;let i=G({cfg:e.cfg,accountId:e.msg.accountId}),a=i.dmPolicy??`pairing`,o=i.groupPolicy??`allowlist`,s=i.allowFrom??[],l=i.groupAllowFrom??(s.length>0?s:void 0),u=n?[]:await De({provider:`whatsapp`,accountId:e.msg.accountId,dmPolicy:a});return Ee({isGroup:n,dmPolicy:a,groupPolicy:o,allowFrom:s.length>0?s:e.msg.selfE164?[e.msg.selfE164]:[],groupAllowFrom:l,storeAllowFrom:u,isSenderAllowed:e=>e.includes(`*`)?!0:e.map(e=>c(String(e))).filter(e=>!!e).includes(r),command:{useAccessGroups:t,allowTextCommands:!0,hasControlCommand:!0}}).commandAuthorized}function nn(e){let t=G({cfg:e.cfg,accountId:e.msg.accountId});return ke({dmScope:e.cfg.session?.dmScope,allowFrom:t.allowFrom,normalizeEntry:e=>c(e)})}async function rn(n){let r=n.msg.conversationId??n.msg.from,{storePath:i,envelopeOptions:a,previousTimestamp:o}=le({cfg:n.cfg,agentId:n.route.agentId,sessionKey:n.route.sessionKey}),s=en({cfg:n.cfg,msg:n.msg,agentId:n.route.agentId,previousTimestamp:o,envelope:a}),u=!1;if(n.msg.chatType===`group`){let e=n.groupHistory??n.groupHistories.get(n.groupHistoryKey)??[];e.length>0&&(s=L({entries:e.map(e=>({sender:e.sender,body:e.body,timestamp:e.timestamp})),currentMessage:s,excludeLast:!1,formatEntry:e=>j({channel:`WhatsApp`,from:r,timestamp:e.timestamp,body:e.body,chatType:`group`,senderLabel:e.sender,envelope:a})})),u=!(n.suppressGroupHistoryClear??!1)}let d=n.buildCombinedEchoKey({sessionKey:n.route.sessionKey,combinedBody:s});if(n.echoHas(d))return e(`Skipping auto-reply: detected echo for combined message`),n.echoForget(d),!1;Qt({cfg:n.cfg,msg:n.msg,agentId:n.route.agentId,sessionKey:n.route.sessionKey,conversationId:r,verbose:n.verbose,accountId:n.route.accountId,info:n.replyLogger.info.bind(n.replyLogger),warn:n.replyLogger.warn.bind(n.replyLogger)});let f=n.msg.id??J();n.replyLogger.info({connectionId:n.connectionId,correlationId:f,from:n.msg.chatType===`group`?r:n.msg.from,to:n.msg.to,body:$(s,240),mediaType:n.msg.mediaType??null,mediaPath:n.msg.mediaPath??null},`inbound web message`);let m=n.msg.chatType===`group`?r:n.msg.from,h=n.msg.mediaType?`, ${n.msg.mediaType}`:``;X.info(`Inbound message ${m} -> ${n.msg.to} (${n.msg.chatType}${h}, ${s.length} chars)`),t()&&X.debug(`Inbound body: ${$(s,400)}`);let g=n.msg.chatType===`group`?void 0:n.msg.senderE164?c(n.msg.senderE164):n.msg.from.includes(`@`)?l(n.msg.from):c(n.msg.from),_=n.maxMediaTextChunkLimit??Ce(n.cfg,`whatsapp`),v=we(n.cfg,`whatsapp`,n.route.accountId),y=Te({cfg:n.cfg,channel:`whatsapp`,accountId:n.route.accountId}),b=me(n.cfg,n.route.agentId),x=!1,S=!1,C=ae(n.msg.body,n.cfg)?await tn({cfg:n.cfg,msg:n.msg}):void 0,T=n.cfg.messages?.responsePrefix,{onModelSelected:D,...O}=te({cfg:n.cfg,agentId:n.route.agentId,channel:`whatsapp`,accountId:n.route.accountId}),re=n.msg.chatType!==`group`&&!!n.msg.selfE164&&c(n.msg.from)===c(n.msg.selfE164??``),ie=O.responsePrefix??(T===void 0&&re?ee(n.cfg,n.route.agentId):void 0),k=n.msg.chatType===`group`?(n.groupHistory??n.groupHistories.get(n.groupHistoryKey)??[]).map(e=>({sender:e.sender,body:e.body,timestamp:e.timestamp})):void 0,A=ne({Body:s,BodyForAgent:n.msg.body,InboundHistory:k,RawBody:n.msg.body,CommandBody:n.msg.body,From:n.msg.from,To:n.msg.to,SessionKey:n.route.sessionKey,AccountId:n.route.accountId,MessageSid:n.msg.id,ReplyToId:n.msg.replyToId,ReplyToBody:n.msg.replyToBody,ReplyToSender:n.msg.replyToSender,MediaPath:n.msg.mediaPath,MediaUrl:n.msg.mediaUrl,MediaType:n.msg.mediaType,ChatType:n.msg.chatType,ConversationLabel:n.msg.chatType===`group`?r:n.msg.from,GroupSubject:n.msg.groupSubject,GroupMembers:Vt({participants:n.msg.groupParticipants,roster:n.groupMemberNames.get(n.groupHistoryKey),fallbackE164:n.msg.senderE164}),SenderName:n.msg.senderName,SenderId:n.msg.senderJid?.trim()||n.msg.senderE164,SenderE164:n.msg.senderE164,CommandAuthorized:C,WasMentioned:n.msg.wasMentioned,...n.msg.location?be(n.msg.location):{},Provider:`whatsapp`,Surface:`whatsapp`,OriginatingChannel:`whatsapp`,OriginatingTo:n.msg.from}),M=nn({cfg:n.cfg,msg:n.msg}),N=!M||M===g,P=E({route:n.route,sessionKey:n.route.sessionKey});g&&P===n.route.mainSessionKey&&N?qt({cfg:n.cfg,backgroundTasks:n.backgroundTasks,storeAgentId:n.route.agentId,sessionKey:n.route.mainSessionKey,channel:`whatsapp`,to:g,accountId:n.route.accountId,ctx:A,warn:n.replyLogger.warn.bind(n.replyLogger)}):g&&P===n.route.mainSessionKey&&M&&e(`Skipping main-session last route update for ${g} (pinned owner ${M})`);let F=p({storePath:i,sessionKey:n.route.sessionKey,ctx:A}).catch(e=>{n.replyLogger.warn({error:q(e),storePath:i,sessionKey:n.route.sessionKey},`failed updating session meta`)});Kt(n.backgroundTasks,F);let{queuedFinal:I}=await w({ctx:A,cfg:n.cfg,replyResolver:n.replyResolver,dispatcherOptions:{...O,responsePrefix:ie,onHeartbeatStrip:()=>{x||(x=!0,e(`Stripped stray HEARTBEAT_OK token from web reply`))},deliver:async(e,i)=>{if(i.kind!==`final`)return;await Zt({replyResult:e,msg:n.msg,mediaLocalRoots:b,maxMediaBytes:n.maxMediaBytes,textLimit:_,chunkMode:v,replyLogger:n.replyLogger,connectionId:n.connectionId,skipLog:!1,tableMode:y}),S=!0;let a=e.text?!0:void 0;n.rememberSentText(e.text,{combinedBody:s,combinedBodySessionKey:n.route.sessionKey,logVerboseMessage:a});let o=n.msg.chatType===`group`?r:n.msg.from??`unknown`,c=!!(e.mediaUrl||e.mediaUrls?.length);if(Z.info(`Auto-replied to ${o}${c?` (media)`:``}`),t()){let t=e.text==null?`<media>`:$(e.text,400);Z.debug(`Reply body: ${t}${c?` (media)`:``}`)}},onError:(e,t)=>{let i=t.kind===`tool`?`tool update`:t.kind===`block`?`block update`:`auto-reply`;Z.error(`Failed sending web ${i} to ${n.msg.from??r}: ${q(e)}`)},onReplyStart:n.msg.sendComposing},replyOptions:{disableBlockStreaming:!0,onModelSelected:D}});return I?(u&&n.groupHistories.set(n.groupHistoryKey,[]),S):(u&&n.groupHistories.set(n.groupHistoryKey,[]),e(`Skipping auto-reply: silent token or no text/media returned from resolver`),!1)}function an(t){let n=async(e,n,r,i)=>rn({cfg:t.cfg,msg:e,route:n,groupHistoryKey:r,groupHistories:t.groupHistories,groupMemberNames:t.groupMemberNames,connectionId:t.connectionId,verbose:t.verbose,maxMediaBytes:t.maxMediaBytes,replyResolver:t.replyResolver,replyLogger:t.replyLogger,backgroundTasks:t.backgroundTasks,rememberSentText:t.echoTracker.rememberText,echoHas:t.echoTracker.has,echoForget:t.echoTracker.forget,buildCombinedEchoKey:t.echoTracker.buildCombinedKey,groupHistory:i?.groupHistory,suppressGroupHistoryClear:i?.suppressGroupHistoryClear});return async r=>{let i=r.conversationId??r.from,a=Jt(r),o=O({cfg:_(),channel:`whatsapp`,accountId:r.accountId,peer:{kind:r.chatType===`group`?`group`:`direct`,id:a}}),s=r.chatType===`group`?B({channel:`whatsapp`,accountId:o.accountId,peerKind:`group`,peerId:a}):o.sessionKey;if(r.from===r.to&&e(`📱 Same-phone mode detected (from === to: ${r.from})`),t.echoTracker.has(r.body)){e(`Skipping auto-reply: detected echo (message matches recently sent text)`),t.echoTracker.forget(r.body);return}if(r.chatType===`group`){let n={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:t.cfg,backgroundTasks:t.backgroundTasks,storeAgentId:o.agentId,sessionKey:o.sessionKey,channel:`whatsapp`,to:i,accountId:o.accountId,ctx:n,warn:t.replyLogger.warn.bind(t.replyLogger)}),!Gt({cfg:t.cfg,msg:r,conversationId:i,groupHistoryKey:s,agentId:o.agentId,sessionKey:o.sessionKey,baseMentionConfig:t.baseMentionConfig,authDir:t.account.authDir,groupHistories:t.groupHistories,groupHistoryLimit:t.groupHistoryLimit,groupMemberNames:t.groupMemberNames,logVerbose:e,replyLogger:t.replyLogger}).shouldProcess)return}else !r.senderE164&&a&&a.startsWith(`+`)&&(r.senderE164=c(a)??r.senderE164);await Pt({cfg:t.cfg,msg:r,peerId:a,route:o,groupHistoryKey:s,groupHistories:t.groupHistories,processMessage:n})||await n(r,o,s)}}function on(e){return e===440}async function sn(t,i=Et,a=!0,o=oe,s=r,c,l={}){let u=J(),d=n({module:`web-auto-reply`,runId:u}),f=n({module:`web-heartbeat`,runId:u}),p=n({module:`web-reconnect`,runId:u}),m={running:!0,connected:!1,reconnectAttempts:0,lastConnectedAt:null,lastDisconnect:null,lastMessageAt:null,lastEventAt:null,lastError:null},h=()=>{l.statusSink?.({...m,lastDisconnect:m.lastDisconnect?{...m.lastDisconnect}:null})};h();let g=_(),v=G({cfg:g,accountId:l.accountId}),y={...g,channels:{...g.channels,whatsapp:{...g.channels?.whatsapp,ackReaction:v.ackReaction,messagePrefix:v.messagePrefix,allowFrom:v.allowFrom,groupAllowFrom:v.groupAllowFrom,groupPolicy:v.groupPolicy,textChunkLimit:v.textChunkLimit,chunkMode:v.chunkMode,mediaMaxMb:v.mediaMaxMb,blockStreaming:v.blockStreaming,groups:v.groups}}},ee=W(v),C=qe(y,l.heartbeatSeconds),w=Je(y,l.reconnect),T=Dt(y),E=y.channels?.whatsapp?.accounts?.[l.accountId??``]?.historyLimit??y.channels?.whatsapp?.historyLimit??y.messages?.groupChat?.historyLimit??50,te=new Map,ne=new Map,re=Mt({maxItems:100,logVerbose:e}),ie=l.sleep??((e,t)=>k(e,t??c)),ae=()=>c?.aborted===!0,A=c&&new Promise(e=>c.addEventListener(`abort`,()=>e(`aborted`),{once:!0})),j=process.getMaxListeners?.()??10;process.setMaxListeners&&j<50&&process.setMaxListeners(50);let M=!1,N=()=>{M=!0};process.once(`SIGINT`,N);let F=0;for(;!ae();){let n=J(),r=Date.now(),u=null,g=null,_=null,k=0,j=null,I=l.messageTimeoutMs??1800*1e3,se=l.watchdogCheckMs??60*1e3,L=new Set,ce=an({cfg:y,verbose:t,connectionId:n,maxMediaBytes:ee,groupHistoryLimit:E,groupHistories:te,groupMemberNames:ne,echoTracker:re,backgroundTasks:L,replyResolver:o??oe,replyLogger:d,baseMentionConfig:T,account:v}),le=S({cfg:y,channel:`whatsapp`}),R=await(i??Et)({verbose:t,accountId:v.accountId,authDir:v.authDir,mediaMaxMb:v.mediaMaxMb,sendReadReceipts:v.sendReadReceipts,debounceMs:le,shouldDebounce:e=>e.mediaPath||e.mediaType||e.location||e.replyToId||e.replyToBody?!1:!b(e.body,y),onMessage:async e=>{k+=1,_=Date.now(),m.lastMessageAt=_,m.lastEventAt=_,h(),await ce(e)}});Object.assign(m,x()),m.lastError=null,h();let{e164:z}=de(v.authDir),B=O({cfg:y,channel:`whatsapp`,accountId:v.accountId});D(`WhatsApp gateway connected${z?` as ${z}`:``}.`,{sessionKey:B.sessionKey}),Ne(v.accountId,R),j=pe(e=>{if(!Yt(e))return!1;let t=q(e);return p.warn({connectionId:n,error:t},`web reconnect: unhandled rejection from WhatsApp socket; forcing reconnect`),R.signalClose?.({status:499,isLoggedOut:!1,error:e}),!0});let V=async()=>{Ne(v.accountId,null),j&&=(j(),null),u&&clearInterval(u),g&&clearInterval(g),L.size>0&&(await Promise.allSettled(L),L.clear());try{await R.close()}catch(t){e(`Socket close failed: ${q(t)}`)}};if(a&&(u=setInterval(()=>{let e=fe(v.authDir),t=_?Math.floor((Date.now()-_)/6e4):null,i={connectionId:n,reconnectAttempts:F,messagesHandled:k,lastMessageAt:_,authAgeMs:e,uptimeMs:Date.now()-r,...t!==null&&t>30?{minutesSinceLastMessage:t}:{}};t&&t>30?f.warn(i,`⚠️ web gateway heartbeat - no messages in 30+ minutes`):f.info(i,`web gateway heartbeat`)},C*1e3),g=setInterval(()=>{if(!_)return;let t=Date.now()-_;if(t<=I)return;let r=Math.floor(t/6e4);f.warn({connectionId:n,minutesSinceLastMessage:r,lastMessageAt:new Date(_),messagesHandled:k},`Message timeout detected - forcing reconnect`),Ye.warn(`No messages received in ${r}m - restarting connection`),V().catch(t=>{e(`Close listener failed: ${q(t)}`)}),R.signalClose?.({status:499,isLoggedOut:!1,error:`watchdog-timeout`})},se)),Y.info(`Listening for personal WhatsApp inbound messages.`),(process.stdout.isTTY||process.stderr.isTTY)&&Y.raw(`Ctrl+C to stop.`),!a){await V(),process.removeListener(`SIGINT`,N);return}let H=await Promise.race([R.onClose?.catch(e=>(p.error({error:q(e)},`listener.onClose rejected`),{status:500,isLoggedOut:!1,error:e}))??Xe(),A??Xe()]);if(Date.now()-r>C*1e3&&(F=0),m.reconnectAttempts=F,h(),ae()||M||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(m.connected=!1,m.lastEventAt=Date.now(),m.lastDisconnect={at:m.lastEventAt,status:typeof U==`number`?U:void 0,error:G,loggedOut:!!W},m.lastError=G,m.reconnectAttempts=F,h(),p.info({connectionId:n,status:U,loggedOut:W,reconnectAttempts:F,error:G},`web reconnect: connection closed`),D(`WhatsApp gateway disconnected (status ${U??`unknown`})`,{sessionKey:B.sessionKey}),W){s.error(`WhatsApp session logged out. Run \`${ue(`openclaw channels login --channel web`)}\` to relink.`),await V();break}if(on(U)){p.warn({connectionId:n,status:U,error:G},`web reconnect: non-retryable close status; stopping monitor`),s.error(`WhatsApp Web connection closed (status ${U}: session conflict). Resolve conflicting WhatsApp Web sessions, then relink with \`${ue(`openclaw channels login --channel web`)}\`. Stopping web monitoring.`),await V();break}if(F+=1,m.reconnectAttempts=F,h(),w.maxAttempts>0&&F>=w.maxAttempts){p.warn({connectionId:n,status:U,reconnectAttempts:F,maxAttempts:w.maxAttempts},`web reconnect: max attempts reached; continuing in degraded mode`),s.error(`WhatsApp Web reconnect: max attempts reached (${F}/${w.maxAttempts}). Stopping web monitoring.`),await V();break}let K=P(w,F);p.info({connectionId:n,status:U,reconnectAttempts:F,maxAttempts:w.maxAttempts||`unlimited`,delayMs:K},`web reconnect: scheduling retry`),s.error(`WhatsApp Web connection closed (status ${U}). Retry ${F}/${w.maxAttempts||`∞`} in ${Me(K)}… (${G})`),await V();try{await ie(K,c)}catch{break}}m.running=!1,m.connected=!1,m.lastEventAt=Date.now(),h(),process.removeListener(`SIGINT`,N)}export{Et as n,Xe as r,sn as t};
@@ -4,4 +4,4 @@ import{$ as e,J as t,R as n,et as r,it as i,nt as a,o,rt as s,s as c,t as l,tt a
4
4
  `),o=[],s=``,c=0,l=null,u=()=>{if(!s)return;let e=Ze(s,l);e.trim().length&&o.push(e),s=``,c=0,l&&(s=l.openLine,c=1)};for(let e of a){let t=Ye(e),i=l!==null,a=l;t&&(l?l.markerChar===t.markerChar&&t.markerLen>=l.markerLen&&(a=null):a=t);let o=a?Xe(a).length+1:0,d=a?1:0,f=n-o,p=r-d,m=f>0?f:n,h=p>0?p:r,g=s.length>0?s.length+1:0,_=Qe(e,Math.max(1,m-g),{preserveWhitespace:i});for(let e=0;e<_.length;e++){let t=_[e],n=e>0,r=`${n?``:s.length>0?`
5
5
  `:``}${t}`,i=s.length+r.length,a=c+(n?0:1);(i>m||a>h)&&s.length>0&&u(),s.length>0?(s+=r,n||(c+=1)):(s=t,c=1)}l=a}if(s.length){let e=Ze(s,l);e.trim().length&&o.push(e)}return tt(e,o)}function et(e,t){if((t.chunkMode??`length`)!==`newline`)return $e(e,t);let n=ue(e,Math.max(1,Math.floor(t.maxChars??Ke)),`newline`),r=[];for(let e of n){let n=$e(e,t);if(!n.length&&e){r.push(e);continue}r.push(...n)}return r}function tt(e,t){if(t.length<=1||!(e.startsWith(`Reasoning:
6
6
  _`)&&e.trimEnd().endsWith(`_`)))return t;let n=[...t];for(let e=0;e<n.length;e++){let t=e===n.length-1,r=n[e];if(r.trimEnd().endsWith(`_`)||(n[e]=`${r}_`),t)break;let i=n[e+1],a=i.length-i.trimStart().length,o=i.slice(0,a),s=i.slice(a);s.startsWith(`_`)||(n[e+1]=`${o}_${s}`)}return n}function nt(e){let t=i(e.fallbackToken,`channels.discord.token`);if(!t)throw Error(`Discord bot token missing for account "${e.accountId}" (set discord.accounts.${e.accountId}.token or DISCORD_BOT_TOKEN for default).`);return t}function rt(e,t){return t??new De(e)}function it(e){let t=d(e.accountId),n=a(e.cfg,t),r=e.cfg.channels?.discord?.enabled!==!1,i=n.enabled!==!1;return{accountId:t,enabled:r&&i,name:n.name?.trim()||void 0,token:``,tokenSource:`none`,config:n}}function at(e,t){let n=e.cfg??t??l(),r=i(e.token,`channels.discord.token`),a=r?it({cfg:n,accountId:e.accountId}):s({cfg:n,accountId:e.accountId}),o=r??nt({accountId:a.accountId,fallbackToken:a.token});return{token:o,rest:rt(o,e.rest),account:a}}function P(e,t){let{token:n,rest:r,account:i}=at(e,e.cfg??t);return{token:n,rest:r,request:x({retry:e.retry,configRetry:i.config.retry,verbose:e.verbose})}}function F(e){return at(e,e.cfg).rest}const ot=Object.entries(E).filter(([,e])=>typeof e==`bigint`),st=ot.reduce((e,[,t])=>e|t,0n),ct=E.Administrator;function I(e,t){return t?e|BigInt(t):e}function lt(e,t){return t?e&~BigInt(t):e}function ut(e){return ot.filter(([,t])=>(e&t)===t).map(([e])=>e).toSorted()}function dt(e){return(e&ct)===ct}function ft(e,t){return(e&t)===t}function pt(e){return e===T.GuildNewsThread||e===T.GuildPublicThread||e===T.GuildPrivateThread}async function mt(e){let t=await e.get(D.user(`@me`));if(!t?.id)throw Error(`Failed to resolve bot user id`);return t.id}async function ht(e,t,n={}){let r=F(n);try{let[n,i]=await Promise.all([r.get(D.guild(e)),r.get(D.guildMember(e,t))]),a=new Map((n.roles??[]).map(e=>[e.id,e])),o=a.get(e),s=0n;o?.permissions&&(s=I(s,o.permissions));for(let e of i.roles??[]){let t=a.get(e);t?.permissions&&(s=I(s,t.permissions))}return s}catch{return null}}async function gt(e,t,n,r,i={}){let a=await ht(e,t,i);return a===null?!1:dt(a)?!0:r(a,n)}async function _t(e,t,n,r={}){return await gt(e,t,n,(e,t)=>t.some(t=>ft(e,t)),r)}async function vt(e,t={}){let n=F(t),r=await n.get(D.channel(e)),i=`type`in r?r.type:void 0,a=`guild_id`in r?r.guild_id:void 0;if(!a)return{channelId:e,permissions:[],raw:`0`,isDm:!0,channelType:i};let o=await mt(n),[s,c]=await Promise.all([n.get(D.guild(a)),n.get(D.guildMember(a,o))]),l=new Map((s.roles??[]).map(e=>[e.id,e])),u=l.get(a),d=0n;u?.permissions&&(d=I(d,u.permissions));for(let e of c.roles??[]){let t=l.get(e);t?.permissions&&(d=I(d,t.permissions))}if(dt(d))return{channelId:e,guildId:a,permissions:ut(st),raw:st.toString(),isDm:!1,channelType:i};let f=d,p=`permission_overwrites`in r?r.permission_overwrites??[]:[];for(let e of p)e.id===a&&(f=lt(f,e.deny??`0`),f=I(f,e.allow??`0`));for(let e of p)c.roles?.includes(e.id)&&(f=lt(f,e.deny??`0`),f=I(f,e.allow??`0`));for(let e of p)e.id===o&&(f=lt(f,e.deny??`0`),f=I(f,e.allow??`0`));return{channelId:e,guildId:a,permissions:ut(f),raw:f.toString(),isDm:!1,channelType:i}}var yt=class extends Error{constructor(e,t){super(e),this.name=`DiscordSendError`,t&&Object.assign(this,t)}toString(){return this.message}};const bt=/#\d{4}$/,xt=new Map;function St(e){return d(e??`default`)||`default`}function Ct(e){let t=String(e??``).trim();return/^\d+$/.test(t)?t:null}function wt(e){let t=e.trim();return!t||(t.startsWith(`@`)&&(t=t.slice(1).trim()),!t||/\s/.test(t))?null:t.toLowerCase()}function Tt(e){let t=St(e),n=xt.get(t);if(n)return n;let r=new Map;return xt.set(t,r),r}function Et(e,t,n){if(e.has(t)&&e.delete(t),e.set(t,n),e.size<=4e3)return;let r=e.keys().next();r.done||e.delete(r.value)}function Dt(e){let t=Ct(e.userId);if(!t)return;let n=Tt(e.accountId);for(let r of e.handles){if(typeof r!=`string`)continue;let e=wt(r);if(!e)continue;Et(n,e,t);let i=e.replace(bt,``);i&&i!==e&&Et(n,i,t)}}function Ot(e){let t=xt.get(St(e.accountId));if(!t)return;let n=wt(e.handle);if(!n)return;let r=t.get(n);if(r)return r;let i=n.replace(bt,``);if(!(!i||i===n))return t.get(i)}const kt={attempts:3,minDelayMs:500,maxDelayMs:3e4,jitter:.1};function At(e){let t=e.trim();if(!t.startsWith(`{`)||!t.endsWith(`}`))return null;try{let e=JSON.parse(t);if(e&&typeof e==`object`)return e}catch{return null}return null}function jt(e,t){let n=At(e),r=n&&typeof n.retry_after==`number`&&Number.isFinite(n.retry_after)?n.retry_after:void 0;if(r!==void 0)return r;let i=t.headers.get(`Retry-After`);if(!i)return;let a=Number(i);return Number.isFinite(a)?a:void 0}function Mt(e){if(!(e===void 0||!Number.isFinite(e)||e<0))return`${e<10?e.toFixed(1):Math.round(e).toString()}s`}function Nt(e){let t=e.trim();if(!t)return;let n=At(t);if(!n)return t.startsWith(`{`)&&t.endsWith(`}`)?`unknown error`:t;let r=typeof n.message==`string`&&n.message.trim()?n.message.trim():`unknown error`,i=Mt(typeof n.retry_after==`number`?n.retry_after:void 0);return i?`${r} (retry after ${i})`:r}var Pt=class extends Error{constructor(e,t,n){super(e),this.status=t,this.retryAfter=n}};async function Ft(e,t,n=fetch,r){let i=fe(n);if(!i)throw Error(`fetch is not available`);return c(async()=>{let n=await i(`https://discord.com/api/v10${e}`,{headers:{Authorization:`Bot ${t}`}});if(!n.ok){let t=await n.text().catch(()=>``),r=Nt(t),i=r?`: ${r}`:``,a=n.status===429?jt(t,n):void 0;throw new Pt(`Discord API ${e} failed (${n.status})${i}`,n.status,a)}return await n.json()},{...o(kt,r?.retry),label:r?.label??e,shouldRetry:e=>e instanceof Pt&&e.status===429,retryAfterMs:e=>e instanceof Pt&&typeof e.retryAfter==`number`?e.retryAfter*1e3:void 0})}function It(e){return e?.trim().toLowerCase()??``}function Lt(e){return e.bot?0:1}function Rt(e){let t=i(s({cfg:e.cfg,accountId:e.accountId}).token,`channels.discord.token`);return t?{token:t,query:It(e.query)}:null}async function zt(e){return(await Ft(`/users/@me/guilds`,e)).filter(e=>e.id&&e.name)}async function Bt(e){let t=Rt(e);if(!t)return[];let{token:n,query:r}=t;if(!r)return[];let i=await zt(n),a=[],o=typeof e.limit==`number`&&e.limit>0?e.limit:25;for(let t of i){let i=new URLSearchParams({query:r,limit:String(Math.min(o,100))}),s=await Ft(`/guilds/${t.id}/members/search?${i.toString()}`,n);for(let t of s){let n=t.user;if(!n?.id)continue;Dt({accountId:e.accountId,userId:n.id,handles:[n.username,n.global_name,t.nick,n.username?`@${n.username}`:null]});let r=t.nick?.trim()||n.global_name?.trim()||n.username?.trim();if(a.push({kind:`user`,id:`user:${n.id}`,name:r||void 0,handle:n.username?`@${n.username}`:void 0,rank:Lt(n),raw:t}),a.length>=o)return a}}return a}function L(e,t={}){let n=e.trim();if(!n)return;let r=We({raw:n,mentionPattern:/^<@!?(\d+)>$/,prefixes:[{prefix:`user:`,kind:`user`},{prefix:`channel:`,kind:`channel`},{prefix:`discord:`,kind:`user`}],atUserPattern:/^\d+$/,atUserErrorMessage:`Discord DMs require a user id (use user:<id> or a <@id> mention)`});if(r)return r;if(/^\d+$/.test(n)){if(t.defaultKind)return N(t.defaultKind,n,n);throw Error(t.ambiguousMessage??`Ambiguous Discord recipient "${n}". Use "user:${n}" for DMs or "channel:${n}" for channel messages.`)}return N(`channel`,n,n)}function Vt(e){return Ge({platform:`Discord`,target:L(e,{defaultKind:`channel`}),kind:`channel`})}async function Ht(e,t,n={}){let r=e.trim();if(!r)return;let i=Gt(r),a=Wt(r,n)||i,o=Ut(r,n);if(o&&o.kind!==`channel`&&!i)return o;if(!a)return o??L(r,n);try{let e=(await Bt({...t,query:r,limit:1}))[0];if(e&&e.kind===`user`){let n=e.id.replace(/^user:/,``);return Dt({accountId:t.accountId,userId:n,handles:[r,e.name,e.handle]}),N(`user`,n,r)}}catch{}return L(r,n)}function Ut(e,t){try{return L(e,t)}catch{return}}function Wt(e,t){return/^<@!?(\d+)>$/.test(e)||/^(user:|discord:)/.test(e)||e.startsWith(`@`)?!0:/^\d+$/.test(e)?t.defaultKind===`user`:!1}function Gt(e){return!/^(user:|channel:|discord:|@|<@!?)|[\d]+$/.test(e)}function Kt(e){let t=e.trim();if(!t)throw Error(`emoji required`);let n=t.match(/^<a?:([^:>]+):(\d+)>$/),r=n?`${n[1]}:${n[2]}`:t.replace(/[\uFE0E\uFE0F]/g,``);return encodeURIComponent(r)}async function R(e,t,n){let r=n??l(),i=s({cfg:r,accountId:t}),a=e.trim(),o={ambiguousMessage:`Ambiguous Discord recipient "${a}". Use "user:${a}" for DMs or "channel:${a}" for channel messages.`},c=await Ht(e,{cfg:r,accountId:i.accountId},o);if(c)return{kind:c.kind,id:c.id};let u=L(e,o);if(!u)throw Error(`Recipient is required for Discord sends`);return{kind:u.kind,id:u.id}}function qt(e){let t=e.map(e=>e.trim()).filter(Boolean);if(t.length===0)throw Error(`At least one sticker id is required`);if(t.length>3)throw Error(`Discord supports up to 3 stickers per message`);return t}function z(e,t){let n=e.trim();if(!n)throw Error(`${t} is required`);return n}function Jt(e){let t=ne(e,{maxOptions:10}),n=re(t.durationHours,{defaultHours:24,maxHours:768});return{question:{text:t.question},answers:t.options.map(e=>({poll_media:{text:e}})),duration:n,allow_multiselect:t.maxSelections>1,layout_type:Pe.Default}}function Yt(e){if(!e||typeof e!=`object`)return;let t=`code`in e&&e.code!==void 0?e.code:`rawError`in e&&e.rawError&&typeof e.rawError==`object`?e.rawError.code:void 0;if(typeof t==`number`)return t;if(typeof t==`string`&&/^\d+$/.test(t))return Number(t)}async function B(e,t){if(e instanceof yt)return e;let n=Yt(e);if(n===50007)return new yt(`discord dm failed: user blocks dms or privacy settings disallow it`,{kind:`dm-blocked`});if(n!==50013)return e;let r=[];try{let e=await vt(t.channelId,{rest:t.rest,token:t.token}),n=new Set(e.permissions),i=[`ViewChannel`,`SendMessages`];pt(e.channelType)&&i.push(`SendMessagesInThreads`),t.hasMedia&&i.push(`AttachFiles`),r=i.filter(e=>!n.has(e))}catch{}return new yt(`${r.length?`missing permissions in channel ${t.channelId}: ${r.join(`, `)}`:`missing permissions in channel ${t.channelId}`}. bot might be muted or blocked by role/channel overrides`,{kind:`missing-permissions`,channelId:t.channelId,missingPermissions:r})}async function V(e,t,n){if(t.kind===`channel`)return{channelId:t.id};let r=await n(()=>e.post(D.userChannels(),{body:{recipient_id:t.id}}),`dm-channel`);if(!r?.id)throw Error(`Failed to create Discord DM channel`);return{channelId:r.id,dm:!0}}async function Xt(e,t){try{return(await e.get(D.channel(t)))?.type}catch{return}}const H=4096;function Zt(e,t={}){if(!e)return[];let n=et(e,{maxChars:t.maxChars??2e3,maxLines:t.maxLinesPerMessage,chunkMode:t.chunkMode});return!n.length&&e&&n.push(e),n}function Qt(e){return!!e?.some(e=>`isV2`in e&&e.isV2)}function $t(e){if(!(!e.components||!e.isFirst))return typeof e.components==`function`?e.components(e.text):e.components}function en(e){if(e?.length)return e.map(e=>e instanceof xe?e:new xe(e))}function tn(e){if(!(!e.embeds||!e.isFirst))return en(e.embeds)}function nn(e){let t={},n=Qt(e.components),r=e.text.trim();return!n&&r&&(t.content=e.text),e.components?.length&&(t.components=e.components),!n&&e.embeds?.length&&(t.embeds=e.embeds),e.flags!==void 0&&(t.flags=e.flags),e.files?.length&&(t.files=e.files),t}function U(e){return Object.fromEntries(Object.entries(e).filter(([,e])=>e!==void 0))}function rn(e){if(e instanceof Blob)return e;let t=new ArrayBuffer(e.byteLength);return new Uint8Array(t).set(e),new Blob([t])}async function an(e,t,n,r,i,a,o,s,c,l){if(!n.trim())throw Error(`Message must be non-empty for Discord sends`);let u=r?{message_id:r,fail_if_not_exists:!1}:void 0,d=l?H:void 0,f=Zt(n,{maxLinesPerMessage:a,chunkMode:c}),p=async(n,r)=>{let a=U({...A(nn({text:n,components:$t({components:o,text:n,isFirst:r}),embeds:tn({embeds:s,isFirst:r}),flags:d})),...u?{message_reference:u}:{}});return await i(()=>e.post(D.channelMessages(t),{body:a}),`text`)};if(f.length===1)return await p(f[0],!0);let m=null;for(let[e,t]of f.entries())m=await p(t,e===0);if(!m)throw Error(`Discord send failed (empty chunk result)`);return m}async function on(e,t,n,r,i,a,o,s,c,l,u,d,f){let p=await te(r,de({maxBytes:a,mediaLocalRoots:i})),m=n?Zt(n,{maxLinesPerMessage:c,chunkMode:d}):[],h=m[0]??``,g=o?{message_id:o,fail_if_not_exists:!1}:void 0,_=f?H:void 0,v=rn(p.buffer),y=nn({text:h,components:$t({components:l,text:h,isFirst:!0}),embeds:tn({embeds:u,isFirst:!0}),flags:_,files:[{data:v,name:p.fileName??`upload`}]}),b=await s(()=>e.post(D.channelMessages(t),{body:U({...A(y),...g?{message_reference:g}:{}})}),`media`);for(let n of m.slice(1))n.trim()&&await an(e,t,n,o,s,c,void 0,void 0,d,f);return b}function sn(e){return e.id&&e.name?`${e.name}:${e.id}`:e.name??``}function cn(e){return sn(e)}async function W(e,t={}){let n=F(t),r={name:e.name};return e.type!==void 0&&(r.type=e.type),e.parentId&&(r.parent_id=e.parentId),e.topic&&(r.topic=e.topic),e.position!==void 0&&(r.position=e.position),e.nsfw!==void 0&&(r.nsfw=e.nsfw),await n.post(D.guildChannels(e.guildId),{body:r})}async function G(e,t={}){let n=F(t),r={};return e.name!==void 0&&(r.name=e.name),e.topic!==void 0&&(r.topic=e.topic),e.position!==void 0&&(r.position=e.position),e.parentId!==void 0&&(r.parent_id=e.parentId),e.nsfw!==void 0&&(r.nsfw=e.nsfw),e.rateLimitPerUser!==void 0&&(r.rate_limit_per_user=e.rateLimitPerUser),e.archived!==void 0&&(r.archived=e.archived),e.locked!==void 0&&(r.locked=e.locked),e.autoArchiveDuration!==void 0&&(r.auto_archive_duration=e.autoArchiveDuration),e.availableTags!==void 0&&(r.available_tags=e.availableTags.map(e=>({...e.id!==void 0&&{id:e.id},name:e.name,...e.moderated!==void 0&&{moderated:e.moderated},...e.emoji_id!==void 0&&{emoji_id:e.emoji_id},...e.emoji_name!==void 0&&{emoji_name:e.emoji_name}}))),await n.patch(D.channel(e.channelId),{body:r})}async function K(e,t={}){return await F(t).delete(D.channel(e)),{ok:!0,channelId:e}}async function ln(e,t={}){let n=F(t),r=[{id:e.channelId,...e.parentId!==void 0&&{parent_id:e.parentId},...e.position!==void 0&&{position:e.position}}];return await n.patch(D.guildChannels(e.guildId),{body:r}),{ok:!0}}async function un(e,t={}){let n=F(t),r={type:e.targetType};return e.allow!==void 0&&(r.allow=e.allow),e.deny!==void 0&&(r.deny=e.deny),await n.put(`/channels/${e.channelId}/permissions/${e.targetId}`,{body:r}),{ok:!0}}async function dn(e,t,n={}){return await F(n).delete(`/channels/${e}/permissions/${t}`),{ok:!0}}async function fn(e,t={}){return await F(t).get(D.guildEmojis(e))}async function pn(e,t={}){let n=F(t),r=await se(e.mediaUrl,262144),i=r.contentType?.toLowerCase();if(!i||![`image/png`,`image/jpeg`,`image/jpg`,`image/gif`].includes(i))throw Error(`Discord emoji uploads require a PNG, JPG, or GIF image`);let a=`data:${i};base64,${r.buffer.toString(`base64`)}`,o=(e.roleIds??[]).map(e=>e.trim()).filter(Boolean);return await n.post(D.guildEmojis(e.guildId),{body:{name:z(e.name,`Emoji name`),image:a,roles:o.length?o:void 0}})}async function mn(e,t={}){let n=F(t),r=await se(e.mediaUrl,524288),i=r.contentType?.toLowerCase();if(!i||![`image/png`,`image/apng`,`application/json`].includes(i))throw Error(`Discord sticker uploads require a PNG, APNG, or Lottie JSON file`);return await n.post(D.guildStickers(e.guildId),{body:{name:z(e.name,`Sticker name`),description:z(e.description,`Sticker description`),tags:z(e.tags,`Sticker tags`),files:[{data:r.buffer,name:r.fileName??`sticker`,contentType:i}]}})}async function hn(e,t,n={}){return await F(n).get(D.guildMember(e,t))}async function gn(e,t={}){return await F(t).get(D.guildRoles(e))}async function _n(e,t={}){return await F(t).put(D.guildMemberRole(e.guildId,e.userId,e.roleId)),{ok:!0}}async function vn(e,t={}){return await F(t).delete(D.guildMemberRole(e.guildId,e.userId,e.roleId)),{ok:!0}}async function yn(e,t={}){return await F(t).get(D.channel(e))}async function bn(e,t={}){return await F(t).get(D.guildChannels(e))}async function xn(e,t,n={}){return await F(n).get(D.guildVoiceState(e,t))}async function Sn(e,t={}){return await F(t).get(D.guildScheduledEvents(e))}async function Cn(e,t,n={}){return await F(n).post(D.guildScheduledEvents(e),{body:t})}async function wn(e,t={}){let n=F(t),r=e.until;if(!r&&e.durationMinutes){let t=e.durationMinutes*60*1e3;r=new Date(Date.now()+t).toISOString()}return await n.patch(D.guildMember(e.guildId,e.userId),{body:{communication_disabled_until:r??null},headers:e.reason?{"X-Audit-Log-Reason":encodeURIComponent(e.reason)}:void 0})}async function Tn(e,t={}){return await F(t).delete(D.guildMember(e.guildId,e.userId),{headers:e.reason?{"X-Audit-Log-Reason":encodeURIComponent(e.reason)}:void 0}),{ok:!0}}async function En(e,t={}){let n=F(t),r=typeof e.deleteMessageDays==`number`&&Number.isFinite(e.deleteMessageDays)?Math.min(Math.max(Math.floor(e.deleteMessageDays),0),7):void 0;return await n.put(D.guildBan(e.guildId,e.userId),{body:r===void 0?void 0:{delete_message_days:r},headers:e.reason?{"X-Audit-Log-Reason":encodeURIComponent(e.reason)}:void 0}),{ok:!0}}async function Dn(e,t={},n={}){let r=F(n),i=typeof t.limit==`number`&&Number.isFinite(t.limit)?Math.min(Math.max(Math.floor(t.limit),1),100):void 0,a={};return i&&(a.limit=i),t.before&&(a.before=t.before),t.after&&(a.after=t.after),t.around&&(a.around=t.around),await r.get(D.channelMessages(e),a)}async function On(e,t,n={}){return await F(n).get(D.channelMessage(e,t))}async function kn(e,t,n,r={}){return await F(r).patch(D.channelMessage(e,t),{body:{content:n.content}})}async function An(e,t,n={}){return await F(n).delete(D.channelMessage(e,t)),{ok:!0}}async function jn(e,t,n={}){return await F(n).put(D.channelPin(e,t)),{ok:!0}}async function Mn(e,t,n={}){return await F(n).delete(D.channelPin(e,t)),{ok:!0}}async function Nn(e,t={}){return await F(t).get(D.channelPins(e))}async function Pn(e,t,n={}){let r=F(n),i={name:t.name};t.autoArchiveMinutes&&(i.auto_archive_duration=t.autoArchiveMinutes),!t.messageId&&t.type!==void 0&&(i.type=t.type);let a;if(!t.messageId)try{a=(await r.get(D.channel(e)))?.type}catch{a=void 0}let o=a===T.GuildForum||a===T.GuildMedia;o&&(i.message={content:t.content?.trim()?t.content:t.name},t.appliedTags?.length&&(i.applied_tags=t.appliedTags)),!t.messageId&&!o&&i.type===void 0&&(i.type=T.PublicThread);let s=t.messageId?D.threads(e,t.messageId):D.threads(e),c=await r.post(s,{body:i});return!o&&t.content?.trim()&&await r.post(D.channelMessages(c.id),{body:{content:t.content}}),c}async function Fn(e,t={}){let n=F(t);if(e.includeArchived){if(!e.channelId)throw Error(`channelId required to list archived threads`);let t={};return e.before&&(t.before=e.before),e.limit&&(t.limit=e.limit),await n.get(D.channelThreads(e.channelId,`public`),t)}return await n.get(D.guildActiveThreads(e.guildId))}async function In(e,t={}){let n=F(t),r=new URLSearchParams;if(r.set(`content`,e.content),e.channelIds?.length)for(let t of e.channelIds)r.append(`channel_id`,t);if(e.authorIds?.length)for(let t of e.authorIds)r.append(`author_id`,t);if(e.limit){let t=Math.min(Math.max(Math.floor(e.limit),1),25);r.set(`limit`,String(t))}return await n.get(`/guilds/${e.guildId}/messages/search?${r.toString()}`)}const Ln={bold:{open:`**`,close:`**`},italic:{open:`_`,close:`_`},strikethrough:{open:`~~`,close:`~~`},code:{open:"`",close:"`"},code_block:{open:"```\n",close:"```"}};function Rn(e,t){if(!e||t===`off`)return e;let{ir:n,hasTables:r}=oe(e,{linkify:!1,autolink:!1,headingStyle:`none`,blockquotePrefix:``,tableMode:t});return r?ie(n,{styleMarkers:Ln,escapeText:e=>e,buildLink:(e,t)=>{let n=e.href.trim();return!n||!t.slice(e.start,e.end)?null:{start:e.start,end:e.end,open:`[`,close:`](${n})`}}}):e}async function zn(e){if(e)try{await me.unlink(e)}catch{}}const Bn=/```[\s\S]*?```|`[^`\n]*`/g,Vn=/(^|[\s([{"'.,;:!?])@([a-z0-9_.-]{2,32}(?:#[0-9]{4})?)/gi,Hn=new Set([`everyone`,`here`]);function Un(e){let t=String(e??``).trim();return/^\d+$/.test(t)?t:null}function Wn(e){let t=e.userId==null?null:Un(e.userId),n=e.roleId==null?null:Un(e.roleId),r=e.channelId==null?null:Un(e.channelId),i=[t?{kind:`user`,id:t}:null,n?{kind:`role`,id:n}:null,r?{kind:`channel`,id:r}:null].filter(e=>!!e);if(i.length!==1)throw Error(`formatMention requires exactly one of userId, roleId, or channelId`);let a=i[0];return a.kind===`user`?`<@${a.id}>`:a.kind===`role`?`<@&${a.id}>`:`<#${a.id}>`}function Gn(e,t){return e.includes(`@`)?e.replace(Vn,(e,n,r)=>{let i=String(r??``).trim();if(!i)return e;let a=i.toLowerCase();if(Hn.has(a))return e;let o=Ot({accountId:t,handle:i});return o?`${String(n??``)}${Wn({userId:o})}`:e}):e}function Kn(e,t){if(!e.includes(`@`))return e;let n=``,r=0;Bn.lastIndex=0;for(let i of e.matchAll(Bn)){let a=i.index??0;n+=Gn(e.slice(r,a),t.accountId),n+=i[0],r=a+i[0].length}return n+=Gn(e.slice(r),t.accountId),n}const qn=he(ge);function Jn(e,t){return{timeout:t?.timeoutMs??e,maxBuffer:t?.maxBufferBytes??10485760}}async function Yn(e,t){let{stdout:n}=await qn(`ffprobe`,e,Jn(1e4,t));return n.toString()}async function Xn(e,t){let{stdout:n}=await qn(`ffmpeg`,e,Jn(45e3,t));return n.toString()}function Zn(e,t){return e.trim().toLowerCase().split(/[,\r\n]+/,t).map(e=>e.trim())}function Qn(e){let[t,n]=Zn(e,2),r=t||null,i=n?Number.parseInt(n,10):NaN;return{codec:r,sampleRateHz:Number.isFinite(i)?i:null}}const $n=8192;async function er(e){try{let t=await Yn([`-v`,`error`,`-show_entries`,`format=duration`,`-of`,`csv=p=0`,e]),n=parseFloat(t.trim());if(isNaN(n))throw Error(`Could not parse duration`);return Math.round(n*100)/100}catch(e){let t=e instanceof Error?e.message:String(e);throw Error(`Failed to get audio duration: ${t}`,{cause:e})}}async function tr(e){try{return await nr(e)}catch{return rr()}}async function nr(e){let t=f(),n=C.join(t,`waveform-${j.randomUUID()}.raw`);try{await Xn([`-y`,`-i`,e,`-vn`,`-sn`,`-dn`,`-t`,`1200`,`-f`,`s16le`,`-acodec`,`pcm_s16le`,`-ac`,`1`,`-ar`,`8000`,n]);let t=await me.readFile(n),r=new Int16Array(t.buffer,t.byteOffset,t.byteLength/2),i=Math.max(1,Math.floor(r.length/256)),a=[];for(let e=0;e<256&&e*i<r.length;e++){let t=0,n=0;for(let a=0;a<i&&e*i+a<r.length;a++)t+=Math.abs(r[e*i+a]),n++;let o=n>0?t/n:0,s=Math.min(255,Math.round(o/32767*255));a.push(s)}for(;a.length<256;)a.push(0);return Buffer.from(a).toString(`base64`)}finally{await zn(n)}}function rr(){let e=[];for(let t=0;t<256;t++){let n=Math.round(128+64*Math.sin(t/256*Math.PI*8));e.push(Math.min(255,Math.max(0,n)))}return Buffer.from(e).toString(`base64`)}async function ir(e){let t=e.trim();if(/^[a-z][a-z0-9+.-]*:\/\//i.test(t))throw Error(`Voice message conversion requires a local file path; received a URL/protocol source: ${t}`);if(C.extname(e).toLowerCase()===`.ogg`)try{let{codec:t,sampleRateHz:n}=Qn(await Yn([`-v`,`error`,`-select_streams`,`a:0`,`-show_entries`,`stream=codec_name,sample_rate`,`-of`,`csv=p=0`,e]));if(t===`opus`&&n===48e3)return{path:e,cleanup:!1}}catch{}let n=f(),r=C.join(n,`voice-${j.randomUUID()}.ogg`);return await Xn([`-y`,`-i`,e,`-vn`,`-sn`,`-dn`,`-t`,`1200`,`-ar`,`48000`,`-c:a`,`libopus`,`-b:a`,`64k`,r]),{path:r,cleanup:!0}}async function ar(e){let[t,n]=await Promise.all([er(e),tr(e)]);return{durationSecs:t,waveform:n}}async function or(e,t,n,r,i,a,o,s){let c=`voice-message.ogg`,l=n.byteLength,u=s;if(!u)throw Error(`Discord bot token is required for voice message upload`);let d=await a(async()=>{let n=`${e.options?.baseUrl??`https://discord.com/api`}/channels/${t}/attachments`,r=await fetch(n,{method:`POST`,headers:{Authorization:`Bot ${u}`,"Content-Type":`application/json`},body:JSON.stringify({files:[{filename:c,file_size:l,id:`0`}]})});if(!r.ok){if(r.status===429){let e=await r.json().catch(()=>({}));throw new Ee(r,{message:e.message??`You are being rate limited.`,retry_after:e.retry_after??1,global:e.global??!1})}let e=await r.json().catch(()=>null),t=Error(`Upload URL request failed: ${r.status} ${e?.message??``}`);throw e?.code!==void 0&&(t.code=e.code),t}return await r.json()},`voice-upload-url`);if(!d.attachments?.[0])throw Error(`Failed to get upload URL for voice message`);let{upload_url:f,upload_filename:p}=d.attachments[0],m=await fetch(f,{method:`PUT`,headers:{"Content-Type":`audio/ogg`},body:new Uint8Array(n)});if(!m.ok)throw Error(`Failed to upload voice message: ${m.status}`);let h={flags:o?$n|4096:$n,attachments:[{id:`0`,filename:c,uploaded_filename:p,duration_secs:r.durationSecs,waveform:r.waveform}]};return i&&(h.message_reference={message_id:i,fail_if_not_exists:!1}),await a(()=>e.post(`/channels/${t}/messages`,{body:h}),`voice-message`)}async function sr(e){for(let t of e.chunks)await an(e.rest,e.threadId,t,void 0,e.request,e.maxLinesPerMessage,void 0,void 0,e.chunkMode,e.silent)}function cr(e){return(e.split(`
7
- `).find(e=>e.trim())?.trim()??``).slice(0,100)||new Date().toISOString().slice(0,16)}function lr(e){return e===T.GuildForum||e===T.GuildMedia}function q(e,t){return{messageId:e.id?String(e.id):`unknown`,channelId:String(e.channel_id??t)}}async function ur(e,t){let n=t.cfg??l(),{rest:r,request:i}=P(t,n),{channelId:a}=await V(r,await R(e,t.accountId,n),i);return{rest:r,request:i,channelId:a}}async function dr(e,t,n={}){let r=n.cfg??l(),i=s({cfg:r,accountId:n.accountId}),a=ce({cfg:r,channel:`discord`,accountId:i.accountId}),o=ee(r,`discord`,i.accountId),c=typeof i.config.mediaMaxMb==`number`?i.config.mediaMaxMb*1024*1024:8*1024*1024,u=Rn(t??``,a),d=Kn(u,{accountId:i.accountId}),{token:f,rest:p,request:m}=P(n,r),{channelId:h}=await V(p,await R(e,n.accountId,r),m);if(lr(await Xt(p,h))){let e=cr(u),t=Zt(d,{maxLinesPerMessage:i.config.maxLinesPerMessage,chunkMode:o}),r=t[0]?.trim()?t[0]:e,a=nn({text:r,components:$t({components:n.components,text:r,isFirst:!0}),embeds:tn({embeds:n.embeds,isFirst:!0}),flags:n.silent?4096:void 0}),s;try{s=await m(()=>p.post(D.threads(h),{body:{name:e,message:U(A(a))}}),`forum-thread`)}catch(e){throw await B(e,{channelId:h,rest:p,token:f,hasMedia:!!n.mediaUrl})}let l=s.id,g=s.message?.id??l,_=s.message?.channel_id??l,v=t.slice(1);try{if(n.mediaUrl){let[e,...t]=v;await on(p,l,e??``,n.mediaUrl,n.mediaLocalRoots,c,void 0,m,i.config.maxLinesPerMessage,void 0,void 0,o,n.silent),await sr({rest:p,threadId:l,chunks:t,request:m,maxLinesPerMessage:i.config.maxLinesPerMessage,chunkMode:o,silent:n.silent})}else await sr({rest:p,threadId:l,chunks:v,request:m,maxLinesPerMessage:i.config.maxLinesPerMessage,chunkMode:o,silent:n.silent})}catch(e){throw await B(e,{channelId:l,rest:p,token:f,hasMedia:!!n.mediaUrl})}return pe({channel:`discord`,accountId:i.accountId,direction:`outbound`}),q({id:g,channel_id:_},h)}let g;try{g=n.mediaUrl?await on(p,h,d,n.mediaUrl,n.mediaLocalRoots,c,n.replyTo,m,i.config.maxLinesPerMessage,n.components,n.embeds,o,n.silent):await an(p,h,d,n.replyTo,m,i.config.maxLinesPerMessage,n.components,n.embeds,o,n.silent)}catch(e){throw await B(e,{channelId:h,rest:p,token:f,hasMedia:!!n.mediaUrl})}return pe({channel:`discord`,accountId:i.accountId,direction:`outbound`}),q(g,h)}async function fr(e,t,n={}){let{rest:r,request:i,channelId:a}=await ur(e,n),o=n.content?.trim(),s=o?Kn(o,{accountId:n.accountId}):void 0,c=qt(t);return q(await i(()=>r.post(D.channelMessages(a),{body:{content:s||void 0,sticker_ids:c}}),`sticker`),a)}async function pr(e,t,n={}){let{rest:r,request:i,channelId:a}=await ur(e,n),o=n.content?.trim(),s=o?Kn(o,{accountId:n.accountId}):void 0;if(t.durationSeconds!==void 0)throw Error(`Discord polls do not support durationSeconds; use durationHours`);let c=Jt(t),l=n.silent?H:void 0;return q(await i(()=>r.post(D.channelMessages(a),{body:{content:s||void 0,poll:c,...l?{flags:l}:{}}}),`poll`),a)}async function mr(n){let r=await se(n,e(`audio`)),i=r.fileName?C.extname(r.fileName):``,a=r.contentType?t(r.contentType):``,o=i||a||`.bin`,s=f(),c=C.join(s,`voice-src-${j.randomUUID()}${o}`);return await me.writeFile(c,r.buffer,{mode:384}),{filePath:c}}async function hr(e,t,n={}){let{filePath:r}=await mr(t),i=null,a=!1,o,c,u;try{let t=n.cfg??l(),d=s({cfg:t,accountId:n.accountId}),f=P(n,t);o=f.token,c=f.rest;let p=f.request,m=await R(e,n.accountId,t);u=(await V(c,m,p)).channelId;let h=await ir(r);i=h.path,a=h.cleanup;let g=await ar(i),_=await me.readFile(i),v=await or(c,u,_,g,n.replyTo,p,n.silent,o);return pe({channel:`discord`,accountId:d.accountId,direction:`outbound`}),q(v,u)}catch(e){throw u&&c&&o?await B(e,{channelId:u,rest:c,token:o,hasMedia:!0}):e}finally{await zn(a?i:null),await zn(r)}}const gr=new Map,_r=new Map;function vr(e,t,n){let r=e.createdAt??t,i=e.expiresAt??r+n;return{...e,createdAt:r,expiresAt:i}}function yr(e){let t=Date.now(),n=e.ttlMs??18e5;for(let r of e.entries){let i=vr({...r,messageId:e.messageId??r.messageId},t,n);gr.set(r.id,i)}for(let r of e.modals){let i=vr({...r,messageId:e.messageId??r.messageId},t,n);_r.set(r.id,i)}}const br=`attachment://`,xr=new Map([[`row`,`actions`],[`action-row`,`actions`]]);function J(e){return`${e}${j.randomBytes(6).toString(`base64url`)}`}function Y(e,t){if(!e||typeof e!=`object`||Array.isArray(e))throw Error(`${t} must be an object`);return e}function X(e,t,n){if(typeof e!=`string`)throw Error(`${t} must be a string`);let r=e.trim();if(!n?.allowEmpty&&!r)throw Error(`${t} cannot be empty`);return n?.allowEmpty?e:r}function Z(e){return typeof e==`string`&&e.trim()||void 0}function Sr(e,t){if(e!==void 0){if(!Array.isArray(e))throw Error(`${t} must be an array`);if(e.length!==0)return e.map((e,n)=>X(e,`${t}[${n}]`))}}function Q(e){if(!(typeof e!=`number`||!Number.isFinite(e)))return e}function Cr(e,t){return e?.trim()||`field_${t+1}`}function wr(e,t){let n=e.trim();if(!n.startsWith(`attachment://`))throw Error(`${t} must start with "${br}"`);let r=n.slice(13).trim();if(!r)throw Error(`${t} must include an attachment filename`);return`${br}${r}`}function Tr(e){let t=e.trim();if(!t.startsWith(`attachment://`))throw Error(`Attachment reference must start with "${br}"`);let n=t.slice(13).trim();if(!n)throw Error(`Attachment reference must include a filename`);return n}function Er(e){switch((e??`primary`).toLowerCase()){case`secondary`:return w.Secondary;case`success`:return w.Success;case`danger`:return w.Danger;case`link`:return w.Link;default:return w.Primary}}function Dr(e){let t=e.trim().toLowerCase();return xr.get(t)??t}function Or(e,t){if(e!==void 0){if(!Array.isArray(e))throw Error(`${t} must be an array`);return e.map((e,n)=>{let r=Y(e,`${t}[${n}]`);return{label:X(r.label,`${t}[${n}].label`),value:X(r.value,`${t}[${n}].value`),description:Z(r.description),emoji:typeof r.emoji==`object`&&r.emoji&&!Array.isArray(r.emoji)?{name:X(r.emoji.name,`${t}[${n}].emoji.name`),id:Z(r.emoji.id),animated:typeof r.emoji.animated==`boolean`?r.emoji.animated:void 0}:void 0,default:typeof r.default==`boolean`?r.default:void 0}})}}function kr(e,t){let n=Y(e,t),r=Z(n.style),i=Z(n.url);if((r===`link`||i)&&!i)throw Error(`${t}.url is required for link buttons`);return{label:X(n.label,`${t}.label`),style:r,url:i,emoji:typeof n.emoji==`object`&&n.emoji&&!Array.isArray(n.emoji)?{name:X(n.emoji.name,`${t}.emoji.name`),id:Z(n.emoji.id),animated:typeof n.emoji.animated==`boolean`?n.emoji.animated:void 0}:void 0,disabled:typeof n.disabled==`boolean`?n.disabled:void 0,allowedUsers:Sr(n.allowedUsers,`${t}.allowedUsers`)}}function Ar(e,t){let n=Y(e,t),r=Z(n.type),i=[`string`,`user`,`role`,`mentionable`,`channel`];if(r&&!i.includes(r))throw Error(`${t}.type must be one of ${i.join(`, `)}`);return{type:r,placeholder:Z(n.placeholder),minValues:Q(n.minValues),maxValues:Q(n.maxValues),options:Or(n.options,`${t}.options`)}}function jr(e,t,n){let r=Y(e,t),i=X(r.type,`${t}.type`).toLowerCase(),a=[`text`,`checkbox`,`radio`,`select`,`role-select`,`user-select`];if(!a.includes(i))throw Error(`${t}.type must be one of ${a.join(`, `)}`);let o=Or(r.options,`${t}.options`);if([`checkbox`,`radio`,`select`].includes(i)&&(!o||o.length===0))throw Error(`${t}.options is required for ${i} fields`);return{type:i,name:Cr(Z(r.name),n),label:X(r.label,`${t}.label`),description:Z(r.description),placeholder:Z(r.placeholder),required:typeof r.required==`boolean`?r.required:void 0,options:o,minValues:Q(r.minValues),maxValues:Q(r.maxValues),minLength:Q(r.minLength),maxLength:Q(r.maxLength),style:Z(r.style)}}function Mr(e,t){let n=Y(e,t);switch(Dr(X(n.type,`${t}.type`).toLowerCase())){case`text`:return{type:`text`,text:X(n.text,`${t}.text`)};case`section`:{let e=Z(n.text),r=n.texts,i=Array.isArray(r)?r.map((e,n)=>X(e,`${t}.texts[${n}]`)):void 0;if(!e&&(!i||i.length===0))throw Error(`${t}.text or ${t}.texts is required for section blocks`);let a;if(n.accessory!==void 0){let e=Y(n.accessory,`${t}.accessory`),r=X(e.type,`${t}.accessory.type`).toLowerCase();if(r===`thumbnail`)a={type:`thumbnail`,url:X(e.url,`${t}.accessory.url`)};else if(r===`button`)a={type:`button`,button:kr(e.button,`${t}.accessory.button`)};else throw Error(`${t}.accessory.type must be "thumbnail" or "button"`)}return{type:`section`,text:e,texts:i,accessory:a}}case`separator`:{let e=n.spacing,r;if(e===`small`||e===`large`)r=e;else if(e===1||e===2)r=e;else if(e!==void 0)throw Error(`${t}.spacing must be "small", "large", 1, or 2`);let i=typeof n.divider==`boolean`?n.divider:void 0;return{type:`separator`,spacing:r,divider:i}}case`actions`:{let e=n.buttons,r=Array.isArray(e)?e.map((e,n)=>kr(e,`${t}.buttons[${n}]`)):void 0,i=n.select?Ar(n.select,`${t}.select`):void 0;if((!r||r.length===0)&&!i)throw Error(`${t} requires buttons or select`);if(r&&i)throw Error(`${t} cannot include both buttons and select`);return{type:`actions`,buttons:r,select:i}}case`media-gallery`:{let e=n.items;if(!Array.isArray(e)||e.length===0)throw Error(`${t}.items must be a non-empty array`);return{type:`media-gallery`,items:e.map((e,n)=>{let r=Y(e,`${t}.items[${n}]`);return{url:X(r.url,`${t}.items[${n}].url`),description:Z(r.description),spoiler:typeof r.spoiler==`boolean`?r.spoiler:void 0}})}}case`file`:return{type:`file`,file:wr(X(n.file,`${t}.file`),`${t}.file`),spoiler:typeof n.spoiler==`boolean`?n.spoiler:void 0};default:throw Error(`${t}.type must be a supported component block`)}}function Nr(e){if(e==null)return null;let t=Y(e,`components`),n=t.blocks,r=Array.isArray(n)?n.map((e,t)=>Mr(e,`components.blocks[${t}]`)):void 0,i=t.modal,a=typeof t.reusable==`boolean`?t.reusable:void 0,o;if(i!==void 0){let e=Y(i,`components.modal`),t=e.fields;if(!Array.isArray(t)||t.length===0)throw Error(`components.modal.fields must be a non-empty array`);if(t.length>5)throw Error(`components.modal.fields supports up to 5 inputs`);let n=t.map((e,t)=>jr(e,`components.modal.fields[${t}]`,t));o={title:X(e.title,`components.modal.title`),triggerLabel:Z(e.triggerLabel),triggerStyle:Z(e.triggerStyle),fields:n}}return{text:Z(t.text),reusable:a,container:typeof t.container==`object`&&t.container&&!Array.isArray(t.container)?{accentColor:t.container.accentColor,spoiler:typeof t.container.spoiler==`boolean`?t.container.spoiler:void 0}:void 0,blocks:r,modal:o}}function Pr(e){let t=`occomp:cid=${e.componentId}`;return e.modalId?`${t};mid=${e.modalId}`:t}function Fr(e,t){return t&&t.length>0?t.map(e=>new k(e)):e?[new k(e)]:[]}function Ir(e){let t=Er(e.spec.style);if(t===w.Link||e.spec.url){if(!e.spec.url)throw Error(`Link buttons require a url`);let t=e.spec.url;class n extends Ce{constructor(...n){super(...n),this.label=e.spec.label,this.url=t}}return{component:new n}}let n=e.componentId??J(`btn_`),r=Pr({componentId:n,modalId:e.modalId});class i extends ve{constructor(...n){super(...n),this.label=e.spec.label,this.customId=r,this.style=t,this.emoji=e.spec.emoji,this.disabled=e.spec.disabled??!1}}return{component:new i,entry:{id:n,kind:e.modalId?`modal-trigger`:`button`,label:e.spec.label,modalId:e.modalId,allowedUsers:e.spec.allowedUsers}}}function Lr(e){let t=(e.spec.type??`string`).toLowerCase(),n=e.componentId??J(`sel_`),r=Pr({componentId:n});if(t===`string`){let t=e.spec.options??[];if(t.length===0)throw Error(`String select menus require options`);class i extends je{constructor(...n){super(...n),this.customId=r,this.options=t,this.minValues=e.spec.minValues,this.maxValues=e.spec.maxValues,this.placeholder=e.spec.placeholder,this.disabled=!1}}return{component:new i,entry:{id:n,kind:`select`,label:e.spec.placeholder??`select`,selectType:`string`,options:t.map(e=>({value:e.value,label:e.label}))}}}if(t===`user`){class t extends Ne{constructor(...t){super(...t),this.customId=r,this.minValues=e.spec.minValues,this.maxValues=e.spec.maxValues,this.placeholder=e.spec.placeholder,this.disabled=!1}}return{component:new t,entry:{id:n,kind:`select`,label:e.spec.placeholder??`user select`,selectType:`user`}}}if(t===`role`){class t extends Oe{constructor(...t){super(...t),this.customId=r,this.minValues=e.spec.minValues,this.maxValues=e.spec.maxValues,this.placeholder=e.spec.placeholder,this.disabled=!1}}return{component:new t,entry:{id:n,kind:`select`,label:e.spec.placeholder??`role select`,selectType:`role`}}}if(t===`mentionable`){class t extends Te{constructor(...t){super(...t),this.customId=r,this.minValues=e.spec.minValues,this.maxValues=e.spec.maxValues,this.placeholder=e.spec.placeholder,this.disabled=!1}}return{component:new t,entry:{id:n,kind:`select`,label:e.spec.placeholder??`mentionable select`,selectType:`mentionable`}}}class i extends ye{constructor(...t){super(...t),this.customId=r,this.minValues=e.spec.minValues,this.maxValues=e.spec.maxValues,this.placeholder=e.spec.placeholder,this.disabled=!1}}return{component:new i,entry:{id:n,kind:`select`,label:e.spec.placeholder??`channel select`,selectType:`channel`}}}function Rr(e){return e instanceof je||e instanceof Ne||e instanceof Oe||e instanceof Te||e instanceof ye}function zr(e){let t=[],n=[],r=[],i=[],a=n=>{t.push({...n,sessionKey:e.sessionKey,agentId:e.agentId,accountId:e.accountId,reusable:n.reusable??e.spec.reusable})},o=e.spec.text??e.fallbackText;o&&i.push(new k(o));for(let t of e.spec.blocks??[]){if(t.type===`text`){i.push(new k(t.text));continue}if(t.type===`section`){let e=Fr(t.text,t.texts);if(e.length>3)throw Error(`Section blocks support up to 3 text displays`);let n;if(t.accessory?.type===`thumbnail`)n=new Me(t.accessory.url);else if(t.accessory?.type===`button`){let{component:e,entry:r}=Ir({spec:t.accessory.button});n=e,r&&a(r)}i.push(new ke(e,n));continue}if(t.type===`separator`){i.push(new Ae({spacing:t.spacing,divider:t.divider}));continue}if(t.type===`media-gallery`){i.push(new we(t.items));continue}if(t.type===`file`){i.push(new Se(t.file,t.spoiler));continue}if(t.type===`actions`){let e=[];if(t.buttons){if(t.buttons.length>5)throw Error(`Action rows support up to 5 buttons`);for(let n of t.buttons){let{component:t,entry:r}=Ir({spec:n});e.push(t),r&&a(r)}}else if(t.select){let{component:n,entry:r}=Lr({spec:t.select});e.push(n),a(r)}i.push(new O(e))}}if(e.spec.modal){let t=J(`mdl_`),r=e.spec.modal.fields.map((e,t)=>({id:J(`fld_`),name:Cr(e.name,t),label:e.label,type:e.type,description:e.description,placeholder:e.placeholder,required:e.required,options:e.options,minValues:e.minValues,maxValues:e.maxValues,minLength:e.minLength,maxLength:e.maxLength,style:e.style}));n.push({id:t,title:e.spec.modal.title,fields:r,sessionKey:e.sessionKey,agentId:e.agentId,accountId:e.accountId,reusable:e.spec.reusable});let{component:o,entry:s}=Ir({spec:{label:e.spec.modal.triggerLabel??`Open form`,style:e.spec.modal.triggerStyle??`primary`},modalId:t});s&&a(s);let c=i.at(-1);if(c instanceof O){let e=c,t=e.components.some(e=>Rr(e));e.components.length<5&&!t?e.addComponent(o):i.push(new O([o]))}else i.push(new O([o]))}if(i.length===0)throw Error(`components must include at least one block, text, or modal trigger`);let s=new be(i,e.spec.container);return r.push(s),{components:r,entries:t,modals:n}}function Br(e){return e.some(e=>e.isV2)?_e.IsComponentsV2:void 0}const Vr=new Set([T.GuildForum,T.GuildMedia]);function Hr(e){let t=[];for(let n of e.blocks??[])n.type===`file`&&t.push(Tr(n.file));return t}async function Ur(e,t,n={}){let r=n.cfg??l(),i=s({cfg:r,accountId:n.accountId}),{token:a,rest:o,request:c}=P(n,r),{channelId:u}=await V(o,await R(e,n.accountId,r),c),d=await Xt(o,u);if(d&&Vr.has(d))throw Error(`Discord components are not supported in forum-style channels`);let f=zr({spec:t,sessionKey:n.sessionKey,agentId:n.agentId,accountId:i.accountId}),p=Br(f.components),m=n.silent?(p??0)|H:p??void 0,h=n.replyTo?{message_id:n.replyTo,fail_if_not_exists:!1}:void 0,g=Hr(t),_=[...new Set(g)];if(_.length>1)throw Error(`Discord component attachments currently support a single file. Use media-gallery for multiple files.`);let v=_[0],y;if(n.mediaUrl){let e=await te(n.mediaUrl,{localRoots:n.mediaLocalRoots}),t=n.filename?.trim()||e.fileName||`upload`;if(v&&v!==t)throw Error(`Component file block expects attachment "${v}", but the uploaded file is "${t}". Update components.blocks[].file or provide a matching filename.`);y=[{data:rn(e.buffer),name:t}]}else if(v)throw Error(`Discord component file blocks require a media attachment (media/path/filePath).`);let b=U({...A({components:f.components,...m?{flags:m}:{},...y?{files:y}:{}}),...h?{message_reference:h}:{}}),x;try{x=await c(()=>o.post(D.channelMessages(u),{body:b}),`components`)}catch(e){throw await B(e,{channelId:u,rest:o,token:a,hasMedia:!!y?.length})}return yr({entries:f.entries,modals:f.modals,messageId:x.id}),pe({channel:`discord`,accountId:i.accountId,direction:`outbound`}),{messageId:x.id??`unknown`,channelId:x.channel_id??u}}async function Wr(e,t,n,r={}){let{rest:i,request:a}=P(r,r.cfg??l()),o=Kt(n);return await a(()=>i.put(D.channelMessageOwnReaction(e,t,o)),`react`),{ok:!0}}async function Gr(e,t,n,r={}){let{rest:i}=P(r,r.cfg??l()),a=Kt(n);return await i.delete(D.channelMessageOwnReaction(e,t,a)),{ok:!0}}async function Kr(e,t,n={}){let{rest:r}=P(n,n.cfg??l()),i=await r.get(D.channelMessage(e,t)),a=new Set;for(let e of i.reactions??[]){let t=sn(e.emoji);t&&a.add(t)}if(a.size===0)return{ok:!0,removed:[]};let o=[];return await Promise.allSettled(Array.from(a,n=>(o.push(n),r.delete(D.channelMessageOwnReaction(e,t,Kt(n)))))),{ok:!0,removed:o}}async function qr(e,t,n={}){let{rest:r}=P(n,n.cfg??l()),i=(await r.get(D.channelMessage(e,t))).reactions??[];if(i.length===0)return[];let a=typeof n.limit==`number`&&Number.isFinite(n.limit)?Math.min(Math.max(Math.floor(n.limit),1),100):100,o=[];for(let n of i){let i=sn(n.emoji);if(!i)continue;let s=encodeURIComponent(i),c=await r.get(D.channelMessageReaction(e,t,s),{limit:a});o.push({emoji:{id:n.emoji.id??null,name:n.emoji.name??null,raw:cn(n.emoji)},count:n.count,users:c.map(e=>({id:e.id,username:e.username,tag:e.username&&e.discriminator?`${e.username}#${e.discriminator}`:e.username}))})}return o}async function Jr(e){let t=h(e.values,`guildId`,{required:!0}),n=h(e.values,`userId`,{required:!0}),r=h(e.values,`roleId`,{required:!0});if(e.accountId){await e.mutate({guildId:t,userId:n,roleId:r},{accountId:e.accountId});return}await e.mutate({guildId:t,userId:n,roleId:r})}async function Yr(e,t,n){let r=h(t,`accountId`);switch(e){case`memberInfo`:{if(!n(`memberInfo`))throw Error(`Discord member info is disabled.`);let e=h(t,`guildId`,{required:!0}),i=h(t,`userId`,{required:!0}),a=r?await hn(e,i,{accountId:r}):await hn(e,i),o=Le(r,i),s=o?.activities??void 0,c=o?.status??void 0;return _({ok:!0,member:a,...o?{status:c,activities:s}:{}})}case`roleInfo`:{if(!n(`roleInfo`))throw Error(`Discord role info is disabled.`);let e=h(t,`guildId`,{required:!0});return _({ok:!0,roles:r?await gn(e,{accountId:r}):await gn(e)})}case`emojiList`:{if(!n(`reactions`))throw Error(`Discord reactions are disabled.`);let e=h(t,`guildId`,{required:!0});return _({ok:!0,emojis:r?await fn(e,{accountId:r}):await fn(e)})}case`emojiUpload`:{if(!n(`emojiUploads`))throw Error(`Discord emoji uploads are disabled.`);let e=h(t,`guildId`,{required:!0}),i=h(t,`name`,{required:!0}),a=h(t,`mediaUrl`,{required:!0}),o=v(t,`roleIds`);return _({ok:!0,emoji:r?await pn({guildId:e,name:i,mediaUrl:a,roleIds:o?.length?o:void 0},{accountId:r}):await pn({guildId:e,name:i,mediaUrl:a,roleIds:o?.length?o:void 0})})}case`stickerUpload`:{if(!n(`stickerUploads`))throw Error(`Discord sticker uploads are disabled.`);let e=h(t,`guildId`,{required:!0}),i=h(t,`name`,{required:!0}),a=h(t,`description`,{required:!0}),o=h(t,`tags`,{required:!0}),s=h(t,`mediaUrl`,{required:!0});return _({ok:!0,sticker:r?await mn({guildId:e,name:i,description:a,tags:o,mediaUrl:s},{accountId:r}):await mn({guildId:e,name:i,description:a,tags:o,mediaUrl:s})})}case`roleAdd`:if(!n(`roles`,!1))throw Error(`Discord role changes are disabled.`);return await Jr({accountId:r,values:t,mutate:_n}),_({ok:!0});case`roleRemove`:if(!n(`roles`,!1))throw Error(`Discord role changes are disabled.`);return await Jr({accountId:r,values:t,mutate:vn}),_({ok:!0});case`channelInfo`:{if(!n(`channelInfo`))throw Error(`Discord channel info is disabled.`);let e=h(t,`channelId`,{required:!0});return _({ok:!0,channel:r?await yn(e,{accountId:r}):await yn(e)})}case`channelList`:{if(!n(`channelInfo`))throw Error(`Discord channel info is disabled.`);let e=h(t,`guildId`,{required:!0});return _({ok:!0,channels:r?await bn(e,{accountId:r}):await bn(e)})}case`voiceStatus`:{if(!n(`voiceStatus`))throw Error(`Discord voice status is disabled.`);let e=h(t,`guildId`,{required:!0}),i=h(t,`userId`,{required:!0});return _({ok:!0,voice:r?await xn(e,i,{accountId:r}):await xn(e,i)})}case`eventList`:{if(!n(`events`))throw Error(`Discord events are disabled.`);let e=h(t,`guildId`,{required:!0});return _({ok:!0,events:r?await Sn(e,{accountId:r}):await Sn(e)})}case`eventCreate`:{if(!n(`events`))throw Error(`Discord events are disabled.`);let e=h(t,`guildId`,{required:!0}),i=h(t,`name`,{required:!0}),a=h(t,`startTime`,{required:!0}),o=h(t,`endTime`),s=h(t,`description`),c=h(t,`channelId`),l=h(t,`location`),u=h(t,`entityType`),d=u===`stage`?1:u===`external`?3:2,f={name:i,description:s,scheduled_start_time:a,scheduled_end_time:o,entity_type:d,channel_id:c,entity_metadata:d===3&&l?{location:l}:void 0,privacy_level:2};return _({ok:!0,event:r?await Cn(e,f,{accountId:r}):await Cn(e,f)})}case`channelCreate`:{if(!n(`channels`))throw Error(`Discord channel management is disabled.`);let e=h(t,`guildId`,{required:!0}),i=h(t,`name`,{required:!0}),a=p(t,`type`,{integer:!0}),o=M(t),s=h(t,`topic`),c=p(t,`position`,{integer:!0}),l=t.nsfw;return _({ok:!0,channel:r?await W({guildId:e,name:i,type:a??void 0,parentId:o??void 0,topic:s??void 0,position:c??void 0,nsfw:l},{accountId:r}):await W({guildId:e,name:i,type:a??void 0,parentId:o??void 0,topic:s??void 0,position:c??void 0,nsfw:l})})}case`channelEdit`:{if(!n(`channels`))throw Error(`Discord channel management is disabled.`);let e=h(t,`channelId`,{required:!0}),i=h(t,`name`),a=h(t,`topic`),o=p(t,`position`,{integer:!0}),s=M(t),c=t.nsfw,l=p(t,`rateLimitPerUser`,{integer:!0}),u=typeof t.archived==`boolean`?t.archived:void 0,d=typeof t.locked==`boolean`?t.locked:void 0,f=p(t,`autoArchiveDuration`,{integer:!0}),g=m(t.availableTags),v={channelId:e,name:i??void 0,topic:a??void 0,position:o??void 0,parentId:s,nsfw:c,rateLimitPerUser:l??void 0,archived:u,locked:d,autoArchiveDuration:f??void 0,availableTags:g};return _({ok:!0,channel:r?await G(v,{accountId:r}):await G(v)})}case`channelDelete`:{if(!n(`channels`))throw Error(`Discord channel management is disabled.`);let e=h(t,`channelId`,{required:!0});return _(r?await K(e,{accountId:r}):await K(e))}case`channelMove`:{if(!n(`channels`))throw Error(`Discord channel management is disabled.`);let e=h(t,`guildId`,{required:!0}),i=h(t,`channelId`,{required:!0}),a=M(t),o=p(t,`position`,{integer:!0});return r?await ln({guildId:e,channelId:i,parentId:a,position:o??void 0},{accountId:r}):await ln({guildId:e,channelId:i,parentId:a,position:o??void 0}),_({ok:!0})}case`categoryCreate`:{if(!n(`channels`))throw Error(`Discord channel management is disabled.`);let e=h(t,`guildId`,{required:!0}),i=h(t,`name`,{required:!0}),a=p(t,`position`,{integer:!0});return _({ok:!0,category:r?await W({guildId:e,name:i,type:4,position:a??void 0},{accountId:r}):await W({guildId:e,name:i,type:4,position:a??void 0})})}case`categoryEdit`:{if(!n(`channels`))throw Error(`Discord channel management is disabled.`);let e=h(t,`categoryId`,{required:!0}),i=h(t,`name`),a=p(t,`position`,{integer:!0});return _({ok:!0,category:r?await G({channelId:e,name:i??void 0,position:a??void 0},{accountId:r}):await G({channelId:e,name:i??void 0,position:a??void 0})})}case`categoryDelete`:{if(!n(`channels`))throw Error(`Discord channel management is disabled.`);let e=h(t,`categoryId`,{required:!0});return _(r?await K(e,{accountId:r}):await K(e))}case`channelPermissionSet`:{if(!n(`channels`))throw Error(`Discord channel management is disabled.`);let e=h(t,`channelId`,{required:!0}),i=h(t,`targetId`,{required:!0}),a=h(t,`targetType`,{required:!0})===`member`?1:0,o=h(t,`allow`),s=h(t,`deny`);return r?await un({channelId:e,targetId:i,targetType:a,allow:o??void 0,deny:s??void 0},{accountId:r}):await un({channelId:e,targetId:i,targetType:a,allow:o??void 0,deny:s??void 0}),_({ok:!0})}case`channelPermissionRemove`:{if(!n(`channels`))throw Error(`Discord channel management is disabled.`);let e=h(t,`channelId`,{required:!0}),i=h(t,`targetId`,{required:!0});return r?await dn(e,i,{accountId:r}):await dn(e,i),_({ok:!0})}default:throw Error(`Unknown action: ${e}`)}}function Xr(e){if(e==null)return;let t;if(e instanceof Date)t=e.getTime();else if(typeof e==`number`&&Number.isFinite(e))t=e<0xe8d4a51000?Math.round(e*1e3):Math.round(e);else if(typeof e==`string`){let n=e.trim();if(!n)return;if(/^\d+(\.\d+)?$/.test(n)){let e=Number(n);Number.isFinite(e)&&(t=n.includes(`.`)?Math.round(e*1e3):n.length>=13?Math.round(e):Math.round(e*1e3))}else{let e=Date.parse(n);Number.isNaN(e)||(t=e)}}if(!(t===void 0||!Number.isFinite(t)))return{timestampMs:t,timestampUtc:new Date(t).toISOString()}}function Zr(e,t){let n=Xr(t);return n?{...e,timestampMs:typeof e.timestampMs==`number`&&Number.isFinite(e.timestampMs)?e.timestampMs:n.timestampMs,timestampUtc:typeof e.timestampUtc==`string`&&e.timestampUtc.trim()?e.timestampUtc:n.timestampUtc}:e}function Qr(e){let t=e.trim().match(/^(?:https?:\/\/)?(?:ptb\.|canary\.)?discord(?:app)?\.com\/channels\/(\d+)\/(\d+)\/(\d+)(?:\/?|\?.*)$/i);if(!t)throw Error(`Invalid Discord message link. Expected https://discord.com/channels/<guildId>/<channelId>/<messageId>.`);return{guildId:t[1],channelId:t[2],messageId:t[3]}}async function $r(e,t,r,i,a){let o=()=>Vt(h(t,`channelId`,{required:!0})),s=h(t,`accountId`),c=a?{cfg:a}:{},l=e=>!e||typeof e!=`object`?e:Zr(e,e.timestamp);switch(e){case`react`:{if(!r(`reactions`))throw Error(`Discord reactions are disabled.`);let e=o(),n=h(t,`messageId`,{required:!0}),{emoji:i,remove:a,isEmpty:l}=g(t,{removeErrorMessage:`Emoji is required to remove a Discord reaction.`});return a?(s?await Gr(e,n,i,{...c,accountId:s}):await Gr(e,n,i,c),_({ok:!0,removed:i})):l?_({ok:!0,removed:(s?await Kr(e,n,{...c,accountId:s}):await Kr(e,n,c)).removed}):(s?await Wr(e,n,i,{...c,accountId:s}):await Wr(e,n,i,c),_({ok:!0,added:i}))}case`reactions`:{if(!r(`reactions`))throw Error(`Discord reactions are disabled.`);let e=o(),n=h(t,`messageId`,{required:!0}),i=p(t,`limit`);return _({ok:!0,reactions:await qr(e,n,{...c,...s?{accountId:s}:{},limit:i})})}case`sticker`:{if(!r(`stickers`))throw Error(`Discord stickers are disabled.`);let e=h(t,`to`,{required:!0}),n=h(t,`content`);return await fr(e,v(t,`stickerIds`,{required:!0,label:`stickerIds`}),{...c,...s?{accountId:s}:{},content:n}),_({ok:!0})}case`poll`:{if(!r(`polls`))throw Error(`Discord polls are disabled.`);let e=h(t,`to`,{required:!0}),n=h(t,`content`),i=h(t,`question`,{required:!0}),a=v(t,`answers`,{required:!0,label:`answers`}),o=S(t,`allowMultiselect`),l=p(t,`durationHours`);return await pr(e,{question:i,options:a,maxSelections:b(a.length,o),durationHours:l},{...c,...s?{accountId:s}:{},content:n}),_({ok:!0})}case`permissions`:{if(!r(`permissions`))throw Error(`Discord permissions are disabled.`);let e=o();return _({ok:!0,permissions:s?await vt(e,{accountId:s}):await vt(e)})}case`fetchMessage`:{if(!r(`messages`))throw Error(`Discord message reads are disabled.`);let e=h(t,`messageLink`),n=h(t,`guildId`),i=h(t,`channelId`),a=h(t,`messageId`);if(e){let t=Qr(e);n=t.guildId,i=t.channelId,a=t.messageId}if(!n||!i||!a)throw Error(`Discord message fetch requires guildId, channelId, and messageId (or a valid messageLink).`);return _({ok:!0,message:l(s?await On(i,a,{accountId:s}):await On(i,a)),guildId:n,channelId:i,messageId:a})}case`readMessages`:{if(!r(`messages`))throw Error(`Discord message reads are disabled.`);let e=o(),n={limit:p(t,`limit`),before:h(t,`before`),after:h(t,`after`),around:h(t,`around`)};return _({ok:!0,messages:(s?await Dn(e,n,{accountId:s}):await Dn(e,n)).map(e=>l(e))})}case`sendMessage`:{if(!r(`messages`))throw Error(`Discord message sends are disabled.`);let e=h(t,`to`,{required:!0}),a=t.asVoice===!0,o=t.silent===!0,l=t.components,u=l&&typeof l==`object`&&!Array.isArray(l)?Nr(l):null,d=Array.isArray(l)||typeof l==`function`?l:void 0,f=h(t,`content`,{required:!a&&!u&&!d,allowEmpty:!0}),p=h(t,`mediaUrl`,{trim:!1})??h(t,`path`,{trim:!1})??h(t,`filePath`,{trim:!1}),m=h(t,`filename`),g=h(t,`replyTo`),v=t.embeds,y=Array.isArray(v)?v:void 0,b=h(t,`__sessionKey`),x=h(t,`__agentId`);if(u){if(a)throw Error(`Discord components cannot be sent as voice messages.`);if(y?.length)throw Error(`Discord components cannot include embeds.`);let t=f?.trim()?f:void 0;return _({ok:!0,result:await Ur(e,u.text?u:{...u,text:t},{...c,...s?{accountId:s}:{},silent:o,replyTo:g??void 0,sessionKey:b??void 0,agentId:x??void 0,mediaUrl:p??void 0,filename:m??void 0}),components:!0})}if(a){if(!p)throw Error(`Voice messages require a media file reference (mediaUrl, path, or filePath).`);if(f&&f.trim())throw Error(`Voice messages cannot include text content (Discord limitation). Remove the content parameter.`);return n(p),_({ok:!0,result:await hr(e,p,{...c,...s?{accountId:s}:{},replyTo:g,silent:o}),voiceMessage:!0})}return _({ok:!0,result:await dr(e,f??``,{...c,...s?{accountId:s}:{},mediaUrl:p,mediaLocalRoots:i?.mediaLocalRoots,replyTo:g,components:d,embeds:y,silent:o})})}case`editMessage`:{if(!r(`messages`))throw Error(`Discord message edits are disabled.`);let e=o(),n=h(t,`messageId`,{required:!0}),i=h(t,`content`,{required:!0});return _({ok:!0,message:s?await kn(e,n,{content:i},{accountId:s}):await kn(e,n,{content:i})})}case`deleteMessage`:{if(!r(`messages`))throw Error(`Discord message deletes are disabled.`);let e=o(),n=h(t,`messageId`,{required:!0});return s?await An(e,n,{accountId:s}):await An(e,n),_({ok:!0})}case`threadCreate`:{if(!r(`threads`))throw Error(`Discord threads are disabled.`);let e=o(),n=h(t,`name`,{required:!0}),i=h(t,`messageId`),a=h(t,`content`),c={name:n,messageId:i,autoArchiveMinutes:p(t,`autoArchiveMinutes`),content:a,appliedTags:v(t,`appliedTags`)??void 0};return _({ok:!0,thread:s?await Pn(e,c,{accountId:s}):await Pn(e,c)})}case`threadList`:{if(!r(`threads`))throw Error(`Discord threads are disabled.`);let e=h(t,`guildId`,{required:!0}),n=h(t,`channelId`),i=S(t,`includeArchived`),a=h(t,`before`),o=p(t,`limit`);return _({ok:!0,threads:s?await Fn({guildId:e,channelId:n,includeArchived:i,before:a,limit:o},{accountId:s}):await Fn({guildId:e,channelId:n,includeArchived:i,before:a,limit:o})})}case`threadReply`:{if(!r(`threads`))throw Error(`Discord threads are disabled.`);let e=o(),n=h(t,`content`,{required:!0}),a=h(t,`mediaUrl`),l=h(t,`replyTo`);return _({ok:!0,result:await dr(`channel:${e}`,n,{...c,...s?{accountId:s}:{},mediaUrl:a,mediaLocalRoots:i?.mediaLocalRoots,replyTo:l})})}case`pinMessage`:{if(!r(`pins`))throw Error(`Discord pins are disabled.`);let e=o(),n=h(t,`messageId`,{required:!0});return s?await jn(e,n,{accountId:s}):await jn(e,n),_({ok:!0})}case`unpinMessage`:{if(!r(`pins`))throw Error(`Discord pins are disabled.`);let e=o(),n=h(t,`messageId`,{required:!0});return s?await Mn(e,n,{accountId:s}):await Mn(e,n),_({ok:!0})}case`listPins`:{if(!r(`pins`))throw Error(`Discord pins are disabled.`);let e=o();return _({ok:!0,pins:(s?await Nn(e,{accountId:s}):await Nn(e)).map(e=>l(e))})}case`searchMessages`:{if(!r(`search`))throw Error(`Discord search is disabled.`);let e=h(t,`guildId`,{required:!0}),n=h(t,`content`,{required:!0}),i=h(t,`channelId`),a=v(t,`channelIds`),o=h(t,`authorId`),c=v(t,`authorIds`),u=p(t,`limit`),d=[...a??[],...i?[i]:[]],f=[...c??[],...o?[o]:[]],m=s?await In({guildId:e,content:n,channelIds:d.length?d:void 0,authorIds:f.length?f:void 0,limit:u},{accountId:s}):await In({guildId:e,content:n,channelIds:d.length?d:void 0,authorIds:f.length?f:void 0,limit:u});if(!m||typeof m!=`object`)return _({ok:!0,results:m});let g=m,y=g.messages,b=Array.isArray(y)?y.map(e=>Array.isArray(e)?e.map(e=>l(e)):e):y;return _({ok:!0,results:{...g,messages:b}})}default:throw Error(`Unknown action: ${e}`)}}const ei={timeout:E.ModerateMembers,kick:E.KickMembers,ban:E.BanMembers};function ti(e){return e===`timeout`||e===`kick`||e===`ban`}function ni(e){return ei[e]}function ri(e,t){if(!ti(e))throw Error(`Unsupported Discord moderation action: ${e}`);return{action:e,guildId:h(t,`guildId`,{required:!0}),userId:h(t,`userId`,{required:!0}),durationMinutes:p(t,`durationMinutes`,{integer:!0}),until:h(t,`until`),reason:h(t,`reason`),deleteMessageDays:p(t,`deleteMessageDays`,{integer:!0})}}async function ii(e){if(e.senderUserId&&!await _t(e.guildId,e.senderUserId,[e.requiredPermission],e.accountId?{accountId:e.accountId}:void 0))throw Error(`Sender does not have required permissions for this moderation action.`)}async function ai(e,t,n){if(!ti(e))throw Error(`Unknown action: ${e}`);if(!n(`moderation`,!1))throw Error(`Discord moderation is disabled.`);let r=ri(e,t),i=h(t,`accountId`),a=h(t,`senderUserId`);switch(await ii({guildId:r.guildId,senderUserId:a,requiredPermission:ni(r.action),accountId:i}),r.action){case`timeout`:return _({ok:!0,member:i?await wn({guildId:r.guildId,userId:r.userId,durationMinutes:r.durationMinutes,until:r.until,reason:r.reason},{accountId:i}):await wn({guildId:r.guildId,userId:r.userId,durationMinutes:r.durationMinutes,until:r.until,reason:r.reason})});case`kick`:return i?await Tn({guildId:r.guildId,userId:r.userId,reason:r.reason},{accountId:i}):await Tn({guildId:r.guildId,userId:r.userId,reason:r.reason}),_({ok:!0});case`ban`:return i?await En({guildId:r.guildId,userId:r.userId,reason:r.reason,deleteMessageDays:r.deleteMessageDays},{accountId:i}):await En({guildId:r.guildId,userId:r.userId,reason:r.reason,deleteMessageDays:r.deleteMessageDays}),_({ok:!0})}}const oi=new Map;function si(e){return e??`\0__default__`}function ci(e){return oi.get(si(e))}const li={playing:0,streaming:1,listening:2,watching:3,custom:4,competing:5},ui=new Set([`online`,`dnd`,`idle`,`invisible`]);async function di(e,t,n){if(e!==`setPresence`)throw Error(`Unknown presence action: ${e}`);if(!n(`presence`,!1))throw Error(`Discord presence changes are disabled.`);let r=h(t,`accountId`),i=ci(r);if(!i)throw Error(`Discord gateway not available${r?` for account "${r}"`:``}. The bot may not be connected.`);if(!i.isConnected)throw Error(`Discord gateway is not connected${r?` for account "${r}"`:``}.`);let a=h(t,`status`)??`online`;if(!ui.has(a))throw Error(`Invalid status "${a}". Must be one of: ${[...ui].join(`, `)}`);let o=a,s=h(t,`activityType`),c=h(t,`activityName`),l=[];if(s||c){if(!s)throw Error(`activityType is required when activityName is provided. Valid types: ${Object.keys(li).join(`, `)}`);let e=li[s.toLowerCase()];if(e===void 0)throw Error(`Invalid activityType "${s}". Must be one of: ${Object.keys(li).join(`, `)}`);let n={name:c??``,type:e};if(e===1){let e=h(t,`activityUrl`);e&&(n.url=e)}let r=h(t,`activityState`);r&&(n.state=r),l.push(n)}let u={since:null,activities:l,status:o,afk:!1};return i.updatePresence(u),_({ok:!0,status:o,activities:l.map(e=>({type:e.type,name:e.name,...e.url?{url:e.url}:{},...e.state?{state:e.state}:{}}))})}const fi=new Set([`react`,`reactions`,`sticker`,`poll`,`permissions`,`fetchMessage`,`readMessages`,`sendMessage`,`editMessage`,`deleteMessage`,`threadCreate`,`threadList`,`threadReply`,`pinMessage`,`unpinMessage`,`listPins`,`searchMessages`]),pi=new Set([`memberInfo`,`roleInfo`,`emojiList`,`emojiUpload`,`stickerUpload`,`roleAdd`,`roleRemove`,`channelInfo`,`channelList`,`voiceStatus`,`eventList`,`eventCreate`,`channelCreate`,`channelEdit`,`channelDelete`,`channelMove`,`categoryCreate`,`categoryEdit`,`categoryDelete`,`channelPermissionSet`,`channelPermissionRemove`]),mi=new Set([`timeout`,`kick`,`ban`]),hi=new Set([`setPresence`]);async function $(e,t,n){let i=h(e,`action`,{required:!0}),a=r({cfg:t,accountId:h(e,`accountId`)});if(fi.has(i))return await $r(i,e,a,n,t);if(pi.has(i))return await Yr(i,e,a);if(mi.has(i))return await ai(i,e,a);if(hi.has(i))return await di(i,e,a);throw Error(`Unknown action: ${i}`)}async function gi(e){let{ctx:t,resolveChannelId:n,readParentIdParam:r}=e,{action:i,params:a,cfg:o}=t,s=t.accountId??h(a,`accountId`);if(i===`member-info`){let e=h(a,`userId`,{required:!0}),t=h(a,`guildId`,{required:!0});return await $({action:`memberInfo`,accountId:s??void 0,guildId:t,userId:e},o)}if(i===`role-info`){let e=h(a,`guildId`,{required:!0});return await $({action:`roleInfo`,accountId:s??void 0,guildId:e},o)}if(i===`emoji-list`){let e=h(a,`guildId`,{required:!0});return await $({action:`emojiList`,accountId:s??void 0,guildId:e},o)}if(i===`emoji-upload`){let e=h(a,`guildId`,{required:!0}),t=h(a,`emojiName`,{required:!0}),n=h(a,`media`,{required:!0,trim:!1}),r=v(a,`roleIds`);return await $({action:`emojiUpload`,accountId:s??void 0,guildId:e,name:t,mediaUrl:n,roleIds:r},o)}if(i===`sticker-upload`){let e=h(a,`guildId`,{required:!0}),t=h(a,`stickerName`,{required:!0}),n=h(a,`stickerDesc`,{required:!0}),r=h(a,`stickerTags`,{required:!0}),i=h(a,`media`,{required:!0,trim:!1});return await $({action:`stickerUpload`,accountId:s??void 0,guildId:e,name:t,description:n,tags:r,mediaUrl:i},o)}if(i===`role-add`||i===`role-remove`){let e=h(a,`guildId`,{required:!0}),t=h(a,`userId`,{required:!0}),n=h(a,`roleId`,{required:!0});return await $({action:i===`role-add`?`roleAdd`:`roleRemove`,accountId:s??void 0,guildId:e,userId:t,roleId:n},o)}if(i===`channel-info`){let e=h(a,`channelId`,{required:!0});return await $({action:`channelInfo`,accountId:s??void 0,channelId:e},o)}if(i===`channel-list`){let e=h(a,`guildId`,{required:!0});return await $({action:`channelList`,accountId:s??void 0,guildId:e},o)}if(i===`channel-create`){let e=h(a,`guildId`,{required:!0}),t=h(a,`name`,{required:!0}),n=p(a,`type`,{integer:!0}),i=r(a),c=h(a,`topic`),l=p(a,`position`,{integer:!0}),u=typeof a.nsfw==`boolean`?a.nsfw:void 0;return await $({action:`channelCreate`,accountId:s??void 0,guildId:e,name:t,type:n??void 0,parentId:i??void 0,topic:c??void 0,position:l??void 0,nsfw:u},o)}if(i===`channel-edit`){let e=h(a,`channelId`,{required:!0}),t=h(a,`name`),n=h(a,`topic`),i=p(a,`position`,{integer:!0}),c=r(a),l=typeof a.nsfw==`boolean`?a.nsfw:void 0,u=p(a,`rateLimitPerUser`,{integer:!0}),d=typeof a.archived==`boolean`?a.archived:void 0,f=typeof a.locked==`boolean`?a.locked:void 0,g=p(a,`autoArchiveDuration`,{integer:!0}),_=m(a.availableTags);return await $({action:`channelEdit`,accountId:s??void 0,channelId:e,name:t??void 0,topic:n??void 0,position:i??void 0,parentId:c===void 0?void 0:c,nsfw:l,rateLimitPerUser:u??void 0,archived:d,locked:f,autoArchiveDuration:g??void 0,availableTags:_},o)}if(i===`channel-delete`){let e=h(a,`channelId`,{required:!0});return await $({action:`channelDelete`,accountId:s??void 0,channelId:e},o)}if(i===`channel-move`){let e=h(a,`guildId`,{required:!0}),t=h(a,`channelId`,{required:!0}),n=r(a),i=p(a,`position`,{integer:!0});return await $({action:`channelMove`,accountId:s??void 0,guildId:e,channelId:t,parentId:n===void 0?void 0:n,position:i??void 0},o)}if(i===`category-create`){let e=h(a,`guildId`,{required:!0}),t=h(a,`name`,{required:!0}),n=p(a,`position`,{integer:!0});return await $({action:`categoryCreate`,accountId:s??void 0,guildId:e,name:t,position:n??void 0},o)}if(i===`category-edit`){let e=h(a,`categoryId`,{required:!0}),t=h(a,`name`),n=p(a,`position`,{integer:!0});return await $({action:`categoryEdit`,accountId:s??void 0,categoryId:e,name:t??void 0,position:n??void 0},o)}if(i===`category-delete`){let e=h(a,`categoryId`,{required:!0});return await $({action:`categoryDelete`,accountId:s??void 0,categoryId:e},o)}if(i===`voice-status`){let e=h(a,`guildId`,{required:!0}),t=h(a,`userId`,{required:!0});return await $({action:`voiceStatus`,accountId:s??void 0,guildId:e,userId:t},o)}if(i===`event-list`){let e=h(a,`guildId`,{required:!0});return await $({action:`eventList`,accountId:s??void 0,guildId:e},o)}if(i===`event-create`){let e=h(a,`guildId`,{required:!0}),t=h(a,`eventName`,{required:!0}),n=h(a,`startTime`,{required:!0}),r=h(a,`endTime`),i=h(a,`desc`),c=h(a,`channelId`),l=h(a,`location`),u=h(a,`eventType`);return await $({action:`eventCreate`,accountId:s??void 0,guildId:e,name:t,startTime:n,endTime:r,description:i,channelId:c,location:l,entityType:u},o)}if(ti(i)){let e=ri(i,{...a,durationMinutes:p(a,`durationMin`,{integer:!0}),deleteMessageDays:p(a,`deleteDays`,{integer:!0})}),n=t.requesterSenderId?.trim()||void 0;return await $({action:e.action,accountId:s??void 0,guildId:e.guildId,userId:e.userId,durationMinutes:e.durationMinutes,until:e.until,reason:e.reason,deleteMessageDays:e.deleteMessageDays,senderUserId:n},o)}if(i===`thread-list`){let e=h(a,`guildId`,{required:!0}),t=h(a,`channelId`),n=typeof a.includeArchived==`boolean`?a.includeArchived:void 0,r=h(a,`before`),i=p(a,`limit`,{integer:!0});return await $({action:`threadList`,accountId:s??void 0,guildId:e,channelId:t,includeArchived:n,before:r,limit:i},o)}if(i===`thread-reply`){let e=h(a,`message`,{required:!0}),t=h(a,`media`,{trim:!1}),r=h(a,`replyTo`),i=h(a,`threadId`)??n();return await $({action:`threadReply`,accountId:s??void 0,channelId:i,content:e,mediaUrl:t??void 0,replyTo:r??void 0},o)}if(i===`search`){let e=h(a,`guildId`,{required:!0}),t=h(a,`query`,{required:!0});return await $({action:`searchMessages`,accountId:s??void 0,guildId:e,content:t,channelId:h(a,`channelId`),channelIds:v(a,`channelIds`),authorId:h(a,`authorId`),authorIds:v(a,`authorIds`),limit:p(a,`limit`,{integer:!0})},o)}}async function _i(e){let{action:t,params:n,cfg:r}=e,i=e.accountId??h(n,`accountId`),a={mediaLocalRoots:e.mediaLocalRoots},o=()=>Vt(h(n,`channelId`)??h(n,`to`,{required:!0}));if(t===`send`){let e=h(n,`to`,{required:!0}),t=S(n,`asVoice`)===!0,o=n.components,s=!!o&&(typeof o==`function`||typeof o==`object`),c=s?o:void 0,l=h(n,`message`,{required:!t&&!s,allowEmpty:!0}),u=h(n,`media`,{trim:!1})??h(n,`path`,{trim:!1})??h(n,`filePath`,{trim:!1}),d=h(n,`filename`),f=h(n,`replyTo`),p=n.embeds,m=Array.isArray(p)?p:void 0,g=S(n,`silent`)===!0,_=h(n,`__sessionKey`),v=h(n,`__agentId`);return await $({action:`sendMessage`,accountId:i??void 0,to:e,content:l,mediaUrl:u??void 0,filename:d??void 0,replyTo:f??void 0,components:c,embeds:m,asVoice:t,silent:g,__sessionKey:_??void 0,__agentId:v??void 0},r,a)}if(t===`poll`){let e=h(n,`to`,{required:!0}),t=h(n,`pollQuestion`,{required:!0}),o=v(n,`pollOption`,{required:!0}),s=S(n,`pollMulti`),c=p(n,`pollDurationHours`,{integer:!0,strict:!0});return await $({action:`poll`,accountId:i??void 0,to:e,question:t,answers:o,allowMultiselect:s,durationHours:c??void 0,content:h(n,`message`)},r,a)}if(t===`react`){let t=y({args:n,toolContext:e.toolContext}),s=t==null?``:String(t).trim();if(!s)throw Error(`messageId required. Provide messageId explicitly or react to the current inbound message.`);let c=h(n,`emoji`,{allowEmpty:!0}),l=S(n,`remove`);return await $({action:`react`,accountId:i??void 0,channelId:o(),messageId:s,emoji:c,remove:l},r,a)}if(t===`reactions`){let e=h(n,`messageId`,{required:!0}),t=p(n,`limit`,{integer:!0});return await $({action:`reactions`,accountId:i??void 0,channelId:o(),messageId:e,limit:t},r,a)}if(t===`read`){let e=p(n,`limit`,{integer:!0});return await $({action:`readMessages`,accountId:i??void 0,channelId:o(),limit:e,before:h(n,`before`),after:h(n,`after`),around:h(n,`around`)},r,a)}if(t===`edit`){let e=h(n,`messageId`,{required:!0}),t=h(n,`message`,{required:!0});return await $({action:`editMessage`,accountId:i??void 0,channelId:o(),messageId:e,content:t},r,a)}if(t===`delete`){let e=h(n,`messageId`,{required:!0});return await $({action:`deleteMessage`,accountId:i??void 0,channelId:o(),messageId:e},r,a)}if(t===`pin`||t===`unpin`||t===`list-pins`){let e=t===`list-pins`?void 0:h(n,`messageId`,{required:!0});return await $({action:t===`pin`?`pinMessage`:t===`unpin`?`unpinMessage`:`listPins`,accountId:i??void 0,channelId:o(),messageId:e},r,a)}if(t===`permissions`)return await $({action:`permissions`,accountId:i??void 0,channelId:o()},r,a);if(t===`thread-create`){let e=h(n,`threadName`,{required:!0}),t=h(n,`messageId`),s=h(n,`message`),c=p(n,`autoArchiveMin`,{integer:!0}),l=v(n,`appliedTags`);return await $({action:`threadCreate`,accountId:i??void 0,channelId:o(),name:e,messageId:t,content:s,autoArchiveMinutes:c,appliedTags:l??void 0},r,a)}if(t===`sticker`){let e=v(n,`stickerId`,{required:!0,label:`sticker-id`})??[];return await $({action:`sticker`,accountId:i??void 0,to:h(n,`to`,{required:!0}),stickerIds:e,content:h(n,`message`)},r,a)}if(t===`set-presence`)return await $({action:`setPresence`,accountId:i??void 0,status:h(n,`status`),activityType:h(n,`activityType`),activityName:h(n,`activityName`),activityUrl:h(n,`activityUrl`),activityState:h(n,`activityState`)},r,a);let s=await gi({ctx:e,resolveChannelId:o,readParentIdParam:M});if(s!==void 0)return s;throw Error(`Action ${String(t)} is not supported for provider discord.`)}const vi={listActions:({cfg:e})=>{let t=ae(u(e));if(t.length===0)return[];let n=le(t,t=>r({cfg:e,accountId:t.accountId})),i=(e,t=!0)=>n(e,t),a=new Set([`send`]);return i(`polls`)&&a.add(`poll`),i(`reactions`)&&(a.add(`react`),a.add(`reactions`)),i(`messages`)&&(a.add(`read`),a.add(`edit`),a.add(`delete`)),i(`pins`)&&(a.add(`pin`),a.add(`unpin`),a.add(`list-pins`)),i(`permissions`)&&a.add(`permissions`),i(`threads`)&&(a.add(`thread-create`),a.add(`thread-list`),a.add(`thread-reply`)),i(`search`)&&a.add(`search`),i(`stickers`)&&a.add(`sticker`),i(`memberInfo`)&&a.add(`member-info`),i(`roleInfo`)&&a.add(`role-info`),i(`reactions`)&&a.add(`emoji-list`),i(`emojiUploads`)&&a.add(`emoji-upload`),i(`stickerUploads`)&&a.add(`sticker-upload`),i(`roles`,!1)&&(a.add(`role-add`),a.add(`role-remove`)),i(`channelInfo`)&&(a.add(`channel-info`),a.add(`channel-list`)),i(`channels`)&&(a.add(`channel-create`),a.add(`channel-edit`),a.add(`channel-delete`),a.add(`channel-move`),a.add(`category-create`),a.add(`category-edit`),a.add(`category-delete`)),i(`voiceStatus`)&&a.add(`voice-status`),i(`events`)&&(a.add(`event-list`),a.add(`event-create`)),i(`moderation`,!1)&&(a.add(`timeout`),a.add(`kick`),a.add(`ban`)),i(`presence`,!1)&&a.add(`set-presence`),Array.from(a)},extractToolSend:({args:e})=>{let t=typeof e.action==`string`?e.action.trim():``;if(t===`sendMessage`){let t=typeof e.to==`string`?e.to:void 0;return t?{to:t}:null}if(t===`threadReply`){let t=typeof e.channelId==`string`?e.channelId.trim():``;return t?{to:`channel:${t}`}:null}return null},handleAction:async({action:e,params:t,cfg:n,accountId:r,requesterSenderId:i,toolContext:a,mediaLocalRoots:o})=>await _i({action:e,params:t,cfg:n,accountId:r,requesterSenderId:i,toolContext:a,mediaLocalRoots:o})};export{vi as discordMessageActions};
7
+ `).find(e=>e.trim())?.trim()??``).slice(0,100)||new Date().toISOString().slice(0,16)}function lr(e){return e===T.GuildForum||e===T.GuildMedia}function q(e,t){return{messageId:e.id?String(e.id):`unknown`,channelId:String(e.channel_id??t)}}async function ur(e,t){let n=t.cfg??l(),{rest:r,request:i}=P(t,n),{channelId:a}=await V(r,await R(e,t.accountId,n),i);return{rest:r,request:i,channelId:a}}async function dr(e,t,n={}){let r=n.cfg??l(),i=s({cfg:r,accountId:n.accountId}),a=ce({cfg:r,channel:`discord`,accountId:i.accountId}),o=ee(r,`discord`,i.accountId),c=typeof i.config.mediaMaxMb==`number`?i.config.mediaMaxMb*1024*1024:8*1024*1024,u=Rn(t??``,a),d=Kn(u,{accountId:i.accountId}),{token:f,rest:p,request:m}=P(n,r),{channelId:h}=await V(p,await R(e,n.accountId,r),m);if(lr(await Xt(p,h))){let e=cr(u),t=Zt(d,{maxLinesPerMessage:i.config.maxLinesPerMessage,chunkMode:o}),r=t[0]?.trim()?t[0]:e,a=nn({text:r,components:$t({components:n.components,text:r,isFirst:!0}),embeds:tn({embeds:n.embeds,isFirst:!0}),flags:n.silent?4096:void 0}),s;try{s=await m(()=>p.post(D.threads(h),{body:{name:e,message:U(A(a))}}),`forum-thread`)}catch(e){throw await B(e,{channelId:h,rest:p,token:f,hasMedia:!!n.mediaUrl})}let l=s.id,g=s.message?.id??l,_=s.message?.channel_id??l,v=t.slice(1);try{if(n.mediaUrl){let[e,...t]=v;await on(p,l,e??``,n.mediaUrl,n.mediaLocalRoots,c,void 0,m,i.config.maxLinesPerMessage,void 0,void 0,o,n.silent),await sr({rest:p,threadId:l,chunks:t,request:m,maxLinesPerMessage:i.config.maxLinesPerMessage,chunkMode:o,silent:n.silent})}else await sr({rest:p,threadId:l,chunks:v,request:m,maxLinesPerMessage:i.config.maxLinesPerMessage,chunkMode:o,silent:n.silent})}catch(e){throw await B(e,{channelId:l,rest:p,token:f,hasMedia:!!n.mediaUrl})}return pe({channel:`discord`,accountId:i.accountId,direction:`outbound`}),q({id:g,channel_id:_},h)}let g;try{g=n.mediaUrl?await on(p,h,d,n.mediaUrl,n.mediaLocalRoots,c,n.replyTo,m,i.config.maxLinesPerMessage,n.components,n.embeds,o,n.silent):await an(p,h,d,n.replyTo,m,i.config.maxLinesPerMessage,n.components,n.embeds,o,n.silent)}catch(e){throw await B(e,{channelId:h,rest:p,token:f,hasMedia:!!n.mediaUrl})}return pe({channel:`discord`,accountId:i.accountId,direction:`outbound`}),q(g,h)}async function fr(e,t,n={}){let{rest:r,request:i,channelId:a}=await ur(e,n),o=n.content?.trim(),s=o?Kn(o,{accountId:n.accountId}):void 0,c=qt(t);return q(await i(()=>r.post(D.channelMessages(a),{body:{content:s||void 0,sticker_ids:c}}),`sticker`),a)}async function pr(e,t,n={}){let{rest:r,request:i,channelId:a}=await ur(e,n),o=n.content?.trim(),s=o?Kn(o,{accountId:n.accountId}):void 0;if(t.durationSeconds!==void 0)throw Error(`Discord polls do not support durationSeconds; use durationHours`);let c=Jt(t),l=n.silent?H:void 0;return q(await i(()=>r.post(D.channelMessages(a),{body:{content:s||void 0,poll:c,...l?{flags:l}:{}}}),`poll`),a)}async function mr(n){let r=await se(n,e(`audio`)),i=r.fileName?C.extname(r.fileName):``,a=r.contentType?t(r.contentType):``,o=i||a||`.bin`,s=f(),c=C.join(s,`voice-src-${j.randomUUID()}${o}`);return await me.writeFile(c,r.buffer,{mode:384}),{filePath:c}}async function hr(e,t,n={}){let{filePath:r}=await mr(t),i=null,a=!1,o,c,u;try{let t=n.cfg??l(),d=s({cfg:t,accountId:n.accountId}),f=P(n,t);o=f.token,c=f.rest;let p=f.request,m=await R(e,n.accountId,t);u=(await V(c,m,p)).channelId;let h=await ir(r);i=h.path,a=h.cleanup;let g=await ar(i),_=await me.readFile(i),v=await or(c,u,_,g,n.replyTo,p,n.silent,o);return pe({channel:`discord`,accountId:d.accountId,direction:`outbound`}),q(v,u)}catch(e){throw u&&c&&o?await B(e,{channelId:u,rest:c,token:o,hasMedia:!0}):e}finally{await zn(a?i:null),await zn(r)}}const gr=new Map,_r=new Map;function vr(e,t,n){let r=e.createdAt??t,i=e.expiresAt??r+n;return{...e,createdAt:r,expiresAt:i}}function yr(e){let t=Date.now(),n=e.ttlMs??18e5;for(let r of e.entries){let i=vr({...r,messageId:e.messageId??r.messageId},t,n);gr.set(r.id,i)}for(let r of e.modals){let i=vr({...r,messageId:e.messageId??r.messageId},t,n);_r.set(r.id,i)}}const br=`attachment://`,xr=new Map([[`row`,`actions`],[`action-row`,`actions`]]);function J(e){return`${e}${j.randomBytes(6).toString(`base64url`)}`}function Y(e,t){if(!e||typeof e!=`object`||Array.isArray(e))throw Error(`${t} must be an object`);return e}function X(e,t,n){if(typeof e!=`string`)throw Error(`${t} must be a string`);let r=e.trim();if(!n?.allowEmpty&&!r)throw Error(`${t} cannot be empty`);return n?.allowEmpty?e:r}function Z(e){return typeof e==`string`&&e.trim()||void 0}function Sr(e,t){if(e!==void 0){if(!Array.isArray(e))throw Error(`${t} must be an array`);if(e.length!==0)return e.map((e,n)=>X(e,`${t}[${n}]`))}}function Q(e){if(!(typeof e!=`number`||!Number.isFinite(e)))return e}function Cr(e,t){return e?.trim()||`field_${t+1}`}function wr(e,t){let n=e.trim();if(!n.startsWith(`attachment://`))throw Error(`${t} must start with "${br}"`);let r=n.slice(13).trim();if(!r)throw Error(`${t} must include an attachment filename`);return`${br}${r}`}function Tr(e){let t=e.trim();if(!t.startsWith(`attachment://`))throw Error(`Attachment reference must start with "${br}"`);let n=t.slice(13).trim();if(!n)throw Error(`Attachment reference must include a filename`);return n}function Er(e){switch((e??`primary`).toLowerCase()){case`secondary`:return w.Secondary;case`success`:return w.Success;case`danger`:return w.Danger;case`link`:return w.Link;default:return w.Primary}}function Dr(e){let t=e.trim().toLowerCase();return xr.get(t)??t}function Or(e,t){if(e!==void 0){if(!Array.isArray(e))throw Error(`${t} must be an array`);return e.map((e,n)=>{let r=Y(e,`${t}[${n}]`);return{label:X(r.label,`${t}[${n}].label`),value:X(r.value,`${t}[${n}].value`),description:Z(r.description),emoji:typeof r.emoji==`object`&&r.emoji&&!Array.isArray(r.emoji)?{name:X(r.emoji.name,`${t}[${n}].emoji.name`),id:Z(r.emoji.id),animated:typeof r.emoji.animated==`boolean`?r.emoji.animated:void 0}:void 0,default:typeof r.default==`boolean`?r.default:void 0}})}}function kr(e,t){let n=Y(e,t),r=Z(n.style),i=Z(n.url);if((r===`link`||i)&&!i)throw Error(`${t}.url is required for link buttons`);return{label:X(n.label,`${t}.label`),style:r,url:i,emoji:typeof n.emoji==`object`&&n.emoji&&!Array.isArray(n.emoji)?{name:X(n.emoji.name,`${t}.emoji.name`),id:Z(n.emoji.id),animated:typeof n.emoji.animated==`boolean`?n.emoji.animated:void 0}:void 0,disabled:typeof n.disabled==`boolean`?n.disabled:void 0,allowedUsers:Sr(n.allowedUsers,`${t}.allowedUsers`)}}function Ar(e,t){let n=Y(e,t),r=Z(n.type),i=[`string`,`user`,`role`,`mentionable`,`channel`];if(r&&!i.includes(r))throw Error(`${t}.type must be one of ${i.join(`, `)}`);return{type:r,placeholder:Z(n.placeholder),minValues:Q(n.minValues),maxValues:Q(n.maxValues),options:Or(n.options,`${t}.options`)}}function jr(e,t,n){let r=Y(e,t),i=X(r.type,`${t}.type`).toLowerCase(),a=[`text`,`checkbox`,`radio`,`select`,`role-select`,`user-select`];if(!a.includes(i))throw Error(`${t}.type must be one of ${a.join(`, `)}`);let o=Or(r.options,`${t}.options`);if([`checkbox`,`radio`,`select`].includes(i)&&(!o||o.length===0))throw Error(`${t}.options is required for ${i} fields`);return{type:i,name:Cr(Z(r.name),n),label:X(r.label,`${t}.label`),description:Z(r.description),placeholder:Z(r.placeholder),required:typeof r.required==`boolean`?r.required:void 0,options:o,minValues:Q(r.minValues),maxValues:Q(r.maxValues),minLength:Q(r.minLength),maxLength:Q(r.maxLength),style:Z(r.style)}}function Mr(e,t){let n=Y(e,t);switch(Dr(X(n.type,`${t}.type`).toLowerCase())){case`text`:return{type:`text`,text:X(n.text,`${t}.text`)};case`section`:{let e=Z(n.text),r=n.texts,i=Array.isArray(r)?r.map((e,n)=>X(e,`${t}.texts[${n}]`)):void 0;if(!e&&(!i||i.length===0))throw Error(`${t}.text or ${t}.texts is required for section blocks`);let a;if(n.accessory!==void 0){let e=Y(n.accessory,`${t}.accessory`),r=X(e.type,`${t}.accessory.type`).toLowerCase();if(r===`thumbnail`)a={type:`thumbnail`,url:X(e.url,`${t}.accessory.url`)};else if(r===`button`)a={type:`button`,button:kr(e.button,`${t}.accessory.button`)};else throw Error(`${t}.accessory.type must be "thumbnail" or "button"`)}return{type:`section`,text:e,texts:i,accessory:a}}case`separator`:{let e=n.spacing,r;if(e===`small`||e===`large`)r=e;else if(e===1||e===2)r=e;else if(e!==void 0)throw Error(`${t}.spacing must be "small", "large", 1, or 2`);let i=typeof n.divider==`boolean`?n.divider:void 0;return{type:`separator`,spacing:r,divider:i}}case`actions`:{let e=n.buttons,r=Array.isArray(e)?e.map((e,n)=>kr(e,`${t}.buttons[${n}]`)):void 0,i=n.select?Ar(n.select,`${t}.select`):void 0;if((!r||r.length===0)&&!i)throw Error(`${t} requires buttons or select`);if(r&&i)throw Error(`${t} cannot include both buttons and select`);return{type:`actions`,buttons:r,select:i}}case`media-gallery`:{let e=n.items;if(!Array.isArray(e)||e.length===0)throw Error(`${t}.items must be a non-empty array`);return{type:`media-gallery`,items:e.map((e,n)=>{let r=Y(e,`${t}.items[${n}]`);return{url:X(r.url,`${t}.items[${n}].url`),description:Z(r.description),spoiler:typeof r.spoiler==`boolean`?r.spoiler:void 0}})}}case`file`:return{type:`file`,file:wr(X(n.file,`${t}.file`),`${t}.file`),spoiler:typeof n.spoiler==`boolean`?n.spoiler:void 0};default:throw Error(`${t}.type must be a supported component block`)}}function Nr(e){if(e==null)return null;let t=Y(e,`components`),n=t.blocks,r=Array.isArray(n)?n.map((e,t)=>Mr(e,`components.blocks[${t}]`)):void 0,i=t.modal,a=typeof t.reusable==`boolean`?t.reusable:void 0,o;if(i!==void 0){let e=Y(i,`components.modal`),t=e.fields;if(!Array.isArray(t)||t.length===0)throw Error(`components.modal.fields must be a non-empty array`);if(t.length>5)throw Error(`components.modal.fields supports up to 5 inputs`);let n=t.map((e,t)=>jr(e,`components.modal.fields[${t}]`,t));o={title:X(e.title,`components.modal.title`),triggerLabel:Z(e.triggerLabel),triggerStyle:Z(e.triggerStyle),fields:n}}return{text:Z(t.text),reusable:a,container:typeof t.container==`object`&&t.container&&!Array.isArray(t.container)?{accentColor:t.container.accentColor,spoiler:typeof t.container.spoiler==`boolean`?t.container.spoiler:void 0}:void 0,blocks:r,modal:o}}function Pr(e){let t=`occomp:cid=${e.componentId}`;return e.modalId?`${t};mid=${e.modalId}`:t}function Fr(e,t){return t&&t.length>0?t.map(e=>new k(e)):e?[new k(e)]:[]}function Ir(e){let t=Er(e.spec.style);if(t===w.Link||e.spec.url){if(!e.spec.url)throw Error(`Link buttons require a url`);let t=e.spec.url;class n extends Ce{constructor(...n){super(...n),this.label=e.spec.label,this.url=t}}return{component:new n}}let n=e.componentId??J(`btn_`),r=Pr({componentId:n,modalId:e.modalId});class i extends ve{constructor(...n){super(...n),this.label=e.spec.label,this.customId=r,this.style=t,this.emoji=e.spec.emoji,this.disabled=e.spec.disabled??!1}}return{component:new i,entry:{id:n,kind:e.modalId?`modal-trigger`:`button`,label:e.spec.label,modalId:e.modalId,allowedUsers:e.spec.allowedUsers}}}function Lr(e){let t=(e.spec.type??`string`).toLowerCase(),n=e.componentId??J(`sel_`),r=Pr({componentId:n});if(t===`string`){let t=e.spec.options??[];if(t.length===0)throw Error(`String select menus require options`);class i extends je{constructor(...n){super(...n),this.customId=r,this.options=t,this.minValues=e.spec.minValues,this.maxValues=e.spec.maxValues,this.placeholder=e.spec.placeholder,this.disabled=!1}}return{component:new i,entry:{id:n,kind:`select`,label:e.spec.placeholder??`select`,selectType:`string`,options:t.map(e=>({value:e.value,label:e.label}))}}}if(t===`user`){class t extends Ne{constructor(...t){super(...t),this.customId=r,this.minValues=e.spec.minValues,this.maxValues=e.spec.maxValues,this.placeholder=e.spec.placeholder,this.disabled=!1}}return{component:new t,entry:{id:n,kind:`select`,label:e.spec.placeholder??`user select`,selectType:`user`}}}if(t===`role`){class t extends Oe{constructor(...t){super(...t),this.customId=r,this.minValues=e.spec.minValues,this.maxValues=e.spec.maxValues,this.placeholder=e.spec.placeholder,this.disabled=!1}}return{component:new t,entry:{id:n,kind:`select`,label:e.spec.placeholder??`role select`,selectType:`role`}}}if(t===`mentionable`){class t extends Te{constructor(...t){super(...t),this.customId=r,this.minValues=e.spec.minValues,this.maxValues=e.spec.maxValues,this.placeholder=e.spec.placeholder,this.disabled=!1}}return{component:new t,entry:{id:n,kind:`select`,label:e.spec.placeholder??`mentionable select`,selectType:`mentionable`}}}class i extends ye{constructor(...t){super(...t),this.customId=r,this.minValues=e.spec.minValues,this.maxValues=e.spec.maxValues,this.placeholder=e.spec.placeholder,this.disabled=!1}}return{component:new i,entry:{id:n,kind:`select`,label:e.spec.placeholder??`channel select`,selectType:`channel`}}}function Rr(e){return e instanceof je||e instanceof Ne||e instanceof Oe||e instanceof Te||e instanceof ye}function zr(e){let t=[],n=[],r=[],i=[],a=n=>{t.push({...n,sessionKey:e.sessionKey,agentId:e.agentId,accountId:e.accountId,reusable:n.reusable??e.spec.reusable})},o=e.spec.text??e.fallbackText;o&&i.push(new k(o));for(let t of e.spec.blocks??[]){if(t.type===`text`){i.push(new k(t.text));continue}if(t.type===`section`){let e=Fr(t.text,t.texts);if(e.length>3)throw Error(`Section blocks support up to 3 text displays`);let n;if(t.accessory?.type===`thumbnail`)n=new Me(t.accessory.url);else if(t.accessory?.type===`button`){let{component:e,entry:r}=Ir({spec:t.accessory.button});n=e,r&&a(r)}i.push(new ke(e,n));continue}if(t.type===`separator`){i.push(new Ae({spacing:t.spacing,divider:t.divider}));continue}if(t.type===`media-gallery`){i.push(new we(t.items));continue}if(t.type===`file`){i.push(new Se(t.file,t.spoiler));continue}if(t.type===`actions`){let e=[];if(t.buttons){if(t.buttons.length>5)throw Error(`Action rows support up to 5 buttons`);for(let n of t.buttons){let{component:t,entry:r}=Ir({spec:n});e.push(t),r&&a(r)}}else if(t.select){let{component:n,entry:r}=Lr({spec:t.select});e.push(n),a(r)}i.push(new O(e))}}if(e.spec.modal){let t=J(`mdl_`),r=e.spec.modal.fields.map((e,t)=>({id:J(`fld_`),name:Cr(e.name,t),label:e.label,type:e.type,description:e.description,placeholder:e.placeholder,required:e.required,options:e.options,minValues:e.minValues,maxValues:e.maxValues,minLength:e.minLength,maxLength:e.maxLength,style:e.style}));n.push({id:t,title:e.spec.modal.title,fields:r,sessionKey:e.sessionKey,agentId:e.agentId,accountId:e.accountId,reusable:e.spec.reusable});let{component:o,entry:s}=Ir({spec:{label:e.spec.modal.triggerLabel??`Open form`,style:e.spec.modal.triggerStyle??`primary`},modalId:t});s&&a(s);let c=i.at(-1);if(c instanceof O){let e=c,t=e.components.some(e=>Rr(e));e.components.length<5&&!t?e.addComponent(o):i.push(new O([o]))}else i.push(new O([o]))}if(i.length===0)throw Error(`components must include at least one block, text, or modal trigger`);let s=new be(i,e.spec.container);return r.push(s),{components:r,entries:t,modals:n}}function Br(e){return e.some(e=>e.isV2)?_e.IsComponentsV2:void 0}const Vr=new Set([T.GuildForum,T.GuildMedia]);function Hr(e){let t=[];for(let n of e.blocks??[])n.type===`file`&&t.push(Tr(n.file));return t}async function Ur(e,t,n={}){let r=n.cfg??l(),i=s({cfg:r,accountId:n.accountId}),{token:a,rest:o,request:c}=P(n,r),{channelId:u}=await V(o,await R(e,n.accountId,r),c),d=await Xt(o,u);if(d&&Vr.has(d))throw Error(`Discord components are not supported in forum-style channels`);let f=zr({spec:t,sessionKey:n.sessionKey,agentId:n.agentId,accountId:i.accountId}),p=Br(f.components),m=n.silent?(p??0)|H:p??void 0,h=n.replyTo?{message_id:n.replyTo,fail_if_not_exists:!1}:void 0,g=Hr(t),_=[...new Set(g)];if(_.length>1)throw Error(`Discord component attachments currently support a single file. Use media-gallery for multiple files.`);let v=_[0],y;if(n.mediaUrl){let e=await te(n.mediaUrl,{localRoots:n.mediaLocalRoots}),t=n.filename?.trim()||e.fileName||`upload`;if(v&&v!==t)throw Error(`Component file block expects attachment "${v}", but the uploaded file is "${t}". Update components.blocks[].file or provide a matching filename.`);y=[{data:rn(e.buffer),name:t}]}else if(v)throw Error(`Discord component file blocks require a media attachment (media/path/filePath).`);let b=U({...A({components:f.components,...m?{flags:m}:{},...y?{files:y}:{}}),...h?{message_reference:h}:{}}),x;try{x=await c(()=>o.post(D.channelMessages(u),{body:b}),`components`)}catch(e){throw await B(e,{channelId:u,rest:o,token:a,hasMedia:!!y?.length})}return yr({entries:f.entries,modals:f.modals,messageId:x.id}),pe({channel:`discord`,accountId:i.accountId,direction:`outbound`}),{messageId:x.id??`unknown`,channelId:x.channel_id??u}}async function Wr(e,t,n,r={}){let{rest:i,request:a}=P(r,r.cfg??l()),o=Kt(n);return await a(()=>i.put(D.channelMessageOwnReaction(e,t,o)),`react`),{ok:!0}}async function Gr(e,t,n,r={}){let{rest:i}=P(r,r.cfg??l()),a=Kt(n);return await i.delete(D.channelMessageOwnReaction(e,t,a)),{ok:!0}}async function Kr(e,t,n={}){let{rest:r}=P(n,n.cfg??l()),i=await r.get(D.channelMessage(e,t)),a=new Set;for(let e of i.reactions??[]){let t=sn(e.emoji);t&&a.add(t)}if(a.size===0)return{ok:!0,removed:[]};let o=[];return await Promise.allSettled(Array.from(a,n=>(o.push(n),r.delete(D.channelMessageOwnReaction(e,t,Kt(n)))))),{ok:!0,removed:o}}async function qr(e,t,n={}){let{rest:r}=P(n,n.cfg??l()),i=(await r.get(D.channelMessage(e,t))).reactions??[];if(i.length===0)return[];let a=typeof n.limit==`number`&&Number.isFinite(n.limit)?Math.min(Math.max(Math.floor(n.limit),1),100):100,o=[];for(let n of i){let i=sn(n.emoji);if(!i)continue;let s=encodeURIComponent(i),c=await r.get(D.channelMessageReaction(e,t,s),{limit:a});o.push({emoji:{id:n.emoji.id??null,name:n.emoji.name??null,raw:cn(n.emoji)},count:n.count,users:c.map(e=>({id:e.id,username:e.username,tag:e.username&&e.discriminator?`${e.username}#${e.discriminator}`:e.username}))})}return o}async function Jr(e){let t=h(e.values,`guildId`,{required:!0}),n=h(e.values,`userId`,{required:!0}),r=h(e.values,`roleId`,{required:!0});if(e.accountId){await e.mutate({guildId:t,userId:n,roleId:r},{accountId:e.accountId});return}await e.mutate({guildId:t,userId:n,roleId:r})}async function Yr(e,t,n){let r=h(t,`accountId`);switch(e){case`memberInfo`:{if(!n(`memberInfo`))throw Error(`Discord member info is disabled.`);let e=h(t,`guildId`,{required:!0}),i=h(t,`userId`,{required:!0}),a=r?await hn(e,i,{accountId:r}):await hn(e,i),o=Le(r,i),s=o?.activities??void 0,c=o?.status??void 0;return _({ok:!0,member:a,...o?{status:c,activities:s}:{}})}case`roleInfo`:{if(!n(`roleInfo`))throw Error(`Discord role info is disabled.`);let e=h(t,`guildId`,{required:!0});return _({ok:!0,roles:r?await gn(e,{accountId:r}):await gn(e)})}case`emojiList`:{if(!n(`reactions`))throw Error(`Discord reactions are disabled.`);let e=h(t,`guildId`,{required:!0});return _({ok:!0,emojis:r?await fn(e,{accountId:r}):await fn(e)})}case`emojiUpload`:{if(!n(`emojiUploads`))throw Error(`Discord emoji uploads are disabled.`);let e=h(t,`guildId`,{required:!0}),i=h(t,`name`,{required:!0}),a=h(t,`mediaUrl`,{required:!0}),o=v(t,`roleIds`);return _({ok:!0,emoji:r?await pn({guildId:e,name:i,mediaUrl:a,roleIds:o?.length?o:void 0},{accountId:r}):await pn({guildId:e,name:i,mediaUrl:a,roleIds:o?.length?o:void 0})})}case`stickerUpload`:{if(!n(`stickerUploads`))throw Error(`Discord sticker uploads are disabled.`);let e=h(t,`guildId`,{required:!0}),i=h(t,`name`,{required:!0}),a=h(t,`description`,{required:!0}),o=h(t,`tags`,{required:!0}),s=h(t,`mediaUrl`,{required:!0});return _({ok:!0,sticker:r?await mn({guildId:e,name:i,description:a,tags:o,mediaUrl:s},{accountId:r}):await mn({guildId:e,name:i,description:a,tags:o,mediaUrl:s})})}case`roleAdd`:if(!n(`roles`,!1))throw Error(`Discord role changes are disabled.`);return await Jr({accountId:r,values:t,mutate:_n}),_({ok:!0});case`roleRemove`:if(!n(`roles`,!1))throw Error(`Discord role changes are disabled.`);return await Jr({accountId:r,values:t,mutate:vn}),_({ok:!0});case`channelInfo`:{if(!n(`channelInfo`))throw Error(`Discord channel info is disabled.`);let e=h(t,`channelId`,{required:!0});return _({ok:!0,channel:r?await yn(e,{accountId:r}):await yn(e)})}case`channelList`:{if(!n(`channelInfo`))throw Error(`Discord channel info is disabled.`);let e=h(t,`guildId`,{required:!0});return _({ok:!0,channels:r?await bn(e,{accountId:r}):await bn(e)})}case`voiceStatus`:{if(!n(`voiceStatus`))throw Error(`Discord voice status is disabled.`);let e=h(t,`guildId`,{required:!0}),i=h(t,`userId`,{required:!0});return _({ok:!0,voice:r?await xn(e,i,{accountId:r}):await xn(e,i)})}case`eventList`:{if(!n(`events`))throw Error(`Discord events are disabled.`);let e=h(t,`guildId`,{required:!0});return _({ok:!0,events:r?await Sn(e,{accountId:r}):await Sn(e)})}case`eventCreate`:{if(!n(`events`))throw Error(`Discord events are disabled.`);let e=h(t,`guildId`,{required:!0}),i=h(t,`name`,{required:!0}),a=h(t,`startTime`,{required:!0}),o=h(t,`endTime`),s=h(t,`description`),c=h(t,`channelId`),l=h(t,`location`),u=h(t,`entityType`),d=u===`stage`?1:u===`external`?3:2,f={name:i,description:s,scheduled_start_time:a,scheduled_end_time:o,entity_type:d,channel_id:c,entity_metadata:d===3&&l?{location:l}:void 0,privacy_level:2};return _({ok:!0,event:r?await Cn(e,f,{accountId:r}):await Cn(e,f)})}case`channelCreate`:{if(!n(`channels`))throw Error(`Discord channel management is disabled.`);let e=h(t,`guildId`,{required:!0}),i=h(t,`name`,{required:!0}),a=p(t,`type`,{integer:!0}),o=M(t),s=h(t,`topic`),c=p(t,`position`,{integer:!0}),l=t.nsfw;return _({ok:!0,channel:r?await W({guildId:e,name:i,type:a??void 0,parentId:o??void 0,topic:s??void 0,position:c??void 0,nsfw:l},{accountId:r}):await W({guildId:e,name:i,type:a??void 0,parentId:o??void 0,topic:s??void 0,position:c??void 0,nsfw:l})})}case`channelEdit`:{if(!n(`channels`))throw Error(`Discord channel management is disabled.`);let e=h(t,`channelId`,{required:!0}),i=h(t,`name`),a=h(t,`topic`),o=p(t,`position`,{integer:!0}),s=M(t),c=t.nsfw,l=p(t,`rateLimitPerUser`,{integer:!0}),u=typeof t.archived==`boolean`?t.archived:void 0,d=typeof t.locked==`boolean`?t.locked:void 0,f=p(t,`autoArchiveDuration`,{integer:!0}),g=m(t.availableTags),v={channelId:e,name:i??void 0,topic:a??void 0,position:o??void 0,parentId:s,nsfw:c,rateLimitPerUser:l??void 0,archived:u,locked:d,autoArchiveDuration:f??void 0,availableTags:g};return _({ok:!0,channel:r?await G(v,{accountId:r}):await G(v)})}case`channelDelete`:{if(!n(`channels`))throw Error(`Discord channel management is disabled.`);let e=h(t,`channelId`,{required:!0});return _(r?await K(e,{accountId:r}):await K(e))}case`channelMove`:{if(!n(`channels`))throw Error(`Discord channel management is disabled.`);let e=h(t,`guildId`,{required:!0}),i=h(t,`channelId`,{required:!0}),a=M(t),o=p(t,`position`,{integer:!0});return r?await ln({guildId:e,channelId:i,parentId:a,position:o??void 0},{accountId:r}):await ln({guildId:e,channelId:i,parentId:a,position:o??void 0}),_({ok:!0})}case`categoryCreate`:{if(!n(`channels`))throw Error(`Discord channel management is disabled.`);let e=h(t,`guildId`,{required:!0}),i=h(t,`name`,{required:!0}),a=p(t,`position`,{integer:!0});return _({ok:!0,category:r?await W({guildId:e,name:i,type:4,position:a??void 0},{accountId:r}):await W({guildId:e,name:i,type:4,position:a??void 0})})}case`categoryEdit`:{if(!n(`channels`))throw Error(`Discord channel management is disabled.`);let e=h(t,`categoryId`,{required:!0}),i=h(t,`name`),a=p(t,`position`,{integer:!0});return _({ok:!0,category:r?await G({channelId:e,name:i??void 0,position:a??void 0},{accountId:r}):await G({channelId:e,name:i??void 0,position:a??void 0})})}case`categoryDelete`:{if(!n(`channels`))throw Error(`Discord channel management is disabled.`);let e=h(t,`categoryId`,{required:!0});return _(r?await K(e,{accountId:r}):await K(e))}case`channelPermissionSet`:{if(!n(`channels`))throw Error(`Discord channel management is disabled.`);let e=h(t,`channelId`,{required:!0}),i=h(t,`targetId`,{required:!0}),a=h(t,`targetType`,{required:!0})===`member`?1:0,o=h(t,`allow`),s=h(t,`deny`);return r?await un({channelId:e,targetId:i,targetType:a,allow:o??void 0,deny:s??void 0},{accountId:r}):await un({channelId:e,targetId:i,targetType:a,allow:o??void 0,deny:s??void 0}),_({ok:!0})}case`channelPermissionRemove`:{if(!n(`channels`))throw Error(`Discord channel management is disabled.`);let e=h(t,`channelId`,{required:!0}),i=h(t,`targetId`,{required:!0});return r?await dn(e,i,{accountId:r}):await dn(e,i),_({ok:!0})}default:throw Error(`Unknown action: ${e}`)}}function Xr(e){if(e==null)return;let t;if(e instanceof Date)t=e.getTime();else if(typeof e==`number`&&Number.isFinite(e))t=e<0xe8d4a51000?Math.round(e*1e3):Math.round(e);else if(typeof e==`string`){let n=e.trim();if(!n)return;if(/^\d+(\.\d+)?$/.test(n)){let e=Number(n);Number.isFinite(e)&&(t=n.includes(`.`)?Math.round(e*1e3):n.length>=13?Math.round(e):Math.round(e*1e3))}else{let e=Date.parse(n);Number.isNaN(e)||(t=e)}}if(!(t===void 0||!Number.isFinite(t)))return{timestampMs:t,timestampUtc:new Date(t).toISOString()}}function Zr(e,t){let n=Xr(t);return n?{...e,timestampMs:typeof e.timestampMs==`number`&&Number.isFinite(e.timestampMs)?e.timestampMs:n.timestampMs,timestampUtc:typeof e.timestampUtc==`string`&&e.timestampUtc.trim()?e.timestampUtc:n.timestampUtc}:e}function Qr(e){let t=e.trim().match(/^(?:https?:\/\/)?(?:ptb\.|canary\.)?discord(?:app)?\.com\/channels\/(\d+)\/(\d+)\/(\d+)(?:\/?|\?.*)$/i);if(!t)throw Error(`Invalid Discord message link. Expected https://discord.com/channels/<guildId>/<channelId>/<messageId>.`);return{guildId:t[1],channelId:t[2],messageId:t[3]}}async function $r(e,t,r,i,a){let o=()=>Vt(h(t,`channelId`,{required:!0})),s=h(t,`accountId`),c=a?{cfg:a}:{},l=e=>!e||typeof e!=`object`?e:Zr(e,e.timestamp);switch(e){case`react`:{if(!r(`reactions`))throw Error(`Discord reactions are disabled.`);let e=o(),n=h(t,`messageId`,{required:!0}),{emoji:i,remove:a,isEmpty:l}=g(t,{removeErrorMessage:`Emoji is required to remove a Discord reaction.`});return a?(s?await Gr(e,n,i,{...c,accountId:s}):await Gr(e,n,i,c),_({ok:!0,removed:i})):l?_({ok:!0,removed:(s?await Kr(e,n,{...c,accountId:s}):await Kr(e,n,c)).removed}):(s?await Wr(e,n,i,{...c,accountId:s}):await Wr(e,n,i,c),_({ok:!0,added:i}))}case`reactions`:{if(!r(`reactions`))throw Error(`Discord reactions are disabled.`);let e=o(),n=h(t,`messageId`,{required:!0}),i=p(t,`limit`);return _({ok:!0,reactions:await qr(e,n,{...c,...s?{accountId:s}:{},limit:i})})}case`sticker`:{if(!r(`stickers`))throw Error(`Discord stickers are disabled.`);let e=h(t,`to`,{required:!0}),n=h(t,`content`);return await fr(e,v(t,`stickerIds`,{required:!0,label:`stickerIds`}),{...c,...s?{accountId:s}:{},content:n}),_({ok:!0})}case`poll`:{if(!r(`polls`))throw Error(`Discord polls are disabled.`);let e=h(t,`to`,{required:!0}),n=h(t,`content`),i=h(t,`question`,{required:!0}),a=v(t,`answers`,{required:!0,label:`answers`}),o=S(t,`allowMultiselect`),l=p(t,`durationHours`);return await pr(e,{question:i,options:a,maxSelections:b(a.length,o),durationHours:l},{...c,...s?{accountId:s}:{},content:n}),_({ok:!0})}case`permissions`:{if(!r(`permissions`))throw Error(`Discord permissions are disabled.`);let e=o();return _({ok:!0,permissions:s?await vt(e,{accountId:s}):await vt(e)})}case`fetchMessage`:{if(!r(`messages`))throw Error(`Discord message reads are disabled.`);let e=h(t,`messageLink`),n=h(t,`guildId`),i=h(t,`channelId`),a=h(t,`messageId`);if(e){let t=Qr(e);n=t.guildId,i=t.channelId,a=t.messageId}if(!n||!i||!a)throw Error(`Discord message fetch requires guildId, channelId, and messageId (or a valid messageLink).`);return _({ok:!0,message:l(s?await On(i,a,{accountId:s}):await On(i,a)),guildId:n,channelId:i,messageId:a})}case`readMessages`:{if(!r(`messages`))throw Error(`Discord message reads are disabled.`);let e=o(),n={limit:p(t,`limit`),before:h(t,`before`),after:h(t,`after`),around:h(t,`around`)};return _({ok:!0,messages:(s?await Dn(e,n,{accountId:s}):await Dn(e,n)).map(e=>l(e))})}case`sendMessage`:{if(!r(`messages`))throw Error(`Discord message sends are disabled.`);let e=h(t,`to`,{required:!0}),a=t.asVoice===!0,o=t.silent===!0,l=t.components,u=l&&typeof l==`object`&&!Array.isArray(l)?Nr(l):null,d=Array.isArray(l)||typeof l==`function`?l:void 0,f=h(t,`content`,{required:!a&&!u&&!d,allowEmpty:!0}),p=h(t,`mediaUrl`,{trim:!1})??h(t,`path`,{trim:!1})??h(t,`filePath`,{trim:!1}),m=h(t,`filename`),g=h(t,`replyTo`),v=t.embeds,y=Array.isArray(v)?v:void 0,b=h(t,`__sessionKey`),x=h(t,`__agentId`);if(u){if(a)throw Error(`Discord components cannot be sent as voice messages.`);if(y?.length)throw Error(`Discord components cannot include embeds.`);let t=f?.trim()?f:void 0;return _({ok:!0,result:await Ur(e,u.text?u:{...u,text:t},{...c,...s?{accountId:s}:{},silent:o,replyTo:g??void 0,sessionKey:b??void 0,agentId:x??void 0,mediaUrl:p??void 0,filename:m??void 0}),components:!0})}if(a){if(!p)throw Error(`Voice messages require a media file reference (mediaUrl, path, or filePath).`);if(f&&f.trim())throw Error(`Voice messages cannot include text content (Discord limitation). Remove the content parameter.`);return n(p),_({ok:!0,result:await hr(e,p,{...c,...s?{accountId:s}:{},replyTo:g,silent:o}),voiceMessage:!0})}return _({ok:!0,result:await dr(e,f??``,{...c,...s?{accountId:s}:{},mediaUrl:p,mediaLocalRoots:i?.mediaLocalRoots,replyTo:g,components:d,embeds:y,silent:o})})}case`editMessage`:{if(!r(`messages`))throw Error(`Discord message edits are disabled.`);let e=o(),n=h(t,`messageId`,{required:!0}),i=h(t,`content`,{required:!0});return _({ok:!0,message:s?await kn(e,n,{content:i},{accountId:s}):await kn(e,n,{content:i})})}case`deleteMessage`:{if(!r(`messages`))throw Error(`Discord message deletes are disabled.`);let e=o(),n=h(t,`messageId`,{required:!0});return s?await An(e,n,{accountId:s}):await An(e,n),_({ok:!0})}case`threadCreate`:{if(!r(`threads`))throw Error(`Discord threads are disabled.`);let e=o(),n=h(t,`name`,{required:!0}),i=h(t,`messageId`),a=h(t,`content`),c={name:n,messageId:i,autoArchiveMinutes:p(t,`autoArchiveMinutes`),content:a,appliedTags:v(t,`appliedTags`)??void 0};return _({ok:!0,thread:s?await Pn(e,c,{accountId:s}):await Pn(e,c)})}case`threadList`:{if(!r(`threads`))throw Error(`Discord threads are disabled.`);let e=h(t,`guildId`,{required:!0}),n=h(t,`channelId`),i=S(t,`includeArchived`),a=h(t,`before`),o=p(t,`limit`);return _({ok:!0,threads:s?await Fn({guildId:e,channelId:n,includeArchived:i,before:a,limit:o},{accountId:s}):await Fn({guildId:e,channelId:n,includeArchived:i,before:a,limit:o})})}case`threadReply`:{if(!r(`threads`))throw Error(`Discord threads are disabled.`);let e=o(),n=h(t,`content`,{required:!0}),a=h(t,`mediaUrl`),l=h(t,`replyTo`);return _({ok:!0,result:await dr(`channel:${e}`,n,{...c,...s?{accountId:s}:{},mediaUrl:a,mediaLocalRoots:i?.mediaLocalRoots,replyTo:l})})}case`pinMessage`:{if(!r(`pins`))throw Error(`Discord pins are disabled.`);let e=o(),n=h(t,`messageId`,{required:!0});return s?await jn(e,n,{accountId:s}):await jn(e,n),_({ok:!0})}case`unpinMessage`:{if(!r(`pins`))throw Error(`Discord pins are disabled.`);let e=o(),n=h(t,`messageId`,{required:!0});return s?await Mn(e,n,{accountId:s}):await Mn(e,n),_({ok:!0})}case`listPins`:{if(!r(`pins`))throw Error(`Discord pins are disabled.`);let e=o();return _({ok:!0,pins:(s?await Nn(e,{accountId:s}):await Nn(e)).map(e=>l(e))})}case`searchMessages`:{if(!r(`search`))throw Error(`Discord search is disabled.`);let e=h(t,`guildId`,{required:!0}),n=h(t,`content`,{required:!0}),i=h(t,`channelId`),a=v(t,`channelIds`),o=h(t,`authorId`),c=v(t,`authorIds`),u=p(t,`limit`),d=[...a??[],...i?[i]:[]],f=[...c??[],...o?[o]:[]],m=s?await In({guildId:e,content:n,channelIds:d.length?d:void 0,authorIds:f.length?f:void 0,limit:u},{accountId:s}):await In({guildId:e,content:n,channelIds:d.length?d:void 0,authorIds:f.length?f:void 0,limit:u});if(!m||typeof m!=`object`)return _({ok:!0,results:m});let g=m,y=g.messages,b=Array.isArray(y)?y.map(e=>Array.isArray(e)?e.map(e=>l(e)):e):y;return _({ok:!0,results:{...g,messages:b}})}default:throw Error(`Unknown action: ${e}`)}}const ei={timeout:E.ModerateMembers,kick:E.KickMembers,ban:E.BanMembers};function ti(e){return e===`timeout`||e===`kick`||e===`ban`}function ni(e){return ei[e]}function ri(e,t){if(!ti(e))throw Error(`Unsupported Discord moderation action: ${e}`);return{action:e,guildId:h(t,`guildId`,{required:!0}),userId:h(t,`userId`,{required:!0}),durationMinutes:p(t,`durationMinutes`,{integer:!0}),until:h(t,`until`),reason:h(t,`reason`),deleteMessageDays:p(t,`deleteMessageDays`,{integer:!0})}}async function ii(e){if(e.senderUserId&&!await _t(e.guildId,e.senderUserId,[e.requiredPermission],e.accountId?{accountId:e.accountId}:void 0))throw Error(`Sender does not have required permissions for this moderation action.`)}async function ai(e,t,n){if(!ti(e))throw Error(`Unknown action: ${e}`);if(!n(`moderation`,!1))throw Error(`Discord moderation is disabled.`);let r=ri(e,t),i=h(t,`accountId`),a=h(t,`senderUserId`);switch(await ii({guildId:r.guildId,senderUserId:a,requiredPermission:ni(r.action),accountId:i}),r.action){case`timeout`:return _({ok:!0,member:i?await wn({guildId:r.guildId,userId:r.userId,durationMinutes:r.durationMinutes,until:r.until,reason:r.reason},{accountId:i}):await wn({guildId:r.guildId,userId:r.userId,durationMinutes:r.durationMinutes,until:r.until,reason:r.reason})});case`kick`:return i?await Tn({guildId:r.guildId,userId:r.userId,reason:r.reason},{accountId:i}):await Tn({guildId:r.guildId,userId:r.userId,reason:r.reason}),_({ok:!0});case`ban`:return i?await En({guildId:r.guildId,userId:r.userId,reason:r.reason,deleteMessageDays:r.deleteMessageDays},{accountId:i}):await En({guildId:r.guildId,userId:r.userId,reason:r.reason,deleteMessageDays:r.deleteMessageDays}),_({ok:!0})}}const oi=new Map;function si(e){return e??`\0__default__`}function ci(e){return oi.get(si(e))}const li={playing:0,streaming:1,listening:2,watching:3,custom:4,competing:5},ui=new Set([`online`,`dnd`,`idle`,`invisible`]);async function di(e,t,n){if(e!==`setPresence`)throw Error(`Unknown presence action: ${e}`);if(!n(`presence`,!1))throw Error(`Discord presence changes are disabled.`);let r=h(t,`accountId`),i=ci(r);if(!i)throw Error(`Discord gateway not available${r?` for account "${r}"`:``}. The bot may not be connected.`);if(!i.isConnected)throw Error(`Discord gateway is not connected${r?` for account "${r}"`:``}.`);let a=h(t,`status`)??`online`;if(!ui.has(a))throw Error(`Invalid status "${a}". Must be one of: ${[...ui].join(`, `)}`);let o=a,s=h(t,`activityType`),c=h(t,`activityName`),l=[];if(s||c){if(!s)throw Error(`activityType is required when activityName is provided. Valid types: ${Object.keys(li).join(`, `)}`);let e=li[s.toLowerCase()];if(e===void 0)throw Error(`Invalid activityType "${s}". Must be one of: ${Object.keys(li).join(`, `)}`);let n={name:c??``,type:e};if(e===1){let e=h(t,`activityUrl`);e&&(n.url=e)}let r=h(t,`activityState`);r&&(n.state=r),l.push(n)}let u={since:null,activities:l,status:o,afk:!1};return i.updatePresence(u),_({ok:!0,status:o,activities:l.map(e=>({type:e.type,name:e.name,...e.url?{url:e.url}:{},...e.state?{state:e.state}:{}}))})}const fi=new Set([`react`,`reactions`,`sticker`,`poll`,`permissions`,`fetchMessage`,`readMessages`,`sendMessage`,`editMessage`,`deleteMessage`,`threadCreate`,`threadList`,`threadReply`,`pinMessage`,`unpinMessage`,`listPins`,`searchMessages`]),pi=new Set([`memberInfo`,`roleInfo`,`emojiList`,`emojiUpload`,`stickerUpload`,`roleAdd`,`roleRemove`,`channelInfo`,`channelList`,`voiceStatus`,`eventList`,`eventCreate`,`channelCreate`,`channelEdit`,`channelDelete`,`channelMove`,`categoryCreate`,`categoryEdit`,`categoryDelete`,`channelPermissionSet`,`channelPermissionRemove`]),mi=new Set([`timeout`,`kick`,`ban`]),hi=new Set([`setPresence`]);async function $(e,t,n){let i=h(e,`action`,{required:!0}),a=r({cfg:t,accountId:h(e,`accountId`)});if(fi.has(i))return await $r(i,e,a,n,t);if(pi.has(i))return await Yr(i,e,a);if(mi.has(i))return await ai(i,e,a);if(hi.has(i))return await di(i,e,a);throw Error(`Unknown action: ${i}`)}async function gi(e){let{ctx:t,resolveChannelId:n,readParentIdParam:r}=e,{action:i,params:a,cfg:o}=t,s=t.accountId??h(a,`accountId`);if(i===`member-info`){let e=h(a,`userId`,{required:!0}),t=h(a,`guildId`,{required:!0});return await $({action:`memberInfo`,accountId:s??void 0,guildId:t,userId:e},o)}if(i===`role-info`){let e=h(a,`guildId`,{required:!0});return await $({action:`roleInfo`,accountId:s??void 0,guildId:e},o)}if(i===`emoji-list`){let e=h(a,`guildId`,{required:!0});return await $({action:`emojiList`,accountId:s??void 0,guildId:e},o)}if(i===`emoji-upload`){let e=h(a,`guildId`,{required:!0}),t=h(a,`emojiName`,{required:!0}),n=h(a,`media`,{required:!0,trim:!1}),r=v(a,`roleIds`);return await $({action:`emojiUpload`,accountId:s??void 0,guildId:e,name:t,mediaUrl:n,roleIds:r},o)}if(i===`sticker-upload`){let e=h(a,`guildId`,{required:!0}),t=h(a,`stickerName`,{required:!0}),n=h(a,`stickerDesc`,{required:!0}),r=h(a,`stickerTags`,{required:!0}),i=h(a,`media`,{required:!0,trim:!1});return await $({action:`stickerUpload`,accountId:s??void 0,guildId:e,name:t,description:n,tags:r,mediaUrl:i},o)}if(i===`role-add`||i===`role-remove`){let e=h(a,`guildId`,{required:!0}),t=h(a,`userId`,{required:!0}),n=h(a,`roleId`,{required:!0});return await $({action:i===`role-add`?`roleAdd`:`roleRemove`,accountId:s??void 0,guildId:e,userId:t,roleId:n},o)}if(i===`channel-info`){let e=h(a,`channelId`,{required:!0});return await $({action:`channelInfo`,accountId:s??void 0,channelId:e},o)}if(i===`channel-list`){let e=h(a,`guildId`,{required:!0});return await $({action:`channelList`,accountId:s??void 0,guildId:e},o)}if(i===`channel-create`){let e=h(a,`guildId`,{required:!0}),t=h(a,`name`,{required:!0}),n=p(a,`type`,{integer:!0}),i=r(a),c=h(a,`topic`),l=p(a,`position`,{integer:!0}),u=typeof a.nsfw==`boolean`?a.nsfw:void 0;return await $({action:`channelCreate`,accountId:s??void 0,guildId:e,name:t,type:n??void 0,parentId:i??void 0,topic:c??void 0,position:l??void 0,nsfw:u},o)}if(i===`channel-edit`){let e=h(a,`channelId`,{required:!0}),t=h(a,`name`),n=h(a,`topic`),i=p(a,`position`,{integer:!0}),c=r(a),l=typeof a.nsfw==`boolean`?a.nsfw:void 0,u=p(a,`rateLimitPerUser`,{integer:!0}),d=typeof a.archived==`boolean`?a.archived:void 0,f=typeof a.locked==`boolean`?a.locked:void 0,g=p(a,`autoArchiveDuration`,{integer:!0}),_=m(a.availableTags);return await $({action:`channelEdit`,accountId:s??void 0,channelId:e,name:t??void 0,topic:n??void 0,position:i??void 0,parentId:c===void 0?void 0:c,nsfw:l,rateLimitPerUser:u??void 0,archived:d,locked:f,autoArchiveDuration:g??void 0,availableTags:_},o)}if(i===`channel-delete`){let e=h(a,`channelId`,{required:!0});return await $({action:`channelDelete`,accountId:s??void 0,channelId:e},o)}if(i===`channel-move`){let e=h(a,`guildId`,{required:!0}),t=h(a,`channelId`,{required:!0}),n=r(a),i=p(a,`position`,{integer:!0});return await $({action:`channelMove`,accountId:s??void 0,guildId:e,channelId:t,parentId:n===void 0?void 0:n,position:i??void 0},o)}if(i===`category-create`){let e=h(a,`guildId`,{required:!0}),t=h(a,`name`,{required:!0}),n=p(a,`position`,{integer:!0});return await $({action:`categoryCreate`,accountId:s??void 0,guildId:e,name:t,position:n??void 0},o)}if(i===`category-edit`){let e=h(a,`categoryId`,{required:!0}),t=h(a,`name`),n=p(a,`position`,{integer:!0});return await $({action:`categoryEdit`,accountId:s??void 0,categoryId:e,name:t??void 0,position:n??void 0},o)}if(i===`category-delete`){let e=h(a,`categoryId`,{required:!0});return await $({action:`categoryDelete`,accountId:s??void 0,categoryId:e},o)}if(i===`voice-status`){let e=h(a,`guildId`,{required:!0}),t=h(a,`userId`,{required:!0});return await $({action:`voiceStatus`,accountId:s??void 0,guildId:e,userId:t},o)}if(i===`event-list`){let e=h(a,`guildId`,{required:!0});return await $({action:`eventList`,accountId:s??void 0,guildId:e},o)}if(i===`event-create`){let e=h(a,`guildId`,{required:!0}),t=h(a,`eventName`,{required:!0}),n=h(a,`startTime`,{required:!0}),r=h(a,`endTime`),i=h(a,`desc`),c=h(a,`channelId`),l=h(a,`location`),u=h(a,`eventType`);return await $({action:`eventCreate`,accountId:s??void 0,guildId:e,name:t,startTime:n,endTime:r,description:i,channelId:c,location:l,entityType:u},o)}if(ti(i)){let e=ri(i,{...a,durationMinutes:p(a,`durationMin`,{integer:!0}),deleteMessageDays:p(a,`deleteDays`,{integer:!0})}),n=t.requesterSenderId?.trim()||void 0;return await $({action:e.action,accountId:s??void 0,guildId:e.guildId,userId:e.userId,durationMinutes:e.durationMinutes,until:e.until,reason:e.reason,deleteMessageDays:e.deleteMessageDays,senderUserId:n},o)}if(i===`thread-list`){let e=h(a,`guildId`,{required:!0}),t=h(a,`channelId`),n=typeof a.includeArchived==`boolean`?a.includeArchived:void 0,r=h(a,`before`),i=p(a,`limit`,{integer:!0});return await $({action:`threadList`,accountId:s??void 0,guildId:e,channelId:t,includeArchived:n,before:r,limit:i},o)}if(i===`thread-reply`){let e=h(a,`message`,{required:!0}),t=h(a,`media`,{trim:!1}),r=h(a,`replyTo`),i=h(a,`threadId`)??n();return await $({action:`threadReply`,accountId:s??void 0,channelId:i,content:e,mediaUrl:t??void 0,replyTo:r??void 0},o)}if(i===`search`){let e=h(a,`guildId`,{required:!0}),t=h(a,`query`,{required:!0});return await $({action:`searchMessages`,accountId:s??void 0,guildId:e,content:t,channelId:h(a,`channelId`),channelIds:v(a,`channelIds`),authorId:h(a,`authorId`),authorIds:v(a,`authorIds`),limit:p(a,`limit`,{integer:!0})},o)}}async function _i(e){let{action:t,params:n,cfg:r}=e,i=e.accountId??h(n,`accountId`),a={mediaLocalRoots:e.mediaLocalRoots},o=()=>Vt(h(n,`channelId`)??h(n,`to`,{required:!0}));if(t===`send`){let e=h(n,`to`,{required:!0}),t=S(n,`asVoice`)===!0,o=n.components,s=!!o&&(typeof o==`function`||typeof o==`object`),c=s?o:void 0,l=h(n,`message`,{required:!t&&!s,allowEmpty:!0}),u=h(n,`media`,{trim:!1})??h(n,`path`,{trim:!1})??h(n,`filePath`,{trim:!1}),d=h(n,`filename`),f=h(n,`replyTo`),p=n.embeds,m=Array.isArray(p)?p:void 0,g=S(n,`silent`)===!0,_=h(n,`__sessionKey`),v=h(n,`__agentId`);return await $({action:`sendMessage`,accountId:i??void 0,to:e,content:l,mediaUrl:u??void 0,filename:d??void 0,replyTo:f??void 0,components:c,embeds:m,asVoice:t,silent:g,__sessionKey:_??void 0,__agentId:v??void 0},r,a)}if(t===`poll`){let e=h(n,`to`,{required:!0}),t=h(n,`pollQuestion`,{required:!0}),o=v(n,`pollOption`,{required:!0}),s=S(n,`pollMulti`),c=p(n,`pollDurationHours`,{integer:!0,strict:!0});return await $({action:`poll`,accountId:i??void 0,to:e,question:t,answers:o,allowMultiselect:s,durationHours:c??void 0,content:h(n,`message`)},r,a)}if(t===`react`){let t=y({args:n,toolContext:e.toolContext}),s=t==null?``:String(t).trim();if(!s)throw Error(`messageId required. Provide messageId explicitly or react to the current inbound message.`);let c=h(n,`emoji`,{allowEmpty:!0}),l=S(n,`remove`);return await $({action:`react`,accountId:i??void 0,channelId:o(),messageId:s,emoji:c,remove:l},r,a)}if(t===`reactions`){let e=h(n,`messageId`,{required:!0}),t=p(n,`limit`,{integer:!0});return await $({action:`reactions`,accountId:i??void 0,channelId:o(),messageId:e,limit:t},r,a)}if(t===`read`){let e=p(n,`limit`,{integer:!0});return await $({action:`readMessages`,accountId:i??void 0,channelId:o(),limit:e,before:h(n,`before`),after:h(n,`after`),around:h(n,`around`)},r,a)}if(t===`edit`){let e=h(n,`messageId`,{required:!0}),t=h(n,`message`,{required:!0});return await $({action:`editMessage`,accountId:i??void 0,channelId:o(),messageId:e,content:t},r,a)}if(t===`delete`){let e=h(n,`messageId`,{required:!0});return await $({action:`deleteMessage`,accountId:i??void 0,channelId:o(),messageId:e},r,a)}if(t===`pin`||t===`unpin`||t===`list-pins`){let e=t===`list-pins`?void 0:h(n,`messageId`,{required:!0});return await $({action:t===`pin`?`pinMessage`:t===`unpin`?`unpinMessage`:`listPins`,accountId:i??void 0,channelId:o(),messageId:e},r,a)}if(t===`permissions`)return await $({action:`permissions`,accountId:i??void 0,channelId:o()},r,a);if(t===`thread-create`){let e=h(n,`threadName`,{required:!0}),t=h(n,`messageId`),s=h(n,`message`),c=p(n,`autoArchiveMin`,{integer:!0}),l=v(n,`appliedTags`);return await $({action:`threadCreate`,accountId:i??void 0,channelId:o(),name:e,messageId:t,content:s,autoArchiveMinutes:c,appliedTags:l??void 0},r,a)}if(t===`sticker`){let e=v(n,`stickerId`,{required:!0,label:`sticker-id`})??[];return await $({action:`sticker`,accountId:i??void 0,to:h(n,`to`,{required:!0}),stickerIds:e,content:h(n,`message`)},r,a)}if(t===`set-presence`)return await $({action:`setPresence`,accountId:i??void 0,status:h(n,`status`),activityType:h(n,`activityType`),activityName:h(n,`activityName`),activityUrl:h(n,`activityUrl`),activityState:h(n,`activityState`)},r,a);let s=await gi({ctx:e,resolveChannelId:o,readParentIdParam:M});if(s!==void 0)return s;throw Error(`Action ${String(t)} is not supported for provider discord.`)}const vi={listActions:({cfg:e})=>{let t=ae(u(e));if(t.length===0)return[];let n=le(t,t=>r({cfg:e,accountId:t.accountId})),i=(e,t=!0)=>n(e,t),a=new Set([`send`]);return i(`polls`)&&a.add(`poll`),i(`reactions`)&&(a.add(`react`),a.add(`reactions`)),i(`messages`)&&(a.add(`read`),a.add(`edit`),a.add(`delete`)),i(`pins`)&&(a.add(`pin`),a.add(`unpin`),a.add(`list-pins`)),i(`permissions`)&&a.add(`permissions`),i(`threads`)&&(a.add(`thread-create`),a.add(`thread-list`),a.add(`thread-reply`)),i(`search`)&&a.add(`search`),i(`stickers`)&&a.add(`sticker`),i(`memberInfo`)&&a.add(`member-info`),i(`roleInfo`)&&a.add(`role-info`),i(`reactions`)&&a.add(`emoji-list`),i(`emojiUploads`)&&a.add(`emoji-upload`),i(`stickerUploads`)&&a.add(`sticker-upload`),i(`roles`,!1)&&(a.add(`role-add`),a.add(`role-remove`)),i(`channelInfo`)&&(a.add(`channel-info`),a.add(`channel-list`)),i(`channels`)&&(a.add(`channel-create`),a.add(`channel-edit`),a.add(`channel-delete`),a.add(`channel-move`),a.add(`category-create`),a.add(`category-edit`),a.add(`category-delete`)),i(`voiceStatus`)&&a.add(`voice-status`),i(`events`)&&(a.add(`event-list`),a.add(`event-create`)),i(`moderation`,!1)&&(a.add(`timeout`),a.add(`kick`),a.add(`ban`)),i(`presence`,!1)&&a.add(`set-presence`),Array.from(a)},extractToolSend:({args:e})=>{let t=typeof e.action==`string`?e.action.trim():``;if(t===`sendMessage`){let t=typeof e.to==`string`?e.to:void 0;return t?{to:t}:null}if(t===`threadReply`){let t=typeof e.channelId==`string`?e.channelId.trim():``;return t?{to:`channel:${t}`}:null}return null},handleAction:async({action:e,params:t,cfg:n,accountId:r,requesterSenderId:i,toolContext:a,mediaLocalRoots:o})=>await _i({action:e,params:t,cfg:n,accountId:r,requesterSenderId:i,toolContext:a,mediaLocalRoots:o})};export{vi as discordMessageActions};
@@ -1 +1 @@
1
- import{E as e,h as t,m as n,t as r}from"../../../config-DAQjvwZw.js";import"../../../secret-file-DuWm26jS.js";import"../../../token-DnTmiyJu.js";import"../../../utils-R-mFyVJi.js";import"../../../proxy-env-DrC3TIGh.js";import{l as i,n as a,r as o,t as s}from"../../../reaction-message-id-BEEe7X3D.js";import{r as c,t as l}from"../../../fetch-D0rZDHKO.js";import{t as u}from"../../../reaction-level-DVPHL14p.js";function d(e){return u({value:t({cfg:e.cfg,accountId:e.accountId}).config.reactionLevel,defaultLevel:`minimal`,invalidFallback:`minimal`})}function f(e){let t=e.trim();if(!t)throw Error(`Signal base URL is required`);return/^https?:\/\//i.test(t)?t.replace(/\/+$/,``):`http://${t}`.replace(/\/+$/,``)}function p(){let e=l();if(!e)throw Error(`fetch is not available`);return e}function m(e,t){let n;try{n=JSON.parse(e)}catch(e){throw Error(`Signal RPC returned malformed JSON (status ${t})`,{cause:e})}if(!n||typeof n!=`object`)throw Error(`Signal RPC returned invalid response envelope (status ${t})`);let r=n,i=Object.hasOwn(r,`result`);if(!r.error&&!i)throw Error(`Signal RPC returned invalid response envelope (status ${t})`);return r}async function h(t,n,r){let i=f(r.baseUrl),a=e(),o=JSON.stringify({jsonrpc:`2.0`,method:t,params:n,id:a}),s=await c(`${i}/api/v1/rpc`,{method:`POST`,headers:{"Content-Type":`application/json`},body:o},r.timeoutMs??1e4,p());if(s.status===201)return;let l=await s.text();if(!l)throw Error(`Signal RPC empty response (status ${s.status})`);let u=m(l,s.status);if(u.error){let e=u.error.code??`unknown`,t=u.error.message??`Signal RPC error`;throw Error(`Signal RPC ${e}: ${t}`)}return u.result}function g(e,n){let i=!!e.baseUrl?.trim(),a=!!e.account?.trim(),o=n||(!i||!a?t({cfg:r(),accountId:e.accountId}):void 0),s=e.baseUrl?.trim()||o?.baseUrl;if(!s)throw Error(`Signal base URL is required`);return{baseUrl:s,account:e.account?.trim()||o?.config.account?.trim()}}function _(e){let t=e.trim();return t?t.replace(/^signal:/i,``).trim():``}function v(e){let t=_(e);return t?t.toLowerCase().startsWith(`uuid:`)?t.slice(5).trim():t:``}function y(e){let t=[e.targetAuthor,e.targetAuthorUuid,e.fallback];for(let e of t){let t=e?.trim();if(!t)continue;let n=v(t);if(n)return{targetAuthor:n}}return{}}async function b(e){let n=t({cfg:e.opts.cfg??r(),accountId:e.opts.accountId}),{baseUrl:i,account:a}=g(e.opts,n),o=v(e.recipient),s=e.opts.groupId?.trim();if(!o&&!s)throw Error(e.errors.missingRecipient);if(!Number.isFinite(e.targetTimestamp)||e.targetTimestamp<=0)throw Error(e.errors.invalidTargetTimestamp);let c=e.emoji?.trim();if(!c)throw Error(e.errors.missingEmoji);let l=y({targetAuthor:e.opts.targetAuthor,targetAuthorUuid:e.opts.targetAuthorUuid,fallback:o});if(s&&!l.targetAuthor)throw Error(e.errors.missingTargetAuthor);let u={emoji:c,targetTimestamp:e.targetTimestamp,...e.remove?{remove:!0}:{},...l};return o&&(u.recipients=[o]),s&&(u.groupIds=[s]),a&&(u.account=a),{ok:!0,timestamp:(await h(`sendReaction`,u,{baseUrl:i,timeoutMs:e.opts.timeoutMs}))?.timestamp}}async function x(e,t,n,r={}){return await b({recipient:e,targetTimestamp:t,emoji:n,remove:!1,opts:r,errors:{missingRecipient:`Recipient or groupId is required for Signal reaction`,invalidTargetTimestamp:`Valid targetTimestamp is required for Signal reaction`,missingEmoji:`Emoji is required for Signal reaction`,missingTargetAuthor:`targetAuthor is required for group reactions`}})}async function S(e,t,n,r={}){return await b({recipient:e,targetTimestamp:t,emoji:n,remove:!0,opts:r,errors:{missingRecipient:`Recipient or groupId is required for Signal reaction removal`,invalidTargetTimestamp:`Valid targetTimestamp is required for Signal reaction removal`,missingEmoji:`Emoji is required for Signal reaction removal`,missingTargetAuthor:`targetAuthor is required for group reaction removal`}})}function C(e){let t=e.trim();if(!t)return t;let n=t.replace(/^signal:/i,``).trim();return n&&(n.toLowerCase().startsWith(`uuid:`)?n.slice(5).trim():n)}function w(e){let t=e.trim();if(!t)return{};let n=t.replace(/^signal:/i,``).trim();if(!n)return{};if(n.toLowerCase().startsWith(`group:`)){let e=n.slice(6).trim();return e?{groupId:e}:{}}return{recipient:C(n)}}async function T(e){let t={cfg:e.cfg,accountId:e.accountId,groupId:e.target.groupId,targetAuthor:e.targetAuthor,targetAuthorUuid:e.targetAuthorUuid};return e.remove?(await S(e.target.recipient??``,e.timestamp,e.emoji,t),o({ok:!0,removed:e.emoji})):(await x(e.target.recipient??``,e.timestamp,e.emoji,t),o({ok:!0,added:e.emoji}))}const E={listActions:({cfg:e})=>{let t=n(e);if(t.length===0)return[];let r=t.filter(e=>e.configured);if(r.length===0)return[];let i=new Set([`send`]);return r.some(e=>a(e.config.actions)(`reactions`))&&i.add(`react`),Array.from(i)},supportsAction:({action:e})=>e!==`send`,handleAction:async({action:e,params:n,cfg:r,accountId:o,toolContext:c})=>{if(e===`send`)throw Error(`Send should be handled by outbound, not actions handler.`);if(e===`react`){let e=d({cfg:r,accountId:o??void 0});if(!e.agentReactionsEnabled)throw Error(`Signal agent reactions disabled (reactionLevel="${e.level}"). Set channels.signal.reactionLevel to "minimal" or "extensive" to enable.`);let l=t({cfg:r,accountId:o}).config.actions;if(!a(l)(`reactions`))throw Error(`Signal reactions are disabled via actions.reactions.`);let u=w(i(n,`recipient`)??i(n,`to`,{required:!0,label:`recipient (UUID, phone number, or group)`}));if(!u.recipient&&!u.groupId)throw Error(`recipient or group required`);let f=s({args:n,toolContext:c}),p=f==null?void 0:String(f);if(!p)throw Error(`messageId (timestamp) required. Provide messageId explicitly or react to the current inbound message.`);let m=i(n,`targetAuthor`),h=i(n,`targetAuthorUuid`);if(u.groupId&&!m&&!h)throw Error(`targetAuthor or targetAuthorUuid required for group reactions.`);let g=i(n,`emoji`,{allowEmpty:!0}),_=typeof n.remove==`boolean`?n.remove:void 0,v=parseInt(p,10);if(!Number.isFinite(v))throw Error(`Invalid messageId: ${p}. Expected numeric timestamp.`);if(_){if(!g)throw Error(`Emoji required to remove reaction.`);return await T({cfg:r,accountId:o??void 0,target:u,timestamp:v,emoji:g,remove:!0,targetAuthor:m,targetAuthorUuid:h})}if(!g)throw Error(`Emoji required to add reaction.`);return await T({cfg:r,accountId:o??void 0,target:u,timestamp:v,emoji:g,remove:!1,targetAuthor:m,targetAuthorUuid:h})}throw Error(`Action ${e} not supported for signal.`)}};export{E as signalMessageActions};
1
+ import{E as e,h as t,m as n,t as r}from"../../../config-DAQjvwZw.js";import"../../../secret-file-DuWm26jS.js";import"../../../token-DnTmiyJu.js";import"../../../utils-R-mFyVJi.js";import"../../../proxy-env-DrC3TIGh.js";import{l as i,n as a,r as o,t as s}from"../../../reaction-message-id-BEEe7X3D.js";import{r as c,t as l}from"../../../fetch-D0rZDHKO.js";import{t as u}from"../../../reaction-level-DVPHL14p.js";function d(e){return u({value:t({cfg:e.cfg,accountId:e.accountId}).config.reactionLevel,defaultLevel:`minimal`,invalidFallback:`minimal`})}function f(e){let t=e.trim();if(!t)throw Error(`Signal base URL is required`);return/^https?:\/\//i.test(t)?t.replace(/\/+$/,``):`http://${t}`.replace(/\/+$/,``)}function p(){let e=l();if(!e)throw Error(`fetch is not available`);return e}function m(e,t){let n;try{n=JSON.parse(e)}catch(e){throw Error(`Signal RPC returned malformed JSON (status ${t})`,{cause:e})}if(!n||typeof n!=`object`)throw Error(`Signal RPC returned invalid response envelope (status ${t})`);let r=n,i=Object.hasOwn(r,`result`);if(!r.error&&!i)throw Error(`Signal RPC returned invalid response envelope (status ${t})`);return r}async function h(t,n,r){let i=f(r.baseUrl),a=e(),o=JSON.stringify({jsonrpc:`2.0`,method:t,params:n,id:a}),s=await c(`${i}/api/v1/rpc`,{method:`POST`,headers:{"Content-Type":`application/json`},body:o},r.timeoutMs??1e4,p());if(s.status===201)return;let l=await s.text();if(!l)throw Error(`Signal RPC empty response (status ${s.status})`);let u=m(l,s.status);if(u.error){let e=u.error.code??`unknown`,t=u.error.message??`Signal RPC error`;throw Error(`Signal RPC ${e}: ${t}`)}return u.result}function g(e,n){let i=!!e.baseUrl?.trim(),a=!!e.account?.trim(),o=n||(!i||!a?t({cfg:r(),accountId:e.accountId}):void 0),s=e.baseUrl?.trim()||o?.baseUrl;if(!s)throw Error(`Signal base URL is required`);return{baseUrl:s,account:e.account?.trim()||o?.config.account?.trim()}}function _(e){let t=e.trim();return t?t.replace(/^signal:/i,``).trim():``}function v(e){let t=_(e);return t?t.toLowerCase().startsWith(`uuid:`)?t.slice(5).trim():t:``}function y(e){let t=[e.targetAuthor,e.targetAuthorUuid,e.fallback];for(let e of t){let t=e?.trim();if(!t)continue;let n=v(t);if(n)return{targetAuthor:n}}return{}}async function b(e){let n=t({cfg:e.opts.cfg??r(),accountId:e.opts.accountId}),{baseUrl:i,account:a}=g(e.opts,n),o=v(e.recipient),s=e.opts.groupId?.trim();if(!o&&!s)throw Error(e.errors.missingRecipient);if(!Number.isFinite(e.targetTimestamp)||e.targetTimestamp<=0)throw Error(e.errors.invalidTargetTimestamp);let c=e.emoji?.trim();if(!c)throw Error(e.errors.missingEmoji);let l=y({targetAuthor:e.opts.targetAuthor,targetAuthorUuid:e.opts.targetAuthorUuid,fallback:o});if(s&&!l.targetAuthor)throw Error(e.errors.missingTargetAuthor);let u={emoji:c,targetTimestamp:e.targetTimestamp,...e.remove?{remove:!0}:{},...l};return o&&(u.recipients=[o]),s&&(u.groupIds=[s]),a&&(u.account=a),{ok:!0,timestamp:(await h(`sendReaction`,u,{baseUrl:i,timeoutMs:e.opts.timeoutMs}))?.timestamp}}async function x(e,t,n,r={}){return await b({recipient:e,targetTimestamp:t,emoji:n,remove:!1,opts:r,errors:{missingRecipient:`Recipient or groupId is required for Signal reaction`,invalidTargetTimestamp:`Valid targetTimestamp is required for Signal reaction`,missingEmoji:`Emoji is required for Signal reaction`,missingTargetAuthor:`targetAuthor is required for group reactions`}})}async function S(e,t,n,r={}){return await b({recipient:e,targetTimestamp:t,emoji:n,remove:!0,opts:r,errors:{missingRecipient:`Recipient or groupId is required for Signal reaction removal`,invalidTargetTimestamp:`Valid targetTimestamp is required for Signal reaction removal`,missingEmoji:`Emoji is required for Signal reaction removal`,missingTargetAuthor:`targetAuthor is required for group reaction removal`}})}function C(e){let t=e.trim();if(!t)return t;let n=t.replace(/^signal:/i,``).trim();return n&&(n.toLowerCase().startsWith(`uuid:`)?n.slice(5).trim():n)}function w(e){let t=e.trim();if(!t)return{};let n=t.replace(/^signal:/i,``).trim();if(!n)return{};if(n.toLowerCase().startsWith(`group:`)){let e=n.slice(6).trim();return e?{groupId:e}:{}}return{recipient:C(n)}}async function T(e){let t={cfg:e.cfg,accountId:e.accountId,groupId:e.target.groupId,targetAuthor:e.targetAuthor,targetAuthorUuid:e.targetAuthorUuid};return e.remove?(await S(e.target.recipient??``,e.timestamp,e.emoji,t),o({ok:!0,removed:e.emoji})):(await x(e.target.recipient??``,e.timestamp,e.emoji,t),o({ok:!0,added:e.emoji}))}const E={listActions:({cfg:e})=>{let t=n(e);if(t.length===0)return[];let r=t.filter(e=>e.configured);if(r.length===0)return[];let i=new Set([`send`]);return r.some(e=>a(e.config.actions)(`reactions`))&&i.add(`react`),Array.from(i)},supportsAction:({action:e})=>e!==`send`,handleAction:async({action:e,params:n,cfg:r,accountId:o,toolContext:c})=>{if(e===`send`)throw Error(`Send should be handled by outbound, not actions handler.`);if(e===`react`){let e=d({cfg:r,accountId:o??void 0});if(!e.agentReactionsEnabled)throw Error(`Signal agent reactions disabled (reactionLevel="${e.level}"). Set channels.signal.reactionLevel to "minimal" or "extensive" to enable.`);let l=t({cfg:r,accountId:o}).config.actions;if(!a(l)(`reactions`))throw Error(`Signal reactions are disabled via actions.reactions.`);let u=w(i(n,`recipient`)??i(n,`to`,{required:!0,label:`recipient (UUID, phone number, or group)`}));if(!u.recipient&&!u.groupId)throw Error(`recipient or group required`);let f=s({args:n,toolContext:c}),p=f==null?void 0:String(f);if(!p)throw Error(`messageId (timestamp) required. Provide messageId explicitly or react to the current inbound message.`);let m=i(n,`targetAuthor`),h=i(n,`targetAuthorUuid`);if(u.groupId&&!m&&!h)throw Error(`targetAuthor or targetAuthorUuid required for group reactions.`);let g=i(n,`emoji`,{allowEmpty:!0}),_=typeof n.remove==`boolean`?n.remove:void 0,v=parseInt(p,10);if(!Number.isFinite(v))throw Error(`Invalid messageId: ${p}. Expected numeric timestamp.`);if(_){if(!g)throw Error(`Emoji required to remove reaction.`);return await T({cfg:r,accountId:o??void 0,target:u,timestamp:v,emoji:g,remove:!0,targetAuthor:m,targetAuthorUuid:h})}if(!g)throw Error(`Emoji required to add reaction.`);return await T({cfg:r,accountId:o??void 0,target:u,timestamp:v,emoji:g,remove:!1,targetAuthor:m,targetAuthorUuid:h})}throw Error(`Action ${e} not supported for signal.`)}};export{E as signalMessageActions};