remoteclaw 0.0.0 → 0.1.0-next.aa1fa55

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 +22 -0
  3. package/README.md +484 -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-C1hk85VE.js +446 -0
  28. package/dist/ack-reactions-DRC2CiDQ.js +446 -0
  29. package/dist/acp-cli-DD-PD4NM.js +1326 -0
  30. package/dist/acp-cli-DIyRCOum.js +1320 -0
  31. package/dist/active-listener-VzhWW8W6.js +37 -0
  32. package/dist/active-listener-z0qVEcom.js +37 -0
  33. package/dist/agent-D2HeDFFR.js +731 -0
  34. package/dist/agent-Da_eZ5BP.js +732 -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-BqPmD-Ax.js +114 -0
  38. package/dist/agent-scope-DgQzamQB.js +116 -0
  39. package/dist/agents-TB3QpHoo.js +788 -0
  40. package/dist/agents.config-BsAQTYe1.js +116 -0
  41. package/dist/agents.config-C9fyYfAh.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-CK3EA3Dv.js +69 -0
  49. package/dist/audio-preflight-tdXtrutj.js +64 -0
  50. package/dist/audit-CJipUWDi.js +3138 -0
  51. package/dist/audit-COWzB9Y1.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-CUWBOR42.js +294 -0
  57. package/dist/binaries-DXW6oATV.js +13 -0
  58. package/dist/bindings-8YtSWb91.js +69 -0
  59. package/dist/bindings-l1R5LQQH.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-5Q9lhGdd.js +1687 -0
  66. package/dist/browser-cli-D2qMeSx1.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-CZHVeMf1.js +2828 -0
  71. package/dist/call-CoMjY7ah.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-CYiAleBT.js +185 -0
  76. package/dist/catalog-pjPqB2hC.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-8SjIcDDI.js +33 -0
  83. package/dist/channel-options-BtQGtMF4.js +32 -0
  84. package/dist/channel-selection-C4DzrynU.js +51 -0
  85. package/dist/channel-selection-DdfhwFuY.js +51 -0
  86. package/dist/channel-web-BKJSXnwf.js +2136 -0
  87. package/dist/channel-web-BUzvNE_A.js +2134 -0
  88. package/dist/channels-cli-CCXY796Z.js +1421 -0
  89. package/dist/channels-cli-DTfx1zFC.js +1426 -0
  90. package/dist/channels-status-issues-DnmuqPsi.js +18 -0
  91. package/dist/channels-status-issues-p1pCvTh8.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-Dd4dv0Vh.js +1732 -0
  97. package/dist/chrome-DdNEInwI.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-BRwDPW0r.js +125 -0
  106. package/dist/cli-CV86F7iv.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-BvLC28b4.js +215 -0
  121. package/dist/commands-B49Lu-pa.js +41 -0
  122. package/dist/commands-DI1BCqnj.js +41 -0
  123. package/dist/commands-registry-Cr6SIR3n.js +892 -0
  124. package/dist/commands-registry-agiTEGDz.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-C7O4JU8t.js +452 -0
  128. package/dist/completion-cli-CQNXtEJ7.js +452 -0
  129. package/dist/config-ChYRSJQt.js +6953 -0
  130. package/dist/config-CwtWvygh.js +6951 -0
  131. package/dist/config-cli-Df5nJcfO.js +241 -0
  132. package/dist/config-cli-Dqe5O1pl.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-C6hyuH-z.js +75 -0
  136. package/dist/config-guard-kNMQS_tm.js +97 -0
  137. package/dist/config-validation-BZBaBH69.js +18 -0
  138. package/dist/config-validation-DkrbzCyL.js +18 -0
  139. package/dist/configure-CoJmCHqT.js +891 -0
  140. package/dist/configure-DJbojDRf.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-7k6Cb2zH.js +397 -0
  146. package/dist/control-auth-DBxfkJ3g.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-BJXQKtR3.js +495 -0
  168. package/dist/cron-cli-CTIj0WPW.js +490 -0
  169. package/dist/daemon-cli-CZbHvkRG.js +1197 -0
  170. package/dist/daemon-cli-Cf_YKWvV.js +1199 -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-BDf2lIEK.js +481 -0
  185. package/dist/deliver-DvmkSwLt.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-CRsW5WOw.js +316 -0
  189. package/dist/devices-cli-Crzrk5uf.js +321 -0
  190. package/dist/diagnostics-99iCgBUh.js +46 -0
  191. package/dist/diagnostics-VC0cz7kX.js +46 -0
  192. package/dist/directory-cli-BnoQqeOX.js +222 -0
  193. package/dist/directory-cli-DdBAX3AV.js +217 -0
  194. package/dist/dm-policy-shared-DNqPbnip.js +22 -0
  195. package/dist/dm-policy-shared-vCb_hnqo.js +22 -0
  196. package/dist/dns-cli-D410XQr9.js +197 -0
  197. package/dist/dns-cli-Fgg96Xkg.js +202 -0
  198. package/dist/dock-DXSgTbDw.js +928 -0
  199. package/dist/dock-FtQwUHXE.js +929 -0
  200. package/dist/doctor-completion-BWmtCiFR.js +92 -0
  201. package/dist/doctor-completion-DTM_wDxy.js +92 -0
  202. package/dist/doctor-config-flow-Ccna5fPs.js +1934 -0
  203. package/dist/doctor-config-flow-DqzrK_jh.js +1933 -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-BJooqlkO.js +23747 -0
  235. package/dist/gateway-cli-C2wPjxY4.js +23742 -0
  236. package/dist/gateway-rpc-BcT4FqJQ.js +28 -0
  237. package/dist/gateway-rpc-DhKAJ5EW.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-BZX-PyP0.js +1420 -0
  241. package/dist/health-BgD0koJx.js +1423 -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-DeW9EIeS.js +125 -0
  245. package/dist/heartbeat-visibility-DvogUlnZ.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-cyaKukZP.js +527 -0
  255. package/dist/hooks-cli-DTygpzqS.js +1217 -0
  256. package/dist/hooks-cli-Dg853OdZ.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-ClX3qQmh.js +325 -0
  273. package/dist/installs-CxjOiLUM.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-BvKdMuSP.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-BWZ_iRxI.js +22624 -0
  289. package/dist/loader-ClFP7wvS.js +22621 -0
  290. package/dist/local-roots-B6rSCu4U.js +314 -0
  291. package/dist/local-roots-v2HlOaG5.js +313 -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-Cmpeb59f.js +62 -0
  301. package/dist/login-D1CV2eNF.js +61 -0
  302. package/dist/login-qr-B3tpFLRV.js +327 -0
  303. package/dist/login-qr-CSQzrtFX.js +322 -0
  304. package/dist/logs-cli-BSiUZwb2.js +238 -0
  305. package/dist/logs-cli-DDtoJ1Fr.js +233 -0
  306. package/dist/markdown-tables-PJUMrC4T.js +29 -0
  307. package/dist/markdown-tables-dDWBbtqd.js +29 -0
  308. package/dist/media-CojxZ45J.js +10492 -0
  309. package/dist/media-DtN0R9A0.js +940 -0
  310. package/dist/message-action-names-Bs50Ia1g.js +2521 -0
  311. package/dist/message-action-names-Btd7cMvx.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-DVLvMgBV.js +1343 -0
  323. package/dist/nodes-cli-Dxf7vAKk.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-DJnq5QBs.js +86 -0
  331. package/dist/npm-resolution-DVl2spoD.js +86 -0
  332. package/dist/onboard-BcQWYGY3.js +405 -0
  333. package/dist/onboard-RQ_FAMyg.js +407 -0
  334. package/dist/onboard-channels-CHh_BuxJ.js +2547 -0
  335. package/dist/onboard-channels-DXD-CK_M.js +2548 -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-BRMP8mup.js +362 -0
  339. package/dist/onboard-helpers-CUGbuZwH.js +363 -0
  340. package/dist/onboard-remote-D-qWujdL.js +127 -0
  341. package/dist/onboard-remote-o_OW-uzc.js +127 -0
  342. package/dist/onboarding-Bf9kVcef.js +541 -0
  343. package/dist/onboarding-CVlOLLp1.js +543 -0
  344. package/dist/onboarding.finalize-CQSt37fw.js +398 -0
  345. package/dist/onboarding.finalize-DggVL7Ay.js +401 -0
  346. package/dist/onboarding.gateway-config-BLca3Td2.js +198 -0
  347. package/dist/onboarding.gateway-config-C1mcOkRh.js +191 -0
  348. package/dist/outbound-DXXccLDS.js +220 -0
  349. package/dist/outbound-ZnVvUReT.js +221 -0
  350. package/dist/outbound-attachment-B_0D60Yr.js +18 -0
  351. package/dist/outbound-attachment-CfRb07J7.js +18 -0
  352. package/dist/outbound-attachment-DGXTtERK.js +18 -0
  353. package/dist/pairing-cli-Bgm4fRA3.js +127 -0
  354. package/dist/pairing-cli-J0uGb1nU.js +122 -0
  355. package/dist/pairing-labels-CVm65Jkh.js +9 -0
  356. package/dist/pairing-labels-DD1mcvQG.js +9 -0
  357. package/dist/pairing-store-5qapT5-t.js +460 -0
  358. package/dist/pairing-store-MLceBEeL.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-BUSF117F.js +301 -0
  371. package/dist/plugin-auto-enable-CoDnqA0S.js +302 -0
  372. package/dist/plugin-registry-D2B6nbn1.js +33 -0
  373. package/dist/plugin-registry-fLaMC0ik.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 +60 -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-CsYMlnVa.js +455 -0
  1418. package/dist/plugins-Dhit-VHt.js +453 -0
  1419. package/dist/plugins-allowlist-BbTQ5Z2k.js +15 -0
  1420. package/dist/plugins-allowlist-C20oaESO.js +15 -0
  1421. package/dist/plugins-cli-BwuvKtN-.js +798 -0
  1422. package/dist/plugins-cli-D34k2VsI.js +793 -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-C5ukTU6N.js +244 -0
  1433. package/dist/program-context-D55P0vBV.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-WStiI-bz.js +1647 -0
  1440. package/dist/prompt-select-styled-ram-aXWu.js +1650 -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-epFKwpGK.js +659 -0
  1444. package/dist/provider-dispatcher-vEBMmwZ0.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-TygsEDgY.js +1906 -0
  1452. package/dist/pw-ai-eS0sIkZo.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-B8sYhugo.js +352 -0
  1456. package/dist/qr-cli-yP8i4Iv1.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-gOLgfKp3.js +2028 -0
  1462. package/dist/redact-snapshot-uT-CXbM8.js +2028 -0
  1463. package/dist/register.agent-CSoigVGq.js +1043 -0
  1464. package/dist/register.agent-GZLrbUPm.js +286 -0
  1465. package/dist/register.configure-CXpiRohq.js +124 -0
  1466. package/dist/register.configure-RaqiHe5L.js +130 -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-B-ZLQ56Y.js +494 -0
  1470. package/dist/register.maintenance-Bjr_SmG9.js +497 -0
  1471. package/dist/register.message-BCQ8Vg4O.js +686 -0
  1472. package/dist/register.message-ChhiSr7g.js +681 -0
  1473. package/dist/register.onboard-DJCqNufv.js +257 -0
  1474. package/dist/register.onboard-jlxjsrv6.js +262 -0
  1475. package/dist/register.setup-C-sdixz5.js +114 -0
  1476. package/dist/register.setup-Dwpe4ArC.js +109 -0
  1477. package/dist/register.status-health-sessions-BWFRHBCZ.js +669 -0
  1478. package/dist/register.status-health-sessions-D7noMz9y.js +423 -0
  1479. package/dist/register.subclis-DFI5u4a6.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-Bzcj-R8d.js +136 -0
  1486. package/dist/replies-uvTI-4lg.js +136 -0
  1487. package/dist/reply-B9qz9Wwk.js +13897 -0
  1488. package/dist/reply-CmGAXQKc.js +13900 -0
  1489. package/dist/reply-directives-Be97YiyM.js +182 -0
  1490. package/dist/reply-directives-DsLughUT.js +182 -0
  1491. package/dist/reply-payloads-DW0YgT82.js +527 -0
  1492. package/dist/reply-prefix-BzoT8h8o.js +38 -0
  1493. package/dist/reply-prefix-CSaiVnkC.js +38 -0
  1494. package/dist/resolve-route-2P40JKXk.js +249 -0
  1495. package/dist/resolve-route-_CwEKLq6.js +249 -0
  1496. package/dist/response-prefix-template-BAlvtSjL.js +136 -0
  1497. package/dist/response-prefix-template-D-tls8tI.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-B-O5ZtbU.js +320 -0
  1503. package/dist/runner-DGkTSlOS.js +2294 -0
  1504. package/dist/runner-hs4uxAUP.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-1iY1lW6F.js +484 -0
  1514. package/dist/security-cli-BuiPPQYU.js +478 -0
  1515. package/dist/send-3lgWtHHf.js +349 -0
  1516. package/dist/send-9NV7sSlD.js +2245 -0
  1517. package/dist/send-B0TcjZUD.js +1778 -0
  1518. package/dist/send-B84axiIa.js +29 -0
  1519. package/dist/send-Bb6K_10X.js +2245 -0
  1520. package/dist/send-BqVOxAmK.js +1174 -0
  1521. package/dist/send-CGXyTF22.js +426 -0
  1522. package/dist/send-CKavrhXj.js +11 -0
  1523. package/dist/send-Caz-txXK.js +492 -0
  1524. package/dist/send-D08Je6DL.js +374 -0
  1525. package/dist/send-D1aYEG-k.js +332 -0
  1526. package/dist/send-DJEr4rP6.js +547 -0
  1527. package/dist/send-DJiDHXsu.js +349 -0
  1528. package/dist/send-DOjg7kJj.js +1775 -0
  1529. package/dist/send-Dc_K995l.js +547 -0
  1530. package/dist/send-iPAfbiYM.js +492 -0
  1531. package/dist/server-B0IC-Osg.js +205 -0
  1532. package/dist/server-MccRxMpb.js +200 -0
  1533. package/dist/server-lifecycle-C_0CfoP7.js +2437 -0
  1534. package/dist/server-lifecycle-IKdGw1kM.js +2437 -0
  1535. package/dist/server-node-events-Czr2gXp_.js +393 -0
  1536. package/dist/server-node-events-DFG6cXud.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-C7BtKlun.js +625 -0
  1547. package/dist/session-utils-CLe1dano.js +625 -0
  1548. package/dist/session-xKIW6gL2.js +170 -0
  1549. package/dist/sessions-C65iUuN9.js +2593 -0
  1550. package/dist/sessions-DjZ9IshB.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-C6ghjxvX.js +2072 -0
  1558. package/dist/status-D-qTB8aZ.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-uRA67h-o.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-BTG1aAZ8.js +4860 -0
  1568. package/dist/subagent-registry-CoclNL5c.js +4858 -0
  1569. package/dist/subsystem-BUXAJwPD.js +1079 -0
  1570. package/dist/subsystem-COd61u0P.js +1139 -0
  1571. package/dist/system-cli-C__5QOMX.js +70 -0
  1572. package/dist/system-cli-Dr4XoVTq.js +75 -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-BQ-CvUfT.js +55 -0
  1580. package/dist/tables-D3zdgEuK.js +55 -0
  1581. package/dist/tables-PxcSPSO0.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-B_0Y1i-1.js +2173 -0
  1590. package/dist/targets-C-2xwh9f.js +45 -0
  1591. package/dist/targets-C1NeMn2J.js +220 -0
  1592. package/dist/targets-CTmhieRB.js +650 -0
  1593. package/dist/targets-CcTME3bp.js +46 -0
  1594. package/dist/targets-CmC5m7Ey.js +53 -0
  1595. package/dist/targets-D-qLBpTA.js +79 -0
  1596. package/dist/targets-D7PT_rdO.js +45 -0
  1597. package/dist/targets-DtiQgjEL.js +2172 -0
  1598. package/dist/targets-DyybKefq.js +53 -0
  1599. package/dist/targets-JCISV-hS.js +120 -0
  1600. package/dist/targets-UncQvCVs.js +79 -0
  1601. package/dist/targets-rDolm5YS.js +650 -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-BSDCI2hh.js +3392 -0
  1613. package/dist/tui-DT7hLOBk.js +3392 -0
  1614. package/dist/tui-cli-DUWvLaoG.js +58 -0
  1615. package/dist/tui-cli-Dn2iXQTO.js +63 -0
  1616. package/dist/update-Bgl3Pk2N.js +349 -0
  1617. package/dist/update-CFPFib4P.js +349 -0
  1618. package/dist/update-cli-DSDSQ2Xi.js +1373 -0
  1619. package/dist/update-cli-DYR_7NLy.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-BECD5Akw.js +70 -0
  1628. package/dist/web-BUYUdnRH.js +3065 -0
  1629. package/dist/web-KP-TI2sO.js +76 -0
  1630. package/dist/webhooks-cli-BqoG_i-D.js +328 -0
  1631. package/dist/webhooks-cli-Ddu7dfdE.js +333 -0
  1632. package/dist/whatsapp-actions-BZLIjQ8J.js +122 -0
  1633. package/dist/whatsapp-actions-KCc1vHN5.js +128 -0
  1634. package/dist/widearea-dns-CsmBVbez.js +127 -0
  1635. package/dist/widearea-dns-DSoaA-eH.js +127 -0
  1636. package/dist/workspace-4EaHHEWi.js +447 -0
  1637. package/dist/workspace-B_1t_yq3.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,2134 @@
1
+ import { Q as normalizeE164, U as clamp, X as isSelfChatMode, Z as jidToE164, _ as defaultRuntime, ct as toWhatsappJid, ht as logVerbose, nt as resolveJidToE164, o as createSubsystemLogger, st as sleep, vt as shouldLogVerbose, wt as getChildLogger } from "./entry.js";
2
+ import { t as formatCliCommand } from "./command-format-CVfo8I5f.js";
3
+ import { a as buildGroupHistoryKey, n as DEFAULT_MAIN_KEY, r as buildAgentMainSessionKey, s as normalizeAgentId } from "./session-key-C2n-VILA.js";
4
+ import { i as loadConfig } from "./config-CwtWvygh.js";
5
+ import { a as resolveChannelGroupRequireMention, i as resolveChannelGroupPolicy } from "./dock-DXSgTbDw.js";
6
+ import { d as readSessionUpdatedAt, f as recordSessionMetaFromInbound, h as updateLastRoute, l as loadSessionStore, rt as resolveGroupSessionKey } from "./sessions-C65iUuN9.js";
7
+ import { i as resolveWhatsAppAccount, p as readWebSelfId, s as getWebAuthAgeMs } from "./accounts-BTXSfPWi.js";
8
+ import { m as resolveStorePath } from "./chat-envelope-DEZ-5RY8.js";
9
+ import { c as resolveIdentityNamePrefix, l as resolveMessagePrefix } from "./response-prefix-template-D-tls8tI.js";
10
+ import { A as buildMentionRegexes, N as normalizeMentionText, Q as parseActivationCommand, Z as normalizeGroupActivation, _ as shouldComputeCommandAuthorized, h as hasControlCommand, t as getReplyFromConfig } from "./reply-B9qz9Wwk.js";
11
+ import { n as resolveMarkdownTableMode } from "./markdown-tables-dDWBbtqd.js";
12
+ import { c as resolveChunkMode, i as chunkMarkdownTextWithMode, l as resolveTextChunkLimit } from "./chunk-CSQfUhgF.js";
13
+ import { t as loadWebMedia } from "./media-DtN0R9A0.js";
14
+ import { t as convertMarkdownTables } from "./tables-D3zdgEuK.js";
15
+ import { i as markdownToWhatsApp, r as sendReactionWhatsApp } from "./outbound-DXXccLDS.js";
16
+ import { r as setActiveWebListener } from "./active-listener-z0qVEcom.js";
17
+ import { t as getAgentScopedMediaLocalRoots } from "./local-roots-v2HlOaG5.js";
18
+ import { t as finalizeInboundContext } from "./inbound-context-DS_kpIYI.js";
19
+ import { f as registerUnhandledRejectionHandler } from "./runner-DGkTSlOS.js";
20
+ import { h as enqueueSystemEvent } from "./targets-DtiQgjEL.js";
21
+ import { i as readChannelAllowFromStore, s as upsertChannelPairingRequest } from "./pairing-store-MLceBEeL.js";
22
+ import { n as recordChannelActivity } from "./channel-activity-DTKGf3j5.js";
23
+ import { l as createDedupeCache, t as dispatchReplyWithBufferedBlockDispatcher } from "./provider-dispatcher-epFKwpGK.js";
24
+ import { n as saveMediaBuffer } from "./store-v3P-OWhi.js";
25
+ import { t as createReplyPrefixOptions } from "./reply-prefix-CSaiVnkC.js";
26
+ 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-DRC2CiDQ.js";
27
+ import { i as waitForWaConnection, n as formatError, r as getStatusCode, t as createWaSocket } from "./session-DBL5nHDy.js";
28
+ import { n as formatDurationPrecise } from "./format-duration-CqUERz51.js";
29
+ import { n as resolveAgentRoute, t as buildAgentSessionKey } from "./resolve-route-_CwEKLq6.js";
30
+ import { n as toLocationContext, t as formatLocationText } from "./location-GbZ0bBRU.js";
31
+ import { randomUUID } from "node:crypto";
32
+ import { DisconnectReason, downloadMediaMessage, extractMessageContent, getContentType, isJidGroup, normalizeMessageContent } from "@whiskeysockets/baileys";
33
+
34
+ //#region src/web/auto-reply/constants.ts
35
+ const DEFAULT_WEB_MEDIA_BYTES = 5 * 1024 * 1024;
36
+
37
+ //#endregion
38
+ //#region src/web/reconnect.ts
39
+ const DEFAULT_HEARTBEAT_SECONDS = 60;
40
+ const DEFAULT_RECONNECT_POLICY = {
41
+ initialMs: 2e3,
42
+ maxMs: 3e4,
43
+ factor: 1.8,
44
+ jitter: .25,
45
+ maxAttempts: 12
46
+ };
47
+ function resolveHeartbeatSeconds(cfg, overrideSeconds) {
48
+ const candidate = overrideSeconds ?? cfg.web?.heartbeatSeconds;
49
+ if (typeof candidate === "number" && candidate > 0) return candidate;
50
+ return DEFAULT_HEARTBEAT_SECONDS;
51
+ }
52
+ function resolveReconnectPolicy(cfg, overrides) {
53
+ const reconnectOverrides = cfg.web?.reconnect ?? {};
54
+ const overrideConfig = overrides ?? {};
55
+ const merged = {
56
+ ...DEFAULT_RECONNECT_POLICY,
57
+ ...reconnectOverrides,
58
+ ...overrideConfig
59
+ };
60
+ merged.initialMs = Math.max(250, merged.initialMs);
61
+ merged.maxMs = Math.max(merged.initialMs, merged.maxMs);
62
+ merged.factor = clamp(merged.factor, 1.1, 10);
63
+ merged.jitter = clamp(merged.jitter, 0, 1);
64
+ merged.maxAttempts = Math.max(0, Math.floor(merged.maxAttempts));
65
+ return merged;
66
+ }
67
+ function newConnectionId() {
68
+ return randomUUID();
69
+ }
70
+
71
+ //#endregion
72
+ //#region src/web/auto-reply/loggers.ts
73
+ const whatsappLog = createSubsystemLogger("gateway/channels/whatsapp");
74
+ const whatsappInboundLog = whatsappLog.child("inbound");
75
+ const whatsappOutboundLog = whatsappLog.child("outbound");
76
+ const whatsappHeartbeatLog = whatsappLog.child("heartbeat");
77
+
78
+ //#endregion
79
+ //#region src/cli/wait.ts
80
+ function waitForever() {
81
+ setInterval(() => {}, 1e6).unref();
82
+ return new Promise(() => {});
83
+ }
84
+
85
+ //#endregion
86
+ //#region src/web/inbound/dedupe.ts
87
+ const recentInboundMessages = createDedupeCache({
88
+ ttlMs: 20 * 6e4,
89
+ maxSize: 5e3
90
+ });
91
+ function isRecentInboundMessage(key) {
92
+ return recentInboundMessages.check(key);
93
+ }
94
+
95
+ //#endregion
96
+ //#region src/web/vcard.ts
97
+ const ALLOWED_VCARD_KEYS = new Set([
98
+ "FN",
99
+ "N",
100
+ "TEL"
101
+ ]);
102
+ function parseVcard(vcard) {
103
+ if (!vcard) return { phones: [] };
104
+ const lines = vcard.split(/\r?\n/);
105
+ let nameFromN;
106
+ let nameFromFn;
107
+ const phones = [];
108
+ for (const rawLine of lines) {
109
+ const line = rawLine.trim();
110
+ if (!line) continue;
111
+ const colonIndex = line.indexOf(":");
112
+ if (colonIndex === -1) continue;
113
+ const key = line.slice(0, colonIndex).toUpperCase();
114
+ const rawValue = line.slice(colonIndex + 1).trim();
115
+ if (!rawValue) continue;
116
+ const baseKey = normalizeVcardKey(key);
117
+ if (!baseKey || !ALLOWED_VCARD_KEYS.has(baseKey)) continue;
118
+ const value = cleanVcardValue(rawValue);
119
+ if (!value) continue;
120
+ if (baseKey === "FN" && !nameFromFn) {
121
+ nameFromFn = normalizeVcardName(value);
122
+ continue;
123
+ }
124
+ if (baseKey === "N" && !nameFromN) {
125
+ nameFromN = normalizeVcardName(value);
126
+ continue;
127
+ }
128
+ if (baseKey === "TEL") {
129
+ const phone = normalizeVcardPhone(value);
130
+ if (phone) phones.push(phone);
131
+ }
132
+ }
133
+ return {
134
+ name: nameFromFn ?? nameFromN,
135
+ phones
136
+ };
137
+ }
138
+ function normalizeVcardKey(key) {
139
+ const [primary] = key.split(";");
140
+ if (!primary) return;
141
+ const segments = primary.split(".");
142
+ return segments[segments.length - 1] || void 0;
143
+ }
144
+ function cleanVcardValue(value) {
145
+ return value.replace(/\\n/gi, " ").replace(/\\,/g, ",").replace(/\\;/g, ";").trim();
146
+ }
147
+ function normalizeVcardName(value) {
148
+ return value.replace(/;/g, " ").replace(/\s+/g, " ").trim();
149
+ }
150
+ function normalizeVcardPhone(value) {
151
+ const trimmed = value.trim();
152
+ if (!trimmed) return "";
153
+ if (trimmed.toLowerCase().startsWith("tel:")) return trimmed.slice(4).trim();
154
+ return trimmed;
155
+ }
156
+
157
+ //#endregion
158
+ //#region src/web/inbound/extract.ts
159
+ function unwrapMessage$1(message) {
160
+ return normalizeMessageContent(message);
161
+ }
162
+ function extractContextInfo(message) {
163
+ if (!message) return;
164
+ const contentType = getContentType(message);
165
+ const candidate = contentType ? message[contentType] : void 0;
166
+ const contextInfo = candidate && typeof candidate === "object" && "contextInfo" in candidate ? candidate.contextInfo : void 0;
167
+ if (contextInfo) return contextInfo;
168
+ 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;
169
+ if (fallback) return fallback;
170
+ for (const value of Object.values(message)) {
171
+ if (!value || typeof value !== "object") continue;
172
+ if (!("contextInfo" in value)) continue;
173
+ const candidateContext = value.contextInfo;
174
+ if (candidateContext) return candidateContext;
175
+ }
176
+ }
177
+ function extractMentionedJids(rawMessage) {
178
+ const message = unwrapMessage$1(rawMessage);
179
+ if (!message) return;
180
+ const flattened = [
181
+ message.extendedTextMessage?.contextInfo?.mentionedJid,
182
+ message.extendedTextMessage?.contextInfo?.quotedMessage?.extendedTextMessage?.contextInfo?.mentionedJid,
183
+ message.imageMessage?.contextInfo?.mentionedJid,
184
+ message.videoMessage?.contextInfo?.mentionedJid,
185
+ message.documentMessage?.contextInfo?.mentionedJid,
186
+ message.audioMessage?.contextInfo?.mentionedJid,
187
+ message.stickerMessage?.contextInfo?.mentionedJid,
188
+ message.buttonsResponseMessage?.contextInfo?.mentionedJid,
189
+ message.listResponseMessage?.contextInfo?.mentionedJid
190
+ ].flatMap((arr) => arr ?? []).filter(Boolean);
191
+ if (flattened.length === 0) return;
192
+ return Array.from(new Set(flattened));
193
+ }
194
+ function extractText(rawMessage) {
195
+ const message = unwrapMessage$1(rawMessage);
196
+ if (!message) return;
197
+ const extracted = extractMessageContent(message);
198
+ const candidates = [message, extracted && extracted !== message ? extracted : void 0];
199
+ for (const candidate of candidates) {
200
+ if (!candidate) continue;
201
+ if (typeof candidate.conversation === "string" && candidate.conversation.trim()) return candidate.conversation.trim();
202
+ const extended = candidate.extendedTextMessage?.text;
203
+ if (extended?.trim()) return extended.trim();
204
+ const caption = candidate.imageMessage?.caption ?? candidate.videoMessage?.caption ?? candidate.documentMessage?.caption;
205
+ if (caption?.trim()) return caption.trim();
206
+ }
207
+ const contactPlaceholder = extractContactPlaceholder(message) ?? (extracted && extracted !== message ? extractContactPlaceholder(extracted) : void 0);
208
+ if (contactPlaceholder) return contactPlaceholder;
209
+ }
210
+ function extractMediaPlaceholder(rawMessage) {
211
+ const message = unwrapMessage$1(rawMessage);
212
+ if (!message) return;
213
+ if (message.imageMessage) return "<media:image>";
214
+ if (message.videoMessage) return "<media:video>";
215
+ if (message.audioMessage) return "<media:audio>";
216
+ if (message.documentMessage) return "<media:document>";
217
+ if (message.stickerMessage) return "<media:sticker>";
218
+ }
219
+ function extractContactPlaceholder(rawMessage) {
220
+ const message = unwrapMessage$1(rawMessage);
221
+ if (!message) return;
222
+ const contact = message.contactMessage ?? void 0;
223
+ if (contact) {
224
+ const { name, phones } = describeContact({
225
+ displayName: contact.displayName,
226
+ vcard: contact.vcard
227
+ });
228
+ return formatContactPlaceholder(name, phones);
229
+ }
230
+ const contactsArray = message.contactsArrayMessage?.contacts ?? void 0;
231
+ if (!contactsArray || contactsArray.length === 0) return;
232
+ return formatContactsPlaceholder(contactsArray.map((entry) => describeContact({
233
+ displayName: entry.displayName,
234
+ vcard: entry.vcard
235
+ })).map((entry) => formatContactLabel(entry.name, entry.phones)).filter((value) => Boolean(value)), contactsArray.length);
236
+ }
237
+ function describeContact(input) {
238
+ const displayName = (input.displayName ?? "").trim();
239
+ const parsed = parseVcard(input.vcard ?? void 0);
240
+ return {
241
+ name: displayName || parsed.name,
242
+ phones: parsed.phones
243
+ };
244
+ }
245
+ function formatContactPlaceholder(name, phones) {
246
+ const label = formatContactLabel(name, phones);
247
+ if (!label) return "<contact>";
248
+ return `<contact: ${label}>`;
249
+ }
250
+ function formatContactsPlaceholder(labels, total) {
251
+ const cleaned = labels.map((label) => label.trim()).filter(Boolean);
252
+ if (cleaned.length === 0) return `<contacts: ${total} ${total === 1 ? "contact" : "contacts"}>`;
253
+ const remaining = Math.max(total - cleaned.length, 0);
254
+ const suffix = remaining > 0 ? ` +${remaining} more` : "";
255
+ return `<contacts: ${cleaned.join(", ")}${suffix}>`;
256
+ }
257
+ function formatContactLabel(name, phones) {
258
+ const parts = [name, formatPhoneList(phones)].filter((value) => Boolean(value));
259
+ if (parts.length === 0) return;
260
+ return parts.join(", ");
261
+ }
262
+ function formatPhoneList(phones) {
263
+ const cleaned = phones?.map((phone) => phone.trim()).filter(Boolean) ?? [];
264
+ if (cleaned.length === 0) return;
265
+ const { shown, remaining } = summarizeList(cleaned, cleaned.length, 1);
266
+ const [primary] = shown;
267
+ if (!primary) return;
268
+ if (remaining === 0) return primary;
269
+ return `${primary} (+${remaining} more)`;
270
+ }
271
+ function summarizeList(values, total, maxShown) {
272
+ const shown = values.slice(0, maxShown);
273
+ return {
274
+ shown,
275
+ remaining: Math.max(total - shown.length, 0)
276
+ };
277
+ }
278
+ function extractLocationData(rawMessage) {
279
+ const message = unwrapMessage$1(rawMessage);
280
+ if (!message) return null;
281
+ const live = message.liveLocationMessage ?? void 0;
282
+ if (live) {
283
+ const latitudeRaw = live.degreesLatitude;
284
+ const longitudeRaw = live.degreesLongitude;
285
+ if (latitudeRaw != null && longitudeRaw != null) {
286
+ const latitude = Number(latitudeRaw);
287
+ const longitude = Number(longitudeRaw);
288
+ if (Number.isFinite(latitude) && Number.isFinite(longitude)) return {
289
+ latitude,
290
+ longitude,
291
+ accuracy: live.accuracyInMeters ?? void 0,
292
+ caption: live.caption ?? void 0,
293
+ source: "live",
294
+ isLive: true
295
+ };
296
+ }
297
+ }
298
+ const location = message.locationMessage ?? void 0;
299
+ if (location) {
300
+ const latitudeRaw = location.degreesLatitude;
301
+ const longitudeRaw = location.degreesLongitude;
302
+ if (latitudeRaw != null && longitudeRaw != null) {
303
+ const latitude = Number(latitudeRaw);
304
+ const longitude = Number(longitudeRaw);
305
+ if (Number.isFinite(latitude) && Number.isFinite(longitude)) {
306
+ const isLive = Boolean(location.isLive);
307
+ return {
308
+ latitude,
309
+ longitude,
310
+ accuracy: location.accuracyInMeters ?? void 0,
311
+ name: location.name ?? void 0,
312
+ address: location.address ?? void 0,
313
+ caption: location.comment ?? void 0,
314
+ source: isLive ? "live" : location.name || location.address ? "place" : "pin",
315
+ isLive
316
+ };
317
+ }
318
+ }
319
+ }
320
+ return null;
321
+ }
322
+ function describeReplyContext(rawMessage) {
323
+ const message = unwrapMessage$1(rawMessage);
324
+ if (!message) return null;
325
+ const contextInfo = extractContextInfo(message);
326
+ const quoted = normalizeMessageContent(contextInfo?.quotedMessage);
327
+ if (!quoted) return null;
328
+ const location = extractLocationData(quoted);
329
+ const locationText = location ? formatLocationText(location) : void 0;
330
+ let body = [extractText(quoted), locationText].filter(Boolean).join("\n").trim();
331
+ if (!body) body = extractMediaPlaceholder(quoted);
332
+ if (!body) {
333
+ const quotedType = quoted ? getContentType(quoted) : void 0;
334
+ logVerbose(`Quoted message missing extractable body${quotedType ? ` (type ${quotedType})` : ""}`);
335
+ return null;
336
+ }
337
+ const senderJid = contextInfo?.participant ?? void 0;
338
+ const senderE164 = senderJid ? jidToE164(senderJid) ?? senderJid : void 0;
339
+ const sender = senderE164 ?? "unknown sender";
340
+ return {
341
+ id: contextInfo?.stanzaId ? String(contextInfo.stanzaId) : void 0,
342
+ body,
343
+ sender,
344
+ senderJid,
345
+ senderE164
346
+ };
347
+ }
348
+
349
+ //#endregion
350
+ //#region src/web/inbound/access-control.ts
351
+ const PAIRING_REPLY_HISTORY_GRACE_MS = 3e4;
352
+ function resolveWhatsAppRuntimeGroupPolicy(params) {
353
+ return resolveOpenProviderRuntimeGroupPolicy({
354
+ providerConfigPresent: params.providerConfigPresent,
355
+ groupPolicy: params.groupPolicy,
356
+ defaultGroupPolicy: params.defaultGroupPolicy
357
+ });
358
+ }
359
+ async function checkInboundAccessControl(params) {
360
+ const cfg = loadConfig();
361
+ const account = resolveWhatsAppAccount({
362
+ cfg,
363
+ accountId: params.accountId
364
+ });
365
+ const dmPolicy = account.dmPolicy ?? "pairing";
366
+ const configuredAllowFrom = account.allowFrom;
367
+ const storeAllowFrom = dmPolicy === "allowlist" ? [] : await readChannelAllowFromStore("whatsapp", process.env, account.accountId).catch(() => []);
368
+ const combinedAllowFrom = Array.from(new Set([...configuredAllowFrom ?? [], ...storeAllowFrom]));
369
+ const defaultAllowFrom = combinedAllowFrom.length === 0 && params.selfE164 ? [params.selfE164] : void 0;
370
+ const allowFrom = combinedAllowFrom.length > 0 ? combinedAllowFrom : defaultAllowFrom;
371
+ const groupAllowFrom = account.groupAllowFrom ?? (configuredAllowFrom && configuredAllowFrom.length > 0 ? configuredAllowFrom : void 0);
372
+ const isSamePhone = params.from === params.selfE164;
373
+ const isSelfChat = account.selfChatMode ?? isSelfChatMode(params.selfE164, configuredAllowFrom);
374
+ const pairingGraceMs = typeof params.pairingGraceMs === "number" && params.pairingGraceMs > 0 ? params.pairingGraceMs : PAIRING_REPLY_HISTORY_GRACE_MS;
375
+ const suppressPairingReply = typeof params.connectedAtMs === "number" && typeof params.messageTimestampMs === "number" && params.messageTimestampMs < params.connectedAtMs - pairingGraceMs;
376
+ const dmHasWildcard = allowFrom?.includes("*") ?? false;
377
+ const normalizedAllowFrom = allowFrom && allowFrom.length > 0 ? allowFrom.filter((entry) => entry !== "*").map(normalizeE164) : [];
378
+ const groupHasWildcard = groupAllowFrom?.includes("*") ?? false;
379
+ const normalizedGroupAllowFrom = groupAllowFrom && groupAllowFrom.length > 0 ? groupAllowFrom.filter((entry) => entry !== "*").map(normalizeE164) : [];
380
+ const defaultGroupPolicy = resolveDefaultGroupPolicy(cfg);
381
+ const { groupPolicy, providerMissingFallbackApplied } = resolveWhatsAppRuntimeGroupPolicy({
382
+ providerConfigPresent: cfg.channels?.whatsapp !== void 0,
383
+ groupPolicy: account.groupPolicy,
384
+ defaultGroupPolicy
385
+ });
386
+ warnMissingProviderGroupPolicyFallbackOnce({
387
+ providerMissingFallbackApplied,
388
+ providerKey: "whatsapp",
389
+ accountId: account.accountId,
390
+ log: (message) => logVerbose(message)
391
+ });
392
+ if (params.group && groupPolicy === "disabled") {
393
+ logVerbose("Blocked group message (groupPolicy: disabled)");
394
+ return {
395
+ allowed: false,
396
+ shouldMarkRead: false,
397
+ isSelfChat,
398
+ resolvedAccountId: account.accountId
399
+ };
400
+ }
401
+ if (params.group && groupPolicy === "allowlist") {
402
+ if (!groupAllowFrom || groupAllowFrom.length === 0) {
403
+ logVerbose("Blocked group message (groupPolicy: allowlist, no groupAllowFrom)");
404
+ return {
405
+ allowed: false,
406
+ shouldMarkRead: false,
407
+ isSelfChat,
408
+ resolvedAccountId: account.accountId
409
+ };
410
+ }
411
+ if (!(groupHasWildcard || params.senderE164 != null && normalizedGroupAllowFrom.includes(params.senderE164))) {
412
+ logVerbose(`Blocked group message from ${params.senderE164 ?? "unknown sender"} (groupPolicy: allowlist)`);
413
+ return {
414
+ allowed: false,
415
+ shouldMarkRead: false,
416
+ isSelfChat,
417
+ resolvedAccountId: account.accountId
418
+ };
419
+ }
420
+ }
421
+ if (!params.group) {
422
+ if (params.isFromMe && !isSamePhone) {
423
+ logVerbose("Skipping outbound DM (fromMe); no pairing reply needed.");
424
+ return {
425
+ allowed: false,
426
+ shouldMarkRead: false,
427
+ isSelfChat,
428
+ resolvedAccountId: account.accountId
429
+ };
430
+ }
431
+ if (dmPolicy === "disabled") {
432
+ logVerbose("Blocked dm (dmPolicy: disabled)");
433
+ return {
434
+ allowed: false,
435
+ shouldMarkRead: false,
436
+ isSelfChat,
437
+ resolvedAccountId: account.accountId
438
+ };
439
+ }
440
+ if (dmPolicy !== "open" && !isSamePhone) {
441
+ const candidate = params.from;
442
+ if (!(dmHasWildcard || normalizedAllowFrom.length > 0 && normalizedAllowFrom.includes(candidate))) {
443
+ if (dmPolicy === "pairing") if (suppressPairingReply) logVerbose(`Skipping pairing reply for historical DM from ${candidate}.`);
444
+ else {
445
+ const { code, created } = await upsertChannelPairingRequest({
446
+ channel: "whatsapp",
447
+ id: candidate,
448
+ accountId: account.accountId,
449
+ meta: { name: (params.pushName ?? "").trim() || void 0 }
450
+ });
451
+ if (created) {
452
+ logVerbose(`whatsapp pairing request sender=${candidate} name=${params.pushName ?? "unknown"}`);
453
+ try {
454
+ await params.sock.sendMessage(params.remoteJid, { text: buildPairingReply({
455
+ channel: "whatsapp",
456
+ idLine: `Your WhatsApp phone number: ${candidate}`,
457
+ code
458
+ }) });
459
+ } catch (err) {
460
+ logVerbose(`whatsapp pairing reply failed for ${candidate}: ${String(err)}`);
461
+ }
462
+ }
463
+ }
464
+ else logVerbose(`Blocked unauthorized sender ${candidate} (dmPolicy=${dmPolicy})`);
465
+ return {
466
+ allowed: false,
467
+ shouldMarkRead: false,
468
+ isSelfChat,
469
+ resolvedAccountId: account.accountId
470
+ };
471
+ }
472
+ }
473
+ }
474
+ return {
475
+ allowed: true,
476
+ shouldMarkRead: true,
477
+ isSelfChat,
478
+ resolvedAccountId: account.accountId
479
+ };
480
+ }
481
+
482
+ //#endregion
483
+ //#region src/web/inbound/media.ts
484
+ function unwrapMessage(message) {
485
+ return normalizeMessageContent(message);
486
+ }
487
+ /**
488
+ * Resolve the MIME type for an inbound media message.
489
+ * Falls back to WhatsApp's standard formats when Baileys omits the MIME.
490
+ */
491
+ function resolveMediaMimetype(message) {
492
+ const explicit = message.imageMessage?.mimetype ?? message.videoMessage?.mimetype ?? message.documentMessage?.mimetype ?? message.audioMessage?.mimetype ?? message.stickerMessage?.mimetype ?? void 0;
493
+ if (explicit) return explicit;
494
+ if (message.audioMessage) return "audio/ogg; codecs=opus";
495
+ if (message.imageMessage) return "image/jpeg";
496
+ if (message.videoMessage) return "video/mp4";
497
+ if (message.stickerMessage) return "image/webp";
498
+ }
499
+ async function downloadInboundMedia(msg, sock) {
500
+ const message = unwrapMessage(msg.message);
501
+ if (!message) return;
502
+ const mimetype = resolveMediaMimetype(message);
503
+ const fileName = message.documentMessage?.fileName ?? void 0;
504
+ if (!message.imageMessage && !message.videoMessage && !message.documentMessage && !message.audioMessage && !message.stickerMessage) return;
505
+ try {
506
+ return {
507
+ buffer: await downloadMediaMessage(msg, "buffer", {}, {
508
+ reuploadRequest: sock.updateMediaMessage,
509
+ logger: sock.logger
510
+ }),
511
+ mimetype,
512
+ fileName
513
+ };
514
+ } catch (err) {
515
+ logVerbose(`downloadMediaMessage failed: ${String(err)}`);
516
+ return;
517
+ }
518
+ }
519
+
520
+ //#endregion
521
+ //#region src/web/inbound/send-api.ts
522
+ function recordWhatsAppOutbound(accountId) {
523
+ recordChannelActivity({
524
+ channel: "whatsapp",
525
+ accountId,
526
+ direction: "outbound"
527
+ });
528
+ }
529
+ function resolveOutboundMessageId(result) {
530
+ return typeof result === "object" && result && "key" in result ? String(result.key?.id ?? "unknown") : "unknown";
531
+ }
532
+ function createWebSendApi(params) {
533
+ return {
534
+ sendMessage: async (to, text, mediaBuffer, mediaType, sendOptions) => {
535
+ const jid = toWhatsappJid(to);
536
+ let payload;
537
+ if (mediaBuffer && mediaType) if (mediaType.startsWith("image/")) payload = {
538
+ image: mediaBuffer,
539
+ caption: text || void 0,
540
+ mimetype: mediaType
541
+ };
542
+ else if (mediaType.startsWith("audio/")) payload = {
543
+ audio: mediaBuffer,
544
+ ptt: true,
545
+ mimetype: mediaType
546
+ };
547
+ else if (mediaType.startsWith("video/")) {
548
+ const gifPlayback = sendOptions?.gifPlayback;
549
+ payload = {
550
+ video: mediaBuffer,
551
+ caption: text || void 0,
552
+ mimetype: mediaType,
553
+ ...gifPlayback ? { gifPlayback: true } : {}
554
+ };
555
+ } else payload = {
556
+ document: mediaBuffer,
557
+ fileName: sendOptions?.fileName?.trim() || "file",
558
+ caption: text || void 0,
559
+ mimetype: mediaType
560
+ };
561
+ else payload = { text };
562
+ const result = await params.sock.sendMessage(jid, payload);
563
+ recordWhatsAppOutbound(sendOptions?.accountId ?? params.defaultAccountId);
564
+ return { messageId: resolveOutboundMessageId(result) };
565
+ },
566
+ sendPoll: async (to, poll) => {
567
+ const jid = toWhatsappJid(to);
568
+ const result = await params.sock.sendMessage(jid, { poll: {
569
+ name: poll.question,
570
+ values: poll.options,
571
+ selectableCount: poll.maxSelections ?? 1
572
+ } });
573
+ recordWhatsAppOutbound(params.defaultAccountId);
574
+ return { messageId: resolveOutboundMessageId(result) };
575
+ },
576
+ sendReaction: async (chatJid, messageId, emoji, fromMe, participant) => {
577
+ const jid = toWhatsappJid(chatJid);
578
+ await params.sock.sendMessage(jid, { react: {
579
+ text: emoji,
580
+ key: {
581
+ remoteJid: jid,
582
+ id: messageId,
583
+ fromMe,
584
+ participant: participant ? toWhatsappJid(participant) : void 0
585
+ }
586
+ } });
587
+ },
588
+ sendComposingTo: async (to) => {
589
+ const jid = toWhatsappJid(to);
590
+ await params.sock.sendPresenceUpdate("composing", jid);
591
+ }
592
+ };
593
+ }
594
+
595
+ //#endregion
596
+ //#region src/web/inbound/monitor.ts
597
+ async function monitorWebInbox(options) {
598
+ const inboundLogger = getChildLogger({ module: "web-inbound" });
599
+ const inboundConsoleLog = createSubsystemLogger("gateway/channels/whatsapp").child("inbound");
600
+ const sock = await createWaSocket(false, options.verbose, { authDir: options.authDir });
601
+ await waitForWaConnection(sock);
602
+ const connectedAtMs = Date.now();
603
+ let onCloseResolve = null;
604
+ const onClose = new Promise((resolve) => {
605
+ onCloseResolve = resolve;
606
+ });
607
+ const resolveClose = (reason) => {
608
+ if (!onCloseResolve) return;
609
+ const resolver = onCloseResolve;
610
+ onCloseResolve = null;
611
+ resolver(reason);
612
+ };
613
+ try {
614
+ await sock.sendPresenceUpdate("available");
615
+ if (shouldLogVerbose()) logVerbose("Sent global 'available' presence on connect");
616
+ } catch (err) {
617
+ logVerbose(`Failed to send 'available' presence on connect: ${String(err)}`);
618
+ }
619
+ const selfJid = sock.user?.id;
620
+ const selfE164 = selfJid ? jidToE164(selfJid) : null;
621
+ const debouncer = createInboundDebouncer({
622
+ debounceMs: options.debounceMs ?? 0,
623
+ buildKey: (msg) => {
624
+ const senderKey = msg.chatType === "group" ? msg.senderJid ?? msg.senderE164 ?? msg.senderName ?? msg.from : msg.from;
625
+ if (!senderKey) return null;
626
+ const conversationKey = msg.chatType === "group" ? msg.chatId : msg.from;
627
+ return `${msg.accountId}:${conversationKey}:${senderKey}`;
628
+ },
629
+ shouldDebounce: options.shouldDebounce,
630
+ onFlush: async (entries) => {
631
+ const last = entries.at(-1);
632
+ if (!last) return;
633
+ if (entries.length === 1) {
634
+ await options.onMessage(last);
635
+ return;
636
+ }
637
+ const mentioned = /* @__PURE__ */ new Set();
638
+ for (const entry of entries) for (const jid of entry.mentionedJids ?? []) mentioned.add(jid);
639
+ const combinedBody = entries.map((entry) => entry.body).filter(Boolean).join("\n");
640
+ const combinedMessage = {
641
+ ...last,
642
+ body: combinedBody,
643
+ mentionedJids: mentioned.size > 0 ? Array.from(mentioned) : void 0
644
+ };
645
+ await options.onMessage(combinedMessage);
646
+ },
647
+ onError: (err) => {
648
+ inboundLogger.error({ error: String(err) }, "failed handling inbound web message");
649
+ inboundConsoleLog.error(`Failed handling inbound web message: ${String(err)}`);
650
+ }
651
+ });
652
+ const groupMetaCache = /* @__PURE__ */ new Map();
653
+ const GROUP_META_TTL_MS = 300 * 1e3;
654
+ const lidLookup = sock.signalRepository?.lidMapping;
655
+ const resolveInboundJid = async (jid) => resolveJidToE164(jid, {
656
+ authDir: options.authDir,
657
+ lidLookup
658
+ });
659
+ const getGroupMeta = async (jid) => {
660
+ const cached = groupMetaCache.get(jid);
661
+ if (cached && cached.expires > Date.now()) return cached;
662
+ try {
663
+ const meta = await sock.groupMetadata(jid);
664
+ const participants = (await Promise.all(meta.participants?.map(async (p) => {
665
+ return await resolveInboundJid(p.id) ?? p.id;
666
+ }) ?? [])).filter(Boolean) ?? [];
667
+ const entry = {
668
+ subject: meta.subject,
669
+ participants,
670
+ expires: Date.now() + GROUP_META_TTL_MS
671
+ };
672
+ groupMetaCache.set(jid, entry);
673
+ return entry;
674
+ } catch (err) {
675
+ logVerbose(`Failed to fetch group metadata for ${jid}: ${String(err)}`);
676
+ return { expires: Date.now() + GROUP_META_TTL_MS };
677
+ }
678
+ };
679
+ const handleMessagesUpsert = async (upsert) => {
680
+ if (upsert.type !== "notify" && upsert.type !== "append") return;
681
+ for (const msg of upsert.messages ?? []) {
682
+ recordChannelActivity({
683
+ channel: "whatsapp",
684
+ accountId: options.accountId,
685
+ direction: "inbound"
686
+ });
687
+ const id = msg.key?.id ?? void 0;
688
+ const remoteJid = msg.key?.remoteJid;
689
+ if (!remoteJid) continue;
690
+ if (remoteJid.endsWith("@status") || remoteJid.endsWith("@broadcast")) continue;
691
+ const group = isJidGroup(remoteJid) === true;
692
+ if (id) {
693
+ if (isRecentInboundMessage(`${options.accountId}:${remoteJid}:${id}`)) continue;
694
+ }
695
+ const participantJid = msg.key?.participant ?? void 0;
696
+ const from = group ? remoteJid : await resolveInboundJid(remoteJid);
697
+ if (!from) continue;
698
+ const senderE164 = group ? participantJid ? await resolveInboundJid(participantJid) : null : from;
699
+ let groupSubject;
700
+ let groupParticipants;
701
+ if (group) {
702
+ const meta = await getGroupMeta(remoteJid);
703
+ groupSubject = meta.subject;
704
+ groupParticipants = meta.participants;
705
+ }
706
+ const messageTimestampMs = msg.messageTimestamp ? Number(msg.messageTimestamp) * 1e3 : void 0;
707
+ const access = await checkInboundAccessControl({
708
+ accountId: options.accountId,
709
+ from,
710
+ selfE164,
711
+ senderE164,
712
+ group,
713
+ pushName: msg.pushName ?? void 0,
714
+ isFromMe: Boolean(msg.key?.fromMe),
715
+ messageTimestampMs,
716
+ connectedAtMs,
717
+ sock: { sendMessage: (jid, content) => sock.sendMessage(jid, content) },
718
+ remoteJid
719
+ });
720
+ if (!access.allowed) continue;
721
+ if (id && !access.isSelfChat && options.sendReadReceipts !== false) {
722
+ const participant = msg.key?.participant;
723
+ try {
724
+ await sock.readMessages([{
725
+ remoteJid,
726
+ id,
727
+ participant,
728
+ fromMe: false
729
+ }]);
730
+ if (shouldLogVerbose()) logVerbose(`Marked message ${id} as read for ${remoteJid}${participant ? ` (participant ${participant})` : ""}`);
731
+ } catch (err) {
732
+ logVerbose(`Failed to mark message ${id} read: ${String(err)}`);
733
+ }
734
+ } else if (id && access.isSelfChat && shouldLogVerbose()) logVerbose(`Self-chat mode: skipping read receipt for ${id}`);
735
+ if (upsert.type === "append") continue;
736
+ const location = extractLocationData(msg.message ?? void 0);
737
+ const locationText = location ? formatLocationText(location) : void 0;
738
+ let body = extractText(msg.message ?? void 0);
739
+ if (locationText) body = [body, locationText].filter(Boolean).join("\n").trim();
740
+ if (!body) {
741
+ body = extractMediaPlaceholder(msg.message ?? void 0);
742
+ if (!body) continue;
743
+ }
744
+ const replyContext = describeReplyContext(msg.message);
745
+ let mediaPath;
746
+ let mediaType;
747
+ let mediaFileName;
748
+ try {
749
+ const inboundMedia = await downloadInboundMedia(msg, sock);
750
+ if (inboundMedia) {
751
+ const maxBytes = (typeof options.mediaMaxMb === "number" && options.mediaMaxMb > 0 ? options.mediaMaxMb : 50) * 1024 * 1024;
752
+ mediaPath = (await saveMediaBuffer(inboundMedia.buffer, inboundMedia.mimetype, "inbound", maxBytes, inboundMedia.fileName)).path;
753
+ mediaType = inboundMedia.mimetype;
754
+ mediaFileName = inboundMedia.fileName;
755
+ }
756
+ } catch (err) {
757
+ logVerbose(`Inbound media download failed: ${String(err)}`);
758
+ }
759
+ const chatJid = remoteJid;
760
+ const sendComposing = async () => {
761
+ try {
762
+ await sock.sendPresenceUpdate("composing", chatJid);
763
+ } catch (err) {
764
+ logVerbose(`Presence update failed: ${String(err)}`);
765
+ }
766
+ };
767
+ const reply = async (text) => {
768
+ await sock.sendMessage(chatJid, { text });
769
+ };
770
+ const sendMedia = async (payload) => {
771
+ await sock.sendMessage(chatJid, payload);
772
+ };
773
+ const timestamp = messageTimestampMs;
774
+ const mentionedJids = extractMentionedJids(msg.message);
775
+ const senderName = msg.pushName ?? void 0;
776
+ inboundLogger.info({
777
+ from,
778
+ to: selfE164 ?? "me",
779
+ body,
780
+ mediaPath,
781
+ mediaType,
782
+ mediaFileName,
783
+ timestamp
784
+ }, "inbound message");
785
+ const inboundMessage = {
786
+ id,
787
+ from,
788
+ conversationId: from,
789
+ to: selfE164 ?? "me",
790
+ accountId: access.resolvedAccountId,
791
+ body,
792
+ pushName: senderName,
793
+ timestamp,
794
+ chatType: group ? "group" : "direct",
795
+ chatId: remoteJid,
796
+ senderJid: participantJid,
797
+ senderE164: senderE164 ?? void 0,
798
+ senderName,
799
+ replyToId: replyContext?.id,
800
+ replyToBody: replyContext?.body,
801
+ replyToSender: replyContext?.sender,
802
+ replyToSenderJid: replyContext?.senderJid,
803
+ replyToSenderE164: replyContext?.senderE164,
804
+ groupSubject,
805
+ groupParticipants,
806
+ mentionedJids: mentionedJids ?? void 0,
807
+ selfJid,
808
+ selfE164,
809
+ location: location ?? void 0,
810
+ sendComposing,
811
+ reply,
812
+ sendMedia,
813
+ mediaPath,
814
+ mediaType,
815
+ mediaFileName
816
+ };
817
+ try {
818
+ Promise.resolve(debouncer.enqueue(inboundMessage)).catch((err) => {
819
+ inboundLogger.error({ error: String(err) }, "failed handling inbound web message");
820
+ inboundConsoleLog.error(`Failed handling inbound web message: ${String(err)}`);
821
+ });
822
+ } catch (err) {
823
+ inboundLogger.error({ error: String(err) }, "failed handling inbound web message");
824
+ inboundConsoleLog.error(`Failed handling inbound web message: ${String(err)}`);
825
+ }
826
+ }
827
+ };
828
+ sock.ev.on("messages.upsert", handleMessagesUpsert);
829
+ const handleConnectionUpdate = (update) => {
830
+ try {
831
+ if (update.connection === "close") {
832
+ const status = getStatusCode(update.lastDisconnect?.error);
833
+ resolveClose({
834
+ status,
835
+ isLoggedOut: status === DisconnectReason.loggedOut,
836
+ error: update.lastDisconnect?.error
837
+ });
838
+ }
839
+ } catch (err) {
840
+ inboundLogger.error({ error: String(err) }, "connection.update handler error");
841
+ resolveClose({
842
+ status: void 0,
843
+ isLoggedOut: false,
844
+ error: err
845
+ });
846
+ }
847
+ };
848
+ sock.ev.on("connection.update", handleConnectionUpdate);
849
+ return {
850
+ close: async () => {
851
+ try {
852
+ const ev = sock.ev;
853
+ const messagesUpsertHandler = handleMessagesUpsert;
854
+ const connectionUpdateHandler = handleConnectionUpdate;
855
+ if (typeof ev.off === "function") {
856
+ ev.off("messages.upsert", messagesUpsertHandler);
857
+ ev.off("connection.update", connectionUpdateHandler);
858
+ } else if (typeof ev.removeListener === "function") {
859
+ ev.removeListener("messages.upsert", messagesUpsertHandler);
860
+ ev.removeListener("connection.update", connectionUpdateHandler);
861
+ }
862
+ sock.ws?.close();
863
+ } catch (err) {
864
+ logVerbose(`Socket close failed: ${String(err)}`);
865
+ }
866
+ },
867
+ onClose,
868
+ signalClose: (reason) => {
869
+ resolveClose(reason ?? {
870
+ status: void 0,
871
+ isLoggedOut: false,
872
+ error: "closed"
873
+ });
874
+ },
875
+ ...createWebSendApi({
876
+ sock: {
877
+ sendMessage: (jid, content) => sock.sendMessage(jid, content),
878
+ sendPresenceUpdate: (presence, jid) => sock.sendPresenceUpdate(presence, jid)
879
+ },
880
+ defaultAccountId: options.accountId
881
+ })
882
+ };
883
+ }
884
+
885
+ //#endregion
886
+ //#region src/web/auto-reply/mentions.ts
887
+ function buildMentionConfig(cfg, agentId) {
888
+ return {
889
+ mentionRegexes: buildMentionRegexes(cfg, agentId),
890
+ allowFrom: cfg.channels?.whatsapp?.allowFrom
891
+ };
892
+ }
893
+ function resolveMentionTargets(msg, authDir) {
894
+ const jidOptions = authDir ? { authDir } : void 0;
895
+ return {
896
+ normalizedMentions: msg.mentionedJids?.length ? msg.mentionedJids.map((jid) => jidToE164(jid, jidOptions) ?? jid).filter(Boolean) : [],
897
+ selfE164: msg.selfE164 ?? (msg.selfJid ? jidToE164(msg.selfJid, jidOptions) : null),
898
+ selfJid: msg.selfJid ? msg.selfJid.replace(/:\\d+/, "") : null
899
+ };
900
+ }
901
+ function isBotMentionedFromTargets(msg, mentionCfg, targets) {
902
+ const clean = (text) => normalizeMentionText(text);
903
+ const isSelfChat = isSelfChatMode(targets.selfE164, mentionCfg.allowFrom);
904
+ const hasMentions = (msg.mentionedJids?.length ?? 0) > 0;
905
+ if (hasMentions && !isSelfChat) {
906
+ if (targets.selfE164 && targets.normalizedMentions.includes(targets.selfE164)) return true;
907
+ if (targets.selfJid) {
908
+ if (targets.normalizedMentions.includes(targets.selfJid)) return true;
909
+ }
910
+ return false;
911
+ } else if (hasMentions && isSelfChat) {}
912
+ const bodyClean = clean(msg.body);
913
+ if (mentionCfg.mentionRegexes.some((re) => re.test(bodyClean))) return true;
914
+ if (targets.selfE164) {
915
+ const selfDigits = targets.selfE164.replace(/\D/g, "");
916
+ if (selfDigits) {
917
+ if (bodyClean.replace(/[^\d]/g, "").includes(selfDigits)) return true;
918
+ const bodyNoSpace = msg.body.replace(/[\s-]/g, "");
919
+ if (new RegExp(`\\+?${selfDigits}`, "i").test(bodyNoSpace)) return true;
920
+ }
921
+ }
922
+ return false;
923
+ }
924
+ function debugMention(msg, mentionCfg, authDir) {
925
+ const mentionTargets = resolveMentionTargets(msg, authDir);
926
+ return {
927
+ wasMentioned: isBotMentionedFromTargets(msg, mentionCfg, mentionTargets),
928
+ details: {
929
+ from: msg.from,
930
+ body: msg.body,
931
+ bodyClean: normalizeMentionText(msg.body),
932
+ mentionedJids: msg.mentionedJids ?? null,
933
+ normalizedMentionedJids: mentionTargets.normalizedMentions.length ? mentionTargets.normalizedMentions : null,
934
+ selfJid: msg.selfJid ?? null,
935
+ selfJidBare: mentionTargets.selfJid,
936
+ selfE164: msg.selfE164 ?? null,
937
+ resolvedSelfE164: mentionTargets.selfE164
938
+ }
939
+ };
940
+ }
941
+ function resolveOwnerList(mentionCfg, selfE164) {
942
+ const allowFrom = mentionCfg.allowFrom;
943
+ return (Array.isArray(allowFrom) && allowFrom.length > 0 ? allowFrom : selfE164 ? [selfE164] : []).filter((entry) => Boolean(entry && entry !== "*")).map((entry) => normalizeE164(entry)).filter((entry) => Boolean(entry));
944
+ }
945
+
946
+ //#endregion
947
+ //#region src/web/auto-reply/monitor/echo.ts
948
+ function createEchoTracker(params) {
949
+ const recentlySent = /* @__PURE__ */ new Set();
950
+ const maxItems = Math.max(1, params.maxItems ?? 100);
951
+ const buildCombinedKey = (p) => `combined:${p.sessionKey}:${p.combinedBody}`;
952
+ const trim = () => {
953
+ while (recentlySent.size > maxItems) {
954
+ const firstKey = recentlySent.values().next().value;
955
+ if (!firstKey) break;
956
+ recentlySent.delete(firstKey);
957
+ }
958
+ };
959
+ const rememberText = (text, opts) => {
960
+ if (!text) return;
961
+ recentlySent.add(text);
962
+ if (opts.combinedBody && opts.combinedBodySessionKey) recentlySent.add(buildCombinedKey({
963
+ sessionKey: opts.combinedBodySessionKey,
964
+ combinedBody: opts.combinedBody
965
+ }));
966
+ if (opts.logVerboseMessage) params.logVerbose?.(`Added to echo detection set (size now: ${recentlySent.size}): ${text.substring(0, 50)}...`);
967
+ trim();
968
+ };
969
+ return {
970
+ rememberText,
971
+ has: (key) => recentlySent.has(key),
972
+ forget: (key) => {
973
+ recentlySent.delete(key);
974
+ },
975
+ buildCombinedKey
976
+ };
977
+ }
978
+
979
+ //#endregion
980
+ //#region src/web/auto-reply/monitor/broadcast.ts
981
+ async function maybeBroadcastMessage(params) {
982
+ const broadcastAgents = params.cfg.broadcast?.[params.peerId];
983
+ if (!broadcastAgents || !Array.isArray(broadcastAgents)) return false;
984
+ if (broadcastAgents.length === 0) return false;
985
+ const strategy = params.cfg.broadcast?.strategy || "parallel";
986
+ whatsappInboundLog.info(`Broadcasting message to ${broadcastAgents.length} agents (${strategy})`);
987
+ const agentIds = params.cfg.agents?.list?.map((agent) => normalizeAgentId(agent.id));
988
+ const hasKnownAgents = (agentIds?.length ?? 0) > 0;
989
+ const groupHistorySnapshot = params.msg.chatType === "group" ? params.groupHistories.get(params.groupHistoryKey) ?? [] : void 0;
990
+ const processForAgent = async (agentId) => {
991
+ const normalizedAgentId = normalizeAgentId(agentId);
992
+ if (hasKnownAgents && !agentIds?.includes(normalizedAgentId)) {
993
+ whatsappInboundLog.warn(`Broadcast agent ${agentId} not found in agents.list; skipping`);
994
+ return false;
995
+ }
996
+ const agentRoute = {
997
+ ...params.route,
998
+ agentId: normalizedAgentId,
999
+ sessionKey: buildAgentSessionKey({
1000
+ agentId: normalizedAgentId,
1001
+ channel: "whatsapp",
1002
+ accountId: params.route.accountId,
1003
+ peer: {
1004
+ kind: params.msg.chatType === "group" ? "group" : "direct",
1005
+ id: params.peerId
1006
+ },
1007
+ dmScope: params.cfg.session?.dmScope,
1008
+ identityLinks: params.cfg.session?.identityLinks
1009
+ }),
1010
+ mainSessionKey: buildAgentMainSessionKey({
1011
+ agentId: normalizedAgentId,
1012
+ mainKey: DEFAULT_MAIN_KEY
1013
+ })
1014
+ };
1015
+ try {
1016
+ return await params.processMessage(params.msg, agentRoute, params.groupHistoryKey, {
1017
+ groupHistory: groupHistorySnapshot,
1018
+ suppressGroupHistoryClear: true
1019
+ });
1020
+ } catch (err) {
1021
+ whatsappInboundLog.error(`Broadcast agent ${agentId} failed: ${formatError(err)}`);
1022
+ return false;
1023
+ }
1024
+ };
1025
+ if (strategy === "sequential") for (const agentId of broadcastAgents) await processForAgent(agentId);
1026
+ else await Promise.allSettled(broadcastAgents.map(processForAgent));
1027
+ if (params.msg.chatType === "group") params.groupHistories.set(params.groupHistoryKey, []);
1028
+ return true;
1029
+ }
1030
+
1031
+ //#endregion
1032
+ //#region src/web/auto-reply/monitor/commands.ts
1033
+ function stripMentionsForCommand(text, mentionRegexes, selfE164) {
1034
+ let result = text;
1035
+ for (const re of mentionRegexes) result = result.replace(re, " ");
1036
+ if (selfE164) {
1037
+ const digits = selfE164.replace(/\D/g, "");
1038
+ if (digits) {
1039
+ const pattern = new RegExp(`\\+?${digits}`, "g");
1040
+ result = result.replace(pattern, " ");
1041
+ }
1042
+ }
1043
+ return result.replace(/\s+/g, " ").trim();
1044
+ }
1045
+
1046
+ //#endregion
1047
+ //#region src/web/auto-reply/monitor/group-activation.ts
1048
+ function resolveGroupPolicyFor(cfg, conversationId) {
1049
+ const groupId = resolveGroupSessionKey({
1050
+ From: conversationId,
1051
+ ChatType: "group",
1052
+ Provider: "whatsapp"
1053
+ })?.id;
1054
+ const whatsappCfg = cfg.channels?.whatsapp;
1055
+ const hasGroupAllowFrom = Boolean(whatsappCfg?.groupAllowFrom?.length || whatsappCfg?.allowFrom?.length);
1056
+ return resolveChannelGroupPolicy({
1057
+ cfg,
1058
+ channel: "whatsapp",
1059
+ groupId: groupId ?? conversationId,
1060
+ hasGroupAllowFrom
1061
+ });
1062
+ }
1063
+ function resolveGroupRequireMentionFor(cfg, conversationId) {
1064
+ const groupId = resolveGroupSessionKey({
1065
+ From: conversationId,
1066
+ ChatType: "group",
1067
+ Provider: "whatsapp"
1068
+ })?.id;
1069
+ return resolveChannelGroupRequireMention({
1070
+ cfg,
1071
+ channel: "whatsapp",
1072
+ groupId: groupId ?? conversationId
1073
+ });
1074
+ }
1075
+ function resolveGroupActivationFor(params) {
1076
+ const entry = loadSessionStore(resolveStorePath(params.cfg.session?.store, { agentId: params.agentId }))[params.sessionKey];
1077
+ const defaultActivation = !resolveGroupRequireMentionFor(params.cfg, params.conversationId) ? "always" : "mention";
1078
+ return normalizeGroupActivation(entry?.groupActivation) ?? defaultActivation;
1079
+ }
1080
+
1081
+ //#endregion
1082
+ //#region src/web/auto-reply/monitor/group-members.ts
1083
+ function appendNormalizedUnique(entries, seen, ordered) {
1084
+ for (const entry of entries) {
1085
+ const normalized = normalizeE164(entry) ?? entry;
1086
+ if (!normalized || seen.has(normalized)) continue;
1087
+ seen.add(normalized);
1088
+ ordered.push(normalized);
1089
+ }
1090
+ }
1091
+ function noteGroupMember(groupMemberNames, conversationId, e164, name) {
1092
+ if (!e164 || !name) return;
1093
+ const key = normalizeE164(e164) ?? e164;
1094
+ if (!key) return;
1095
+ let roster = groupMemberNames.get(conversationId);
1096
+ if (!roster) {
1097
+ roster = /* @__PURE__ */ new Map();
1098
+ groupMemberNames.set(conversationId, roster);
1099
+ }
1100
+ roster.set(key, name);
1101
+ }
1102
+ function formatGroupMembers(params) {
1103
+ const { participants, roster, fallbackE164 } = params;
1104
+ const seen = /* @__PURE__ */ new Set();
1105
+ const ordered = [];
1106
+ if (participants?.length) appendNormalizedUnique(participants, seen, ordered);
1107
+ if (roster) appendNormalizedUnique(roster.keys(), seen, ordered);
1108
+ if (ordered.length === 0 && fallbackE164) {
1109
+ const normalized = normalizeE164(fallbackE164) ?? fallbackE164;
1110
+ if (normalized) ordered.push(normalized);
1111
+ }
1112
+ if (ordered.length === 0) return;
1113
+ return ordered.map((entry) => {
1114
+ const name = roster?.get(entry);
1115
+ return name ? `${name} (${entry})` : entry;
1116
+ }).join(", ");
1117
+ }
1118
+
1119
+ //#endregion
1120
+ //#region src/web/auto-reply/monitor/group-gating.ts
1121
+ function isOwnerSender(baseMentionConfig, msg) {
1122
+ const sender = normalizeE164(msg.senderE164 ?? "");
1123
+ if (!sender) return false;
1124
+ return resolveOwnerList(baseMentionConfig, msg.selfE164 ?? void 0).includes(sender);
1125
+ }
1126
+ function recordPendingGroupHistoryEntry(params) {
1127
+ const sender = params.msg.senderName && params.msg.senderE164 ? `${params.msg.senderName} (${params.msg.senderE164})` : params.msg.senderName ?? params.msg.senderE164 ?? "Unknown";
1128
+ recordPendingHistoryEntryIfEnabled({
1129
+ historyMap: params.groupHistories,
1130
+ historyKey: params.groupHistoryKey,
1131
+ limit: params.groupHistoryLimit,
1132
+ entry: {
1133
+ sender,
1134
+ body: params.msg.body,
1135
+ timestamp: params.msg.timestamp,
1136
+ id: params.msg.id,
1137
+ senderJid: params.msg.senderJid
1138
+ }
1139
+ });
1140
+ }
1141
+ function skipGroupMessageAndStoreHistory(params, verboseMessage) {
1142
+ params.logVerbose(verboseMessage);
1143
+ recordPendingGroupHistoryEntry({
1144
+ msg: params.msg,
1145
+ groupHistories: params.groupHistories,
1146
+ groupHistoryKey: params.groupHistoryKey,
1147
+ groupHistoryLimit: params.groupHistoryLimit
1148
+ });
1149
+ return { shouldProcess: false };
1150
+ }
1151
+ function applyGroupGating(params) {
1152
+ const groupPolicy = resolveGroupPolicyFor(params.cfg, params.conversationId);
1153
+ if (groupPolicy.allowlistEnabled && !groupPolicy.allowed) {
1154
+ params.logVerbose(`Skipping group message ${params.conversationId} (not in allowlist)`);
1155
+ return { shouldProcess: false };
1156
+ }
1157
+ noteGroupMember(params.groupMemberNames, params.groupHistoryKey, params.msg.senderE164, params.msg.senderName);
1158
+ const mentionConfig = buildMentionConfig(params.cfg, params.agentId);
1159
+ const commandBody = stripMentionsForCommand(params.msg.body, mentionConfig.mentionRegexes, params.msg.selfE164);
1160
+ const activationCommand = parseActivationCommand(commandBody);
1161
+ const owner = isOwnerSender(params.baseMentionConfig, params.msg);
1162
+ const shouldBypassMention = owner && hasControlCommand(commandBody, params.cfg);
1163
+ if (activationCommand.hasCommand && !owner) return skipGroupMessageAndStoreHistory(params, `Ignoring /activation from non-owner in group ${params.conversationId}`);
1164
+ const mentionDebug = debugMention(params.msg, mentionConfig, params.authDir);
1165
+ params.replyLogger.debug({
1166
+ conversationId: params.conversationId,
1167
+ wasMentioned: mentionDebug.wasMentioned,
1168
+ ...mentionDebug.details
1169
+ }, "group mention debug");
1170
+ const wasMentioned = mentionDebug.wasMentioned;
1171
+ const requireMention = resolveGroupActivationFor({
1172
+ cfg: params.cfg,
1173
+ agentId: params.agentId,
1174
+ sessionKey: params.sessionKey,
1175
+ conversationId: params.conversationId
1176
+ }) !== "always";
1177
+ const selfJid = params.msg.selfJid?.replace(/:\\d+/, "");
1178
+ const replySenderJid = params.msg.replyToSenderJid?.replace(/:\\d+/, "");
1179
+ const selfE164 = params.msg.selfE164 ? normalizeE164(params.msg.selfE164) : null;
1180
+ const replySenderE164 = params.msg.replyToSenderE164 ? normalizeE164(params.msg.replyToSenderE164) : null;
1181
+ const mentionGate = resolveMentionGating({
1182
+ requireMention,
1183
+ canDetectMention: true,
1184
+ wasMentioned,
1185
+ implicitMention: Boolean(selfJid && replySenderJid && selfJid === replySenderJid || selfE164 && replySenderE164 && selfE164 === replySenderE164),
1186
+ shouldBypassMention
1187
+ });
1188
+ params.msg.wasMentioned = mentionGate.effectiveWasMentioned;
1189
+ if (!shouldBypassMention && requireMention && mentionGate.shouldSkip) return skipGroupMessageAndStoreHistory(params, `Group message stored for context (no mention detected) in ${params.conversationId}: ${params.msg.body}`);
1190
+ return { shouldProcess: true };
1191
+ }
1192
+
1193
+ //#endregion
1194
+ //#region src/web/auto-reply/monitor/last-route.ts
1195
+ function trackBackgroundTask(backgroundTasks, task) {
1196
+ backgroundTasks.add(task);
1197
+ task.finally(() => {
1198
+ backgroundTasks.delete(task);
1199
+ });
1200
+ }
1201
+ function updateLastRouteInBackground(params) {
1202
+ const storePath = resolveStorePath(params.cfg.session?.store, { agentId: params.storeAgentId });
1203
+ const task = updateLastRoute({
1204
+ storePath,
1205
+ sessionKey: params.sessionKey,
1206
+ deliveryContext: {
1207
+ channel: params.channel,
1208
+ to: params.to,
1209
+ accountId: params.accountId
1210
+ },
1211
+ ctx: params.ctx
1212
+ }).catch((err) => {
1213
+ params.warn({
1214
+ error: formatError(err),
1215
+ storePath,
1216
+ sessionKey: params.sessionKey,
1217
+ to: params.to
1218
+ }, "failed updating last route");
1219
+ });
1220
+ trackBackgroundTask(params.backgroundTasks, task);
1221
+ }
1222
+
1223
+ //#endregion
1224
+ //#region src/web/auto-reply/monitor/peer.ts
1225
+ function resolvePeerId(msg) {
1226
+ if (msg.chatType === "group") return msg.conversationId ?? msg.from;
1227
+ if (msg.senderE164) return normalizeE164(msg.senderE164) ?? msg.senderE164;
1228
+ if (msg.from.includes("@")) return jidToE164(msg.from) ?? msg.from;
1229
+ return normalizeE164(msg.from) ?? msg.from;
1230
+ }
1231
+
1232
+ //#endregion
1233
+ //#region src/web/auto-reply/util.ts
1234
+ function elide(text, limit = 400) {
1235
+ if (!text) return text;
1236
+ if (text.length <= limit) return text;
1237
+ return `${text.slice(0, limit)}… (truncated ${text.length - limit} chars)`;
1238
+ }
1239
+ function isLikelyWhatsAppCryptoError(reason) {
1240
+ const formatReason = (value) => {
1241
+ if (value == null) return "";
1242
+ if (typeof value === "string") return value;
1243
+ if (value instanceof Error) return `${value.message}\n${value.stack ?? ""}`;
1244
+ if (typeof value === "object") try {
1245
+ return JSON.stringify(value);
1246
+ } catch {
1247
+ return Object.prototype.toString.call(value);
1248
+ }
1249
+ if (typeof value === "number") return String(value);
1250
+ if (typeof value === "boolean") return String(value);
1251
+ if (typeof value === "bigint") return String(value);
1252
+ if (typeof value === "symbol") return value.description ?? value.toString();
1253
+ if (typeof value === "function") return value.name ? `[function ${value.name}]` : "[function]";
1254
+ return Object.prototype.toString.call(value);
1255
+ };
1256
+ const haystack = (reason instanceof Error ? `${reason.message}\n${reason.stack ?? ""}` : formatReason(reason)).toLowerCase();
1257
+ if (!(haystack.includes("unsupported state or unable to authenticate data") || haystack.includes("bad mac"))) return false;
1258
+ return haystack.includes("@whiskeysockets/baileys") || haystack.includes("baileys") || haystack.includes("noise-handler") || haystack.includes("aesdecryptgcm");
1259
+ }
1260
+
1261
+ //#endregion
1262
+ //#region src/web/auto-reply/deliver-reply.ts
1263
+ const REASONING_PREFIX = "reasoning:";
1264
+ function shouldSuppressReasoningReply(payload) {
1265
+ if (payload.isReasoning === true) return true;
1266
+ const text = payload.text;
1267
+ if (typeof text !== "string") return false;
1268
+ return text.trimStart().toLowerCase().startsWith(REASONING_PREFIX);
1269
+ }
1270
+ async function deliverWebReply(params) {
1271
+ const { replyResult, msg, maxMediaBytes, textLimit, replyLogger, connectionId, skipLog } = params;
1272
+ const replyStarted = Date.now();
1273
+ if (shouldSuppressReasoningReply(replyResult)) {
1274
+ whatsappOutboundLog.debug(`Suppressed reasoning payload to ${msg.from}`);
1275
+ return;
1276
+ }
1277
+ const tableMode = params.tableMode ?? "code";
1278
+ const chunkMode = params.chunkMode ?? "length";
1279
+ const textChunks = chunkMarkdownTextWithMode(markdownToWhatsApp(convertMarkdownTables(replyResult.text || "", tableMode)), textLimit, chunkMode);
1280
+ const mediaList = replyResult.mediaUrls?.length ? replyResult.mediaUrls : replyResult.mediaUrl ? [replyResult.mediaUrl] : [];
1281
+ const sendWithRetry = async (fn, label, maxAttempts = 3) => {
1282
+ let lastErr;
1283
+ for (let attempt = 1; attempt <= maxAttempts; attempt++) try {
1284
+ return await fn();
1285
+ } catch (err) {
1286
+ lastErr = err;
1287
+ const errText = formatError(err);
1288
+ const isLast = attempt === maxAttempts;
1289
+ if (!/closed|reset|timed\s*out|disconnect/i.test(errText) || isLast) throw err;
1290
+ const backoffMs = 500 * attempt;
1291
+ logVerbose(`Retrying ${label} to ${msg.from} after failure (${attempt}/${maxAttempts - 1}) in ${backoffMs}ms: ${errText}`);
1292
+ await sleep(backoffMs);
1293
+ }
1294
+ throw lastErr;
1295
+ };
1296
+ if (mediaList.length === 0 && textChunks.length) {
1297
+ const totalChunks = textChunks.length;
1298
+ for (const [index, chunk] of textChunks.entries()) {
1299
+ const chunkStarted = Date.now();
1300
+ await sendWithRetry(() => msg.reply(chunk), "text");
1301
+ if (!skipLog) {
1302
+ const durationMs = Date.now() - chunkStarted;
1303
+ whatsappOutboundLog.debug(`Sent chunk ${index + 1}/${totalChunks} to ${msg.from} (${durationMs.toFixed(0)}ms)`);
1304
+ }
1305
+ }
1306
+ replyLogger.info({
1307
+ correlationId: msg.id ?? newConnectionId(),
1308
+ connectionId: connectionId ?? null,
1309
+ to: msg.from,
1310
+ from: msg.to,
1311
+ text: elide(replyResult.text, 240),
1312
+ mediaUrl: null,
1313
+ mediaSizeBytes: null,
1314
+ mediaKind: null,
1315
+ durationMs: Date.now() - replyStarted
1316
+ }, "auto-reply sent (text)");
1317
+ return;
1318
+ }
1319
+ const remainingText = [...textChunks];
1320
+ for (const [index, mediaUrl] of mediaList.entries()) {
1321
+ const caption = index === 0 ? remainingText.shift() || void 0 : void 0;
1322
+ try {
1323
+ const media = await loadWebMedia(mediaUrl, {
1324
+ maxBytes: maxMediaBytes,
1325
+ localRoots: params.mediaLocalRoots
1326
+ });
1327
+ if (shouldLogVerbose()) {
1328
+ logVerbose(`Web auto-reply media size: ${(media.buffer.length / (1024 * 1024)).toFixed(2)}MB`);
1329
+ logVerbose(`Web auto-reply media source: ${mediaUrl} (kind ${media.kind})`);
1330
+ }
1331
+ if (media.kind === "image") await sendWithRetry(() => msg.sendMedia({
1332
+ image: media.buffer,
1333
+ caption,
1334
+ mimetype: media.contentType
1335
+ }), "media:image");
1336
+ else if (media.kind === "audio") await sendWithRetry(() => msg.sendMedia({
1337
+ audio: media.buffer,
1338
+ ptt: true,
1339
+ mimetype: media.contentType,
1340
+ caption
1341
+ }), "media:audio");
1342
+ else if (media.kind === "video") await sendWithRetry(() => msg.sendMedia({
1343
+ video: media.buffer,
1344
+ caption,
1345
+ mimetype: media.contentType
1346
+ }), "media:video");
1347
+ else {
1348
+ const fileName = media.fileName ?? mediaUrl.split("/").pop() ?? "file";
1349
+ const mimetype = media.contentType ?? "application/octet-stream";
1350
+ await sendWithRetry(() => msg.sendMedia({
1351
+ document: media.buffer,
1352
+ fileName,
1353
+ caption,
1354
+ mimetype
1355
+ }), "media:document");
1356
+ }
1357
+ whatsappOutboundLog.info(`Sent media reply to ${msg.from} (${(media.buffer.length / (1024 * 1024)).toFixed(2)}MB)`);
1358
+ replyLogger.info({
1359
+ correlationId: msg.id ?? newConnectionId(),
1360
+ connectionId: connectionId ?? null,
1361
+ to: msg.from,
1362
+ from: msg.to,
1363
+ text: caption ?? null,
1364
+ mediaUrl,
1365
+ mediaSizeBytes: media.buffer.length,
1366
+ mediaKind: media.kind,
1367
+ durationMs: Date.now() - replyStarted
1368
+ }, "auto-reply sent (media)");
1369
+ } catch (err) {
1370
+ whatsappOutboundLog.error(`Failed sending web media to ${msg.from}: ${formatError(err)}`);
1371
+ replyLogger.warn({
1372
+ err,
1373
+ mediaUrl
1374
+ }, "failed to send web media reply");
1375
+ if (index === 0) {
1376
+ const warning = err instanceof Error ? `⚠️ Media failed: ${err.message}` : "⚠️ Media failed.";
1377
+ const fallbackText = [remainingText.shift() ?? caption ?? "", warning].filter(Boolean).join("\n");
1378
+ if (fallbackText) {
1379
+ whatsappOutboundLog.warn(`Media skipped; sent text-only to ${msg.from}`);
1380
+ await msg.reply(fallbackText);
1381
+ }
1382
+ }
1383
+ }
1384
+ }
1385
+ for (const chunk of remainingText) await msg.reply(chunk);
1386
+ }
1387
+
1388
+ //#endregion
1389
+ //#region src/web/auto-reply/monitor/ack-reaction.ts
1390
+ function maybeSendAckReaction(params) {
1391
+ if (!params.msg.id) return;
1392
+ const ackConfig = params.cfg.channels?.whatsapp?.ackReaction;
1393
+ const emoji = (ackConfig?.emoji ?? "").trim();
1394
+ const directEnabled = ackConfig?.direct ?? true;
1395
+ const groupMode = ackConfig?.group ?? "mentions";
1396
+ const conversationIdForCheck = params.msg.conversationId ?? params.msg.from;
1397
+ const activation = params.msg.chatType === "group" ? resolveGroupActivationFor({
1398
+ cfg: params.cfg,
1399
+ agentId: params.agentId,
1400
+ sessionKey: params.sessionKey,
1401
+ conversationId: conversationIdForCheck
1402
+ }) : null;
1403
+ const shouldSendReaction = () => shouldAckReactionForWhatsApp({
1404
+ emoji,
1405
+ isDirect: params.msg.chatType === "direct",
1406
+ isGroup: params.msg.chatType === "group",
1407
+ directEnabled,
1408
+ groupMode,
1409
+ wasMentioned: params.msg.wasMentioned === true,
1410
+ groupActivated: activation === "always"
1411
+ });
1412
+ if (!shouldSendReaction()) return;
1413
+ params.info({
1414
+ chatId: params.msg.chatId,
1415
+ messageId: params.msg.id,
1416
+ emoji
1417
+ }, "sending ack reaction");
1418
+ sendReactionWhatsApp(params.msg.chatId, params.msg.id, emoji, {
1419
+ verbose: params.verbose,
1420
+ fromMe: false,
1421
+ participant: params.msg.senderJid,
1422
+ accountId: params.accountId
1423
+ }).catch((err) => {
1424
+ params.warn({
1425
+ error: formatError(err),
1426
+ chatId: params.msg.chatId,
1427
+ messageId: params.msg.id
1428
+ }, "failed to send ack reaction");
1429
+ logVerbose(`WhatsApp ack reaction failed for chat ${params.msg.chatId}: ${formatError(err)}`);
1430
+ });
1431
+ }
1432
+
1433
+ //#endregion
1434
+ //#region src/web/auto-reply/monitor/message-line.ts
1435
+ function formatReplyContext(msg) {
1436
+ if (!msg.replyToBody) return null;
1437
+ return `[Replying to ${msg.replyToSender ?? "unknown sender"}${msg.replyToId ? ` id:${msg.replyToId}` : ""}]\n${msg.replyToBody}\n[/Replying]`;
1438
+ }
1439
+ function buildInboundLine(params) {
1440
+ const { cfg, msg, agentId, previousTimestamp, envelope } = params;
1441
+ const messagePrefix = resolveMessagePrefix(cfg, agentId, {
1442
+ configured: cfg.channels?.whatsapp?.messagePrefix,
1443
+ hasAllowFrom: (cfg.channels?.whatsapp?.allowFrom?.length ?? 0) > 0
1444
+ });
1445
+ const prefixStr = messagePrefix ? `${messagePrefix} ` : "";
1446
+ const replyContext = formatReplyContext(msg);
1447
+ const baseLine = `${prefixStr}${msg.body}${replyContext ? `\n\n${replyContext}` : ""}`;
1448
+ return formatInboundEnvelope({
1449
+ channel: "WhatsApp",
1450
+ from: msg.chatType === "group" ? msg.from : msg.from?.replace(/^whatsapp:/, ""),
1451
+ timestamp: msg.timestamp,
1452
+ body: baseLine,
1453
+ chatType: msg.chatType,
1454
+ sender: {
1455
+ name: msg.senderName,
1456
+ e164: msg.senderE164,
1457
+ id: msg.senderJid
1458
+ },
1459
+ previousTimestamp,
1460
+ envelope
1461
+ });
1462
+ }
1463
+
1464
+ //#endregion
1465
+ //#region src/web/auto-reply/monitor/process-message.ts
1466
+ function normalizeAllowFromE164(values) {
1467
+ return (Array.isArray(values) ? values : []).map((entry) => String(entry).trim()).filter((entry) => entry && entry !== "*").map((entry) => normalizeE164(entry)).filter((entry) => Boolean(entry));
1468
+ }
1469
+ async function resolveWhatsAppCommandAuthorized(params) {
1470
+ if (!(params.cfg.commands?.useAccessGroups !== false)) return true;
1471
+ const isGroup = params.msg.chatType === "group";
1472
+ const senderE164 = normalizeE164(isGroup ? params.msg.senderE164 ?? "" : params.msg.senderE164 ?? params.msg.from ?? "");
1473
+ if (!senderE164) return false;
1474
+ const account = resolveWhatsAppAccount({
1475
+ cfg: params.cfg,
1476
+ accountId: params.msg.accountId
1477
+ });
1478
+ const dmPolicy = account.dmPolicy ?? "pairing";
1479
+ const configuredAllowFrom = account.allowFrom ?? [];
1480
+ const configuredGroupAllowFrom = account.groupAllowFrom ?? (configuredAllowFrom.length > 0 ? configuredAllowFrom : void 0);
1481
+ if (isGroup) {
1482
+ if (!configuredGroupAllowFrom || configuredGroupAllowFrom.length === 0) return false;
1483
+ if (configuredGroupAllowFrom.some((v) => String(v).trim() === "*")) return true;
1484
+ return normalizeAllowFromE164(configuredGroupAllowFrom).includes(senderE164);
1485
+ }
1486
+ const storeAllowFrom = dmPolicy === "allowlist" ? [] : await readChannelAllowFromStore("whatsapp", process.env, params.msg.accountId).catch(() => []);
1487
+ const combinedAllowFrom = Array.from(new Set([...configuredAllowFrom ?? [], ...storeAllowFrom]));
1488
+ const allowFrom = combinedAllowFrom.length > 0 ? combinedAllowFrom : params.msg.selfE164 ? [params.msg.selfE164] : [];
1489
+ if (allowFrom.some((v) => String(v).trim() === "*")) return true;
1490
+ return normalizeAllowFromE164(allowFrom).includes(senderE164);
1491
+ }
1492
+ async function processMessage(params) {
1493
+ const conversationId = params.msg.conversationId ?? params.msg.from;
1494
+ const storePath = resolveStorePath(params.cfg.session?.store, { agentId: params.route.agentId });
1495
+ const envelopeOptions = resolveEnvelopeFormatOptions(params.cfg);
1496
+ const previousTimestamp = readSessionUpdatedAt({
1497
+ storePath,
1498
+ sessionKey: params.route.sessionKey
1499
+ });
1500
+ let combinedBody = buildInboundLine({
1501
+ cfg: params.cfg,
1502
+ msg: params.msg,
1503
+ agentId: params.route.agentId,
1504
+ previousTimestamp,
1505
+ envelope: envelopeOptions
1506
+ });
1507
+ let shouldClearGroupHistory = false;
1508
+ if (params.msg.chatType === "group") {
1509
+ const history = params.groupHistory ?? params.groupHistories.get(params.groupHistoryKey) ?? [];
1510
+ if (history.length > 0) combinedBody = buildHistoryContextFromEntries({
1511
+ entries: history.map((m) => ({
1512
+ sender: m.sender,
1513
+ body: m.body,
1514
+ timestamp: m.timestamp
1515
+ })),
1516
+ currentMessage: combinedBody,
1517
+ excludeLast: false,
1518
+ formatEntry: (entry) => {
1519
+ return formatInboundEnvelope({
1520
+ channel: "WhatsApp",
1521
+ from: conversationId,
1522
+ timestamp: entry.timestamp,
1523
+ body: entry.body,
1524
+ chatType: "group",
1525
+ senderLabel: entry.sender,
1526
+ envelope: envelopeOptions
1527
+ });
1528
+ }
1529
+ });
1530
+ shouldClearGroupHistory = !(params.suppressGroupHistoryClear ?? false);
1531
+ }
1532
+ const combinedEchoKey = params.buildCombinedEchoKey({
1533
+ sessionKey: params.route.sessionKey,
1534
+ combinedBody
1535
+ });
1536
+ if (params.echoHas(combinedEchoKey)) {
1537
+ logVerbose("Skipping auto-reply: detected echo for combined message");
1538
+ params.echoForget(combinedEchoKey);
1539
+ return false;
1540
+ }
1541
+ maybeSendAckReaction({
1542
+ cfg: params.cfg,
1543
+ msg: params.msg,
1544
+ agentId: params.route.agentId,
1545
+ sessionKey: params.route.sessionKey,
1546
+ conversationId,
1547
+ verbose: params.verbose,
1548
+ accountId: params.route.accountId,
1549
+ info: params.replyLogger.info.bind(params.replyLogger),
1550
+ warn: params.replyLogger.warn.bind(params.replyLogger)
1551
+ });
1552
+ const correlationId = params.msg.id ?? newConnectionId();
1553
+ params.replyLogger.info({
1554
+ connectionId: params.connectionId,
1555
+ correlationId,
1556
+ from: params.msg.chatType === "group" ? conversationId : params.msg.from,
1557
+ to: params.msg.to,
1558
+ body: elide(combinedBody, 240),
1559
+ mediaType: params.msg.mediaType ?? null,
1560
+ mediaPath: params.msg.mediaPath ?? null
1561
+ }, "inbound web message");
1562
+ const fromDisplay = params.msg.chatType === "group" ? conversationId : params.msg.from;
1563
+ const kindLabel = params.msg.mediaType ? `, ${params.msg.mediaType}` : "";
1564
+ whatsappInboundLog.info(`Inbound message ${fromDisplay} -> ${params.msg.to} (${params.msg.chatType}${kindLabel}, ${combinedBody.length} chars)`);
1565
+ if (shouldLogVerbose()) whatsappInboundLog.debug(`Inbound body: ${elide(combinedBody, 400)}`);
1566
+ const dmRouteTarget = params.msg.chatType !== "group" ? (() => {
1567
+ if (params.msg.senderE164) return normalizeE164(params.msg.senderE164);
1568
+ if (params.msg.from.includes("@")) return jidToE164(params.msg.from);
1569
+ return normalizeE164(params.msg.from);
1570
+ })() : void 0;
1571
+ const textLimit = params.maxMediaTextChunkLimit ?? resolveTextChunkLimit(params.cfg, "whatsapp");
1572
+ const chunkMode = resolveChunkMode(params.cfg, "whatsapp", params.route.accountId);
1573
+ const tableMode = resolveMarkdownTableMode({
1574
+ cfg: params.cfg,
1575
+ channel: "whatsapp",
1576
+ accountId: params.route.accountId
1577
+ });
1578
+ const mediaLocalRoots = getAgentScopedMediaLocalRoots(params.cfg, params.route.agentId);
1579
+ let didSendReply = false;
1580
+ const commandAuthorized = shouldComputeCommandAuthorized(params.msg.body, params.cfg) ? await resolveWhatsAppCommandAuthorized({
1581
+ cfg: params.cfg,
1582
+ msg: params.msg
1583
+ }) : void 0;
1584
+ const configuredResponsePrefix = params.cfg.messages?.responsePrefix;
1585
+ const { onModelSelected, ...prefixOptions } = createReplyPrefixOptions({
1586
+ cfg: params.cfg,
1587
+ agentId: params.route.agentId,
1588
+ channel: "whatsapp",
1589
+ accountId: params.route.accountId
1590
+ });
1591
+ const isSelfChat = params.msg.chatType !== "group" && Boolean(params.msg.selfE164) && normalizeE164(params.msg.from) === normalizeE164(params.msg.selfE164 ?? "");
1592
+ const responsePrefix = prefixOptions.responsePrefix ?? (configuredResponsePrefix === void 0 && isSelfChat ? resolveIdentityNamePrefix(params.cfg, params.route.agentId) ?? "[remoteclaw]" : void 0);
1593
+ const inboundHistory = params.msg.chatType === "group" ? (params.groupHistory ?? params.groupHistories.get(params.groupHistoryKey) ?? []).map((entry) => ({
1594
+ sender: entry.sender,
1595
+ body: entry.body,
1596
+ timestamp: entry.timestamp
1597
+ })) : void 0;
1598
+ const ctxPayload = finalizeInboundContext({
1599
+ Body: combinedBody,
1600
+ BodyForAgent: params.msg.body,
1601
+ InboundHistory: inboundHistory,
1602
+ RawBody: params.msg.body,
1603
+ CommandBody: params.msg.body,
1604
+ From: params.msg.from,
1605
+ To: params.msg.to,
1606
+ SessionKey: params.route.sessionKey,
1607
+ AccountId: params.route.accountId,
1608
+ MessageSid: params.msg.id,
1609
+ ReplyToId: params.msg.replyToId,
1610
+ ReplyToBody: params.msg.replyToBody,
1611
+ ReplyToSender: params.msg.replyToSender,
1612
+ MediaPath: params.msg.mediaPath,
1613
+ MediaUrl: params.msg.mediaUrl,
1614
+ MediaType: params.msg.mediaType,
1615
+ ChatType: params.msg.chatType,
1616
+ ConversationLabel: params.msg.chatType === "group" ? conversationId : params.msg.from,
1617
+ GroupSubject: params.msg.groupSubject,
1618
+ GroupMembers: formatGroupMembers({
1619
+ participants: params.msg.groupParticipants,
1620
+ roster: params.groupMemberNames.get(params.groupHistoryKey),
1621
+ fallbackE164: params.msg.senderE164
1622
+ }),
1623
+ SenderName: params.msg.senderName,
1624
+ SenderId: params.msg.senderJid?.trim() || params.msg.senderE164,
1625
+ SenderE164: params.msg.senderE164,
1626
+ CommandAuthorized: commandAuthorized,
1627
+ WasMentioned: params.msg.wasMentioned,
1628
+ ...params.msg.location ? toLocationContext(params.msg.location) : {},
1629
+ Provider: "whatsapp",
1630
+ Surface: "whatsapp",
1631
+ OriginatingChannel: "whatsapp",
1632
+ OriginatingTo: params.msg.from
1633
+ });
1634
+ if (dmRouteTarget && params.route.sessionKey === params.route.mainSessionKey) updateLastRouteInBackground({
1635
+ cfg: params.cfg,
1636
+ backgroundTasks: params.backgroundTasks,
1637
+ storeAgentId: params.route.agentId,
1638
+ sessionKey: params.route.mainSessionKey,
1639
+ channel: "whatsapp",
1640
+ to: dmRouteTarget,
1641
+ accountId: params.route.accountId,
1642
+ ctx: ctxPayload,
1643
+ warn: params.replyLogger.warn.bind(params.replyLogger)
1644
+ });
1645
+ const metaTask = recordSessionMetaFromInbound({
1646
+ storePath,
1647
+ sessionKey: params.route.sessionKey,
1648
+ ctx: ctxPayload
1649
+ }).catch((err) => {
1650
+ params.replyLogger.warn({
1651
+ error: formatError(err),
1652
+ storePath,
1653
+ sessionKey: params.route.sessionKey
1654
+ }, "failed updating session meta");
1655
+ });
1656
+ trackBackgroundTask(params.backgroundTasks, metaTask);
1657
+ const { queuedFinal } = await dispatchReplyWithBufferedBlockDispatcher({
1658
+ ctx: ctxPayload,
1659
+ cfg: params.cfg,
1660
+ replyResolver: params.replyResolver,
1661
+ dispatcherOptions: {
1662
+ ...prefixOptions,
1663
+ responsePrefix,
1664
+ deliver: async (payload, info) => {
1665
+ if (info.kind !== "final") return;
1666
+ await deliverWebReply({
1667
+ replyResult: payload,
1668
+ msg: params.msg,
1669
+ mediaLocalRoots,
1670
+ maxMediaBytes: params.maxMediaBytes,
1671
+ textLimit,
1672
+ chunkMode,
1673
+ replyLogger: params.replyLogger,
1674
+ connectionId: params.connectionId,
1675
+ skipLog: false,
1676
+ tableMode
1677
+ });
1678
+ didSendReply = true;
1679
+ const shouldLog = payload.text ? true : void 0;
1680
+ params.rememberSentText(payload.text, {
1681
+ combinedBody,
1682
+ combinedBodySessionKey: params.route.sessionKey,
1683
+ logVerboseMessage: shouldLog
1684
+ });
1685
+ const fromDisplay = params.msg.chatType === "group" ? conversationId : params.msg.from ?? "unknown";
1686
+ const hasMedia = Boolean(payload.mediaUrl || payload.mediaUrls?.length);
1687
+ whatsappOutboundLog.info(`Auto-replied to ${fromDisplay}${hasMedia ? " (media)" : ""}`);
1688
+ if (shouldLogVerbose()) {
1689
+ const preview = payload.text != null ? elide(payload.text, 400) : "<media>";
1690
+ whatsappOutboundLog.debug(`Reply body: ${preview}${hasMedia ? " (media)" : ""}`);
1691
+ }
1692
+ },
1693
+ onError: (err, info) => {
1694
+ const label = info.kind === "tool" ? "tool update" : info.kind === "block" ? "block update" : "auto-reply";
1695
+ whatsappOutboundLog.error(`Failed sending web ${label} to ${params.msg.from ?? conversationId}: ${formatError(err)}`);
1696
+ },
1697
+ onReplyStart: params.msg.sendComposing
1698
+ },
1699
+ replyOptions: {
1700
+ disableBlockStreaming: true,
1701
+ onModelSelected
1702
+ }
1703
+ });
1704
+ if (!queuedFinal) {
1705
+ if (shouldClearGroupHistory) params.groupHistories.set(params.groupHistoryKey, []);
1706
+ logVerbose("Skipping auto-reply: silent token or no text/media returned from resolver");
1707
+ return false;
1708
+ }
1709
+ if (shouldClearGroupHistory) params.groupHistories.set(params.groupHistoryKey, []);
1710
+ return didSendReply;
1711
+ }
1712
+
1713
+ //#endregion
1714
+ //#region src/web/auto-reply/monitor/on-message.ts
1715
+ function createWebOnMessageHandler(params) {
1716
+ const processForRoute = async (msg, route, groupHistoryKey, opts) => processMessage({
1717
+ cfg: params.cfg,
1718
+ msg,
1719
+ route,
1720
+ groupHistoryKey,
1721
+ groupHistories: params.groupHistories,
1722
+ groupMemberNames: params.groupMemberNames,
1723
+ connectionId: params.connectionId,
1724
+ verbose: params.verbose,
1725
+ maxMediaBytes: params.maxMediaBytes,
1726
+ replyResolver: params.replyResolver,
1727
+ replyLogger: params.replyLogger,
1728
+ backgroundTasks: params.backgroundTasks,
1729
+ rememberSentText: params.echoTracker.rememberText,
1730
+ echoHas: params.echoTracker.has,
1731
+ echoForget: params.echoTracker.forget,
1732
+ buildCombinedEchoKey: params.echoTracker.buildCombinedKey,
1733
+ groupHistory: opts?.groupHistory,
1734
+ suppressGroupHistoryClear: opts?.suppressGroupHistoryClear
1735
+ });
1736
+ return async (msg) => {
1737
+ const conversationId = msg.conversationId ?? msg.from;
1738
+ const peerId = resolvePeerId(msg);
1739
+ const route = resolveAgentRoute({
1740
+ cfg: loadConfig(),
1741
+ channel: "whatsapp",
1742
+ accountId: msg.accountId,
1743
+ peer: {
1744
+ kind: msg.chatType === "group" ? "group" : "direct",
1745
+ id: peerId
1746
+ }
1747
+ });
1748
+ const groupHistoryKey = msg.chatType === "group" ? buildGroupHistoryKey({
1749
+ channel: "whatsapp",
1750
+ accountId: route.accountId,
1751
+ peerKind: "group",
1752
+ peerId
1753
+ }) : route.sessionKey;
1754
+ if (msg.from === msg.to) logVerbose(`📱 Same-phone mode detected (from === to: ${msg.from})`);
1755
+ if (params.echoTracker.has(msg.body)) {
1756
+ logVerbose("Skipping auto-reply: detected echo (message matches recently sent text)");
1757
+ params.echoTracker.forget(msg.body);
1758
+ return;
1759
+ }
1760
+ if (msg.chatType === "group") {
1761
+ const metaCtx = {
1762
+ From: msg.from,
1763
+ To: msg.to,
1764
+ SessionKey: route.sessionKey,
1765
+ AccountId: route.accountId,
1766
+ ChatType: msg.chatType,
1767
+ ConversationLabel: conversationId,
1768
+ GroupSubject: msg.groupSubject,
1769
+ SenderName: msg.senderName,
1770
+ SenderId: msg.senderJid?.trim() || msg.senderE164,
1771
+ SenderE164: msg.senderE164,
1772
+ Provider: "whatsapp",
1773
+ Surface: "whatsapp",
1774
+ OriginatingChannel: "whatsapp",
1775
+ OriginatingTo: conversationId
1776
+ };
1777
+ updateLastRouteInBackground({
1778
+ cfg: params.cfg,
1779
+ backgroundTasks: params.backgroundTasks,
1780
+ storeAgentId: route.agentId,
1781
+ sessionKey: route.sessionKey,
1782
+ channel: "whatsapp",
1783
+ to: conversationId,
1784
+ accountId: route.accountId,
1785
+ ctx: metaCtx,
1786
+ warn: params.replyLogger.warn.bind(params.replyLogger)
1787
+ });
1788
+ if (!applyGroupGating({
1789
+ cfg: params.cfg,
1790
+ msg,
1791
+ conversationId,
1792
+ groupHistoryKey,
1793
+ agentId: route.agentId,
1794
+ sessionKey: route.sessionKey,
1795
+ baseMentionConfig: params.baseMentionConfig,
1796
+ authDir: params.account.authDir,
1797
+ groupHistories: params.groupHistories,
1798
+ groupHistoryLimit: params.groupHistoryLimit,
1799
+ groupMemberNames: params.groupMemberNames,
1800
+ logVerbose,
1801
+ replyLogger: params.replyLogger
1802
+ }).shouldProcess) return;
1803
+ } else if (!msg.senderE164 && peerId && peerId.startsWith("+")) msg.senderE164 = normalizeE164(peerId) ?? msg.senderE164;
1804
+ if (await maybeBroadcastMessage({
1805
+ cfg: params.cfg,
1806
+ msg,
1807
+ peerId,
1808
+ route,
1809
+ groupHistoryKey,
1810
+ groupHistories: params.groupHistories,
1811
+ processMessage: processForRoute
1812
+ })) return;
1813
+ await processForRoute(msg, route, groupHistoryKey);
1814
+ };
1815
+ }
1816
+
1817
+ //#endregion
1818
+ //#region src/web/auto-reply/monitor.ts
1819
+ function isNonRetryableWebCloseStatus(statusCode) {
1820
+ return statusCode === 440;
1821
+ }
1822
+ async function monitorWebChannel(verbose, listenerFactory = monitorWebInbox, keepAlive = true, replyResolver = getReplyFromConfig, runtime = defaultRuntime, abortSignal, tuning = {}) {
1823
+ const runId = newConnectionId();
1824
+ const replyLogger = getChildLogger({
1825
+ module: "web-auto-reply",
1826
+ runId
1827
+ });
1828
+ const heartbeatLogger = getChildLogger({
1829
+ module: "web-heartbeat",
1830
+ runId
1831
+ });
1832
+ const reconnectLogger = getChildLogger({
1833
+ module: "web-reconnect",
1834
+ runId
1835
+ });
1836
+ const status = {
1837
+ running: true,
1838
+ connected: false,
1839
+ reconnectAttempts: 0,
1840
+ lastConnectedAt: null,
1841
+ lastDisconnect: null,
1842
+ lastMessageAt: null,
1843
+ lastEventAt: null,
1844
+ lastError: null
1845
+ };
1846
+ const emitStatus = () => {
1847
+ tuning.statusSink?.({
1848
+ ...status,
1849
+ lastDisconnect: status.lastDisconnect ? { ...status.lastDisconnect } : null
1850
+ });
1851
+ };
1852
+ emitStatus();
1853
+ const baseCfg = loadConfig();
1854
+ const account = resolveWhatsAppAccount({
1855
+ cfg: baseCfg,
1856
+ accountId: tuning.accountId
1857
+ });
1858
+ const cfg = {
1859
+ ...baseCfg,
1860
+ channels: {
1861
+ ...baseCfg.channels,
1862
+ whatsapp: {
1863
+ ...baseCfg.channels?.whatsapp,
1864
+ ackReaction: account.ackReaction,
1865
+ messagePrefix: account.messagePrefix,
1866
+ allowFrom: account.allowFrom,
1867
+ groupAllowFrom: account.groupAllowFrom,
1868
+ groupPolicy: account.groupPolicy,
1869
+ textChunkLimit: account.textChunkLimit,
1870
+ chunkMode: account.chunkMode,
1871
+ mediaMaxMb: account.mediaMaxMb,
1872
+ blockStreaming: account.blockStreaming,
1873
+ groups: account.groups
1874
+ }
1875
+ }
1876
+ };
1877
+ const configuredMaxMb = cfg.agents?.defaults?.mediaMaxMb;
1878
+ const maxMediaBytes = typeof configuredMaxMb === "number" && configuredMaxMb > 0 ? configuredMaxMb * 1024 * 1024 : DEFAULT_WEB_MEDIA_BYTES;
1879
+ const heartbeatSeconds = resolveHeartbeatSeconds(cfg, tuning.heartbeatSeconds);
1880
+ const reconnectPolicy = resolveReconnectPolicy(cfg, tuning.reconnect);
1881
+ const baseMentionConfig = buildMentionConfig(cfg);
1882
+ const groupHistoryLimit = cfg.channels?.whatsapp?.accounts?.[tuning.accountId ?? ""]?.historyLimit ?? cfg.channels?.whatsapp?.historyLimit ?? cfg.messages?.groupChat?.historyLimit ?? DEFAULT_GROUP_HISTORY_LIMIT;
1883
+ const groupHistories = /* @__PURE__ */ new Map();
1884
+ const groupMemberNames = /* @__PURE__ */ new Map();
1885
+ const echoTracker = createEchoTracker({
1886
+ maxItems: 100,
1887
+ logVerbose
1888
+ });
1889
+ const sleep = tuning.sleep ?? ((ms, signal) => sleepWithAbort(ms, signal ?? abortSignal));
1890
+ const stopRequested = () => abortSignal?.aborted === true;
1891
+ const abortPromise = abortSignal && new Promise((resolve) => abortSignal.addEventListener("abort", () => resolve("aborted"), { once: true }));
1892
+ const currentMaxListeners = process.getMaxListeners?.() ?? 10;
1893
+ if (process.setMaxListeners && currentMaxListeners < 50) process.setMaxListeners(50);
1894
+ let sigintStop = false;
1895
+ const handleSigint = () => {
1896
+ sigintStop = true;
1897
+ };
1898
+ process.once("SIGINT", handleSigint);
1899
+ let reconnectAttempts = 0;
1900
+ while (true) {
1901
+ if (stopRequested()) break;
1902
+ const connectionId = newConnectionId();
1903
+ const startedAt = Date.now();
1904
+ let heartbeat = null;
1905
+ let watchdogTimer = null;
1906
+ let lastMessageAt = null;
1907
+ let handledMessages = 0;
1908
+ let unregisterUnhandled = null;
1909
+ const MESSAGE_TIMEOUT_MS = tuning.messageTimeoutMs ?? 1800 * 1e3;
1910
+ const WATCHDOG_CHECK_MS = tuning.watchdogCheckMs ?? 60 * 1e3;
1911
+ const backgroundTasks = /* @__PURE__ */ new Set();
1912
+ const onMessage = createWebOnMessageHandler({
1913
+ cfg,
1914
+ verbose,
1915
+ connectionId,
1916
+ maxMediaBytes,
1917
+ groupHistoryLimit,
1918
+ groupHistories,
1919
+ groupMemberNames,
1920
+ echoTracker,
1921
+ backgroundTasks,
1922
+ replyResolver: replyResolver ?? getReplyFromConfig,
1923
+ replyLogger,
1924
+ baseMentionConfig,
1925
+ account
1926
+ });
1927
+ const inboundDebounceMs = resolveInboundDebounceMs({
1928
+ cfg,
1929
+ channel: "whatsapp"
1930
+ });
1931
+ const shouldDebounce = (msg) => {
1932
+ if (msg.mediaPath || msg.mediaType) return false;
1933
+ if (msg.location) return false;
1934
+ if (msg.replyToId || msg.replyToBody) return false;
1935
+ return !hasControlCommand(msg.body, cfg);
1936
+ };
1937
+ const listener = await (listenerFactory ?? monitorWebInbox)({
1938
+ verbose,
1939
+ accountId: account.accountId,
1940
+ authDir: account.authDir,
1941
+ mediaMaxMb: account.mediaMaxMb,
1942
+ sendReadReceipts: account.sendReadReceipts,
1943
+ debounceMs: inboundDebounceMs,
1944
+ shouldDebounce,
1945
+ onMessage: async (msg) => {
1946
+ handledMessages += 1;
1947
+ lastMessageAt = Date.now();
1948
+ status.lastMessageAt = lastMessageAt;
1949
+ status.lastEventAt = lastMessageAt;
1950
+ emitStatus();
1951
+ await onMessage(msg);
1952
+ }
1953
+ });
1954
+ status.connected = true;
1955
+ status.lastConnectedAt = Date.now();
1956
+ status.lastEventAt = status.lastConnectedAt;
1957
+ status.lastError = null;
1958
+ emitStatus();
1959
+ const { e164: selfE164 } = readWebSelfId(account.authDir);
1960
+ const connectRoute = resolveAgentRoute({
1961
+ cfg,
1962
+ channel: "whatsapp",
1963
+ accountId: account.accountId
1964
+ });
1965
+ enqueueSystemEvent(`WhatsApp gateway connected${selfE164 ? ` as ${selfE164}` : ""}.`, { sessionKey: connectRoute.sessionKey });
1966
+ setActiveWebListener(account.accountId, listener);
1967
+ unregisterUnhandled = registerUnhandledRejectionHandler((reason) => {
1968
+ if (!isLikelyWhatsAppCryptoError(reason)) return false;
1969
+ const errorStr = formatError(reason);
1970
+ reconnectLogger.warn({
1971
+ connectionId,
1972
+ error: errorStr
1973
+ }, "web reconnect: unhandled rejection from WhatsApp socket; forcing reconnect");
1974
+ listener.signalClose?.({
1975
+ status: 499,
1976
+ isLoggedOut: false,
1977
+ error: reason
1978
+ });
1979
+ return true;
1980
+ });
1981
+ const closeListener = async () => {
1982
+ setActiveWebListener(account.accountId, null);
1983
+ if (unregisterUnhandled) {
1984
+ unregisterUnhandled();
1985
+ unregisterUnhandled = null;
1986
+ }
1987
+ if (heartbeat) clearInterval(heartbeat);
1988
+ if (watchdogTimer) clearInterval(watchdogTimer);
1989
+ if (backgroundTasks.size > 0) {
1990
+ await Promise.allSettled(backgroundTasks);
1991
+ backgroundTasks.clear();
1992
+ }
1993
+ try {
1994
+ await listener.close();
1995
+ } catch (err) {
1996
+ logVerbose(`Socket close failed: ${formatError(err)}`);
1997
+ }
1998
+ };
1999
+ if (keepAlive) {
2000
+ heartbeat = setInterval(() => {
2001
+ const authAgeMs = getWebAuthAgeMs(account.authDir);
2002
+ const minutesSinceLastMessage = lastMessageAt ? Math.floor((Date.now() - lastMessageAt) / 6e4) : null;
2003
+ const logData = {
2004
+ connectionId,
2005
+ reconnectAttempts,
2006
+ messagesHandled: handledMessages,
2007
+ lastMessageAt,
2008
+ authAgeMs,
2009
+ uptimeMs: Date.now() - startedAt,
2010
+ ...minutesSinceLastMessage !== null && minutesSinceLastMessage > 30 ? { minutesSinceLastMessage } : {}
2011
+ };
2012
+ if (minutesSinceLastMessage && minutesSinceLastMessage > 30) heartbeatLogger.warn(logData, "⚠️ web gateway heartbeat - no messages in 30+ minutes");
2013
+ else heartbeatLogger.info(logData, "web gateway heartbeat");
2014
+ }, heartbeatSeconds * 1e3);
2015
+ watchdogTimer = setInterval(() => {
2016
+ if (!lastMessageAt) return;
2017
+ const timeSinceLastMessage = Date.now() - lastMessageAt;
2018
+ if (timeSinceLastMessage <= MESSAGE_TIMEOUT_MS) return;
2019
+ const minutesSinceLastMessage = Math.floor(timeSinceLastMessage / 6e4);
2020
+ heartbeatLogger.warn({
2021
+ connectionId,
2022
+ minutesSinceLastMessage,
2023
+ lastMessageAt: new Date(lastMessageAt),
2024
+ messagesHandled: handledMessages
2025
+ }, "Message timeout detected - forcing reconnect");
2026
+ whatsappHeartbeatLog.warn(`No messages received in ${minutesSinceLastMessage}m - restarting connection`);
2027
+ closeListener().catch((err) => {
2028
+ logVerbose(`Close listener failed: ${formatError(err)}`);
2029
+ });
2030
+ listener.signalClose?.({
2031
+ status: 499,
2032
+ isLoggedOut: false,
2033
+ error: "watchdog-timeout"
2034
+ });
2035
+ }, WATCHDOG_CHECK_MS);
2036
+ }
2037
+ whatsappLog.info("Listening for personal WhatsApp inbound messages.");
2038
+ if (process.stdout.isTTY || process.stderr.isTTY) whatsappLog.raw("Ctrl+C to stop.");
2039
+ if (!keepAlive) {
2040
+ await closeListener();
2041
+ process.removeListener("SIGINT", handleSigint);
2042
+ return;
2043
+ }
2044
+ const reason = await Promise.race([listener.onClose?.catch((err) => {
2045
+ reconnectLogger.error({ error: formatError(err) }, "listener.onClose rejected");
2046
+ return {
2047
+ status: 500,
2048
+ isLoggedOut: false,
2049
+ error: err
2050
+ };
2051
+ }) ?? waitForever(), abortPromise ?? waitForever()]);
2052
+ if (Date.now() - startedAt > heartbeatSeconds * 1e3) reconnectAttempts = 0;
2053
+ status.reconnectAttempts = reconnectAttempts;
2054
+ emitStatus();
2055
+ if (stopRequested() || sigintStop || reason === "aborted") {
2056
+ await closeListener();
2057
+ break;
2058
+ }
2059
+ const statusCode = (typeof reason === "object" && reason && "status" in reason ? reason.status : void 0) ?? "unknown";
2060
+ const loggedOut = typeof reason === "object" && reason && "isLoggedOut" in reason && reason.isLoggedOut;
2061
+ const errorStr = formatError(reason);
2062
+ status.connected = false;
2063
+ status.lastEventAt = Date.now();
2064
+ status.lastDisconnect = {
2065
+ at: status.lastEventAt,
2066
+ status: typeof statusCode === "number" ? statusCode : void 0,
2067
+ error: errorStr,
2068
+ loggedOut: Boolean(loggedOut)
2069
+ };
2070
+ status.lastError = errorStr;
2071
+ status.reconnectAttempts = reconnectAttempts;
2072
+ emitStatus();
2073
+ reconnectLogger.info({
2074
+ connectionId,
2075
+ status: statusCode,
2076
+ loggedOut,
2077
+ reconnectAttempts,
2078
+ error: errorStr
2079
+ }, "web reconnect: connection closed");
2080
+ enqueueSystemEvent(`WhatsApp gateway disconnected (status ${statusCode ?? "unknown"})`, { sessionKey: connectRoute.sessionKey });
2081
+ if (loggedOut) {
2082
+ runtime.error(`WhatsApp session logged out. Run \`${formatCliCommand("remoteclaw channels login --channel web")}\` to relink.`);
2083
+ await closeListener();
2084
+ break;
2085
+ }
2086
+ if (isNonRetryableWebCloseStatus(statusCode)) {
2087
+ reconnectLogger.warn({
2088
+ connectionId,
2089
+ status: statusCode,
2090
+ error: errorStr
2091
+ }, "web reconnect: non-retryable close status; stopping monitor");
2092
+ 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.`);
2093
+ await closeListener();
2094
+ break;
2095
+ }
2096
+ reconnectAttempts += 1;
2097
+ status.reconnectAttempts = reconnectAttempts;
2098
+ emitStatus();
2099
+ if (reconnectPolicy.maxAttempts > 0 && reconnectAttempts >= reconnectPolicy.maxAttempts) {
2100
+ reconnectLogger.warn({
2101
+ connectionId,
2102
+ status: statusCode,
2103
+ reconnectAttempts,
2104
+ maxAttempts: reconnectPolicy.maxAttempts
2105
+ }, "web reconnect: max attempts reached; continuing in degraded mode");
2106
+ runtime.error(`WhatsApp Web reconnect: max attempts reached (${reconnectAttempts}/${reconnectPolicy.maxAttempts}). Stopping web monitoring.`);
2107
+ await closeListener();
2108
+ break;
2109
+ }
2110
+ const delay = computeBackoff(reconnectPolicy, reconnectAttempts);
2111
+ reconnectLogger.info({
2112
+ connectionId,
2113
+ status: statusCode,
2114
+ reconnectAttempts,
2115
+ maxAttempts: reconnectPolicy.maxAttempts || "unlimited",
2116
+ delayMs: delay
2117
+ }, "web reconnect: scheduling retry");
2118
+ runtime.error(`WhatsApp Web connection closed (status ${statusCode}). Retry ${reconnectAttempts}/${reconnectPolicy.maxAttempts || "∞"} in ${formatDurationPrecise(delay)}… (${errorStr})`);
2119
+ await closeListener();
2120
+ try {
2121
+ await sleep(delay, abortSignal);
2122
+ } catch {
2123
+ break;
2124
+ }
2125
+ }
2126
+ status.running = false;
2127
+ status.connected = false;
2128
+ status.lastEventAt = Date.now();
2129
+ emitStatus();
2130
+ process.removeListener("SIGINT", handleSigint);
2131
+ }
2132
+
2133
+ //#endregion
2134
+ export { monitorWebInbox as n, monitorWebChannel as t };