remoteclaw 0.0.0 → 0.1.0-next.2abd2fa

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 (2114) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/LICENSE +661 -0
  3. package/README.md +490 -0
  4. package/assets/chrome-extension/README.md +23 -0
  5. package/assets/chrome-extension/background-utils.js +48 -0
  6. package/assets/chrome-extension/background.js +899 -0
  7. package/assets/chrome-extension/icons/icon128.png +0 -0
  8. package/assets/chrome-extension/icons/icon16.png +0 -0
  9. package/assets/chrome-extension/icons/icon32.png +0 -0
  10. package/assets/chrome-extension/icons/icon48.png +0 -0
  11. package/assets/chrome-extension/manifest.json +25 -0
  12. package/assets/chrome-extension/options-validation.js +57 -0
  13. package/assets/chrome-extension/options.html +200 -0
  14. package/assets/chrome-extension/options.js +74 -0
  15. package/assets/clawtributor-avatar-placeholder.png +0 -0
  16. package/assets/dmg-background-small.png +0 -0
  17. package/assets/dmg-background.png +0 -0
  18. package/dist/account-lookup-0KDSp5Mj.js +11 -0
  19. package/dist/account-lookup-zvANGr2x.js +11 -0
  20. package/dist/accounts-BFy_Z3od.js +272 -0
  21. package/dist/accounts-BTXSfPWi.js +270 -0
  22. package/dist/accounts-BxGS70Do.js +36 -0
  23. package/dist/accounts-CNY1TGj1.js +47 -0
  24. package/dist/accounts-DBohBlww.js +32 -0
  25. package/dist/accounts-DqRQ75w3.js +36 -0
  26. package/dist/accounts-iODF3SK2.js +47 -0
  27. package/dist/ack-reactions-B11TAC2D.js +446 -0
  28. package/dist/ack-reactions-BWVjL4H6.js +446 -0
  29. package/dist/acp-cli-CA1xMmVo.js +1320 -0
  30. package/dist/acp-cli-CGo6fJVZ.js +1326 -0
  31. package/dist/active-listener-VzhWW8W6.js +37 -0
  32. package/dist/active-listener-z0qVEcom.js +37 -0
  33. package/dist/agent-CTizRPIJ.js +732 -0
  34. package/dist/agent-D2RVoS5g.js +731 -0
  35. package/dist/agent-helpers-B6VfZ9_u.js +606 -0
  36. package/dist/agent-helpers-CTx5KKJu.js +606 -0
  37. package/dist/agent-scope-BGYzhtWQ.js +121 -0
  38. package/dist/agent-scope-C50VuLKh.js +119 -0
  39. package/dist/agents-BuYn-obw.js +788 -0
  40. package/dist/agents.config-BSTxuTVd.js +116 -0
  41. package/dist/agents.config-p3V3b9u6.js +116 -0
  42. package/dist/ansi-D04X81yq.js +14 -0
  43. package/dist/api-BeQMq2iS.js +17 -0
  44. package/dist/api-CxX8-gGz.js +17 -0
  45. package/dist/argv-Co-b9Zsc.js +101 -0
  46. package/dist/audio-DPOuhNq7.js +43 -0
  47. package/dist/audio-VBcVDa08.js +43 -0
  48. package/dist/audio-preflight-BwmCYeuM.js +64 -0
  49. package/dist/audio-preflight-co8gjlPX.js +69 -0
  50. package/dist/audit-oH4urD3G.js +3138 -0
  51. package/dist/audit-qgtCT3ik.js +3138 -0
  52. package/dist/auth-CAczFgAO.js +448 -0
  53. package/dist/auth-Deh9i9Eg.js +448 -0
  54. package/dist/auth-profiles-BquJGKLC.js +279 -0
  55. package/dist/auth-profiles-D8vKiBPq.js +281 -0
  56. package/dist/banner-Cf978khN.js +294 -0
  57. package/dist/binaries-DXW6oATV.js +13 -0
  58. package/dist/bindings-CRU_udk8.js +69 -0
  59. package/dist/bindings-DQZAu8Wv.js +69 -0
  60. package/dist/bonjour-discovery-DdAk1VyO.js +378 -0
  61. package/dist/bonjour-discovery-DuhiIZZx.js +378 -0
  62. package/dist/boot/handler.js +1498 -0
  63. package/dist/brew-C4zKZsHX.js +46 -0
  64. package/dist/brew-DbSbN8sD.js +46 -0
  65. package/dist/browser-cli-CZC4h5V4.js +1687 -0
  66. package/dist/browser-cli-DAgi_aQk.js +1692 -0
  67. package/dist/build-info.json +5 -0
  68. package/dist/bundled/boot/HOOK.md +24 -0
  69. package/dist/bundled/command-logger/HOOK.md +122 -0
  70. package/dist/call-BbwtB9Y-.js +2828 -0
  71. package/dist/call-PivL7Uex.js +2829 -0
  72. package/dist/canvas-host/a2ui/.bundle.hash +1 -0
  73. package/dist/canvas-host/a2ui/a2ui.bundle.js +13193 -0
  74. package/dist/canvas-host/a2ui/index.html +307 -0
  75. package/dist/catalog-BqO6yem_.js +185 -0
  76. package/dist/catalog-DFmaYwfk.js +185 -0
  77. package/dist/channel-account-context-CvIDAtHS.js +550 -0
  78. package/dist/channel-account-context-q-o0pG1A.js +550 -0
  79. package/dist/channel-activity-BaCNOZpP.js +94 -0
  80. package/dist/channel-activity-C-G4n9BK.js +292 -0
  81. package/dist/channel-activity-DTKGf3j5.js +94 -0
  82. package/dist/channel-options-Cyappik_.js +32 -0
  83. package/dist/channel-options-DFnypY5S.js +33 -0
  84. package/dist/channel-selection-BGl53D5K.js +51 -0
  85. package/dist/channel-selection-NNPbxnyZ.js +51 -0
  86. package/dist/channel-web-DmhVkWbP.js +2134 -0
  87. package/dist/channel-web-kRC3UYBJ.js +2136 -0
  88. package/dist/channels-cli-C5XRkPJl.js +1421 -0
  89. package/dist/channels-cli-D6TqCI0m.js +1426 -0
  90. package/dist/channels-status-issues-CUc9mpeW.js +18 -0
  91. package/dist/channels-status-issues-DwRDzwrV.js +18 -0
  92. package/dist/chat-envelope-DEZ-5RY8.js +248 -0
  93. package/dist/chat-envelope-el7Uo-Fe.js +248 -0
  94. package/dist/chat-type-CYPyHAj-.js +11 -0
  95. package/dist/chat-type-DKb2TlGZ.js +11 -0
  96. package/dist/chrome-0QaGKb3L.js +1732 -0
  97. package/dist/chrome-CFeWdP0Y.js +1733 -0
  98. package/dist/chunk-CSQfUhgF.js +341 -0
  99. package/dist/chunk-D0Y_w4oX.js +341 -0
  100. package/dist/clack-prompter-B7tOxhJd.js +122 -0
  101. package/dist/clack-prompter-CCFnKP_1.js +121 -0
  102. package/dist/cleanup-utils-CqAVZz2b.js +94 -0
  103. package/dist/cleanup-utils-CwQvD73q.js +94 -0
  104. package/dist/cli/daemon-cli.js +9 -0
  105. package/dist/cli-BR2J3c4l.js +125 -0
  106. package/dist/cli-C1q1vSmN.js +130 -0
  107. package/dist/cli-name-BicfmwQX.js +23 -0
  108. package/dist/cli-name-C6rJGl18.js +23 -0
  109. package/dist/cli-utils-BhXbz2UF.js +16 -0
  110. package/dist/cli-utils-DZe_rVkZ.js +16 -0
  111. package/dist/client-C61M8zI3.js +22 -0
  112. package/dist/client-DdpmATKq.js +22 -0
  113. package/dist/clipboard-D7_SKHPK.js +31 -0
  114. package/dist/clipboard-Dzkx6Q2K.js +31 -0
  115. package/dist/command-format-CVfo8I5f.js +18 -0
  116. package/dist/command-format-DgXcqxBt.js +32 -0
  117. package/dist/command-logger/handler.js +57 -0
  118. package/dist/command-options-C4paWSGf.js +26 -0
  119. package/dist/command-options-CA30lfLK.js +26 -0
  120. package/dist/command-registry-CYjvOp8W.js +215 -0
  121. package/dist/commands-CDonBOrw.js +41 -0
  122. package/dist/commands-D_-bgTlO.js +41 -0
  123. package/dist/commands-registry-CWJv6xe2.js +892 -0
  124. package/dist/commands-registry-Ci8_cFk9.js +893 -0
  125. package/dist/common-CMI-qsF8.js +156 -0
  126. package/dist/common-DSVmydhm.js +156 -0
  127. package/dist/completion-cli-8iZJqfmX.js +452 -0
  128. package/dist/completion-cli-CYDjEZSt.js +452 -0
  129. package/dist/config-D5XU45KD.js +6953 -0
  130. package/dist/config-FHu9Bn4R.js +6951 -0
  131. package/dist/config-cli-Gehy4sav.js +241 -0
  132. package/dist/config-cli-RC9qMgJq.js +246 -0
  133. package/dist/config-eval-CjGZtLwx.js +102 -0
  134. package/dist/config-eval-H_wlEYIG.js +102 -0
  135. package/dist/config-guard-J-Q_DFWk.js +97 -0
  136. package/dist/config-guard-cB5a_ANg.js +75 -0
  137. package/dist/config-validation-BPNyd9_3.js +18 -0
  138. package/dist/config-validation-BPWuvhVe.js +18 -0
  139. package/dist/configure-CC2XdRRm.js +891 -0
  140. package/dist/configure-DxFBJuhZ.js +889 -0
  141. package/dist/constants-BmRFoHl0.js +67 -0
  142. package/dist/constants-C9WPAluB.js +67 -0
  143. package/dist/constants-ChptG3d7.js +12 -0
  144. package/dist/constants-DY6b-_Wl.js +12 -0
  145. package/dist/control-auth-D0tpV3ts.js +397 -0
  146. package/dist/control-auth-_-0PGRUs.js +397 -0
  147. package/dist/control-ui/apple-touch-icon.png +0 -0
  148. package/dist/control-ui/assets/index-B4ZM1lW1.js +7738 -0
  149. package/dist/control-ui/assets/index-B4ZM1lW1.js.map +1 -0
  150. package/dist/control-ui/assets/index-PED72sKF.css +1 -0
  151. package/dist/control-ui/assets/pt-BR-eq0TfCI7.js +2 -0
  152. package/dist/control-ui/assets/pt-BR-eq0TfCI7.js.map +1 -0
  153. package/dist/control-ui/assets/zh-CN-DmLG2MF9.js +2 -0
  154. package/dist/control-ui/assets/zh-CN-DmLG2MF9.js.map +1 -0
  155. package/dist/control-ui/assets/zh-TW-BLErH0EM.js +2 -0
  156. package/dist/control-ui/assets/zh-TW-BLErH0EM.js.map +1 -0
  157. package/dist/control-ui/favicon-32.png +0 -0
  158. package/dist/control-ui/favicon.ico +0 -0
  159. package/dist/control-ui/favicon.svg +67 -0
  160. package/dist/control-ui/index.html +17 -0
  161. package/dist/control-ui-assets-Cx_mw4D0.js +186 -0
  162. package/dist/control-ui-assets-W1AUuGrO.js +186 -0
  163. package/dist/conversation-label-C4SDz4sT.js +36 -0
  164. package/dist/conversation-label-D1frnvYe.js +36 -0
  165. package/dist/credentials-BHWUBHMd.js +91 -0
  166. package/dist/credentials-DFsi1_e8.js +91 -0
  167. package/dist/cron-cli-BzERxhr5.js +495 -0
  168. package/dist/cron-cli-C8j_uslU.js +490 -0
  169. package/dist/daemon-cli-C95XNbX0.js +1199 -0
  170. package/dist/daemon-cli-e6sURMqd.js +1197 -0
  171. package/dist/daemon-cli.js +15243 -0
  172. package/dist/daemon-install-CcohRvKV.js +55 -0
  173. package/dist/daemon-install-DDshfT0J.js +60 -0
  174. package/dist/daemon-install-helpers-CFGAfRlj.js +462 -0
  175. package/dist/daemon-install-helpers-DIUzSFG1.js +462 -0
  176. package/dist/daemon-runtime-CMnbwryP.js +13 -0
  177. package/dist/daemon-runtime-CvqE4ysg.js +13 -0
  178. package/dist/dangerous-name-matching-BzmiLXmA.js +45 -0
  179. package/dist/dangerous-name-matching-DaVRgwer.js +45 -0
  180. package/dist/dangerous-tools-BOLoCRv4.js +253 -0
  181. package/dist/dangerous-tools-Baq7Q-i6.js +253 -0
  182. package/dist/defaults-B5KStIBg.js +7 -0
  183. package/dist/defaults-xUAL2Z-F.js +7 -0
  184. package/dist/deliver-912khjLK.js +481 -0
  185. package/dist/deliver-D56J4-1F.js +481 -0
  186. package/dist/delivery-queue-Cfa9Wmxp.js +244 -0
  187. package/dist/delivery-queue-CxVRi4tw.js +244 -0
  188. package/dist/devices-cli-0qDhTgZR.js +316 -0
  189. package/dist/devices-cli-6SKMR2bV.js +321 -0
  190. package/dist/diagnostics-99iCgBUh.js +46 -0
  191. package/dist/diagnostics-VC0cz7kX.js +46 -0
  192. package/dist/directory-cli-5YXdoVdn.js +217 -0
  193. package/dist/directory-cli-D3IKCHmn.js +222 -0
  194. package/dist/dm-policy-shared-4rkjhcrM.js +22 -0
  195. package/dist/dm-policy-shared-D8lgnmrC.js +22 -0
  196. package/dist/dns-cli-11CtErVU.js +197 -0
  197. package/dist/dns-cli-SiEd_1Lq.js +202 -0
  198. package/dist/dock-BqNINg7k.js +928 -0
  199. package/dist/dock-CQuu41bw.js +929 -0
  200. package/dist/doctor-completion-BR1SlAT3.js +92 -0
  201. package/dist/doctor-completion-CZwpEhIK.js +92 -0
  202. package/dist/doctor-config-flow-BVkHcvoj.js +1933 -0
  203. package/dist/doctor-config-flow-DVYRn0An.js +1934 -0
  204. package/dist/enable-DcJnkzfz.js +59 -0
  205. package/dist/enable-ibNq4UWy.js +59 -0
  206. package/dist/entry.js +2620 -0
  207. package/dist/env-DeF64iu0.js +60 -0
  208. package/dist/env-vars-7aZqKPhk.js +93 -0
  209. package/dist/env-vars-CLGbxdpL.js +93 -0
  210. package/dist/errors-8F-77i6m.js +35 -0
  211. package/dist/errors-DZ199hOo.js +35 -0
  212. package/dist/exec-DbKuYyM1.js +164 -0
  213. package/dist/exec-DkFE7lqU.js +164 -0
  214. package/dist/export-html/template.css +1060 -0
  215. package/dist/export-html/template.html +88 -0
  216. package/dist/export-html/template.js +1797 -0
  217. package/dist/export-html/vendor/highlight.min.js +1213 -0
  218. package/dist/export-html/vendor/marked.min.js +6 -0
  219. package/dist/extensionAPI.js +11520 -0
  220. package/dist/fetch-BFSBLBkA.js +67 -0
  221. package/dist/fetch-C6XKGA11.js +67 -0
  222. package/dist/fetch-CEDsOiql.js +67 -0
  223. package/dist/fetch-timeout-DTIN7CGM.js +43 -0
  224. package/dist/fetch-timeout-DoySHqfO.js +43 -0
  225. package/dist/file-identity-BxlKD8Ys.js +12 -0
  226. package/dist/file-lock-CIvloidc.js +107 -0
  227. package/dist/file-lock-CzBL_VIx.js +107 -0
  228. package/dist/format-duration-CqUERz51.js +35 -0
  229. package/dist/format-duration-Ct-yiwkS.js +35 -0
  230. package/dist/format-relative-79_Y1n2Y.js +55 -0
  231. package/dist/format-relative-CxLpEQOX.js +55 -0
  232. package/dist/fs-safe-DSwT85uK.js +88 -0
  233. package/dist/fs-safe-DkBhNAc3.js +98 -0
  234. package/dist/gateway-cli-BEEZhCHv.js +23747 -0
  235. package/dist/gateway-cli-Nob0g_4y.js +23742 -0
  236. package/dist/gateway-rpc-CksB-N83.js +28 -0
  237. package/dist/gateway-rpc-Dq44SkOv.js +28 -0
  238. package/dist/gmail-setup-utils-Cnx8A5pW.js +422 -0
  239. package/dist/gmail-setup-utils-nkabbKOE.js +423 -0
  240. package/dist/health-RT-F3hzT.js +1423 -0
  241. package/dist/health-SOuaKNRa.js +1420 -0
  242. package/dist/health-format-BG95OE6N.js +28 -0
  243. package/dist/health-format-B_QRD8Si.js +28 -0
  244. package/dist/heartbeat-visibility-BxkZjE5m.js +125 -0
  245. package/dist/heartbeat-visibility-CGG-G7px.js +125 -0
  246. package/dist/heartbeat-wake-LGEgcXjs.js +182 -0
  247. package/dist/heartbeat-wake-Y97geucO.js +182 -0
  248. package/dist/help-format-DAxf0l_h.js +17 -0
  249. package/dist/help-format-NNm_Ov4H.js +17 -0
  250. package/dist/helpers-BAsMXprO.js +25 -0
  251. package/dist/helpers-DLgbkcEn.js +25 -0
  252. package/dist/helpers-R7bU5IBz.js +10 -0
  253. package/dist/helpers-kkeXif0Q.js +10 -0
  254. package/dist/hook-runner-global-DJ14gXFP.js +527 -0
  255. package/dist/hooks-cli-DyEKryW8.js +1217 -0
  256. package/dist/hooks-cli-RuEn0-oy.js +1222 -0
  257. package/dist/host-env-security-Bms2_EMV.js +92 -0
  258. package/dist/host-env-security-szwfmhC4.js +92 -0
  259. package/dist/image-ops-Bi6JPSkD.js +354 -0
  260. package/dist/image-ops-DWytvdh_.js +354 -0
  261. package/dist/import-D8BBZQgl.js +170 -0
  262. package/dist/import-DQ6NI4Fz.js +168 -0
  263. package/dist/inbound-context-CPkkQW0i.js +68 -0
  264. package/dist/inbound-context-DS_kpIYI.js +68 -0
  265. package/dist/inbound-path-policy-Bg4gZBx-.js +250 -0
  266. package/dist/inbound-path-policy-sdr5Ji0k.js +250 -0
  267. package/dist/index.js +569 -0
  268. package/dist/input-provenance-Bn6thJNm.js +35 -0
  269. package/dist/input-provenance-xUsSMOsz.js +35 -0
  270. package/dist/inspect-Dt8hogS3.js +559 -0
  271. package/dist/inspect-vYIL1oA0.js +559 -0
  272. package/dist/installs-aM5dWAyn.js +325 -0
  273. package/dist/installs-pWdqG8HL.js +325 -0
  274. package/dist/ip-C9q3Oq20.js +200 -0
  275. package/dist/ip-D0zgNmBV.js +200 -0
  276. package/dist/ipv4--2WXMVtE.js +46 -0
  277. package/dist/ipv4-CDQpx1A7.js +46 -0
  278. package/dist/ir-BpaAMTfW.js +940 -0
  279. package/dist/is-main-DN8-sNR5.js +30 -0
  280. package/dist/json-file-B7l5-Xhr.js +25 -0
  281. package/dist/json-file-ChO_R9yh.js +25 -0
  282. package/dist/json-files-CmpYSF4G.js +46 -0
  283. package/dist/json-files-DzpTak5i.js +46 -0
  284. package/dist/lanes-ByWMUgrz.js +58 -0
  285. package/dist/lanes-cHJ5arWg.js +58 -0
  286. package/dist/links-Bz4V7R_p.js +15 -0
  287. package/dist/links-C3soDNDH.js +15 -0
  288. package/dist/loader-Ccwsh8Sh.js +22624 -0
  289. package/dist/loader-y9MhJewT.js +22621 -0
  290. package/dist/local-roots-BrH0Q63K.js +313 -0
  291. package/dist/local-roots-nImrw2WR.js +314 -0
  292. package/dist/location-DBWCGNLq.js +43 -0
  293. package/dist/location-GbZ0bBRU.js +43 -0
  294. package/dist/logger-BWMPnILd.js +47 -0
  295. package/dist/logger-Bw3cFE5t.js +49 -0
  296. package/dist/logger-DyL5G2DO.js +12 -0
  297. package/dist/logger-GvipVDfh.js +12 -0
  298. package/dist/logging-C-nxX2fn.js +20 -0
  299. package/dist/logging-D8-Kozjc.js +19 -0
  300. package/dist/login-C_Kt57nO.js +62 -0
  301. package/dist/login-DOmWDMeP.js +61 -0
  302. package/dist/login-qr-CXU0wC5K.js +322 -0
  303. package/dist/login-qr-D0u6fdeO.js +327 -0
  304. package/dist/logs-cli-CschwP4d.js +238 -0
  305. package/dist/logs-cli-D7ayUvz_.js +233 -0
  306. package/dist/markdown-tables-CrmghPAr.js +29 -0
  307. package/dist/markdown-tables-jrnSPvZ6.js +29 -0
  308. package/dist/media-CojxZ45J.js +10492 -0
  309. package/dist/media-DN7yRfrH.js +940 -0
  310. package/dist/message-action-names-CtEZcmlU.js +2521 -0
  311. package/dist/message-action-names-WglOO_DT.js +2521 -0
  312. package/dist/message-channel-DzJqHVZD.js +91 -0
  313. package/dist/message-channel-uWMAiywE.js +91 -0
  314. package/dist/mime-BS3jhcZE.js +149 -0
  315. package/dist/mime-Cxh_64P6.js +149 -0
  316. package/dist/mutable-allowlist-detectors-DiZDtmlZ.js +64 -0
  317. package/dist/mutable-allowlist-detectors-U5ThQr9V.js +64 -0
  318. package/dist/net-Cg8AQeke.js +225 -0
  319. package/dist/net-D6D0wgcF.js +225 -0
  320. package/dist/node-cli-Q2-n3Fgv.js +24 -0
  321. package/dist/node-cli-Uf6lAntf.js +24 -0
  322. package/dist/nodes-cli-C2SoKfCv.js +1343 -0
  323. package/dist/nodes-cli-CQmlfx0K.js +1348 -0
  324. package/dist/nodes-screen-BR9sYoPa.js +250 -0
  325. package/dist/nodes-screen-Cw7Hv7M2.js +250 -0
  326. package/dist/note-Dlv4NmlQ.js +92 -0
  327. package/dist/note-kvWV4xtw.js +92 -0
  328. package/dist/npm-registry-spec-0qiKawvv.js +786 -0
  329. package/dist/npm-registry-spec-COvUzy5J.js +786 -0
  330. package/dist/npm-resolution-6v_Zm-9G.js +86 -0
  331. package/dist/npm-resolution-BFz7LeoN.js +86 -0
  332. package/dist/onboard-CgyU-mDL.js +407 -0
  333. package/dist/onboard-RI4vNTZd.js +405 -0
  334. package/dist/onboard-channels-DN5JoKPd.js +2548 -0
  335. package/dist/onboard-channels-DyAd1OZr.js +2547 -0
  336. package/dist/onboard-config-BCTthQ7J.js +24 -0
  337. package/dist/onboard-config-y-2cgT0V.js +24 -0
  338. package/dist/onboard-helpers-BCzZUD0z.js +363 -0
  339. package/dist/onboard-helpers-sDc2Ky6H.js +362 -0
  340. package/dist/onboard-remote-CJrMtttl.js +127 -0
  341. package/dist/onboard-remote-hyQIBguz.js +127 -0
  342. package/dist/onboarding-DCu1iBTV.js +541 -0
  343. package/dist/onboarding-zKMitzpb.js +543 -0
  344. package/dist/onboarding.finalize-ClHhYE2E.js +401 -0
  345. package/dist/onboarding.finalize-D5JkVJgg.js +398 -0
  346. package/dist/onboarding.gateway-config-DFh71Ndn.js +198 -0
  347. package/dist/onboarding.gateway-config-VBk6AP9U.js +191 -0
  348. package/dist/outbound-BYlZshIw.js +221 -0
  349. package/dist/outbound-CFfJC1j5.js +220 -0
  350. package/dist/outbound-attachment-BCNs1u1F.js +18 -0
  351. package/dist/outbound-attachment-B_0D60Yr.js +18 -0
  352. package/dist/outbound-attachment-o0seS0CP.js +18 -0
  353. package/dist/pairing-cli-BeydfoF9.js +122 -0
  354. package/dist/pairing-cli-DWzX866x.js +127 -0
  355. package/dist/pairing-labels-B-N8S5Fc.js +9 -0
  356. package/dist/pairing-labels-B_53dY5L.js +9 -0
  357. package/dist/pairing-store-BxdqFZGK.js +460 -0
  358. package/dist/pairing-store-CTkD51uW.js +459 -0
  359. package/dist/parse-log-line-enq8pduH.js +44 -0
  360. package/dist/parse-log-line-mz9TG6ig.js +44 -0
  361. package/dist/parse-timeout-BMP8a0_a.js +16 -0
  362. package/dist/parse-timeout-CDkco8kd.js +16 -0
  363. package/dist/path-env-DR5vn3QL.js +89 -0
  364. package/dist/path-env-qRJbjJzj.js +89 -0
  365. package/dist/path-guards-CIx4hURU.js +31 -0
  366. package/dist/path-guards-CrQOUlsq.js +31 -0
  367. package/dist/path-safety-DkT9RmTG.js +14 -0
  368. package/dist/path-safety-juI2XbO1.js +14 -0
  369. package/dist/paths-BTaH3rLn.js +232 -0
  370. package/dist/plugin-auto-enable-D23gv7Aw.js +302 -0
  371. package/dist/plugin-auto-enable-DuPS9XiJ.js +301 -0
  372. package/dist/plugin-registry-CNu_1KZz.js +33 -0
  373. package/dist/plugin-registry-DeHwd2jk.js +33 -0
  374. package/dist/plugin-sdk/account-id.d.ts +1 -0
  375. package/dist/plugin-sdk/account-id.js +34 -0
  376. package/dist/plugin-sdk/agents/agent-helpers/errors.d.ts +55 -0
  377. package/dist/plugin-sdk/agents/agent-helpers/google.d.ts +3 -0
  378. package/dist/plugin-sdk/agents/agent-helpers/images.d.ts +21 -0
  379. package/dist/plugin-sdk/agents/agent-helpers/message-sanitization.d.ts +14 -0
  380. package/dist/plugin-sdk/agents/agent-helpers/messaging-dedupe.d.ts +10 -0
  381. package/dist/plugin-sdk/agents/agent-helpers/openai.d.ts +9 -0
  382. package/dist/plugin-sdk/agents/agent-helpers/thinking.d.ts +5 -0
  383. package/dist/plugin-sdk/agents/agent-helpers/turns.d.ts +20 -0
  384. package/dist/plugin-sdk/agents/agent-helpers/types.d.ts +1 -0
  385. package/dist/plugin-sdk/agents/agent-helpers.d.ts +11 -0
  386. package/dist/plugin-sdk/agents/agent-messaging.d.ts +8 -0
  387. package/dist/plugin-sdk/agents/agent-paths.d.ts +1 -0
  388. package/dist/plugin-sdk/agents/agent-scope.d.ts +61 -0
  389. package/dist/plugin-sdk/agents/agent-types.d.ts +78 -0
  390. package/dist/plugin-sdk/agents/agent-utils.d.ts +39 -0
  391. package/dist/plugin-sdk/agents/announce-idempotency.d.ts +11 -0
  392. package/dist/plugin-sdk/agents/api-key-rotation.d.ts +22 -0
  393. package/dist/plugin-sdk/agents/auth-profiles/constants.d.ts +16 -0
  394. package/dist/plugin-sdk/agents/auth-profiles/display.d.ts +7 -0
  395. package/dist/plugin-sdk/agents/auth-profiles/doctor.d.ts +8 -0
  396. package/dist/plugin-sdk/agents/auth-profiles/oauth.d.ts +14 -0
  397. package/dist/plugin-sdk/agents/auth-profiles/paths.d.ts +4 -0
  398. package/dist/plugin-sdk/agents/auth-profiles/profiles.d.ts +12 -0
  399. package/dist/plugin-sdk/agents/auth-profiles/session-override.d.ts +18 -0
  400. package/dist/plugin-sdk/agents/auth-profiles/store.d.ts +10 -0
  401. package/dist/plugin-sdk/agents/auth-profiles/types.d.ts +13 -0
  402. package/dist/plugin-sdk/agents/auth-profiles.d.ts +8 -0
  403. package/dist/plugin-sdk/agents/block-chunker.d.ts +19 -0
  404. package/dist/plugin-sdk/agents/channel-tools.d.ts +27 -0
  405. package/dist/plugin-sdk/agents/cli-session.d.ts +3 -0
  406. package/dist/plugin-sdk/agents/current-time.d.ts +17 -0
  407. package/dist/plugin-sdk/agents/date-time.d.ts +13 -0
  408. package/dist/plugin-sdk/agents/defaults.d.ts +3 -0
  409. package/dist/plugin-sdk/agents/identity-avatar.d.ts +15 -0
  410. package/dist/plugin-sdk/agents/identity.d.ts +28 -0
  411. package/dist/plugin-sdk/agents/image-sanitization.d.ts +8 -0
  412. package/dist/plugin-sdk/agents/lanes.d.ts +3 -0
  413. package/dist/plugin-sdk/agents/live-auth-keys.d.ts +6 -0
  414. package/dist/plugin-sdk/agents/owner-display.d.ts +19 -0
  415. package/dist/plugin-sdk/agents/provider-auth.d.ts +40 -0
  416. package/dist/plugin-sdk/agents/provider-utils.d.ts +21 -0
  417. package/dist/plugin-sdk/agents/schema/typebox.d.ts +14 -0
  418. package/dist/plugin-sdk/agents/session-write-lock.d.ts +53 -0
  419. package/dist/plugin-sdk/agents/stable-stringify.d.ts +1 -0
  420. package/dist/plugin-sdk/agents/subagent-announce-queue.d.ts +24 -0
  421. package/dist/plugin-sdk/agents/subagent-announce.d.ts +39 -0
  422. package/dist/plugin-sdk/agents/subagent-depth.d.ts +11 -0
  423. package/dist/plugin-sdk/agents/subagent-lifecycle-events.d.ts +18 -0
  424. package/dist/plugin-sdk/agents/subagent-registry-cleanup.d.ts +24 -0
  425. package/dist/plugin-sdk/agents/subagent-registry-completion.d.ts +15 -0
  426. package/dist/plugin-sdk/agents/subagent-registry-queries.d.ts +11 -0
  427. package/dist/plugin-sdk/agents/subagent-registry-state.d.ts +7 -0
  428. package/dist/plugin-sdk/agents/subagent-registry.d.ts +45 -0
  429. package/dist/plugin-sdk/agents/subagent-registry.store.d.ts +5 -0
  430. package/dist/plugin-sdk/agents/subagent-registry.types.d.ts +34 -0
  431. package/dist/plugin-sdk/agents/subagent-spawn.d.ts +47 -0
  432. package/dist/plugin-sdk/agents/timeout.d.ts +8 -0
  433. package/dist/plugin-sdk/agents/tool-call-id.d.ts +27 -0
  434. package/dist/plugin-sdk/agents/tool-display-common.d.ts +32 -0
  435. package/dist/plugin-sdk/agents/tool-display.d.ts +15 -0
  436. package/dist/plugin-sdk/agents/tool-images.d.ts +10 -0
  437. package/dist/plugin-sdk/agents/tools/agent-step.d.ts +15 -0
  438. package/dist/plugin-sdk/agents/tools/common.d.ts +80 -0
  439. package/dist/plugin-sdk/agents/tools/discord-actions-guild.d.ts +4 -0
  440. package/dist/plugin-sdk/agents/tools/discord-actions-messaging.d.ts +6 -0
  441. package/dist/plugin-sdk/agents/tools/discord-actions-moderation-shared.d.ts +13 -0
  442. package/dist/plugin-sdk/agents/tools/discord-actions-moderation.d.ts +4 -0
  443. package/dist/plugin-sdk/agents/tools/discord-actions-presence.d.ts +4 -0
  444. package/dist/plugin-sdk/agents/tools/discord-actions.d.ts +5 -0
  445. package/dist/plugin-sdk/agents/tools/sessions-access.d.ts +42 -0
  446. package/dist/plugin-sdk/agents/tools/sessions-helpers.d.ts +52 -0
  447. package/dist/plugin-sdk/agents/tools/sessions-resolution.d.ts +59 -0
  448. package/dist/plugin-sdk/agents/tools/sessions-send-helpers.d.ts +34 -0
  449. package/dist/plugin-sdk/agents/tools/slack-actions.d.ts +15 -0
  450. package/dist/plugin-sdk/agents/tools/telegram-actions.d.ts +7 -0
  451. package/dist/plugin-sdk/agents/tools/whatsapp-actions.d.ts +3 -0
  452. package/dist/plugin-sdk/agents/tools/whatsapp-target-auth.d.ts +10 -0
  453. package/dist/plugin-sdk/agents/usage.d.ts +49 -0
  454. package/dist/plugin-sdk/agents/workspace.d.ts +1 -0
  455. package/dist/plugin-sdk/auto-reply/chunk.d.ts +45 -0
  456. package/dist/plugin-sdk/auto-reply/command-auth.d.ts +17 -0
  457. package/dist/plugin-sdk/auto-reply/command-detection.d.ts +13 -0
  458. package/dist/plugin-sdk/auto-reply/commands-args.d.ts +3 -0
  459. package/dist/plugin-sdk/auto-reply/commands-registry.d.ts +47 -0
  460. package/dist/plugin-sdk/auto-reply/commands-registry.data.d.ts +3 -0
  461. package/dist/plugin-sdk/auto-reply/commands-registry.types.d.ts +66 -0
  462. package/dist/plugin-sdk/auto-reply/dispatch.d.ts +32 -0
  463. package/dist/plugin-sdk/auto-reply/envelope.d.ts +58 -0
  464. package/dist/plugin-sdk/auto-reply/fallback-state.d.ts +55 -0
  465. package/dist/plugin-sdk/auto-reply/group-activation.d.ts +6 -0
  466. package/dist/plugin-sdk/auto-reply/heartbeat-reply-payload.d.ts +2 -0
  467. package/dist/plugin-sdk/auto-reply/heartbeat.d.ts +16 -0
  468. package/dist/plugin-sdk/auto-reply/inbound-debounce.d.ts +17 -0
  469. package/dist/plugin-sdk/auto-reply/media-note.d.ts +2 -0
  470. package/dist/plugin-sdk/auto-reply/model-runtime.d.ts +17 -0
  471. package/dist/plugin-sdk/auto-reply/model.d.ts +8 -0
  472. package/dist/plugin-sdk/auto-reply/reply/abort.d.ts +32 -0
  473. package/dist/plugin-sdk/auto-reply/reply/agent-runner-execution.d.ts +59 -0
  474. package/dist/plugin-sdk/auto-reply/reply/agent-runner-helpers.d.ts +15 -0
  475. package/dist/plugin-sdk/auto-reply/reply/agent-runner-payloads.d.ts +27 -0
  476. package/dist/plugin-sdk/auto-reply/reply/agent-runner-utils.d.ts +152 -0
  477. package/dist/plugin-sdk/auto-reply/reply/agent-runner.d.ts +36 -0
  478. package/dist/plugin-sdk/auto-reply/reply/block-reply-coalescer.d.ts +15 -0
  479. package/dist/plugin-sdk/auto-reply/reply/block-reply-pipeline.d.ts +31 -0
  480. package/dist/plugin-sdk/auto-reply/reply/block-streaming.d.ts +22 -0
  481. package/dist/plugin-sdk/auto-reply/reply/body.d.ts +10 -0
  482. package/dist/plugin-sdk/auto-reply/reply/command-gates.d.ts +18 -0
  483. package/dist/plugin-sdk/auto-reply/reply/commands-allowlist.d.ts +2 -0
  484. package/dist/plugin-sdk/auto-reply/reply/commands-config.d.ts +3 -0
  485. package/dist/plugin-sdk/auto-reply/reply/commands-context.d.ts +12 -0
  486. package/dist/plugin-sdk/auto-reply/reply/commands-core.d.ts +13 -0
  487. package/dist/plugin-sdk/auto-reply/reply/commands-export-session.d.ts +3 -0
  488. package/dist/plugin-sdk/auto-reply/reply/commands-info.d.ts +11 -0
  489. package/dist/plugin-sdk/auto-reply/reply/commands-plugin.d.ts +13 -0
  490. package/dist/plugin-sdk/auto-reply/reply/commands-session.d.ts +8 -0
  491. package/dist/plugin-sdk/auto-reply/reply/commands-setunset-standard.d.ts +10 -0
  492. package/dist/plugin-sdk/auto-reply/reply/commands-setunset.d.ts +34 -0
  493. package/dist/plugin-sdk/auto-reply/reply/commands-slash-parse.d.ts +24 -0
  494. package/dist/plugin-sdk/auto-reply/reply/commands-status.d.ts +26 -0
  495. package/dist/plugin-sdk/auto-reply/reply/commands-subagents/action-agents.d.ts +3 -0
  496. package/dist/plugin-sdk/auto-reply/reply/commands-subagents/action-focus.d.ts +3 -0
  497. package/dist/plugin-sdk/auto-reply/reply/commands-subagents/action-help.d.ts +2 -0
  498. package/dist/plugin-sdk/auto-reply/reply/commands-subagents/action-info.d.ts +3 -0
  499. package/dist/plugin-sdk/auto-reply/reply/commands-subagents/action-kill.d.ts +3 -0
  500. package/dist/plugin-sdk/auto-reply/reply/commands-subagents/action-list.d.ts +3 -0
  501. package/dist/plugin-sdk/auto-reply/reply/commands-subagents/action-log.d.ts +3 -0
  502. package/dist/plugin-sdk/auto-reply/reply/commands-subagents/action-send.d.ts +3 -0
  503. package/dist/plugin-sdk/auto-reply/reply/commands-subagents/action-spawn.d.ts +3 -0
  504. package/dist/plugin-sdk/auto-reply/reply/commands-subagents/action-unfocus.d.ts +3 -0
  505. package/dist/plugin-sdk/auto-reply/reply/commands-subagents/shared.d.ts +81 -0
  506. package/dist/plugin-sdk/auto-reply/reply/commands-subagents.d.ts +4 -0
  507. package/dist/plugin-sdk/auto-reply/reply/commands-tts.d.ts +2 -0
  508. package/dist/plugin-sdk/auto-reply/reply/commands-types.d.ts +61 -0
  509. package/dist/plugin-sdk/auto-reply/reply/commands.d.ts +4 -0
  510. package/dist/plugin-sdk/auto-reply/reply/config-commands.d.ts +15 -0
  511. package/dist/plugin-sdk/auto-reply/reply/config-value.d.ts +4 -0
  512. package/dist/plugin-sdk/auto-reply/reply/debug-commands.d.ts +16 -0
  513. package/dist/plugin-sdk/auto-reply/reply/directive-handling.auth.d.ts +19 -0
  514. package/dist/plugin-sdk/auto-reply/reply/directive-handling.d.ts +6 -0
  515. package/dist/plugin-sdk/auto-reply/reply/directive-handling.fast-lane.d.ts +7 -0
  516. package/dist/plugin-sdk/auto-reply/reply/directive-handling.impl.d.ts +3 -0
  517. package/dist/plugin-sdk/auto-reply/reply/directive-handling.levels.d.ts +20 -0
  518. package/dist/plugin-sdk/auto-reply/reply/directive-handling.params.d.ts +59 -0
  519. package/dist/plugin-sdk/auto-reply/reply/directive-handling.parse.d.ts +65 -0
  520. package/dist/plugin-sdk/auto-reply/reply/directive-handling.persist.d.ts +42 -0
  521. package/dist/plugin-sdk/auto-reply/reply/directive-handling.queue-validation.d.ts +10 -0
  522. package/dist/plugin-sdk/auto-reply/reply/directive-handling.shared.d.ts +29 -0
  523. package/dist/plugin-sdk/auto-reply/reply/directive-parsing.d.ts +5 -0
  524. package/dist/plugin-sdk/auto-reply/reply/directives.d.ts +58 -0
  525. package/dist/plugin-sdk/auto-reply/reply/dispatch-from-config.d.ts +16 -0
  526. package/dist/plugin-sdk/auto-reply/reply/dispatcher-registry.d.ts +24 -0
  527. package/dist/plugin-sdk/auto-reply/reply/elevated-allowlist-matcher.d.ts +20 -0
  528. package/dist/plugin-sdk/auto-reply/reply/elevated-unavailable.d.ts +8 -0
  529. package/dist/plugin-sdk/auto-reply/reply/followup-runner.d.ts +16 -0
  530. package/dist/plugin-sdk/auto-reply/reply/get-reply-directives-apply.d.ts +64 -0
  531. package/dist/plugin-sdk/auto-reply/reply/get-reply-directives-utils.d.ts +3 -0
  532. package/dist/plugin-sdk/auto-reply/reply/get-reply-directives.d.ts +121 -0
  533. package/dist/plugin-sdk/auto-reply/reply/get-reply-inline-actions.d.ts +56 -0
  534. package/dist/plugin-sdk/auto-reply/reply/get-reply-run.d.ts +73 -0
  535. package/dist/plugin-sdk/auto-reply/reply/get-reply.d.ts +4 -0
  536. package/dist/plugin-sdk/auto-reply/reply/groups.d.ts +26 -0
  537. package/dist/plugin-sdk/auto-reply/reply/history.d.ts +72 -0
  538. package/dist/plugin-sdk/auto-reply/reply/inbound-context.d.ts +8 -0
  539. package/dist/plugin-sdk/auto-reply/reply/inbound-dedupe.d.ts +8 -0
  540. package/dist/plugin-sdk/auto-reply/reply/inbound-meta.d.ts +3 -0
  541. package/dist/plugin-sdk/auto-reply/reply/inbound-text.d.ts +1 -0
  542. package/dist/plugin-sdk/auto-reply/reply/line-directives.d.ts +22 -0
  543. package/dist/plugin-sdk/auto-reply/reply/mentions.d.ts +19 -0
  544. package/dist/plugin-sdk/auto-reply/reply/normalize-reply.d.ts +11 -0
  545. package/dist/plugin-sdk/auto-reply/reply/origin-routing.d.ts +13 -0
  546. package/dist/plugin-sdk/auto-reply/reply/provider-dispatcher.d.ts +19 -0
  547. package/dist/plugin-sdk/auto-reply/reply/queue/cleanup.d.ts +6 -0
  548. package/dist/plugin-sdk/auto-reply/reply/queue/directive.d.ts +15 -0
  549. package/dist/plugin-sdk/auto-reply/reply/queue/drain.d.ts +2 -0
  550. package/dist/plugin-sdk/auto-reply/reply/queue/enqueue.d.ts +3 -0
  551. package/dist/plugin-sdk/auto-reply/reply/queue/normalize.d.ts +3 -0
  552. package/dist/plugin-sdk/auto-reply/reply/queue/settings.d.ts +2 -0
  553. package/dist/plugin-sdk/auto-reply/reply/queue/state.d.ts +20 -0
  554. package/dist/plugin-sdk/auto-reply/reply/queue/types.d.ts +87 -0
  555. package/dist/plugin-sdk/auto-reply/reply/queue-policy.d.ts +8 -0
  556. package/dist/plugin-sdk/auto-reply/reply/queue.d.ts +8 -0
  557. package/dist/plugin-sdk/auto-reply/reply/reply-delivery.d.ts +27 -0
  558. package/dist/plugin-sdk/auto-reply/reply/reply-directives.d.ts +14 -0
  559. package/dist/plugin-sdk/auto-reply/reply/reply-dispatcher.d.ts +53 -0
  560. package/dist/plugin-sdk/auto-reply/reply/reply-elevated.d.ts +16 -0
  561. package/dist/plugin-sdk/auto-reply/reply/reply-inline.d.ts +8 -0
  562. package/dist/plugin-sdk/auto-reply/reply/reply-payloads.d.ts +27 -0
  563. package/dist/plugin-sdk/auto-reply/reply/reply-reference.d.ts +20 -0
  564. package/dist/plugin-sdk/auto-reply/reply/reply-tags.d.ts +6 -0
  565. package/dist/plugin-sdk/auto-reply/reply/reply-threading.d.ts +9 -0
  566. package/dist/plugin-sdk/auto-reply/reply/response-prefix-template.d.ts +51 -0
  567. package/dist/plugin-sdk/auto-reply/reply/route-reply.d.ts +56 -0
  568. package/dist/plugin-sdk/auto-reply/reply/session-reset-prompt.d.ts +1 -0
  569. package/dist/plugin-sdk/auto-reply/reply/session-run-accounting.d.ts +11 -0
  570. package/dist/plugin-sdk/auto-reply/reply/session-updates.d.ts +18 -0
  571. package/dist/plugin-sdk/auto-reply/reply/session-usage.d.ts +21 -0
  572. package/dist/plugin-sdk/auto-reply/reply/session.d.ts +26 -0
  573. package/dist/plugin-sdk/auto-reply/reply/strip-inbound-meta.d.ts +27 -0
  574. package/dist/plugin-sdk/auto-reply/reply/subagents-utils.d.ts +26 -0
  575. package/dist/plugin-sdk/auto-reply/reply/typing-mode.d.ts +27 -0
  576. package/dist/plugin-sdk/auto-reply/reply/typing.d.ts +18 -0
  577. package/dist/plugin-sdk/auto-reply/reply/untrusted-context.d.ts +1 -0
  578. package/dist/plugin-sdk/auto-reply/reply.d.ts +5 -0
  579. package/dist/plugin-sdk/auto-reply/send-policy.d.ts +6 -0
  580. package/dist/plugin-sdk/auto-reply/status.d.ts +59 -0
  581. package/dist/plugin-sdk/auto-reply/templating.d.ts +159 -0
  582. package/dist/plugin-sdk/auto-reply/thinking.d.ts +22 -0
  583. package/dist/plugin-sdk/auto-reply/tokens.d.ts +3 -0
  584. package/dist/plugin-sdk/auto-reply/types.d.ts +82 -0
  585. package/dist/plugin-sdk/channel-web.d.ts +6 -0
  586. package/dist/plugin-sdk/channels/account-summary.d.ts +17 -0
  587. package/dist/plugin-sdk/channels/ack-reactions.d.ts +29 -0
  588. package/dist/plugin-sdk/channels/allow-from.d.ts +11 -0
  589. package/dist/plugin-sdk/channels/allowlist-match.d.ts +16 -0
  590. package/dist/plugin-sdk/channels/allowlists/resolve-utils.d.ts +33 -0
  591. package/dist/plugin-sdk/channels/channel-config.d.ts +39 -0
  592. package/dist/plugin-sdk/channels/chat-type.d.ts +2 -0
  593. package/dist/plugin-sdk/channels/command-gating.d.ts +20 -0
  594. package/dist/plugin-sdk/channels/conversation-label.d.ts +2 -0
  595. package/dist/plugin-sdk/channels/dock.d.ts +25 -0
  596. package/dist/plugin-sdk/channels/draft-stream-controls.d.ts +54 -0
  597. package/dist/plugin-sdk/channels/draft-stream-loop.d.ts +13 -0
  598. package/dist/plugin-sdk/channels/location.d.ts +21 -0
  599. package/dist/plugin-sdk/channels/logging.d.ts +20 -0
  600. package/dist/plugin-sdk/channels/mention-gating.d.ts +27 -0
  601. package/dist/plugin-sdk/channels/model-overrides.d.ts +18 -0
  602. package/dist/plugin-sdk/channels/plugins/account-action-gate.d.ts +5 -0
  603. package/dist/plugin-sdk/channels/plugins/account-helpers.d.ts +6 -0
  604. package/dist/plugin-sdk/channels/plugins/actions/discord/handle-action.d.ts +3 -0
  605. package/dist/plugin-sdk/channels/plugins/actions/discord/handle-action.guild-admin.d.ts +9 -0
  606. package/dist/plugin-sdk/channels/plugins/actions/discord.d.ts +2 -0
  607. package/dist/plugin-sdk/channels/plugins/actions/shared.d.ts +7 -0
  608. package/dist/plugin-sdk/channels/plugins/actions/signal.d.ts +2 -0
  609. package/dist/plugin-sdk/channels/plugins/actions/telegram.d.ts +2 -0
  610. package/dist/plugin-sdk/channels/plugins/agent-tools/whatsapp-login.d.ts +2 -0
  611. package/dist/plugin-sdk/channels/plugins/allowlist-match.d.ts +2 -0
  612. package/dist/plugin-sdk/channels/plugins/bluebubbles-actions.d.ts +48 -0
  613. package/dist/plugin-sdk/channels/plugins/channel-config.d.ts +2 -0
  614. package/dist/plugin-sdk/channels/plugins/config-helpers.d.ts +14 -0
  615. package/dist/plugin-sdk/channels/plugins/config-schema.d.ts +3 -0
  616. package/dist/plugin-sdk/channels/plugins/config-writes.d.ts +7 -0
  617. package/dist/plugin-sdk/channels/plugins/directory-config.d.ts +16 -0
  618. package/dist/plugin-sdk/channels/plugins/group-mentions.d.ts +18 -0
  619. package/dist/plugin-sdk/channels/plugins/helpers.d.ts +8 -0
  620. package/dist/plugin-sdk/channels/plugins/index.d.ts +8 -0
  621. package/dist/plugin-sdk/channels/plugins/media-limits.d.ts +9 -0
  622. package/dist/plugin-sdk/channels/plugins/media-payload.d.ts +15 -0
  623. package/dist/plugin-sdk/channels/plugins/message-action-names.d.ts +2 -0
  624. package/dist/plugin-sdk/channels/plugins/normalize/discord.d.ts +14 -0
  625. package/dist/plugin-sdk/channels/plugins/normalize/imessage.d.ts +2 -0
  626. package/dist/plugin-sdk/channels/plugins/normalize/shared.d.ts +6 -0
  627. package/dist/plugin-sdk/channels/plugins/normalize/signal.d.ts +2 -0
  628. package/dist/plugin-sdk/channels/plugins/normalize/slack.d.ts +2 -0
  629. package/dist/plugin-sdk/channels/plugins/normalize/telegram.d.ts +2 -0
  630. package/dist/plugin-sdk/channels/plugins/normalize/whatsapp.d.ts +3 -0
  631. package/dist/plugin-sdk/channels/plugins/onboarding/channel-access-configure.d.ts +21 -0
  632. package/dist/plugin-sdk/channels/plugins/onboarding/channel-access.d.ts +31 -0
  633. package/dist/plugin-sdk/channels/plugins/onboarding/discord.d.ts +2 -0
  634. package/dist/plugin-sdk/channels/plugins/onboarding/helpers.d.ts +177 -0
  635. package/dist/plugin-sdk/channels/plugins/onboarding/imessage.d.ts +6 -0
  636. package/dist/plugin-sdk/channels/plugins/onboarding/signal.d.ts +7 -0
  637. package/dist/plugin-sdk/channels/plugins/onboarding/slack.d.ts +2 -0
  638. package/dist/plugin-sdk/channels/plugins/onboarding/telegram.d.ts +4 -0
  639. package/dist/plugin-sdk/channels/plugins/onboarding/whatsapp.d.ts +2 -0
  640. package/dist/plugin-sdk/channels/plugins/onboarding-types.d.ts +77 -0
  641. package/dist/plugin-sdk/channels/plugins/outbound/load.d.ts +2 -0
  642. package/dist/plugin-sdk/channels/plugins/pairing-message.d.ts +1 -0
  643. package/dist/plugin-sdk/channels/plugins/pairing.d.ts +16 -0
  644. package/dist/plugin-sdk/channels/plugins/registry-loader.d.ts +5 -0
  645. package/dist/plugin-sdk/channels/plugins/setup-helpers.d.ts +13 -0
  646. package/dist/plugin-sdk/channels/plugins/status-issues/bluebubbles.d.ts +2 -0
  647. package/dist/plugin-sdk/channels/plugins/status-issues/discord.d.ts +2 -0
  648. package/dist/plugin-sdk/channels/plugins/status-issues/shared.d.ts +29 -0
  649. package/dist/plugin-sdk/channels/plugins/status-issues/telegram.d.ts +2 -0
  650. package/dist/plugin-sdk/channels/plugins/status-issues/whatsapp.d.ts +2 -0
  651. package/dist/plugin-sdk/channels/plugins/types.adapters.d.ts +288 -0
  652. package/dist/plugin-sdk/channels/plugins/types.core.d.ts +349 -0
  653. package/dist/plugin-sdk/channels/plugins/types.d.ts +6 -0
  654. package/dist/plugin-sdk/channels/plugins/types.plugin.d.ts +54 -0
  655. package/dist/plugin-sdk/channels/plugins/whatsapp-heartbeat.d.ts +11 -0
  656. package/dist/plugin-sdk/channels/plugins/whatsapp-shared.d.ts +5 -0
  657. package/dist/plugin-sdk/channels/registry.d.ts +15 -0
  658. package/dist/plugin-sdk/channels/reply-prefix.d.ts +24 -0
  659. package/dist/plugin-sdk/channels/sender-label.d.ts +9 -0
  660. package/dist/plugin-sdk/channels/session.d.ts +18 -0
  661. package/dist/plugin-sdk/channels/status-reactions.d.ts +62 -0
  662. package/dist/plugin-sdk/channels/targets.d.ts +42 -0
  663. package/dist/plugin-sdk/channels/telegram/api.d.ts +5 -0
  664. package/dist/plugin-sdk/channels/typing-lifecycle.d.ts +12 -0
  665. package/dist/plugin-sdk/channels/typing.d.ts +13 -0
  666. package/dist/plugin-sdk/channels/web/index.d.ts +1 -0
  667. package/dist/plugin-sdk/cli/cli-name.d.ts +3 -0
  668. package/dist/plugin-sdk/cli/command-format.d.ts +1 -0
  669. package/dist/plugin-sdk/cli/deps.d.ts +18 -0
  670. package/dist/plugin-sdk/cli/outbound-send-deps.d.ts +4 -0
  671. package/dist/plugin-sdk/cli/outbound-send-mapping.d.ts +10 -0
  672. package/dist/plugin-sdk/cli/parse-bytes.d.ts +4 -0
  673. package/dist/plugin-sdk/cli/parse-duration.d.ts +4 -0
  674. package/dist/plugin-sdk/cli/profile-utils.d.ts +2 -0
  675. package/dist/plugin-sdk/cli/progress.d.ts +24 -0
  676. package/dist/plugin-sdk/cli/wait.d.ts +1 -0
  677. package/dist/plugin-sdk/commands/agent/delivery.d.ts +25 -0
  678. package/dist/plugin-sdk/commands/agent/run-context.d.ts +2 -0
  679. package/dist/plugin-sdk/commands/agent/session-store.d.ts +16 -0
  680. package/dist/plugin-sdk/commands/agent/session.d.ts +33 -0
  681. package/dist/plugin-sdk/commands/agent/types.d.ts +89 -0
  682. package/dist/plugin-sdk/commands/agent.d.ts +14 -0
  683. package/dist/plugin-sdk/commands/daemon-runtime.d.ts +8 -0
  684. package/dist/plugin-sdk/commands/health.d.ts +63 -0
  685. package/dist/plugin-sdk/commands/oauth-flow.d.ts +21 -0
  686. package/dist/plugin-sdk/commands/onboard-helpers.d.ts +81 -0
  687. package/dist/plugin-sdk/commands/onboard-types.d.ts +69 -0
  688. package/dist/plugin-sdk/commands/signal-install.d.ts +30 -0
  689. package/dist/plugin-sdk/compat/legacy-names.d.ts +8 -0
  690. package/dist/plugin-sdk/config/agent-dirs.d.ts +14 -0
  691. package/dist/plugin-sdk/config/agent-limits.d.ts +6 -0
  692. package/dist/plugin-sdk/config/backup-rotation.d.ts +5 -0
  693. package/dist/plugin-sdk/config/cache-utils.d.ts +6 -0
  694. package/dist/plugin-sdk/config/commands.d.ts +20 -0
  695. package/dist/plugin-sdk/config/config-paths.d.ts +10 -0
  696. package/dist/plugin-sdk/config/config.d.ts +7 -0
  697. package/dist/plugin-sdk/config/dangerous-name-matching.d.ts +12 -0
  698. package/dist/plugin-sdk/config/defaults.d.ts +19 -0
  699. package/dist/plugin-sdk/config/discord-preview-streaming.d.ts +25 -0
  700. package/dist/plugin-sdk/config/env-preserve.d.ts +10 -0
  701. package/dist/plugin-sdk/config/env-substitution.d.ts +36 -0
  702. package/dist/plugin-sdk/config/env-vars.d.ts +6 -0
  703. package/dist/plugin-sdk/config/group-policy.d.ts +49 -0
  704. package/dist/plugin-sdk/config/includes.d.ts +32 -0
  705. package/dist/plugin-sdk/config/io.d.ts +60 -0
  706. package/dist/plugin-sdk/config/legacy-migrate.d.ts +5 -0
  707. package/dist/plugin-sdk/config/legacy.d.ts +6 -0
  708. package/dist/plugin-sdk/config/legacy.migrations.d.ts +1 -0
  709. package/dist/plugin-sdk/config/legacy.migrations.part-1.d.ts +2 -0
  710. package/dist/plugin-sdk/config/legacy.migrations.part-2.d.ts +2 -0
  711. package/dist/plugin-sdk/config/legacy.migrations.part-3.d.ts +2 -0
  712. package/dist/plugin-sdk/config/legacy.rules.d.ts +2 -0
  713. package/dist/plugin-sdk/config/legacy.shared.d.ts +19 -0
  714. package/dist/plugin-sdk/config/markdown-tables.d.ts +7 -0
  715. package/dist/plugin-sdk/config/merge-config.d.ts +7 -0
  716. package/dist/plugin-sdk/config/merge-patch.d.ts +5 -0
  717. package/dist/plugin-sdk/config/model-input.d.ts +9 -0
  718. package/dist/plugin-sdk/config/normalize-paths.d.ts +8 -0
  719. package/dist/plugin-sdk/config/paths.d.ts +57 -0
  720. package/dist/plugin-sdk/config/prototype-keys.d.ts +1 -0
  721. package/dist/plugin-sdk/config/runtime-group-policy.d.ts +56 -0
  722. package/dist/plugin-sdk/config/runtime-overrides.d.ts +15 -0
  723. package/dist/plugin-sdk/config/sessions/artifacts.d.ts +5 -0
  724. package/dist/plugin-sdk/config/sessions/constants.d.ts +2 -0
  725. package/dist/plugin-sdk/config/sessions/delivery-info.d.ts +16 -0
  726. package/dist/plugin-sdk/config/sessions/disk-budget.d.ts +28 -0
  727. package/dist/plugin-sdk/config/sessions/group.d.ts +11 -0
  728. package/dist/plugin-sdk/config/sessions/main-session.d.ts +43 -0
  729. package/dist/plugin-sdk/config/sessions/metadata.d.ts +16 -0
  730. package/dist/plugin-sdk/config/sessions/paths.d.ts +21 -0
  731. package/dist/plugin-sdk/config/sessions/reset.d.ts +43 -0
  732. package/dist/plugin-sdk/config/sessions/session-file.d.ts +15 -0
  733. package/dist/plugin-sdk/config/sessions/session-key.d.ts +8 -0
  734. package/dist/plugin-sdk/config/sessions/store.d.ts +123 -0
  735. package/dist/plugin-sdk/config/sessions/transcript.d.ts +18 -0
  736. package/dist/plugin-sdk/config/sessions/types.d.ts +160 -0
  737. package/dist/plugin-sdk/config/sessions.d.ts +13 -0
  738. package/dist/plugin-sdk/config/talk.d.ts +21 -0
  739. package/dist/plugin-sdk/config/telegram-custom-commands.d.ts +24 -0
  740. package/dist/plugin-sdk/config/types.agent-defaults.d.ts +268 -0
  741. package/dist/plugin-sdk/config/types.agents-shared.d.ts +49 -0
  742. package/dist/plugin-sdk/config/types.agents.d.ts +57 -0
  743. package/dist/plugin-sdk/config/types.approvals.d.ts +26 -0
  744. package/dist/plugin-sdk/config/types.auth.d.ts +28 -0
  745. package/dist/plugin-sdk/config/types.base.d.ts +203 -0
  746. package/dist/plugin-sdk/config/types.browser.d.ts +65 -0
  747. package/dist/plugin-sdk/config/types.channel-messaging-common.d.ts +44 -0
  748. package/dist/plugin-sdk/config/types.channels.d.ts +53 -0
  749. package/dist/plugin-sdk/config/types.cron.d.ts +26 -0
  750. package/dist/plugin-sdk/config/types.d.ts +27 -0
  751. package/dist/plugin-sdk/config/types.discord.d.ts +273 -0
  752. package/dist/plugin-sdk/config/types.gateway.d.ts +335 -0
  753. package/dist/plugin-sdk/config/types.googlechat.d.ts +107 -0
  754. package/dist/plugin-sdk/config/types.hooks.d.ts +123 -0
  755. package/dist/plugin-sdk/config/types.imessage.d.ts +77 -0
  756. package/dist/plugin-sdk/config/types.installs.d.ts +14 -0
  757. package/dist/plugin-sdk/config/types.irc.d.ts +54 -0
  758. package/dist/plugin-sdk/config/types.messages.d.ts +154 -0
  759. package/dist/plugin-sdk/config/types.models.d.ts +41 -0
  760. package/dist/plugin-sdk/config/types.msteams.d.ts +108 -0
  761. package/dist/plugin-sdk/config/types.node-host.d.ts +10 -0
  762. package/dist/plugin-sdk/config/types.plugins.d.ts +23 -0
  763. package/dist/plugin-sdk/config/types.queue.d.ts +14 -0
  764. package/dist/plugin-sdk/config/types.remoteclaw.d.ts +119 -0
  765. package/dist/plugin-sdk/config/types.signal.d.ts +46 -0
  766. package/dist/plugin-sdk/config/types.slack.d.ts +181 -0
  767. package/dist/plugin-sdk/config/types.telegram.d.ts +191 -0
  768. package/dist/plugin-sdk/config/types.tools.d.ts +322 -0
  769. package/dist/plugin-sdk/config/types.tts.d.ts +78 -0
  770. package/dist/plugin-sdk/config/types.whatsapp.d.ts +101 -0
  771. package/dist/plugin-sdk/config/validation.d.ts +37 -0
  772. package/dist/plugin-sdk/config/version.d.ts +8 -0
  773. package/dist/plugin-sdk/config/zod-schema.agent-defaults.d.ts +156 -0
  774. package/dist/plugin-sdk/config/zod-schema.agent-model.d.ts +5 -0
  775. package/dist/plugin-sdk/config/zod-schema.agent-runtime.d.ts +500 -0
  776. package/dist/plugin-sdk/config/zod-schema.agents.d.ts +298 -0
  777. package/dist/plugin-sdk/config/zod-schema.allowdeny.d.ts +13 -0
  778. package/dist/plugin-sdk/config/zod-schema.approvals.d.ts +15 -0
  779. package/dist/plugin-sdk/config/zod-schema.channels.d.ts +6 -0
  780. package/dist/plugin-sdk/config/zod-schema.core.d.ts +583 -0
  781. package/dist/plugin-sdk/config/zod-schema.d.ts +3434 -0
  782. package/dist/plugin-sdk/config/zod-schema.hooks.d.ts +85 -0
  783. package/dist/plugin-sdk/config/zod-schema.installs.d.ts +16 -0
  784. package/dist/plugin-sdk/config/zod-schema.providers-core.d.ts +3693 -0
  785. package/dist/plugin-sdk/config/zod-schema.providers-whatsapp.d.ts +235 -0
  786. package/dist/plugin-sdk/config/zod-schema.providers.d.ts +2200 -0
  787. package/dist/plugin-sdk/config/zod-schema.sensitive.d.ts +2 -0
  788. package/dist/plugin-sdk/config/zod-schema.session.d.ts +234 -0
  789. package/dist/plugin-sdk/cron/delivery.d.ts +9 -0
  790. package/dist/plugin-sdk/cron/legacy-delivery.d.ts +3 -0
  791. package/dist/plugin-sdk/cron/parse.d.ts +1 -0
  792. package/dist/plugin-sdk/cron/payload-migration.d.ts +3 -0
  793. package/dist/plugin-sdk/cron/schedule.d.ts +2 -0
  794. package/dist/plugin-sdk/cron/service/jobs.d.ts +21 -0
  795. package/dist/plugin-sdk/cron/service/locked.d.ts +2 -0
  796. package/dist/plugin-sdk/cron/service/normalize.d.ts +18 -0
  797. package/dist/plugin-sdk/cron/service/ops.d.ts +81 -0
  798. package/dist/plugin-sdk/cron/service/state.d.ts +125 -0
  799. package/dist/plugin-sdk/cron/service/store.d.ts +9 -0
  800. package/dist/plugin-sdk/cron/service/timer.d.ts +47 -0
  801. package/dist/plugin-sdk/cron/service.d.ts +66 -0
  802. package/dist/plugin-sdk/cron/session-reaper.d.ts +35 -0
  803. package/dist/plugin-sdk/cron/stagger.d.ts +8 -0
  804. package/dist/plugin-sdk/cron/store.d.ts +6 -0
  805. package/dist/plugin-sdk/cron/types.d.ts +131 -0
  806. package/dist/plugin-sdk/cron/webhook-url.d.ts +1 -0
  807. package/dist/plugin-sdk/daemon/constants.d.ts +35 -0
  808. package/dist/plugin-sdk/discord/accounts.d.ts +21 -0
  809. package/dist/plugin-sdk/discord/api.d.ts +11 -0
  810. package/dist/plugin-sdk/discord/audit.d.ts +29 -0
  811. package/dist/plugin-sdk/discord/chunk.d.ts +20 -0
  812. package/dist/plugin-sdk/discord/client.d.ts +21 -0
  813. package/dist/plugin-sdk/discord/components-registry.d.ts +16 -0
  814. package/dist/plugin-sdk/discord/components.d.ts +196 -0
  815. package/dist/plugin-sdk/discord/directory-live.d.ts +4 -0
  816. package/dist/plugin-sdk/discord/draft-chunking.d.ts +6 -0
  817. package/dist/plugin-sdk/discord/draft-stream.d.ts +21 -0
  818. package/dist/plugin-sdk/discord/gateway-logging.d.ts +8 -0
  819. package/dist/plugin-sdk/discord/guilds.d.ts +6 -0
  820. package/dist/plugin-sdk/discord/monitor/agent-components.d.ts +55 -0
  821. package/dist/plugin-sdk/discord/monitor/allow-list.d.ts +176 -0
  822. package/dist/plugin-sdk/discord/monitor/commands.d.ts +2 -0
  823. package/dist/plugin-sdk/discord/monitor/format.d.ts +13 -0
  824. package/dist/plugin-sdk/discord/monitor/gateway-plugin.d.ts +8 -0
  825. package/dist/plugin-sdk/discord/monitor/gateway-registry.d.ts +9 -0
  826. package/dist/plugin-sdk/discord/monitor/listeners.d.ts +44 -0
  827. package/dist/plugin-sdk/discord/monitor/message-handler.d.ts +5 -0
  828. package/dist/plugin-sdk/discord/monitor/message-handler.preflight.d.ts +14 -0
  829. package/dist/plugin-sdk/discord/monitor/message-handler.preflight.types.d.ts +95 -0
  830. package/dist/plugin-sdk/discord/monitor/message-handler.process.d.ts +2 -0
  831. package/dist/plugin-sdk/discord/monitor/message-utils.d.ts +40 -0
  832. package/dist/plugin-sdk/discord/monitor/native-command.d.ts +23 -0
  833. package/dist/plugin-sdk/discord/monitor/presence-cache.d.ts +9 -0
  834. package/dist/plugin-sdk/discord/monitor/presence.d.ts +5 -0
  835. package/dist/plugin-sdk/discord/monitor/provider.allowlist.d.ts +14 -0
  836. package/dist/plugin-sdk/discord/monitor/provider.d.ts +28 -0
  837. package/dist/plugin-sdk/discord/monitor/provider.lifecycle.d.ts +23 -0
  838. package/dist/plugin-sdk/discord/monitor/reply-context.d.ts +17 -0
  839. package/dist/plugin-sdk/discord/monitor/reply-delivery.d.ts +22 -0
  840. package/dist/plugin-sdk/discord/monitor/rest-fetch.d.ts +2 -0
  841. package/dist/plugin-sdk/discord/monitor/sender-identity.d.ts +31 -0
  842. package/dist/plugin-sdk/discord/monitor/system-events.d.ts +2 -0
  843. package/dist/plugin-sdk/discord/monitor/thread-bindings.d.ts +5 -0
  844. package/dist/plugin-sdk/discord/monitor/thread-bindings.discord-api.d.ts +36 -0
  845. package/dist/plugin-sdk/discord/monitor/thread-bindings.lifecycle.d.ts +30 -0
  846. package/dist/plugin-sdk/discord/monitor/thread-bindings.manager.d.ts +17 -0
  847. package/dist/plugin-sdk/discord/monitor/thread-bindings.messages.d.ts +17 -0
  848. package/dist/plugin-sdk/discord/monitor/thread-bindings.state.d.ts +61 -0
  849. package/dist/plugin-sdk/discord/monitor/thread-bindings.types.d.ts +64 -0
  850. package/dist/plugin-sdk/discord/monitor/threading.d.ts +106 -0
  851. package/dist/plugin-sdk/discord/monitor/typing.d.ts +5 -0
  852. package/dist/plugin-sdk/discord/monitor.d.ts +10 -0
  853. package/dist/plugin-sdk/discord/monitor.gateway.d.ts +12 -0
  854. package/dist/plugin-sdk/discord/pluralkit.d.ts +26 -0
  855. package/dist/plugin-sdk/discord/probe.d.ts +28 -0
  856. package/dist/plugin-sdk/discord/resolve-channels.d.ts +15 -0
  857. package/dist/plugin-sdk/discord/resolve-users.d.ts +14 -0
  858. package/dist/plugin-sdk/discord/send.channels.d.ts +17 -0
  859. package/dist/plugin-sdk/discord/send.components.d.ts +17 -0
  860. package/dist/plugin-sdk/discord/send.d.ts +10 -0
  861. package/dist/plugin-sdk/discord/send.emojis-stickers.d.ts +4 -0
  862. package/dist/plugin-sdk/discord/send.guild.d.ts +24 -0
  863. package/dist/plugin-sdk/discord/send.messages.d.ts +20 -0
  864. package/dist/plugin-sdk/discord/send.outbound.d.ts +57 -0
  865. package/dist/plugin-sdk/discord/send.permissions.d.ts +20 -0
  866. package/dist/plugin-sdk/discord/send.reactions.d.ts +15 -0
  867. package/dist/plugin-sdk/discord/send.shared.d.ts +85 -0
  868. package/dist/plugin-sdk/discord/send.types.d.ts +144 -0
  869. package/dist/plugin-sdk/discord/targets.d.ts +18 -0
  870. package/dist/plugin-sdk/discord/token.d.ts +11 -0
  871. package/dist/plugin-sdk/discord/voice/command.d.ts +15 -0
  872. package/dist/plugin-sdk/discord/voice/manager.d.ts +52 -0
  873. package/dist/plugin-sdk/discord/voice-message.d.ts +50 -0
  874. package/dist/plugin-sdk/gateway/call.d.ts +65 -0
  875. package/dist/plugin-sdk/gateway/chat-abort.d.ts +44 -0
  876. package/dist/plugin-sdk/gateway/chat-sanitize.d.ts +4 -0
  877. package/dist/plugin-sdk/gateway/client.d.ts +64 -0
  878. package/dist/plugin-sdk/gateway/control-ui-shared.d.ts +9 -0
  879. package/dist/plugin-sdk/gateway/credentials.d.ts +36 -0
  880. package/dist/plugin-sdk/gateway/device-auth.d.ts +11 -0
  881. package/dist/plugin-sdk/gateway/method-scopes.d.ts +22 -0
  882. package/dist/plugin-sdk/gateway/net.d.ts +77 -0
  883. package/dist/plugin-sdk/gateway/node-registry.d.ts +60 -0
  884. package/dist/plugin-sdk/gateway/protocol/client-info.d.ts +58 -0
  885. package/dist/plugin-sdk/gateway/protocol/index.d.ts +497 -0
  886. package/dist/plugin-sdk/gateway/protocol/schema/agent.d.ts +89 -0
  887. package/dist/plugin-sdk/gateway/protocol/schema/agents-models-skills.d.ts +188 -0
  888. package/dist/plugin-sdk/gateway/protocol/schema/channels.d.ts +134 -0
  889. package/dist/plugin-sdk/gateway/protocol/schema/config.d.ts +53 -0
  890. package/dist/plugin-sdk/gateway/protocol/schema/cron.d.ts +324 -0
  891. package/dist/plugin-sdk/gateway/protocol/schema/devices.d.ts +41 -0
  892. package/dist/plugin-sdk/gateway/protocol/schema/error-codes.d.ts +14 -0
  893. package/dist/plugin-sdk/gateway/protocol/schema/frames.d.ts +168 -0
  894. package/dist/plugin-sdk/gateway/protocol/schema/logs-chat.d.ts +45 -0
  895. package/dist/plugin-sdk/gateway/protocol/schema/nodes.d.ts +64 -0
  896. package/dist/plugin-sdk/gateway/protocol/schema/primitives.d.ts +4 -0
  897. package/dist/plugin-sdk/gateway/protocol/schema/protocol-schemas.d.ts +3 -0
  898. package/dist/plugin-sdk/gateway/protocol/schema/push.d.ts +15 -0
  899. package/dist/plugin-sdk/gateway/protocol/schema/sessions.d.ts +81 -0
  900. package/dist/plugin-sdk/gateway/protocol/schema/snapshot.d.ts +69 -0
  901. package/dist/plugin-sdk/gateway/protocol/schema/types.d.ts +120 -0
  902. package/dist/plugin-sdk/gateway/protocol/schema/wizard.d.ts +86 -0
  903. package/dist/plugin-sdk/gateway/protocol/schema.d.ts +16 -0
  904. package/dist/plugin-sdk/gateway/server/ws-types.d.ts +9 -0
  905. package/dist/plugin-sdk/gateway/server-broadcast.d.ts +17 -0
  906. package/dist/plugin-sdk/gateway/server-channels.d.ts +26 -0
  907. package/dist/plugin-sdk/gateway/server-constants.d.ts +10 -0
  908. package/dist/plugin-sdk/gateway/server-methods/types.d.ts +84 -0
  909. package/dist/plugin-sdk/gateway/server-shared.d.ts +7 -0
  910. package/dist/plugin-sdk/gateway/session-utils.fs.d.ts +48 -0
  911. package/dist/plugin-sdk/gateway/session-utils.types.d.ts +84 -0
  912. package/dist/plugin-sdk/gateway/ws-log.d.ts +5 -0
  913. package/dist/plugin-sdk/gateway/ws-logging.d.ts +4 -0
  914. package/dist/plugin-sdk/globals.d.ts +11 -0
  915. package/dist/plugin-sdk/hooks/internal-hooks.d.ts +140 -0
  916. package/dist/plugin-sdk/hooks/types.d.ts +62 -0
  917. package/dist/plugin-sdk/imessage/accounts.d.ts +16 -0
  918. package/dist/plugin-sdk/imessage/client.d.ts +46 -0
  919. package/dist/plugin-sdk/imessage/constants.d.ts +2 -0
  920. package/dist/plugin-sdk/imessage/monitor/abort-handler.d.ts +9 -0
  921. package/dist/plugin-sdk/imessage/monitor/deliver.d.ts +14 -0
  922. package/dist/plugin-sdk/imessage/monitor/echo-cache.d.ts +9 -0
  923. package/dist/plugin-sdk/imessage/monitor/inbound-processing.d.ts +96 -0
  924. package/dist/plugin-sdk/imessage/monitor/monitor-provider.d.ts +7 -0
  925. package/dist/plugin-sdk/imessage/monitor/parse-notification.d.ts +2 -0
  926. package/dist/plugin-sdk/imessage/monitor/runtime.d.ts +4 -0
  927. package/dist/plugin-sdk/imessage/monitor/types.d.ts +37 -0
  928. package/dist/plugin-sdk/imessage/monitor.d.ts +2 -0
  929. package/dist/plugin-sdk/imessage/probe.d.ts +17 -0
  930. package/dist/plugin-sdk/imessage/send.d.ts +34 -0
  931. package/dist/plugin-sdk/imessage/target-parsing-helpers.d.ts +45 -0
  932. package/dist/plugin-sdk/imessage/targets.d.ts +39 -0
  933. package/dist/plugin-sdk/index.d.ts +1 -0
  934. package/dist/plugin-sdk/index.js +24645 -0
  935. package/dist/plugin-sdk/infra/agent-events.d.ts +21 -0
  936. package/dist/plugin-sdk/infra/archive-path.d.ts +12 -0
  937. package/dist/plugin-sdk/infra/archive.d.ts +46 -0
  938. package/dist/plugin-sdk/infra/backoff.d.ts +8 -0
  939. package/dist/plugin-sdk/infra/brew.d.ts +8 -0
  940. package/dist/plugin-sdk/infra/channel-activity.d.ts +18 -0
  941. package/dist/plugin-sdk/infra/channel-summary.d.ts +6 -0
  942. package/dist/plugin-sdk/infra/dedupe.d.ts +12 -0
  943. package/dist/plugin-sdk/infra/device-auth-store.d.ts +18 -0
  944. package/dist/plugin-sdk/infra/device-identity.d.ts +11 -0
  945. package/dist/plugin-sdk/infra/device-pairing.d.ts +101 -0
  946. package/dist/plugin-sdk/infra/diagnostic-events.d.ts +140 -0
  947. package/dist/plugin-sdk/infra/diagnostic-flags.d.ts +4 -0
  948. package/dist/plugin-sdk/infra/dotenv.d.ts +3 -0
  949. package/dist/plugin-sdk/infra/env.d.ts +11 -0
  950. package/dist/plugin-sdk/infra/errors.d.ts +11 -0
  951. package/dist/plugin-sdk/infra/fetch.d.ts +2 -0
  952. package/dist/plugin-sdk/infra/file-identity.d.ts +5 -0
  953. package/dist/plugin-sdk/infra/file-lock.d.ts +2 -0
  954. package/dist/plugin-sdk/infra/format-time/format-datetime.d.ts +35 -0
  955. package/dist/plugin-sdk/infra/format-time/format-duration.d.ts +23 -0
  956. package/dist/plugin-sdk/infra/format-time/format-relative.d.ts +39 -0
  957. package/dist/plugin-sdk/infra/fs-safe.d.ts +25 -0
  958. package/dist/plugin-sdk/infra/gemini-auth.d.ts +16 -0
  959. package/dist/plugin-sdk/infra/git-commit.d.ts +4 -0
  960. package/dist/plugin-sdk/infra/git-root.d.ts +7 -0
  961. package/dist/plugin-sdk/infra/heartbeat-active-hours.d.ts +5 -0
  962. package/dist/plugin-sdk/infra/heartbeat-events-filter.d.ts +8 -0
  963. package/dist/plugin-sdk/infra/heartbeat-events.d.ts +21 -0
  964. package/dist/plugin-sdk/infra/heartbeat-reason.d.ts +5 -0
  965. package/dist/plugin-sdk/infra/heartbeat-runner.d.ts +45 -0
  966. package/dist/plugin-sdk/infra/heartbeat-visibility.d.ts +17 -0
  967. package/dist/plugin-sdk/infra/heartbeat-wake.d.ts +31 -0
  968. package/dist/plugin-sdk/infra/home-dir.d.ts +7 -0
  969. package/dist/plugin-sdk/infra/host-env-security.d.ts +21 -0
  970. package/dist/plugin-sdk/infra/http-body.d.ts +46 -0
  971. package/dist/plugin-sdk/infra/json-file.d.ts +2 -0
  972. package/dist/plugin-sdk/infra/json-files.d.ts +5 -0
  973. package/dist/plugin-sdk/infra/map-size.d.ts +1 -0
  974. package/dist/plugin-sdk/infra/net/fetch-guard.d.ts +21 -0
  975. package/dist/plugin-sdk/infra/net/hostname.d.ts +1 -0
  976. package/dist/plugin-sdk/infra/net/ssrf.d.ts +35 -0
  977. package/dist/plugin-sdk/infra/outbound/abort.d.ts +8 -0
  978. package/dist/plugin-sdk/infra/outbound/agent-delivery.d.ts +46 -0
  979. package/dist/plugin-sdk/infra/outbound/bound-delivery-router.d.ts +16 -0
  980. package/dist/plugin-sdk/infra/outbound/channel-selection.d.ts +11 -0
  981. package/dist/plugin-sdk/infra/outbound/channel-target.d.ts +6 -0
  982. package/dist/plugin-sdk/infra/outbound/deliver.d.ts +81 -0
  983. package/dist/plugin-sdk/infra/outbound/delivery-queue.d.ts +78 -0
  984. package/dist/plugin-sdk/infra/outbound/directory-cache.d.ts +24 -0
  985. package/dist/plugin-sdk/infra/outbound/envelope.d.ts +16 -0
  986. package/dist/plugin-sdk/infra/outbound/format.d.ts +39 -0
  987. package/dist/plugin-sdk/infra/outbound/identity.d.ts +8 -0
  988. package/dist/plugin-sdk/infra/outbound/message-action-spec.d.ts +5 -0
  989. package/dist/plugin-sdk/infra/outbound/payloads.d.ts +18 -0
  990. package/dist/plugin-sdk/infra/outbound/session-binding-service.d.ts +57 -0
  991. package/dist/plugin-sdk/infra/outbound/target-errors.d.ts +6 -0
  992. package/dist/plugin-sdk/infra/outbound/target-normalization.d.ts +4 -0
  993. package/dist/plugin-sdk/infra/outbound/target-resolver.d.ts +53 -0
  994. package/dist/plugin-sdk/infra/outbound/targets.d.ts +87 -0
  995. package/dist/plugin-sdk/infra/pairing-files.d.ts +23 -0
  996. package/dist/plugin-sdk/infra/pairing-pending.d.ts +13 -0
  997. package/dist/plugin-sdk/infra/pairing-token.d.ts +3 -0
  998. package/dist/plugin-sdk/infra/path-guards.d.ts +5 -0
  999. package/dist/plugin-sdk/infra/path-safety.d.ts +2 -0
  1000. package/dist/plugin-sdk/infra/plain-object.d.ts +4 -0
  1001. package/dist/plugin-sdk/infra/prototype-keys.d.ts +1 -0
  1002. package/dist/plugin-sdk/infra/provider-usage.auth.d.ts +11 -0
  1003. package/dist/plugin-sdk/infra/provider-usage.d.ts +4 -0
  1004. package/dist/plugin-sdk/infra/provider-usage.fetch.claude.d.ts +2 -0
  1005. package/dist/plugin-sdk/infra/provider-usage.fetch.codex.d.ts +2 -0
  1006. package/dist/plugin-sdk/infra/provider-usage.fetch.copilot.d.ts +2 -0
  1007. package/dist/plugin-sdk/infra/provider-usage.fetch.d.ts +6 -0
  1008. package/dist/plugin-sdk/infra/provider-usage.fetch.gemini.d.ts +2 -0
  1009. package/dist/plugin-sdk/infra/provider-usage.fetch.minimax.d.ts +2 -0
  1010. package/dist/plugin-sdk/infra/provider-usage.fetch.shared.d.ts +12 -0
  1011. package/dist/plugin-sdk/infra/provider-usage.fetch.zai.d.ts +2 -0
  1012. package/dist/plugin-sdk/infra/provider-usage.format.d.ts +13 -0
  1013. package/dist/plugin-sdk/infra/provider-usage.load.d.ts +12 -0
  1014. package/dist/plugin-sdk/infra/provider-usage.shared.d.ts +8 -0
  1015. package/dist/plugin-sdk/infra/provider-usage.types.d.ts +17 -0
  1016. package/dist/plugin-sdk/infra/restart.d.ts +70 -0
  1017. package/dist/plugin-sdk/infra/retry-policy.d.ts +25 -0
  1018. package/dist/plugin-sdk/infra/retry.d.ts +21 -0
  1019. package/dist/plugin-sdk/infra/safe-executable-value.d.ts +1 -0
  1020. package/dist/plugin-sdk/infra/scp-host.d.ts +2 -0
  1021. package/dist/plugin-sdk/infra/secure-random.d.ts +2 -0
  1022. package/dist/plugin-sdk/infra/session-cost-usage.d.ts +45 -0
  1023. package/dist/plugin-sdk/infra/session-cost-usage.types.d.ts +153 -0
  1024. package/dist/plugin-sdk/infra/session-maintenance-warning.d.ts +10 -0
  1025. package/dist/plugin-sdk/infra/shell-env.d.ts +34 -0
  1026. package/dist/plugin-sdk/infra/system-events.d.ts +18 -0
  1027. package/dist/plugin-sdk/infra/tailnet.d.ts +8 -0
  1028. package/dist/plugin-sdk/infra/tls/fingerprint.d.ts +1 -0
  1029. package/dist/plugin-sdk/infra/tls/gateway.d.ts +16 -0
  1030. package/dist/plugin-sdk/infra/tmp-remoteclaw-dir.d.ts +18 -0
  1031. package/dist/plugin-sdk/infra/transport-ready.d.ts +16 -0
  1032. package/dist/plugin-sdk/infra/unhandled-rejections.d.ts +15 -0
  1033. package/dist/plugin-sdk/infra/ws.d.ts +2 -0
  1034. package/dist/plugin-sdk/infra/wsl.d.ts +11 -0
  1035. package/dist/plugin-sdk/line/accounts.d.ts +10 -0
  1036. package/dist/plugin-sdk/line/actions.d.ts +22 -0
  1037. package/dist/plugin-sdk/line/auto-reply-delivery.d.ts +38 -0
  1038. package/dist/plugin-sdk/line/bot-access.d.ts +17 -0
  1039. package/dist/plugin-sdk/line/bot-handlers.d.ts +13 -0
  1040. package/dist/plugin-sdk/line/bot-message-context.d.ts +118 -0
  1041. package/dist/plugin-sdk/line/bot.d.ts +24 -0
  1042. package/dist/plugin-sdk/line/channel-access-token.d.ts +4 -0
  1043. package/dist/plugin-sdk/line/config-schema.d.ts +64 -0
  1044. package/dist/plugin-sdk/line/download.d.ts +7 -0
  1045. package/dist/plugin-sdk/line/flex-templates/basic-cards.d.ts +46 -0
  1046. package/dist/plugin-sdk/line/flex-templates/common.d.ts +2 -0
  1047. package/dist/plugin-sdk/line/flex-templates/media-control-cards.d.ts +73 -0
  1048. package/dist/plugin-sdk/line/flex-templates/message.d.ts +6 -0
  1049. package/dist/plugin-sdk/line/flex-templates/schedule-cards.d.ts +55 -0
  1050. package/dist/plugin-sdk/line/flex-templates/types.d.ts +19 -0
  1051. package/dist/plugin-sdk/line/flex-templates.d.ts +5 -0
  1052. package/dist/plugin-sdk/line/markdown-to-line.d.ts +72 -0
  1053. package/dist/plugin-sdk/line/monitor.d.ts +28 -0
  1054. package/dist/plugin-sdk/line/probe.d.ts +2 -0
  1055. package/dist/plugin-sdk/line/reply-chunks.d.ts +24 -0
  1056. package/dist/plugin-sdk/line/send.d.ts +91 -0
  1057. package/dist/plugin-sdk/line/signature.d.ts +1 -0
  1058. package/dist/plugin-sdk/line/template-messages.d.ts +100 -0
  1059. package/dist/plugin-sdk/line/types.d.ts +113 -0
  1060. package/dist/plugin-sdk/line/webhook-node.d.ts +15 -0
  1061. package/dist/plugin-sdk/line/webhook-utils.d.ts +3 -0
  1062. package/dist/plugin-sdk/line/webhook.d.ts +19 -0
  1063. package/dist/plugin-sdk/link-understanding/apply.d.ts +10 -0
  1064. package/dist/plugin-sdk/link-understanding/defaults.d.ts +2 -0
  1065. package/dist/plugin-sdk/link-understanding/detect.d.ts +3 -0
  1066. package/dist/plugin-sdk/link-understanding/format.d.ts +4 -0
  1067. package/dist/plugin-sdk/link-understanding/runner.d.ts +11 -0
  1068. package/dist/plugin-sdk/logger.d.ts +6 -0
  1069. package/dist/plugin-sdk/logging/config.d.ts +4 -0
  1070. package/dist/plugin-sdk/logging/console.d.ts +23 -0
  1071. package/dist/plugin-sdk/logging/diagnostic-session-state.d.ts +30 -0
  1072. package/dist/plugin-sdk/logging/diagnostic.d.ts +65 -0
  1073. package/dist/plugin-sdk/logging/env-log-level.d.ts +2 -0
  1074. package/dist/plugin-sdk/logging/levels.d.ts +5 -0
  1075. package/dist/plugin-sdk/logging/logger.d.ts +44 -0
  1076. package/dist/plugin-sdk/logging/node-require.d.ts +1 -0
  1077. package/dist/plugin-sdk/logging/redact-identifier.d.ts +4 -0
  1078. package/dist/plugin-sdk/logging/redact.d.ts +9 -0
  1079. package/dist/plugin-sdk/logging/state.d.ts +19 -0
  1080. package/dist/plugin-sdk/logging/subsystem.d.ts +18 -0
  1081. package/dist/plugin-sdk/logging/timestamps.d.ts +1 -0
  1082. package/dist/plugin-sdk/logging.d.ts +10 -0
  1083. package/dist/plugin-sdk/markdown/fences.d.ts +10 -0
  1084. package/dist/plugin-sdk/markdown/ir.d.ts +32 -0
  1085. package/dist/plugin-sdk/markdown/render.d.ts +18 -0
  1086. package/dist/plugin-sdk/markdown/tables.d.ts +2 -0
  1087. package/dist/plugin-sdk/markdown/whatsapp.d.ts +14 -0
  1088. package/dist/plugin-sdk/media/audio-tags.d.ts +10 -0
  1089. package/dist/plugin-sdk/media/audio.d.ts +19 -0
  1090. package/dist/plugin-sdk/media/base64.d.ts +6 -0
  1091. package/dist/plugin-sdk/media/constants.d.ts +7 -0
  1092. package/dist/plugin-sdk/media/fetch.d.ts +23 -0
  1093. package/dist/plugin-sdk/media/image-ops.d.ts +41 -0
  1094. package/dist/plugin-sdk/media/inbound-path-policy.d.ts +18 -0
  1095. package/dist/plugin-sdk/media/input-files.d.ts +95 -0
  1096. package/dist/plugin-sdk/media/local-roots.d.ts +3 -0
  1097. package/dist/plugin-sdk/media/mime.d.ts +16 -0
  1098. package/dist/plugin-sdk/media/outbound-attachment.d.ts +6 -0
  1099. package/dist/plugin-sdk/media/parse.d.ts +8 -0
  1100. package/dist/plugin-sdk/media/png-encode.d.ts +8 -0
  1101. package/dist/plugin-sdk/media/read-response-with-limit.d.ts +7 -0
  1102. package/dist/plugin-sdk/media/store.d.ts +33 -0
  1103. package/dist/plugin-sdk/media-understanding/apply.d.ts +19 -0
  1104. package/dist/plugin-sdk/media-understanding/attachments.d.ts +49 -0
  1105. package/dist/plugin-sdk/media-understanding/audio-preflight.d.ts +16 -0
  1106. package/dist/plugin-sdk/media-understanding/concurrency.d.ts +1 -0
  1107. package/dist/plugin-sdk/media-understanding/defaults.d.ts +12 -0
  1108. package/dist/plugin-sdk/media-understanding/errors.d.ts +6 -0
  1109. package/dist/plugin-sdk/media-understanding/format.d.ts +7 -0
  1110. package/dist/plugin-sdk/media-understanding/fs.d.ts +1 -0
  1111. package/dist/plugin-sdk/media-understanding/output-extract.d.ts +2 -0
  1112. package/dist/plugin-sdk/media-understanding/providers/anthropic/index.d.ts +2 -0
  1113. package/dist/plugin-sdk/media-understanding/providers/deepgram/audio.d.ts +4 -0
  1114. package/dist/plugin-sdk/media-understanding/providers/deepgram/index.d.ts +2 -0
  1115. package/dist/plugin-sdk/media-understanding/providers/google/audio.d.ts +3 -0
  1116. package/dist/plugin-sdk/media-understanding/providers/google/index.d.ts +2 -0
  1117. package/dist/plugin-sdk/media-understanding/providers/google/inline-data.d.ts +20 -0
  1118. package/dist/plugin-sdk/media-understanding/providers/google/video.d.ts +3 -0
  1119. package/dist/plugin-sdk/media-understanding/providers/groq/index.d.ts +2 -0
  1120. package/dist/plugin-sdk/media-understanding/providers/index.d.ts +4 -0
  1121. package/dist/plugin-sdk/media-understanding/providers/minimax/index.d.ts +2 -0
  1122. package/dist/plugin-sdk/media-understanding/providers/mistral/index.d.ts +2 -0
  1123. package/dist/plugin-sdk/media-understanding/providers/moonshot/index.d.ts +2 -0
  1124. package/dist/plugin-sdk/media-understanding/providers/moonshot/video.d.ts +3 -0
  1125. package/dist/plugin-sdk/media-understanding/providers/openai/audio.d.ts +3 -0
  1126. package/dist/plugin-sdk/media-understanding/providers/openai/index.d.ts +2 -0
  1127. package/dist/plugin-sdk/media-understanding/providers/shared.d.ts +20 -0
  1128. package/dist/plugin-sdk/media-understanding/providers/zai/index.d.ts +2 -0
  1129. package/dist/plugin-sdk/media-understanding/resolve.d.ts +44 -0
  1130. package/dist/plugin-sdk/media-understanding/runner.d.ts +34 -0
  1131. package/dist/plugin-sdk/media-understanding/runner.entries.d.ts +33 -0
  1132. package/dist/plugin-sdk/media-understanding/scope.d.ts +9 -0
  1133. package/dist/plugin-sdk/media-understanding/types.d.ts +74 -0
  1134. package/dist/plugin-sdk/media-understanding/video.d.ts +2 -0
  1135. package/dist/plugin-sdk/middleware/channel-bridge.d.ts +39 -0
  1136. package/dist/plugin-sdk/middleware/cli-runtime-base.d.ts +35 -0
  1137. package/dist/plugin-sdk/middleware/delivery-adapter.d.ts +36 -0
  1138. package/dist/plugin-sdk/middleware/error-classifier.d.ts +14 -0
  1139. package/dist/plugin-sdk/middleware/mcp-side-effects.d.ts +20 -0
  1140. package/dist/plugin-sdk/middleware/runtime-factory.d.ts +4 -0
  1141. package/dist/plugin-sdk/middleware/runtimes/claude.d.ts +27 -0
  1142. package/dist/plugin-sdk/middleware/runtimes/codex.d.ts +74 -0
  1143. package/dist/plugin-sdk/middleware/runtimes/gemini.d.ts +52 -0
  1144. package/dist/plugin-sdk/middleware/runtimes/opencode.d.ts +54 -0
  1145. package/dist/plugin-sdk/middleware/session-map.d.ts +36 -0
  1146. package/dist/plugin-sdk/middleware/system-prompt.d.ts +30 -0
  1147. package/dist/plugin-sdk/middleware/types.d.ts +188 -0
  1148. package/dist/plugin-sdk/pairing/pairing-labels.d.ts +2 -0
  1149. package/dist/plugin-sdk/pairing/pairing-messages.d.ts +6 -0
  1150. package/dist/plugin-sdk/pairing/pairing-store.d.ts +48 -0
  1151. package/dist/plugin-sdk/plugin-sdk/account-id.d.ts +1 -0
  1152. package/dist/plugin-sdk/plugin-sdk/agent-media-payload.d.ts +12 -0
  1153. package/dist/plugin-sdk/plugin-sdk/allow-from.d.ts +32 -0
  1154. package/dist/plugin-sdk/plugin-sdk/command-auth.d.ts +25 -0
  1155. package/dist/plugin-sdk/plugin-sdk/config-paths.d.ts +6 -0
  1156. package/dist/plugin-sdk/plugin-sdk/file-lock.d.ts +16 -0
  1157. package/dist/plugin-sdk/plugin-sdk/group-access.d.ts +16 -0
  1158. package/dist/plugin-sdk/plugin-sdk/index.d.ts +162 -0
  1159. package/dist/plugin-sdk/plugin-sdk/json-store.d.ts +5 -0
  1160. package/dist/plugin-sdk/plugin-sdk/onboarding.d.ts +11 -0
  1161. package/dist/plugin-sdk/plugin-sdk/persistent-dedupe.d.ts +20 -0
  1162. package/dist/plugin-sdk/plugin-sdk/reply-payload.d.ts +22 -0
  1163. package/dist/plugin-sdk/plugin-sdk/run-command.d.ts +12 -0
  1164. package/dist/plugin-sdk/plugin-sdk/runtime.d.ts +10 -0
  1165. package/dist/plugin-sdk/plugin-sdk/slack-message-actions.d.ts +11 -0
  1166. package/dist/plugin-sdk/plugin-sdk/status-helpers.d.ts +88 -0
  1167. package/dist/plugin-sdk/plugin-sdk/temp-path.d.ts +12 -0
  1168. package/dist/plugin-sdk/plugin-sdk/text-chunking.d.ts +1 -0
  1169. package/dist/plugin-sdk/plugin-sdk/tool-send.d.ts +4 -0
  1170. package/dist/plugin-sdk/plugin-sdk/webhook-path.d.ts +6 -0
  1171. package/dist/plugin-sdk/plugin-sdk/webhook-targets.d.ts +23 -0
  1172. package/dist/plugin-sdk/plugins/bundled-dir.d.ts +1 -0
  1173. package/dist/plugin-sdk/plugins/commands.d.ts +83 -0
  1174. package/dist/plugin-sdk/plugins/config-schema.d.ts +2 -0
  1175. package/dist/plugin-sdk/plugins/config-state.d.ts +30 -0
  1176. package/dist/plugin-sdk/plugins/discovery.d.ts +24 -0
  1177. package/dist/plugin-sdk/plugins/hook-runner-global.d.ts +37 -0
  1178. package/dist/plugin-sdk/plugins/hooks.d.ts +49 -0
  1179. package/dist/plugin-sdk/plugins/http-path.d.ts +1 -0
  1180. package/dist/plugin-sdk/plugins/http-registry.d.ts +13 -0
  1181. package/dist/plugin-sdk/plugins/manifest-registry.d.ts +34 -0
  1182. package/dist/plugin-sdk/plugins/manifest.d.ts +66 -0
  1183. package/dist/plugin-sdk/plugins/path-safety.d.ts +5 -0
  1184. package/dist/plugin-sdk/plugins/registry.d.ts +130 -0
  1185. package/dist/plugin-sdk/plugins/runtime/native-deps.d.ts +8 -0
  1186. package/dist/plugin-sdk/plugins/runtime/types.d.ts +310 -0
  1187. package/dist/plugin-sdk/plugins/runtime.d.ts +5 -0
  1188. package/dist/plugin-sdk/plugins/schema-validator.d.ts +10 -0
  1189. package/dist/plugin-sdk/plugins/types.d.ts +487 -0
  1190. package/dist/plugin-sdk/polls.d.ts +31 -0
  1191. package/dist/plugin-sdk/process/command-queue.d.ts +51 -0
  1192. package/dist/plugin-sdk/process/exec.d.ts +30 -0
  1193. package/dist/plugin-sdk/process/lanes.d.ts +6 -0
  1194. package/dist/plugin-sdk/process/spawn-utils.d.ts +26 -0
  1195. package/dist/plugin-sdk/routing/account-id.d.ts +3 -0
  1196. package/dist/plugin-sdk/routing/account-lookup.d.ts +1 -0
  1197. package/dist/plugin-sdk/routing/bindings.d.ts +11 -0
  1198. package/dist/plugin-sdk/routing/resolve-route.d.ts +42 -0
  1199. package/dist/plugin-sdk/routing/session-key.d.ts +48 -0
  1200. package/dist/plugin-sdk/runtime.d.ts +7 -0
  1201. package/dist/plugin-sdk/security/channel-metadata.d.ts +6 -0
  1202. package/dist/plugin-sdk/security/dm-policy-shared.d.ts +33 -0
  1203. package/dist/plugin-sdk/security/external-content.d.ts +53 -0
  1204. package/dist/plugin-sdk/security/safe-regex.d.ts +2 -0
  1205. package/dist/plugin-sdk/security/scan-paths.d.ts +5 -0
  1206. package/dist/plugin-sdk/security/secret-equal.d.ts +1 -0
  1207. package/dist/plugin-sdk/sessions/input-provenance.d.ts +16 -0
  1208. package/dist/plugin-sdk/sessions/level-overrides.d.ts +10 -0
  1209. package/dist/plugin-sdk/sessions/model-overrides.d.ts +14 -0
  1210. package/dist/plugin-sdk/sessions/send-policy.d.ts +11 -0
  1211. package/dist/plugin-sdk/sessions/session-key-utils.d.ts +16 -0
  1212. package/dist/plugin-sdk/sessions/session-label.d.ts +9 -0
  1213. package/dist/plugin-sdk/sessions/transcript-events.d.ts +7 -0
  1214. package/dist/plugin-sdk/shared/avatar-policy.d.ts +16 -0
  1215. package/dist/plugin-sdk/shared/chat-content.d.ts +5 -0
  1216. package/dist/plugin-sdk/shared/chat-envelope.d.ts +2 -0
  1217. package/dist/plugin-sdk/shared/device-auth.d.ts +13 -0
  1218. package/dist/plugin-sdk/shared/gateway-bind-url.d.ts +14 -0
  1219. package/dist/plugin-sdk/shared/net/ip.d.ts +19 -0
  1220. package/dist/plugin-sdk/shared/operator-scope-compat.d.ts +5 -0
  1221. package/dist/plugin-sdk/shared/pid-alive.d.ts +1 -0
  1222. package/dist/plugin-sdk/shared/process-scoped-map.d.ts +1 -0
  1223. package/dist/plugin-sdk/shared/string-normalization.d.ts +4 -0
  1224. package/dist/plugin-sdk/shared/subagents-format.d.ts +15 -0
  1225. package/dist/plugin-sdk/shared/tailscale-status.d.ts +8 -0
  1226. package/dist/plugin-sdk/shared/text/code-regions.d.ts +6 -0
  1227. package/dist/plugin-sdk/shared/text/reasoning-tags.d.ts +6 -0
  1228. package/dist/plugin-sdk/shared/text-chunking.d.ts +1 -0
  1229. package/dist/plugin-sdk/signal/accounts.d.ts +17 -0
  1230. package/dist/plugin-sdk/signal/client.d.ts +32 -0
  1231. package/dist/plugin-sdk/signal/daemon.d.ts +26 -0
  1232. package/dist/plugin-sdk/signal/format.d.ts +17 -0
  1233. package/dist/plugin-sdk/signal/identity.d.ts +24 -0
  1234. package/dist/plugin-sdk/signal/index.d.ts +5 -0
  1235. package/dist/plugin-sdk/signal/monitor/event-handler.d.ts +5 -0
  1236. package/dist/plugin-sdk/signal/monitor/event-handler.types.d.ts +125 -0
  1237. package/dist/plugin-sdk/signal/monitor/mentions.d.ts +2 -0
  1238. package/dist/plugin-sdk/signal/monitor.d.ts +25 -0
  1239. package/dist/plugin-sdk/signal/probe.d.ts +7 -0
  1240. package/dist/plugin-sdk/signal/reaction-level.d.ts +17 -0
  1241. package/dist/plugin-sdk/signal/rpc-context.d.ts +9 -0
  1242. package/dist/plugin-sdk/signal/send-reactions.d.ts +32 -0
  1243. package/dist/plugin-sdk/signal/send.d.ts +25 -0
  1244. package/dist/plugin-sdk/signal/sse-reconnect.d.ts +13 -0
  1245. package/dist/plugin-sdk/slack/accounts.d.ts +32 -0
  1246. package/dist/plugin-sdk/slack/actions.d.ts +56 -0
  1247. package/dist/plugin-sdk/slack/blocks-fallback.d.ts +2 -0
  1248. package/dist/plugin-sdk/slack/blocks-input.d.ts +3 -0
  1249. package/dist/plugin-sdk/slack/channel-migration.d.ts +20 -0
  1250. package/dist/plugin-sdk/slack/client.d.ts +4 -0
  1251. package/dist/plugin-sdk/slack/directory-live.d.ts +4 -0
  1252. package/dist/plugin-sdk/slack/draft-stream.d.ts +25 -0
  1253. package/dist/plugin-sdk/slack/format.d.ts +7 -0
  1254. package/dist/plugin-sdk/slack/http/index.d.ts +1 -0
  1255. package/dist/plugin-sdk/slack/http/registry.d.ts +12 -0
  1256. package/dist/plugin-sdk/slack/index.d.ts +6 -0
  1257. package/dist/plugin-sdk/slack/message-actions.d.ts +4 -0
  1258. package/dist/plugin-sdk/slack/modal-metadata.d.ts +7 -0
  1259. package/dist/plugin-sdk/slack/monitor/allow-list.d.ts +23 -0
  1260. package/dist/plugin-sdk/slack/monitor/auth.d.ts +11 -0
  1261. package/dist/plugin-sdk/slack/monitor/channel-config.d.ts +43 -0
  1262. package/dist/plugin-sdk/slack/monitor/commands.d.ts +9 -0
  1263. package/dist/plugin-sdk/slack/monitor/context.d.ts +104 -0
  1264. package/dist/plugin-sdk/slack/monitor/events/channels.d.ts +4 -0
  1265. package/dist/plugin-sdk/slack/monitor/events/interactions.d.ts +4 -0
  1266. package/dist/plugin-sdk/slack/monitor/events/members.d.ts +4 -0
  1267. package/dist/plugin-sdk/slack/monitor/events/messages.d.ts +6 -0
  1268. package/dist/plugin-sdk/slack/monitor/events/pins.d.ts +4 -0
  1269. package/dist/plugin-sdk/slack/monitor/events/reactions.d.ts +4 -0
  1270. package/dist/plugin-sdk/slack/monitor/events.d.ts +8 -0
  1271. package/dist/plugin-sdk/slack/monitor/external-arg-menu-store.d.ts +18 -0
  1272. package/dist/plugin-sdk/slack/monitor/media.d.ts +66 -0
  1273. package/dist/plugin-sdk/slack/monitor/message-handler/dispatch.d.ts +12 -0
  1274. package/dist/plugin-sdk/slack/monitor/message-handler/prepare.d.ts +13 -0
  1275. package/dist/plugin-sdk/slack/monitor/message-handler/types.d.ts +22 -0
  1276. package/dist/plugin-sdk/slack/monitor/message-handler.d.ts +11 -0
  1277. package/dist/plugin-sdk/slack/monitor/mrkdwn.d.ts +1 -0
  1278. package/dist/plugin-sdk/slack/monitor/policy.d.ts +5 -0
  1279. package/dist/plugin-sdk/slack/monitor/provider.d.ts +7 -0
  1280. package/dist/plugin-sdk/slack/monitor/replies.d.ts +53 -0
  1281. package/dist/plugin-sdk/slack/monitor/room-context.d.ts +14 -0
  1282. package/dist/plugin-sdk/slack/monitor/slash.d.ts +6 -0
  1283. package/dist/plugin-sdk/slack/monitor/thread-resolution.d.ts +12 -0
  1284. package/dist/plugin-sdk/slack/monitor/types.d.ts +97 -0
  1285. package/dist/plugin-sdk/slack/monitor.d.ts +5 -0
  1286. package/dist/plugin-sdk/slack/probe.d.ts +14 -0
  1287. package/dist/plugin-sdk/slack/resolve-channels.d.ts +19 -0
  1288. package/dist/plugin-sdk/slack/resolve-users.d.ts +26 -0
  1289. package/dist/plugin-sdk/slack/send.d.ts +22 -0
  1290. package/dist/plugin-sdk/slack/stream-mode.d.ts +23 -0
  1291. package/dist/plugin-sdk/slack/streaming.d.ts +72 -0
  1292. package/dist/plugin-sdk/slack/targets.d.ts +7 -0
  1293. package/dist/plugin-sdk/slack/threading-tool-context.d.ts +10 -0
  1294. package/dist/plugin-sdk/slack/threading.d.ts +29 -0
  1295. package/dist/plugin-sdk/slack/token.d.ts +3 -0
  1296. package/dist/plugin-sdk/slack/types.d.ts +58 -0
  1297. package/dist/plugin-sdk/telegram/accounts.d.ts +21 -0
  1298. package/dist/plugin-sdk/telegram/allowed-updates.d.ts +4 -0
  1299. package/dist/plugin-sdk/telegram/api-logging.d.ts +11 -0
  1300. package/dist/plugin-sdk/telegram/audit.d.ts +29 -0
  1301. package/dist/plugin-sdk/telegram/bot/delivery.d.ts +35 -0
  1302. package/dist/plugin-sdk/telegram/bot/helpers.d.ts +128 -0
  1303. package/dist/plugin-sdk/telegram/bot/types.d.ts +28 -0
  1304. package/dist/plugin-sdk/telegram/bot-access.d.ts +26 -0
  1305. package/dist/plugin-sdk/telegram/bot-handlers.d.ts +2 -0
  1306. package/dist/plugin-sdk/telegram/bot-message-context.d.ts +145 -0
  1307. package/dist/plugin-sdk/telegram/bot-message-dispatch.d.ts +19 -0
  1308. package/dist/plugin-sdk/telegram/bot-message.d.ts +20 -0
  1309. package/dist/plugin-sdk/telegram/bot-native-command-menu.d.ts +33 -0
  1310. package/dist/plugin-sdk/telegram/bot-native-commands.d.ts +59 -0
  1311. package/dist/plugin-sdk/telegram/bot-updates.d.ts +31 -0
  1312. package/dist/plugin-sdk/telegram/bot.d.ts +62 -0
  1313. package/dist/plugin-sdk/telegram/button-types.d.ts +7 -0
  1314. package/dist/plugin-sdk/telegram/caption.d.ts +5 -0
  1315. package/dist/plugin-sdk/telegram/dm-access.d.ts +18 -0
  1316. package/dist/plugin-sdk/telegram/draft-stream.d.ts +37 -0
  1317. package/dist/plugin-sdk/telegram/fetch.d.ts +5 -0
  1318. package/dist/plugin-sdk/telegram/format.d.ts +18 -0
  1319. package/dist/plugin-sdk/telegram/group-access.d.ts +54 -0
  1320. package/dist/plugin-sdk/telegram/group-config-helpers.d.ts +8 -0
  1321. package/dist/plugin-sdk/telegram/group-migration.d.ts +20 -0
  1322. package/dist/plugin-sdk/telegram/inline-buttons.d.ts +11 -0
  1323. package/dist/plugin-sdk/telegram/lane-delivery.d.ts +56 -0
  1324. package/dist/plugin-sdk/telegram/monitor.d.ts +19 -0
  1325. package/dist/plugin-sdk/telegram/network-config.d.ts +33 -0
  1326. package/dist/plugin-sdk/telegram/network-errors.d.ts +5 -0
  1327. package/dist/plugin-sdk/telegram/outbound-params.d.ts +2 -0
  1328. package/dist/plugin-sdk/telegram/probe.d.ts +17 -0
  1329. package/dist/plugin-sdk/telegram/proxy.d.ts +1 -0
  1330. package/dist/plugin-sdk/telegram/reaction-level.d.ts +11 -0
  1331. package/dist/plugin-sdk/telegram/reasoning-lane-coordinator.d.ts +18 -0
  1332. package/dist/plugin-sdk/telegram/send.d.ts +153 -0
  1333. package/dist/plugin-sdk/telegram/sent-message-cache.d.ts +16 -0
  1334. package/dist/plugin-sdk/telegram/status-reaction-variants.d.ts +21 -0
  1335. package/dist/plugin-sdk/telegram/sticker-cache.d.ts +47 -0
  1336. package/dist/plugin-sdk/telegram/target-writeback.d.ts +7 -0
  1337. package/dist/plugin-sdk/telegram/targets.d.ts +11 -0
  1338. package/dist/plugin-sdk/telegram/token.d.ts +13 -0
  1339. package/dist/plugin-sdk/telegram/update-offset-store.d.ts +15 -0
  1340. package/dist/plugin-sdk/telegram/voice.d.ts +16 -0
  1341. package/dist/plugin-sdk/telegram/webhook.d.ts +20 -0
  1342. package/dist/plugin-sdk/terminal/ansi.d.ts +2 -0
  1343. package/dist/plugin-sdk/terminal/health-style.d.ts +1 -0
  1344. package/dist/plugin-sdk/terminal/links.d.ts +6 -0
  1345. package/dist/plugin-sdk/terminal/palette.d.ts +10 -0
  1346. package/dist/plugin-sdk/terminal/progress-line.d.ts +3 -0
  1347. package/dist/plugin-sdk/terminal/prompt-style.d.ts +3 -0
  1348. package/dist/plugin-sdk/terminal/restore.d.ts +17 -0
  1349. package/dist/plugin-sdk/terminal/theme.d.ts +15 -0
  1350. package/dist/plugin-sdk/tts/tts-core.d.ts +38 -0
  1351. package/dist/plugin-sdk/tts/tts.d.ts +177 -0
  1352. package/dist/plugin-sdk/types/agent-types.d.ts +1 -0
  1353. package/dist/plugin-sdk/utils/account-id.d.ts +1 -0
  1354. package/dist/plugin-sdk/utils/boolean.d.ts +5 -0
  1355. package/dist/plugin-sdk/utils/chunk-items.d.ts +1 -0
  1356. package/dist/plugin-sdk/utils/delivery-context.d.ts +29 -0
  1357. package/dist/plugin-sdk/utils/directive-tags.d.ts +29 -0
  1358. package/dist/plugin-sdk/utils/fetch-timeout.d.ts +13 -0
  1359. package/dist/plugin-sdk/utils/mask-api-key.d.ts +1 -0
  1360. package/dist/plugin-sdk/utils/message-channel.d.ts +27 -0
  1361. package/dist/plugin-sdk/utils/normalize-secret-input.d.ts +11 -0
  1362. package/dist/plugin-sdk/utils/provider-utils.d.ts +9 -0
  1363. package/dist/plugin-sdk/utils/queue-helpers.d.ts +80 -0
  1364. package/dist/plugin-sdk/utils/reaction-level.d.ts +15 -0
  1365. package/dist/plugin-sdk/utils/run-with-concurrency.d.ts +11 -0
  1366. package/dist/plugin-sdk/utils/transcript-tools.d.ts +8 -0
  1367. package/dist/plugin-sdk/utils/usage-format.d.ts +26 -0
  1368. package/dist/plugin-sdk/utils/with-timeout.d.ts +1 -0
  1369. package/dist/plugin-sdk/utils.d.ts +63 -0
  1370. package/dist/plugin-sdk/version.d.ts +8 -0
  1371. package/dist/plugin-sdk/web/accounts.d.ts +39 -0
  1372. package/dist/plugin-sdk/web/active-listener.d.ts +25 -0
  1373. package/dist/plugin-sdk/web/auth-store.d.ts +26 -0
  1374. package/dist/plugin-sdk/web/auto-reply/constants.d.ts +1 -0
  1375. package/dist/plugin-sdk/web/auto-reply/deliver-reply.d.ts +19 -0
  1376. package/dist/plugin-sdk/web/auto-reply/heartbeat-runner.d.ts +20 -0
  1377. package/dist/plugin-sdk/web/auto-reply/loggers.d.ts +4 -0
  1378. package/dist/plugin-sdk/web/auto-reply/mentions.d.ts +19 -0
  1379. package/dist/plugin-sdk/web/auto-reply/monitor/ack-reaction.d.ts +13 -0
  1380. package/dist/plugin-sdk/web/auto-reply/monitor/broadcast.d.ts +16 -0
  1381. package/dist/plugin-sdk/web/auto-reply/monitor/commands.d.ts +2 -0
  1382. package/dist/plugin-sdk/web/auto-reply/monitor/echo.d.ts +17 -0
  1383. package/dist/plugin-sdk/web/auto-reply/monitor/group-activation.d.ts +9 -0
  1384. package/dist/plugin-sdk/web/auto-reply/monitor/group-gating.d.ts +33 -0
  1385. package/dist/plugin-sdk/web/auto-reply/monitor/group-members.d.ts +6 -0
  1386. package/dist/plugin-sdk/web/auto-reply/monitor/last-route.d.ts +15 -0
  1387. package/dist/plugin-sdk/web/auto-reply/monitor/message-line.d.ts +11 -0
  1388. package/dist/plugin-sdk/web/auto-reply/monitor/on-message.d.ts +24 -0
  1389. package/dist/plugin-sdk/web/auto-reply/monitor/peer.d.ts +2 -0
  1390. package/dist/plugin-sdk/web/auto-reply/monitor/process-message.d.ts +40 -0
  1391. package/dist/plugin-sdk/web/auto-reply/monitor.d.ts +5 -0
  1392. package/dist/plugin-sdk/web/auto-reply/session-snapshot.d.ts +17 -0
  1393. package/dist/plugin-sdk/web/auto-reply/types.d.ts +30 -0
  1394. package/dist/plugin-sdk/web/auto-reply/util.d.ts +2 -0
  1395. package/dist/plugin-sdk/web/auto-reply.d.ts +1 -0
  1396. package/dist/plugin-sdk/web/auto-reply.impl.d.ts +5 -0
  1397. package/dist/plugin-sdk/web/inbound/access-control.d.ts +36 -0
  1398. package/dist/plugin-sdk/web/inbound/dedupe.d.ts +2 -0
  1399. package/dist/plugin-sdk/web/inbound/extract.d.ts +13 -0
  1400. package/dist/plugin-sdk/web/inbound/media.d.ts +7 -0
  1401. package/dist/plugin-sdk/web/inbound/monitor.d.ts +30 -0
  1402. package/dist/plugin-sdk/web/inbound/send-api.d.ts +22 -0
  1403. package/dist/plugin-sdk/web/inbound/types.d.ts +41 -0
  1404. package/dist/plugin-sdk/web/inbound.d.ts +4 -0
  1405. package/dist/plugin-sdk/web/login-qr.d.ts +19 -0
  1406. package/dist/plugin-sdk/web/login.d.ts +3 -0
  1407. package/dist/plugin-sdk/web/media.d.ts +43 -0
  1408. package/dist/plugin-sdk/web/outbound.d.ts +24 -0
  1409. package/dist/plugin-sdk/web/qr-image.d.ts +4 -0
  1410. package/dist/plugin-sdk/web/reconnect.d.ts +12 -0
  1411. package/dist/plugin-sdk/web/session.d.ts +14 -0
  1412. package/dist/plugin-sdk/web/vcard.d.ts +6 -0
  1413. package/dist/plugin-sdk/whatsapp/normalize.d.ts +6 -0
  1414. package/dist/plugin-sdk/whatsapp/resolve-outbound-target.d.ts +12 -0
  1415. package/dist/plugin-sdk/wizard/prompts.d.ts +43 -0
  1416. package/dist/plugin-sdk/wizard/session.d.ts +42 -0
  1417. package/dist/plugins-BflZz0sp.js +453 -0
  1418. package/dist/plugins-allowlist-BbTQ5Z2k.js +15 -0
  1419. package/dist/plugins-allowlist-C20oaESO.js +15 -0
  1420. package/dist/plugins-cli-DV82scUw.js +798 -0
  1421. package/dist/plugins-cli-Qj1UyIZO.js +793 -0
  1422. package/dist/plugins-woGRXMzU.js +455 -0
  1423. package/dist/polls-B0CCBDeR.js +33 -0
  1424. package/dist/polls-CwwHzYBM.js +33 -0
  1425. package/dist/ports-DrruB2fK.js +370 -0
  1426. package/dist/ports-GT1yV-Tg.js +96 -0
  1427. package/dist/ports-NPqtlfp0.js +316 -0
  1428. package/dist/ports-QMI4-F9m.js +96 -0
  1429. package/dist/ports-lsof-Wteul3ju.js +27 -0
  1430. package/dist/process-scoped-map-CV9kDvfG.js +39 -0
  1431. package/dist/process-scoped-map-PEvnG75N.js +39 -0
  1432. package/dist/program-CQmIaRUI.js +244 -0
  1433. package/dist/program-context-DEU6ACnL.js +474 -0
  1434. package/dist/program-context-jqeI5alP.js +17 -0
  1435. package/dist/progress-C1kUfYL-.js +123 -0
  1436. package/dist/progress-CBkSaM6z.js +124 -0
  1437. package/dist/prompt-Bllj1dhc.js +21 -0
  1438. package/dist/prompt-Yn2yClg1.js +21 -0
  1439. package/dist/prompt-select-styled-BhTN6zE2.js +1650 -0
  1440. package/dist/prompt-select-styled-WopXnjIy.js +1647 -0
  1441. package/dist/prompt-style-DVEm3BZW.js +9 -0
  1442. package/dist/prompt-style-DjEYC_s-.js +9 -0
  1443. package/dist/provider-dispatcher-B4QMe-I6.js +659 -0
  1444. package/dist/provider-dispatcher-Bfauw6zz.js +660 -0
  1445. package/dist/provider-utils-3JTMJroG.js +79 -0
  1446. package/dist/provider-utils-FaBmofiq.js +79 -0
  1447. package/dist/proxy-DL3MD6-P.js +16 -0
  1448. package/dist/proxy-DpNv2cSV.js +16 -0
  1449. package/dist/push-apns-C0LyG-WB.js +713 -0
  1450. package/dist/push-apns-DuG95AKC.js +711 -0
  1451. package/dist/pw-ai-D9n6-Wa6.js +1906 -0
  1452. package/dist/pw-ai-T280E6Mn.js +1910 -0
  1453. package/dist/pw-ai-state-CGfLv6nV.js +11 -0
  1454. package/dist/pw-ai-state-Dynx20hr.js +11 -0
  1455. package/dist/qr-cli-DVECWTHN.js +352 -0
  1456. package/dist/qr-cli-hSLixZCe.js +347 -0
  1457. package/dist/redact-Dx1Fue21.js +191 -0
  1458. package/dist/redact-eZq1uwNK.js +191 -0
  1459. package/dist/redact-identifier-BTIWtaa-.js +15 -0
  1460. package/dist/redact-identifier-CAagcfWA.js +15 -0
  1461. package/dist/redact-snapshot-BZYLIqe-.js +2028 -0
  1462. package/dist/redact-snapshot-C6hVx_9I.js +2028 -0
  1463. package/dist/register.agent-Dmj-sgEl.js +1043 -0
  1464. package/dist/register.agent-IspcBFeD.js +286 -0
  1465. package/dist/register.configure-BqJEqyGL.js +130 -0
  1466. package/dist/register.configure-PPkU_4Ea.js +124 -0
  1467. package/dist/register.import-Bs-UkOs-.js +27 -0
  1468. package/dist/register.import-DLng8g-e.js +30 -0
  1469. package/dist/register.maintenance-BbpkJil3.js +497 -0
  1470. package/dist/register.maintenance-C5nkOQxa.js +494 -0
  1471. package/dist/register.message-C83Hi1b3.js +681 -0
  1472. package/dist/register.message-D16isu4u.js +686 -0
  1473. package/dist/register.onboard-B8EzX3wY.js +257 -0
  1474. package/dist/register.onboard-CyRbr_0V.js +262 -0
  1475. package/dist/register.setup-DWyoowAz.js +109 -0
  1476. package/dist/register.setup-Dz6GwMnu.js +114 -0
  1477. package/dist/register.status-health-sessions-CbQOfycz.js +423 -0
  1478. package/dist/register.status-health-sessions-DXIWG47y.js +669 -0
  1479. package/dist/register.subclis-DeGP5UPU.js +267 -0
  1480. package/dist/remoteclaw-root-C2HV2VeC.js +88 -0
  1481. package/dist/remoteclaw-root-DybYl8PL.js +88 -0
  1482. package/dist/render-6ahYfPwj.js +104 -0
  1483. package/dist/render-CCLsW6Lz.js +104 -0
  1484. package/dist/render-uf6PvGMV.js +104 -0
  1485. package/dist/replies-BKrzM0QI.js +136 -0
  1486. package/dist/replies-Cl2gYBVt.js +136 -0
  1487. package/dist/reply-CCu_DY64.js +13900 -0
  1488. package/dist/reply-DSKC8kyS.js +13897 -0
  1489. package/dist/reply-directives-BHJKp1Du.js +182 -0
  1490. package/dist/reply-directives-CD2WycBM.js +182 -0
  1491. package/dist/reply-payloads-D_BM1Anb.js +527 -0
  1492. package/dist/reply-prefix-DBLCYiup.js +38 -0
  1493. package/dist/reply-prefix-Q4DOJSn_.js +38 -0
  1494. package/dist/resolve-route-CBVbY0xS.js +249 -0
  1495. package/dist/resolve-route-DGEgTEif.js +249 -0
  1496. package/dist/response-prefix-template-rVZQOViK.js +136 -0
  1497. package/dist/response-prefix-template-up4REfuR.js +136 -0
  1498. package/dist/retry-BhuXOEVR.js +77 -0
  1499. package/dist/retry-DUjAzOBy.js +77 -0
  1500. package/dist/retry-DnqPAqWp.js +77 -0
  1501. package/dist/rolldown-runtime-Cbj13DAv.js +20 -0
  1502. package/dist/run-main-Um5xhxla.js +320 -0
  1503. package/dist/runner-yVJ4HB2K.js +2294 -0
  1504. package/dist/runner-z92MWZ3m.js +2294 -0
  1505. package/dist/runtime-DJNp29jv.js +94 -0
  1506. package/dist/runtime-guard-DZ_xuCc4.js +60 -0
  1507. package/dist/runtime-guard-U-ewY_QH.js +60 -0
  1508. package/dist/secret-equal-BbHdTtqY.js +11 -0
  1509. package/dist/secret-equal-CXJEZiWb.js +11 -0
  1510. package/dist/secure-random-CS2mSdTn.js +12 -0
  1511. package/dist/secure-random-Pl9rPl0l.js +44 -0
  1512. package/dist/secure-random-_dzDDlFo.js +12 -0
  1513. package/dist/security-cli-CdwbWZUj.js +484 -0
  1514. package/dist/security-cli-DP5QJpa5.js +478 -0
  1515. package/dist/send-B1_Ymjb9.js +1778 -0
  1516. package/dist/send-B84axiIa.js +29 -0
  1517. package/dist/send-BN_zYVlx.js +547 -0
  1518. package/dist/send-BqVOxAmK.js +1174 -0
  1519. package/dist/send-Bx9bUGav.js +492 -0
  1520. package/dist/send-C3pdJ6p-.js +2245 -0
  1521. package/dist/send-CBGSXjfD.js +2245 -0
  1522. package/dist/send-CGXyTF22.js +426 -0
  1523. package/dist/send-CKavrhXj.js +11 -0
  1524. package/dist/send-D08Je6DL.js +374 -0
  1525. package/dist/send-D1aYEG-k.js +332 -0
  1526. package/dist/send-DHldI3gf.js +492 -0
  1527. package/dist/send-D_DUQJ6H.js +349 -0
  1528. package/dist/send-Ds63eF4a.js +349 -0
  1529. package/dist/send-YRVDWfSs.js +547 -0
  1530. package/dist/send-xnwty9cY.js +1775 -0
  1531. package/dist/server-BQFoyCRR.js +200 -0
  1532. package/dist/server-DhXw25Jq.js +205 -0
  1533. package/dist/server-lifecycle-BjCCyD3w.js +2437 -0
  1534. package/dist/server-lifecycle-Coyr6Lda.js +2437 -0
  1535. package/dist/server-node-events-De4WZQQD.js +393 -0
  1536. package/dist/server-node-events-dXXayuqY.js +398 -0
  1537. package/dist/service-Bjqii5nW.js +670 -0
  1538. package/dist/service-fp29z5Ww.js +670 -0
  1539. package/dist/session-DBL5nHDy.js +170 -0
  1540. package/dist/session-cost-usage-DX09eTPU.js +627 -0
  1541. package/dist/session-cost-usage-yYi525j3.js +627 -0
  1542. package/dist/session-dirs-Cj5xi7zX.js +947 -0
  1543. package/dist/session-dirs-DdF6TDsE.js +947 -0
  1544. package/dist/session-key-5YLnn_qf.js +235 -0
  1545. package/dist/session-key-C2n-VILA.js +235 -0
  1546. package/dist/session-utils-CEtEq6bi.js +625 -0
  1547. package/dist/session-utils-WmlWAs1r.js +625 -0
  1548. package/dist/session-xKIW6gL2.js +170 -0
  1549. package/dist/sessions--PykPynp.js +2593 -0
  1550. package/dist/sessions-Bw4LRnSr.js +252 -0
  1551. package/dist/ssrf-Ck9HDZpv.js +183 -0
  1552. package/dist/ssrf-m7kFIobZ.js +183 -0
  1553. package/dist/stagger-BXv_apuy.js +56 -0
  1554. package/dist/stagger-MI9gd2rQ.js +56 -0
  1555. package/dist/status-BmtCS3T1.js +21 -0
  1556. package/dist/status-BrwHRn2B.js +21 -0
  1557. package/dist/status-CtzYFLLF.js +2072 -0
  1558. package/dist/status-DiN1cq2p.js +2068 -0
  1559. package/dist/status.update-C55QM2xs.js +79 -0
  1560. package/dist/status.update-CBmPXwYN.js +79 -0
  1561. package/dist/store-C3tOpizT.js +64 -0
  1562. package/dist/store-CPJXuhvQ.js +53 -0
  1563. package/dist/store-SusmIfz7.js +2595 -0
  1564. package/dist/store-v3P-OWhi.js +64 -0
  1565. package/dist/strip-inbound-meta-DjKcSFaW.js +110 -0
  1566. package/dist/strip-inbound-meta-jy3bkUab.js +110 -0
  1567. package/dist/subagent-registry-Db4Ho_2Y.js +4858 -0
  1568. package/dist/subagent-registry-Du_j0Fnt.js +4860 -0
  1569. package/dist/subsystem-BUXAJwPD.js +1079 -0
  1570. package/dist/subsystem-COd61u0P.js +1139 -0
  1571. package/dist/system-cli-DYCpLO3T.js +75 -0
  1572. package/dist/system-cli-eAk5wVbP.js +70 -0
  1573. package/dist/systemd-DSnlM3jX.js +547 -0
  1574. package/dist/systemd-TfK8GuTx.js +547 -0
  1575. package/dist/systemd-linger-Axnc1xCb.js +75 -0
  1576. package/dist/systemd-linger-_0_-RY4v.js +75 -0
  1577. package/dist/table-C1rdyYl9.js +278 -0
  1578. package/dist/table-DPTzZyhu.js +279 -0
  1579. package/dist/tables-DI5LGEr1.js +55 -0
  1580. package/dist/tables-PxcSPSO0.js +55 -0
  1581. package/dist/tables-TWiml6b1.js +55 -0
  1582. package/dist/tailnet-CEudzG0i.js +40 -0
  1583. package/dist/tailnet-PnMrjwGT.js +40 -0
  1584. package/dist/tailscale-DTATQxAG.js +230 -0
  1585. package/dist/tailscale-Dbyahx0J.js +230 -0
  1586. package/dist/target-errors-BDpPcwh5.js +26 -0
  1587. package/dist/target-errors-DdIAPcMM.js +26 -0
  1588. package/dist/targets-BMenhVHg.js +39 -0
  1589. package/dist/targets-C-2xwh9f.js +45 -0
  1590. package/dist/targets-C1NeMn2J.js +220 -0
  1591. package/dist/targets-CcTME3bp.js +46 -0
  1592. package/dist/targets-CmC5m7Ey.js +53 -0
  1593. package/dist/targets-D-qLBpTA.js +79 -0
  1594. package/dist/targets-D-u6Kyio.js +650 -0
  1595. package/dist/targets-D7OKVXMI.js +650 -0
  1596. package/dist/targets-D7PT_rdO.js +45 -0
  1597. package/dist/targets-DB4vBpIQ.js +2172 -0
  1598. package/dist/targets-DfqPGOmM.js +2173 -0
  1599. package/dist/targets-DyybKefq.js +53 -0
  1600. package/dist/targets-JCISV-hS.js +120 -0
  1601. package/dist/targets-UncQvCVs.js +79 -0
  1602. package/dist/text-format-BQ3z_OXA.js +9 -0
  1603. package/dist/text-format-oWqzVmah.js +9 -0
  1604. package/dist/tokens-B-jmvNR9.js +21 -0
  1605. package/dist/tokens-DzFOtLlW.js +21 -0
  1606. package/dist/tool-display-Br6mwaJc.js +785 -0
  1607. package/dist/tool-display-sgNwLOBj.js +785 -0
  1608. package/dist/tool-images-BNfIJ_Kj.js +263 -0
  1609. package/dist/tool-images-kloBqxqK.js +263 -0
  1610. package/dist/trash-DPi0aCCQ.js +125 -0
  1611. package/dist/trash-D_Jd_yQZ.js +125 -0
  1612. package/dist/tui-CHc0EfJO.js +3392 -0
  1613. package/dist/tui-CyHwc2uX.js +3392 -0
  1614. package/dist/tui-cli-BvwbrIYO.js +63 -0
  1615. package/dist/tui-cli-C9I18SfW.js +58 -0
  1616. package/dist/update-DxyjwCL2.js +349 -0
  1617. package/dist/update-IX7vdqA8.js +349 -0
  1618. package/dist/update-cli-CBeXUSzq.js +1373 -0
  1619. package/dist/update-cli-DkAWmUrp.js +1370 -0
  1620. package/dist/usage-BdhBT0Vz.js +57 -0
  1621. package/dist/usage-BtQcAnf6.js +57 -0
  1622. package/dist/usage-CYlQW4M2.js +5279 -0
  1623. package/dist/usage-format-C3mNLfhI.js +31 -0
  1624. package/dist/usage-format-DAaPzr_z.js +31 -0
  1625. package/dist/utils-LBKvDoPx.js +631 -0
  1626. package/dist/warning-filter.js +48 -0
  1627. package/dist/web-BUYUdnRH.js +3065 -0
  1628. package/dist/web-Dquzwqf4.js +70 -0
  1629. package/dist/web-tS8diboh.js +76 -0
  1630. package/dist/webhooks-cli-B7Vw3CMz.js +333 -0
  1631. package/dist/webhooks-cli-BpZHQlVd.js +328 -0
  1632. package/dist/whatsapp-actions-D5HXezjp.js +128 -0
  1633. package/dist/whatsapp-actions-DaA291Ya.js +122 -0
  1634. package/dist/widearea-dns-CsmBVbez.js +127 -0
  1635. package/dist/widearea-dns-DSoaA-eH.js +127 -0
  1636. package/dist/workspace-B4ZvVYT9.js +447 -0
  1637. package/dist/workspace-B8PA8oxJ.js +449 -0
  1638. package/dist/workspace-BzPeZDew.js +10 -0
  1639. package/dist/workspace-DkGLVfOl.js +10 -0
  1640. package/dist/wsl-BCnYV9O0.js +52 -0
  1641. package/dist/wsl-B_sPlzWw.js +52 -0
  1642. package/extensions/bluebubbles/README.md +45 -0
  1643. package/extensions/bluebubbles/index.ts +19 -0
  1644. package/extensions/bluebubbles/package.json +33 -0
  1645. package/extensions/bluebubbles/remoteclaw.plugin.json +9 -0
  1646. package/extensions/bluebubbles/src/account-resolve.ts +35 -0
  1647. package/extensions/bluebubbles/src/accounts.ts +90 -0
  1648. package/extensions/bluebubbles/src/actions.ts +460 -0
  1649. package/extensions/bluebubbles/src/attachments.ts +268 -0
  1650. package/extensions/bluebubbles/src/channel.ts +418 -0
  1651. package/extensions/bluebubbles/src/chat.ts +329 -0
  1652. package/extensions/bluebubbles/src/config-schema.ts +65 -0
  1653. package/extensions/bluebubbles/src/history.ts +177 -0
  1654. package/extensions/bluebubbles/src/media-send.ts +317 -0
  1655. package/extensions/bluebubbles/src/monitor-normalize.ts +825 -0
  1656. package/extensions/bluebubbles/src/monitor-processing.ts +1448 -0
  1657. package/extensions/bluebubbles/src/monitor-reply-cache.ts +185 -0
  1658. package/extensions/bluebubbles/src/monitor-shared.ts +41 -0
  1659. package/extensions/bluebubbles/src/monitor.ts +534 -0
  1660. package/extensions/bluebubbles/src/multipart.ts +32 -0
  1661. package/extensions/bluebubbles/src/onboarding.ts +340 -0
  1662. package/extensions/bluebubbles/src/probe.ts +163 -0
  1663. package/extensions/bluebubbles/src/reactions.ts +182 -0
  1664. package/extensions/bluebubbles/src/request-url.ts +12 -0
  1665. package/extensions/bluebubbles/src/runtime.ts +34 -0
  1666. package/extensions/bluebubbles/src/send-helpers.ts +53 -0
  1667. package/extensions/bluebubbles/src/send.ts +472 -0
  1668. package/extensions/bluebubbles/src/targets.ts +370 -0
  1669. package/extensions/bluebubbles/src/test-harness.ts +79 -0
  1670. package/extensions/bluebubbles/src/test-mocks.ts +11 -0
  1671. package/extensions/bluebubbles/src/types.ts +135 -0
  1672. package/extensions/device-pair/index.ts +529 -0
  1673. package/extensions/device-pair/remoteclaw.plugin.json +20 -0
  1674. package/extensions/diagnostics-otel/index.ts +15 -0
  1675. package/extensions/diagnostics-otel/package.json +24 -0
  1676. package/extensions/diagnostics-otel/remoteclaw.plugin.json +8 -0
  1677. package/extensions/diagnostics-otel/src/service.ts +682 -0
  1678. package/extensions/discord/index.ts +19 -0
  1679. package/extensions/discord/package.json +11 -0
  1680. package/extensions/discord/remoteclaw.plugin.json +9 -0
  1681. package/extensions/discord/src/channel.ts +451 -0
  1682. package/extensions/discord/src/runtime.ts +14 -0
  1683. package/extensions/discord/src/subagent-hooks.ts +152 -0
  1684. package/extensions/feishu/index.ts +63 -0
  1685. package/extensions/feishu/package.json +34 -0
  1686. package/extensions/feishu/remoteclaw.plugin.json +10 -0
  1687. package/extensions/feishu/skills/feishu-doc/SKILL.md +105 -0
  1688. package/extensions/feishu/skills/feishu-doc/references/block-types.md +103 -0
  1689. package/extensions/feishu/skills/feishu-drive/SKILL.md +97 -0
  1690. package/extensions/feishu/skills/feishu-perm/SKILL.md +119 -0
  1691. package/extensions/feishu/skills/feishu-wiki/SKILL.md +111 -0
  1692. package/extensions/feishu/src/accounts.ts +144 -0
  1693. package/extensions/feishu/src/bitable.ts +739 -0
  1694. package/extensions/feishu/src/bot.ts +1006 -0
  1695. package/extensions/feishu/src/channel.ts +359 -0
  1696. package/extensions/feishu/src/client.ts +118 -0
  1697. package/extensions/feishu/src/config-schema.ts +226 -0
  1698. package/extensions/feishu/src/dedup.ts +54 -0
  1699. package/extensions/feishu/src/directory.ts +177 -0
  1700. package/extensions/feishu/src/doc-schema.ts +47 -0
  1701. package/extensions/feishu/src/docx.ts +536 -0
  1702. package/extensions/feishu/src/drive-schema.ts +46 -0
  1703. package/extensions/feishu/src/drive.ts +227 -0
  1704. package/extensions/feishu/src/dynamic-agent.ts +131 -0
  1705. package/extensions/feishu/src/external-keys.ts +19 -0
  1706. package/extensions/feishu/src/media.ts +441 -0
  1707. package/extensions/feishu/src/mention.ts +133 -0
  1708. package/extensions/feishu/src/monitor.ts +397 -0
  1709. package/extensions/feishu/src/onboarding.ts +351 -0
  1710. package/extensions/feishu/src/outbound.ts +55 -0
  1711. package/extensions/feishu/src/perm-schema.ts +52 -0
  1712. package/extensions/feishu/src/perm.ts +173 -0
  1713. package/extensions/feishu/src/policy.ts +120 -0
  1714. package/extensions/feishu/src/probe.ts +44 -0
  1715. package/extensions/feishu/src/reactions.ts +160 -0
  1716. package/extensions/feishu/src/reply-dispatcher.ts +239 -0
  1717. package/extensions/feishu/src/runtime.ts +14 -0
  1718. package/extensions/feishu/src/send-result.ts +29 -0
  1719. package/extensions/feishu/src/send-target.ts +25 -0
  1720. package/extensions/feishu/src/send.ts +313 -0
  1721. package/extensions/feishu/src/streaming-card.ts +218 -0
  1722. package/extensions/feishu/src/targets.ts +78 -0
  1723. package/extensions/feishu/src/tools-config.ts +21 -0
  1724. package/extensions/feishu/src/types.ts +81 -0
  1725. package/extensions/feishu/src/typing.ts +80 -0
  1726. package/extensions/feishu/src/wiki-schema.ts +55 -0
  1727. package/extensions/feishu/src/wiki.ts +232 -0
  1728. package/extensions/googlechat/index.ts +19 -0
  1729. package/extensions/googlechat/node_modules/.bin/remoteclaw +21 -0
  1730. package/extensions/googlechat/package.json +37 -0
  1731. package/extensions/googlechat/remoteclaw.plugin.json +9 -0
  1732. package/extensions/googlechat/src/accounts.ts +147 -0
  1733. package/extensions/googlechat/src/actions.ts +176 -0
  1734. package/extensions/googlechat/src/api.ts +282 -0
  1735. package/extensions/googlechat/src/auth.ts +137 -0
  1736. package/extensions/googlechat/src/channel.ts +576 -0
  1737. package/extensions/googlechat/src/monitor.ts +965 -0
  1738. package/extensions/googlechat/src/onboarding.ts +270 -0
  1739. package/extensions/googlechat/src/runtime.ts +14 -0
  1740. package/extensions/googlechat/src/targets.ts +65 -0
  1741. package/extensions/googlechat/src/types.config.ts +3 -0
  1742. package/extensions/googlechat/src/types.ts +73 -0
  1743. package/extensions/imessage/index.ts +17 -0
  1744. package/extensions/imessage/package.json +12 -0
  1745. package/extensions/imessage/remoteclaw.plugin.json +9 -0
  1746. package/extensions/imessage/src/channel.ts +304 -0
  1747. package/extensions/imessage/src/runtime.ts +14 -0
  1748. package/extensions/irc/index.ts +17 -0
  1749. package/extensions/irc/package.json +11 -0
  1750. package/extensions/irc/remoteclaw.plugin.json +9 -0
  1751. package/extensions/irc/src/accounts.ts +268 -0
  1752. package/extensions/irc/src/channel.ts +364 -0
  1753. package/extensions/irc/src/client.ts +439 -0
  1754. package/extensions/irc/src/config-schema.ts +91 -0
  1755. package/extensions/irc/src/connect-options.ts +30 -0
  1756. package/extensions/irc/src/control-chars.ts +22 -0
  1757. package/extensions/irc/src/inbound.ts +372 -0
  1758. package/extensions/irc/src/monitor.ts +146 -0
  1759. package/extensions/irc/src/normalize.ts +123 -0
  1760. package/extensions/irc/src/onboarding.ts +479 -0
  1761. package/extensions/irc/src/policy.ts +166 -0
  1762. package/extensions/irc/src/probe.ts +53 -0
  1763. package/extensions/irc/src/protocol.ts +169 -0
  1764. package/extensions/irc/src/runtime.ts +14 -0
  1765. package/extensions/irc/src/send.ts +88 -0
  1766. package/extensions/irc/src/types.ts +99 -0
  1767. package/extensions/line/index.ts +19 -0
  1768. package/extensions/line/package.json +27 -0
  1769. package/extensions/line/remoteclaw.plugin.json +9 -0
  1770. package/extensions/line/src/card-command.ts +344 -0
  1771. package/extensions/line/src/channel.ts +797 -0
  1772. package/extensions/line/src/runtime.ts +14 -0
  1773. package/extensions/matrix/CHANGELOG.md +32 -0
  1774. package/extensions/matrix/index.ts +17 -0
  1775. package/extensions/matrix/node_modules/.bin/markdown-it +21 -0
  1776. package/extensions/matrix/package.json +33 -0
  1777. package/extensions/matrix/remoteclaw.plugin.json +9 -0
  1778. package/extensions/matrix/src/actions.ts +195 -0
  1779. package/extensions/matrix/src/channel.ts +486 -0
  1780. package/extensions/matrix/src/config-schema.ts +63 -0
  1781. package/extensions/matrix/src/directory-live.ts +208 -0
  1782. package/extensions/matrix/src/group-mentions.ts +52 -0
  1783. package/extensions/matrix/src/matrix/accounts.ts +137 -0
  1784. package/extensions/matrix/src/matrix/actions/client.ts +47 -0
  1785. package/extensions/matrix/src/matrix/actions/limits.ts +6 -0
  1786. package/extensions/matrix/src/matrix/actions/messages.ts +126 -0
  1787. package/extensions/matrix/src/matrix/actions/pins.ts +84 -0
  1788. package/extensions/matrix/src/matrix/actions/reactions.ts +102 -0
  1789. package/extensions/matrix/src/matrix/actions/room.ts +85 -0
  1790. package/extensions/matrix/src/matrix/actions/summary.ts +75 -0
  1791. package/extensions/matrix/src/matrix/actions/types.ts +85 -0
  1792. package/extensions/matrix/src/matrix/actions.ts +15 -0
  1793. package/extensions/matrix/src/matrix/active-client.ts +32 -0
  1794. package/extensions/matrix/src/matrix/client/config.ts +219 -0
  1795. package/extensions/matrix/src/matrix/client/create-client.ts +123 -0
  1796. package/extensions/matrix/src/matrix/client/logging.ts +36 -0
  1797. package/extensions/matrix/src/matrix/client/runtime.ts +4 -0
  1798. package/extensions/matrix/src/matrix/client/shared.ts +201 -0
  1799. package/extensions/matrix/src/matrix/client/storage.ts +131 -0
  1800. package/extensions/matrix/src/matrix/client/types.ts +34 -0
  1801. package/extensions/matrix/src/matrix/client-bootstrap.ts +39 -0
  1802. package/extensions/matrix/src/matrix/client.ts +14 -0
  1803. package/extensions/matrix/src/matrix/credentials.ts +125 -0
  1804. package/extensions/matrix/src/matrix/deps.ts +60 -0
  1805. package/extensions/matrix/src/matrix/format.ts +22 -0
  1806. package/extensions/matrix/src/matrix/index.ts +11 -0
  1807. package/extensions/matrix/src/matrix/monitor/allowlist.ts +103 -0
  1808. package/extensions/matrix/src/matrix/monitor/auto-join.ts +71 -0
  1809. package/extensions/matrix/src/matrix/monitor/direct.ts +104 -0
  1810. package/extensions/matrix/src/matrix/monitor/events.ts +148 -0
  1811. package/extensions/matrix/src/matrix/monitor/handler.ts +688 -0
  1812. package/extensions/matrix/src/matrix/monitor/index.ts +358 -0
  1813. package/extensions/matrix/src/matrix/monitor/location.ts +100 -0
  1814. package/extensions/matrix/src/matrix/monitor/media.ts +118 -0
  1815. package/extensions/matrix/src/matrix/monitor/mentions.ts +62 -0
  1816. package/extensions/matrix/src/matrix/monitor/replies.ts +124 -0
  1817. package/extensions/matrix/src/matrix/monitor/room-info.ts +55 -0
  1818. package/extensions/matrix/src/matrix/monitor/rooms.ts +47 -0
  1819. package/extensions/matrix/src/matrix/monitor/threads.ts +68 -0
  1820. package/extensions/matrix/src/matrix/monitor/types.ts +39 -0
  1821. package/extensions/matrix/src/matrix/poll-types.ts +167 -0
  1822. package/extensions/matrix/src/matrix/probe.ts +69 -0
  1823. package/extensions/matrix/src/matrix/send/client.ts +97 -0
  1824. package/extensions/matrix/src/matrix/send/formatting.ts +93 -0
  1825. package/extensions/matrix/src/matrix/send/media.ts +230 -0
  1826. package/extensions/matrix/src/matrix/send/targets.ts +150 -0
  1827. package/extensions/matrix/src/matrix/send/types.ts +109 -0
  1828. package/extensions/matrix/src/matrix/send-queue.ts +44 -0
  1829. package/extensions/matrix/src/matrix/send.ts +265 -0
  1830. package/extensions/matrix/src/onboarding.ts +446 -0
  1831. package/extensions/matrix/src/outbound.ts +55 -0
  1832. package/extensions/matrix/src/resolve-targets.ts +126 -0
  1833. package/extensions/matrix/src/runtime.ts +14 -0
  1834. package/extensions/matrix/src/tool-actions.ts +164 -0
  1835. package/extensions/matrix/src/types.ts +116 -0
  1836. package/extensions/mattermost/index.ts +17 -0
  1837. package/extensions/mattermost/package.json +25 -0
  1838. package/extensions/mattermost/remoteclaw.plugin.json +9 -0
  1839. package/extensions/mattermost/src/channel.ts +439 -0
  1840. package/extensions/mattermost/src/config-schema.ts +62 -0
  1841. package/extensions/mattermost/src/group-mentions.ts +15 -0
  1842. package/extensions/mattermost/src/mattermost/accounts.ts +128 -0
  1843. package/extensions/mattermost/src/mattermost/client.ts +230 -0
  1844. package/extensions/mattermost/src/mattermost/index.ts +9 -0
  1845. package/extensions/mattermost/src/mattermost/monitor-helpers.ts +72 -0
  1846. package/extensions/mattermost/src/mattermost/monitor-onchar.ts +25 -0
  1847. package/extensions/mattermost/src/mattermost/monitor-websocket.ts +221 -0
  1848. package/extensions/mattermost/src/mattermost/monitor.ts +1061 -0
  1849. package/extensions/mattermost/src/mattermost/probe.ts +61 -0
  1850. package/extensions/mattermost/src/mattermost/reactions.test-helpers.ts +83 -0
  1851. package/extensions/mattermost/src/mattermost/reactions.ts +124 -0
  1852. package/extensions/mattermost/src/mattermost/reconnect.ts +103 -0
  1853. package/extensions/mattermost/src/mattermost/send.ts +231 -0
  1854. package/extensions/mattermost/src/normalize.ts +46 -0
  1855. package/extensions/mattermost/src/onboarding-helpers.ts +1 -0
  1856. package/extensions/mattermost/src/onboarding.ts +182 -0
  1857. package/extensions/mattermost/src/runtime.ts +14 -0
  1858. package/extensions/mattermost/src/types.ts +62 -0
  1859. package/extensions/msteams/CHANGELOG.md +35 -0
  1860. package/extensions/msteams/index.ts +17 -0
  1861. package/extensions/msteams/package.json +32 -0
  1862. package/extensions/msteams/remoteclaw.plugin.json +9 -0
  1863. package/extensions/msteams/src/attachments/download.ts +282 -0
  1864. package/extensions/msteams/src/attachments/graph.ts +354 -0
  1865. package/extensions/msteams/src/attachments/html.ts +90 -0
  1866. package/extensions/msteams/src/attachments/payload.ts +14 -0
  1867. package/extensions/msteams/src/attachments/remote-media.ts +42 -0
  1868. package/extensions/msteams/src/attachments/shared.ts +404 -0
  1869. package/extensions/msteams/src/attachments/types.ts +37 -0
  1870. package/extensions/msteams/src/attachments.ts +18 -0
  1871. package/extensions/msteams/src/channel.ts +464 -0
  1872. package/extensions/msteams/src/conversation-store-fs.ts +165 -0
  1873. package/extensions/msteams/src/conversation-store-memory.ts +47 -0
  1874. package/extensions/msteams/src/conversation-store.ts +41 -0
  1875. package/extensions/msteams/src/directory-live.ts +108 -0
  1876. package/extensions/msteams/src/errors.ts +190 -0
  1877. package/extensions/msteams/src/file-consent-helpers.ts +73 -0
  1878. package/extensions/msteams/src/file-consent.ts +126 -0
  1879. package/extensions/msteams/src/file-lock.ts +1 -0
  1880. package/extensions/msteams/src/graph-chat.ts +53 -0
  1881. package/extensions/msteams/src/graph-upload.ts +452 -0
  1882. package/extensions/msteams/src/graph-users.ts +29 -0
  1883. package/extensions/msteams/src/graph.ts +81 -0
  1884. package/extensions/msteams/src/inbound.ts +48 -0
  1885. package/extensions/msteams/src/index.ts +4 -0
  1886. package/extensions/msteams/src/media-helpers.ts +105 -0
  1887. package/extensions/msteams/src/mentions.ts +114 -0
  1888. package/extensions/msteams/src/messenger.ts +484 -0
  1889. package/extensions/msteams/src/monitor-handler/inbound-media.ts +128 -0
  1890. package/extensions/msteams/src/monitor-handler/message-handler.ts +661 -0
  1891. package/extensions/msteams/src/monitor-handler.ts +162 -0
  1892. package/extensions/msteams/src/monitor-types.ts +5 -0
  1893. package/extensions/msteams/src/monitor.ts +305 -0
  1894. package/extensions/msteams/src/onboarding.ts +406 -0
  1895. package/extensions/msteams/src/outbound.ts +46 -0
  1896. package/extensions/msteams/src/pending-uploads.ts +89 -0
  1897. package/extensions/msteams/src/policy.ts +259 -0
  1898. package/extensions/msteams/src/polls-store-memory.ts +32 -0
  1899. package/extensions/msteams/src/polls.ts +315 -0
  1900. package/extensions/msteams/src/probe.ts +94 -0
  1901. package/extensions/msteams/src/reply-dispatcher.ts +132 -0
  1902. package/extensions/msteams/src/resolve-allowlist.ts +198 -0
  1903. package/extensions/msteams/src/runtime.ts +14 -0
  1904. package/extensions/msteams/src/sdk-types.ts +19 -0
  1905. package/extensions/msteams/src/sdk.ts +33 -0
  1906. package/extensions/msteams/src/send-context.ts +164 -0
  1907. package/extensions/msteams/src/send.ts +530 -0
  1908. package/extensions/msteams/src/sent-message-cache.ts +44 -0
  1909. package/extensions/msteams/src/storage.ts +25 -0
  1910. package/extensions/msteams/src/store-fs.ts +44 -0
  1911. package/extensions/msteams/src/test-runtime.ts +16 -0
  1912. package/extensions/msteams/src/token-response.ts +11 -0
  1913. package/extensions/msteams/src/token.ts +19 -0
  1914. package/extensions/nextcloud-talk/index.ts +17 -0
  1915. package/extensions/nextcloud-talk/package.json +30 -0
  1916. package/extensions/nextcloud-talk/remoteclaw.plugin.json +9 -0
  1917. package/extensions/nextcloud-talk/src/accounts.ts +170 -0
  1918. package/extensions/nextcloud-talk/src/channel.ts +416 -0
  1919. package/extensions/nextcloud-talk/src/config-schema.ts +72 -0
  1920. package/extensions/nextcloud-talk/src/format.ts +79 -0
  1921. package/extensions/nextcloud-talk/src/inbound.ts +343 -0
  1922. package/extensions/nextcloud-talk/src/monitor.ts +275 -0
  1923. package/extensions/nextcloud-talk/src/normalize.ts +39 -0
  1924. package/extensions/nextcloud-talk/src/onboarding.ts +349 -0
  1925. package/extensions/nextcloud-talk/src/policy.ts +180 -0
  1926. package/extensions/nextcloud-talk/src/room-info.ts +125 -0
  1927. package/extensions/nextcloud-talk/src/runtime.ts +14 -0
  1928. package/extensions/nextcloud-talk/src/send.ts +215 -0
  1929. package/extensions/nextcloud-talk/src/signature.ts +72 -0
  1930. package/extensions/nextcloud-talk/src/types.ts +185 -0
  1931. package/extensions/nostr/CHANGELOG.md +44 -0
  1932. package/extensions/nostr/README.md +136 -0
  1933. package/extensions/nostr/index.ts +68 -0
  1934. package/extensions/nostr/package.json +30 -0
  1935. package/extensions/nostr/remoteclaw.plugin.json +9 -0
  1936. package/extensions/nostr/src/channel.ts +345 -0
  1937. package/extensions/nostr/src/config-schema.ts +90 -0
  1938. package/extensions/nostr/src/metrics.ts +458 -0
  1939. package/extensions/nostr/src/nostr-bus.ts +719 -0
  1940. package/extensions/nostr/src/nostr-profile-http.ts +519 -0
  1941. package/extensions/nostr/src/nostr-profile-import.ts +262 -0
  1942. package/extensions/nostr/src/nostr-profile.ts +277 -0
  1943. package/extensions/nostr/src/nostr-state-store.ts +226 -0
  1944. package/extensions/nostr/src/runtime.ts +14 -0
  1945. package/extensions/nostr/src/seen-tracker.ts +289 -0
  1946. package/extensions/nostr/src/types.ts +101 -0
  1947. package/extensions/phone-control/index.ts +421 -0
  1948. package/extensions/phone-control/remoteclaw.plugin.json +10 -0
  1949. package/extensions/shared/resolve-target-test-helpers.ts +66 -0
  1950. package/extensions/signal/index.ts +17 -0
  1951. package/extensions/signal/package.json +12 -0
  1952. package/extensions/signal/remoteclaw.plugin.json +9 -0
  1953. package/extensions/signal/src/channel.ts +299 -0
  1954. package/extensions/signal/src/runtime.ts +14 -0
  1955. package/extensions/slack/index.ts +17 -0
  1956. package/extensions/slack/package.json +12 -0
  1957. package/extensions/slack/remoteclaw.plugin.json +9 -0
  1958. package/extensions/slack/src/channel.ts +421 -0
  1959. package/extensions/slack/src/runtime.ts +14 -0
  1960. package/extensions/synology-chat/index.ts +17 -0
  1961. package/extensions/synology-chat/package.json +28 -0
  1962. package/extensions/synology-chat/remoteclaw.plugin.json +9 -0
  1963. package/extensions/synology-chat/src/accounts.ts +87 -0
  1964. package/extensions/synology-chat/src/channel.ts +347 -0
  1965. package/extensions/synology-chat/src/client.ts +142 -0
  1966. package/extensions/synology-chat/src/runtime.ts +20 -0
  1967. package/extensions/synology-chat/src/security.ts +140 -0
  1968. package/extensions/synology-chat/src/types.ts +60 -0
  1969. package/extensions/synology-chat/src/webhook-handler.ts +221 -0
  1970. package/extensions/talk-voice/index.ts +150 -0
  1971. package/extensions/talk-voice/remoteclaw.plugin.json +10 -0
  1972. package/extensions/telegram/index.ts +17 -0
  1973. package/extensions/telegram/package.json +12 -0
  1974. package/extensions/telegram/remoteclaw.plugin.json +9 -0
  1975. package/extensions/telegram/src/channel.ts +569 -0
  1976. package/extensions/telegram/src/runtime.ts +14 -0
  1977. package/extensions/test-utils/runtime-env.ts +12 -0
  1978. package/extensions/thread-ownership/index.ts +133 -0
  1979. package/extensions/thread-ownership/remoteclaw.plugin.json +28 -0
  1980. package/extensions/tlon/README.md +5 -0
  1981. package/extensions/tlon/index.ts +17 -0
  1982. package/extensions/tlon/package.json +29 -0
  1983. package/extensions/tlon/remoteclaw.plugin.json +9 -0
  1984. package/extensions/tlon/src/account-fields.ts +25 -0
  1985. package/extensions/tlon/src/channel.ts +384 -0
  1986. package/extensions/tlon/src/config-schema.ts +41 -0
  1987. package/extensions/tlon/src/monitor/discovery.ts +78 -0
  1988. package/extensions/tlon/src/monitor/history.ts +92 -0
  1989. package/extensions/tlon/src/monitor/index.ts +596 -0
  1990. package/extensions/tlon/src/monitor/processed-messages.ts +33 -0
  1991. package/extensions/tlon/src/monitor/utils.ts +106 -0
  1992. package/extensions/tlon/src/onboarding.ts +229 -0
  1993. package/extensions/tlon/src/runtime.ts +14 -0
  1994. package/extensions/tlon/src/targets.ts +89 -0
  1995. package/extensions/tlon/src/types.ts +99 -0
  1996. package/extensions/tlon/src/urbit/auth.ts +48 -0
  1997. package/extensions/tlon/src/urbit/base-url.ts +57 -0
  1998. package/extensions/tlon/src/urbit/channel-client.ts +158 -0
  1999. package/extensions/tlon/src/urbit/channel-ops.ts +164 -0
  2000. package/extensions/tlon/src/urbit/context.ts +47 -0
  2001. package/extensions/tlon/src/urbit/errors.ts +51 -0
  2002. package/extensions/tlon/src/urbit/fetch.ts +39 -0
  2003. package/extensions/tlon/src/urbit/send.ts +131 -0
  2004. package/extensions/tlon/src/urbit/sse-client.ts +431 -0
  2005. package/extensions/twitch/CHANGELOG.md +39 -0
  2006. package/extensions/twitch/README.md +89 -0
  2007. package/extensions/twitch/index.ts +20 -0
  2008. package/extensions/twitch/package.json +17 -0
  2009. package/extensions/twitch/remoteclaw.plugin.json +9 -0
  2010. package/extensions/twitch/src/access-control.ts +166 -0
  2011. package/extensions/twitch/src/actions.ts +174 -0
  2012. package/extensions/twitch/src/client-manager-registry.ts +115 -0
  2013. package/extensions/twitch/src/config-schema.ts +84 -0
  2014. package/extensions/twitch/src/config.ts +116 -0
  2015. package/extensions/twitch/src/monitor.ts +273 -0
  2016. package/extensions/twitch/src/onboarding.ts +417 -0
  2017. package/extensions/twitch/src/outbound.ts +187 -0
  2018. package/extensions/twitch/src/plugin.ts +274 -0
  2019. package/extensions/twitch/src/probe.ts +119 -0
  2020. package/extensions/twitch/src/resolver.ts +137 -0
  2021. package/extensions/twitch/src/runtime.ts +14 -0
  2022. package/extensions/twitch/src/send.ts +136 -0
  2023. package/extensions/twitch/src/status.ts +179 -0
  2024. package/extensions/twitch/src/test-fixtures.ts +30 -0
  2025. package/extensions/twitch/src/token.ts +94 -0
  2026. package/extensions/twitch/src/twitch-client.ts +277 -0
  2027. package/extensions/twitch/src/types.ts +141 -0
  2028. package/extensions/twitch/src/utils/markdown.ts +98 -0
  2029. package/extensions/twitch/src/utils/twitch.ts +80 -0
  2030. package/extensions/voice-call/CHANGELOG.md +49 -0
  2031. package/extensions/voice-call/README.md +181 -0
  2032. package/extensions/voice-call/index.ts +512 -0
  2033. package/extensions/voice-call/package.json +16 -0
  2034. package/extensions/voice-call/remoteclaw.plugin.json +559 -0
  2035. package/extensions/voice-call/src/allowlist.ts +19 -0
  2036. package/extensions/voice-call/src/cli.ts +380 -0
  2037. package/extensions/voice-call/src/config.ts +477 -0
  2038. package/extensions/voice-call/src/core-bridge.ts +170 -0
  2039. package/extensions/voice-call/src/manager/context.ts +41 -0
  2040. package/extensions/voice-call/src/manager/events.ts +242 -0
  2041. package/extensions/voice-call/src/manager/lookup.ts +35 -0
  2042. package/extensions/voice-call/src/manager/outbound.ts +380 -0
  2043. package/extensions/voice-call/src/manager/state.ts +48 -0
  2044. package/extensions/voice-call/src/manager/store.ts +94 -0
  2045. package/extensions/voice-call/src/manager/timers.ts +112 -0
  2046. package/extensions/voice-call/src/manager/twiml.ts +9 -0
  2047. package/extensions/voice-call/src/manager.ts +209 -0
  2048. package/extensions/voice-call/src/media-stream.ts +527 -0
  2049. package/extensions/voice-call/src/providers/base.ts +67 -0
  2050. package/extensions/voice-call/src/providers/index.ts +10 -0
  2051. package/extensions/voice-call/src/providers/mock.ts +165 -0
  2052. package/extensions/voice-call/src/providers/plivo.ts +560 -0
  2053. package/extensions/voice-call/src/providers/stt-openai-realtime.ts +311 -0
  2054. package/extensions/voice-call/src/providers/telnyx.ts +318 -0
  2055. package/extensions/voice-call/src/providers/tts-openai.ts +259 -0
  2056. package/extensions/voice-call/src/providers/twilio/api.ts +42 -0
  2057. package/extensions/voice-call/src/providers/twilio/webhook.ts +33 -0
  2058. package/extensions/voice-call/src/providers/twilio.ts +688 -0
  2059. package/extensions/voice-call/src/response-generator.ts +174 -0
  2060. package/extensions/voice-call/src/runtime.ts +217 -0
  2061. package/extensions/voice-call/src/telephony-audio.ts +90 -0
  2062. package/extensions/voice-call/src/telephony-tts.ts +106 -0
  2063. package/extensions/voice-call/src/tunnel.ts +314 -0
  2064. package/extensions/voice-call/src/types.ts +280 -0
  2065. package/extensions/voice-call/src/utils.ts +14 -0
  2066. package/extensions/voice-call/src/voice-mapping.ts +67 -0
  2067. package/extensions/voice-call/src/webhook-security.ts +880 -0
  2068. package/extensions/voice-call/src/webhook.ts +556 -0
  2069. package/extensions/whatsapp/index.ts +17 -0
  2070. package/extensions/whatsapp/package.json +12 -0
  2071. package/extensions/whatsapp/remoteclaw.plugin.json +9 -0
  2072. package/extensions/whatsapp/src/channel.ts +459 -0
  2073. package/extensions/whatsapp/src/runtime.ts +14 -0
  2074. package/extensions/zalo/CHANGELOG.md +29 -0
  2075. package/extensions/zalo/README.md +50 -0
  2076. package/extensions/zalo/index.ts +19 -0
  2077. package/extensions/zalo/package.json +32 -0
  2078. package/extensions/zalo/remoteclaw.plugin.json +9 -0
  2079. package/extensions/zalo/src/accounts.ts +82 -0
  2080. package/extensions/zalo/src/actions.ts +56 -0
  2081. package/extensions/zalo/src/api.ts +208 -0
  2082. package/extensions/zalo/src/channel.ts +398 -0
  2083. package/extensions/zalo/src/config-schema.ts +27 -0
  2084. package/extensions/zalo/src/group-access.ts +48 -0
  2085. package/extensions/zalo/src/monitor.ts +675 -0
  2086. package/extensions/zalo/src/monitor.webhook.ts +219 -0
  2087. package/extensions/zalo/src/onboarding.ts +398 -0
  2088. package/extensions/zalo/src/probe.ts +45 -0
  2089. package/extensions/zalo/src/proxy.ts +24 -0
  2090. package/extensions/zalo/src/runtime.ts +14 -0
  2091. package/extensions/zalo/src/send.ts +124 -0
  2092. package/extensions/zalo/src/status-issues.ts +53 -0
  2093. package/extensions/zalo/src/token.ts +62 -0
  2094. package/extensions/zalo/src/types.ts +48 -0
  2095. package/extensions/zalouser/CHANGELOG.md +31 -0
  2096. package/extensions/zalouser/README.md +225 -0
  2097. package/extensions/zalouser/index.ts +31 -0
  2098. package/extensions/zalouser/package.json +32 -0
  2099. package/extensions/zalouser/remoteclaw.plugin.json +9 -0
  2100. package/extensions/zalouser/src/accounts.ts +138 -0
  2101. package/extensions/zalouser/src/channel.ts +652 -0
  2102. package/extensions/zalouser/src/config-schema.ts +28 -0
  2103. package/extensions/zalouser/src/monitor.ts +619 -0
  2104. package/extensions/zalouser/src/onboarding.ts +428 -0
  2105. package/extensions/zalouser/src/probe.ts +27 -0
  2106. package/extensions/zalouser/src/runtime.ts +14 -0
  2107. package/extensions/zalouser/src/send.ts +141 -0
  2108. package/extensions/zalouser/src/status-issues.ts +89 -0
  2109. package/extensions/zalouser/src/tool.ts +166 -0
  2110. package/extensions/zalouser/src/types.ts +105 -0
  2111. package/extensions/zalouser/src/zca.ts +198 -0
  2112. package/package.json +251 -15
  2113. package/remoteclaw.mjs +56 -0
  2114. package/index.js +0 -4
@@ -0,0 +1,2136 @@
1
+ import { M as shouldLogVerbose, R as getChildLogger, S as toWhatsappJid, d as jidToE164, f as normalizeE164, g as resolveJidToE164, k as logVerbose, r as clamp, u as isSelfChatMode, x as sleep } from "./utils-LBKvDoPx.js";
2
+ import { A as buildMentionRegexes, N as normalizeMentionText, Q as parseActivationCommand, Z as normalizeGroupActivation, _ as shouldComputeCommandAuthorized, h as hasControlCommand, t as getReplyFromConfig } from "./reply-CCu_DY64.js";
3
+ import { t as createSubsystemLogger } from "./subsystem-COd61u0P.js";
4
+ import { n as defaultRuntime } from "./runtime-DJNp29jv.js";
5
+ import { a as buildGroupHistoryKey, n as DEFAULT_MAIN_KEY, r as buildAgentMainSessionKey, s as normalizeAgentId } from "./session-key-5YLnn_qf.js";
6
+ import { i as loadConfig } from "./config-D5XU45KD.js";
7
+ import { c as resolveChannelGroupPolicy, l as resolveChannelGroupRequireMention } from "./dock-CQuu41bw.js";
8
+ import { t as finalizeInboundContext } from "./inbound-context-CPkkQW0i.js";
9
+ import { f as registerUnhandledRejectionHandler } from "./runner-yVJ4HB2K.js";
10
+ import { t as getAgentScopedMediaLocalRoots } from "./local-roots-nImrw2WR.js";
11
+ import { t as formatCliCommand } from "./command-format-DgXcqxBt.js";
12
+ import { i as resolveWhatsAppAccount, p as readWebSelfId, s as getWebAuthAgeMs } from "./accounts-BFy_Z3od.js";
13
+ import { h as enqueueSystemEvent } from "./targets-DfqPGOmM.js";
14
+ import { i as readChannelAllowFromStore, s as upsertChannelPairingRequest } from "./pairing-store-BxdqFZGK.js";
15
+ import { m as resolveStorePath } from "./chat-envelope-el7Uo-Fe.js";
16
+ import { a as recordSessionMetaFromInbound, c as updateLastRoute, i as readSessionUpdatedAt, n as loadSessionStore, rt as resolveGroupSessionKey } from "./store-SusmIfz7.js";
17
+ import { c as resolveIdentityNamePrefix, l as resolveMessagePrefix } from "./response-prefix-template-rVZQOViK.js";
18
+ import { n as recordChannelActivity } from "./channel-activity-BaCNOZpP.js";
19
+ import { i as loadWebMedia } from "./ir-BpaAMTfW.js";
20
+ import { c as resolveChunkMode, i as chunkMarkdownTextWithMode, l as resolveTextChunkLimit } from "./chunk-D0Y_w4oX.js";
21
+ import { n as resolveMarkdownTableMode } from "./markdown-tables-CrmghPAr.js";
22
+ import { t as convertMarkdownTables } from "./tables-TWiml6b1.js";
23
+ import { i as markdownToWhatsApp, r as sendReactionWhatsApp } from "./outbound-BYlZshIw.js";
24
+ import { r as setActiveWebListener } from "./active-listener-VzhWW8W6.js";
25
+ import { C as computeBackoff, S as resolveInboundDebounceMs, _ as buildHistoryContextFromEntries, a as formatInboundEnvelope, b as recordPendingHistoryEntryIfEnabled, c as resolveMentionGating, g as DEFAULT_GROUP_HISTORY_LIMIT, h as warnMissingProviderGroupPolicyFallbackOnce, m as resolveOpenProviderRuntimeGroupPolicy, p as resolveDefaultGroupPolicy, r as shouldAckReactionForWhatsApp, s as resolveEnvelopeFormatOptions, u as buildPairingReply, w as sleepWithAbort, x as createInboundDebouncer } from "./ack-reactions-BWVjL4H6.js";
26
+ import { i as waitForWaConnection, n as formatError, r as getStatusCode, t as createWaSocket } from "./session-xKIW6gL2.js";
27
+ import { n as formatDurationPrecise } from "./format-duration-Ct-yiwkS.js";
28
+ import { n as resolveAgentRoute, t as buildAgentSessionKey } from "./resolve-route-DGEgTEif.js";
29
+ import { l as createDedupeCache, t as dispatchReplyWithBufferedBlockDispatcher } from "./provider-dispatcher-Bfauw6zz.js";
30
+ import { n as toLocationContext, t as formatLocationText } from "./location-DBWCGNLq.js";
31
+ import { n as saveMediaBuffer } from "./store-C3tOpizT.js";
32
+ import { t as createReplyPrefixOptions } from "./reply-prefix-Q4DOJSn_.js";
33
+ import { randomUUID } from "node:crypto";
34
+ import { DisconnectReason, downloadMediaMessage, extractMessageContent, getContentType, isJidGroup, normalizeMessageContent } from "@whiskeysockets/baileys";
35
+
36
+ //#region src/web/auto-reply/constants.ts
37
+ const DEFAULT_WEB_MEDIA_BYTES = 5 * 1024 * 1024;
38
+
39
+ //#endregion
40
+ //#region src/web/reconnect.ts
41
+ const DEFAULT_HEARTBEAT_SECONDS = 60;
42
+ const DEFAULT_RECONNECT_POLICY = {
43
+ initialMs: 2e3,
44
+ maxMs: 3e4,
45
+ factor: 1.8,
46
+ jitter: .25,
47
+ maxAttempts: 12
48
+ };
49
+ function resolveHeartbeatSeconds(cfg, overrideSeconds) {
50
+ const candidate = overrideSeconds ?? cfg.web?.heartbeatSeconds;
51
+ if (typeof candidate === "number" && candidate > 0) return candidate;
52
+ return DEFAULT_HEARTBEAT_SECONDS;
53
+ }
54
+ function resolveReconnectPolicy(cfg, overrides) {
55
+ const reconnectOverrides = cfg.web?.reconnect ?? {};
56
+ const overrideConfig = overrides ?? {};
57
+ const merged = {
58
+ ...DEFAULT_RECONNECT_POLICY,
59
+ ...reconnectOverrides,
60
+ ...overrideConfig
61
+ };
62
+ merged.initialMs = Math.max(250, merged.initialMs);
63
+ merged.maxMs = Math.max(merged.initialMs, merged.maxMs);
64
+ merged.factor = clamp(merged.factor, 1.1, 10);
65
+ merged.jitter = clamp(merged.jitter, 0, 1);
66
+ merged.maxAttempts = Math.max(0, Math.floor(merged.maxAttempts));
67
+ return merged;
68
+ }
69
+ function newConnectionId() {
70
+ return randomUUID();
71
+ }
72
+
73
+ //#endregion
74
+ //#region src/web/auto-reply/loggers.ts
75
+ const whatsappLog = createSubsystemLogger("gateway/channels/whatsapp");
76
+ const whatsappInboundLog = whatsappLog.child("inbound");
77
+ const whatsappOutboundLog = whatsappLog.child("outbound");
78
+ const whatsappHeartbeatLog = whatsappLog.child("heartbeat");
79
+
80
+ //#endregion
81
+ //#region src/cli/wait.ts
82
+ function waitForever() {
83
+ setInterval(() => {}, 1e6).unref();
84
+ return new Promise(() => {});
85
+ }
86
+
87
+ //#endregion
88
+ //#region src/web/inbound/dedupe.ts
89
+ const recentInboundMessages = createDedupeCache({
90
+ ttlMs: 20 * 6e4,
91
+ maxSize: 5e3
92
+ });
93
+ function isRecentInboundMessage(key) {
94
+ return recentInboundMessages.check(key);
95
+ }
96
+
97
+ //#endregion
98
+ //#region src/web/vcard.ts
99
+ const ALLOWED_VCARD_KEYS = new Set([
100
+ "FN",
101
+ "N",
102
+ "TEL"
103
+ ]);
104
+ function parseVcard(vcard) {
105
+ if (!vcard) return { phones: [] };
106
+ const lines = vcard.split(/\r?\n/);
107
+ let nameFromN;
108
+ let nameFromFn;
109
+ const phones = [];
110
+ for (const rawLine of lines) {
111
+ const line = rawLine.trim();
112
+ if (!line) continue;
113
+ const colonIndex = line.indexOf(":");
114
+ if (colonIndex === -1) continue;
115
+ const key = line.slice(0, colonIndex).toUpperCase();
116
+ const rawValue = line.slice(colonIndex + 1).trim();
117
+ if (!rawValue) continue;
118
+ const baseKey = normalizeVcardKey(key);
119
+ if (!baseKey || !ALLOWED_VCARD_KEYS.has(baseKey)) continue;
120
+ const value = cleanVcardValue(rawValue);
121
+ if (!value) continue;
122
+ if (baseKey === "FN" && !nameFromFn) {
123
+ nameFromFn = normalizeVcardName(value);
124
+ continue;
125
+ }
126
+ if (baseKey === "N" && !nameFromN) {
127
+ nameFromN = normalizeVcardName(value);
128
+ continue;
129
+ }
130
+ if (baseKey === "TEL") {
131
+ const phone = normalizeVcardPhone(value);
132
+ if (phone) phones.push(phone);
133
+ }
134
+ }
135
+ return {
136
+ name: nameFromFn ?? nameFromN,
137
+ phones
138
+ };
139
+ }
140
+ function normalizeVcardKey(key) {
141
+ const [primary] = key.split(";");
142
+ if (!primary) return;
143
+ const segments = primary.split(".");
144
+ return segments[segments.length - 1] || void 0;
145
+ }
146
+ function cleanVcardValue(value) {
147
+ return value.replace(/\\n/gi, " ").replace(/\\,/g, ",").replace(/\\;/g, ";").trim();
148
+ }
149
+ function normalizeVcardName(value) {
150
+ return value.replace(/;/g, " ").replace(/\s+/g, " ").trim();
151
+ }
152
+ function normalizeVcardPhone(value) {
153
+ const trimmed = value.trim();
154
+ if (!trimmed) return "";
155
+ if (trimmed.toLowerCase().startsWith("tel:")) return trimmed.slice(4).trim();
156
+ return trimmed;
157
+ }
158
+
159
+ //#endregion
160
+ //#region src/web/inbound/extract.ts
161
+ function unwrapMessage$1(message) {
162
+ return normalizeMessageContent(message);
163
+ }
164
+ function extractContextInfo(message) {
165
+ if (!message) return;
166
+ const contentType = getContentType(message);
167
+ const candidate = contentType ? message[contentType] : void 0;
168
+ const contextInfo = candidate && typeof candidate === "object" && "contextInfo" in candidate ? candidate.contextInfo : void 0;
169
+ if (contextInfo) return contextInfo;
170
+ const fallback = message.extendedTextMessage?.contextInfo ?? message.imageMessage?.contextInfo ?? message.videoMessage?.contextInfo ?? message.documentMessage?.contextInfo ?? message.audioMessage?.contextInfo ?? message.stickerMessage?.contextInfo ?? message.buttonsResponseMessage?.contextInfo ?? message.listResponseMessage?.contextInfo ?? message.templateButtonReplyMessage?.contextInfo ?? message.interactiveResponseMessage?.contextInfo ?? message.buttonsMessage?.contextInfo ?? message.listMessage?.contextInfo;
171
+ if (fallback) return fallback;
172
+ for (const value of Object.values(message)) {
173
+ if (!value || typeof value !== "object") continue;
174
+ if (!("contextInfo" in value)) continue;
175
+ const candidateContext = value.contextInfo;
176
+ if (candidateContext) return candidateContext;
177
+ }
178
+ }
179
+ function extractMentionedJids(rawMessage) {
180
+ const message = unwrapMessage$1(rawMessage);
181
+ if (!message) return;
182
+ const flattened = [
183
+ message.extendedTextMessage?.contextInfo?.mentionedJid,
184
+ message.extendedTextMessage?.contextInfo?.quotedMessage?.extendedTextMessage?.contextInfo?.mentionedJid,
185
+ message.imageMessage?.contextInfo?.mentionedJid,
186
+ message.videoMessage?.contextInfo?.mentionedJid,
187
+ message.documentMessage?.contextInfo?.mentionedJid,
188
+ message.audioMessage?.contextInfo?.mentionedJid,
189
+ message.stickerMessage?.contextInfo?.mentionedJid,
190
+ message.buttonsResponseMessage?.contextInfo?.mentionedJid,
191
+ message.listResponseMessage?.contextInfo?.mentionedJid
192
+ ].flatMap((arr) => arr ?? []).filter(Boolean);
193
+ if (flattened.length === 0) return;
194
+ return Array.from(new Set(flattened));
195
+ }
196
+ function extractText(rawMessage) {
197
+ const message = unwrapMessage$1(rawMessage);
198
+ if (!message) return;
199
+ const extracted = extractMessageContent(message);
200
+ const candidates = [message, extracted && extracted !== message ? extracted : void 0];
201
+ for (const candidate of candidates) {
202
+ if (!candidate) continue;
203
+ if (typeof candidate.conversation === "string" && candidate.conversation.trim()) return candidate.conversation.trim();
204
+ const extended = candidate.extendedTextMessage?.text;
205
+ if (extended?.trim()) return extended.trim();
206
+ const caption = candidate.imageMessage?.caption ?? candidate.videoMessage?.caption ?? candidate.documentMessage?.caption;
207
+ if (caption?.trim()) return caption.trim();
208
+ }
209
+ const contactPlaceholder = extractContactPlaceholder(message) ?? (extracted && extracted !== message ? extractContactPlaceholder(extracted) : void 0);
210
+ if (contactPlaceholder) return contactPlaceholder;
211
+ }
212
+ function extractMediaPlaceholder(rawMessage) {
213
+ const message = unwrapMessage$1(rawMessage);
214
+ if (!message) return;
215
+ if (message.imageMessage) return "<media:image>";
216
+ if (message.videoMessage) return "<media:video>";
217
+ if (message.audioMessage) return "<media:audio>";
218
+ if (message.documentMessage) return "<media:document>";
219
+ if (message.stickerMessage) return "<media:sticker>";
220
+ }
221
+ function extractContactPlaceholder(rawMessage) {
222
+ const message = unwrapMessage$1(rawMessage);
223
+ if (!message) return;
224
+ const contact = message.contactMessage ?? void 0;
225
+ if (contact) {
226
+ const { name, phones } = describeContact({
227
+ displayName: contact.displayName,
228
+ vcard: contact.vcard
229
+ });
230
+ return formatContactPlaceholder(name, phones);
231
+ }
232
+ const contactsArray = message.contactsArrayMessage?.contacts ?? void 0;
233
+ if (!contactsArray || contactsArray.length === 0) return;
234
+ return formatContactsPlaceholder(contactsArray.map((entry) => describeContact({
235
+ displayName: entry.displayName,
236
+ vcard: entry.vcard
237
+ })).map((entry) => formatContactLabel(entry.name, entry.phones)).filter((value) => Boolean(value)), contactsArray.length);
238
+ }
239
+ function describeContact(input) {
240
+ const displayName = (input.displayName ?? "").trim();
241
+ const parsed = parseVcard(input.vcard ?? void 0);
242
+ return {
243
+ name: displayName || parsed.name,
244
+ phones: parsed.phones
245
+ };
246
+ }
247
+ function formatContactPlaceholder(name, phones) {
248
+ const label = formatContactLabel(name, phones);
249
+ if (!label) return "<contact>";
250
+ return `<contact: ${label}>`;
251
+ }
252
+ function formatContactsPlaceholder(labels, total) {
253
+ const cleaned = labels.map((label) => label.trim()).filter(Boolean);
254
+ if (cleaned.length === 0) return `<contacts: ${total} ${total === 1 ? "contact" : "contacts"}>`;
255
+ const remaining = Math.max(total - cleaned.length, 0);
256
+ const suffix = remaining > 0 ? ` +${remaining} more` : "";
257
+ return `<contacts: ${cleaned.join(", ")}${suffix}>`;
258
+ }
259
+ function formatContactLabel(name, phones) {
260
+ const parts = [name, formatPhoneList(phones)].filter((value) => Boolean(value));
261
+ if (parts.length === 0) return;
262
+ return parts.join(", ");
263
+ }
264
+ function formatPhoneList(phones) {
265
+ const cleaned = phones?.map((phone) => phone.trim()).filter(Boolean) ?? [];
266
+ if (cleaned.length === 0) return;
267
+ const { shown, remaining } = summarizeList(cleaned, cleaned.length, 1);
268
+ const [primary] = shown;
269
+ if (!primary) return;
270
+ if (remaining === 0) return primary;
271
+ return `${primary} (+${remaining} more)`;
272
+ }
273
+ function summarizeList(values, total, maxShown) {
274
+ const shown = values.slice(0, maxShown);
275
+ return {
276
+ shown,
277
+ remaining: Math.max(total - shown.length, 0)
278
+ };
279
+ }
280
+ function extractLocationData(rawMessage) {
281
+ const message = unwrapMessage$1(rawMessage);
282
+ if (!message) return null;
283
+ const live = message.liveLocationMessage ?? void 0;
284
+ if (live) {
285
+ const latitudeRaw = live.degreesLatitude;
286
+ const longitudeRaw = live.degreesLongitude;
287
+ if (latitudeRaw != null && longitudeRaw != null) {
288
+ const latitude = Number(latitudeRaw);
289
+ const longitude = Number(longitudeRaw);
290
+ if (Number.isFinite(latitude) && Number.isFinite(longitude)) return {
291
+ latitude,
292
+ longitude,
293
+ accuracy: live.accuracyInMeters ?? void 0,
294
+ caption: live.caption ?? void 0,
295
+ source: "live",
296
+ isLive: true
297
+ };
298
+ }
299
+ }
300
+ const location = message.locationMessage ?? void 0;
301
+ if (location) {
302
+ const latitudeRaw = location.degreesLatitude;
303
+ const longitudeRaw = location.degreesLongitude;
304
+ if (latitudeRaw != null && longitudeRaw != null) {
305
+ const latitude = Number(latitudeRaw);
306
+ const longitude = Number(longitudeRaw);
307
+ if (Number.isFinite(latitude) && Number.isFinite(longitude)) {
308
+ const isLive = Boolean(location.isLive);
309
+ return {
310
+ latitude,
311
+ longitude,
312
+ accuracy: location.accuracyInMeters ?? void 0,
313
+ name: location.name ?? void 0,
314
+ address: location.address ?? void 0,
315
+ caption: location.comment ?? void 0,
316
+ source: isLive ? "live" : location.name || location.address ? "place" : "pin",
317
+ isLive
318
+ };
319
+ }
320
+ }
321
+ }
322
+ return null;
323
+ }
324
+ function describeReplyContext(rawMessage) {
325
+ const message = unwrapMessage$1(rawMessage);
326
+ if (!message) return null;
327
+ const contextInfo = extractContextInfo(message);
328
+ const quoted = normalizeMessageContent(contextInfo?.quotedMessage);
329
+ if (!quoted) return null;
330
+ const location = extractLocationData(quoted);
331
+ const locationText = location ? formatLocationText(location) : void 0;
332
+ let body = [extractText(quoted), locationText].filter(Boolean).join("\n").trim();
333
+ if (!body) body = extractMediaPlaceholder(quoted);
334
+ if (!body) {
335
+ const quotedType = quoted ? getContentType(quoted) : void 0;
336
+ logVerbose(`Quoted message missing extractable body${quotedType ? ` (type ${quotedType})` : ""}`);
337
+ return null;
338
+ }
339
+ const senderJid = contextInfo?.participant ?? void 0;
340
+ const senderE164 = senderJid ? jidToE164(senderJid) ?? senderJid : void 0;
341
+ const sender = senderE164 ?? "unknown sender";
342
+ return {
343
+ id: contextInfo?.stanzaId ? String(contextInfo.stanzaId) : void 0,
344
+ body,
345
+ sender,
346
+ senderJid,
347
+ senderE164
348
+ };
349
+ }
350
+
351
+ //#endregion
352
+ //#region src/web/inbound/access-control.ts
353
+ const PAIRING_REPLY_HISTORY_GRACE_MS = 3e4;
354
+ function resolveWhatsAppRuntimeGroupPolicy(params) {
355
+ return resolveOpenProviderRuntimeGroupPolicy({
356
+ providerConfigPresent: params.providerConfigPresent,
357
+ groupPolicy: params.groupPolicy,
358
+ defaultGroupPolicy: params.defaultGroupPolicy
359
+ });
360
+ }
361
+ async function checkInboundAccessControl(params) {
362
+ const cfg = loadConfig();
363
+ const account = resolveWhatsAppAccount({
364
+ cfg,
365
+ accountId: params.accountId
366
+ });
367
+ const dmPolicy = account.dmPolicy ?? "pairing";
368
+ const configuredAllowFrom = account.allowFrom;
369
+ const storeAllowFrom = dmPolicy === "allowlist" ? [] : await readChannelAllowFromStore("whatsapp", process.env, account.accountId).catch(() => []);
370
+ const combinedAllowFrom = Array.from(new Set([...configuredAllowFrom ?? [], ...storeAllowFrom]));
371
+ const defaultAllowFrom = combinedAllowFrom.length === 0 && params.selfE164 ? [params.selfE164] : void 0;
372
+ const allowFrom = combinedAllowFrom.length > 0 ? combinedAllowFrom : defaultAllowFrom;
373
+ const groupAllowFrom = account.groupAllowFrom ?? (configuredAllowFrom && configuredAllowFrom.length > 0 ? configuredAllowFrom : void 0);
374
+ const isSamePhone = params.from === params.selfE164;
375
+ const isSelfChat = account.selfChatMode ?? isSelfChatMode(params.selfE164, configuredAllowFrom);
376
+ const pairingGraceMs = typeof params.pairingGraceMs === "number" && params.pairingGraceMs > 0 ? params.pairingGraceMs : PAIRING_REPLY_HISTORY_GRACE_MS;
377
+ const suppressPairingReply = typeof params.connectedAtMs === "number" && typeof params.messageTimestampMs === "number" && params.messageTimestampMs < params.connectedAtMs - pairingGraceMs;
378
+ const dmHasWildcard = allowFrom?.includes("*") ?? false;
379
+ const normalizedAllowFrom = allowFrom && allowFrom.length > 0 ? allowFrom.filter((entry) => entry !== "*").map(normalizeE164) : [];
380
+ const groupHasWildcard = groupAllowFrom?.includes("*") ?? false;
381
+ const normalizedGroupAllowFrom = groupAllowFrom && groupAllowFrom.length > 0 ? groupAllowFrom.filter((entry) => entry !== "*").map(normalizeE164) : [];
382
+ const defaultGroupPolicy = resolveDefaultGroupPolicy(cfg);
383
+ const { groupPolicy, providerMissingFallbackApplied } = resolveWhatsAppRuntimeGroupPolicy({
384
+ providerConfigPresent: cfg.channels?.whatsapp !== void 0,
385
+ groupPolicy: account.groupPolicy,
386
+ defaultGroupPolicy
387
+ });
388
+ warnMissingProviderGroupPolicyFallbackOnce({
389
+ providerMissingFallbackApplied,
390
+ providerKey: "whatsapp",
391
+ accountId: account.accountId,
392
+ log: (message) => logVerbose(message)
393
+ });
394
+ if (params.group && groupPolicy === "disabled") {
395
+ logVerbose("Blocked group message (groupPolicy: disabled)");
396
+ return {
397
+ allowed: false,
398
+ shouldMarkRead: false,
399
+ isSelfChat,
400
+ resolvedAccountId: account.accountId
401
+ };
402
+ }
403
+ if (params.group && groupPolicy === "allowlist") {
404
+ if (!groupAllowFrom || groupAllowFrom.length === 0) {
405
+ logVerbose("Blocked group message (groupPolicy: allowlist, no groupAllowFrom)");
406
+ return {
407
+ allowed: false,
408
+ shouldMarkRead: false,
409
+ isSelfChat,
410
+ resolvedAccountId: account.accountId
411
+ };
412
+ }
413
+ if (!(groupHasWildcard || params.senderE164 != null && normalizedGroupAllowFrom.includes(params.senderE164))) {
414
+ logVerbose(`Blocked group message from ${params.senderE164 ?? "unknown sender"} (groupPolicy: allowlist)`);
415
+ return {
416
+ allowed: false,
417
+ shouldMarkRead: false,
418
+ isSelfChat,
419
+ resolvedAccountId: account.accountId
420
+ };
421
+ }
422
+ }
423
+ if (!params.group) {
424
+ if (params.isFromMe && !isSamePhone) {
425
+ logVerbose("Skipping outbound DM (fromMe); no pairing reply needed.");
426
+ return {
427
+ allowed: false,
428
+ shouldMarkRead: false,
429
+ isSelfChat,
430
+ resolvedAccountId: account.accountId
431
+ };
432
+ }
433
+ if (dmPolicy === "disabled") {
434
+ logVerbose("Blocked dm (dmPolicy: disabled)");
435
+ return {
436
+ allowed: false,
437
+ shouldMarkRead: false,
438
+ isSelfChat,
439
+ resolvedAccountId: account.accountId
440
+ };
441
+ }
442
+ if (dmPolicy !== "open" && !isSamePhone) {
443
+ const candidate = params.from;
444
+ if (!(dmHasWildcard || normalizedAllowFrom.length > 0 && normalizedAllowFrom.includes(candidate))) {
445
+ if (dmPolicy === "pairing") if (suppressPairingReply) logVerbose(`Skipping pairing reply for historical DM from ${candidate}.`);
446
+ else {
447
+ const { code, created } = await upsertChannelPairingRequest({
448
+ channel: "whatsapp",
449
+ id: candidate,
450
+ accountId: account.accountId,
451
+ meta: { name: (params.pushName ?? "").trim() || void 0 }
452
+ });
453
+ if (created) {
454
+ logVerbose(`whatsapp pairing request sender=${candidate} name=${params.pushName ?? "unknown"}`);
455
+ try {
456
+ await params.sock.sendMessage(params.remoteJid, { text: buildPairingReply({
457
+ channel: "whatsapp",
458
+ idLine: `Your WhatsApp phone number: ${candidate}`,
459
+ code
460
+ }) });
461
+ } catch (err) {
462
+ logVerbose(`whatsapp pairing reply failed for ${candidate}: ${String(err)}`);
463
+ }
464
+ }
465
+ }
466
+ else logVerbose(`Blocked unauthorized sender ${candidate} (dmPolicy=${dmPolicy})`);
467
+ return {
468
+ allowed: false,
469
+ shouldMarkRead: false,
470
+ isSelfChat,
471
+ resolvedAccountId: account.accountId
472
+ };
473
+ }
474
+ }
475
+ }
476
+ return {
477
+ allowed: true,
478
+ shouldMarkRead: true,
479
+ isSelfChat,
480
+ resolvedAccountId: account.accountId
481
+ };
482
+ }
483
+
484
+ //#endregion
485
+ //#region src/web/inbound/media.ts
486
+ function unwrapMessage(message) {
487
+ return normalizeMessageContent(message);
488
+ }
489
+ /**
490
+ * Resolve the MIME type for an inbound media message.
491
+ * Falls back to WhatsApp's standard formats when Baileys omits the MIME.
492
+ */
493
+ function resolveMediaMimetype(message) {
494
+ const explicit = message.imageMessage?.mimetype ?? message.videoMessage?.mimetype ?? message.documentMessage?.mimetype ?? message.audioMessage?.mimetype ?? message.stickerMessage?.mimetype ?? void 0;
495
+ if (explicit) return explicit;
496
+ if (message.audioMessage) return "audio/ogg; codecs=opus";
497
+ if (message.imageMessage) return "image/jpeg";
498
+ if (message.videoMessage) return "video/mp4";
499
+ if (message.stickerMessage) return "image/webp";
500
+ }
501
+ async function downloadInboundMedia(msg, sock) {
502
+ const message = unwrapMessage(msg.message);
503
+ if (!message) return;
504
+ const mimetype = resolveMediaMimetype(message);
505
+ const fileName = message.documentMessage?.fileName ?? void 0;
506
+ if (!message.imageMessage && !message.videoMessage && !message.documentMessage && !message.audioMessage && !message.stickerMessage) return;
507
+ try {
508
+ return {
509
+ buffer: await downloadMediaMessage(msg, "buffer", {}, {
510
+ reuploadRequest: sock.updateMediaMessage,
511
+ logger: sock.logger
512
+ }),
513
+ mimetype,
514
+ fileName
515
+ };
516
+ } catch (err) {
517
+ logVerbose(`downloadMediaMessage failed: ${String(err)}`);
518
+ return;
519
+ }
520
+ }
521
+
522
+ //#endregion
523
+ //#region src/web/inbound/send-api.ts
524
+ function recordWhatsAppOutbound(accountId) {
525
+ recordChannelActivity({
526
+ channel: "whatsapp",
527
+ accountId,
528
+ direction: "outbound"
529
+ });
530
+ }
531
+ function resolveOutboundMessageId(result) {
532
+ return typeof result === "object" && result && "key" in result ? String(result.key?.id ?? "unknown") : "unknown";
533
+ }
534
+ function createWebSendApi(params) {
535
+ return {
536
+ sendMessage: async (to, text, mediaBuffer, mediaType, sendOptions) => {
537
+ const jid = toWhatsappJid(to);
538
+ let payload;
539
+ if (mediaBuffer && mediaType) if (mediaType.startsWith("image/")) payload = {
540
+ image: mediaBuffer,
541
+ caption: text || void 0,
542
+ mimetype: mediaType
543
+ };
544
+ else if (mediaType.startsWith("audio/")) payload = {
545
+ audio: mediaBuffer,
546
+ ptt: true,
547
+ mimetype: mediaType
548
+ };
549
+ else if (mediaType.startsWith("video/")) {
550
+ const gifPlayback = sendOptions?.gifPlayback;
551
+ payload = {
552
+ video: mediaBuffer,
553
+ caption: text || void 0,
554
+ mimetype: mediaType,
555
+ ...gifPlayback ? { gifPlayback: true } : {}
556
+ };
557
+ } else payload = {
558
+ document: mediaBuffer,
559
+ fileName: sendOptions?.fileName?.trim() || "file",
560
+ caption: text || void 0,
561
+ mimetype: mediaType
562
+ };
563
+ else payload = { text };
564
+ const result = await params.sock.sendMessage(jid, payload);
565
+ recordWhatsAppOutbound(sendOptions?.accountId ?? params.defaultAccountId);
566
+ return { messageId: resolveOutboundMessageId(result) };
567
+ },
568
+ sendPoll: async (to, poll) => {
569
+ const jid = toWhatsappJid(to);
570
+ const result = await params.sock.sendMessage(jid, { poll: {
571
+ name: poll.question,
572
+ values: poll.options,
573
+ selectableCount: poll.maxSelections ?? 1
574
+ } });
575
+ recordWhatsAppOutbound(params.defaultAccountId);
576
+ return { messageId: resolveOutboundMessageId(result) };
577
+ },
578
+ sendReaction: async (chatJid, messageId, emoji, fromMe, participant) => {
579
+ const jid = toWhatsappJid(chatJid);
580
+ await params.sock.sendMessage(jid, { react: {
581
+ text: emoji,
582
+ key: {
583
+ remoteJid: jid,
584
+ id: messageId,
585
+ fromMe,
586
+ participant: participant ? toWhatsappJid(participant) : void 0
587
+ }
588
+ } });
589
+ },
590
+ sendComposingTo: async (to) => {
591
+ const jid = toWhatsappJid(to);
592
+ await params.sock.sendPresenceUpdate("composing", jid);
593
+ }
594
+ };
595
+ }
596
+
597
+ //#endregion
598
+ //#region src/web/inbound/monitor.ts
599
+ async function monitorWebInbox(options) {
600
+ const inboundLogger = getChildLogger({ module: "web-inbound" });
601
+ const inboundConsoleLog = createSubsystemLogger("gateway/channels/whatsapp").child("inbound");
602
+ const sock = await createWaSocket(false, options.verbose, { authDir: options.authDir });
603
+ await waitForWaConnection(sock);
604
+ const connectedAtMs = Date.now();
605
+ let onCloseResolve = null;
606
+ const onClose = new Promise((resolve) => {
607
+ onCloseResolve = resolve;
608
+ });
609
+ const resolveClose = (reason) => {
610
+ if (!onCloseResolve) return;
611
+ const resolver = onCloseResolve;
612
+ onCloseResolve = null;
613
+ resolver(reason);
614
+ };
615
+ try {
616
+ await sock.sendPresenceUpdate("available");
617
+ if (shouldLogVerbose()) logVerbose("Sent global 'available' presence on connect");
618
+ } catch (err) {
619
+ logVerbose(`Failed to send 'available' presence on connect: ${String(err)}`);
620
+ }
621
+ const selfJid = sock.user?.id;
622
+ const selfE164 = selfJid ? jidToE164(selfJid) : null;
623
+ const debouncer = createInboundDebouncer({
624
+ debounceMs: options.debounceMs ?? 0,
625
+ buildKey: (msg) => {
626
+ const senderKey = msg.chatType === "group" ? msg.senderJid ?? msg.senderE164 ?? msg.senderName ?? msg.from : msg.from;
627
+ if (!senderKey) return null;
628
+ const conversationKey = msg.chatType === "group" ? msg.chatId : msg.from;
629
+ return `${msg.accountId}:${conversationKey}:${senderKey}`;
630
+ },
631
+ shouldDebounce: options.shouldDebounce,
632
+ onFlush: async (entries) => {
633
+ const last = entries.at(-1);
634
+ if (!last) return;
635
+ if (entries.length === 1) {
636
+ await options.onMessage(last);
637
+ return;
638
+ }
639
+ const mentioned = /* @__PURE__ */ new Set();
640
+ for (const entry of entries) for (const jid of entry.mentionedJids ?? []) mentioned.add(jid);
641
+ const combinedBody = entries.map((entry) => entry.body).filter(Boolean).join("\n");
642
+ const combinedMessage = {
643
+ ...last,
644
+ body: combinedBody,
645
+ mentionedJids: mentioned.size > 0 ? Array.from(mentioned) : void 0
646
+ };
647
+ await options.onMessage(combinedMessage);
648
+ },
649
+ onError: (err) => {
650
+ inboundLogger.error({ error: String(err) }, "failed handling inbound web message");
651
+ inboundConsoleLog.error(`Failed handling inbound web message: ${String(err)}`);
652
+ }
653
+ });
654
+ const groupMetaCache = /* @__PURE__ */ new Map();
655
+ const GROUP_META_TTL_MS = 300 * 1e3;
656
+ const lidLookup = sock.signalRepository?.lidMapping;
657
+ const resolveInboundJid = async (jid) => resolveJidToE164(jid, {
658
+ authDir: options.authDir,
659
+ lidLookup
660
+ });
661
+ const getGroupMeta = async (jid) => {
662
+ const cached = groupMetaCache.get(jid);
663
+ if (cached && cached.expires > Date.now()) return cached;
664
+ try {
665
+ const meta = await sock.groupMetadata(jid);
666
+ const participants = (await Promise.all(meta.participants?.map(async (p) => {
667
+ return await resolveInboundJid(p.id) ?? p.id;
668
+ }) ?? [])).filter(Boolean) ?? [];
669
+ const entry = {
670
+ subject: meta.subject,
671
+ participants,
672
+ expires: Date.now() + GROUP_META_TTL_MS
673
+ };
674
+ groupMetaCache.set(jid, entry);
675
+ return entry;
676
+ } catch (err) {
677
+ logVerbose(`Failed to fetch group metadata for ${jid}: ${String(err)}`);
678
+ return { expires: Date.now() + GROUP_META_TTL_MS };
679
+ }
680
+ };
681
+ const handleMessagesUpsert = async (upsert) => {
682
+ if (upsert.type !== "notify" && upsert.type !== "append") return;
683
+ for (const msg of upsert.messages ?? []) {
684
+ recordChannelActivity({
685
+ channel: "whatsapp",
686
+ accountId: options.accountId,
687
+ direction: "inbound"
688
+ });
689
+ const id = msg.key?.id ?? void 0;
690
+ const remoteJid = msg.key?.remoteJid;
691
+ if (!remoteJid) continue;
692
+ if (remoteJid.endsWith("@status") || remoteJid.endsWith("@broadcast")) continue;
693
+ const group = isJidGroup(remoteJid) === true;
694
+ if (id) {
695
+ if (isRecentInboundMessage(`${options.accountId}:${remoteJid}:${id}`)) continue;
696
+ }
697
+ const participantJid = msg.key?.participant ?? void 0;
698
+ const from = group ? remoteJid : await resolveInboundJid(remoteJid);
699
+ if (!from) continue;
700
+ const senderE164 = group ? participantJid ? await resolveInboundJid(participantJid) : null : from;
701
+ let groupSubject;
702
+ let groupParticipants;
703
+ if (group) {
704
+ const meta = await getGroupMeta(remoteJid);
705
+ groupSubject = meta.subject;
706
+ groupParticipants = meta.participants;
707
+ }
708
+ const messageTimestampMs = msg.messageTimestamp ? Number(msg.messageTimestamp) * 1e3 : void 0;
709
+ const access = await checkInboundAccessControl({
710
+ accountId: options.accountId,
711
+ from,
712
+ selfE164,
713
+ senderE164,
714
+ group,
715
+ pushName: msg.pushName ?? void 0,
716
+ isFromMe: Boolean(msg.key?.fromMe),
717
+ messageTimestampMs,
718
+ connectedAtMs,
719
+ sock: { sendMessage: (jid, content) => sock.sendMessage(jid, content) },
720
+ remoteJid
721
+ });
722
+ if (!access.allowed) continue;
723
+ if (id && !access.isSelfChat && options.sendReadReceipts !== false) {
724
+ const participant = msg.key?.participant;
725
+ try {
726
+ await sock.readMessages([{
727
+ remoteJid,
728
+ id,
729
+ participant,
730
+ fromMe: false
731
+ }]);
732
+ if (shouldLogVerbose()) logVerbose(`Marked message ${id} as read for ${remoteJid}${participant ? ` (participant ${participant})` : ""}`);
733
+ } catch (err) {
734
+ logVerbose(`Failed to mark message ${id} read: ${String(err)}`);
735
+ }
736
+ } else if (id && access.isSelfChat && shouldLogVerbose()) logVerbose(`Self-chat mode: skipping read receipt for ${id}`);
737
+ if (upsert.type === "append") continue;
738
+ const location = extractLocationData(msg.message ?? void 0);
739
+ const locationText = location ? formatLocationText(location) : void 0;
740
+ let body = extractText(msg.message ?? void 0);
741
+ if (locationText) body = [body, locationText].filter(Boolean).join("\n").trim();
742
+ if (!body) {
743
+ body = extractMediaPlaceholder(msg.message ?? void 0);
744
+ if (!body) continue;
745
+ }
746
+ const replyContext = describeReplyContext(msg.message);
747
+ let mediaPath;
748
+ let mediaType;
749
+ let mediaFileName;
750
+ try {
751
+ const inboundMedia = await downloadInboundMedia(msg, sock);
752
+ if (inboundMedia) {
753
+ const maxBytes = (typeof options.mediaMaxMb === "number" && options.mediaMaxMb > 0 ? options.mediaMaxMb : 50) * 1024 * 1024;
754
+ mediaPath = (await saveMediaBuffer(inboundMedia.buffer, inboundMedia.mimetype, "inbound", maxBytes, inboundMedia.fileName)).path;
755
+ mediaType = inboundMedia.mimetype;
756
+ mediaFileName = inboundMedia.fileName;
757
+ }
758
+ } catch (err) {
759
+ logVerbose(`Inbound media download failed: ${String(err)}`);
760
+ }
761
+ const chatJid = remoteJid;
762
+ const sendComposing = async () => {
763
+ try {
764
+ await sock.sendPresenceUpdate("composing", chatJid);
765
+ } catch (err) {
766
+ logVerbose(`Presence update failed: ${String(err)}`);
767
+ }
768
+ };
769
+ const reply = async (text) => {
770
+ await sock.sendMessage(chatJid, { text });
771
+ };
772
+ const sendMedia = async (payload) => {
773
+ await sock.sendMessage(chatJid, payload);
774
+ };
775
+ const timestamp = messageTimestampMs;
776
+ const mentionedJids = extractMentionedJids(msg.message);
777
+ const senderName = msg.pushName ?? void 0;
778
+ inboundLogger.info({
779
+ from,
780
+ to: selfE164 ?? "me",
781
+ body,
782
+ mediaPath,
783
+ mediaType,
784
+ mediaFileName,
785
+ timestamp
786
+ }, "inbound message");
787
+ const inboundMessage = {
788
+ id,
789
+ from,
790
+ conversationId: from,
791
+ to: selfE164 ?? "me",
792
+ accountId: access.resolvedAccountId,
793
+ body,
794
+ pushName: senderName,
795
+ timestamp,
796
+ chatType: group ? "group" : "direct",
797
+ chatId: remoteJid,
798
+ senderJid: participantJid,
799
+ senderE164: senderE164 ?? void 0,
800
+ senderName,
801
+ replyToId: replyContext?.id,
802
+ replyToBody: replyContext?.body,
803
+ replyToSender: replyContext?.sender,
804
+ replyToSenderJid: replyContext?.senderJid,
805
+ replyToSenderE164: replyContext?.senderE164,
806
+ groupSubject,
807
+ groupParticipants,
808
+ mentionedJids: mentionedJids ?? void 0,
809
+ selfJid,
810
+ selfE164,
811
+ location: location ?? void 0,
812
+ sendComposing,
813
+ reply,
814
+ sendMedia,
815
+ mediaPath,
816
+ mediaType,
817
+ mediaFileName
818
+ };
819
+ try {
820
+ Promise.resolve(debouncer.enqueue(inboundMessage)).catch((err) => {
821
+ inboundLogger.error({ error: String(err) }, "failed handling inbound web message");
822
+ inboundConsoleLog.error(`Failed handling inbound web message: ${String(err)}`);
823
+ });
824
+ } catch (err) {
825
+ inboundLogger.error({ error: String(err) }, "failed handling inbound web message");
826
+ inboundConsoleLog.error(`Failed handling inbound web message: ${String(err)}`);
827
+ }
828
+ }
829
+ };
830
+ sock.ev.on("messages.upsert", handleMessagesUpsert);
831
+ const handleConnectionUpdate = (update) => {
832
+ try {
833
+ if (update.connection === "close") {
834
+ const status = getStatusCode(update.lastDisconnect?.error);
835
+ resolveClose({
836
+ status,
837
+ isLoggedOut: status === DisconnectReason.loggedOut,
838
+ error: update.lastDisconnect?.error
839
+ });
840
+ }
841
+ } catch (err) {
842
+ inboundLogger.error({ error: String(err) }, "connection.update handler error");
843
+ resolveClose({
844
+ status: void 0,
845
+ isLoggedOut: false,
846
+ error: err
847
+ });
848
+ }
849
+ };
850
+ sock.ev.on("connection.update", handleConnectionUpdate);
851
+ return {
852
+ close: async () => {
853
+ try {
854
+ const ev = sock.ev;
855
+ const messagesUpsertHandler = handleMessagesUpsert;
856
+ const connectionUpdateHandler = handleConnectionUpdate;
857
+ if (typeof ev.off === "function") {
858
+ ev.off("messages.upsert", messagesUpsertHandler);
859
+ ev.off("connection.update", connectionUpdateHandler);
860
+ } else if (typeof ev.removeListener === "function") {
861
+ ev.removeListener("messages.upsert", messagesUpsertHandler);
862
+ ev.removeListener("connection.update", connectionUpdateHandler);
863
+ }
864
+ sock.ws?.close();
865
+ } catch (err) {
866
+ logVerbose(`Socket close failed: ${String(err)}`);
867
+ }
868
+ },
869
+ onClose,
870
+ signalClose: (reason) => {
871
+ resolveClose(reason ?? {
872
+ status: void 0,
873
+ isLoggedOut: false,
874
+ error: "closed"
875
+ });
876
+ },
877
+ ...createWebSendApi({
878
+ sock: {
879
+ sendMessage: (jid, content) => sock.sendMessage(jid, content),
880
+ sendPresenceUpdate: (presence, jid) => sock.sendPresenceUpdate(presence, jid)
881
+ },
882
+ defaultAccountId: options.accountId
883
+ })
884
+ };
885
+ }
886
+
887
+ //#endregion
888
+ //#region src/web/auto-reply/mentions.ts
889
+ function buildMentionConfig(cfg, agentId) {
890
+ return {
891
+ mentionRegexes: buildMentionRegexes(cfg, agentId),
892
+ allowFrom: cfg.channels?.whatsapp?.allowFrom
893
+ };
894
+ }
895
+ function resolveMentionTargets(msg, authDir) {
896
+ const jidOptions = authDir ? { authDir } : void 0;
897
+ return {
898
+ normalizedMentions: msg.mentionedJids?.length ? msg.mentionedJids.map((jid) => jidToE164(jid, jidOptions) ?? jid).filter(Boolean) : [],
899
+ selfE164: msg.selfE164 ?? (msg.selfJid ? jidToE164(msg.selfJid, jidOptions) : null),
900
+ selfJid: msg.selfJid ? msg.selfJid.replace(/:\\d+/, "") : null
901
+ };
902
+ }
903
+ function isBotMentionedFromTargets(msg, mentionCfg, targets) {
904
+ const clean = (text) => normalizeMentionText(text);
905
+ const isSelfChat = isSelfChatMode(targets.selfE164, mentionCfg.allowFrom);
906
+ const hasMentions = (msg.mentionedJids?.length ?? 0) > 0;
907
+ if (hasMentions && !isSelfChat) {
908
+ if (targets.selfE164 && targets.normalizedMentions.includes(targets.selfE164)) return true;
909
+ if (targets.selfJid) {
910
+ if (targets.normalizedMentions.includes(targets.selfJid)) return true;
911
+ }
912
+ return false;
913
+ } else if (hasMentions && isSelfChat) {}
914
+ const bodyClean = clean(msg.body);
915
+ if (mentionCfg.mentionRegexes.some((re) => re.test(bodyClean))) return true;
916
+ if (targets.selfE164) {
917
+ const selfDigits = targets.selfE164.replace(/\D/g, "");
918
+ if (selfDigits) {
919
+ if (bodyClean.replace(/[^\d]/g, "").includes(selfDigits)) return true;
920
+ const bodyNoSpace = msg.body.replace(/[\s-]/g, "");
921
+ if (new RegExp(`\\+?${selfDigits}`, "i").test(bodyNoSpace)) return true;
922
+ }
923
+ }
924
+ return false;
925
+ }
926
+ function debugMention(msg, mentionCfg, authDir) {
927
+ const mentionTargets = resolveMentionTargets(msg, authDir);
928
+ return {
929
+ wasMentioned: isBotMentionedFromTargets(msg, mentionCfg, mentionTargets),
930
+ details: {
931
+ from: msg.from,
932
+ body: msg.body,
933
+ bodyClean: normalizeMentionText(msg.body),
934
+ mentionedJids: msg.mentionedJids ?? null,
935
+ normalizedMentionedJids: mentionTargets.normalizedMentions.length ? mentionTargets.normalizedMentions : null,
936
+ selfJid: msg.selfJid ?? null,
937
+ selfJidBare: mentionTargets.selfJid,
938
+ selfE164: msg.selfE164 ?? null,
939
+ resolvedSelfE164: mentionTargets.selfE164
940
+ }
941
+ };
942
+ }
943
+ function resolveOwnerList(mentionCfg, selfE164) {
944
+ const allowFrom = mentionCfg.allowFrom;
945
+ return (Array.isArray(allowFrom) && allowFrom.length > 0 ? allowFrom : selfE164 ? [selfE164] : []).filter((entry) => Boolean(entry && entry !== "*")).map((entry) => normalizeE164(entry)).filter((entry) => Boolean(entry));
946
+ }
947
+
948
+ //#endregion
949
+ //#region src/web/auto-reply/monitor/echo.ts
950
+ function createEchoTracker(params) {
951
+ const recentlySent = /* @__PURE__ */ new Set();
952
+ const maxItems = Math.max(1, params.maxItems ?? 100);
953
+ const buildCombinedKey = (p) => `combined:${p.sessionKey}:${p.combinedBody}`;
954
+ const trim = () => {
955
+ while (recentlySent.size > maxItems) {
956
+ const firstKey = recentlySent.values().next().value;
957
+ if (!firstKey) break;
958
+ recentlySent.delete(firstKey);
959
+ }
960
+ };
961
+ const rememberText = (text, opts) => {
962
+ if (!text) return;
963
+ recentlySent.add(text);
964
+ if (opts.combinedBody && opts.combinedBodySessionKey) recentlySent.add(buildCombinedKey({
965
+ sessionKey: opts.combinedBodySessionKey,
966
+ combinedBody: opts.combinedBody
967
+ }));
968
+ if (opts.logVerboseMessage) params.logVerbose?.(`Added to echo detection set (size now: ${recentlySent.size}): ${text.substring(0, 50)}...`);
969
+ trim();
970
+ };
971
+ return {
972
+ rememberText,
973
+ has: (key) => recentlySent.has(key),
974
+ forget: (key) => {
975
+ recentlySent.delete(key);
976
+ },
977
+ buildCombinedKey
978
+ };
979
+ }
980
+
981
+ //#endregion
982
+ //#region src/web/auto-reply/monitor/broadcast.ts
983
+ async function maybeBroadcastMessage(params) {
984
+ const broadcastAgents = params.cfg.broadcast?.[params.peerId];
985
+ if (!broadcastAgents || !Array.isArray(broadcastAgents)) return false;
986
+ if (broadcastAgents.length === 0) return false;
987
+ const strategy = params.cfg.broadcast?.strategy || "parallel";
988
+ whatsappInboundLog.info(`Broadcasting message to ${broadcastAgents.length} agents (${strategy})`);
989
+ const agentIds = params.cfg.agents?.list?.map((agent) => normalizeAgentId(agent.id));
990
+ const hasKnownAgents = (agentIds?.length ?? 0) > 0;
991
+ const groupHistorySnapshot = params.msg.chatType === "group" ? params.groupHistories.get(params.groupHistoryKey) ?? [] : void 0;
992
+ const processForAgent = async (agentId) => {
993
+ const normalizedAgentId = normalizeAgentId(agentId);
994
+ if (hasKnownAgents && !agentIds?.includes(normalizedAgentId)) {
995
+ whatsappInboundLog.warn(`Broadcast agent ${agentId} not found in agents.list; skipping`);
996
+ return false;
997
+ }
998
+ const agentRoute = {
999
+ ...params.route,
1000
+ agentId: normalizedAgentId,
1001
+ sessionKey: buildAgentSessionKey({
1002
+ agentId: normalizedAgentId,
1003
+ channel: "whatsapp",
1004
+ accountId: params.route.accountId,
1005
+ peer: {
1006
+ kind: params.msg.chatType === "group" ? "group" : "direct",
1007
+ id: params.peerId
1008
+ },
1009
+ dmScope: params.cfg.session?.dmScope,
1010
+ identityLinks: params.cfg.session?.identityLinks
1011
+ }),
1012
+ mainSessionKey: buildAgentMainSessionKey({
1013
+ agentId: normalizedAgentId,
1014
+ mainKey: DEFAULT_MAIN_KEY
1015
+ })
1016
+ };
1017
+ try {
1018
+ return await params.processMessage(params.msg, agentRoute, params.groupHistoryKey, {
1019
+ groupHistory: groupHistorySnapshot,
1020
+ suppressGroupHistoryClear: true
1021
+ });
1022
+ } catch (err) {
1023
+ whatsappInboundLog.error(`Broadcast agent ${agentId} failed: ${formatError(err)}`);
1024
+ return false;
1025
+ }
1026
+ };
1027
+ if (strategy === "sequential") for (const agentId of broadcastAgents) await processForAgent(agentId);
1028
+ else await Promise.allSettled(broadcastAgents.map(processForAgent));
1029
+ if (params.msg.chatType === "group") params.groupHistories.set(params.groupHistoryKey, []);
1030
+ return true;
1031
+ }
1032
+
1033
+ //#endregion
1034
+ //#region src/web/auto-reply/monitor/commands.ts
1035
+ function stripMentionsForCommand(text, mentionRegexes, selfE164) {
1036
+ let result = text;
1037
+ for (const re of mentionRegexes) result = result.replace(re, " ");
1038
+ if (selfE164) {
1039
+ const digits = selfE164.replace(/\D/g, "");
1040
+ if (digits) {
1041
+ const pattern = new RegExp(`\\+?${digits}`, "g");
1042
+ result = result.replace(pattern, " ");
1043
+ }
1044
+ }
1045
+ return result.replace(/\s+/g, " ").trim();
1046
+ }
1047
+
1048
+ //#endregion
1049
+ //#region src/web/auto-reply/monitor/group-activation.ts
1050
+ function resolveGroupPolicyFor(cfg, conversationId) {
1051
+ const groupId = resolveGroupSessionKey({
1052
+ From: conversationId,
1053
+ ChatType: "group",
1054
+ Provider: "whatsapp"
1055
+ })?.id;
1056
+ const whatsappCfg = cfg.channels?.whatsapp;
1057
+ const hasGroupAllowFrom = Boolean(whatsappCfg?.groupAllowFrom?.length || whatsappCfg?.allowFrom?.length);
1058
+ return resolveChannelGroupPolicy({
1059
+ cfg,
1060
+ channel: "whatsapp",
1061
+ groupId: groupId ?? conversationId,
1062
+ hasGroupAllowFrom
1063
+ });
1064
+ }
1065
+ function resolveGroupRequireMentionFor(cfg, conversationId) {
1066
+ const groupId = resolveGroupSessionKey({
1067
+ From: conversationId,
1068
+ ChatType: "group",
1069
+ Provider: "whatsapp"
1070
+ })?.id;
1071
+ return resolveChannelGroupRequireMention({
1072
+ cfg,
1073
+ channel: "whatsapp",
1074
+ groupId: groupId ?? conversationId
1075
+ });
1076
+ }
1077
+ function resolveGroupActivationFor(params) {
1078
+ const entry = loadSessionStore(resolveStorePath(params.cfg.session?.store, { agentId: params.agentId }))[params.sessionKey];
1079
+ const defaultActivation = !resolveGroupRequireMentionFor(params.cfg, params.conversationId) ? "always" : "mention";
1080
+ return normalizeGroupActivation(entry?.groupActivation) ?? defaultActivation;
1081
+ }
1082
+
1083
+ //#endregion
1084
+ //#region src/web/auto-reply/monitor/group-members.ts
1085
+ function appendNormalizedUnique(entries, seen, ordered) {
1086
+ for (const entry of entries) {
1087
+ const normalized = normalizeE164(entry) ?? entry;
1088
+ if (!normalized || seen.has(normalized)) continue;
1089
+ seen.add(normalized);
1090
+ ordered.push(normalized);
1091
+ }
1092
+ }
1093
+ function noteGroupMember(groupMemberNames, conversationId, e164, name) {
1094
+ if (!e164 || !name) return;
1095
+ const key = normalizeE164(e164) ?? e164;
1096
+ if (!key) return;
1097
+ let roster = groupMemberNames.get(conversationId);
1098
+ if (!roster) {
1099
+ roster = /* @__PURE__ */ new Map();
1100
+ groupMemberNames.set(conversationId, roster);
1101
+ }
1102
+ roster.set(key, name);
1103
+ }
1104
+ function formatGroupMembers(params) {
1105
+ const { participants, roster, fallbackE164 } = params;
1106
+ const seen = /* @__PURE__ */ new Set();
1107
+ const ordered = [];
1108
+ if (participants?.length) appendNormalizedUnique(participants, seen, ordered);
1109
+ if (roster) appendNormalizedUnique(roster.keys(), seen, ordered);
1110
+ if (ordered.length === 0 && fallbackE164) {
1111
+ const normalized = normalizeE164(fallbackE164) ?? fallbackE164;
1112
+ if (normalized) ordered.push(normalized);
1113
+ }
1114
+ if (ordered.length === 0) return;
1115
+ return ordered.map((entry) => {
1116
+ const name = roster?.get(entry);
1117
+ return name ? `${name} (${entry})` : entry;
1118
+ }).join(", ");
1119
+ }
1120
+
1121
+ //#endregion
1122
+ //#region src/web/auto-reply/monitor/group-gating.ts
1123
+ function isOwnerSender(baseMentionConfig, msg) {
1124
+ const sender = normalizeE164(msg.senderE164 ?? "");
1125
+ if (!sender) return false;
1126
+ return resolveOwnerList(baseMentionConfig, msg.selfE164 ?? void 0).includes(sender);
1127
+ }
1128
+ function recordPendingGroupHistoryEntry(params) {
1129
+ const sender = params.msg.senderName && params.msg.senderE164 ? `${params.msg.senderName} (${params.msg.senderE164})` : params.msg.senderName ?? params.msg.senderE164 ?? "Unknown";
1130
+ recordPendingHistoryEntryIfEnabled({
1131
+ historyMap: params.groupHistories,
1132
+ historyKey: params.groupHistoryKey,
1133
+ limit: params.groupHistoryLimit,
1134
+ entry: {
1135
+ sender,
1136
+ body: params.msg.body,
1137
+ timestamp: params.msg.timestamp,
1138
+ id: params.msg.id,
1139
+ senderJid: params.msg.senderJid
1140
+ }
1141
+ });
1142
+ }
1143
+ function skipGroupMessageAndStoreHistory(params, verboseMessage) {
1144
+ params.logVerbose(verboseMessage);
1145
+ recordPendingGroupHistoryEntry({
1146
+ msg: params.msg,
1147
+ groupHistories: params.groupHistories,
1148
+ groupHistoryKey: params.groupHistoryKey,
1149
+ groupHistoryLimit: params.groupHistoryLimit
1150
+ });
1151
+ return { shouldProcess: false };
1152
+ }
1153
+ function applyGroupGating(params) {
1154
+ const groupPolicy = resolveGroupPolicyFor(params.cfg, params.conversationId);
1155
+ if (groupPolicy.allowlistEnabled && !groupPolicy.allowed) {
1156
+ params.logVerbose(`Skipping group message ${params.conversationId} (not in allowlist)`);
1157
+ return { shouldProcess: false };
1158
+ }
1159
+ noteGroupMember(params.groupMemberNames, params.groupHistoryKey, params.msg.senderE164, params.msg.senderName);
1160
+ const mentionConfig = buildMentionConfig(params.cfg, params.agentId);
1161
+ const commandBody = stripMentionsForCommand(params.msg.body, mentionConfig.mentionRegexes, params.msg.selfE164);
1162
+ const activationCommand = parseActivationCommand(commandBody);
1163
+ const owner = isOwnerSender(params.baseMentionConfig, params.msg);
1164
+ const shouldBypassMention = owner && hasControlCommand(commandBody, params.cfg);
1165
+ if (activationCommand.hasCommand && !owner) return skipGroupMessageAndStoreHistory(params, `Ignoring /activation from non-owner in group ${params.conversationId}`);
1166
+ const mentionDebug = debugMention(params.msg, mentionConfig, params.authDir);
1167
+ params.replyLogger.debug({
1168
+ conversationId: params.conversationId,
1169
+ wasMentioned: mentionDebug.wasMentioned,
1170
+ ...mentionDebug.details
1171
+ }, "group mention debug");
1172
+ const wasMentioned = mentionDebug.wasMentioned;
1173
+ const requireMention = resolveGroupActivationFor({
1174
+ cfg: params.cfg,
1175
+ agentId: params.agentId,
1176
+ sessionKey: params.sessionKey,
1177
+ conversationId: params.conversationId
1178
+ }) !== "always";
1179
+ const selfJid = params.msg.selfJid?.replace(/:\\d+/, "");
1180
+ const replySenderJid = params.msg.replyToSenderJid?.replace(/:\\d+/, "");
1181
+ const selfE164 = params.msg.selfE164 ? normalizeE164(params.msg.selfE164) : null;
1182
+ const replySenderE164 = params.msg.replyToSenderE164 ? normalizeE164(params.msg.replyToSenderE164) : null;
1183
+ const mentionGate = resolveMentionGating({
1184
+ requireMention,
1185
+ canDetectMention: true,
1186
+ wasMentioned,
1187
+ implicitMention: Boolean(selfJid && replySenderJid && selfJid === replySenderJid || selfE164 && replySenderE164 && selfE164 === replySenderE164),
1188
+ shouldBypassMention
1189
+ });
1190
+ params.msg.wasMentioned = mentionGate.effectiveWasMentioned;
1191
+ if (!shouldBypassMention && requireMention && mentionGate.shouldSkip) return skipGroupMessageAndStoreHistory(params, `Group message stored for context (no mention detected) in ${params.conversationId}: ${params.msg.body}`);
1192
+ return { shouldProcess: true };
1193
+ }
1194
+
1195
+ //#endregion
1196
+ //#region src/web/auto-reply/monitor/last-route.ts
1197
+ function trackBackgroundTask(backgroundTasks, task) {
1198
+ backgroundTasks.add(task);
1199
+ task.finally(() => {
1200
+ backgroundTasks.delete(task);
1201
+ });
1202
+ }
1203
+ function updateLastRouteInBackground(params) {
1204
+ const storePath = resolveStorePath(params.cfg.session?.store, { agentId: params.storeAgentId });
1205
+ const task = updateLastRoute({
1206
+ storePath,
1207
+ sessionKey: params.sessionKey,
1208
+ deliveryContext: {
1209
+ channel: params.channel,
1210
+ to: params.to,
1211
+ accountId: params.accountId
1212
+ },
1213
+ ctx: params.ctx
1214
+ }).catch((err) => {
1215
+ params.warn({
1216
+ error: formatError(err),
1217
+ storePath,
1218
+ sessionKey: params.sessionKey,
1219
+ to: params.to
1220
+ }, "failed updating last route");
1221
+ });
1222
+ trackBackgroundTask(params.backgroundTasks, task);
1223
+ }
1224
+
1225
+ //#endregion
1226
+ //#region src/web/auto-reply/monitor/peer.ts
1227
+ function resolvePeerId(msg) {
1228
+ if (msg.chatType === "group") return msg.conversationId ?? msg.from;
1229
+ if (msg.senderE164) return normalizeE164(msg.senderE164) ?? msg.senderE164;
1230
+ if (msg.from.includes("@")) return jidToE164(msg.from) ?? msg.from;
1231
+ return normalizeE164(msg.from) ?? msg.from;
1232
+ }
1233
+
1234
+ //#endregion
1235
+ //#region src/web/auto-reply/util.ts
1236
+ function elide(text, limit = 400) {
1237
+ if (!text) return text;
1238
+ if (text.length <= limit) return text;
1239
+ return `${text.slice(0, limit)}… (truncated ${text.length - limit} chars)`;
1240
+ }
1241
+ function isLikelyWhatsAppCryptoError(reason) {
1242
+ const formatReason = (value) => {
1243
+ if (value == null) return "";
1244
+ if (typeof value === "string") return value;
1245
+ if (value instanceof Error) return `${value.message}\n${value.stack ?? ""}`;
1246
+ if (typeof value === "object") try {
1247
+ return JSON.stringify(value);
1248
+ } catch {
1249
+ return Object.prototype.toString.call(value);
1250
+ }
1251
+ if (typeof value === "number") return String(value);
1252
+ if (typeof value === "boolean") return String(value);
1253
+ if (typeof value === "bigint") return String(value);
1254
+ if (typeof value === "symbol") return value.description ?? value.toString();
1255
+ if (typeof value === "function") return value.name ? `[function ${value.name}]` : "[function]";
1256
+ return Object.prototype.toString.call(value);
1257
+ };
1258
+ const haystack = (reason instanceof Error ? `${reason.message}\n${reason.stack ?? ""}` : formatReason(reason)).toLowerCase();
1259
+ if (!(haystack.includes("unsupported state or unable to authenticate data") || haystack.includes("bad mac"))) return false;
1260
+ return haystack.includes("@whiskeysockets/baileys") || haystack.includes("baileys") || haystack.includes("noise-handler") || haystack.includes("aesdecryptgcm");
1261
+ }
1262
+
1263
+ //#endregion
1264
+ //#region src/web/auto-reply/deliver-reply.ts
1265
+ const REASONING_PREFIX = "reasoning:";
1266
+ function shouldSuppressReasoningReply(payload) {
1267
+ if (payload.isReasoning === true) return true;
1268
+ const text = payload.text;
1269
+ if (typeof text !== "string") return false;
1270
+ return text.trimStart().toLowerCase().startsWith(REASONING_PREFIX);
1271
+ }
1272
+ async function deliverWebReply(params) {
1273
+ const { replyResult, msg, maxMediaBytes, textLimit, replyLogger, connectionId, skipLog } = params;
1274
+ const replyStarted = Date.now();
1275
+ if (shouldSuppressReasoningReply(replyResult)) {
1276
+ whatsappOutboundLog.debug(`Suppressed reasoning payload to ${msg.from}`);
1277
+ return;
1278
+ }
1279
+ const tableMode = params.tableMode ?? "code";
1280
+ const chunkMode = params.chunkMode ?? "length";
1281
+ const textChunks = chunkMarkdownTextWithMode(markdownToWhatsApp(convertMarkdownTables(replyResult.text || "", tableMode)), textLimit, chunkMode);
1282
+ const mediaList = replyResult.mediaUrls?.length ? replyResult.mediaUrls : replyResult.mediaUrl ? [replyResult.mediaUrl] : [];
1283
+ const sendWithRetry = async (fn, label, maxAttempts = 3) => {
1284
+ let lastErr;
1285
+ for (let attempt = 1; attempt <= maxAttempts; attempt++) try {
1286
+ return await fn();
1287
+ } catch (err) {
1288
+ lastErr = err;
1289
+ const errText = formatError(err);
1290
+ const isLast = attempt === maxAttempts;
1291
+ if (!/closed|reset|timed\s*out|disconnect/i.test(errText) || isLast) throw err;
1292
+ const backoffMs = 500 * attempt;
1293
+ logVerbose(`Retrying ${label} to ${msg.from} after failure (${attempt}/${maxAttempts - 1}) in ${backoffMs}ms: ${errText}`);
1294
+ await sleep(backoffMs);
1295
+ }
1296
+ throw lastErr;
1297
+ };
1298
+ if (mediaList.length === 0 && textChunks.length) {
1299
+ const totalChunks = textChunks.length;
1300
+ for (const [index, chunk] of textChunks.entries()) {
1301
+ const chunkStarted = Date.now();
1302
+ await sendWithRetry(() => msg.reply(chunk), "text");
1303
+ if (!skipLog) {
1304
+ const durationMs = Date.now() - chunkStarted;
1305
+ whatsappOutboundLog.debug(`Sent chunk ${index + 1}/${totalChunks} to ${msg.from} (${durationMs.toFixed(0)}ms)`);
1306
+ }
1307
+ }
1308
+ replyLogger.info({
1309
+ correlationId: msg.id ?? newConnectionId(),
1310
+ connectionId: connectionId ?? null,
1311
+ to: msg.from,
1312
+ from: msg.to,
1313
+ text: elide(replyResult.text, 240),
1314
+ mediaUrl: null,
1315
+ mediaSizeBytes: null,
1316
+ mediaKind: null,
1317
+ durationMs: Date.now() - replyStarted
1318
+ }, "auto-reply sent (text)");
1319
+ return;
1320
+ }
1321
+ const remainingText = [...textChunks];
1322
+ for (const [index, mediaUrl] of mediaList.entries()) {
1323
+ const caption = index === 0 ? remainingText.shift() || void 0 : void 0;
1324
+ try {
1325
+ const media = await loadWebMedia(mediaUrl, {
1326
+ maxBytes: maxMediaBytes,
1327
+ localRoots: params.mediaLocalRoots
1328
+ });
1329
+ if (shouldLogVerbose()) {
1330
+ logVerbose(`Web auto-reply media size: ${(media.buffer.length / (1024 * 1024)).toFixed(2)}MB`);
1331
+ logVerbose(`Web auto-reply media source: ${mediaUrl} (kind ${media.kind})`);
1332
+ }
1333
+ if (media.kind === "image") await sendWithRetry(() => msg.sendMedia({
1334
+ image: media.buffer,
1335
+ caption,
1336
+ mimetype: media.contentType
1337
+ }), "media:image");
1338
+ else if (media.kind === "audio") await sendWithRetry(() => msg.sendMedia({
1339
+ audio: media.buffer,
1340
+ ptt: true,
1341
+ mimetype: media.contentType,
1342
+ caption
1343
+ }), "media:audio");
1344
+ else if (media.kind === "video") await sendWithRetry(() => msg.sendMedia({
1345
+ video: media.buffer,
1346
+ caption,
1347
+ mimetype: media.contentType
1348
+ }), "media:video");
1349
+ else {
1350
+ const fileName = media.fileName ?? mediaUrl.split("/").pop() ?? "file";
1351
+ const mimetype = media.contentType ?? "application/octet-stream";
1352
+ await sendWithRetry(() => msg.sendMedia({
1353
+ document: media.buffer,
1354
+ fileName,
1355
+ caption,
1356
+ mimetype
1357
+ }), "media:document");
1358
+ }
1359
+ whatsappOutboundLog.info(`Sent media reply to ${msg.from} (${(media.buffer.length / (1024 * 1024)).toFixed(2)}MB)`);
1360
+ replyLogger.info({
1361
+ correlationId: msg.id ?? newConnectionId(),
1362
+ connectionId: connectionId ?? null,
1363
+ to: msg.from,
1364
+ from: msg.to,
1365
+ text: caption ?? null,
1366
+ mediaUrl,
1367
+ mediaSizeBytes: media.buffer.length,
1368
+ mediaKind: media.kind,
1369
+ durationMs: Date.now() - replyStarted
1370
+ }, "auto-reply sent (media)");
1371
+ } catch (err) {
1372
+ whatsappOutboundLog.error(`Failed sending web media to ${msg.from}: ${formatError(err)}`);
1373
+ replyLogger.warn({
1374
+ err,
1375
+ mediaUrl
1376
+ }, "failed to send web media reply");
1377
+ if (index === 0) {
1378
+ const warning = err instanceof Error ? `⚠️ Media failed: ${err.message}` : "⚠️ Media failed.";
1379
+ const fallbackText = [remainingText.shift() ?? caption ?? "", warning].filter(Boolean).join("\n");
1380
+ if (fallbackText) {
1381
+ whatsappOutboundLog.warn(`Media skipped; sent text-only to ${msg.from}`);
1382
+ await msg.reply(fallbackText);
1383
+ }
1384
+ }
1385
+ }
1386
+ }
1387
+ for (const chunk of remainingText) await msg.reply(chunk);
1388
+ }
1389
+
1390
+ //#endregion
1391
+ //#region src/web/auto-reply/monitor/ack-reaction.ts
1392
+ function maybeSendAckReaction(params) {
1393
+ if (!params.msg.id) return;
1394
+ const ackConfig = params.cfg.channels?.whatsapp?.ackReaction;
1395
+ const emoji = (ackConfig?.emoji ?? "").trim();
1396
+ const directEnabled = ackConfig?.direct ?? true;
1397
+ const groupMode = ackConfig?.group ?? "mentions";
1398
+ const conversationIdForCheck = params.msg.conversationId ?? params.msg.from;
1399
+ const activation = params.msg.chatType === "group" ? resolveGroupActivationFor({
1400
+ cfg: params.cfg,
1401
+ agentId: params.agentId,
1402
+ sessionKey: params.sessionKey,
1403
+ conversationId: conversationIdForCheck
1404
+ }) : null;
1405
+ const shouldSendReaction = () => shouldAckReactionForWhatsApp({
1406
+ emoji,
1407
+ isDirect: params.msg.chatType === "direct",
1408
+ isGroup: params.msg.chatType === "group",
1409
+ directEnabled,
1410
+ groupMode,
1411
+ wasMentioned: params.msg.wasMentioned === true,
1412
+ groupActivated: activation === "always"
1413
+ });
1414
+ if (!shouldSendReaction()) return;
1415
+ params.info({
1416
+ chatId: params.msg.chatId,
1417
+ messageId: params.msg.id,
1418
+ emoji
1419
+ }, "sending ack reaction");
1420
+ sendReactionWhatsApp(params.msg.chatId, params.msg.id, emoji, {
1421
+ verbose: params.verbose,
1422
+ fromMe: false,
1423
+ participant: params.msg.senderJid,
1424
+ accountId: params.accountId
1425
+ }).catch((err) => {
1426
+ params.warn({
1427
+ error: formatError(err),
1428
+ chatId: params.msg.chatId,
1429
+ messageId: params.msg.id
1430
+ }, "failed to send ack reaction");
1431
+ logVerbose(`WhatsApp ack reaction failed for chat ${params.msg.chatId}: ${formatError(err)}`);
1432
+ });
1433
+ }
1434
+
1435
+ //#endregion
1436
+ //#region src/web/auto-reply/monitor/message-line.ts
1437
+ function formatReplyContext(msg) {
1438
+ if (!msg.replyToBody) return null;
1439
+ return `[Replying to ${msg.replyToSender ?? "unknown sender"}${msg.replyToId ? ` id:${msg.replyToId}` : ""}]\n${msg.replyToBody}\n[/Replying]`;
1440
+ }
1441
+ function buildInboundLine(params) {
1442
+ const { cfg, msg, agentId, previousTimestamp, envelope } = params;
1443
+ const messagePrefix = resolveMessagePrefix(cfg, agentId, {
1444
+ configured: cfg.channels?.whatsapp?.messagePrefix,
1445
+ hasAllowFrom: (cfg.channels?.whatsapp?.allowFrom?.length ?? 0) > 0
1446
+ });
1447
+ const prefixStr = messagePrefix ? `${messagePrefix} ` : "";
1448
+ const replyContext = formatReplyContext(msg);
1449
+ const baseLine = `${prefixStr}${msg.body}${replyContext ? `\n\n${replyContext}` : ""}`;
1450
+ return formatInboundEnvelope({
1451
+ channel: "WhatsApp",
1452
+ from: msg.chatType === "group" ? msg.from : msg.from?.replace(/^whatsapp:/, ""),
1453
+ timestamp: msg.timestamp,
1454
+ body: baseLine,
1455
+ chatType: msg.chatType,
1456
+ sender: {
1457
+ name: msg.senderName,
1458
+ e164: msg.senderE164,
1459
+ id: msg.senderJid
1460
+ },
1461
+ previousTimestamp,
1462
+ envelope
1463
+ });
1464
+ }
1465
+
1466
+ //#endregion
1467
+ //#region src/web/auto-reply/monitor/process-message.ts
1468
+ function normalizeAllowFromE164(values) {
1469
+ return (Array.isArray(values) ? values : []).map((entry) => String(entry).trim()).filter((entry) => entry && entry !== "*").map((entry) => normalizeE164(entry)).filter((entry) => Boolean(entry));
1470
+ }
1471
+ async function resolveWhatsAppCommandAuthorized(params) {
1472
+ if (!(params.cfg.commands?.useAccessGroups !== false)) return true;
1473
+ const isGroup = params.msg.chatType === "group";
1474
+ const senderE164 = normalizeE164(isGroup ? params.msg.senderE164 ?? "" : params.msg.senderE164 ?? params.msg.from ?? "");
1475
+ if (!senderE164) return false;
1476
+ const account = resolveWhatsAppAccount({
1477
+ cfg: params.cfg,
1478
+ accountId: params.msg.accountId
1479
+ });
1480
+ const dmPolicy = account.dmPolicy ?? "pairing";
1481
+ const configuredAllowFrom = account.allowFrom ?? [];
1482
+ const configuredGroupAllowFrom = account.groupAllowFrom ?? (configuredAllowFrom.length > 0 ? configuredAllowFrom : void 0);
1483
+ if (isGroup) {
1484
+ if (!configuredGroupAllowFrom || configuredGroupAllowFrom.length === 0) return false;
1485
+ if (configuredGroupAllowFrom.some((v) => String(v).trim() === "*")) return true;
1486
+ return normalizeAllowFromE164(configuredGroupAllowFrom).includes(senderE164);
1487
+ }
1488
+ const storeAllowFrom = dmPolicy === "allowlist" ? [] : await readChannelAllowFromStore("whatsapp", process.env, params.msg.accountId).catch(() => []);
1489
+ const combinedAllowFrom = Array.from(new Set([...configuredAllowFrom ?? [], ...storeAllowFrom]));
1490
+ const allowFrom = combinedAllowFrom.length > 0 ? combinedAllowFrom : params.msg.selfE164 ? [params.msg.selfE164] : [];
1491
+ if (allowFrom.some((v) => String(v).trim() === "*")) return true;
1492
+ return normalizeAllowFromE164(allowFrom).includes(senderE164);
1493
+ }
1494
+ async function processMessage(params) {
1495
+ const conversationId = params.msg.conversationId ?? params.msg.from;
1496
+ const storePath = resolveStorePath(params.cfg.session?.store, { agentId: params.route.agentId });
1497
+ const envelopeOptions = resolveEnvelopeFormatOptions(params.cfg);
1498
+ const previousTimestamp = readSessionUpdatedAt({
1499
+ storePath,
1500
+ sessionKey: params.route.sessionKey
1501
+ });
1502
+ let combinedBody = buildInboundLine({
1503
+ cfg: params.cfg,
1504
+ msg: params.msg,
1505
+ agentId: params.route.agentId,
1506
+ previousTimestamp,
1507
+ envelope: envelopeOptions
1508
+ });
1509
+ let shouldClearGroupHistory = false;
1510
+ if (params.msg.chatType === "group") {
1511
+ const history = params.groupHistory ?? params.groupHistories.get(params.groupHistoryKey) ?? [];
1512
+ if (history.length > 0) combinedBody = buildHistoryContextFromEntries({
1513
+ entries: history.map((m) => ({
1514
+ sender: m.sender,
1515
+ body: m.body,
1516
+ timestamp: m.timestamp
1517
+ })),
1518
+ currentMessage: combinedBody,
1519
+ excludeLast: false,
1520
+ formatEntry: (entry) => {
1521
+ return formatInboundEnvelope({
1522
+ channel: "WhatsApp",
1523
+ from: conversationId,
1524
+ timestamp: entry.timestamp,
1525
+ body: entry.body,
1526
+ chatType: "group",
1527
+ senderLabel: entry.sender,
1528
+ envelope: envelopeOptions
1529
+ });
1530
+ }
1531
+ });
1532
+ shouldClearGroupHistory = !(params.suppressGroupHistoryClear ?? false);
1533
+ }
1534
+ const combinedEchoKey = params.buildCombinedEchoKey({
1535
+ sessionKey: params.route.sessionKey,
1536
+ combinedBody
1537
+ });
1538
+ if (params.echoHas(combinedEchoKey)) {
1539
+ logVerbose("Skipping auto-reply: detected echo for combined message");
1540
+ params.echoForget(combinedEchoKey);
1541
+ return false;
1542
+ }
1543
+ maybeSendAckReaction({
1544
+ cfg: params.cfg,
1545
+ msg: params.msg,
1546
+ agentId: params.route.agentId,
1547
+ sessionKey: params.route.sessionKey,
1548
+ conversationId,
1549
+ verbose: params.verbose,
1550
+ accountId: params.route.accountId,
1551
+ info: params.replyLogger.info.bind(params.replyLogger),
1552
+ warn: params.replyLogger.warn.bind(params.replyLogger)
1553
+ });
1554
+ const correlationId = params.msg.id ?? newConnectionId();
1555
+ params.replyLogger.info({
1556
+ connectionId: params.connectionId,
1557
+ correlationId,
1558
+ from: params.msg.chatType === "group" ? conversationId : params.msg.from,
1559
+ to: params.msg.to,
1560
+ body: elide(combinedBody, 240),
1561
+ mediaType: params.msg.mediaType ?? null,
1562
+ mediaPath: params.msg.mediaPath ?? null
1563
+ }, "inbound web message");
1564
+ const fromDisplay = params.msg.chatType === "group" ? conversationId : params.msg.from;
1565
+ const kindLabel = params.msg.mediaType ? `, ${params.msg.mediaType}` : "";
1566
+ whatsappInboundLog.info(`Inbound message ${fromDisplay} -> ${params.msg.to} (${params.msg.chatType}${kindLabel}, ${combinedBody.length} chars)`);
1567
+ if (shouldLogVerbose()) whatsappInboundLog.debug(`Inbound body: ${elide(combinedBody, 400)}`);
1568
+ const dmRouteTarget = params.msg.chatType !== "group" ? (() => {
1569
+ if (params.msg.senderE164) return normalizeE164(params.msg.senderE164);
1570
+ if (params.msg.from.includes("@")) return jidToE164(params.msg.from);
1571
+ return normalizeE164(params.msg.from);
1572
+ })() : void 0;
1573
+ const textLimit = params.maxMediaTextChunkLimit ?? resolveTextChunkLimit(params.cfg, "whatsapp");
1574
+ const chunkMode = resolveChunkMode(params.cfg, "whatsapp", params.route.accountId);
1575
+ const tableMode = resolveMarkdownTableMode({
1576
+ cfg: params.cfg,
1577
+ channel: "whatsapp",
1578
+ accountId: params.route.accountId
1579
+ });
1580
+ const mediaLocalRoots = getAgentScopedMediaLocalRoots(params.cfg, params.route.agentId);
1581
+ let didSendReply = false;
1582
+ const commandAuthorized = shouldComputeCommandAuthorized(params.msg.body, params.cfg) ? await resolveWhatsAppCommandAuthorized({
1583
+ cfg: params.cfg,
1584
+ msg: params.msg
1585
+ }) : void 0;
1586
+ const configuredResponsePrefix = params.cfg.messages?.responsePrefix;
1587
+ const { onModelSelected, ...prefixOptions } = createReplyPrefixOptions({
1588
+ cfg: params.cfg,
1589
+ agentId: params.route.agentId,
1590
+ channel: "whatsapp",
1591
+ accountId: params.route.accountId
1592
+ });
1593
+ const isSelfChat = params.msg.chatType !== "group" && Boolean(params.msg.selfE164) && normalizeE164(params.msg.from) === normalizeE164(params.msg.selfE164 ?? "");
1594
+ const responsePrefix = prefixOptions.responsePrefix ?? (configuredResponsePrefix === void 0 && isSelfChat ? resolveIdentityNamePrefix(params.cfg, params.route.agentId) ?? "[remoteclaw]" : void 0);
1595
+ const inboundHistory = params.msg.chatType === "group" ? (params.groupHistory ?? params.groupHistories.get(params.groupHistoryKey) ?? []).map((entry) => ({
1596
+ sender: entry.sender,
1597
+ body: entry.body,
1598
+ timestamp: entry.timestamp
1599
+ })) : void 0;
1600
+ const ctxPayload = finalizeInboundContext({
1601
+ Body: combinedBody,
1602
+ BodyForAgent: params.msg.body,
1603
+ InboundHistory: inboundHistory,
1604
+ RawBody: params.msg.body,
1605
+ CommandBody: params.msg.body,
1606
+ From: params.msg.from,
1607
+ To: params.msg.to,
1608
+ SessionKey: params.route.sessionKey,
1609
+ AccountId: params.route.accountId,
1610
+ MessageSid: params.msg.id,
1611
+ ReplyToId: params.msg.replyToId,
1612
+ ReplyToBody: params.msg.replyToBody,
1613
+ ReplyToSender: params.msg.replyToSender,
1614
+ MediaPath: params.msg.mediaPath,
1615
+ MediaUrl: params.msg.mediaUrl,
1616
+ MediaType: params.msg.mediaType,
1617
+ ChatType: params.msg.chatType,
1618
+ ConversationLabel: params.msg.chatType === "group" ? conversationId : params.msg.from,
1619
+ GroupSubject: params.msg.groupSubject,
1620
+ GroupMembers: formatGroupMembers({
1621
+ participants: params.msg.groupParticipants,
1622
+ roster: params.groupMemberNames.get(params.groupHistoryKey),
1623
+ fallbackE164: params.msg.senderE164
1624
+ }),
1625
+ SenderName: params.msg.senderName,
1626
+ SenderId: params.msg.senderJid?.trim() || params.msg.senderE164,
1627
+ SenderE164: params.msg.senderE164,
1628
+ CommandAuthorized: commandAuthorized,
1629
+ WasMentioned: params.msg.wasMentioned,
1630
+ ...params.msg.location ? toLocationContext(params.msg.location) : {},
1631
+ Provider: "whatsapp",
1632
+ Surface: "whatsapp",
1633
+ OriginatingChannel: "whatsapp",
1634
+ OriginatingTo: params.msg.from
1635
+ });
1636
+ if (dmRouteTarget && params.route.sessionKey === params.route.mainSessionKey) updateLastRouteInBackground({
1637
+ cfg: params.cfg,
1638
+ backgroundTasks: params.backgroundTasks,
1639
+ storeAgentId: params.route.agentId,
1640
+ sessionKey: params.route.mainSessionKey,
1641
+ channel: "whatsapp",
1642
+ to: dmRouteTarget,
1643
+ accountId: params.route.accountId,
1644
+ ctx: ctxPayload,
1645
+ warn: params.replyLogger.warn.bind(params.replyLogger)
1646
+ });
1647
+ const metaTask = recordSessionMetaFromInbound({
1648
+ storePath,
1649
+ sessionKey: params.route.sessionKey,
1650
+ ctx: ctxPayload
1651
+ }).catch((err) => {
1652
+ params.replyLogger.warn({
1653
+ error: formatError(err),
1654
+ storePath,
1655
+ sessionKey: params.route.sessionKey
1656
+ }, "failed updating session meta");
1657
+ });
1658
+ trackBackgroundTask(params.backgroundTasks, metaTask);
1659
+ const { queuedFinal } = await dispatchReplyWithBufferedBlockDispatcher({
1660
+ ctx: ctxPayload,
1661
+ cfg: params.cfg,
1662
+ replyResolver: params.replyResolver,
1663
+ dispatcherOptions: {
1664
+ ...prefixOptions,
1665
+ responsePrefix,
1666
+ deliver: async (payload, info) => {
1667
+ if (info.kind !== "final") return;
1668
+ await deliverWebReply({
1669
+ replyResult: payload,
1670
+ msg: params.msg,
1671
+ mediaLocalRoots,
1672
+ maxMediaBytes: params.maxMediaBytes,
1673
+ textLimit,
1674
+ chunkMode,
1675
+ replyLogger: params.replyLogger,
1676
+ connectionId: params.connectionId,
1677
+ skipLog: false,
1678
+ tableMode
1679
+ });
1680
+ didSendReply = true;
1681
+ const shouldLog = payload.text ? true : void 0;
1682
+ params.rememberSentText(payload.text, {
1683
+ combinedBody,
1684
+ combinedBodySessionKey: params.route.sessionKey,
1685
+ logVerboseMessage: shouldLog
1686
+ });
1687
+ const fromDisplay = params.msg.chatType === "group" ? conversationId : params.msg.from ?? "unknown";
1688
+ const hasMedia = Boolean(payload.mediaUrl || payload.mediaUrls?.length);
1689
+ whatsappOutboundLog.info(`Auto-replied to ${fromDisplay}${hasMedia ? " (media)" : ""}`);
1690
+ if (shouldLogVerbose()) {
1691
+ const preview = payload.text != null ? elide(payload.text, 400) : "<media>";
1692
+ whatsappOutboundLog.debug(`Reply body: ${preview}${hasMedia ? " (media)" : ""}`);
1693
+ }
1694
+ },
1695
+ onError: (err, info) => {
1696
+ const label = info.kind === "tool" ? "tool update" : info.kind === "block" ? "block update" : "auto-reply";
1697
+ whatsappOutboundLog.error(`Failed sending web ${label} to ${params.msg.from ?? conversationId}: ${formatError(err)}`);
1698
+ },
1699
+ onReplyStart: params.msg.sendComposing
1700
+ },
1701
+ replyOptions: {
1702
+ disableBlockStreaming: true,
1703
+ onModelSelected
1704
+ }
1705
+ });
1706
+ if (!queuedFinal) {
1707
+ if (shouldClearGroupHistory) params.groupHistories.set(params.groupHistoryKey, []);
1708
+ logVerbose("Skipping auto-reply: silent token or no text/media returned from resolver");
1709
+ return false;
1710
+ }
1711
+ if (shouldClearGroupHistory) params.groupHistories.set(params.groupHistoryKey, []);
1712
+ return didSendReply;
1713
+ }
1714
+
1715
+ //#endregion
1716
+ //#region src/web/auto-reply/monitor/on-message.ts
1717
+ function createWebOnMessageHandler(params) {
1718
+ const processForRoute = async (msg, route, groupHistoryKey, opts) => processMessage({
1719
+ cfg: params.cfg,
1720
+ msg,
1721
+ route,
1722
+ groupHistoryKey,
1723
+ groupHistories: params.groupHistories,
1724
+ groupMemberNames: params.groupMemberNames,
1725
+ connectionId: params.connectionId,
1726
+ verbose: params.verbose,
1727
+ maxMediaBytes: params.maxMediaBytes,
1728
+ replyResolver: params.replyResolver,
1729
+ replyLogger: params.replyLogger,
1730
+ backgroundTasks: params.backgroundTasks,
1731
+ rememberSentText: params.echoTracker.rememberText,
1732
+ echoHas: params.echoTracker.has,
1733
+ echoForget: params.echoTracker.forget,
1734
+ buildCombinedEchoKey: params.echoTracker.buildCombinedKey,
1735
+ groupHistory: opts?.groupHistory,
1736
+ suppressGroupHistoryClear: opts?.suppressGroupHistoryClear
1737
+ });
1738
+ return async (msg) => {
1739
+ const conversationId = msg.conversationId ?? msg.from;
1740
+ const peerId = resolvePeerId(msg);
1741
+ const route = resolveAgentRoute({
1742
+ cfg: loadConfig(),
1743
+ channel: "whatsapp",
1744
+ accountId: msg.accountId,
1745
+ peer: {
1746
+ kind: msg.chatType === "group" ? "group" : "direct",
1747
+ id: peerId
1748
+ }
1749
+ });
1750
+ const groupHistoryKey = msg.chatType === "group" ? buildGroupHistoryKey({
1751
+ channel: "whatsapp",
1752
+ accountId: route.accountId,
1753
+ peerKind: "group",
1754
+ peerId
1755
+ }) : route.sessionKey;
1756
+ if (msg.from === msg.to) logVerbose(`📱 Same-phone mode detected (from === to: ${msg.from})`);
1757
+ if (params.echoTracker.has(msg.body)) {
1758
+ logVerbose("Skipping auto-reply: detected echo (message matches recently sent text)");
1759
+ params.echoTracker.forget(msg.body);
1760
+ return;
1761
+ }
1762
+ if (msg.chatType === "group") {
1763
+ const metaCtx = {
1764
+ From: msg.from,
1765
+ To: msg.to,
1766
+ SessionKey: route.sessionKey,
1767
+ AccountId: route.accountId,
1768
+ ChatType: msg.chatType,
1769
+ ConversationLabel: conversationId,
1770
+ GroupSubject: msg.groupSubject,
1771
+ SenderName: msg.senderName,
1772
+ SenderId: msg.senderJid?.trim() || msg.senderE164,
1773
+ SenderE164: msg.senderE164,
1774
+ Provider: "whatsapp",
1775
+ Surface: "whatsapp",
1776
+ OriginatingChannel: "whatsapp",
1777
+ OriginatingTo: conversationId
1778
+ };
1779
+ updateLastRouteInBackground({
1780
+ cfg: params.cfg,
1781
+ backgroundTasks: params.backgroundTasks,
1782
+ storeAgentId: route.agentId,
1783
+ sessionKey: route.sessionKey,
1784
+ channel: "whatsapp",
1785
+ to: conversationId,
1786
+ accountId: route.accountId,
1787
+ ctx: metaCtx,
1788
+ warn: params.replyLogger.warn.bind(params.replyLogger)
1789
+ });
1790
+ if (!applyGroupGating({
1791
+ cfg: params.cfg,
1792
+ msg,
1793
+ conversationId,
1794
+ groupHistoryKey,
1795
+ agentId: route.agentId,
1796
+ sessionKey: route.sessionKey,
1797
+ baseMentionConfig: params.baseMentionConfig,
1798
+ authDir: params.account.authDir,
1799
+ groupHistories: params.groupHistories,
1800
+ groupHistoryLimit: params.groupHistoryLimit,
1801
+ groupMemberNames: params.groupMemberNames,
1802
+ logVerbose,
1803
+ replyLogger: params.replyLogger
1804
+ }).shouldProcess) return;
1805
+ } else if (!msg.senderE164 && peerId && peerId.startsWith("+")) msg.senderE164 = normalizeE164(peerId) ?? msg.senderE164;
1806
+ if (await maybeBroadcastMessage({
1807
+ cfg: params.cfg,
1808
+ msg,
1809
+ peerId,
1810
+ route,
1811
+ groupHistoryKey,
1812
+ groupHistories: params.groupHistories,
1813
+ processMessage: processForRoute
1814
+ })) return;
1815
+ await processForRoute(msg, route, groupHistoryKey);
1816
+ };
1817
+ }
1818
+
1819
+ //#endregion
1820
+ //#region src/web/auto-reply/monitor.ts
1821
+ function isNonRetryableWebCloseStatus(statusCode) {
1822
+ return statusCode === 440;
1823
+ }
1824
+ async function monitorWebChannel(verbose, listenerFactory = monitorWebInbox, keepAlive = true, replyResolver = getReplyFromConfig, runtime = defaultRuntime, abortSignal, tuning = {}) {
1825
+ const runId = newConnectionId();
1826
+ const replyLogger = getChildLogger({
1827
+ module: "web-auto-reply",
1828
+ runId
1829
+ });
1830
+ const heartbeatLogger = getChildLogger({
1831
+ module: "web-heartbeat",
1832
+ runId
1833
+ });
1834
+ const reconnectLogger = getChildLogger({
1835
+ module: "web-reconnect",
1836
+ runId
1837
+ });
1838
+ const status = {
1839
+ running: true,
1840
+ connected: false,
1841
+ reconnectAttempts: 0,
1842
+ lastConnectedAt: null,
1843
+ lastDisconnect: null,
1844
+ lastMessageAt: null,
1845
+ lastEventAt: null,
1846
+ lastError: null
1847
+ };
1848
+ const emitStatus = () => {
1849
+ tuning.statusSink?.({
1850
+ ...status,
1851
+ lastDisconnect: status.lastDisconnect ? { ...status.lastDisconnect } : null
1852
+ });
1853
+ };
1854
+ emitStatus();
1855
+ const baseCfg = loadConfig();
1856
+ const account = resolveWhatsAppAccount({
1857
+ cfg: baseCfg,
1858
+ accountId: tuning.accountId
1859
+ });
1860
+ const cfg = {
1861
+ ...baseCfg,
1862
+ channels: {
1863
+ ...baseCfg.channels,
1864
+ whatsapp: {
1865
+ ...baseCfg.channels?.whatsapp,
1866
+ ackReaction: account.ackReaction,
1867
+ messagePrefix: account.messagePrefix,
1868
+ allowFrom: account.allowFrom,
1869
+ groupAllowFrom: account.groupAllowFrom,
1870
+ groupPolicy: account.groupPolicy,
1871
+ textChunkLimit: account.textChunkLimit,
1872
+ chunkMode: account.chunkMode,
1873
+ mediaMaxMb: account.mediaMaxMb,
1874
+ blockStreaming: account.blockStreaming,
1875
+ groups: account.groups
1876
+ }
1877
+ }
1878
+ };
1879
+ const configuredMaxMb = cfg.agents?.defaults?.mediaMaxMb;
1880
+ const maxMediaBytes = typeof configuredMaxMb === "number" && configuredMaxMb > 0 ? configuredMaxMb * 1024 * 1024 : DEFAULT_WEB_MEDIA_BYTES;
1881
+ const heartbeatSeconds = resolveHeartbeatSeconds(cfg, tuning.heartbeatSeconds);
1882
+ const reconnectPolicy = resolveReconnectPolicy(cfg, tuning.reconnect);
1883
+ const baseMentionConfig = buildMentionConfig(cfg);
1884
+ const groupHistoryLimit = cfg.channels?.whatsapp?.accounts?.[tuning.accountId ?? ""]?.historyLimit ?? cfg.channels?.whatsapp?.historyLimit ?? cfg.messages?.groupChat?.historyLimit ?? DEFAULT_GROUP_HISTORY_LIMIT;
1885
+ const groupHistories = /* @__PURE__ */ new Map();
1886
+ const groupMemberNames = /* @__PURE__ */ new Map();
1887
+ const echoTracker = createEchoTracker({
1888
+ maxItems: 100,
1889
+ logVerbose
1890
+ });
1891
+ const sleep = tuning.sleep ?? ((ms, signal) => sleepWithAbort(ms, signal ?? abortSignal));
1892
+ const stopRequested = () => abortSignal?.aborted === true;
1893
+ const abortPromise = abortSignal && new Promise((resolve) => abortSignal.addEventListener("abort", () => resolve("aborted"), { once: true }));
1894
+ const currentMaxListeners = process.getMaxListeners?.() ?? 10;
1895
+ if (process.setMaxListeners && currentMaxListeners < 50) process.setMaxListeners(50);
1896
+ let sigintStop = false;
1897
+ const handleSigint = () => {
1898
+ sigintStop = true;
1899
+ };
1900
+ process.once("SIGINT", handleSigint);
1901
+ let reconnectAttempts = 0;
1902
+ while (true) {
1903
+ if (stopRequested()) break;
1904
+ const connectionId = newConnectionId();
1905
+ const startedAt = Date.now();
1906
+ let heartbeat = null;
1907
+ let watchdogTimer = null;
1908
+ let lastMessageAt = null;
1909
+ let handledMessages = 0;
1910
+ let unregisterUnhandled = null;
1911
+ const MESSAGE_TIMEOUT_MS = tuning.messageTimeoutMs ?? 1800 * 1e3;
1912
+ const WATCHDOG_CHECK_MS = tuning.watchdogCheckMs ?? 60 * 1e3;
1913
+ const backgroundTasks = /* @__PURE__ */ new Set();
1914
+ const onMessage = createWebOnMessageHandler({
1915
+ cfg,
1916
+ verbose,
1917
+ connectionId,
1918
+ maxMediaBytes,
1919
+ groupHistoryLimit,
1920
+ groupHistories,
1921
+ groupMemberNames,
1922
+ echoTracker,
1923
+ backgroundTasks,
1924
+ replyResolver: replyResolver ?? getReplyFromConfig,
1925
+ replyLogger,
1926
+ baseMentionConfig,
1927
+ account
1928
+ });
1929
+ const inboundDebounceMs = resolveInboundDebounceMs({
1930
+ cfg,
1931
+ channel: "whatsapp"
1932
+ });
1933
+ const shouldDebounce = (msg) => {
1934
+ if (msg.mediaPath || msg.mediaType) return false;
1935
+ if (msg.location) return false;
1936
+ if (msg.replyToId || msg.replyToBody) return false;
1937
+ return !hasControlCommand(msg.body, cfg);
1938
+ };
1939
+ const listener = await (listenerFactory ?? monitorWebInbox)({
1940
+ verbose,
1941
+ accountId: account.accountId,
1942
+ authDir: account.authDir,
1943
+ mediaMaxMb: account.mediaMaxMb,
1944
+ sendReadReceipts: account.sendReadReceipts,
1945
+ debounceMs: inboundDebounceMs,
1946
+ shouldDebounce,
1947
+ onMessage: async (msg) => {
1948
+ handledMessages += 1;
1949
+ lastMessageAt = Date.now();
1950
+ status.lastMessageAt = lastMessageAt;
1951
+ status.lastEventAt = lastMessageAt;
1952
+ emitStatus();
1953
+ await onMessage(msg);
1954
+ }
1955
+ });
1956
+ status.connected = true;
1957
+ status.lastConnectedAt = Date.now();
1958
+ status.lastEventAt = status.lastConnectedAt;
1959
+ status.lastError = null;
1960
+ emitStatus();
1961
+ const { e164: selfE164 } = readWebSelfId(account.authDir);
1962
+ const connectRoute = resolveAgentRoute({
1963
+ cfg,
1964
+ channel: "whatsapp",
1965
+ accountId: account.accountId
1966
+ });
1967
+ enqueueSystemEvent(`WhatsApp gateway connected${selfE164 ? ` as ${selfE164}` : ""}.`, { sessionKey: connectRoute.sessionKey });
1968
+ setActiveWebListener(account.accountId, listener);
1969
+ unregisterUnhandled = registerUnhandledRejectionHandler((reason) => {
1970
+ if (!isLikelyWhatsAppCryptoError(reason)) return false;
1971
+ const errorStr = formatError(reason);
1972
+ reconnectLogger.warn({
1973
+ connectionId,
1974
+ error: errorStr
1975
+ }, "web reconnect: unhandled rejection from WhatsApp socket; forcing reconnect");
1976
+ listener.signalClose?.({
1977
+ status: 499,
1978
+ isLoggedOut: false,
1979
+ error: reason
1980
+ });
1981
+ return true;
1982
+ });
1983
+ const closeListener = async () => {
1984
+ setActiveWebListener(account.accountId, null);
1985
+ if (unregisterUnhandled) {
1986
+ unregisterUnhandled();
1987
+ unregisterUnhandled = null;
1988
+ }
1989
+ if (heartbeat) clearInterval(heartbeat);
1990
+ if (watchdogTimer) clearInterval(watchdogTimer);
1991
+ if (backgroundTasks.size > 0) {
1992
+ await Promise.allSettled(backgroundTasks);
1993
+ backgroundTasks.clear();
1994
+ }
1995
+ try {
1996
+ await listener.close();
1997
+ } catch (err) {
1998
+ logVerbose(`Socket close failed: ${formatError(err)}`);
1999
+ }
2000
+ };
2001
+ if (keepAlive) {
2002
+ heartbeat = setInterval(() => {
2003
+ const authAgeMs = getWebAuthAgeMs(account.authDir);
2004
+ const minutesSinceLastMessage = lastMessageAt ? Math.floor((Date.now() - lastMessageAt) / 6e4) : null;
2005
+ const logData = {
2006
+ connectionId,
2007
+ reconnectAttempts,
2008
+ messagesHandled: handledMessages,
2009
+ lastMessageAt,
2010
+ authAgeMs,
2011
+ uptimeMs: Date.now() - startedAt,
2012
+ ...minutesSinceLastMessage !== null && minutesSinceLastMessage > 30 ? { minutesSinceLastMessage } : {}
2013
+ };
2014
+ if (minutesSinceLastMessage && minutesSinceLastMessage > 30) heartbeatLogger.warn(logData, "⚠️ web gateway heartbeat - no messages in 30+ minutes");
2015
+ else heartbeatLogger.info(logData, "web gateway heartbeat");
2016
+ }, heartbeatSeconds * 1e3);
2017
+ watchdogTimer = setInterval(() => {
2018
+ if (!lastMessageAt) return;
2019
+ const timeSinceLastMessage = Date.now() - lastMessageAt;
2020
+ if (timeSinceLastMessage <= MESSAGE_TIMEOUT_MS) return;
2021
+ const minutesSinceLastMessage = Math.floor(timeSinceLastMessage / 6e4);
2022
+ heartbeatLogger.warn({
2023
+ connectionId,
2024
+ minutesSinceLastMessage,
2025
+ lastMessageAt: new Date(lastMessageAt),
2026
+ messagesHandled: handledMessages
2027
+ }, "Message timeout detected - forcing reconnect");
2028
+ whatsappHeartbeatLog.warn(`No messages received in ${minutesSinceLastMessage}m - restarting connection`);
2029
+ closeListener().catch((err) => {
2030
+ logVerbose(`Close listener failed: ${formatError(err)}`);
2031
+ });
2032
+ listener.signalClose?.({
2033
+ status: 499,
2034
+ isLoggedOut: false,
2035
+ error: "watchdog-timeout"
2036
+ });
2037
+ }, WATCHDOG_CHECK_MS);
2038
+ }
2039
+ whatsappLog.info("Listening for personal WhatsApp inbound messages.");
2040
+ if (process.stdout.isTTY || process.stderr.isTTY) whatsappLog.raw("Ctrl+C to stop.");
2041
+ if (!keepAlive) {
2042
+ await closeListener();
2043
+ process.removeListener("SIGINT", handleSigint);
2044
+ return;
2045
+ }
2046
+ const reason = await Promise.race([listener.onClose?.catch((err) => {
2047
+ reconnectLogger.error({ error: formatError(err) }, "listener.onClose rejected");
2048
+ return {
2049
+ status: 500,
2050
+ isLoggedOut: false,
2051
+ error: err
2052
+ };
2053
+ }) ?? waitForever(), abortPromise ?? waitForever()]);
2054
+ if (Date.now() - startedAt > heartbeatSeconds * 1e3) reconnectAttempts = 0;
2055
+ status.reconnectAttempts = reconnectAttempts;
2056
+ emitStatus();
2057
+ if (stopRequested() || sigintStop || reason === "aborted") {
2058
+ await closeListener();
2059
+ break;
2060
+ }
2061
+ const statusCode = (typeof reason === "object" && reason && "status" in reason ? reason.status : void 0) ?? "unknown";
2062
+ const loggedOut = typeof reason === "object" && reason && "isLoggedOut" in reason && reason.isLoggedOut;
2063
+ const errorStr = formatError(reason);
2064
+ status.connected = false;
2065
+ status.lastEventAt = Date.now();
2066
+ status.lastDisconnect = {
2067
+ at: status.lastEventAt,
2068
+ status: typeof statusCode === "number" ? statusCode : void 0,
2069
+ error: errorStr,
2070
+ loggedOut: Boolean(loggedOut)
2071
+ };
2072
+ status.lastError = errorStr;
2073
+ status.reconnectAttempts = reconnectAttempts;
2074
+ emitStatus();
2075
+ reconnectLogger.info({
2076
+ connectionId,
2077
+ status: statusCode,
2078
+ loggedOut,
2079
+ reconnectAttempts,
2080
+ error: errorStr
2081
+ }, "web reconnect: connection closed");
2082
+ enqueueSystemEvent(`WhatsApp gateway disconnected (status ${statusCode ?? "unknown"})`, { sessionKey: connectRoute.sessionKey });
2083
+ if (loggedOut) {
2084
+ runtime.error(`WhatsApp session logged out. Run \`${formatCliCommand("remoteclaw channels login --channel web")}\` to relink.`);
2085
+ await closeListener();
2086
+ break;
2087
+ }
2088
+ if (isNonRetryableWebCloseStatus(statusCode)) {
2089
+ reconnectLogger.warn({
2090
+ connectionId,
2091
+ status: statusCode,
2092
+ error: errorStr
2093
+ }, "web reconnect: non-retryable close status; stopping monitor");
2094
+ runtime.error(`WhatsApp Web connection closed (status ${statusCode}: session conflict). Resolve conflicting WhatsApp Web sessions, then relink with \`${formatCliCommand("remoteclaw channels login --channel web")}\`. Stopping web monitoring.`);
2095
+ await closeListener();
2096
+ break;
2097
+ }
2098
+ reconnectAttempts += 1;
2099
+ status.reconnectAttempts = reconnectAttempts;
2100
+ emitStatus();
2101
+ if (reconnectPolicy.maxAttempts > 0 && reconnectAttempts >= reconnectPolicy.maxAttempts) {
2102
+ reconnectLogger.warn({
2103
+ connectionId,
2104
+ status: statusCode,
2105
+ reconnectAttempts,
2106
+ maxAttempts: reconnectPolicy.maxAttempts
2107
+ }, "web reconnect: max attempts reached; continuing in degraded mode");
2108
+ runtime.error(`WhatsApp Web reconnect: max attempts reached (${reconnectAttempts}/${reconnectPolicy.maxAttempts}). Stopping web monitoring.`);
2109
+ await closeListener();
2110
+ break;
2111
+ }
2112
+ const delay = computeBackoff(reconnectPolicy, reconnectAttempts);
2113
+ reconnectLogger.info({
2114
+ connectionId,
2115
+ status: statusCode,
2116
+ reconnectAttempts,
2117
+ maxAttempts: reconnectPolicy.maxAttempts || "unlimited",
2118
+ delayMs: delay
2119
+ }, "web reconnect: scheduling retry");
2120
+ runtime.error(`WhatsApp Web connection closed (status ${statusCode}). Retry ${reconnectAttempts}/${reconnectPolicy.maxAttempts || "∞"} in ${formatDurationPrecise(delay)}… (${errorStr})`);
2121
+ await closeListener();
2122
+ try {
2123
+ await sleep(delay, abortSignal);
2124
+ } catch {
2125
+ break;
2126
+ }
2127
+ }
2128
+ status.running = false;
2129
+ status.connected = false;
2130
+ status.lastEventAt = Date.now();
2131
+ emitStatus();
2132
+ process.removeListener("SIGINT", handleSigint);
2133
+ }
2134
+
2135
+ //#endregion
2136
+ export { monitorWebInbox as n, waitForever as r, monitorWebChannel as t };