remoteclaw 0.0.0 → 0.1.0-next.2abd2fa

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2114) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/LICENSE +661 -0
  3. package/README.md +490 -0
  4. package/assets/chrome-extension/README.md +23 -0
  5. package/assets/chrome-extension/background-utils.js +48 -0
  6. package/assets/chrome-extension/background.js +899 -0
  7. package/assets/chrome-extension/icons/icon128.png +0 -0
  8. package/assets/chrome-extension/icons/icon16.png +0 -0
  9. package/assets/chrome-extension/icons/icon32.png +0 -0
  10. package/assets/chrome-extension/icons/icon48.png +0 -0
  11. package/assets/chrome-extension/manifest.json +25 -0
  12. package/assets/chrome-extension/options-validation.js +57 -0
  13. package/assets/chrome-extension/options.html +200 -0
  14. package/assets/chrome-extension/options.js +74 -0
  15. package/assets/clawtributor-avatar-placeholder.png +0 -0
  16. package/assets/dmg-background-small.png +0 -0
  17. package/assets/dmg-background.png +0 -0
  18. package/dist/account-lookup-0KDSp5Mj.js +11 -0
  19. package/dist/account-lookup-zvANGr2x.js +11 -0
  20. package/dist/accounts-BFy_Z3od.js +272 -0
  21. package/dist/accounts-BTXSfPWi.js +270 -0
  22. package/dist/accounts-BxGS70Do.js +36 -0
  23. package/dist/accounts-CNY1TGj1.js +47 -0
  24. package/dist/accounts-DBohBlww.js +32 -0
  25. package/dist/accounts-DqRQ75w3.js +36 -0
  26. package/dist/accounts-iODF3SK2.js +47 -0
  27. package/dist/ack-reactions-B11TAC2D.js +446 -0
  28. package/dist/ack-reactions-BWVjL4H6.js +446 -0
  29. package/dist/acp-cli-CA1xMmVo.js +1320 -0
  30. package/dist/acp-cli-CGo6fJVZ.js +1326 -0
  31. package/dist/active-listener-VzhWW8W6.js +37 -0
  32. package/dist/active-listener-z0qVEcom.js +37 -0
  33. package/dist/agent-CTizRPIJ.js +732 -0
  34. package/dist/agent-D2RVoS5g.js +731 -0
  35. package/dist/agent-helpers-B6VfZ9_u.js +606 -0
  36. package/dist/agent-helpers-CTx5KKJu.js +606 -0
  37. package/dist/agent-scope-BGYzhtWQ.js +121 -0
  38. package/dist/agent-scope-C50VuLKh.js +119 -0
  39. package/dist/agents-BuYn-obw.js +788 -0
  40. package/dist/agents.config-BSTxuTVd.js +116 -0
  41. package/dist/agents.config-p3V3b9u6.js +116 -0
  42. package/dist/ansi-D04X81yq.js +14 -0
  43. package/dist/api-BeQMq2iS.js +17 -0
  44. package/dist/api-CxX8-gGz.js +17 -0
  45. package/dist/argv-Co-b9Zsc.js +101 -0
  46. package/dist/audio-DPOuhNq7.js +43 -0
  47. package/dist/audio-VBcVDa08.js +43 -0
  48. package/dist/audio-preflight-BwmCYeuM.js +64 -0
  49. package/dist/audio-preflight-co8gjlPX.js +69 -0
  50. package/dist/audit-oH4urD3G.js +3138 -0
  51. package/dist/audit-qgtCT3ik.js +3138 -0
  52. package/dist/auth-CAczFgAO.js +448 -0
  53. package/dist/auth-Deh9i9Eg.js +448 -0
  54. package/dist/auth-profiles-BquJGKLC.js +279 -0
  55. package/dist/auth-profiles-D8vKiBPq.js +281 -0
  56. package/dist/banner-Cf978khN.js +294 -0
  57. package/dist/binaries-DXW6oATV.js +13 -0
  58. package/dist/bindings-CRU_udk8.js +69 -0
  59. package/dist/bindings-DQZAu8Wv.js +69 -0
  60. package/dist/bonjour-discovery-DdAk1VyO.js +378 -0
  61. package/dist/bonjour-discovery-DuhiIZZx.js +378 -0
  62. package/dist/boot/handler.js +1498 -0
  63. package/dist/brew-C4zKZsHX.js +46 -0
  64. package/dist/brew-DbSbN8sD.js +46 -0
  65. package/dist/browser-cli-CZC4h5V4.js +1687 -0
  66. package/dist/browser-cli-DAgi_aQk.js +1692 -0
  67. package/dist/build-info.json +5 -0
  68. package/dist/bundled/boot/HOOK.md +24 -0
  69. package/dist/bundled/command-logger/HOOK.md +122 -0
  70. package/dist/call-BbwtB9Y-.js +2828 -0
  71. package/dist/call-PivL7Uex.js +2829 -0
  72. package/dist/canvas-host/a2ui/.bundle.hash +1 -0
  73. package/dist/canvas-host/a2ui/a2ui.bundle.js +13193 -0
  74. package/dist/canvas-host/a2ui/index.html +307 -0
  75. package/dist/catalog-BqO6yem_.js +185 -0
  76. package/dist/catalog-DFmaYwfk.js +185 -0
  77. package/dist/channel-account-context-CvIDAtHS.js +550 -0
  78. package/dist/channel-account-context-q-o0pG1A.js +550 -0
  79. package/dist/channel-activity-BaCNOZpP.js +94 -0
  80. package/dist/channel-activity-C-G4n9BK.js +292 -0
  81. package/dist/channel-activity-DTKGf3j5.js +94 -0
  82. package/dist/channel-options-Cyappik_.js +32 -0
  83. package/dist/channel-options-DFnypY5S.js +33 -0
  84. package/dist/channel-selection-BGl53D5K.js +51 -0
  85. package/dist/channel-selection-NNPbxnyZ.js +51 -0
  86. package/dist/channel-web-DmhVkWbP.js +2134 -0
  87. package/dist/channel-web-kRC3UYBJ.js +2136 -0
  88. package/dist/channels-cli-C5XRkPJl.js +1421 -0
  89. package/dist/channels-cli-D6TqCI0m.js +1426 -0
  90. package/dist/channels-status-issues-CUc9mpeW.js +18 -0
  91. package/dist/channels-status-issues-DwRDzwrV.js +18 -0
  92. package/dist/chat-envelope-DEZ-5RY8.js +248 -0
  93. package/dist/chat-envelope-el7Uo-Fe.js +248 -0
  94. package/dist/chat-type-CYPyHAj-.js +11 -0
  95. package/dist/chat-type-DKb2TlGZ.js +11 -0
  96. package/dist/chrome-0QaGKb3L.js +1732 -0
  97. package/dist/chrome-CFeWdP0Y.js +1733 -0
  98. package/dist/chunk-CSQfUhgF.js +341 -0
  99. package/dist/chunk-D0Y_w4oX.js +341 -0
  100. package/dist/clack-prompter-B7tOxhJd.js +122 -0
  101. package/dist/clack-prompter-CCFnKP_1.js +121 -0
  102. package/dist/cleanup-utils-CqAVZz2b.js +94 -0
  103. package/dist/cleanup-utils-CwQvD73q.js +94 -0
  104. package/dist/cli/daemon-cli.js +9 -0
  105. package/dist/cli-BR2J3c4l.js +125 -0
  106. package/dist/cli-C1q1vSmN.js +130 -0
  107. package/dist/cli-name-BicfmwQX.js +23 -0
  108. package/dist/cli-name-C6rJGl18.js +23 -0
  109. package/dist/cli-utils-BhXbz2UF.js +16 -0
  110. package/dist/cli-utils-DZe_rVkZ.js +16 -0
  111. package/dist/client-C61M8zI3.js +22 -0
  112. package/dist/client-DdpmATKq.js +22 -0
  113. package/dist/clipboard-D7_SKHPK.js +31 -0
  114. package/dist/clipboard-Dzkx6Q2K.js +31 -0
  115. package/dist/command-format-CVfo8I5f.js +18 -0
  116. package/dist/command-format-DgXcqxBt.js +32 -0
  117. package/dist/command-logger/handler.js +57 -0
  118. package/dist/command-options-C4paWSGf.js +26 -0
  119. package/dist/command-options-CA30lfLK.js +26 -0
  120. package/dist/command-registry-CYjvOp8W.js +215 -0
  121. package/dist/commands-CDonBOrw.js +41 -0
  122. package/dist/commands-D_-bgTlO.js +41 -0
  123. package/dist/commands-registry-CWJv6xe2.js +892 -0
  124. package/dist/commands-registry-Ci8_cFk9.js +893 -0
  125. package/dist/common-CMI-qsF8.js +156 -0
  126. package/dist/common-DSVmydhm.js +156 -0
  127. package/dist/completion-cli-8iZJqfmX.js +452 -0
  128. package/dist/completion-cli-CYDjEZSt.js +452 -0
  129. package/dist/config-D5XU45KD.js +6953 -0
  130. package/dist/config-FHu9Bn4R.js +6951 -0
  131. package/dist/config-cli-Gehy4sav.js +241 -0
  132. package/dist/config-cli-RC9qMgJq.js +246 -0
  133. package/dist/config-eval-CjGZtLwx.js +102 -0
  134. package/dist/config-eval-H_wlEYIG.js +102 -0
  135. package/dist/config-guard-J-Q_DFWk.js +97 -0
  136. package/dist/config-guard-cB5a_ANg.js +75 -0
  137. package/dist/config-validation-BPNyd9_3.js +18 -0
  138. package/dist/config-validation-BPWuvhVe.js +18 -0
  139. package/dist/configure-CC2XdRRm.js +891 -0
  140. package/dist/configure-DxFBJuhZ.js +889 -0
  141. package/dist/constants-BmRFoHl0.js +67 -0
  142. package/dist/constants-C9WPAluB.js +67 -0
  143. package/dist/constants-ChptG3d7.js +12 -0
  144. package/dist/constants-DY6b-_Wl.js +12 -0
  145. package/dist/control-auth-D0tpV3ts.js +397 -0
  146. package/dist/control-auth-_-0PGRUs.js +397 -0
  147. package/dist/control-ui/apple-touch-icon.png +0 -0
  148. package/dist/control-ui/assets/index-B4ZM1lW1.js +7738 -0
  149. package/dist/control-ui/assets/index-B4ZM1lW1.js.map +1 -0
  150. package/dist/control-ui/assets/index-PED72sKF.css +1 -0
  151. package/dist/control-ui/assets/pt-BR-eq0TfCI7.js +2 -0
  152. package/dist/control-ui/assets/pt-BR-eq0TfCI7.js.map +1 -0
  153. package/dist/control-ui/assets/zh-CN-DmLG2MF9.js +2 -0
  154. package/dist/control-ui/assets/zh-CN-DmLG2MF9.js.map +1 -0
  155. package/dist/control-ui/assets/zh-TW-BLErH0EM.js +2 -0
  156. package/dist/control-ui/assets/zh-TW-BLErH0EM.js.map +1 -0
  157. package/dist/control-ui/favicon-32.png +0 -0
  158. package/dist/control-ui/favicon.ico +0 -0
  159. package/dist/control-ui/favicon.svg +67 -0
  160. package/dist/control-ui/index.html +17 -0
  161. package/dist/control-ui-assets-Cx_mw4D0.js +186 -0
  162. package/dist/control-ui-assets-W1AUuGrO.js +186 -0
  163. package/dist/conversation-label-C4SDz4sT.js +36 -0
  164. package/dist/conversation-label-D1frnvYe.js +36 -0
  165. package/dist/credentials-BHWUBHMd.js +91 -0
  166. package/dist/credentials-DFsi1_e8.js +91 -0
  167. package/dist/cron-cli-BzERxhr5.js +495 -0
  168. package/dist/cron-cli-C8j_uslU.js +490 -0
  169. package/dist/daemon-cli-C95XNbX0.js +1199 -0
  170. package/dist/daemon-cli-e6sURMqd.js +1197 -0
  171. package/dist/daemon-cli.js +15243 -0
  172. package/dist/daemon-install-CcohRvKV.js +55 -0
  173. package/dist/daemon-install-DDshfT0J.js +60 -0
  174. package/dist/daemon-install-helpers-CFGAfRlj.js +462 -0
  175. package/dist/daemon-install-helpers-DIUzSFG1.js +462 -0
  176. package/dist/daemon-runtime-CMnbwryP.js +13 -0
  177. package/dist/daemon-runtime-CvqE4ysg.js +13 -0
  178. package/dist/dangerous-name-matching-BzmiLXmA.js +45 -0
  179. package/dist/dangerous-name-matching-DaVRgwer.js +45 -0
  180. package/dist/dangerous-tools-BOLoCRv4.js +253 -0
  181. package/dist/dangerous-tools-Baq7Q-i6.js +253 -0
  182. package/dist/defaults-B5KStIBg.js +7 -0
  183. package/dist/defaults-xUAL2Z-F.js +7 -0
  184. package/dist/deliver-912khjLK.js +481 -0
  185. package/dist/deliver-D56J4-1F.js +481 -0
  186. package/dist/delivery-queue-Cfa9Wmxp.js +244 -0
  187. package/dist/delivery-queue-CxVRi4tw.js +244 -0
  188. package/dist/devices-cli-0qDhTgZR.js +316 -0
  189. package/dist/devices-cli-6SKMR2bV.js +321 -0
  190. package/dist/diagnostics-99iCgBUh.js +46 -0
  191. package/dist/diagnostics-VC0cz7kX.js +46 -0
  192. package/dist/directory-cli-5YXdoVdn.js +217 -0
  193. package/dist/directory-cli-D3IKCHmn.js +222 -0
  194. package/dist/dm-policy-shared-4rkjhcrM.js +22 -0
  195. package/dist/dm-policy-shared-D8lgnmrC.js +22 -0
  196. package/dist/dns-cli-11CtErVU.js +197 -0
  197. package/dist/dns-cli-SiEd_1Lq.js +202 -0
  198. package/dist/dock-BqNINg7k.js +928 -0
  199. package/dist/dock-CQuu41bw.js +929 -0
  200. package/dist/doctor-completion-BR1SlAT3.js +92 -0
  201. package/dist/doctor-completion-CZwpEhIK.js +92 -0
  202. package/dist/doctor-config-flow-BVkHcvoj.js +1933 -0
  203. package/dist/doctor-config-flow-DVYRn0An.js +1934 -0
  204. package/dist/enable-DcJnkzfz.js +59 -0
  205. package/dist/enable-ibNq4UWy.js +59 -0
  206. package/dist/entry.js +2620 -0
  207. package/dist/env-DeF64iu0.js +60 -0
  208. package/dist/env-vars-7aZqKPhk.js +93 -0
  209. package/dist/env-vars-CLGbxdpL.js +93 -0
  210. package/dist/errors-8F-77i6m.js +35 -0
  211. package/dist/errors-DZ199hOo.js +35 -0
  212. package/dist/exec-DbKuYyM1.js +164 -0
  213. package/dist/exec-DkFE7lqU.js +164 -0
  214. package/dist/export-html/template.css +1060 -0
  215. package/dist/export-html/template.html +88 -0
  216. package/dist/export-html/template.js +1797 -0
  217. package/dist/export-html/vendor/highlight.min.js +1213 -0
  218. package/dist/export-html/vendor/marked.min.js +6 -0
  219. package/dist/extensionAPI.js +11520 -0
  220. package/dist/fetch-BFSBLBkA.js +67 -0
  221. package/dist/fetch-C6XKGA11.js +67 -0
  222. package/dist/fetch-CEDsOiql.js +67 -0
  223. package/dist/fetch-timeout-DTIN7CGM.js +43 -0
  224. package/dist/fetch-timeout-DoySHqfO.js +43 -0
  225. package/dist/file-identity-BxlKD8Ys.js +12 -0
  226. package/dist/file-lock-CIvloidc.js +107 -0
  227. package/dist/file-lock-CzBL_VIx.js +107 -0
  228. package/dist/format-duration-CqUERz51.js +35 -0
  229. package/dist/format-duration-Ct-yiwkS.js +35 -0
  230. package/dist/format-relative-79_Y1n2Y.js +55 -0
  231. package/dist/format-relative-CxLpEQOX.js +55 -0
  232. package/dist/fs-safe-DSwT85uK.js +88 -0
  233. package/dist/fs-safe-DkBhNAc3.js +98 -0
  234. package/dist/gateway-cli-BEEZhCHv.js +23747 -0
  235. package/dist/gateway-cli-Nob0g_4y.js +23742 -0
  236. package/dist/gateway-rpc-CksB-N83.js +28 -0
  237. package/dist/gateway-rpc-Dq44SkOv.js +28 -0
  238. package/dist/gmail-setup-utils-Cnx8A5pW.js +422 -0
  239. package/dist/gmail-setup-utils-nkabbKOE.js +423 -0
  240. package/dist/health-RT-F3hzT.js +1423 -0
  241. package/dist/health-SOuaKNRa.js +1420 -0
  242. package/dist/health-format-BG95OE6N.js +28 -0
  243. package/dist/health-format-B_QRD8Si.js +28 -0
  244. package/dist/heartbeat-visibility-BxkZjE5m.js +125 -0
  245. package/dist/heartbeat-visibility-CGG-G7px.js +125 -0
  246. package/dist/heartbeat-wake-LGEgcXjs.js +182 -0
  247. package/dist/heartbeat-wake-Y97geucO.js +182 -0
  248. package/dist/help-format-DAxf0l_h.js +17 -0
  249. package/dist/help-format-NNm_Ov4H.js +17 -0
  250. package/dist/helpers-BAsMXprO.js +25 -0
  251. package/dist/helpers-DLgbkcEn.js +25 -0
  252. package/dist/helpers-R7bU5IBz.js +10 -0
  253. package/dist/helpers-kkeXif0Q.js +10 -0
  254. package/dist/hook-runner-global-DJ14gXFP.js +527 -0
  255. package/dist/hooks-cli-DyEKryW8.js +1217 -0
  256. package/dist/hooks-cli-RuEn0-oy.js +1222 -0
  257. package/dist/host-env-security-Bms2_EMV.js +92 -0
  258. package/dist/host-env-security-szwfmhC4.js +92 -0
  259. package/dist/image-ops-Bi6JPSkD.js +354 -0
  260. package/dist/image-ops-DWytvdh_.js +354 -0
  261. package/dist/import-D8BBZQgl.js +170 -0
  262. package/dist/import-DQ6NI4Fz.js +168 -0
  263. package/dist/inbound-context-CPkkQW0i.js +68 -0
  264. package/dist/inbound-context-DS_kpIYI.js +68 -0
  265. package/dist/inbound-path-policy-Bg4gZBx-.js +250 -0
  266. package/dist/inbound-path-policy-sdr5Ji0k.js +250 -0
  267. package/dist/index.js +569 -0
  268. package/dist/input-provenance-Bn6thJNm.js +35 -0
  269. package/dist/input-provenance-xUsSMOsz.js +35 -0
  270. package/dist/inspect-Dt8hogS3.js +559 -0
  271. package/dist/inspect-vYIL1oA0.js +559 -0
  272. package/dist/installs-aM5dWAyn.js +325 -0
  273. package/dist/installs-pWdqG8HL.js +325 -0
  274. package/dist/ip-C9q3Oq20.js +200 -0
  275. package/dist/ip-D0zgNmBV.js +200 -0
  276. package/dist/ipv4--2WXMVtE.js +46 -0
  277. package/dist/ipv4-CDQpx1A7.js +46 -0
  278. package/dist/ir-BpaAMTfW.js +940 -0
  279. package/dist/is-main-DN8-sNR5.js +30 -0
  280. package/dist/json-file-B7l5-Xhr.js +25 -0
  281. package/dist/json-file-ChO_R9yh.js +25 -0
  282. package/dist/json-files-CmpYSF4G.js +46 -0
  283. package/dist/json-files-DzpTak5i.js +46 -0
  284. package/dist/lanes-ByWMUgrz.js +58 -0
  285. package/dist/lanes-cHJ5arWg.js +58 -0
  286. package/dist/links-Bz4V7R_p.js +15 -0
  287. package/dist/links-C3soDNDH.js +15 -0
  288. package/dist/loader-Ccwsh8Sh.js +22624 -0
  289. package/dist/loader-y9MhJewT.js +22621 -0
  290. package/dist/local-roots-BrH0Q63K.js +313 -0
  291. package/dist/local-roots-nImrw2WR.js +314 -0
  292. package/dist/location-DBWCGNLq.js +43 -0
  293. package/dist/location-GbZ0bBRU.js +43 -0
  294. package/dist/logger-BWMPnILd.js +47 -0
  295. package/dist/logger-Bw3cFE5t.js +49 -0
  296. package/dist/logger-DyL5G2DO.js +12 -0
  297. package/dist/logger-GvipVDfh.js +12 -0
  298. package/dist/logging-C-nxX2fn.js +20 -0
  299. package/dist/logging-D8-Kozjc.js +19 -0
  300. package/dist/login-C_Kt57nO.js +62 -0
  301. package/dist/login-DOmWDMeP.js +61 -0
  302. package/dist/login-qr-CXU0wC5K.js +322 -0
  303. package/dist/login-qr-D0u6fdeO.js +327 -0
  304. package/dist/logs-cli-CschwP4d.js +238 -0
  305. package/dist/logs-cli-D7ayUvz_.js +233 -0
  306. package/dist/markdown-tables-CrmghPAr.js +29 -0
  307. package/dist/markdown-tables-jrnSPvZ6.js +29 -0
  308. package/dist/media-CojxZ45J.js +10492 -0
  309. package/dist/media-DN7yRfrH.js +940 -0
  310. package/dist/message-action-names-CtEZcmlU.js +2521 -0
  311. package/dist/message-action-names-WglOO_DT.js +2521 -0
  312. package/dist/message-channel-DzJqHVZD.js +91 -0
  313. package/dist/message-channel-uWMAiywE.js +91 -0
  314. package/dist/mime-BS3jhcZE.js +149 -0
  315. package/dist/mime-Cxh_64P6.js +149 -0
  316. package/dist/mutable-allowlist-detectors-DiZDtmlZ.js +64 -0
  317. package/dist/mutable-allowlist-detectors-U5ThQr9V.js +64 -0
  318. package/dist/net-Cg8AQeke.js +225 -0
  319. package/dist/net-D6D0wgcF.js +225 -0
  320. package/dist/node-cli-Q2-n3Fgv.js +24 -0
  321. package/dist/node-cli-Uf6lAntf.js +24 -0
  322. package/dist/nodes-cli-C2SoKfCv.js +1343 -0
  323. package/dist/nodes-cli-CQmlfx0K.js +1348 -0
  324. package/dist/nodes-screen-BR9sYoPa.js +250 -0
  325. package/dist/nodes-screen-Cw7Hv7M2.js +250 -0
  326. package/dist/note-Dlv4NmlQ.js +92 -0
  327. package/dist/note-kvWV4xtw.js +92 -0
  328. package/dist/npm-registry-spec-0qiKawvv.js +786 -0
  329. package/dist/npm-registry-spec-COvUzy5J.js +786 -0
  330. package/dist/npm-resolution-6v_Zm-9G.js +86 -0
  331. package/dist/npm-resolution-BFz7LeoN.js +86 -0
  332. package/dist/onboard-CgyU-mDL.js +407 -0
  333. package/dist/onboard-RI4vNTZd.js +405 -0
  334. package/dist/onboard-channels-DN5JoKPd.js +2548 -0
  335. package/dist/onboard-channels-DyAd1OZr.js +2547 -0
  336. package/dist/onboard-config-BCTthQ7J.js +24 -0
  337. package/dist/onboard-config-y-2cgT0V.js +24 -0
  338. package/dist/onboard-helpers-BCzZUD0z.js +363 -0
  339. package/dist/onboard-helpers-sDc2Ky6H.js +362 -0
  340. package/dist/onboard-remote-CJrMtttl.js +127 -0
  341. package/dist/onboard-remote-hyQIBguz.js +127 -0
  342. package/dist/onboarding-DCu1iBTV.js +541 -0
  343. package/dist/onboarding-zKMitzpb.js +543 -0
  344. package/dist/onboarding.finalize-ClHhYE2E.js +401 -0
  345. package/dist/onboarding.finalize-D5JkVJgg.js +398 -0
  346. package/dist/onboarding.gateway-config-DFh71Ndn.js +198 -0
  347. package/dist/onboarding.gateway-config-VBk6AP9U.js +191 -0
  348. package/dist/outbound-BYlZshIw.js +221 -0
  349. package/dist/outbound-CFfJC1j5.js +220 -0
  350. package/dist/outbound-attachment-BCNs1u1F.js +18 -0
  351. package/dist/outbound-attachment-B_0D60Yr.js +18 -0
  352. package/dist/outbound-attachment-o0seS0CP.js +18 -0
  353. package/dist/pairing-cli-BeydfoF9.js +122 -0
  354. package/dist/pairing-cli-DWzX866x.js +127 -0
  355. package/dist/pairing-labels-B-N8S5Fc.js +9 -0
  356. package/dist/pairing-labels-B_53dY5L.js +9 -0
  357. package/dist/pairing-store-BxdqFZGK.js +460 -0
  358. package/dist/pairing-store-CTkD51uW.js +459 -0
  359. package/dist/parse-log-line-enq8pduH.js +44 -0
  360. package/dist/parse-log-line-mz9TG6ig.js +44 -0
  361. package/dist/parse-timeout-BMP8a0_a.js +16 -0
  362. package/dist/parse-timeout-CDkco8kd.js +16 -0
  363. package/dist/path-env-DR5vn3QL.js +89 -0
  364. package/dist/path-env-qRJbjJzj.js +89 -0
  365. package/dist/path-guards-CIx4hURU.js +31 -0
  366. package/dist/path-guards-CrQOUlsq.js +31 -0
  367. package/dist/path-safety-DkT9RmTG.js +14 -0
  368. package/dist/path-safety-juI2XbO1.js +14 -0
  369. package/dist/paths-BTaH3rLn.js +232 -0
  370. package/dist/plugin-auto-enable-D23gv7Aw.js +302 -0
  371. package/dist/plugin-auto-enable-DuPS9XiJ.js +301 -0
  372. package/dist/plugin-registry-CNu_1KZz.js +33 -0
  373. package/dist/plugin-registry-DeHwd2jk.js +33 -0
  374. package/dist/plugin-sdk/account-id.d.ts +1 -0
  375. package/dist/plugin-sdk/account-id.js +34 -0
  376. package/dist/plugin-sdk/agents/agent-helpers/errors.d.ts +55 -0
  377. package/dist/plugin-sdk/agents/agent-helpers/google.d.ts +3 -0
  378. package/dist/plugin-sdk/agents/agent-helpers/images.d.ts +21 -0
  379. package/dist/plugin-sdk/agents/agent-helpers/message-sanitization.d.ts +14 -0
  380. package/dist/plugin-sdk/agents/agent-helpers/messaging-dedupe.d.ts +10 -0
  381. package/dist/plugin-sdk/agents/agent-helpers/openai.d.ts +9 -0
  382. package/dist/plugin-sdk/agents/agent-helpers/thinking.d.ts +5 -0
  383. package/dist/plugin-sdk/agents/agent-helpers/turns.d.ts +20 -0
  384. package/dist/plugin-sdk/agents/agent-helpers/types.d.ts +1 -0
  385. package/dist/plugin-sdk/agents/agent-helpers.d.ts +11 -0
  386. package/dist/plugin-sdk/agents/agent-messaging.d.ts +8 -0
  387. package/dist/plugin-sdk/agents/agent-paths.d.ts +1 -0
  388. package/dist/plugin-sdk/agents/agent-scope.d.ts +61 -0
  389. package/dist/plugin-sdk/agents/agent-types.d.ts +78 -0
  390. package/dist/plugin-sdk/agents/agent-utils.d.ts +39 -0
  391. package/dist/plugin-sdk/agents/announce-idempotency.d.ts +11 -0
  392. package/dist/plugin-sdk/agents/api-key-rotation.d.ts +22 -0
  393. package/dist/plugin-sdk/agents/auth-profiles/constants.d.ts +16 -0
  394. package/dist/plugin-sdk/agents/auth-profiles/display.d.ts +7 -0
  395. package/dist/plugin-sdk/agents/auth-profiles/doctor.d.ts +8 -0
  396. package/dist/plugin-sdk/agents/auth-profiles/oauth.d.ts +14 -0
  397. package/dist/plugin-sdk/agents/auth-profiles/paths.d.ts +4 -0
  398. package/dist/plugin-sdk/agents/auth-profiles/profiles.d.ts +12 -0
  399. package/dist/plugin-sdk/agents/auth-profiles/session-override.d.ts +18 -0
  400. package/dist/plugin-sdk/agents/auth-profiles/store.d.ts +10 -0
  401. package/dist/plugin-sdk/agents/auth-profiles/types.d.ts +13 -0
  402. package/dist/plugin-sdk/agents/auth-profiles.d.ts +8 -0
  403. package/dist/plugin-sdk/agents/block-chunker.d.ts +19 -0
  404. package/dist/plugin-sdk/agents/channel-tools.d.ts +27 -0
  405. package/dist/plugin-sdk/agents/cli-session.d.ts +3 -0
  406. package/dist/plugin-sdk/agents/current-time.d.ts +17 -0
  407. package/dist/plugin-sdk/agents/date-time.d.ts +13 -0
  408. package/dist/plugin-sdk/agents/defaults.d.ts +3 -0
  409. package/dist/plugin-sdk/agents/identity-avatar.d.ts +15 -0
  410. package/dist/plugin-sdk/agents/identity.d.ts +28 -0
  411. package/dist/plugin-sdk/agents/image-sanitization.d.ts +8 -0
  412. package/dist/plugin-sdk/agents/lanes.d.ts +3 -0
  413. package/dist/plugin-sdk/agents/live-auth-keys.d.ts +6 -0
  414. package/dist/plugin-sdk/agents/owner-display.d.ts +19 -0
  415. package/dist/plugin-sdk/agents/provider-auth.d.ts +40 -0
  416. package/dist/plugin-sdk/agents/provider-utils.d.ts +21 -0
  417. package/dist/plugin-sdk/agents/schema/typebox.d.ts +14 -0
  418. package/dist/plugin-sdk/agents/session-write-lock.d.ts +53 -0
  419. package/dist/plugin-sdk/agents/stable-stringify.d.ts +1 -0
  420. package/dist/plugin-sdk/agents/subagent-announce-queue.d.ts +24 -0
  421. package/dist/plugin-sdk/agents/subagent-announce.d.ts +39 -0
  422. package/dist/plugin-sdk/agents/subagent-depth.d.ts +11 -0
  423. package/dist/plugin-sdk/agents/subagent-lifecycle-events.d.ts +18 -0
  424. package/dist/plugin-sdk/agents/subagent-registry-cleanup.d.ts +24 -0
  425. package/dist/plugin-sdk/agents/subagent-registry-completion.d.ts +15 -0
  426. package/dist/plugin-sdk/agents/subagent-registry-queries.d.ts +11 -0
  427. package/dist/plugin-sdk/agents/subagent-registry-state.d.ts +7 -0
  428. package/dist/plugin-sdk/agents/subagent-registry.d.ts +45 -0
  429. package/dist/plugin-sdk/agents/subagent-registry.store.d.ts +5 -0
  430. package/dist/plugin-sdk/agents/subagent-registry.types.d.ts +34 -0
  431. package/dist/plugin-sdk/agents/subagent-spawn.d.ts +47 -0
  432. package/dist/plugin-sdk/agents/timeout.d.ts +8 -0
  433. package/dist/plugin-sdk/agents/tool-call-id.d.ts +27 -0
  434. package/dist/plugin-sdk/agents/tool-display-common.d.ts +32 -0
  435. package/dist/plugin-sdk/agents/tool-display.d.ts +15 -0
  436. package/dist/plugin-sdk/agents/tool-images.d.ts +10 -0
  437. package/dist/plugin-sdk/agents/tools/agent-step.d.ts +15 -0
  438. package/dist/plugin-sdk/agents/tools/common.d.ts +80 -0
  439. package/dist/plugin-sdk/agents/tools/discord-actions-guild.d.ts +4 -0
  440. package/dist/plugin-sdk/agents/tools/discord-actions-messaging.d.ts +6 -0
  441. package/dist/plugin-sdk/agents/tools/discord-actions-moderation-shared.d.ts +13 -0
  442. package/dist/plugin-sdk/agents/tools/discord-actions-moderation.d.ts +4 -0
  443. package/dist/plugin-sdk/agents/tools/discord-actions-presence.d.ts +4 -0
  444. package/dist/plugin-sdk/agents/tools/discord-actions.d.ts +5 -0
  445. package/dist/plugin-sdk/agents/tools/sessions-access.d.ts +42 -0
  446. package/dist/plugin-sdk/agents/tools/sessions-helpers.d.ts +52 -0
  447. package/dist/plugin-sdk/agents/tools/sessions-resolution.d.ts +59 -0
  448. package/dist/plugin-sdk/agents/tools/sessions-send-helpers.d.ts +34 -0
  449. package/dist/plugin-sdk/agents/tools/slack-actions.d.ts +15 -0
  450. package/dist/plugin-sdk/agents/tools/telegram-actions.d.ts +7 -0
  451. package/dist/plugin-sdk/agents/tools/whatsapp-actions.d.ts +3 -0
  452. package/dist/plugin-sdk/agents/tools/whatsapp-target-auth.d.ts +10 -0
  453. package/dist/plugin-sdk/agents/usage.d.ts +49 -0
  454. package/dist/plugin-sdk/agents/workspace.d.ts +1 -0
  455. package/dist/plugin-sdk/auto-reply/chunk.d.ts +45 -0
  456. package/dist/plugin-sdk/auto-reply/command-auth.d.ts +17 -0
  457. package/dist/plugin-sdk/auto-reply/command-detection.d.ts +13 -0
  458. package/dist/plugin-sdk/auto-reply/commands-args.d.ts +3 -0
  459. package/dist/plugin-sdk/auto-reply/commands-registry.d.ts +47 -0
  460. package/dist/plugin-sdk/auto-reply/commands-registry.data.d.ts +3 -0
  461. package/dist/plugin-sdk/auto-reply/commands-registry.types.d.ts +66 -0
  462. package/dist/plugin-sdk/auto-reply/dispatch.d.ts +32 -0
  463. package/dist/plugin-sdk/auto-reply/envelope.d.ts +58 -0
  464. package/dist/plugin-sdk/auto-reply/fallback-state.d.ts +55 -0
  465. package/dist/plugin-sdk/auto-reply/group-activation.d.ts +6 -0
  466. package/dist/plugin-sdk/auto-reply/heartbeat-reply-payload.d.ts +2 -0
  467. package/dist/plugin-sdk/auto-reply/heartbeat.d.ts +16 -0
  468. package/dist/plugin-sdk/auto-reply/inbound-debounce.d.ts +17 -0
  469. package/dist/plugin-sdk/auto-reply/media-note.d.ts +2 -0
  470. package/dist/plugin-sdk/auto-reply/model-runtime.d.ts +17 -0
  471. package/dist/plugin-sdk/auto-reply/model.d.ts +8 -0
  472. package/dist/plugin-sdk/auto-reply/reply/abort.d.ts +32 -0
  473. package/dist/plugin-sdk/auto-reply/reply/agent-runner-execution.d.ts +59 -0
  474. package/dist/plugin-sdk/auto-reply/reply/agent-runner-helpers.d.ts +15 -0
  475. package/dist/plugin-sdk/auto-reply/reply/agent-runner-payloads.d.ts +27 -0
  476. package/dist/plugin-sdk/auto-reply/reply/agent-runner-utils.d.ts +152 -0
  477. package/dist/plugin-sdk/auto-reply/reply/agent-runner.d.ts +36 -0
  478. package/dist/plugin-sdk/auto-reply/reply/block-reply-coalescer.d.ts +15 -0
  479. package/dist/plugin-sdk/auto-reply/reply/block-reply-pipeline.d.ts +31 -0
  480. package/dist/plugin-sdk/auto-reply/reply/block-streaming.d.ts +22 -0
  481. package/dist/plugin-sdk/auto-reply/reply/body.d.ts +10 -0
  482. package/dist/plugin-sdk/auto-reply/reply/command-gates.d.ts +18 -0
  483. package/dist/plugin-sdk/auto-reply/reply/commands-allowlist.d.ts +2 -0
  484. package/dist/plugin-sdk/auto-reply/reply/commands-config.d.ts +3 -0
  485. package/dist/plugin-sdk/auto-reply/reply/commands-context.d.ts +12 -0
  486. package/dist/plugin-sdk/auto-reply/reply/commands-core.d.ts +13 -0
  487. package/dist/plugin-sdk/auto-reply/reply/commands-export-session.d.ts +3 -0
  488. package/dist/plugin-sdk/auto-reply/reply/commands-info.d.ts +11 -0
  489. package/dist/plugin-sdk/auto-reply/reply/commands-plugin.d.ts +13 -0
  490. package/dist/plugin-sdk/auto-reply/reply/commands-session.d.ts +8 -0
  491. package/dist/plugin-sdk/auto-reply/reply/commands-setunset-standard.d.ts +10 -0
  492. package/dist/plugin-sdk/auto-reply/reply/commands-setunset.d.ts +34 -0
  493. package/dist/plugin-sdk/auto-reply/reply/commands-slash-parse.d.ts +24 -0
  494. package/dist/plugin-sdk/auto-reply/reply/commands-status.d.ts +26 -0
  495. package/dist/plugin-sdk/auto-reply/reply/commands-subagents/action-agents.d.ts +3 -0
  496. package/dist/plugin-sdk/auto-reply/reply/commands-subagents/action-focus.d.ts +3 -0
  497. package/dist/plugin-sdk/auto-reply/reply/commands-subagents/action-help.d.ts +2 -0
  498. package/dist/plugin-sdk/auto-reply/reply/commands-subagents/action-info.d.ts +3 -0
  499. package/dist/plugin-sdk/auto-reply/reply/commands-subagents/action-kill.d.ts +3 -0
  500. package/dist/plugin-sdk/auto-reply/reply/commands-subagents/action-list.d.ts +3 -0
  501. package/dist/plugin-sdk/auto-reply/reply/commands-subagents/action-log.d.ts +3 -0
  502. package/dist/plugin-sdk/auto-reply/reply/commands-subagents/action-send.d.ts +3 -0
  503. package/dist/plugin-sdk/auto-reply/reply/commands-subagents/action-spawn.d.ts +3 -0
  504. package/dist/plugin-sdk/auto-reply/reply/commands-subagents/action-unfocus.d.ts +3 -0
  505. package/dist/plugin-sdk/auto-reply/reply/commands-subagents/shared.d.ts +81 -0
  506. package/dist/plugin-sdk/auto-reply/reply/commands-subagents.d.ts +4 -0
  507. package/dist/plugin-sdk/auto-reply/reply/commands-tts.d.ts +2 -0
  508. package/dist/plugin-sdk/auto-reply/reply/commands-types.d.ts +61 -0
  509. package/dist/plugin-sdk/auto-reply/reply/commands.d.ts +4 -0
  510. package/dist/plugin-sdk/auto-reply/reply/config-commands.d.ts +15 -0
  511. package/dist/plugin-sdk/auto-reply/reply/config-value.d.ts +4 -0
  512. package/dist/plugin-sdk/auto-reply/reply/debug-commands.d.ts +16 -0
  513. package/dist/plugin-sdk/auto-reply/reply/directive-handling.auth.d.ts +19 -0
  514. package/dist/plugin-sdk/auto-reply/reply/directive-handling.d.ts +6 -0
  515. package/dist/plugin-sdk/auto-reply/reply/directive-handling.fast-lane.d.ts +7 -0
  516. package/dist/plugin-sdk/auto-reply/reply/directive-handling.impl.d.ts +3 -0
  517. package/dist/plugin-sdk/auto-reply/reply/directive-handling.levels.d.ts +20 -0
  518. package/dist/plugin-sdk/auto-reply/reply/directive-handling.params.d.ts +59 -0
  519. package/dist/plugin-sdk/auto-reply/reply/directive-handling.parse.d.ts +65 -0
  520. package/dist/plugin-sdk/auto-reply/reply/directive-handling.persist.d.ts +42 -0
  521. package/dist/plugin-sdk/auto-reply/reply/directive-handling.queue-validation.d.ts +10 -0
  522. package/dist/plugin-sdk/auto-reply/reply/directive-handling.shared.d.ts +29 -0
  523. package/dist/plugin-sdk/auto-reply/reply/directive-parsing.d.ts +5 -0
  524. package/dist/plugin-sdk/auto-reply/reply/directives.d.ts +58 -0
  525. package/dist/plugin-sdk/auto-reply/reply/dispatch-from-config.d.ts +16 -0
  526. package/dist/plugin-sdk/auto-reply/reply/dispatcher-registry.d.ts +24 -0
  527. package/dist/plugin-sdk/auto-reply/reply/elevated-allowlist-matcher.d.ts +20 -0
  528. package/dist/plugin-sdk/auto-reply/reply/elevated-unavailable.d.ts +8 -0
  529. package/dist/plugin-sdk/auto-reply/reply/followup-runner.d.ts +16 -0
  530. package/dist/plugin-sdk/auto-reply/reply/get-reply-directives-apply.d.ts +64 -0
  531. package/dist/plugin-sdk/auto-reply/reply/get-reply-directives-utils.d.ts +3 -0
  532. package/dist/plugin-sdk/auto-reply/reply/get-reply-directives.d.ts +121 -0
  533. package/dist/plugin-sdk/auto-reply/reply/get-reply-inline-actions.d.ts +56 -0
  534. package/dist/plugin-sdk/auto-reply/reply/get-reply-run.d.ts +73 -0
  535. package/dist/plugin-sdk/auto-reply/reply/get-reply.d.ts +4 -0
  536. package/dist/plugin-sdk/auto-reply/reply/groups.d.ts +26 -0
  537. package/dist/plugin-sdk/auto-reply/reply/history.d.ts +72 -0
  538. package/dist/plugin-sdk/auto-reply/reply/inbound-context.d.ts +8 -0
  539. package/dist/plugin-sdk/auto-reply/reply/inbound-dedupe.d.ts +8 -0
  540. package/dist/plugin-sdk/auto-reply/reply/inbound-meta.d.ts +3 -0
  541. package/dist/plugin-sdk/auto-reply/reply/inbound-text.d.ts +1 -0
  542. package/dist/plugin-sdk/auto-reply/reply/line-directives.d.ts +22 -0
  543. package/dist/plugin-sdk/auto-reply/reply/mentions.d.ts +19 -0
  544. package/dist/plugin-sdk/auto-reply/reply/normalize-reply.d.ts +11 -0
  545. package/dist/plugin-sdk/auto-reply/reply/origin-routing.d.ts +13 -0
  546. package/dist/plugin-sdk/auto-reply/reply/provider-dispatcher.d.ts +19 -0
  547. package/dist/plugin-sdk/auto-reply/reply/queue/cleanup.d.ts +6 -0
  548. package/dist/plugin-sdk/auto-reply/reply/queue/directive.d.ts +15 -0
  549. package/dist/plugin-sdk/auto-reply/reply/queue/drain.d.ts +2 -0
  550. package/dist/plugin-sdk/auto-reply/reply/queue/enqueue.d.ts +3 -0
  551. package/dist/plugin-sdk/auto-reply/reply/queue/normalize.d.ts +3 -0
  552. package/dist/plugin-sdk/auto-reply/reply/queue/settings.d.ts +2 -0
  553. package/dist/plugin-sdk/auto-reply/reply/queue/state.d.ts +20 -0
  554. package/dist/plugin-sdk/auto-reply/reply/queue/types.d.ts +87 -0
  555. package/dist/plugin-sdk/auto-reply/reply/queue-policy.d.ts +8 -0
  556. package/dist/plugin-sdk/auto-reply/reply/queue.d.ts +8 -0
  557. package/dist/plugin-sdk/auto-reply/reply/reply-delivery.d.ts +27 -0
  558. package/dist/plugin-sdk/auto-reply/reply/reply-directives.d.ts +14 -0
  559. package/dist/plugin-sdk/auto-reply/reply/reply-dispatcher.d.ts +53 -0
  560. package/dist/plugin-sdk/auto-reply/reply/reply-elevated.d.ts +16 -0
  561. package/dist/plugin-sdk/auto-reply/reply/reply-inline.d.ts +8 -0
  562. package/dist/plugin-sdk/auto-reply/reply/reply-payloads.d.ts +27 -0
  563. package/dist/plugin-sdk/auto-reply/reply/reply-reference.d.ts +20 -0
  564. package/dist/plugin-sdk/auto-reply/reply/reply-tags.d.ts +6 -0
  565. package/dist/plugin-sdk/auto-reply/reply/reply-threading.d.ts +9 -0
  566. package/dist/plugin-sdk/auto-reply/reply/response-prefix-template.d.ts +51 -0
  567. package/dist/plugin-sdk/auto-reply/reply/route-reply.d.ts +56 -0
  568. package/dist/plugin-sdk/auto-reply/reply/session-reset-prompt.d.ts +1 -0
  569. package/dist/plugin-sdk/auto-reply/reply/session-run-accounting.d.ts +11 -0
  570. package/dist/plugin-sdk/auto-reply/reply/session-updates.d.ts +18 -0
  571. package/dist/plugin-sdk/auto-reply/reply/session-usage.d.ts +21 -0
  572. package/dist/plugin-sdk/auto-reply/reply/session.d.ts +26 -0
  573. package/dist/plugin-sdk/auto-reply/reply/strip-inbound-meta.d.ts +27 -0
  574. package/dist/plugin-sdk/auto-reply/reply/subagents-utils.d.ts +26 -0
  575. package/dist/plugin-sdk/auto-reply/reply/typing-mode.d.ts +27 -0
  576. package/dist/plugin-sdk/auto-reply/reply/typing.d.ts +18 -0
  577. package/dist/plugin-sdk/auto-reply/reply/untrusted-context.d.ts +1 -0
  578. package/dist/plugin-sdk/auto-reply/reply.d.ts +5 -0
  579. package/dist/plugin-sdk/auto-reply/send-policy.d.ts +6 -0
  580. package/dist/plugin-sdk/auto-reply/status.d.ts +59 -0
  581. package/dist/plugin-sdk/auto-reply/templating.d.ts +159 -0
  582. package/dist/plugin-sdk/auto-reply/thinking.d.ts +22 -0
  583. package/dist/plugin-sdk/auto-reply/tokens.d.ts +3 -0
  584. package/dist/plugin-sdk/auto-reply/types.d.ts +82 -0
  585. package/dist/plugin-sdk/channel-web.d.ts +6 -0
  586. package/dist/plugin-sdk/channels/account-summary.d.ts +17 -0
  587. package/dist/plugin-sdk/channels/ack-reactions.d.ts +29 -0
  588. package/dist/plugin-sdk/channels/allow-from.d.ts +11 -0
  589. package/dist/plugin-sdk/channels/allowlist-match.d.ts +16 -0
  590. package/dist/plugin-sdk/channels/allowlists/resolve-utils.d.ts +33 -0
  591. package/dist/plugin-sdk/channels/channel-config.d.ts +39 -0
  592. package/dist/plugin-sdk/channels/chat-type.d.ts +2 -0
  593. package/dist/plugin-sdk/channels/command-gating.d.ts +20 -0
  594. package/dist/plugin-sdk/channels/conversation-label.d.ts +2 -0
  595. package/dist/plugin-sdk/channels/dock.d.ts +25 -0
  596. package/dist/plugin-sdk/channels/draft-stream-controls.d.ts +54 -0
  597. package/dist/plugin-sdk/channels/draft-stream-loop.d.ts +13 -0
  598. package/dist/plugin-sdk/channels/location.d.ts +21 -0
  599. package/dist/plugin-sdk/channels/logging.d.ts +20 -0
  600. package/dist/plugin-sdk/channels/mention-gating.d.ts +27 -0
  601. package/dist/plugin-sdk/channels/model-overrides.d.ts +18 -0
  602. package/dist/plugin-sdk/channels/plugins/account-action-gate.d.ts +5 -0
  603. package/dist/plugin-sdk/channels/plugins/account-helpers.d.ts +6 -0
  604. package/dist/plugin-sdk/channels/plugins/actions/discord/handle-action.d.ts +3 -0
  605. package/dist/plugin-sdk/channels/plugins/actions/discord/handle-action.guild-admin.d.ts +9 -0
  606. package/dist/plugin-sdk/channels/plugins/actions/discord.d.ts +2 -0
  607. package/dist/plugin-sdk/channels/plugins/actions/shared.d.ts +7 -0
  608. package/dist/plugin-sdk/channels/plugins/actions/signal.d.ts +2 -0
  609. package/dist/plugin-sdk/channels/plugins/actions/telegram.d.ts +2 -0
  610. package/dist/plugin-sdk/channels/plugins/agent-tools/whatsapp-login.d.ts +2 -0
  611. package/dist/plugin-sdk/channels/plugins/allowlist-match.d.ts +2 -0
  612. package/dist/plugin-sdk/channels/plugins/bluebubbles-actions.d.ts +48 -0
  613. package/dist/plugin-sdk/channels/plugins/channel-config.d.ts +2 -0
  614. package/dist/plugin-sdk/channels/plugins/config-helpers.d.ts +14 -0
  615. package/dist/plugin-sdk/channels/plugins/config-schema.d.ts +3 -0
  616. package/dist/plugin-sdk/channels/plugins/config-writes.d.ts +7 -0
  617. package/dist/plugin-sdk/channels/plugins/directory-config.d.ts +16 -0
  618. package/dist/plugin-sdk/channels/plugins/group-mentions.d.ts +18 -0
  619. package/dist/plugin-sdk/channels/plugins/helpers.d.ts +8 -0
  620. package/dist/plugin-sdk/channels/plugins/index.d.ts +8 -0
  621. package/dist/plugin-sdk/channels/plugins/media-limits.d.ts +9 -0
  622. package/dist/plugin-sdk/channels/plugins/media-payload.d.ts +15 -0
  623. package/dist/plugin-sdk/channels/plugins/message-action-names.d.ts +2 -0
  624. package/dist/plugin-sdk/channels/plugins/normalize/discord.d.ts +14 -0
  625. package/dist/plugin-sdk/channels/plugins/normalize/imessage.d.ts +2 -0
  626. package/dist/plugin-sdk/channels/plugins/normalize/shared.d.ts +6 -0
  627. package/dist/plugin-sdk/channels/plugins/normalize/signal.d.ts +2 -0
  628. package/dist/plugin-sdk/channels/plugins/normalize/slack.d.ts +2 -0
  629. package/dist/plugin-sdk/channels/plugins/normalize/telegram.d.ts +2 -0
  630. package/dist/plugin-sdk/channels/plugins/normalize/whatsapp.d.ts +3 -0
  631. package/dist/plugin-sdk/channels/plugins/onboarding/channel-access-configure.d.ts +21 -0
  632. package/dist/plugin-sdk/channels/plugins/onboarding/channel-access.d.ts +31 -0
  633. package/dist/plugin-sdk/channels/plugins/onboarding/discord.d.ts +2 -0
  634. package/dist/plugin-sdk/channels/plugins/onboarding/helpers.d.ts +177 -0
  635. package/dist/plugin-sdk/channels/plugins/onboarding/imessage.d.ts +6 -0
  636. package/dist/plugin-sdk/channels/plugins/onboarding/signal.d.ts +7 -0
  637. package/dist/plugin-sdk/channels/plugins/onboarding/slack.d.ts +2 -0
  638. package/dist/plugin-sdk/channels/plugins/onboarding/telegram.d.ts +4 -0
  639. package/dist/plugin-sdk/channels/plugins/onboarding/whatsapp.d.ts +2 -0
  640. package/dist/plugin-sdk/channels/plugins/onboarding-types.d.ts +77 -0
  641. package/dist/plugin-sdk/channels/plugins/outbound/load.d.ts +2 -0
  642. package/dist/plugin-sdk/channels/plugins/pairing-message.d.ts +1 -0
  643. package/dist/plugin-sdk/channels/plugins/pairing.d.ts +16 -0
  644. package/dist/plugin-sdk/channels/plugins/registry-loader.d.ts +5 -0
  645. package/dist/plugin-sdk/channels/plugins/setup-helpers.d.ts +13 -0
  646. package/dist/plugin-sdk/channels/plugins/status-issues/bluebubbles.d.ts +2 -0
  647. package/dist/plugin-sdk/channels/plugins/status-issues/discord.d.ts +2 -0
  648. package/dist/plugin-sdk/channels/plugins/status-issues/shared.d.ts +29 -0
  649. package/dist/plugin-sdk/channels/plugins/status-issues/telegram.d.ts +2 -0
  650. package/dist/plugin-sdk/channels/plugins/status-issues/whatsapp.d.ts +2 -0
  651. package/dist/plugin-sdk/channels/plugins/types.adapters.d.ts +288 -0
  652. package/dist/plugin-sdk/channels/plugins/types.core.d.ts +349 -0
  653. package/dist/plugin-sdk/channels/plugins/types.d.ts +6 -0
  654. package/dist/plugin-sdk/channels/plugins/types.plugin.d.ts +54 -0
  655. package/dist/plugin-sdk/channels/plugins/whatsapp-heartbeat.d.ts +11 -0
  656. package/dist/plugin-sdk/channels/plugins/whatsapp-shared.d.ts +5 -0
  657. package/dist/plugin-sdk/channels/registry.d.ts +15 -0
  658. package/dist/plugin-sdk/channels/reply-prefix.d.ts +24 -0
  659. package/dist/plugin-sdk/channels/sender-label.d.ts +9 -0
  660. package/dist/plugin-sdk/channels/session.d.ts +18 -0
  661. package/dist/plugin-sdk/channels/status-reactions.d.ts +62 -0
  662. package/dist/plugin-sdk/channels/targets.d.ts +42 -0
  663. package/dist/plugin-sdk/channels/telegram/api.d.ts +5 -0
  664. package/dist/plugin-sdk/channels/typing-lifecycle.d.ts +12 -0
  665. package/dist/plugin-sdk/channels/typing.d.ts +13 -0
  666. package/dist/plugin-sdk/channels/web/index.d.ts +1 -0
  667. package/dist/plugin-sdk/cli/cli-name.d.ts +3 -0
  668. package/dist/plugin-sdk/cli/command-format.d.ts +1 -0
  669. package/dist/plugin-sdk/cli/deps.d.ts +18 -0
  670. package/dist/plugin-sdk/cli/outbound-send-deps.d.ts +4 -0
  671. package/dist/plugin-sdk/cli/outbound-send-mapping.d.ts +10 -0
  672. package/dist/plugin-sdk/cli/parse-bytes.d.ts +4 -0
  673. package/dist/plugin-sdk/cli/parse-duration.d.ts +4 -0
  674. package/dist/plugin-sdk/cli/profile-utils.d.ts +2 -0
  675. package/dist/plugin-sdk/cli/progress.d.ts +24 -0
  676. package/dist/plugin-sdk/cli/wait.d.ts +1 -0
  677. package/dist/plugin-sdk/commands/agent/delivery.d.ts +25 -0
  678. package/dist/plugin-sdk/commands/agent/run-context.d.ts +2 -0
  679. package/dist/plugin-sdk/commands/agent/session-store.d.ts +16 -0
  680. package/dist/plugin-sdk/commands/agent/session.d.ts +33 -0
  681. package/dist/plugin-sdk/commands/agent/types.d.ts +89 -0
  682. package/dist/plugin-sdk/commands/agent.d.ts +14 -0
  683. package/dist/plugin-sdk/commands/daemon-runtime.d.ts +8 -0
  684. package/dist/plugin-sdk/commands/health.d.ts +63 -0
  685. package/dist/plugin-sdk/commands/oauth-flow.d.ts +21 -0
  686. package/dist/plugin-sdk/commands/onboard-helpers.d.ts +81 -0
  687. package/dist/plugin-sdk/commands/onboard-types.d.ts +69 -0
  688. package/dist/plugin-sdk/commands/signal-install.d.ts +30 -0
  689. package/dist/plugin-sdk/compat/legacy-names.d.ts +8 -0
  690. package/dist/plugin-sdk/config/agent-dirs.d.ts +14 -0
  691. package/dist/plugin-sdk/config/agent-limits.d.ts +6 -0
  692. package/dist/plugin-sdk/config/backup-rotation.d.ts +5 -0
  693. package/dist/plugin-sdk/config/cache-utils.d.ts +6 -0
  694. package/dist/plugin-sdk/config/commands.d.ts +20 -0
  695. package/dist/plugin-sdk/config/config-paths.d.ts +10 -0
  696. package/dist/plugin-sdk/config/config.d.ts +7 -0
  697. package/dist/plugin-sdk/config/dangerous-name-matching.d.ts +12 -0
  698. package/dist/plugin-sdk/config/defaults.d.ts +19 -0
  699. package/dist/plugin-sdk/config/discord-preview-streaming.d.ts +25 -0
  700. package/dist/plugin-sdk/config/env-preserve.d.ts +10 -0
  701. package/dist/plugin-sdk/config/env-substitution.d.ts +36 -0
  702. package/dist/plugin-sdk/config/env-vars.d.ts +6 -0
  703. package/dist/plugin-sdk/config/group-policy.d.ts +49 -0
  704. package/dist/plugin-sdk/config/includes.d.ts +32 -0
  705. package/dist/plugin-sdk/config/io.d.ts +60 -0
  706. package/dist/plugin-sdk/config/legacy-migrate.d.ts +5 -0
  707. package/dist/plugin-sdk/config/legacy.d.ts +6 -0
  708. package/dist/plugin-sdk/config/legacy.migrations.d.ts +1 -0
  709. package/dist/plugin-sdk/config/legacy.migrations.part-1.d.ts +2 -0
  710. package/dist/plugin-sdk/config/legacy.migrations.part-2.d.ts +2 -0
  711. package/dist/plugin-sdk/config/legacy.migrations.part-3.d.ts +2 -0
  712. package/dist/plugin-sdk/config/legacy.rules.d.ts +2 -0
  713. package/dist/plugin-sdk/config/legacy.shared.d.ts +19 -0
  714. package/dist/plugin-sdk/config/markdown-tables.d.ts +7 -0
  715. package/dist/plugin-sdk/config/merge-config.d.ts +7 -0
  716. package/dist/plugin-sdk/config/merge-patch.d.ts +5 -0
  717. package/dist/plugin-sdk/config/model-input.d.ts +9 -0
  718. package/dist/plugin-sdk/config/normalize-paths.d.ts +8 -0
  719. package/dist/plugin-sdk/config/paths.d.ts +57 -0
  720. package/dist/plugin-sdk/config/prototype-keys.d.ts +1 -0
  721. package/dist/plugin-sdk/config/runtime-group-policy.d.ts +56 -0
  722. package/dist/plugin-sdk/config/runtime-overrides.d.ts +15 -0
  723. package/dist/plugin-sdk/config/sessions/artifacts.d.ts +5 -0
  724. package/dist/plugin-sdk/config/sessions/constants.d.ts +2 -0
  725. package/dist/plugin-sdk/config/sessions/delivery-info.d.ts +16 -0
  726. package/dist/plugin-sdk/config/sessions/disk-budget.d.ts +28 -0
  727. package/dist/plugin-sdk/config/sessions/group.d.ts +11 -0
  728. package/dist/plugin-sdk/config/sessions/main-session.d.ts +43 -0
  729. package/dist/plugin-sdk/config/sessions/metadata.d.ts +16 -0
  730. package/dist/plugin-sdk/config/sessions/paths.d.ts +21 -0
  731. package/dist/plugin-sdk/config/sessions/reset.d.ts +43 -0
  732. package/dist/plugin-sdk/config/sessions/session-file.d.ts +15 -0
  733. package/dist/plugin-sdk/config/sessions/session-key.d.ts +8 -0
  734. package/dist/plugin-sdk/config/sessions/store.d.ts +123 -0
  735. package/dist/plugin-sdk/config/sessions/transcript.d.ts +18 -0
  736. package/dist/plugin-sdk/config/sessions/types.d.ts +160 -0
  737. package/dist/plugin-sdk/config/sessions.d.ts +13 -0
  738. package/dist/plugin-sdk/config/talk.d.ts +21 -0
  739. package/dist/plugin-sdk/config/telegram-custom-commands.d.ts +24 -0
  740. package/dist/plugin-sdk/config/types.agent-defaults.d.ts +268 -0
  741. package/dist/plugin-sdk/config/types.agents-shared.d.ts +49 -0
  742. package/dist/plugin-sdk/config/types.agents.d.ts +57 -0
  743. package/dist/plugin-sdk/config/types.approvals.d.ts +26 -0
  744. package/dist/plugin-sdk/config/types.auth.d.ts +28 -0
  745. package/dist/plugin-sdk/config/types.base.d.ts +203 -0
  746. package/dist/plugin-sdk/config/types.browser.d.ts +65 -0
  747. package/dist/plugin-sdk/config/types.channel-messaging-common.d.ts +44 -0
  748. package/dist/plugin-sdk/config/types.channels.d.ts +53 -0
  749. package/dist/plugin-sdk/config/types.cron.d.ts +26 -0
  750. package/dist/plugin-sdk/config/types.d.ts +27 -0
  751. package/dist/plugin-sdk/config/types.discord.d.ts +273 -0
  752. package/dist/plugin-sdk/config/types.gateway.d.ts +335 -0
  753. package/dist/plugin-sdk/config/types.googlechat.d.ts +107 -0
  754. package/dist/plugin-sdk/config/types.hooks.d.ts +123 -0
  755. package/dist/plugin-sdk/config/types.imessage.d.ts +77 -0
  756. package/dist/plugin-sdk/config/types.installs.d.ts +14 -0
  757. package/dist/plugin-sdk/config/types.irc.d.ts +54 -0
  758. package/dist/plugin-sdk/config/types.messages.d.ts +154 -0
  759. package/dist/plugin-sdk/config/types.models.d.ts +41 -0
  760. package/dist/plugin-sdk/config/types.msteams.d.ts +108 -0
  761. package/dist/plugin-sdk/config/types.node-host.d.ts +10 -0
  762. package/dist/plugin-sdk/config/types.plugins.d.ts +23 -0
  763. package/dist/plugin-sdk/config/types.queue.d.ts +14 -0
  764. package/dist/plugin-sdk/config/types.remoteclaw.d.ts +119 -0
  765. package/dist/plugin-sdk/config/types.signal.d.ts +46 -0
  766. package/dist/plugin-sdk/config/types.slack.d.ts +181 -0
  767. package/dist/plugin-sdk/config/types.telegram.d.ts +191 -0
  768. package/dist/plugin-sdk/config/types.tools.d.ts +322 -0
  769. package/dist/plugin-sdk/config/types.tts.d.ts +78 -0
  770. package/dist/plugin-sdk/config/types.whatsapp.d.ts +101 -0
  771. package/dist/plugin-sdk/config/validation.d.ts +37 -0
  772. package/dist/plugin-sdk/config/version.d.ts +8 -0
  773. package/dist/plugin-sdk/config/zod-schema.agent-defaults.d.ts +156 -0
  774. package/dist/plugin-sdk/config/zod-schema.agent-model.d.ts +5 -0
  775. package/dist/plugin-sdk/config/zod-schema.agent-runtime.d.ts +500 -0
  776. package/dist/plugin-sdk/config/zod-schema.agents.d.ts +298 -0
  777. package/dist/plugin-sdk/config/zod-schema.allowdeny.d.ts +13 -0
  778. package/dist/plugin-sdk/config/zod-schema.approvals.d.ts +15 -0
  779. package/dist/plugin-sdk/config/zod-schema.channels.d.ts +6 -0
  780. package/dist/plugin-sdk/config/zod-schema.core.d.ts +583 -0
  781. package/dist/plugin-sdk/config/zod-schema.d.ts +3434 -0
  782. package/dist/plugin-sdk/config/zod-schema.hooks.d.ts +85 -0
  783. package/dist/plugin-sdk/config/zod-schema.installs.d.ts +16 -0
  784. package/dist/plugin-sdk/config/zod-schema.providers-core.d.ts +3693 -0
  785. package/dist/plugin-sdk/config/zod-schema.providers-whatsapp.d.ts +235 -0
  786. package/dist/plugin-sdk/config/zod-schema.providers.d.ts +2200 -0
  787. package/dist/plugin-sdk/config/zod-schema.sensitive.d.ts +2 -0
  788. package/dist/plugin-sdk/config/zod-schema.session.d.ts +234 -0
  789. package/dist/plugin-sdk/cron/delivery.d.ts +9 -0
  790. package/dist/plugin-sdk/cron/legacy-delivery.d.ts +3 -0
  791. package/dist/plugin-sdk/cron/parse.d.ts +1 -0
  792. package/dist/plugin-sdk/cron/payload-migration.d.ts +3 -0
  793. package/dist/plugin-sdk/cron/schedule.d.ts +2 -0
  794. package/dist/plugin-sdk/cron/service/jobs.d.ts +21 -0
  795. package/dist/plugin-sdk/cron/service/locked.d.ts +2 -0
  796. package/dist/plugin-sdk/cron/service/normalize.d.ts +18 -0
  797. package/dist/plugin-sdk/cron/service/ops.d.ts +81 -0
  798. package/dist/plugin-sdk/cron/service/state.d.ts +125 -0
  799. package/dist/plugin-sdk/cron/service/store.d.ts +9 -0
  800. package/dist/plugin-sdk/cron/service/timer.d.ts +47 -0
  801. package/dist/plugin-sdk/cron/service.d.ts +66 -0
  802. package/dist/plugin-sdk/cron/session-reaper.d.ts +35 -0
  803. package/dist/plugin-sdk/cron/stagger.d.ts +8 -0
  804. package/dist/plugin-sdk/cron/store.d.ts +6 -0
  805. package/dist/plugin-sdk/cron/types.d.ts +131 -0
  806. package/dist/plugin-sdk/cron/webhook-url.d.ts +1 -0
  807. package/dist/plugin-sdk/daemon/constants.d.ts +35 -0
  808. package/dist/plugin-sdk/discord/accounts.d.ts +21 -0
  809. package/dist/plugin-sdk/discord/api.d.ts +11 -0
  810. package/dist/plugin-sdk/discord/audit.d.ts +29 -0
  811. package/dist/plugin-sdk/discord/chunk.d.ts +20 -0
  812. package/dist/plugin-sdk/discord/client.d.ts +21 -0
  813. package/dist/plugin-sdk/discord/components-registry.d.ts +16 -0
  814. package/dist/plugin-sdk/discord/components.d.ts +196 -0
  815. package/dist/plugin-sdk/discord/directory-live.d.ts +4 -0
  816. package/dist/plugin-sdk/discord/draft-chunking.d.ts +6 -0
  817. package/dist/plugin-sdk/discord/draft-stream.d.ts +21 -0
  818. package/dist/plugin-sdk/discord/gateway-logging.d.ts +8 -0
  819. package/dist/plugin-sdk/discord/guilds.d.ts +6 -0
  820. package/dist/plugin-sdk/discord/monitor/agent-components.d.ts +55 -0
  821. package/dist/plugin-sdk/discord/monitor/allow-list.d.ts +176 -0
  822. package/dist/plugin-sdk/discord/monitor/commands.d.ts +2 -0
  823. package/dist/plugin-sdk/discord/monitor/format.d.ts +13 -0
  824. package/dist/plugin-sdk/discord/monitor/gateway-plugin.d.ts +8 -0
  825. package/dist/plugin-sdk/discord/monitor/gateway-registry.d.ts +9 -0
  826. package/dist/plugin-sdk/discord/monitor/listeners.d.ts +44 -0
  827. package/dist/plugin-sdk/discord/monitor/message-handler.d.ts +5 -0
  828. package/dist/plugin-sdk/discord/monitor/message-handler.preflight.d.ts +14 -0
  829. package/dist/plugin-sdk/discord/monitor/message-handler.preflight.types.d.ts +95 -0
  830. package/dist/plugin-sdk/discord/monitor/message-handler.process.d.ts +2 -0
  831. package/dist/plugin-sdk/discord/monitor/message-utils.d.ts +40 -0
  832. package/dist/plugin-sdk/discord/monitor/native-command.d.ts +23 -0
  833. package/dist/plugin-sdk/discord/monitor/presence-cache.d.ts +9 -0
  834. package/dist/plugin-sdk/discord/monitor/presence.d.ts +5 -0
  835. package/dist/plugin-sdk/discord/monitor/provider.allowlist.d.ts +14 -0
  836. package/dist/plugin-sdk/discord/monitor/provider.d.ts +28 -0
  837. package/dist/plugin-sdk/discord/monitor/provider.lifecycle.d.ts +23 -0
  838. package/dist/plugin-sdk/discord/monitor/reply-context.d.ts +17 -0
  839. package/dist/plugin-sdk/discord/monitor/reply-delivery.d.ts +22 -0
  840. package/dist/plugin-sdk/discord/monitor/rest-fetch.d.ts +2 -0
  841. package/dist/plugin-sdk/discord/monitor/sender-identity.d.ts +31 -0
  842. package/dist/plugin-sdk/discord/monitor/system-events.d.ts +2 -0
  843. package/dist/plugin-sdk/discord/monitor/thread-bindings.d.ts +5 -0
  844. package/dist/plugin-sdk/discord/monitor/thread-bindings.discord-api.d.ts +36 -0
  845. package/dist/plugin-sdk/discord/monitor/thread-bindings.lifecycle.d.ts +30 -0
  846. package/dist/plugin-sdk/discord/monitor/thread-bindings.manager.d.ts +17 -0
  847. package/dist/plugin-sdk/discord/monitor/thread-bindings.messages.d.ts +17 -0
  848. package/dist/plugin-sdk/discord/monitor/thread-bindings.state.d.ts +61 -0
  849. package/dist/plugin-sdk/discord/monitor/thread-bindings.types.d.ts +64 -0
  850. package/dist/plugin-sdk/discord/monitor/threading.d.ts +106 -0
  851. package/dist/plugin-sdk/discord/monitor/typing.d.ts +5 -0
  852. package/dist/plugin-sdk/discord/monitor.d.ts +10 -0
  853. package/dist/plugin-sdk/discord/monitor.gateway.d.ts +12 -0
  854. package/dist/plugin-sdk/discord/pluralkit.d.ts +26 -0
  855. package/dist/plugin-sdk/discord/probe.d.ts +28 -0
  856. package/dist/plugin-sdk/discord/resolve-channels.d.ts +15 -0
  857. package/dist/plugin-sdk/discord/resolve-users.d.ts +14 -0
  858. package/dist/plugin-sdk/discord/send.channels.d.ts +17 -0
  859. package/dist/plugin-sdk/discord/send.components.d.ts +17 -0
  860. package/dist/plugin-sdk/discord/send.d.ts +10 -0
  861. package/dist/plugin-sdk/discord/send.emojis-stickers.d.ts +4 -0
  862. package/dist/plugin-sdk/discord/send.guild.d.ts +24 -0
  863. package/dist/plugin-sdk/discord/send.messages.d.ts +20 -0
  864. package/dist/plugin-sdk/discord/send.outbound.d.ts +57 -0
  865. package/dist/plugin-sdk/discord/send.permissions.d.ts +20 -0
  866. package/dist/plugin-sdk/discord/send.reactions.d.ts +15 -0
  867. package/dist/plugin-sdk/discord/send.shared.d.ts +85 -0
  868. package/dist/plugin-sdk/discord/send.types.d.ts +144 -0
  869. package/dist/plugin-sdk/discord/targets.d.ts +18 -0
  870. package/dist/plugin-sdk/discord/token.d.ts +11 -0
  871. package/dist/plugin-sdk/discord/voice/command.d.ts +15 -0
  872. package/dist/plugin-sdk/discord/voice/manager.d.ts +52 -0
  873. package/dist/plugin-sdk/discord/voice-message.d.ts +50 -0
  874. package/dist/plugin-sdk/gateway/call.d.ts +65 -0
  875. package/dist/plugin-sdk/gateway/chat-abort.d.ts +44 -0
  876. package/dist/plugin-sdk/gateway/chat-sanitize.d.ts +4 -0
  877. package/dist/plugin-sdk/gateway/client.d.ts +64 -0
  878. package/dist/plugin-sdk/gateway/control-ui-shared.d.ts +9 -0
  879. package/dist/plugin-sdk/gateway/credentials.d.ts +36 -0
  880. package/dist/plugin-sdk/gateway/device-auth.d.ts +11 -0
  881. package/dist/plugin-sdk/gateway/method-scopes.d.ts +22 -0
  882. package/dist/plugin-sdk/gateway/net.d.ts +77 -0
  883. package/dist/plugin-sdk/gateway/node-registry.d.ts +60 -0
  884. package/dist/plugin-sdk/gateway/protocol/client-info.d.ts +58 -0
  885. package/dist/plugin-sdk/gateway/protocol/index.d.ts +497 -0
  886. package/dist/plugin-sdk/gateway/protocol/schema/agent.d.ts +89 -0
  887. package/dist/plugin-sdk/gateway/protocol/schema/agents-models-skills.d.ts +188 -0
  888. package/dist/plugin-sdk/gateway/protocol/schema/channels.d.ts +134 -0
  889. package/dist/plugin-sdk/gateway/protocol/schema/config.d.ts +53 -0
  890. package/dist/plugin-sdk/gateway/protocol/schema/cron.d.ts +324 -0
  891. package/dist/plugin-sdk/gateway/protocol/schema/devices.d.ts +41 -0
  892. package/dist/plugin-sdk/gateway/protocol/schema/error-codes.d.ts +14 -0
  893. package/dist/plugin-sdk/gateway/protocol/schema/frames.d.ts +168 -0
  894. package/dist/plugin-sdk/gateway/protocol/schema/logs-chat.d.ts +45 -0
  895. package/dist/plugin-sdk/gateway/protocol/schema/nodes.d.ts +64 -0
  896. package/dist/plugin-sdk/gateway/protocol/schema/primitives.d.ts +4 -0
  897. package/dist/plugin-sdk/gateway/protocol/schema/protocol-schemas.d.ts +3 -0
  898. package/dist/plugin-sdk/gateway/protocol/schema/push.d.ts +15 -0
  899. package/dist/plugin-sdk/gateway/protocol/schema/sessions.d.ts +81 -0
  900. package/dist/plugin-sdk/gateway/protocol/schema/snapshot.d.ts +69 -0
  901. package/dist/plugin-sdk/gateway/protocol/schema/types.d.ts +120 -0
  902. package/dist/plugin-sdk/gateway/protocol/schema/wizard.d.ts +86 -0
  903. package/dist/plugin-sdk/gateway/protocol/schema.d.ts +16 -0
  904. package/dist/plugin-sdk/gateway/server/ws-types.d.ts +9 -0
  905. package/dist/plugin-sdk/gateway/server-broadcast.d.ts +17 -0
  906. package/dist/plugin-sdk/gateway/server-channels.d.ts +26 -0
  907. package/dist/plugin-sdk/gateway/server-constants.d.ts +10 -0
  908. package/dist/plugin-sdk/gateway/server-methods/types.d.ts +84 -0
  909. package/dist/plugin-sdk/gateway/server-shared.d.ts +7 -0
  910. package/dist/plugin-sdk/gateway/session-utils.fs.d.ts +48 -0
  911. package/dist/plugin-sdk/gateway/session-utils.types.d.ts +84 -0
  912. package/dist/plugin-sdk/gateway/ws-log.d.ts +5 -0
  913. package/dist/plugin-sdk/gateway/ws-logging.d.ts +4 -0
  914. package/dist/plugin-sdk/globals.d.ts +11 -0
  915. package/dist/plugin-sdk/hooks/internal-hooks.d.ts +140 -0
  916. package/dist/plugin-sdk/hooks/types.d.ts +62 -0
  917. package/dist/plugin-sdk/imessage/accounts.d.ts +16 -0
  918. package/dist/plugin-sdk/imessage/client.d.ts +46 -0
  919. package/dist/plugin-sdk/imessage/constants.d.ts +2 -0
  920. package/dist/plugin-sdk/imessage/monitor/abort-handler.d.ts +9 -0
  921. package/dist/plugin-sdk/imessage/monitor/deliver.d.ts +14 -0
  922. package/dist/plugin-sdk/imessage/monitor/echo-cache.d.ts +9 -0
  923. package/dist/plugin-sdk/imessage/monitor/inbound-processing.d.ts +96 -0
  924. package/dist/plugin-sdk/imessage/monitor/monitor-provider.d.ts +7 -0
  925. package/dist/plugin-sdk/imessage/monitor/parse-notification.d.ts +2 -0
  926. package/dist/plugin-sdk/imessage/monitor/runtime.d.ts +4 -0
  927. package/dist/plugin-sdk/imessage/monitor/types.d.ts +37 -0
  928. package/dist/plugin-sdk/imessage/monitor.d.ts +2 -0
  929. package/dist/plugin-sdk/imessage/probe.d.ts +17 -0
  930. package/dist/plugin-sdk/imessage/send.d.ts +34 -0
  931. package/dist/plugin-sdk/imessage/target-parsing-helpers.d.ts +45 -0
  932. package/dist/plugin-sdk/imessage/targets.d.ts +39 -0
  933. package/dist/plugin-sdk/index.d.ts +1 -0
  934. package/dist/plugin-sdk/index.js +24645 -0
  935. package/dist/plugin-sdk/infra/agent-events.d.ts +21 -0
  936. package/dist/plugin-sdk/infra/archive-path.d.ts +12 -0
  937. package/dist/plugin-sdk/infra/archive.d.ts +46 -0
  938. package/dist/plugin-sdk/infra/backoff.d.ts +8 -0
  939. package/dist/plugin-sdk/infra/brew.d.ts +8 -0
  940. package/dist/plugin-sdk/infra/channel-activity.d.ts +18 -0
  941. package/dist/plugin-sdk/infra/channel-summary.d.ts +6 -0
  942. package/dist/plugin-sdk/infra/dedupe.d.ts +12 -0
  943. package/dist/plugin-sdk/infra/device-auth-store.d.ts +18 -0
  944. package/dist/plugin-sdk/infra/device-identity.d.ts +11 -0
  945. package/dist/plugin-sdk/infra/device-pairing.d.ts +101 -0
  946. package/dist/plugin-sdk/infra/diagnostic-events.d.ts +140 -0
  947. package/dist/plugin-sdk/infra/diagnostic-flags.d.ts +4 -0
  948. package/dist/plugin-sdk/infra/dotenv.d.ts +3 -0
  949. package/dist/plugin-sdk/infra/env.d.ts +11 -0
  950. package/dist/plugin-sdk/infra/errors.d.ts +11 -0
  951. package/dist/plugin-sdk/infra/fetch.d.ts +2 -0
  952. package/dist/plugin-sdk/infra/file-identity.d.ts +5 -0
  953. package/dist/plugin-sdk/infra/file-lock.d.ts +2 -0
  954. package/dist/plugin-sdk/infra/format-time/format-datetime.d.ts +35 -0
  955. package/dist/plugin-sdk/infra/format-time/format-duration.d.ts +23 -0
  956. package/dist/plugin-sdk/infra/format-time/format-relative.d.ts +39 -0
  957. package/dist/plugin-sdk/infra/fs-safe.d.ts +25 -0
  958. package/dist/plugin-sdk/infra/gemini-auth.d.ts +16 -0
  959. package/dist/plugin-sdk/infra/git-commit.d.ts +4 -0
  960. package/dist/plugin-sdk/infra/git-root.d.ts +7 -0
  961. package/dist/plugin-sdk/infra/heartbeat-active-hours.d.ts +5 -0
  962. package/dist/plugin-sdk/infra/heartbeat-events-filter.d.ts +8 -0
  963. package/dist/plugin-sdk/infra/heartbeat-events.d.ts +21 -0
  964. package/dist/plugin-sdk/infra/heartbeat-reason.d.ts +5 -0
  965. package/dist/plugin-sdk/infra/heartbeat-runner.d.ts +45 -0
  966. package/dist/plugin-sdk/infra/heartbeat-visibility.d.ts +17 -0
  967. package/dist/plugin-sdk/infra/heartbeat-wake.d.ts +31 -0
  968. package/dist/plugin-sdk/infra/home-dir.d.ts +7 -0
  969. package/dist/plugin-sdk/infra/host-env-security.d.ts +21 -0
  970. package/dist/plugin-sdk/infra/http-body.d.ts +46 -0
  971. package/dist/plugin-sdk/infra/json-file.d.ts +2 -0
  972. package/dist/plugin-sdk/infra/json-files.d.ts +5 -0
  973. package/dist/plugin-sdk/infra/map-size.d.ts +1 -0
  974. package/dist/plugin-sdk/infra/net/fetch-guard.d.ts +21 -0
  975. package/dist/plugin-sdk/infra/net/hostname.d.ts +1 -0
  976. package/dist/plugin-sdk/infra/net/ssrf.d.ts +35 -0
  977. package/dist/plugin-sdk/infra/outbound/abort.d.ts +8 -0
  978. package/dist/plugin-sdk/infra/outbound/agent-delivery.d.ts +46 -0
  979. package/dist/plugin-sdk/infra/outbound/bound-delivery-router.d.ts +16 -0
  980. package/dist/plugin-sdk/infra/outbound/channel-selection.d.ts +11 -0
  981. package/dist/plugin-sdk/infra/outbound/channel-target.d.ts +6 -0
  982. package/dist/plugin-sdk/infra/outbound/deliver.d.ts +81 -0
  983. package/dist/plugin-sdk/infra/outbound/delivery-queue.d.ts +78 -0
  984. package/dist/plugin-sdk/infra/outbound/directory-cache.d.ts +24 -0
  985. package/dist/plugin-sdk/infra/outbound/envelope.d.ts +16 -0
  986. package/dist/plugin-sdk/infra/outbound/format.d.ts +39 -0
  987. package/dist/plugin-sdk/infra/outbound/identity.d.ts +8 -0
  988. package/dist/plugin-sdk/infra/outbound/message-action-spec.d.ts +5 -0
  989. package/dist/plugin-sdk/infra/outbound/payloads.d.ts +18 -0
  990. package/dist/plugin-sdk/infra/outbound/session-binding-service.d.ts +57 -0
  991. package/dist/plugin-sdk/infra/outbound/target-errors.d.ts +6 -0
  992. package/dist/plugin-sdk/infra/outbound/target-normalization.d.ts +4 -0
  993. package/dist/plugin-sdk/infra/outbound/target-resolver.d.ts +53 -0
  994. package/dist/plugin-sdk/infra/outbound/targets.d.ts +87 -0
  995. package/dist/plugin-sdk/infra/pairing-files.d.ts +23 -0
  996. package/dist/plugin-sdk/infra/pairing-pending.d.ts +13 -0
  997. package/dist/plugin-sdk/infra/pairing-token.d.ts +3 -0
  998. package/dist/plugin-sdk/infra/path-guards.d.ts +5 -0
  999. package/dist/plugin-sdk/infra/path-safety.d.ts +2 -0
  1000. package/dist/plugin-sdk/infra/plain-object.d.ts +4 -0
  1001. package/dist/plugin-sdk/infra/prototype-keys.d.ts +1 -0
  1002. package/dist/plugin-sdk/infra/provider-usage.auth.d.ts +11 -0
  1003. package/dist/plugin-sdk/infra/provider-usage.d.ts +4 -0
  1004. package/dist/plugin-sdk/infra/provider-usage.fetch.claude.d.ts +2 -0
  1005. package/dist/plugin-sdk/infra/provider-usage.fetch.codex.d.ts +2 -0
  1006. package/dist/plugin-sdk/infra/provider-usage.fetch.copilot.d.ts +2 -0
  1007. package/dist/plugin-sdk/infra/provider-usage.fetch.d.ts +6 -0
  1008. package/dist/plugin-sdk/infra/provider-usage.fetch.gemini.d.ts +2 -0
  1009. package/dist/plugin-sdk/infra/provider-usage.fetch.minimax.d.ts +2 -0
  1010. package/dist/plugin-sdk/infra/provider-usage.fetch.shared.d.ts +12 -0
  1011. package/dist/plugin-sdk/infra/provider-usage.fetch.zai.d.ts +2 -0
  1012. package/dist/plugin-sdk/infra/provider-usage.format.d.ts +13 -0
  1013. package/dist/plugin-sdk/infra/provider-usage.load.d.ts +12 -0
  1014. package/dist/plugin-sdk/infra/provider-usage.shared.d.ts +8 -0
  1015. package/dist/plugin-sdk/infra/provider-usage.types.d.ts +17 -0
  1016. package/dist/plugin-sdk/infra/restart.d.ts +70 -0
  1017. package/dist/plugin-sdk/infra/retry-policy.d.ts +25 -0
  1018. package/dist/plugin-sdk/infra/retry.d.ts +21 -0
  1019. package/dist/plugin-sdk/infra/safe-executable-value.d.ts +1 -0
  1020. package/dist/plugin-sdk/infra/scp-host.d.ts +2 -0
  1021. package/dist/plugin-sdk/infra/secure-random.d.ts +2 -0
  1022. package/dist/plugin-sdk/infra/session-cost-usage.d.ts +45 -0
  1023. package/dist/plugin-sdk/infra/session-cost-usage.types.d.ts +153 -0
  1024. package/dist/plugin-sdk/infra/session-maintenance-warning.d.ts +10 -0
  1025. package/dist/plugin-sdk/infra/shell-env.d.ts +34 -0
  1026. package/dist/plugin-sdk/infra/system-events.d.ts +18 -0
  1027. package/dist/plugin-sdk/infra/tailnet.d.ts +8 -0
  1028. package/dist/plugin-sdk/infra/tls/fingerprint.d.ts +1 -0
  1029. package/dist/plugin-sdk/infra/tls/gateway.d.ts +16 -0
  1030. package/dist/plugin-sdk/infra/tmp-remoteclaw-dir.d.ts +18 -0
  1031. package/dist/plugin-sdk/infra/transport-ready.d.ts +16 -0
  1032. package/dist/plugin-sdk/infra/unhandled-rejections.d.ts +15 -0
  1033. package/dist/plugin-sdk/infra/ws.d.ts +2 -0
  1034. package/dist/plugin-sdk/infra/wsl.d.ts +11 -0
  1035. package/dist/plugin-sdk/line/accounts.d.ts +10 -0
  1036. package/dist/plugin-sdk/line/actions.d.ts +22 -0
  1037. package/dist/plugin-sdk/line/auto-reply-delivery.d.ts +38 -0
  1038. package/dist/plugin-sdk/line/bot-access.d.ts +17 -0
  1039. package/dist/plugin-sdk/line/bot-handlers.d.ts +13 -0
  1040. package/dist/plugin-sdk/line/bot-message-context.d.ts +118 -0
  1041. package/dist/plugin-sdk/line/bot.d.ts +24 -0
  1042. package/dist/plugin-sdk/line/channel-access-token.d.ts +4 -0
  1043. package/dist/plugin-sdk/line/config-schema.d.ts +64 -0
  1044. package/dist/plugin-sdk/line/download.d.ts +7 -0
  1045. package/dist/plugin-sdk/line/flex-templates/basic-cards.d.ts +46 -0
  1046. package/dist/plugin-sdk/line/flex-templates/common.d.ts +2 -0
  1047. package/dist/plugin-sdk/line/flex-templates/media-control-cards.d.ts +73 -0
  1048. package/dist/plugin-sdk/line/flex-templates/message.d.ts +6 -0
  1049. package/dist/plugin-sdk/line/flex-templates/schedule-cards.d.ts +55 -0
  1050. package/dist/plugin-sdk/line/flex-templates/types.d.ts +19 -0
  1051. package/dist/plugin-sdk/line/flex-templates.d.ts +5 -0
  1052. package/dist/plugin-sdk/line/markdown-to-line.d.ts +72 -0
  1053. package/dist/plugin-sdk/line/monitor.d.ts +28 -0
  1054. package/dist/plugin-sdk/line/probe.d.ts +2 -0
  1055. package/dist/plugin-sdk/line/reply-chunks.d.ts +24 -0
  1056. package/dist/plugin-sdk/line/send.d.ts +91 -0
  1057. package/dist/plugin-sdk/line/signature.d.ts +1 -0
  1058. package/dist/plugin-sdk/line/template-messages.d.ts +100 -0
  1059. package/dist/plugin-sdk/line/types.d.ts +113 -0
  1060. package/dist/plugin-sdk/line/webhook-node.d.ts +15 -0
  1061. package/dist/plugin-sdk/line/webhook-utils.d.ts +3 -0
  1062. package/dist/plugin-sdk/line/webhook.d.ts +19 -0
  1063. package/dist/plugin-sdk/link-understanding/apply.d.ts +10 -0
  1064. package/dist/plugin-sdk/link-understanding/defaults.d.ts +2 -0
  1065. package/dist/plugin-sdk/link-understanding/detect.d.ts +3 -0
  1066. package/dist/plugin-sdk/link-understanding/format.d.ts +4 -0
  1067. package/dist/plugin-sdk/link-understanding/runner.d.ts +11 -0
  1068. package/dist/plugin-sdk/logger.d.ts +6 -0
  1069. package/dist/plugin-sdk/logging/config.d.ts +4 -0
  1070. package/dist/plugin-sdk/logging/console.d.ts +23 -0
  1071. package/dist/plugin-sdk/logging/diagnostic-session-state.d.ts +30 -0
  1072. package/dist/plugin-sdk/logging/diagnostic.d.ts +65 -0
  1073. package/dist/plugin-sdk/logging/env-log-level.d.ts +2 -0
  1074. package/dist/plugin-sdk/logging/levels.d.ts +5 -0
  1075. package/dist/plugin-sdk/logging/logger.d.ts +44 -0
  1076. package/dist/plugin-sdk/logging/node-require.d.ts +1 -0
  1077. package/dist/plugin-sdk/logging/redact-identifier.d.ts +4 -0
  1078. package/dist/plugin-sdk/logging/redact.d.ts +9 -0
  1079. package/dist/plugin-sdk/logging/state.d.ts +19 -0
  1080. package/dist/plugin-sdk/logging/subsystem.d.ts +18 -0
  1081. package/dist/plugin-sdk/logging/timestamps.d.ts +1 -0
  1082. package/dist/plugin-sdk/logging.d.ts +10 -0
  1083. package/dist/plugin-sdk/markdown/fences.d.ts +10 -0
  1084. package/dist/plugin-sdk/markdown/ir.d.ts +32 -0
  1085. package/dist/plugin-sdk/markdown/render.d.ts +18 -0
  1086. package/dist/plugin-sdk/markdown/tables.d.ts +2 -0
  1087. package/dist/plugin-sdk/markdown/whatsapp.d.ts +14 -0
  1088. package/dist/plugin-sdk/media/audio-tags.d.ts +10 -0
  1089. package/dist/plugin-sdk/media/audio.d.ts +19 -0
  1090. package/dist/plugin-sdk/media/base64.d.ts +6 -0
  1091. package/dist/plugin-sdk/media/constants.d.ts +7 -0
  1092. package/dist/plugin-sdk/media/fetch.d.ts +23 -0
  1093. package/dist/plugin-sdk/media/image-ops.d.ts +41 -0
  1094. package/dist/plugin-sdk/media/inbound-path-policy.d.ts +18 -0
  1095. package/dist/plugin-sdk/media/input-files.d.ts +95 -0
  1096. package/dist/plugin-sdk/media/local-roots.d.ts +3 -0
  1097. package/dist/plugin-sdk/media/mime.d.ts +16 -0
  1098. package/dist/plugin-sdk/media/outbound-attachment.d.ts +6 -0
  1099. package/dist/plugin-sdk/media/parse.d.ts +8 -0
  1100. package/dist/plugin-sdk/media/png-encode.d.ts +8 -0
  1101. package/dist/plugin-sdk/media/read-response-with-limit.d.ts +7 -0
  1102. package/dist/plugin-sdk/media/store.d.ts +33 -0
  1103. package/dist/plugin-sdk/media-understanding/apply.d.ts +19 -0
  1104. package/dist/plugin-sdk/media-understanding/attachments.d.ts +49 -0
  1105. package/dist/plugin-sdk/media-understanding/audio-preflight.d.ts +16 -0
  1106. package/dist/plugin-sdk/media-understanding/concurrency.d.ts +1 -0
  1107. package/dist/plugin-sdk/media-understanding/defaults.d.ts +12 -0
  1108. package/dist/plugin-sdk/media-understanding/errors.d.ts +6 -0
  1109. package/dist/plugin-sdk/media-understanding/format.d.ts +7 -0
  1110. package/dist/plugin-sdk/media-understanding/fs.d.ts +1 -0
  1111. package/dist/plugin-sdk/media-understanding/output-extract.d.ts +2 -0
  1112. package/dist/plugin-sdk/media-understanding/providers/anthropic/index.d.ts +2 -0
  1113. package/dist/plugin-sdk/media-understanding/providers/deepgram/audio.d.ts +4 -0
  1114. package/dist/plugin-sdk/media-understanding/providers/deepgram/index.d.ts +2 -0
  1115. package/dist/plugin-sdk/media-understanding/providers/google/audio.d.ts +3 -0
  1116. package/dist/plugin-sdk/media-understanding/providers/google/index.d.ts +2 -0
  1117. package/dist/plugin-sdk/media-understanding/providers/google/inline-data.d.ts +20 -0
  1118. package/dist/plugin-sdk/media-understanding/providers/google/video.d.ts +3 -0
  1119. package/dist/plugin-sdk/media-understanding/providers/groq/index.d.ts +2 -0
  1120. package/dist/plugin-sdk/media-understanding/providers/index.d.ts +4 -0
  1121. package/dist/plugin-sdk/media-understanding/providers/minimax/index.d.ts +2 -0
  1122. package/dist/plugin-sdk/media-understanding/providers/mistral/index.d.ts +2 -0
  1123. package/dist/plugin-sdk/media-understanding/providers/moonshot/index.d.ts +2 -0
  1124. package/dist/plugin-sdk/media-understanding/providers/moonshot/video.d.ts +3 -0
  1125. package/dist/plugin-sdk/media-understanding/providers/openai/audio.d.ts +3 -0
  1126. package/dist/plugin-sdk/media-understanding/providers/openai/index.d.ts +2 -0
  1127. package/dist/plugin-sdk/media-understanding/providers/shared.d.ts +20 -0
  1128. package/dist/plugin-sdk/media-understanding/providers/zai/index.d.ts +2 -0
  1129. package/dist/plugin-sdk/media-understanding/resolve.d.ts +44 -0
  1130. package/dist/plugin-sdk/media-understanding/runner.d.ts +34 -0
  1131. package/dist/plugin-sdk/media-understanding/runner.entries.d.ts +33 -0
  1132. package/dist/plugin-sdk/media-understanding/scope.d.ts +9 -0
  1133. package/dist/plugin-sdk/media-understanding/types.d.ts +74 -0
  1134. package/dist/plugin-sdk/media-understanding/video.d.ts +2 -0
  1135. package/dist/plugin-sdk/middleware/channel-bridge.d.ts +39 -0
  1136. package/dist/plugin-sdk/middleware/cli-runtime-base.d.ts +35 -0
  1137. package/dist/plugin-sdk/middleware/delivery-adapter.d.ts +36 -0
  1138. package/dist/plugin-sdk/middleware/error-classifier.d.ts +14 -0
  1139. package/dist/plugin-sdk/middleware/mcp-side-effects.d.ts +20 -0
  1140. package/dist/plugin-sdk/middleware/runtime-factory.d.ts +4 -0
  1141. package/dist/plugin-sdk/middleware/runtimes/claude.d.ts +27 -0
  1142. package/dist/plugin-sdk/middleware/runtimes/codex.d.ts +74 -0
  1143. package/dist/plugin-sdk/middleware/runtimes/gemini.d.ts +52 -0
  1144. package/dist/plugin-sdk/middleware/runtimes/opencode.d.ts +54 -0
  1145. package/dist/plugin-sdk/middleware/session-map.d.ts +36 -0
  1146. package/dist/plugin-sdk/middleware/system-prompt.d.ts +30 -0
  1147. package/dist/plugin-sdk/middleware/types.d.ts +188 -0
  1148. package/dist/plugin-sdk/pairing/pairing-labels.d.ts +2 -0
  1149. package/dist/plugin-sdk/pairing/pairing-messages.d.ts +6 -0
  1150. package/dist/plugin-sdk/pairing/pairing-store.d.ts +48 -0
  1151. package/dist/plugin-sdk/plugin-sdk/account-id.d.ts +1 -0
  1152. package/dist/plugin-sdk/plugin-sdk/agent-media-payload.d.ts +12 -0
  1153. package/dist/plugin-sdk/plugin-sdk/allow-from.d.ts +32 -0
  1154. package/dist/plugin-sdk/plugin-sdk/command-auth.d.ts +25 -0
  1155. package/dist/plugin-sdk/plugin-sdk/config-paths.d.ts +6 -0
  1156. package/dist/plugin-sdk/plugin-sdk/file-lock.d.ts +16 -0
  1157. package/dist/plugin-sdk/plugin-sdk/group-access.d.ts +16 -0
  1158. package/dist/plugin-sdk/plugin-sdk/index.d.ts +162 -0
  1159. package/dist/plugin-sdk/plugin-sdk/json-store.d.ts +5 -0
  1160. package/dist/plugin-sdk/plugin-sdk/onboarding.d.ts +11 -0
  1161. package/dist/plugin-sdk/plugin-sdk/persistent-dedupe.d.ts +20 -0
  1162. package/dist/plugin-sdk/plugin-sdk/reply-payload.d.ts +22 -0
  1163. package/dist/plugin-sdk/plugin-sdk/run-command.d.ts +12 -0
  1164. package/dist/plugin-sdk/plugin-sdk/runtime.d.ts +10 -0
  1165. package/dist/plugin-sdk/plugin-sdk/slack-message-actions.d.ts +11 -0
  1166. package/dist/plugin-sdk/plugin-sdk/status-helpers.d.ts +88 -0
  1167. package/dist/plugin-sdk/plugin-sdk/temp-path.d.ts +12 -0
  1168. package/dist/plugin-sdk/plugin-sdk/text-chunking.d.ts +1 -0
  1169. package/dist/plugin-sdk/plugin-sdk/tool-send.d.ts +4 -0
  1170. package/dist/plugin-sdk/plugin-sdk/webhook-path.d.ts +6 -0
  1171. package/dist/plugin-sdk/plugin-sdk/webhook-targets.d.ts +23 -0
  1172. package/dist/plugin-sdk/plugins/bundled-dir.d.ts +1 -0
  1173. package/dist/plugin-sdk/plugins/commands.d.ts +83 -0
  1174. package/dist/plugin-sdk/plugins/config-schema.d.ts +2 -0
  1175. package/dist/plugin-sdk/plugins/config-state.d.ts +30 -0
  1176. package/dist/plugin-sdk/plugins/discovery.d.ts +24 -0
  1177. package/dist/plugin-sdk/plugins/hook-runner-global.d.ts +37 -0
  1178. package/dist/plugin-sdk/plugins/hooks.d.ts +49 -0
  1179. package/dist/plugin-sdk/plugins/http-path.d.ts +1 -0
  1180. package/dist/plugin-sdk/plugins/http-registry.d.ts +13 -0
  1181. package/dist/plugin-sdk/plugins/manifest-registry.d.ts +34 -0
  1182. package/dist/plugin-sdk/plugins/manifest.d.ts +66 -0
  1183. package/dist/plugin-sdk/plugins/path-safety.d.ts +5 -0
  1184. package/dist/plugin-sdk/plugins/registry.d.ts +130 -0
  1185. package/dist/plugin-sdk/plugins/runtime/native-deps.d.ts +8 -0
  1186. package/dist/plugin-sdk/plugins/runtime/types.d.ts +310 -0
  1187. package/dist/plugin-sdk/plugins/runtime.d.ts +5 -0
  1188. package/dist/plugin-sdk/plugins/schema-validator.d.ts +10 -0
  1189. package/dist/plugin-sdk/plugins/types.d.ts +487 -0
  1190. package/dist/plugin-sdk/polls.d.ts +31 -0
  1191. package/dist/plugin-sdk/process/command-queue.d.ts +51 -0
  1192. package/dist/plugin-sdk/process/exec.d.ts +30 -0
  1193. package/dist/plugin-sdk/process/lanes.d.ts +6 -0
  1194. package/dist/plugin-sdk/process/spawn-utils.d.ts +26 -0
  1195. package/dist/plugin-sdk/routing/account-id.d.ts +3 -0
  1196. package/dist/plugin-sdk/routing/account-lookup.d.ts +1 -0
  1197. package/dist/plugin-sdk/routing/bindings.d.ts +11 -0
  1198. package/dist/plugin-sdk/routing/resolve-route.d.ts +42 -0
  1199. package/dist/plugin-sdk/routing/session-key.d.ts +48 -0
  1200. package/dist/plugin-sdk/runtime.d.ts +7 -0
  1201. package/dist/plugin-sdk/security/channel-metadata.d.ts +6 -0
  1202. package/dist/plugin-sdk/security/dm-policy-shared.d.ts +33 -0
  1203. package/dist/plugin-sdk/security/external-content.d.ts +53 -0
  1204. package/dist/plugin-sdk/security/safe-regex.d.ts +2 -0
  1205. package/dist/plugin-sdk/security/scan-paths.d.ts +5 -0
  1206. package/dist/plugin-sdk/security/secret-equal.d.ts +1 -0
  1207. package/dist/plugin-sdk/sessions/input-provenance.d.ts +16 -0
  1208. package/dist/plugin-sdk/sessions/level-overrides.d.ts +10 -0
  1209. package/dist/plugin-sdk/sessions/model-overrides.d.ts +14 -0
  1210. package/dist/plugin-sdk/sessions/send-policy.d.ts +11 -0
  1211. package/dist/plugin-sdk/sessions/session-key-utils.d.ts +16 -0
  1212. package/dist/plugin-sdk/sessions/session-label.d.ts +9 -0
  1213. package/dist/plugin-sdk/sessions/transcript-events.d.ts +7 -0
  1214. package/dist/plugin-sdk/shared/avatar-policy.d.ts +16 -0
  1215. package/dist/plugin-sdk/shared/chat-content.d.ts +5 -0
  1216. package/dist/plugin-sdk/shared/chat-envelope.d.ts +2 -0
  1217. package/dist/plugin-sdk/shared/device-auth.d.ts +13 -0
  1218. package/dist/plugin-sdk/shared/gateway-bind-url.d.ts +14 -0
  1219. package/dist/plugin-sdk/shared/net/ip.d.ts +19 -0
  1220. package/dist/plugin-sdk/shared/operator-scope-compat.d.ts +5 -0
  1221. package/dist/plugin-sdk/shared/pid-alive.d.ts +1 -0
  1222. package/dist/plugin-sdk/shared/process-scoped-map.d.ts +1 -0
  1223. package/dist/plugin-sdk/shared/string-normalization.d.ts +4 -0
  1224. package/dist/plugin-sdk/shared/subagents-format.d.ts +15 -0
  1225. package/dist/plugin-sdk/shared/tailscale-status.d.ts +8 -0
  1226. package/dist/plugin-sdk/shared/text/code-regions.d.ts +6 -0
  1227. package/dist/plugin-sdk/shared/text/reasoning-tags.d.ts +6 -0
  1228. package/dist/plugin-sdk/shared/text-chunking.d.ts +1 -0
  1229. package/dist/plugin-sdk/signal/accounts.d.ts +17 -0
  1230. package/dist/plugin-sdk/signal/client.d.ts +32 -0
  1231. package/dist/plugin-sdk/signal/daemon.d.ts +26 -0
  1232. package/dist/plugin-sdk/signal/format.d.ts +17 -0
  1233. package/dist/plugin-sdk/signal/identity.d.ts +24 -0
  1234. package/dist/plugin-sdk/signal/index.d.ts +5 -0
  1235. package/dist/plugin-sdk/signal/monitor/event-handler.d.ts +5 -0
  1236. package/dist/plugin-sdk/signal/monitor/event-handler.types.d.ts +125 -0
  1237. package/dist/plugin-sdk/signal/monitor/mentions.d.ts +2 -0
  1238. package/dist/plugin-sdk/signal/monitor.d.ts +25 -0
  1239. package/dist/plugin-sdk/signal/probe.d.ts +7 -0
  1240. package/dist/plugin-sdk/signal/reaction-level.d.ts +17 -0
  1241. package/dist/plugin-sdk/signal/rpc-context.d.ts +9 -0
  1242. package/dist/plugin-sdk/signal/send-reactions.d.ts +32 -0
  1243. package/dist/plugin-sdk/signal/send.d.ts +25 -0
  1244. package/dist/plugin-sdk/signal/sse-reconnect.d.ts +13 -0
  1245. package/dist/plugin-sdk/slack/accounts.d.ts +32 -0
  1246. package/dist/plugin-sdk/slack/actions.d.ts +56 -0
  1247. package/dist/plugin-sdk/slack/blocks-fallback.d.ts +2 -0
  1248. package/dist/plugin-sdk/slack/blocks-input.d.ts +3 -0
  1249. package/dist/plugin-sdk/slack/channel-migration.d.ts +20 -0
  1250. package/dist/plugin-sdk/slack/client.d.ts +4 -0
  1251. package/dist/plugin-sdk/slack/directory-live.d.ts +4 -0
  1252. package/dist/plugin-sdk/slack/draft-stream.d.ts +25 -0
  1253. package/dist/plugin-sdk/slack/format.d.ts +7 -0
  1254. package/dist/plugin-sdk/slack/http/index.d.ts +1 -0
  1255. package/dist/plugin-sdk/slack/http/registry.d.ts +12 -0
  1256. package/dist/plugin-sdk/slack/index.d.ts +6 -0
  1257. package/dist/plugin-sdk/slack/message-actions.d.ts +4 -0
  1258. package/dist/plugin-sdk/slack/modal-metadata.d.ts +7 -0
  1259. package/dist/plugin-sdk/slack/monitor/allow-list.d.ts +23 -0
  1260. package/dist/plugin-sdk/slack/monitor/auth.d.ts +11 -0
  1261. package/dist/plugin-sdk/slack/monitor/channel-config.d.ts +43 -0
  1262. package/dist/plugin-sdk/slack/monitor/commands.d.ts +9 -0
  1263. package/dist/plugin-sdk/slack/monitor/context.d.ts +104 -0
  1264. package/dist/plugin-sdk/slack/monitor/events/channels.d.ts +4 -0
  1265. package/dist/plugin-sdk/slack/monitor/events/interactions.d.ts +4 -0
  1266. package/dist/plugin-sdk/slack/monitor/events/members.d.ts +4 -0
  1267. package/dist/plugin-sdk/slack/monitor/events/messages.d.ts +6 -0
  1268. package/dist/plugin-sdk/slack/monitor/events/pins.d.ts +4 -0
  1269. package/dist/plugin-sdk/slack/monitor/events/reactions.d.ts +4 -0
  1270. package/dist/plugin-sdk/slack/monitor/events.d.ts +8 -0
  1271. package/dist/plugin-sdk/slack/monitor/external-arg-menu-store.d.ts +18 -0
  1272. package/dist/plugin-sdk/slack/monitor/media.d.ts +66 -0
  1273. package/dist/plugin-sdk/slack/monitor/message-handler/dispatch.d.ts +12 -0
  1274. package/dist/plugin-sdk/slack/monitor/message-handler/prepare.d.ts +13 -0
  1275. package/dist/plugin-sdk/slack/monitor/message-handler/types.d.ts +22 -0
  1276. package/dist/plugin-sdk/slack/monitor/message-handler.d.ts +11 -0
  1277. package/dist/plugin-sdk/slack/monitor/mrkdwn.d.ts +1 -0
  1278. package/dist/plugin-sdk/slack/monitor/policy.d.ts +5 -0
  1279. package/dist/plugin-sdk/slack/monitor/provider.d.ts +7 -0
  1280. package/dist/plugin-sdk/slack/monitor/replies.d.ts +53 -0
  1281. package/dist/plugin-sdk/slack/monitor/room-context.d.ts +14 -0
  1282. package/dist/plugin-sdk/slack/monitor/slash.d.ts +6 -0
  1283. package/dist/plugin-sdk/slack/monitor/thread-resolution.d.ts +12 -0
  1284. package/dist/plugin-sdk/slack/monitor/types.d.ts +97 -0
  1285. package/dist/plugin-sdk/slack/monitor.d.ts +5 -0
  1286. package/dist/plugin-sdk/slack/probe.d.ts +14 -0
  1287. package/dist/plugin-sdk/slack/resolve-channels.d.ts +19 -0
  1288. package/dist/plugin-sdk/slack/resolve-users.d.ts +26 -0
  1289. package/dist/plugin-sdk/slack/send.d.ts +22 -0
  1290. package/dist/plugin-sdk/slack/stream-mode.d.ts +23 -0
  1291. package/dist/plugin-sdk/slack/streaming.d.ts +72 -0
  1292. package/dist/plugin-sdk/slack/targets.d.ts +7 -0
  1293. package/dist/plugin-sdk/slack/threading-tool-context.d.ts +10 -0
  1294. package/dist/plugin-sdk/slack/threading.d.ts +29 -0
  1295. package/dist/plugin-sdk/slack/token.d.ts +3 -0
  1296. package/dist/plugin-sdk/slack/types.d.ts +58 -0
  1297. package/dist/plugin-sdk/telegram/accounts.d.ts +21 -0
  1298. package/dist/plugin-sdk/telegram/allowed-updates.d.ts +4 -0
  1299. package/dist/plugin-sdk/telegram/api-logging.d.ts +11 -0
  1300. package/dist/plugin-sdk/telegram/audit.d.ts +29 -0
  1301. package/dist/plugin-sdk/telegram/bot/delivery.d.ts +35 -0
  1302. package/dist/plugin-sdk/telegram/bot/helpers.d.ts +128 -0
  1303. package/dist/plugin-sdk/telegram/bot/types.d.ts +28 -0
  1304. package/dist/plugin-sdk/telegram/bot-access.d.ts +26 -0
  1305. package/dist/plugin-sdk/telegram/bot-handlers.d.ts +2 -0
  1306. package/dist/plugin-sdk/telegram/bot-message-context.d.ts +145 -0
  1307. package/dist/plugin-sdk/telegram/bot-message-dispatch.d.ts +19 -0
  1308. package/dist/plugin-sdk/telegram/bot-message.d.ts +20 -0
  1309. package/dist/plugin-sdk/telegram/bot-native-command-menu.d.ts +33 -0
  1310. package/dist/plugin-sdk/telegram/bot-native-commands.d.ts +59 -0
  1311. package/dist/plugin-sdk/telegram/bot-updates.d.ts +31 -0
  1312. package/dist/plugin-sdk/telegram/bot.d.ts +62 -0
  1313. package/dist/plugin-sdk/telegram/button-types.d.ts +7 -0
  1314. package/dist/plugin-sdk/telegram/caption.d.ts +5 -0
  1315. package/dist/plugin-sdk/telegram/dm-access.d.ts +18 -0
  1316. package/dist/plugin-sdk/telegram/draft-stream.d.ts +37 -0
  1317. package/dist/plugin-sdk/telegram/fetch.d.ts +5 -0
  1318. package/dist/plugin-sdk/telegram/format.d.ts +18 -0
  1319. package/dist/plugin-sdk/telegram/group-access.d.ts +54 -0
  1320. package/dist/plugin-sdk/telegram/group-config-helpers.d.ts +8 -0
  1321. package/dist/plugin-sdk/telegram/group-migration.d.ts +20 -0
  1322. package/dist/plugin-sdk/telegram/inline-buttons.d.ts +11 -0
  1323. package/dist/plugin-sdk/telegram/lane-delivery.d.ts +56 -0
  1324. package/dist/plugin-sdk/telegram/monitor.d.ts +19 -0
  1325. package/dist/plugin-sdk/telegram/network-config.d.ts +33 -0
  1326. package/dist/plugin-sdk/telegram/network-errors.d.ts +5 -0
  1327. package/dist/plugin-sdk/telegram/outbound-params.d.ts +2 -0
  1328. package/dist/plugin-sdk/telegram/probe.d.ts +17 -0
  1329. package/dist/plugin-sdk/telegram/proxy.d.ts +1 -0
  1330. package/dist/plugin-sdk/telegram/reaction-level.d.ts +11 -0
  1331. package/dist/plugin-sdk/telegram/reasoning-lane-coordinator.d.ts +18 -0
  1332. package/dist/plugin-sdk/telegram/send.d.ts +153 -0
  1333. package/dist/plugin-sdk/telegram/sent-message-cache.d.ts +16 -0
  1334. package/dist/plugin-sdk/telegram/status-reaction-variants.d.ts +21 -0
  1335. package/dist/plugin-sdk/telegram/sticker-cache.d.ts +47 -0
  1336. package/dist/plugin-sdk/telegram/target-writeback.d.ts +7 -0
  1337. package/dist/plugin-sdk/telegram/targets.d.ts +11 -0
  1338. package/dist/plugin-sdk/telegram/token.d.ts +13 -0
  1339. package/dist/plugin-sdk/telegram/update-offset-store.d.ts +15 -0
  1340. package/dist/plugin-sdk/telegram/voice.d.ts +16 -0
  1341. package/dist/plugin-sdk/telegram/webhook.d.ts +20 -0
  1342. package/dist/plugin-sdk/terminal/ansi.d.ts +2 -0
  1343. package/dist/plugin-sdk/terminal/health-style.d.ts +1 -0
  1344. package/dist/plugin-sdk/terminal/links.d.ts +6 -0
  1345. package/dist/plugin-sdk/terminal/palette.d.ts +10 -0
  1346. package/dist/plugin-sdk/terminal/progress-line.d.ts +3 -0
  1347. package/dist/plugin-sdk/terminal/prompt-style.d.ts +3 -0
  1348. package/dist/plugin-sdk/terminal/restore.d.ts +17 -0
  1349. package/dist/plugin-sdk/terminal/theme.d.ts +15 -0
  1350. package/dist/plugin-sdk/tts/tts-core.d.ts +38 -0
  1351. package/dist/plugin-sdk/tts/tts.d.ts +177 -0
  1352. package/dist/plugin-sdk/types/agent-types.d.ts +1 -0
  1353. package/dist/plugin-sdk/utils/account-id.d.ts +1 -0
  1354. package/dist/plugin-sdk/utils/boolean.d.ts +5 -0
  1355. package/dist/plugin-sdk/utils/chunk-items.d.ts +1 -0
  1356. package/dist/plugin-sdk/utils/delivery-context.d.ts +29 -0
  1357. package/dist/plugin-sdk/utils/directive-tags.d.ts +29 -0
  1358. package/dist/plugin-sdk/utils/fetch-timeout.d.ts +13 -0
  1359. package/dist/plugin-sdk/utils/mask-api-key.d.ts +1 -0
  1360. package/dist/plugin-sdk/utils/message-channel.d.ts +27 -0
  1361. package/dist/plugin-sdk/utils/normalize-secret-input.d.ts +11 -0
  1362. package/dist/plugin-sdk/utils/provider-utils.d.ts +9 -0
  1363. package/dist/plugin-sdk/utils/queue-helpers.d.ts +80 -0
  1364. package/dist/plugin-sdk/utils/reaction-level.d.ts +15 -0
  1365. package/dist/plugin-sdk/utils/run-with-concurrency.d.ts +11 -0
  1366. package/dist/plugin-sdk/utils/transcript-tools.d.ts +8 -0
  1367. package/dist/plugin-sdk/utils/usage-format.d.ts +26 -0
  1368. package/dist/plugin-sdk/utils/with-timeout.d.ts +1 -0
  1369. package/dist/plugin-sdk/utils.d.ts +63 -0
  1370. package/dist/plugin-sdk/version.d.ts +8 -0
  1371. package/dist/plugin-sdk/web/accounts.d.ts +39 -0
  1372. package/dist/plugin-sdk/web/active-listener.d.ts +25 -0
  1373. package/dist/plugin-sdk/web/auth-store.d.ts +26 -0
  1374. package/dist/plugin-sdk/web/auto-reply/constants.d.ts +1 -0
  1375. package/dist/plugin-sdk/web/auto-reply/deliver-reply.d.ts +19 -0
  1376. package/dist/plugin-sdk/web/auto-reply/heartbeat-runner.d.ts +20 -0
  1377. package/dist/plugin-sdk/web/auto-reply/loggers.d.ts +4 -0
  1378. package/dist/plugin-sdk/web/auto-reply/mentions.d.ts +19 -0
  1379. package/dist/plugin-sdk/web/auto-reply/monitor/ack-reaction.d.ts +13 -0
  1380. package/dist/plugin-sdk/web/auto-reply/monitor/broadcast.d.ts +16 -0
  1381. package/dist/plugin-sdk/web/auto-reply/monitor/commands.d.ts +2 -0
  1382. package/dist/plugin-sdk/web/auto-reply/monitor/echo.d.ts +17 -0
  1383. package/dist/plugin-sdk/web/auto-reply/monitor/group-activation.d.ts +9 -0
  1384. package/dist/plugin-sdk/web/auto-reply/monitor/group-gating.d.ts +33 -0
  1385. package/dist/plugin-sdk/web/auto-reply/monitor/group-members.d.ts +6 -0
  1386. package/dist/plugin-sdk/web/auto-reply/monitor/last-route.d.ts +15 -0
  1387. package/dist/plugin-sdk/web/auto-reply/monitor/message-line.d.ts +11 -0
  1388. package/dist/plugin-sdk/web/auto-reply/monitor/on-message.d.ts +24 -0
  1389. package/dist/plugin-sdk/web/auto-reply/monitor/peer.d.ts +2 -0
  1390. package/dist/plugin-sdk/web/auto-reply/monitor/process-message.d.ts +40 -0
  1391. package/dist/plugin-sdk/web/auto-reply/monitor.d.ts +5 -0
  1392. package/dist/plugin-sdk/web/auto-reply/session-snapshot.d.ts +17 -0
  1393. package/dist/plugin-sdk/web/auto-reply/types.d.ts +30 -0
  1394. package/dist/plugin-sdk/web/auto-reply/util.d.ts +2 -0
  1395. package/dist/plugin-sdk/web/auto-reply.d.ts +1 -0
  1396. package/dist/plugin-sdk/web/auto-reply.impl.d.ts +5 -0
  1397. package/dist/plugin-sdk/web/inbound/access-control.d.ts +36 -0
  1398. package/dist/plugin-sdk/web/inbound/dedupe.d.ts +2 -0
  1399. package/dist/plugin-sdk/web/inbound/extract.d.ts +13 -0
  1400. package/dist/plugin-sdk/web/inbound/media.d.ts +7 -0
  1401. package/dist/plugin-sdk/web/inbound/monitor.d.ts +30 -0
  1402. package/dist/plugin-sdk/web/inbound/send-api.d.ts +22 -0
  1403. package/dist/plugin-sdk/web/inbound/types.d.ts +41 -0
  1404. package/dist/plugin-sdk/web/inbound.d.ts +4 -0
  1405. package/dist/plugin-sdk/web/login-qr.d.ts +19 -0
  1406. package/dist/plugin-sdk/web/login.d.ts +3 -0
  1407. package/dist/plugin-sdk/web/media.d.ts +43 -0
  1408. package/dist/plugin-sdk/web/outbound.d.ts +24 -0
  1409. package/dist/plugin-sdk/web/qr-image.d.ts +4 -0
  1410. package/dist/plugin-sdk/web/reconnect.d.ts +12 -0
  1411. package/dist/plugin-sdk/web/session.d.ts +14 -0
  1412. package/dist/plugin-sdk/web/vcard.d.ts +6 -0
  1413. package/dist/plugin-sdk/whatsapp/normalize.d.ts +6 -0
  1414. package/dist/plugin-sdk/whatsapp/resolve-outbound-target.d.ts +12 -0
  1415. package/dist/plugin-sdk/wizard/prompts.d.ts +43 -0
  1416. package/dist/plugin-sdk/wizard/session.d.ts +42 -0
  1417. package/dist/plugins-BflZz0sp.js +453 -0
  1418. package/dist/plugins-allowlist-BbTQ5Z2k.js +15 -0
  1419. package/dist/plugins-allowlist-C20oaESO.js +15 -0
  1420. package/dist/plugins-cli-DV82scUw.js +798 -0
  1421. package/dist/plugins-cli-Qj1UyIZO.js +793 -0
  1422. package/dist/plugins-woGRXMzU.js +455 -0
  1423. package/dist/polls-B0CCBDeR.js +33 -0
  1424. package/dist/polls-CwwHzYBM.js +33 -0
  1425. package/dist/ports-DrruB2fK.js +370 -0
  1426. package/dist/ports-GT1yV-Tg.js +96 -0
  1427. package/dist/ports-NPqtlfp0.js +316 -0
  1428. package/dist/ports-QMI4-F9m.js +96 -0
  1429. package/dist/ports-lsof-Wteul3ju.js +27 -0
  1430. package/dist/process-scoped-map-CV9kDvfG.js +39 -0
  1431. package/dist/process-scoped-map-PEvnG75N.js +39 -0
  1432. package/dist/program-CQmIaRUI.js +244 -0
  1433. package/dist/program-context-DEU6ACnL.js +474 -0
  1434. package/dist/program-context-jqeI5alP.js +17 -0
  1435. package/dist/progress-C1kUfYL-.js +123 -0
  1436. package/dist/progress-CBkSaM6z.js +124 -0
  1437. package/dist/prompt-Bllj1dhc.js +21 -0
  1438. package/dist/prompt-Yn2yClg1.js +21 -0
  1439. package/dist/prompt-select-styled-BhTN6zE2.js +1650 -0
  1440. package/dist/prompt-select-styled-WopXnjIy.js +1647 -0
  1441. package/dist/prompt-style-DVEm3BZW.js +9 -0
  1442. package/dist/prompt-style-DjEYC_s-.js +9 -0
  1443. package/dist/provider-dispatcher-B4QMe-I6.js +659 -0
  1444. package/dist/provider-dispatcher-Bfauw6zz.js +660 -0
  1445. package/dist/provider-utils-3JTMJroG.js +79 -0
  1446. package/dist/provider-utils-FaBmofiq.js +79 -0
  1447. package/dist/proxy-DL3MD6-P.js +16 -0
  1448. package/dist/proxy-DpNv2cSV.js +16 -0
  1449. package/dist/push-apns-C0LyG-WB.js +713 -0
  1450. package/dist/push-apns-DuG95AKC.js +711 -0
  1451. package/dist/pw-ai-D9n6-Wa6.js +1906 -0
  1452. package/dist/pw-ai-T280E6Mn.js +1910 -0
  1453. package/dist/pw-ai-state-CGfLv6nV.js +11 -0
  1454. package/dist/pw-ai-state-Dynx20hr.js +11 -0
  1455. package/dist/qr-cli-DVECWTHN.js +352 -0
  1456. package/dist/qr-cli-hSLixZCe.js +347 -0
  1457. package/dist/redact-Dx1Fue21.js +191 -0
  1458. package/dist/redact-eZq1uwNK.js +191 -0
  1459. package/dist/redact-identifier-BTIWtaa-.js +15 -0
  1460. package/dist/redact-identifier-CAagcfWA.js +15 -0
  1461. package/dist/redact-snapshot-BZYLIqe-.js +2028 -0
  1462. package/dist/redact-snapshot-C6hVx_9I.js +2028 -0
  1463. package/dist/register.agent-Dmj-sgEl.js +1043 -0
  1464. package/dist/register.agent-IspcBFeD.js +286 -0
  1465. package/dist/register.configure-BqJEqyGL.js +130 -0
  1466. package/dist/register.configure-PPkU_4Ea.js +124 -0
  1467. package/dist/register.import-Bs-UkOs-.js +27 -0
  1468. package/dist/register.import-DLng8g-e.js +30 -0
  1469. package/dist/register.maintenance-BbpkJil3.js +497 -0
  1470. package/dist/register.maintenance-C5nkOQxa.js +494 -0
  1471. package/dist/register.message-C83Hi1b3.js +681 -0
  1472. package/dist/register.message-D16isu4u.js +686 -0
  1473. package/dist/register.onboard-B8EzX3wY.js +257 -0
  1474. package/dist/register.onboard-CyRbr_0V.js +262 -0
  1475. package/dist/register.setup-DWyoowAz.js +109 -0
  1476. package/dist/register.setup-Dz6GwMnu.js +114 -0
  1477. package/dist/register.status-health-sessions-CbQOfycz.js +423 -0
  1478. package/dist/register.status-health-sessions-DXIWG47y.js +669 -0
  1479. package/dist/register.subclis-DeGP5UPU.js +267 -0
  1480. package/dist/remoteclaw-root-C2HV2VeC.js +88 -0
  1481. package/dist/remoteclaw-root-DybYl8PL.js +88 -0
  1482. package/dist/render-6ahYfPwj.js +104 -0
  1483. package/dist/render-CCLsW6Lz.js +104 -0
  1484. package/dist/render-uf6PvGMV.js +104 -0
  1485. package/dist/replies-BKrzM0QI.js +136 -0
  1486. package/dist/replies-Cl2gYBVt.js +136 -0
  1487. package/dist/reply-CCu_DY64.js +13900 -0
  1488. package/dist/reply-DSKC8kyS.js +13897 -0
  1489. package/dist/reply-directives-BHJKp1Du.js +182 -0
  1490. package/dist/reply-directives-CD2WycBM.js +182 -0
  1491. package/dist/reply-payloads-D_BM1Anb.js +527 -0
  1492. package/dist/reply-prefix-DBLCYiup.js +38 -0
  1493. package/dist/reply-prefix-Q4DOJSn_.js +38 -0
  1494. package/dist/resolve-route-CBVbY0xS.js +249 -0
  1495. package/dist/resolve-route-DGEgTEif.js +249 -0
  1496. package/dist/response-prefix-template-rVZQOViK.js +136 -0
  1497. package/dist/response-prefix-template-up4REfuR.js +136 -0
  1498. package/dist/retry-BhuXOEVR.js +77 -0
  1499. package/dist/retry-DUjAzOBy.js +77 -0
  1500. package/dist/retry-DnqPAqWp.js +77 -0
  1501. package/dist/rolldown-runtime-Cbj13DAv.js +20 -0
  1502. package/dist/run-main-Um5xhxla.js +320 -0
  1503. package/dist/runner-yVJ4HB2K.js +2294 -0
  1504. package/dist/runner-z92MWZ3m.js +2294 -0
  1505. package/dist/runtime-DJNp29jv.js +94 -0
  1506. package/dist/runtime-guard-DZ_xuCc4.js +60 -0
  1507. package/dist/runtime-guard-U-ewY_QH.js +60 -0
  1508. package/dist/secret-equal-BbHdTtqY.js +11 -0
  1509. package/dist/secret-equal-CXJEZiWb.js +11 -0
  1510. package/dist/secure-random-CS2mSdTn.js +12 -0
  1511. package/dist/secure-random-Pl9rPl0l.js +44 -0
  1512. package/dist/secure-random-_dzDDlFo.js +12 -0
  1513. package/dist/security-cli-CdwbWZUj.js +484 -0
  1514. package/dist/security-cli-DP5QJpa5.js +478 -0
  1515. package/dist/send-B1_Ymjb9.js +1778 -0
  1516. package/dist/send-B84axiIa.js +29 -0
  1517. package/dist/send-BN_zYVlx.js +547 -0
  1518. package/dist/send-BqVOxAmK.js +1174 -0
  1519. package/dist/send-Bx9bUGav.js +492 -0
  1520. package/dist/send-C3pdJ6p-.js +2245 -0
  1521. package/dist/send-CBGSXjfD.js +2245 -0
  1522. package/dist/send-CGXyTF22.js +426 -0
  1523. package/dist/send-CKavrhXj.js +11 -0
  1524. package/dist/send-D08Je6DL.js +374 -0
  1525. package/dist/send-D1aYEG-k.js +332 -0
  1526. package/dist/send-DHldI3gf.js +492 -0
  1527. package/dist/send-D_DUQJ6H.js +349 -0
  1528. package/dist/send-Ds63eF4a.js +349 -0
  1529. package/dist/send-YRVDWfSs.js +547 -0
  1530. package/dist/send-xnwty9cY.js +1775 -0
  1531. package/dist/server-BQFoyCRR.js +200 -0
  1532. package/dist/server-DhXw25Jq.js +205 -0
  1533. package/dist/server-lifecycle-BjCCyD3w.js +2437 -0
  1534. package/dist/server-lifecycle-Coyr6Lda.js +2437 -0
  1535. package/dist/server-node-events-De4WZQQD.js +393 -0
  1536. package/dist/server-node-events-dXXayuqY.js +398 -0
  1537. package/dist/service-Bjqii5nW.js +670 -0
  1538. package/dist/service-fp29z5Ww.js +670 -0
  1539. package/dist/session-DBL5nHDy.js +170 -0
  1540. package/dist/session-cost-usage-DX09eTPU.js +627 -0
  1541. package/dist/session-cost-usage-yYi525j3.js +627 -0
  1542. package/dist/session-dirs-Cj5xi7zX.js +947 -0
  1543. package/dist/session-dirs-DdF6TDsE.js +947 -0
  1544. package/dist/session-key-5YLnn_qf.js +235 -0
  1545. package/dist/session-key-C2n-VILA.js +235 -0
  1546. package/dist/session-utils-CEtEq6bi.js +625 -0
  1547. package/dist/session-utils-WmlWAs1r.js +625 -0
  1548. package/dist/session-xKIW6gL2.js +170 -0
  1549. package/dist/sessions--PykPynp.js +2593 -0
  1550. package/dist/sessions-Bw4LRnSr.js +252 -0
  1551. package/dist/ssrf-Ck9HDZpv.js +183 -0
  1552. package/dist/ssrf-m7kFIobZ.js +183 -0
  1553. package/dist/stagger-BXv_apuy.js +56 -0
  1554. package/dist/stagger-MI9gd2rQ.js +56 -0
  1555. package/dist/status-BmtCS3T1.js +21 -0
  1556. package/dist/status-BrwHRn2B.js +21 -0
  1557. package/dist/status-CtzYFLLF.js +2072 -0
  1558. package/dist/status-DiN1cq2p.js +2068 -0
  1559. package/dist/status.update-C55QM2xs.js +79 -0
  1560. package/dist/status.update-CBmPXwYN.js +79 -0
  1561. package/dist/store-C3tOpizT.js +64 -0
  1562. package/dist/store-CPJXuhvQ.js +53 -0
  1563. package/dist/store-SusmIfz7.js +2595 -0
  1564. package/dist/store-v3P-OWhi.js +64 -0
  1565. package/dist/strip-inbound-meta-DjKcSFaW.js +110 -0
  1566. package/dist/strip-inbound-meta-jy3bkUab.js +110 -0
  1567. package/dist/subagent-registry-Db4Ho_2Y.js +4858 -0
  1568. package/dist/subagent-registry-Du_j0Fnt.js +4860 -0
  1569. package/dist/subsystem-BUXAJwPD.js +1079 -0
  1570. package/dist/subsystem-COd61u0P.js +1139 -0
  1571. package/dist/system-cli-DYCpLO3T.js +75 -0
  1572. package/dist/system-cli-eAk5wVbP.js +70 -0
  1573. package/dist/systemd-DSnlM3jX.js +547 -0
  1574. package/dist/systemd-TfK8GuTx.js +547 -0
  1575. package/dist/systemd-linger-Axnc1xCb.js +75 -0
  1576. package/dist/systemd-linger-_0_-RY4v.js +75 -0
  1577. package/dist/table-C1rdyYl9.js +278 -0
  1578. package/dist/table-DPTzZyhu.js +279 -0
  1579. package/dist/tables-DI5LGEr1.js +55 -0
  1580. package/dist/tables-PxcSPSO0.js +55 -0
  1581. package/dist/tables-TWiml6b1.js +55 -0
  1582. package/dist/tailnet-CEudzG0i.js +40 -0
  1583. package/dist/tailnet-PnMrjwGT.js +40 -0
  1584. package/dist/tailscale-DTATQxAG.js +230 -0
  1585. package/dist/tailscale-Dbyahx0J.js +230 -0
  1586. package/dist/target-errors-BDpPcwh5.js +26 -0
  1587. package/dist/target-errors-DdIAPcMM.js +26 -0
  1588. package/dist/targets-BMenhVHg.js +39 -0
  1589. package/dist/targets-C-2xwh9f.js +45 -0
  1590. package/dist/targets-C1NeMn2J.js +220 -0
  1591. package/dist/targets-CcTME3bp.js +46 -0
  1592. package/dist/targets-CmC5m7Ey.js +53 -0
  1593. package/dist/targets-D-qLBpTA.js +79 -0
  1594. package/dist/targets-D-u6Kyio.js +650 -0
  1595. package/dist/targets-D7OKVXMI.js +650 -0
  1596. package/dist/targets-D7PT_rdO.js +45 -0
  1597. package/dist/targets-DB4vBpIQ.js +2172 -0
  1598. package/dist/targets-DfqPGOmM.js +2173 -0
  1599. package/dist/targets-DyybKefq.js +53 -0
  1600. package/dist/targets-JCISV-hS.js +120 -0
  1601. package/dist/targets-UncQvCVs.js +79 -0
  1602. package/dist/text-format-BQ3z_OXA.js +9 -0
  1603. package/dist/text-format-oWqzVmah.js +9 -0
  1604. package/dist/tokens-B-jmvNR9.js +21 -0
  1605. package/dist/tokens-DzFOtLlW.js +21 -0
  1606. package/dist/tool-display-Br6mwaJc.js +785 -0
  1607. package/dist/tool-display-sgNwLOBj.js +785 -0
  1608. package/dist/tool-images-BNfIJ_Kj.js +263 -0
  1609. package/dist/tool-images-kloBqxqK.js +263 -0
  1610. package/dist/trash-DPi0aCCQ.js +125 -0
  1611. package/dist/trash-D_Jd_yQZ.js +125 -0
  1612. package/dist/tui-CHc0EfJO.js +3392 -0
  1613. package/dist/tui-CyHwc2uX.js +3392 -0
  1614. package/dist/tui-cli-BvwbrIYO.js +63 -0
  1615. package/dist/tui-cli-C9I18SfW.js +58 -0
  1616. package/dist/update-DxyjwCL2.js +349 -0
  1617. package/dist/update-IX7vdqA8.js +349 -0
  1618. package/dist/update-cli-CBeXUSzq.js +1373 -0
  1619. package/dist/update-cli-DkAWmUrp.js +1370 -0
  1620. package/dist/usage-BdhBT0Vz.js +57 -0
  1621. package/dist/usage-BtQcAnf6.js +57 -0
  1622. package/dist/usage-CYlQW4M2.js +5279 -0
  1623. package/dist/usage-format-C3mNLfhI.js +31 -0
  1624. package/dist/usage-format-DAaPzr_z.js +31 -0
  1625. package/dist/utils-LBKvDoPx.js +631 -0
  1626. package/dist/warning-filter.js +48 -0
  1627. package/dist/web-BUYUdnRH.js +3065 -0
  1628. package/dist/web-Dquzwqf4.js +70 -0
  1629. package/dist/web-tS8diboh.js +76 -0
  1630. package/dist/webhooks-cli-B7Vw3CMz.js +333 -0
  1631. package/dist/webhooks-cli-BpZHQlVd.js +328 -0
  1632. package/dist/whatsapp-actions-D5HXezjp.js +128 -0
  1633. package/dist/whatsapp-actions-DaA291Ya.js +122 -0
  1634. package/dist/widearea-dns-CsmBVbez.js +127 -0
  1635. package/dist/widearea-dns-DSoaA-eH.js +127 -0
  1636. package/dist/workspace-B4ZvVYT9.js +447 -0
  1637. package/dist/workspace-B8PA8oxJ.js +449 -0
  1638. package/dist/workspace-BzPeZDew.js +10 -0
  1639. package/dist/workspace-DkGLVfOl.js +10 -0
  1640. package/dist/wsl-BCnYV9O0.js +52 -0
  1641. package/dist/wsl-B_sPlzWw.js +52 -0
  1642. package/extensions/bluebubbles/README.md +45 -0
  1643. package/extensions/bluebubbles/index.ts +19 -0
  1644. package/extensions/bluebubbles/package.json +33 -0
  1645. package/extensions/bluebubbles/remoteclaw.plugin.json +9 -0
  1646. package/extensions/bluebubbles/src/account-resolve.ts +35 -0
  1647. package/extensions/bluebubbles/src/accounts.ts +90 -0
  1648. package/extensions/bluebubbles/src/actions.ts +460 -0
  1649. package/extensions/bluebubbles/src/attachments.ts +268 -0
  1650. package/extensions/bluebubbles/src/channel.ts +418 -0
  1651. package/extensions/bluebubbles/src/chat.ts +329 -0
  1652. package/extensions/bluebubbles/src/config-schema.ts +65 -0
  1653. package/extensions/bluebubbles/src/history.ts +177 -0
  1654. package/extensions/bluebubbles/src/media-send.ts +317 -0
  1655. package/extensions/bluebubbles/src/monitor-normalize.ts +825 -0
  1656. package/extensions/bluebubbles/src/monitor-processing.ts +1448 -0
  1657. package/extensions/bluebubbles/src/monitor-reply-cache.ts +185 -0
  1658. package/extensions/bluebubbles/src/monitor-shared.ts +41 -0
  1659. package/extensions/bluebubbles/src/monitor.ts +534 -0
  1660. package/extensions/bluebubbles/src/multipart.ts +32 -0
  1661. package/extensions/bluebubbles/src/onboarding.ts +340 -0
  1662. package/extensions/bluebubbles/src/probe.ts +163 -0
  1663. package/extensions/bluebubbles/src/reactions.ts +182 -0
  1664. package/extensions/bluebubbles/src/request-url.ts +12 -0
  1665. package/extensions/bluebubbles/src/runtime.ts +34 -0
  1666. package/extensions/bluebubbles/src/send-helpers.ts +53 -0
  1667. package/extensions/bluebubbles/src/send.ts +472 -0
  1668. package/extensions/bluebubbles/src/targets.ts +370 -0
  1669. package/extensions/bluebubbles/src/test-harness.ts +79 -0
  1670. package/extensions/bluebubbles/src/test-mocks.ts +11 -0
  1671. package/extensions/bluebubbles/src/types.ts +135 -0
  1672. package/extensions/device-pair/index.ts +529 -0
  1673. package/extensions/device-pair/remoteclaw.plugin.json +20 -0
  1674. package/extensions/diagnostics-otel/index.ts +15 -0
  1675. package/extensions/diagnostics-otel/package.json +24 -0
  1676. package/extensions/diagnostics-otel/remoteclaw.plugin.json +8 -0
  1677. package/extensions/diagnostics-otel/src/service.ts +682 -0
  1678. package/extensions/discord/index.ts +19 -0
  1679. package/extensions/discord/package.json +11 -0
  1680. package/extensions/discord/remoteclaw.plugin.json +9 -0
  1681. package/extensions/discord/src/channel.ts +451 -0
  1682. package/extensions/discord/src/runtime.ts +14 -0
  1683. package/extensions/discord/src/subagent-hooks.ts +152 -0
  1684. package/extensions/feishu/index.ts +63 -0
  1685. package/extensions/feishu/package.json +34 -0
  1686. package/extensions/feishu/remoteclaw.plugin.json +10 -0
  1687. package/extensions/feishu/skills/feishu-doc/SKILL.md +105 -0
  1688. package/extensions/feishu/skills/feishu-doc/references/block-types.md +103 -0
  1689. package/extensions/feishu/skills/feishu-drive/SKILL.md +97 -0
  1690. package/extensions/feishu/skills/feishu-perm/SKILL.md +119 -0
  1691. package/extensions/feishu/skills/feishu-wiki/SKILL.md +111 -0
  1692. package/extensions/feishu/src/accounts.ts +144 -0
  1693. package/extensions/feishu/src/bitable.ts +739 -0
  1694. package/extensions/feishu/src/bot.ts +1006 -0
  1695. package/extensions/feishu/src/channel.ts +359 -0
  1696. package/extensions/feishu/src/client.ts +118 -0
  1697. package/extensions/feishu/src/config-schema.ts +226 -0
  1698. package/extensions/feishu/src/dedup.ts +54 -0
  1699. package/extensions/feishu/src/directory.ts +177 -0
  1700. package/extensions/feishu/src/doc-schema.ts +47 -0
  1701. package/extensions/feishu/src/docx.ts +536 -0
  1702. package/extensions/feishu/src/drive-schema.ts +46 -0
  1703. package/extensions/feishu/src/drive.ts +227 -0
  1704. package/extensions/feishu/src/dynamic-agent.ts +131 -0
  1705. package/extensions/feishu/src/external-keys.ts +19 -0
  1706. package/extensions/feishu/src/media.ts +441 -0
  1707. package/extensions/feishu/src/mention.ts +133 -0
  1708. package/extensions/feishu/src/monitor.ts +397 -0
  1709. package/extensions/feishu/src/onboarding.ts +351 -0
  1710. package/extensions/feishu/src/outbound.ts +55 -0
  1711. package/extensions/feishu/src/perm-schema.ts +52 -0
  1712. package/extensions/feishu/src/perm.ts +173 -0
  1713. package/extensions/feishu/src/policy.ts +120 -0
  1714. package/extensions/feishu/src/probe.ts +44 -0
  1715. package/extensions/feishu/src/reactions.ts +160 -0
  1716. package/extensions/feishu/src/reply-dispatcher.ts +239 -0
  1717. package/extensions/feishu/src/runtime.ts +14 -0
  1718. package/extensions/feishu/src/send-result.ts +29 -0
  1719. package/extensions/feishu/src/send-target.ts +25 -0
  1720. package/extensions/feishu/src/send.ts +313 -0
  1721. package/extensions/feishu/src/streaming-card.ts +218 -0
  1722. package/extensions/feishu/src/targets.ts +78 -0
  1723. package/extensions/feishu/src/tools-config.ts +21 -0
  1724. package/extensions/feishu/src/types.ts +81 -0
  1725. package/extensions/feishu/src/typing.ts +80 -0
  1726. package/extensions/feishu/src/wiki-schema.ts +55 -0
  1727. package/extensions/feishu/src/wiki.ts +232 -0
  1728. package/extensions/googlechat/index.ts +19 -0
  1729. package/extensions/googlechat/node_modules/.bin/remoteclaw +21 -0
  1730. package/extensions/googlechat/package.json +37 -0
  1731. package/extensions/googlechat/remoteclaw.plugin.json +9 -0
  1732. package/extensions/googlechat/src/accounts.ts +147 -0
  1733. package/extensions/googlechat/src/actions.ts +176 -0
  1734. package/extensions/googlechat/src/api.ts +282 -0
  1735. package/extensions/googlechat/src/auth.ts +137 -0
  1736. package/extensions/googlechat/src/channel.ts +576 -0
  1737. package/extensions/googlechat/src/monitor.ts +965 -0
  1738. package/extensions/googlechat/src/onboarding.ts +270 -0
  1739. package/extensions/googlechat/src/runtime.ts +14 -0
  1740. package/extensions/googlechat/src/targets.ts +65 -0
  1741. package/extensions/googlechat/src/types.config.ts +3 -0
  1742. package/extensions/googlechat/src/types.ts +73 -0
  1743. package/extensions/imessage/index.ts +17 -0
  1744. package/extensions/imessage/package.json +12 -0
  1745. package/extensions/imessage/remoteclaw.plugin.json +9 -0
  1746. package/extensions/imessage/src/channel.ts +304 -0
  1747. package/extensions/imessage/src/runtime.ts +14 -0
  1748. package/extensions/irc/index.ts +17 -0
  1749. package/extensions/irc/package.json +11 -0
  1750. package/extensions/irc/remoteclaw.plugin.json +9 -0
  1751. package/extensions/irc/src/accounts.ts +268 -0
  1752. package/extensions/irc/src/channel.ts +364 -0
  1753. package/extensions/irc/src/client.ts +439 -0
  1754. package/extensions/irc/src/config-schema.ts +91 -0
  1755. package/extensions/irc/src/connect-options.ts +30 -0
  1756. package/extensions/irc/src/control-chars.ts +22 -0
  1757. package/extensions/irc/src/inbound.ts +372 -0
  1758. package/extensions/irc/src/monitor.ts +146 -0
  1759. package/extensions/irc/src/normalize.ts +123 -0
  1760. package/extensions/irc/src/onboarding.ts +479 -0
  1761. package/extensions/irc/src/policy.ts +166 -0
  1762. package/extensions/irc/src/probe.ts +53 -0
  1763. package/extensions/irc/src/protocol.ts +169 -0
  1764. package/extensions/irc/src/runtime.ts +14 -0
  1765. package/extensions/irc/src/send.ts +88 -0
  1766. package/extensions/irc/src/types.ts +99 -0
  1767. package/extensions/line/index.ts +19 -0
  1768. package/extensions/line/package.json +27 -0
  1769. package/extensions/line/remoteclaw.plugin.json +9 -0
  1770. package/extensions/line/src/card-command.ts +344 -0
  1771. package/extensions/line/src/channel.ts +797 -0
  1772. package/extensions/line/src/runtime.ts +14 -0
  1773. package/extensions/matrix/CHANGELOG.md +32 -0
  1774. package/extensions/matrix/index.ts +17 -0
  1775. package/extensions/matrix/node_modules/.bin/markdown-it +21 -0
  1776. package/extensions/matrix/package.json +33 -0
  1777. package/extensions/matrix/remoteclaw.plugin.json +9 -0
  1778. package/extensions/matrix/src/actions.ts +195 -0
  1779. package/extensions/matrix/src/channel.ts +486 -0
  1780. package/extensions/matrix/src/config-schema.ts +63 -0
  1781. package/extensions/matrix/src/directory-live.ts +208 -0
  1782. package/extensions/matrix/src/group-mentions.ts +52 -0
  1783. package/extensions/matrix/src/matrix/accounts.ts +137 -0
  1784. package/extensions/matrix/src/matrix/actions/client.ts +47 -0
  1785. package/extensions/matrix/src/matrix/actions/limits.ts +6 -0
  1786. package/extensions/matrix/src/matrix/actions/messages.ts +126 -0
  1787. package/extensions/matrix/src/matrix/actions/pins.ts +84 -0
  1788. package/extensions/matrix/src/matrix/actions/reactions.ts +102 -0
  1789. package/extensions/matrix/src/matrix/actions/room.ts +85 -0
  1790. package/extensions/matrix/src/matrix/actions/summary.ts +75 -0
  1791. package/extensions/matrix/src/matrix/actions/types.ts +85 -0
  1792. package/extensions/matrix/src/matrix/actions.ts +15 -0
  1793. package/extensions/matrix/src/matrix/active-client.ts +32 -0
  1794. package/extensions/matrix/src/matrix/client/config.ts +219 -0
  1795. package/extensions/matrix/src/matrix/client/create-client.ts +123 -0
  1796. package/extensions/matrix/src/matrix/client/logging.ts +36 -0
  1797. package/extensions/matrix/src/matrix/client/runtime.ts +4 -0
  1798. package/extensions/matrix/src/matrix/client/shared.ts +201 -0
  1799. package/extensions/matrix/src/matrix/client/storage.ts +131 -0
  1800. package/extensions/matrix/src/matrix/client/types.ts +34 -0
  1801. package/extensions/matrix/src/matrix/client-bootstrap.ts +39 -0
  1802. package/extensions/matrix/src/matrix/client.ts +14 -0
  1803. package/extensions/matrix/src/matrix/credentials.ts +125 -0
  1804. package/extensions/matrix/src/matrix/deps.ts +60 -0
  1805. package/extensions/matrix/src/matrix/format.ts +22 -0
  1806. package/extensions/matrix/src/matrix/index.ts +11 -0
  1807. package/extensions/matrix/src/matrix/monitor/allowlist.ts +103 -0
  1808. package/extensions/matrix/src/matrix/monitor/auto-join.ts +71 -0
  1809. package/extensions/matrix/src/matrix/monitor/direct.ts +104 -0
  1810. package/extensions/matrix/src/matrix/monitor/events.ts +148 -0
  1811. package/extensions/matrix/src/matrix/monitor/handler.ts +688 -0
  1812. package/extensions/matrix/src/matrix/monitor/index.ts +358 -0
  1813. package/extensions/matrix/src/matrix/monitor/location.ts +100 -0
  1814. package/extensions/matrix/src/matrix/monitor/media.ts +118 -0
  1815. package/extensions/matrix/src/matrix/monitor/mentions.ts +62 -0
  1816. package/extensions/matrix/src/matrix/monitor/replies.ts +124 -0
  1817. package/extensions/matrix/src/matrix/monitor/room-info.ts +55 -0
  1818. package/extensions/matrix/src/matrix/monitor/rooms.ts +47 -0
  1819. package/extensions/matrix/src/matrix/monitor/threads.ts +68 -0
  1820. package/extensions/matrix/src/matrix/monitor/types.ts +39 -0
  1821. package/extensions/matrix/src/matrix/poll-types.ts +167 -0
  1822. package/extensions/matrix/src/matrix/probe.ts +69 -0
  1823. package/extensions/matrix/src/matrix/send/client.ts +97 -0
  1824. package/extensions/matrix/src/matrix/send/formatting.ts +93 -0
  1825. package/extensions/matrix/src/matrix/send/media.ts +230 -0
  1826. package/extensions/matrix/src/matrix/send/targets.ts +150 -0
  1827. package/extensions/matrix/src/matrix/send/types.ts +109 -0
  1828. package/extensions/matrix/src/matrix/send-queue.ts +44 -0
  1829. package/extensions/matrix/src/matrix/send.ts +265 -0
  1830. package/extensions/matrix/src/onboarding.ts +446 -0
  1831. package/extensions/matrix/src/outbound.ts +55 -0
  1832. package/extensions/matrix/src/resolve-targets.ts +126 -0
  1833. package/extensions/matrix/src/runtime.ts +14 -0
  1834. package/extensions/matrix/src/tool-actions.ts +164 -0
  1835. package/extensions/matrix/src/types.ts +116 -0
  1836. package/extensions/mattermost/index.ts +17 -0
  1837. package/extensions/mattermost/package.json +25 -0
  1838. package/extensions/mattermost/remoteclaw.plugin.json +9 -0
  1839. package/extensions/mattermost/src/channel.ts +439 -0
  1840. package/extensions/mattermost/src/config-schema.ts +62 -0
  1841. package/extensions/mattermost/src/group-mentions.ts +15 -0
  1842. package/extensions/mattermost/src/mattermost/accounts.ts +128 -0
  1843. package/extensions/mattermost/src/mattermost/client.ts +230 -0
  1844. package/extensions/mattermost/src/mattermost/index.ts +9 -0
  1845. package/extensions/mattermost/src/mattermost/monitor-helpers.ts +72 -0
  1846. package/extensions/mattermost/src/mattermost/monitor-onchar.ts +25 -0
  1847. package/extensions/mattermost/src/mattermost/monitor-websocket.ts +221 -0
  1848. package/extensions/mattermost/src/mattermost/monitor.ts +1061 -0
  1849. package/extensions/mattermost/src/mattermost/probe.ts +61 -0
  1850. package/extensions/mattermost/src/mattermost/reactions.test-helpers.ts +83 -0
  1851. package/extensions/mattermost/src/mattermost/reactions.ts +124 -0
  1852. package/extensions/mattermost/src/mattermost/reconnect.ts +103 -0
  1853. package/extensions/mattermost/src/mattermost/send.ts +231 -0
  1854. package/extensions/mattermost/src/normalize.ts +46 -0
  1855. package/extensions/mattermost/src/onboarding-helpers.ts +1 -0
  1856. package/extensions/mattermost/src/onboarding.ts +182 -0
  1857. package/extensions/mattermost/src/runtime.ts +14 -0
  1858. package/extensions/mattermost/src/types.ts +62 -0
  1859. package/extensions/msteams/CHANGELOG.md +35 -0
  1860. package/extensions/msteams/index.ts +17 -0
  1861. package/extensions/msteams/package.json +32 -0
  1862. package/extensions/msteams/remoteclaw.plugin.json +9 -0
  1863. package/extensions/msteams/src/attachments/download.ts +282 -0
  1864. package/extensions/msteams/src/attachments/graph.ts +354 -0
  1865. package/extensions/msteams/src/attachments/html.ts +90 -0
  1866. package/extensions/msteams/src/attachments/payload.ts +14 -0
  1867. package/extensions/msteams/src/attachments/remote-media.ts +42 -0
  1868. package/extensions/msteams/src/attachments/shared.ts +404 -0
  1869. package/extensions/msteams/src/attachments/types.ts +37 -0
  1870. package/extensions/msteams/src/attachments.ts +18 -0
  1871. package/extensions/msteams/src/channel.ts +464 -0
  1872. package/extensions/msteams/src/conversation-store-fs.ts +165 -0
  1873. package/extensions/msteams/src/conversation-store-memory.ts +47 -0
  1874. package/extensions/msteams/src/conversation-store.ts +41 -0
  1875. package/extensions/msteams/src/directory-live.ts +108 -0
  1876. package/extensions/msteams/src/errors.ts +190 -0
  1877. package/extensions/msteams/src/file-consent-helpers.ts +73 -0
  1878. package/extensions/msteams/src/file-consent.ts +126 -0
  1879. package/extensions/msteams/src/file-lock.ts +1 -0
  1880. package/extensions/msteams/src/graph-chat.ts +53 -0
  1881. package/extensions/msteams/src/graph-upload.ts +452 -0
  1882. package/extensions/msteams/src/graph-users.ts +29 -0
  1883. package/extensions/msteams/src/graph.ts +81 -0
  1884. package/extensions/msteams/src/inbound.ts +48 -0
  1885. package/extensions/msteams/src/index.ts +4 -0
  1886. package/extensions/msteams/src/media-helpers.ts +105 -0
  1887. package/extensions/msteams/src/mentions.ts +114 -0
  1888. package/extensions/msteams/src/messenger.ts +484 -0
  1889. package/extensions/msteams/src/monitor-handler/inbound-media.ts +128 -0
  1890. package/extensions/msteams/src/monitor-handler/message-handler.ts +661 -0
  1891. package/extensions/msteams/src/monitor-handler.ts +162 -0
  1892. package/extensions/msteams/src/monitor-types.ts +5 -0
  1893. package/extensions/msteams/src/monitor.ts +305 -0
  1894. package/extensions/msteams/src/onboarding.ts +406 -0
  1895. package/extensions/msteams/src/outbound.ts +46 -0
  1896. package/extensions/msteams/src/pending-uploads.ts +89 -0
  1897. package/extensions/msteams/src/policy.ts +259 -0
  1898. package/extensions/msteams/src/polls-store-memory.ts +32 -0
  1899. package/extensions/msteams/src/polls.ts +315 -0
  1900. package/extensions/msteams/src/probe.ts +94 -0
  1901. package/extensions/msteams/src/reply-dispatcher.ts +132 -0
  1902. package/extensions/msteams/src/resolve-allowlist.ts +198 -0
  1903. package/extensions/msteams/src/runtime.ts +14 -0
  1904. package/extensions/msteams/src/sdk-types.ts +19 -0
  1905. package/extensions/msteams/src/sdk.ts +33 -0
  1906. package/extensions/msteams/src/send-context.ts +164 -0
  1907. package/extensions/msteams/src/send.ts +530 -0
  1908. package/extensions/msteams/src/sent-message-cache.ts +44 -0
  1909. package/extensions/msteams/src/storage.ts +25 -0
  1910. package/extensions/msteams/src/store-fs.ts +44 -0
  1911. package/extensions/msteams/src/test-runtime.ts +16 -0
  1912. package/extensions/msteams/src/token-response.ts +11 -0
  1913. package/extensions/msteams/src/token.ts +19 -0
  1914. package/extensions/nextcloud-talk/index.ts +17 -0
  1915. package/extensions/nextcloud-talk/package.json +30 -0
  1916. package/extensions/nextcloud-talk/remoteclaw.plugin.json +9 -0
  1917. package/extensions/nextcloud-talk/src/accounts.ts +170 -0
  1918. package/extensions/nextcloud-talk/src/channel.ts +416 -0
  1919. package/extensions/nextcloud-talk/src/config-schema.ts +72 -0
  1920. package/extensions/nextcloud-talk/src/format.ts +79 -0
  1921. package/extensions/nextcloud-talk/src/inbound.ts +343 -0
  1922. package/extensions/nextcloud-talk/src/monitor.ts +275 -0
  1923. package/extensions/nextcloud-talk/src/normalize.ts +39 -0
  1924. package/extensions/nextcloud-talk/src/onboarding.ts +349 -0
  1925. package/extensions/nextcloud-talk/src/policy.ts +180 -0
  1926. package/extensions/nextcloud-talk/src/room-info.ts +125 -0
  1927. package/extensions/nextcloud-talk/src/runtime.ts +14 -0
  1928. package/extensions/nextcloud-talk/src/send.ts +215 -0
  1929. package/extensions/nextcloud-talk/src/signature.ts +72 -0
  1930. package/extensions/nextcloud-talk/src/types.ts +185 -0
  1931. package/extensions/nostr/CHANGELOG.md +44 -0
  1932. package/extensions/nostr/README.md +136 -0
  1933. package/extensions/nostr/index.ts +68 -0
  1934. package/extensions/nostr/package.json +30 -0
  1935. package/extensions/nostr/remoteclaw.plugin.json +9 -0
  1936. package/extensions/nostr/src/channel.ts +345 -0
  1937. package/extensions/nostr/src/config-schema.ts +90 -0
  1938. package/extensions/nostr/src/metrics.ts +458 -0
  1939. package/extensions/nostr/src/nostr-bus.ts +719 -0
  1940. package/extensions/nostr/src/nostr-profile-http.ts +519 -0
  1941. package/extensions/nostr/src/nostr-profile-import.ts +262 -0
  1942. package/extensions/nostr/src/nostr-profile.ts +277 -0
  1943. package/extensions/nostr/src/nostr-state-store.ts +226 -0
  1944. package/extensions/nostr/src/runtime.ts +14 -0
  1945. package/extensions/nostr/src/seen-tracker.ts +289 -0
  1946. package/extensions/nostr/src/types.ts +101 -0
  1947. package/extensions/phone-control/index.ts +421 -0
  1948. package/extensions/phone-control/remoteclaw.plugin.json +10 -0
  1949. package/extensions/shared/resolve-target-test-helpers.ts +66 -0
  1950. package/extensions/signal/index.ts +17 -0
  1951. package/extensions/signal/package.json +12 -0
  1952. package/extensions/signal/remoteclaw.plugin.json +9 -0
  1953. package/extensions/signal/src/channel.ts +299 -0
  1954. package/extensions/signal/src/runtime.ts +14 -0
  1955. package/extensions/slack/index.ts +17 -0
  1956. package/extensions/slack/package.json +12 -0
  1957. package/extensions/slack/remoteclaw.plugin.json +9 -0
  1958. package/extensions/slack/src/channel.ts +421 -0
  1959. package/extensions/slack/src/runtime.ts +14 -0
  1960. package/extensions/synology-chat/index.ts +17 -0
  1961. package/extensions/synology-chat/package.json +28 -0
  1962. package/extensions/synology-chat/remoteclaw.plugin.json +9 -0
  1963. package/extensions/synology-chat/src/accounts.ts +87 -0
  1964. package/extensions/synology-chat/src/channel.ts +347 -0
  1965. package/extensions/synology-chat/src/client.ts +142 -0
  1966. package/extensions/synology-chat/src/runtime.ts +20 -0
  1967. package/extensions/synology-chat/src/security.ts +140 -0
  1968. package/extensions/synology-chat/src/types.ts +60 -0
  1969. package/extensions/synology-chat/src/webhook-handler.ts +221 -0
  1970. package/extensions/talk-voice/index.ts +150 -0
  1971. package/extensions/talk-voice/remoteclaw.plugin.json +10 -0
  1972. package/extensions/telegram/index.ts +17 -0
  1973. package/extensions/telegram/package.json +12 -0
  1974. package/extensions/telegram/remoteclaw.plugin.json +9 -0
  1975. package/extensions/telegram/src/channel.ts +569 -0
  1976. package/extensions/telegram/src/runtime.ts +14 -0
  1977. package/extensions/test-utils/runtime-env.ts +12 -0
  1978. package/extensions/thread-ownership/index.ts +133 -0
  1979. package/extensions/thread-ownership/remoteclaw.plugin.json +28 -0
  1980. package/extensions/tlon/README.md +5 -0
  1981. package/extensions/tlon/index.ts +17 -0
  1982. package/extensions/tlon/package.json +29 -0
  1983. package/extensions/tlon/remoteclaw.plugin.json +9 -0
  1984. package/extensions/tlon/src/account-fields.ts +25 -0
  1985. package/extensions/tlon/src/channel.ts +384 -0
  1986. package/extensions/tlon/src/config-schema.ts +41 -0
  1987. package/extensions/tlon/src/monitor/discovery.ts +78 -0
  1988. package/extensions/tlon/src/monitor/history.ts +92 -0
  1989. package/extensions/tlon/src/monitor/index.ts +596 -0
  1990. package/extensions/tlon/src/monitor/processed-messages.ts +33 -0
  1991. package/extensions/tlon/src/monitor/utils.ts +106 -0
  1992. package/extensions/tlon/src/onboarding.ts +229 -0
  1993. package/extensions/tlon/src/runtime.ts +14 -0
  1994. package/extensions/tlon/src/targets.ts +89 -0
  1995. package/extensions/tlon/src/types.ts +99 -0
  1996. package/extensions/tlon/src/urbit/auth.ts +48 -0
  1997. package/extensions/tlon/src/urbit/base-url.ts +57 -0
  1998. package/extensions/tlon/src/urbit/channel-client.ts +158 -0
  1999. package/extensions/tlon/src/urbit/channel-ops.ts +164 -0
  2000. package/extensions/tlon/src/urbit/context.ts +47 -0
  2001. package/extensions/tlon/src/urbit/errors.ts +51 -0
  2002. package/extensions/tlon/src/urbit/fetch.ts +39 -0
  2003. package/extensions/tlon/src/urbit/send.ts +131 -0
  2004. package/extensions/tlon/src/urbit/sse-client.ts +431 -0
  2005. package/extensions/twitch/CHANGELOG.md +39 -0
  2006. package/extensions/twitch/README.md +89 -0
  2007. package/extensions/twitch/index.ts +20 -0
  2008. package/extensions/twitch/package.json +17 -0
  2009. package/extensions/twitch/remoteclaw.plugin.json +9 -0
  2010. package/extensions/twitch/src/access-control.ts +166 -0
  2011. package/extensions/twitch/src/actions.ts +174 -0
  2012. package/extensions/twitch/src/client-manager-registry.ts +115 -0
  2013. package/extensions/twitch/src/config-schema.ts +84 -0
  2014. package/extensions/twitch/src/config.ts +116 -0
  2015. package/extensions/twitch/src/monitor.ts +273 -0
  2016. package/extensions/twitch/src/onboarding.ts +417 -0
  2017. package/extensions/twitch/src/outbound.ts +187 -0
  2018. package/extensions/twitch/src/plugin.ts +274 -0
  2019. package/extensions/twitch/src/probe.ts +119 -0
  2020. package/extensions/twitch/src/resolver.ts +137 -0
  2021. package/extensions/twitch/src/runtime.ts +14 -0
  2022. package/extensions/twitch/src/send.ts +136 -0
  2023. package/extensions/twitch/src/status.ts +179 -0
  2024. package/extensions/twitch/src/test-fixtures.ts +30 -0
  2025. package/extensions/twitch/src/token.ts +94 -0
  2026. package/extensions/twitch/src/twitch-client.ts +277 -0
  2027. package/extensions/twitch/src/types.ts +141 -0
  2028. package/extensions/twitch/src/utils/markdown.ts +98 -0
  2029. package/extensions/twitch/src/utils/twitch.ts +80 -0
  2030. package/extensions/voice-call/CHANGELOG.md +49 -0
  2031. package/extensions/voice-call/README.md +181 -0
  2032. package/extensions/voice-call/index.ts +512 -0
  2033. package/extensions/voice-call/package.json +16 -0
  2034. package/extensions/voice-call/remoteclaw.plugin.json +559 -0
  2035. package/extensions/voice-call/src/allowlist.ts +19 -0
  2036. package/extensions/voice-call/src/cli.ts +380 -0
  2037. package/extensions/voice-call/src/config.ts +477 -0
  2038. package/extensions/voice-call/src/core-bridge.ts +170 -0
  2039. package/extensions/voice-call/src/manager/context.ts +41 -0
  2040. package/extensions/voice-call/src/manager/events.ts +242 -0
  2041. package/extensions/voice-call/src/manager/lookup.ts +35 -0
  2042. package/extensions/voice-call/src/manager/outbound.ts +380 -0
  2043. package/extensions/voice-call/src/manager/state.ts +48 -0
  2044. package/extensions/voice-call/src/manager/store.ts +94 -0
  2045. package/extensions/voice-call/src/manager/timers.ts +112 -0
  2046. package/extensions/voice-call/src/manager/twiml.ts +9 -0
  2047. package/extensions/voice-call/src/manager.ts +209 -0
  2048. package/extensions/voice-call/src/media-stream.ts +527 -0
  2049. package/extensions/voice-call/src/providers/base.ts +67 -0
  2050. package/extensions/voice-call/src/providers/index.ts +10 -0
  2051. package/extensions/voice-call/src/providers/mock.ts +165 -0
  2052. package/extensions/voice-call/src/providers/plivo.ts +560 -0
  2053. package/extensions/voice-call/src/providers/stt-openai-realtime.ts +311 -0
  2054. package/extensions/voice-call/src/providers/telnyx.ts +318 -0
  2055. package/extensions/voice-call/src/providers/tts-openai.ts +259 -0
  2056. package/extensions/voice-call/src/providers/twilio/api.ts +42 -0
  2057. package/extensions/voice-call/src/providers/twilio/webhook.ts +33 -0
  2058. package/extensions/voice-call/src/providers/twilio.ts +688 -0
  2059. package/extensions/voice-call/src/response-generator.ts +174 -0
  2060. package/extensions/voice-call/src/runtime.ts +217 -0
  2061. package/extensions/voice-call/src/telephony-audio.ts +90 -0
  2062. package/extensions/voice-call/src/telephony-tts.ts +106 -0
  2063. package/extensions/voice-call/src/tunnel.ts +314 -0
  2064. package/extensions/voice-call/src/types.ts +280 -0
  2065. package/extensions/voice-call/src/utils.ts +14 -0
  2066. package/extensions/voice-call/src/voice-mapping.ts +67 -0
  2067. package/extensions/voice-call/src/webhook-security.ts +880 -0
  2068. package/extensions/voice-call/src/webhook.ts +556 -0
  2069. package/extensions/whatsapp/index.ts +17 -0
  2070. package/extensions/whatsapp/package.json +12 -0
  2071. package/extensions/whatsapp/remoteclaw.plugin.json +9 -0
  2072. package/extensions/whatsapp/src/channel.ts +459 -0
  2073. package/extensions/whatsapp/src/runtime.ts +14 -0
  2074. package/extensions/zalo/CHANGELOG.md +29 -0
  2075. package/extensions/zalo/README.md +50 -0
  2076. package/extensions/zalo/index.ts +19 -0
  2077. package/extensions/zalo/package.json +32 -0
  2078. package/extensions/zalo/remoteclaw.plugin.json +9 -0
  2079. package/extensions/zalo/src/accounts.ts +82 -0
  2080. package/extensions/zalo/src/actions.ts +56 -0
  2081. package/extensions/zalo/src/api.ts +208 -0
  2082. package/extensions/zalo/src/channel.ts +398 -0
  2083. package/extensions/zalo/src/config-schema.ts +27 -0
  2084. package/extensions/zalo/src/group-access.ts +48 -0
  2085. package/extensions/zalo/src/monitor.ts +675 -0
  2086. package/extensions/zalo/src/monitor.webhook.ts +219 -0
  2087. package/extensions/zalo/src/onboarding.ts +398 -0
  2088. package/extensions/zalo/src/probe.ts +45 -0
  2089. package/extensions/zalo/src/proxy.ts +24 -0
  2090. package/extensions/zalo/src/runtime.ts +14 -0
  2091. package/extensions/zalo/src/send.ts +124 -0
  2092. package/extensions/zalo/src/status-issues.ts +53 -0
  2093. package/extensions/zalo/src/token.ts +62 -0
  2094. package/extensions/zalo/src/types.ts +48 -0
  2095. package/extensions/zalouser/CHANGELOG.md +31 -0
  2096. package/extensions/zalouser/README.md +225 -0
  2097. package/extensions/zalouser/index.ts +31 -0
  2098. package/extensions/zalouser/package.json +32 -0
  2099. package/extensions/zalouser/remoteclaw.plugin.json +9 -0
  2100. package/extensions/zalouser/src/accounts.ts +138 -0
  2101. package/extensions/zalouser/src/channel.ts +652 -0
  2102. package/extensions/zalouser/src/config-schema.ts +28 -0
  2103. package/extensions/zalouser/src/monitor.ts +619 -0
  2104. package/extensions/zalouser/src/onboarding.ts +428 -0
  2105. package/extensions/zalouser/src/probe.ts +27 -0
  2106. package/extensions/zalouser/src/runtime.ts +14 -0
  2107. package/extensions/zalouser/src/send.ts +141 -0
  2108. package/extensions/zalouser/src/status-issues.ts +89 -0
  2109. package/extensions/zalouser/src/tool.ts +166 -0
  2110. package/extensions/zalouser/src/types.ts +105 -0
  2111. package/extensions/zalouser/src/zca.ts +198 -0
  2112. package/package.json +251 -15
  2113. package/remoteclaw.mjs +56 -0
  2114. package/index.js +0 -4
@@ -0,0 +1,2245 @@
1
+ import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
2
+ import { Z as resolvePreferredRemoteClawTmpDir } from "./utils-LBKvDoPx.js";
3
+ import { r as resolveDiscordTarget, t as parseDiscordTarget } from "./targets-D-u6Kyio.js";
4
+ import { i as loadConfig } from "./config-D5XU45KD.js";
5
+ import { l as maxBytesForKind, n as extensionForMime } from "./mime-BS3jhcZE.js";
6
+ import { C as resolveDiscordAccount, w as normalizeDiscordToken } from "./plugins-woGRXMzU.js";
7
+ import { n as recordChannelActivity, r as createDiscordRetryRunner } from "./channel-activity-BaCNOZpP.js";
8
+ import { n as normalizePollInput, t as normalizePollDurationHours } from "./polls-B0CCBDeR.js";
9
+ import { a as loadWebMediaRaw, i as loadWebMedia } from "./ir-BpaAMTfW.js";
10
+ import { c as resolveChunkMode, i as chunkMarkdownTextWithMode } from "./chunk-D0Y_w4oX.js";
11
+ import { n as resolveMarkdownTableMode } from "./markdown-tables-CrmghPAr.js";
12
+ import { t as convertMarkdownTables } from "./tables-TWiml6b1.js";
13
+ import path from "node:path";
14
+ import { promisify } from "node:util";
15
+ import fs from "node:fs/promises";
16
+ import crypto from "node:crypto";
17
+ import { execFile } from "node:child_process";
18
+ import { ButtonStyle, ChannelType, MessageFlags, PermissionFlagsBits, Routes, TextInputStyle } from "discord-api-types/v10";
19
+ import { Button, ChannelSelectMenu, CheckboxGroup, Container, Embed, File, Label, LinkButton, MediaGallery, MentionableSelectMenu, Modal, RadioGroup, RequestClient, RoleSelectMenu, Row, Section, Separator, StringSelectMenu, TextDisplay, TextInput, Thumbnail, UserSelectMenu, parseCustomId, serializePayload } from "@buape/carbon";
20
+ import { PollLayoutType } from "discord-api-types/payloads/v10";
21
+
22
+ //#region src/discord/client.ts
23
+ function resolveToken(params) {
24
+ const explicit = normalizeDiscordToken(params.explicit);
25
+ if (explicit) return explicit;
26
+ const fallback = normalizeDiscordToken(params.fallbackToken);
27
+ if (!fallback) throw new Error(`Discord bot token missing for account "${params.accountId}" (set discord.accounts.${params.accountId}.token or DISCORD_BOT_TOKEN for default).`);
28
+ return fallback;
29
+ }
30
+ function resolveRest(token, rest) {
31
+ return rest ?? new RequestClient(token);
32
+ }
33
+ function createDiscordRestClient(opts, cfg = loadConfig()) {
34
+ const account = resolveDiscordAccount({
35
+ cfg,
36
+ accountId: opts.accountId
37
+ });
38
+ const token = resolveToken({
39
+ explicit: opts.token,
40
+ accountId: account.accountId,
41
+ fallbackToken: account.token
42
+ });
43
+ return {
44
+ token,
45
+ rest: resolveRest(token, opts.rest),
46
+ account
47
+ };
48
+ }
49
+ function createDiscordClient(opts, cfg = loadConfig()) {
50
+ const { token, rest, account } = createDiscordRestClient(opts, cfg);
51
+ return {
52
+ token,
53
+ rest,
54
+ request: createDiscordRetryRunner({
55
+ retry: opts.retry,
56
+ configRetry: account.config.retry,
57
+ verbose: opts.verbose
58
+ })
59
+ };
60
+ }
61
+ function resolveDiscordRest(opts) {
62
+ return createDiscordRestClient(opts).rest;
63
+ }
64
+
65
+ //#endregion
66
+ //#region src/discord/chunk.ts
67
+ const DEFAULT_MAX_CHARS = 2e3;
68
+ const DEFAULT_MAX_LINES = 17;
69
+ const FENCE_RE = /^( {0,3})(`{3,}|~{3,})(.*)$/;
70
+ function countLines(text) {
71
+ if (!text) return 0;
72
+ return text.split("\n").length;
73
+ }
74
+ function parseFenceLine(line) {
75
+ const match = line.match(FENCE_RE);
76
+ if (!match) return null;
77
+ const indent = match[1] ?? "";
78
+ const marker = match[2] ?? "";
79
+ return {
80
+ indent,
81
+ markerChar: marker[0] ?? "`",
82
+ markerLen: marker.length,
83
+ openLine: line
84
+ };
85
+ }
86
+ function closeFenceLine(openFence) {
87
+ return `${openFence.indent}${openFence.markerChar.repeat(openFence.markerLen)}`;
88
+ }
89
+ function closeFenceIfNeeded(text, openFence) {
90
+ if (!openFence) return text;
91
+ const closeLine = closeFenceLine(openFence);
92
+ if (!text) return closeLine;
93
+ if (!text.endsWith("\n")) return `${text}\n${closeLine}`;
94
+ return `${text}${closeLine}`;
95
+ }
96
+ function splitLongLine(line, maxChars, opts) {
97
+ const limit = Math.max(1, Math.floor(maxChars));
98
+ if (line.length <= limit) return [line];
99
+ const out = [];
100
+ let remaining = line;
101
+ while (remaining.length > limit) {
102
+ if (opts.preserveWhitespace) {
103
+ out.push(remaining.slice(0, limit));
104
+ remaining = remaining.slice(limit);
105
+ continue;
106
+ }
107
+ const window = remaining.slice(0, limit);
108
+ let breakIdx = -1;
109
+ for (let i = window.length - 1; i >= 0; i--) if (/\s/.test(window[i])) {
110
+ breakIdx = i;
111
+ break;
112
+ }
113
+ if (breakIdx <= 0) breakIdx = limit;
114
+ out.push(remaining.slice(0, breakIdx));
115
+ remaining = remaining.slice(breakIdx);
116
+ }
117
+ if (remaining.length) out.push(remaining);
118
+ return out;
119
+ }
120
+ /**
121
+ * Chunks outbound Discord text by both character count and (soft) line count,
122
+ * while keeping fenced code blocks balanced across chunks.
123
+ */
124
+ function chunkDiscordText(text, opts = {}) {
125
+ const maxChars = Math.max(1, Math.floor(opts.maxChars ?? DEFAULT_MAX_CHARS));
126
+ const maxLines = Math.max(1, Math.floor(opts.maxLines ?? DEFAULT_MAX_LINES));
127
+ const body = text ?? "";
128
+ if (!body) return [];
129
+ if (body.length <= maxChars && countLines(body) <= maxLines) return [body];
130
+ const lines = body.split("\n");
131
+ const chunks = [];
132
+ let current = "";
133
+ let currentLines = 0;
134
+ let openFence = null;
135
+ const flush = () => {
136
+ if (!current) return;
137
+ const payload = closeFenceIfNeeded(current, openFence);
138
+ if (payload.trim().length) chunks.push(payload);
139
+ current = "";
140
+ currentLines = 0;
141
+ if (openFence) {
142
+ current = openFence.openLine;
143
+ currentLines = 1;
144
+ }
145
+ };
146
+ for (const originalLine of lines) {
147
+ const fenceInfo = parseFenceLine(originalLine);
148
+ const wasInsideFence = openFence !== null;
149
+ let nextOpenFence = openFence;
150
+ if (fenceInfo) {
151
+ if (!openFence) nextOpenFence = fenceInfo;
152
+ else if (openFence.markerChar === fenceInfo.markerChar && fenceInfo.markerLen >= openFence.markerLen) nextOpenFence = null;
153
+ }
154
+ const reserveChars = nextOpenFence ? closeFenceLine(nextOpenFence).length + 1 : 0;
155
+ const reserveLines = nextOpenFence ? 1 : 0;
156
+ const effectiveMaxChars = maxChars - reserveChars;
157
+ const effectiveMaxLines = maxLines - reserveLines;
158
+ const charLimit = effectiveMaxChars > 0 ? effectiveMaxChars : maxChars;
159
+ const lineLimit = effectiveMaxLines > 0 ? effectiveMaxLines : maxLines;
160
+ const prefixLen = current.length > 0 ? current.length + 1 : 0;
161
+ const segments = splitLongLine(originalLine, Math.max(1, charLimit - prefixLen), { preserveWhitespace: wasInsideFence });
162
+ for (let segIndex = 0; segIndex < segments.length; segIndex++) {
163
+ const segment = segments[segIndex];
164
+ const isLineContinuation = segIndex > 0;
165
+ const addition = `${isLineContinuation ? "" : current.length > 0 ? "\n" : ""}${segment}`;
166
+ const nextLen = current.length + addition.length;
167
+ const nextLines = currentLines + (isLineContinuation ? 0 : 1);
168
+ if ((nextLen > charLimit || nextLines > lineLimit) && current.length > 0) flush();
169
+ if (current.length > 0) {
170
+ current += addition;
171
+ if (!isLineContinuation) currentLines += 1;
172
+ } else {
173
+ current = segment;
174
+ currentLines = 1;
175
+ }
176
+ }
177
+ openFence = nextOpenFence;
178
+ }
179
+ if (current.length) {
180
+ const payload = closeFenceIfNeeded(current, openFence);
181
+ if (payload.trim().length) chunks.push(payload);
182
+ }
183
+ return rebalanceReasoningItalics(text, chunks);
184
+ }
185
+ function chunkDiscordTextWithMode(text, opts) {
186
+ if ((opts.chunkMode ?? "length") !== "newline") return chunkDiscordText(text, opts);
187
+ const lineChunks = chunkMarkdownTextWithMode(text, Math.max(1, Math.floor(opts.maxChars ?? DEFAULT_MAX_CHARS)), "newline");
188
+ const chunks = [];
189
+ for (const line of lineChunks) {
190
+ const nested = chunkDiscordText(line, opts);
191
+ if (!nested.length && line) {
192
+ chunks.push(line);
193
+ continue;
194
+ }
195
+ chunks.push(...nested);
196
+ }
197
+ return chunks;
198
+ }
199
+ function rebalanceReasoningItalics(source, chunks) {
200
+ if (chunks.length <= 1) return chunks;
201
+ if (!(source.startsWith("Reasoning:\n_") && source.trimEnd().endsWith("_"))) return chunks;
202
+ const adjusted = [...chunks];
203
+ for (let i = 0; i < adjusted.length; i++) {
204
+ const isLast = i === adjusted.length - 1;
205
+ const current = adjusted[i];
206
+ if (!current.trimEnd().endsWith("_")) adjusted[i] = `${current}_`;
207
+ if (isLast) break;
208
+ const next = adjusted[i + 1];
209
+ const leadingWhitespaceLen = next.length - next.trimStart().length;
210
+ const leadingWhitespace = next.slice(0, leadingWhitespaceLen);
211
+ const nextBody = next.slice(leadingWhitespaceLen);
212
+ if (!nextBody.startsWith("_")) adjusted[i + 1] = `${leadingWhitespace}_${nextBody}`;
213
+ }
214
+ return adjusted;
215
+ }
216
+
217
+ //#endregion
218
+ //#region src/discord/send.permissions.ts
219
+ const PERMISSION_ENTRIES = Object.entries(PermissionFlagsBits).filter(([, value]) => typeof value === "bigint");
220
+ const ALL_PERMISSIONS = PERMISSION_ENTRIES.reduce((acc, [, value]) => acc | value, 0n);
221
+ const ADMINISTRATOR_BIT = PermissionFlagsBits.Administrator;
222
+ function addPermissionBits(base, add) {
223
+ if (!add) return base;
224
+ return base | BigInt(add);
225
+ }
226
+ function removePermissionBits(base, deny) {
227
+ if (!deny) return base;
228
+ return base & ~BigInt(deny);
229
+ }
230
+ function bitfieldToPermissions(bitfield) {
231
+ return PERMISSION_ENTRIES.filter(([, value]) => (bitfield & value) === value).map(([name]) => name).toSorted();
232
+ }
233
+ function hasAdministrator(bitfield) {
234
+ return (bitfield & ADMINISTRATOR_BIT) === ADMINISTRATOR_BIT;
235
+ }
236
+ function hasPermissionBit(bitfield, permission) {
237
+ return (bitfield & permission) === permission;
238
+ }
239
+ function isThreadChannelType(channelType) {
240
+ return channelType === ChannelType.GuildNewsThread || channelType === ChannelType.GuildPublicThread || channelType === ChannelType.GuildPrivateThread;
241
+ }
242
+ async function fetchBotUserId(rest) {
243
+ const me = await rest.get(Routes.user("@me"));
244
+ if (!me?.id) throw new Error("Failed to resolve bot user id");
245
+ return me.id;
246
+ }
247
+ /**
248
+ * Fetch guild-level permissions for a user. This does not include channel-specific overwrites.
249
+ */
250
+ async function fetchMemberGuildPermissionsDiscord(guildId, userId, opts = {}) {
251
+ const rest = resolveDiscordRest(opts);
252
+ try {
253
+ const [guild, member] = await Promise.all([rest.get(Routes.guild(guildId)), rest.get(Routes.guildMember(guildId, userId))]);
254
+ const rolesById = new Map((guild.roles ?? []).map((role) => [role.id, role]));
255
+ const everyoneRole = rolesById.get(guildId);
256
+ let permissions = 0n;
257
+ if (everyoneRole?.permissions) permissions = addPermissionBits(permissions, everyoneRole.permissions);
258
+ for (const roleId of member.roles ?? []) {
259
+ const role = rolesById.get(roleId);
260
+ if (role?.permissions) permissions = addPermissionBits(permissions, role.permissions);
261
+ }
262
+ return permissions;
263
+ } catch {
264
+ return null;
265
+ }
266
+ }
267
+ /**
268
+ * Returns true when the user has ADMINISTRATOR or required permission bits
269
+ * matching the provided predicate.
270
+ */
271
+ async function hasGuildPermissionsDiscord(guildId, userId, requiredPermissions, check, opts = {}) {
272
+ const permissions = await fetchMemberGuildPermissionsDiscord(guildId, userId, opts);
273
+ if (permissions === null) return false;
274
+ if (hasAdministrator(permissions)) return true;
275
+ return check(permissions, requiredPermissions);
276
+ }
277
+ /**
278
+ * Returns true when the user has ADMINISTRATOR or any required permission bit.
279
+ */
280
+ async function hasAnyGuildPermissionDiscord(guildId, userId, requiredPermissions, opts = {}) {
281
+ return await hasGuildPermissionsDiscord(guildId, userId, requiredPermissions, (permissions, required) => required.some((permission) => hasPermissionBit(permissions, permission)), opts);
282
+ }
283
+ async function fetchChannelPermissionsDiscord(channelId, opts = {}) {
284
+ const rest = resolveDiscordRest(opts);
285
+ const channel = await rest.get(Routes.channel(channelId));
286
+ const channelType = "type" in channel ? channel.type : void 0;
287
+ const guildId = "guild_id" in channel ? channel.guild_id : void 0;
288
+ if (!guildId) return {
289
+ channelId,
290
+ permissions: [],
291
+ raw: "0",
292
+ isDm: true,
293
+ channelType
294
+ };
295
+ const botId = await fetchBotUserId(rest);
296
+ const [guild, member] = await Promise.all([rest.get(Routes.guild(guildId)), rest.get(Routes.guildMember(guildId, botId))]);
297
+ const rolesById = new Map((guild.roles ?? []).map((role) => [role.id, role]));
298
+ const everyoneRole = rolesById.get(guildId);
299
+ let base = 0n;
300
+ if (everyoneRole?.permissions) base = addPermissionBits(base, everyoneRole.permissions);
301
+ for (const roleId of member.roles ?? []) {
302
+ const role = rolesById.get(roleId);
303
+ if (role?.permissions) base = addPermissionBits(base, role.permissions);
304
+ }
305
+ if (hasAdministrator(base)) return {
306
+ channelId,
307
+ guildId,
308
+ permissions: bitfieldToPermissions(ALL_PERMISSIONS),
309
+ raw: ALL_PERMISSIONS.toString(),
310
+ isDm: false,
311
+ channelType
312
+ };
313
+ let permissions = base;
314
+ const overwrites = "permission_overwrites" in channel ? channel.permission_overwrites ?? [] : [];
315
+ for (const overwrite of overwrites) if (overwrite.id === guildId) {
316
+ permissions = removePermissionBits(permissions, overwrite.deny ?? "0");
317
+ permissions = addPermissionBits(permissions, overwrite.allow ?? "0");
318
+ }
319
+ for (const overwrite of overwrites) if (member.roles?.includes(overwrite.id)) {
320
+ permissions = removePermissionBits(permissions, overwrite.deny ?? "0");
321
+ permissions = addPermissionBits(permissions, overwrite.allow ?? "0");
322
+ }
323
+ for (const overwrite of overwrites) if (overwrite.id === botId) {
324
+ permissions = removePermissionBits(permissions, overwrite.deny ?? "0");
325
+ permissions = addPermissionBits(permissions, overwrite.allow ?? "0");
326
+ }
327
+ return {
328
+ channelId,
329
+ guildId,
330
+ permissions: bitfieldToPermissions(permissions),
331
+ raw: permissions.toString(),
332
+ isDm: false,
333
+ channelType
334
+ };
335
+ }
336
+
337
+ //#endregion
338
+ //#region src/discord/send.types.ts
339
+ var DiscordSendError = class extends Error {
340
+ constructor(message, opts) {
341
+ super(message);
342
+ this.name = "DiscordSendError";
343
+ if (opts) Object.assign(this, opts);
344
+ }
345
+ toString() {
346
+ return this.message;
347
+ }
348
+ };
349
+ const DISCORD_MAX_EMOJI_BYTES = 256 * 1024;
350
+ const DISCORD_MAX_STICKER_BYTES = 512 * 1024;
351
+
352
+ //#endregion
353
+ //#region src/discord/send.shared.ts
354
+ const DISCORD_TEXT_LIMIT = 2e3;
355
+ const DISCORD_MAX_STICKERS = 3;
356
+ const DISCORD_POLL_MAX_ANSWERS = 10;
357
+ const DISCORD_POLL_MAX_DURATION_HOURS = 768;
358
+ const DISCORD_MISSING_PERMISSIONS = 50013;
359
+ const DISCORD_CANNOT_DM = 50007;
360
+ function normalizeReactionEmoji(raw) {
361
+ const trimmed = raw.trim();
362
+ if (!trimmed) throw new Error("emoji required");
363
+ const customMatch = trimmed.match(/^<a?:([^:>]+):(\d+)>$/);
364
+ const identifier = customMatch ? `${customMatch[1]}:${customMatch[2]}` : trimmed.replace(/[\uFE0E\uFE0F]/g, "");
365
+ return encodeURIComponent(identifier);
366
+ }
367
+ /**
368
+ * Parse and resolve Discord recipient, including username lookup.
369
+ * This enables sending DMs by username (e.g., "john.doe") by querying
370
+ * the Discord directory to resolve usernames to user IDs.
371
+ *
372
+ * @param raw - The recipient string (username, ID, or known format)
373
+ * @param accountId - Discord account ID to use for directory lookup
374
+ * @returns Parsed DiscordRecipient with resolved user ID if applicable
375
+ */
376
+ async function parseAndResolveRecipient(raw, accountId) {
377
+ const cfg = loadConfig();
378
+ const accountInfo = resolveDiscordAccount({
379
+ cfg,
380
+ accountId
381
+ });
382
+ const trimmed = raw.trim();
383
+ const parseOptions = { ambiguousMessage: `Ambiguous Discord recipient "${trimmed}". Use "user:${trimmed}" for DMs or "channel:${trimmed}" for channel messages.` };
384
+ const resolved = await resolveDiscordTarget(raw, {
385
+ cfg,
386
+ accountId: accountInfo.accountId
387
+ }, parseOptions);
388
+ if (resolved) return {
389
+ kind: resolved.kind,
390
+ id: resolved.id
391
+ };
392
+ const parsed = parseDiscordTarget(raw, parseOptions);
393
+ if (!parsed) throw new Error("Recipient is required for Discord sends");
394
+ return {
395
+ kind: parsed.kind,
396
+ id: parsed.id
397
+ };
398
+ }
399
+ function normalizeStickerIds(raw) {
400
+ const ids = raw.map((entry) => entry.trim()).filter(Boolean);
401
+ if (ids.length === 0) throw new Error("At least one sticker id is required");
402
+ if (ids.length > DISCORD_MAX_STICKERS) throw new Error("Discord supports up to 3 stickers per message");
403
+ return ids;
404
+ }
405
+ function normalizeEmojiName(raw, label) {
406
+ const name = raw.trim();
407
+ if (!name) throw new Error(`${label} is required`);
408
+ return name;
409
+ }
410
+ function normalizeDiscordPollInput(input) {
411
+ const poll = normalizePollInput(input, { maxOptions: DISCORD_POLL_MAX_ANSWERS });
412
+ const duration = normalizePollDurationHours(poll.durationHours, {
413
+ defaultHours: 24,
414
+ maxHours: DISCORD_POLL_MAX_DURATION_HOURS
415
+ });
416
+ return {
417
+ question: { text: poll.question },
418
+ answers: poll.options.map((answer) => ({ poll_media: { text: answer } })),
419
+ duration,
420
+ allow_multiselect: poll.maxSelections > 1,
421
+ layout_type: PollLayoutType.Default
422
+ };
423
+ }
424
+ function getDiscordErrorCode(err) {
425
+ if (!err || typeof err !== "object") return;
426
+ const candidate = "code" in err && err.code !== void 0 ? err.code : "rawError" in err && err.rawError && typeof err.rawError === "object" ? err.rawError.code : void 0;
427
+ if (typeof candidate === "number") return candidate;
428
+ if (typeof candidate === "string" && /^\d+$/.test(candidate)) return Number(candidate);
429
+ }
430
+ async function buildDiscordSendError(err, ctx) {
431
+ if (err instanceof DiscordSendError) return err;
432
+ const code = getDiscordErrorCode(err);
433
+ if (code === DISCORD_CANNOT_DM) return new DiscordSendError("discord dm failed: user blocks dms or privacy settings disallow it", { kind: "dm-blocked" });
434
+ if (code !== DISCORD_MISSING_PERMISSIONS) return err;
435
+ let missing = [];
436
+ try {
437
+ const permissions = await fetchChannelPermissionsDiscord(ctx.channelId, {
438
+ rest: ctx.rest,
439
+ token: ctx.token
440
+ });
441
+ const current = new Set(permissions.permissions);
442
+ const required = ["ViewChannel", "SendMessages"];
443
+ if (isThreadChannelType(permissions.channelType)) required.push("SendMessagesInThreads");
444
+ if (ctx.hasMedia) required.push("AttachFiles");
445
+ missing = required.filter((permission) => !current.has(permission));
446
+ } catch {}
447
+ return new DiscordSendError(`${missing.length ? `missing permissions in channel ${ctx.channelId}: ${missing.join(", ")}` : `missing permissions in channel ${ctx.channelId}`}. bot might be muted or blocked by role/channel overrides`, {
448
+ kind: "missing-permissions",
449
+ channelId: ctx.channelId,
450
+ missingPermissions: missing
451
+ });
452
+ }
453
+ async function resolveChannelId(rest, recipient, request) {
454
+ if (recipient.kind === "channel") return { channelId: recipient.id };
455
+ const dmChannel = await request(() => rest.post(Routes.userChannels(), { body: { recipient_id: recipient.id } }), "dm-channel");
456
+ if (!dmChannel?.id) throw new Error("Failed to create Discord DM channel");
457
+ return {
458
+ channelId: dmChannel.id,
459
+ dm: true
460
+ };
461
+ }
462
+ async function resolveDiscordChannelType(rest, channelId) {
463
+ try {
464
+ return (await rest.get(Routes.channel(channelId)))?.type;
465
+ } catch {
466
+ return;
467
+ }
468
+ }
469
+ const SUPPRESS_NOTIFICATIONS_FLAG$1 = 4096;
470
+ function buildDiscordTextChunks(text, opts = {}) {
471
+ if (!text) return [];
472
+ const chunks = chunkDiscordTextWithMode(text, {
473
+ maxChars: opts.maxChars ?? DISCORD_TEXT_LIMIT,
474
+ maxLines: opts.maxLinesPerMessage,
475
+ chunkMode: opts.chunkMode
476
+ });
477
+ if (!chunks.length && text) chunks.push(text);
478
+ return chunks;
479
+ }
480
+ function hasV2Components(components) {
481
+ return Boolean(components?.some((component) => "isV2" in component && component.isV2));
482
+ }
483
+ function resolveDiscordSendComponents(params) {
484
+ if (!params.components || !params.isFirst) return;
485
+ return typeof params.components === "function" ? params.components(params.text) : params.components;
486
+ }
487
+ function normalizeDiscordEmbeds(embeds) {
488
+ if (!embeds?.length) return;
489
+ return embeds.map((embed) => embed instanceof Embed ? embed : new Embed(embed));
490
+ }
491
+ function resolveDiscordSendEmbeds(params) {
492
+ if (!params.embeds || !params.isFirst) return;
493
+ return normalizeDiscordEmbeds(params.embeds);
494
+ }
495
+ function buildDiscordMessagePayload(params) {
496
+ const payload = {};
497
+ const hasV2 = hasV2Components(params.components);
498
+ const trimmed = params.text.trim();
499
+ if (!hasV2 && trimmed) payload.content = params.text;
500
+ if (params.components?.length) payload.components = params.components;
501
+ if (!hasV2 && params.embeds?.length) payload.embeds = params.embeds;
502
+ if (params.flags !== void 0) payload.flags = params.flags;
503
+ if (params.files?.length) payload.files = params.files;
504
+ return payload;
505
+ }
506
+ function stripUndefinedFields(value) {
507
+ return Object.fromEntries(Object.entries(value).filter(([, entry]) => entry !== void 0));
508
+ }
509
+ function toDiscordFileBlob(data) {
510
+ if (data instanceof Blob) return data;
511
+ const arrayBuffer = new ArrayBuffer(data.byteLength);
512
+ new Uint8Array(arrayBuffer).set(data);
513
+ return new Blob([arrayBuffer]);
514
+ }
515
+ async function sendDiscordText(rest, channelId, text, replyTo, request, maxLinesPerMessage, components, embeds, chunkMode, silent) {
516
+ if (!text.trim()) throw new Error("Message must be non-empty for Discord sends");
517
+ const messageReference = replyTo ? {
518
+ message_id: replyTo,
519
+ fail_if_not_exists: false
520
+ } : void 0;
521
+ const flags = silent ? SUPPRESS_NOTIFICATIONS_FLAG$1 : void 0;
522
+ const chunks = buildDiscordTextChunks(text, {
523
+ maxLinesPerMessage,
524
+ chunkMode
525
+ });
526
+ const sendChunk = async (chunk, isFirst) => {
527
+ const body = stripUndefinedFields({
528
+ ...serializePayload(buildDiscordMessagePayload({
529
+ text: chunk,
530
+ components: resolveDiscordSendComponents({
531
+ components,
532
+ text: chunk,
533
+ isFirst
534
+ }),
535
+ embeds: resolveDiscordSendEmbeds({
536
+ embeds,
537
+ isFirst
538
+ }),
539
+ flags
540
+ })),
541
+ ...messageReference ? { message_reference: messageReference } : {}
542
+ });
543
+ return await request(() => rest.post(Routes.channelMessages(channelId), { body }), "text");
544
+ };
545
+ if (chunks.length === 1) return await sendChunk(chunks[0], true);
546
+ let last = null;
547
+ for (const [index, chunk] of chunks.entries()) last = await sendChunk(chunk, index === 0);
548
+ if (!last) throw new Error("Discord send failed (empty chunk result)");
549
+ return last;
550
+ }
551
+ async function sendDiscordMedia(rest, channelId, text, mediaUrl, mediaLocalRoots, replyTo, request, maxLinesPerMessage, components, embeds, chunkMode, silent) {
552
+ const media = await loadWebMedia(mediaUrl, { localRoots: mediaLocalRoots });
553
+ const chunks = text ? buildDiscordTextChunks(text, {
554
+ maxLinesPerMessage,
555
+ chunkMode
556
+ }) : [];
557
+ const caption = chunks[0] ?? "";
558
+ const messageReference = replyTo ? {
559
+ message_id: replyTo,
560
+ fail_if_not_exists: false
561
+ } : void 0;
562
+ const flags = silent ? SUPPRESS_NOTIFICATIONS_FLAG$1 : void 0;
563
+ const fileData = toDiscordFileBlob(media.buffer);
564
+ const payload = buildDiscordMessagePayload({
565
+ text: caption,
566
+ components: resolveDiscordSendComponents({
567
+ components,
568
+ text: caption,
569
+ isFirst: true
570
+ }),
571
+ embeds: resolveDiscordSendEmbeds({
572
+ embeds,
573
+ isFirst: true
574
+ }),
575
+ flags,
576
+ files: [{
577
+ data: fileData,
578
+ name: media.fileName ?? "upload"
579
+ }]
580
+ });
581
+ const res = await request(() => rest.post(Routes.channelMessages(channelId), { body: stripUndefinedFields({
582
+ ...serializePayload(payload),
583
+ ...messageReference ? { message_reference: messageReference } : {}
584
+ }) }), "media");
585
+ for (const chunk of chunks.slice(1)) {
586
+ if (!chunk.trim()) continue;
587
+ await sendDiscordText(rest, channelId, chunk, replyTo, request, maxLinesPerMessage, void 0, void 0, chunkMode, silent);
588
+ }
589
+ return res;
590
+ }
591
+ function buildReactionIdentifier(emoji) {
592
+ if (emoji.id && emoji.name) return `${emoji.name}:${emoji.id}`;
593
+ return emoji.name ?? "";
594
+ }
595
+ function formatReactionEmoji(emoji) {
596
+ return buildReactionIdentifier(emoji);
597
+ }
598
+
599
+ //#endregion
600
+ //#region src/discord/send.channels.ts
601
+ async function createChannelDiscord(payload, opts = {}) {
602
+ const rest = resolveDiscordRest(opts);
603
+ const body = { name: payload.name };
604
+ if (payload.type !== void 0) body.type = payload.type;
605
+ if (payload.parentId) body.parent_id = payload.parentId;
606
+ if (payload.topic) body.topic = payload.topic;
607
+ if (payload.position !== void 0) body.position = payload.position;
608
+ if (payload.nsfw !== void 0) body.nsfw = payload.nsfw;
609
+ return await rest.post(Routes.guildChannels(payload.guildId), { body });
610
+ }
611
+ async function editChannelDiscord(payload, opts = {}) {
612
+ const rest = resolveDiscordRest(opts);
613
+ const body = {};
614
+ if (payload.name !== void 0) body.name = payload.name;
615
+ if (payload.topic !== void 0) body.topic = payload.topic;
616
+ if (payload.position !== void 0) body.position = payload.position;
617
+ if (payload.parentId !== void 0) body.parent_id = payload.parentId;
618
+ if (payload.nsfw !== void 0) body.nsfw = payload.nsfw;
619
+ if (payload.rateLimitPerUser !== void 0) body.rate_limit_per_user = payload.rateLimitPerUser;
620
+ if (payload.archived !== void 0) body.archived = payload.archived;
621
+ if (payload.locked !== void 0) body.locked = payload.locked;
622
+ if (payload.autoArchiveDuration !== void 0) body.auto_archive_duration = payload.autoArchiveDuration;
623
+ if (payload.availableTags !== void 0) body.available_tags = payload.availableTags.map((t) => ({
624
+ ...t.id !== void 0 && { id: t.id },
625
+ name: t.name,
626
+ ...t.moderated !== void 0 && { moderated: t.moderated },
627
+ ...t.emoji_id !== void 0 && { emoji_id: t.emoji_id },
628
+ ...t.emoji_name !== void 0 && { emoji_name: t.emoji_name }
629
+ }));
630
+ return await rest.patch(Routes.channel(payload.channelId), { body });
631
+ }
632
+ async function deleteChannelDiscord(channelId, opts = {}) {
633
+ await resolveDiscordRest(opts).delete(Routes.channel(channelId));
634
+ return {
635
+ ok: true,
636
+ channelId
637
+ };
638
+ }
639
+ async function moveChannelDiscord(payload, opts = {}) {
640
+ const rest = resolveDiscordRest(opts);
641
+ const body = [{
642
+ id: payload.channelId,
643
+ ...payload.parentId !== void 0 && { parent_id: payload.parentId },
644
+ ...payload.position !== void 0 && { position: payload.position }
645
+ }];
646
+ await rest.patch(Routes.guildChannels(payload.guildId), { body });
647
+ return { ok: true };
648
+ }
649
+ async function setChannelPermissionDiscord(payload, opts = {}) {
650
+ const rest = resolveDiscordRest(opts);
651
+ const body = { type: payload.targetType };
652
+ if (payload.allow !== void 0) body.allow = payload.allow;
653
+ if (payload.deny !== void 0) body.deny = payload.deny;
654
+ await rest.put(`/channels/${payload.channelId}/permissions/${payload.targetId}`, { body });
655
+ return { ok: true };
656
+ }
657
+ async function removeChannelPermissionDiscord(channelId, targetId, opts = {}) {
658
+ await resolveDiscordRest(opts).delete(`/channels/${channelId}/permissions/${targetId}`);
659
+ return { ok: true };
660
+ }
661
+
662
+ //#endregion
663
+ //#region src/discord/send.emojis-stickers.ts
664
+ async function listGuildEmojisDiscord(guildId, opts = {}) {
665
+ return await resolveDiscordRest(opts).get(Routes.guildEmojis(guildId));
666
+ }
667
+ async function uploadEmojiDiscord(payload, opts = {}) {
668
+ const rest = resolveDiscordRest(opts);
669
+ const media = await loadWebMediaRaw(payload.mediaUrl, DISCORD_MAX_EMOJI_BYTES);
670
+ const contentType = media.contentType?.toLowerCase();
671
+ if (!contentType || ![
672
+ "image/png",
673
+ "image/jpeg",
674
+ "image/jpg",
675
+ "image/gif"
676
+ ].includes(contentType)) throw new Error("Discord emoji uploads require a PNG, JPG, or GIF image");
677
+ const image = `data:${contentType};base64,${media.buffer.toString("base64")}`;
678
+ const roleIds = (payload.roleIds ?? []).map((id) => id.trim()).filter(Boolean);
679
+ return await rest.post(Routes.guildEmojis(payload.guildId), { body: {
680
+ name: normalizeEmojiName(payload.name, "Emoji name"),
681
+ image,
682
+ roles: roleIds.length ? roleIds : void 0
683
+ } });
684
+ }
685
+ async function uploadStickerDiscord(payload, opts = {}) {
686
+ const rest = resolveDiscordRest(opts);
687
+ const media = await loadWebMediaRaw(payload.mediaUrl, DISCORD_MAX_STICKER_BYTES);
688
+ const contentType = media.contentType?.toLowerCase();
689
+ if (!contentType || ![
690
+ "image/png",
691
+ "image/apng",
692
+ "application/json"
693
+ ].includes(contentType)) throw new Error("Discord sticker uploads require a PNG, APNG, or Lottie JSON file");
694
+ return await rest.post(Routes.guildStickers(payload.guildId), { body: {
695
+ name: normalizeEmojiName(payload.name, "Sticker name"),
696
+ description: normalizeEmojiName(payload.description, "Sticker description"),
697
+ tags: normalizeEmojiName(payload.tags, "Sticker tags"),
698
+ files: [{
699
+ data: media.buffer,
700
+ name: media.fileName ?? "sticker",
701
+ contentType
702
+ }]
703
+ } });
704
+ }
705
+
706
+ //#endregion
707
+ //#region src/discord/send.guild.ts
708
+ async function fetchMemberInfoDiscord(guildId, userId, opts = {}) {
709
+ return await resolveDiscordRest(opts).get(Routes.guildMember(guildId, userId));
710
+ }
711
+ async function fetchRoleInfoDiscord(guildId, opts = {}) {
712
+ return await resolveDiscordRest(opts).get(Routes.guildRoles(guildId));
713
+ }
714
+ async function addRoleDiscord(payload, opts = {}) {
715
+ await resolveDiscordRest(opts).put(Routes.guildMemberRole(payload.guildId, payload.userId, payload.roleId));
716
+ return { ok: true };
717
+ }
718
+ async function removeRoleDiscord(payload, opts = {}) {
719
+ await resolveDiscordRest(opts).delete(Routes.guildMemberRole(payload.guildId, payload.userId, payload.roleId));
720
+ return { ok: true };
721
+ }
722
+ async function fetchChannelInfoDiscord(channelId, opts = {}) {
723
+ return await resolveDiscordRest(opts).get(Routes.channel(channelId));
724
+ }
725
+ async function listGuildChannelsDiscord(guildId, opts = {}) {
726
+ return await resolveDiscordRest(opts).get(Routes.guildChannels(guildId));
727
+ }
728
+ async function fetchVoiceStatusDiscord(guildId, userId, opts = {}) {
729
+ return await resolveDiscordRest(opts).get(Routes.guildVoiceState(guildId, userId));
730
+ }
731
+ async function listScheduledEventsDiscord(guildId, opts = {}) {
732
+ return await resolveDiscordRest(opts).get(Routes.guildScheduledEvents(guildId));
733
+ }
734
+ async function createScheduledEventDiscord(guildId, payload, opts = {}) {
735
+ return await resolveDiscordRest(opts).post(Routes.guildScheduledEvents(guildId), { body: payload });
736
+ }
737
+ async function timeoutMemberDiscord(payload, opts = {}) {
738
+ const rest = resolveDiscordRest(opts);
739
+ let until = payload.until;
740
+ if (!until && payload.durationMinutes) {
741
+ const ms = payload.durationMinutes * 60 * 1e3;
742
+ until = new Date(Date.now() + ms).toISOString();
743
+ }
744
+ return await rest.patch(Routes.guildMember(payload.guildId, payload.userId), {
745
+ body: { communication_disabled_until: until ?? null },
746
+ headers: payload.reason ? { "X-Audit-Log-Reason": encodeURIComponent(payload.reason) } : void 0
747
+ });
748
+ }
749
+ async function kickMemberDiscord(payload, opts = {}) {
750
+ await resolveDiscordRest(opts).delete(Routes.guildMember(payload.guildId, payload.userId), { headers: payload.reason ? { "X-Audit-Log-Reason": encodeURIComponent(payload.reason) } : void 0 });
751
+ return { ok: true };
752
+ }
753
+ async function banMemberDiscord(payload, opts = {}) {
754
+ const rest = resolveDiscordRest(opts);
755
+ const deleteMessageDays = typeof payload.deleteMessageDays === "number" && Number.isFinite(payload.deleteMessageDays) ? Math.min(Math.max(Math.floor(payload.deleteMessageDays), 0), 7) : void 0;
756
+ await rest.put(Routes.guildBan(payload.guildId, payload.userId), {
757
+ body: deleteMessageDays !== void 0 ? { delete_message_days: deleteMessageDays } : void 0,
758
+ headers: payload.reason ? { "X-Audit-Log-Reason": encodeURIComponent(payload.reason) } : void 0
759
+ });
760
+ return { ok: true };
761
+ }
762
+
763
+ //#endregion
764
+ //#region src/discord/send.messages.ts
765
+ async function readMessagesDiscord(channelId, query = {}, opts = {}) {
766
+ const rest = resolveDiscordRest(opts);
767
+ const limit = typeof query.limit === "number" && Number.isFinite(query.limit) ? Math.min(Math.max(Math.floor(query.limit), 1), 100) : void 0;
768
+ const params = {};
769
+ if (limit) params.limit = limit;
770
+ if (query.before) params.before = query.before;
771
+ if (query.after) params.after = query.after;
772
+ if (query.around) params.around = query.around;
773
+ return await rest.get(Routes.channelMessages(channelId), params);
774
+ }
775
+ async function fetchMessageDiscord(channelId, messageId, opts = {}) {
776
+ return await resolveDiscordRest(opts).get(Routes.channelMessage(channelId, messageId));
777
+ }
778
+ async function editMessageDiscord(channelId, messageId, payload, opts = {}) {
779
+ return await resolveDiscordRest(opts).patch(Routes.channelMessage(channelId, messageId), { body: { content: payload.content } });
780
+ }
781
+ async function deleteMessageDiscord(channelId, messageId, opts = {}) {
782
+ await resolveDiscordRest(opts).delete(Routes.channelMessage(channelId, messageId));
783
+ return { ok: true };
784
+ }
785
+ async function pinMessageDiscord(channelId, messageId, opts = {}) {
786
+ await resolveDiscordRest(opts).put(Routes.channelPin(channelId, messageId));
787
+ return { ok: true };
788
+ }
789
+ async function unpinMessageDiscord(channelId, messageId, opts = {}) {
790
+ await resolveDiscordRest(opts).delete(Routes.channelPin(channelId, messageId));
791
+ return { ok: true };
792
+ }
793
+ async function listPinsDiscord(channelId, opts = {}) {
794
+ return await resolveDiscordRest(opts).get(Routes.channelPins(channelId));
795
+ }
796
+ async function createThreadDiscord(channelId, payload, opts = {}) {
797
+ const rest = resolveDiscordRest(opts);
798
+ const body = { name: payload.name };
799
+ if (payload.autoArchiveMinutes) body.auto_archive_duration = payload.autoArchiveMinutes;
800
+ if (!payload.messageId && payload.type !== void 0) body.type = payload.type;
801
+ let channelType;
802
+ if (!payload.messageId) try {
803
+ channelType = (await rest.get(Routes.channel(channelId)))?.type;
804
+ } catch {
805
+ channelType = void 0;
806
+ }
807
+ const isForumLike = channelType === ChannelType.GuildForum || channelType === ChannelType.GuildMedia;
808
+ if (isForumLike) body.message = { content: payload.content?.trim() ? payload.content : payload.name };
809
+ if (!payload.messageId && !isForumLike && body.type === void 0) body.type = ChannelType.PublicThread;
810
+ const route = payload.messageId ? Routes.threads(channelId, payload.messageId) : Routes.threads(channelId);
811
+ const thread = await rest.post(route, { body });
812
+ if (!isForumLike && payload.content?.trim()) await rest.post(Routes.channelMessages(thread.id), { body: { content: payload.content } });
813
+ return thread;
814
+ }
815
+ async function listThreadsDiscord(payload, opts = {}) {
816
+ const rest = resolveDiscordRest(opts);
817
+ if (payload.includeArchived) {
818
+ if (!payload.channelId) throw new Error("channelId required to list archived threads");
819
+ const params = {};
820
+ if (payload.before) params.before = payload.before;
821
+ if (payload.limit) params.limit = payload.limit;
822
+ return await rest.get(Routes.channelThreads(payload.channelId, "public"), params);
823
+ }
824
+ return await rest.get(Routes.guildActiveThreads(payload.guildId));
825
+ }
826
+ async function searchMessagesDiscord(query, opts = {}) {
827
+ const rest = resolveDiscordRest(opts);
828
+ const params = new URLSearchParams();
829
+ params.set("content", query.content);
830
+ if (query.channelIds?.length) for (const channelId of query.channelIds) params.append("channel_id", channelId);
831
+ if (query.authorIds?.length) for (const authorId of query.authorIds) params.append("author_id", authorId);
832
+ if (query.limit) {
833
+ const limit = Math.min(Math.max(Math.floor(query.limit), 1), 25);
834
+ params.set("limit", String(limit));
835
+ }
836
+ return await rest.get(`/guilds/${query.guildId}/messages/search?${params.toString()}`);
837
+ }
838
+
839
+ //#endregion
840
+ //#region src/discord/voice-message.ts
841
+ /**
842
+ * Discord Voice Message Support
843
+ *
844
+ * Implements sending voice messages via Discord's API.
845
+ * Voice messages require:
846
+ * - OGG/Opus format audio
847
+ * - Waveform data (base64 encoded, up to 256 samples, 0-255 values)
848
+ * - Duration in seconds
849
+ * - Message flag 8192 (IS_VOICE_MESSAGE)
850
+ * - No other content (text, embeds, etc.)
851
+ */
852
+ const execFileAsync = promisify(execFile);
853
+ const DISCORD_VOICE_MESSAGE_FLAG = 8192;
854
+ const SUPPRESS_NOTIFICATIONS_FLAG = 4096;
855
+ const WAVEFORM_SAMPLES = 256;
856
+ /**
857
+ * Get audio duration using ffprobe
858
+ */
859
+ async function getAudioDuration(filePath) {
860
+ try {
861
+ const { stdout } = await execFileAsync("ffprobe", [
862
+ "-v",
863
+ "error",
864
+ "-show_entries",
865
+ "format=duration",
866
+ "-of",
867
+ "csv=p=0",
868
+ filePath
869
+ ]);
870
+ const duration = parseFloat(stdout.trim());
871
+ if (isNaN(duration)) throw new Error("Could not parse duration");
872
+ return Math.round(duration * 100) / 100;
873
+ } catch (err) {
874
+ const errMessage = err instanceof Error ? err.message : String(err);
875
+ throw new Error(`Failed to get audio duration: ${errMessage}`, { cause: err });
876
+ }
877
+ }
878
+ /**
879
+ * Generate waveform data from audio file using ffmpeg
880
+ * Returns base64 encoded byte array of amplitude samples (0-255)
881
+ */
882
+ async function generateWaveform(filePath) {
883
+ try {
884
+ return await generateWaveformFromPcm(filePath);
885
+ } catch {
886
+ return generatePlaceholderWaveform();
887
+ }
888
+ }
889
+ /**
890
+ * Generate waveform by extracting raw PCM data and sampling amplitudes
891
+ */
892
+ async function generateWaveformFromPcm(filePath) {
893
+ const tempDir = resolvePreferredRemoteClawTmpDir();
894
+ const tempPcm = path.join(tempDir, `waveform-${crypto.randomUUID()}.raw`);
895
+ try {
896
+ await execFileAsync("ffmpeg", [
897
+ "-y",
898
+ "-i",
899
+ filePath,
900
+ "-f",
901
+ "s16le",
902
+ "-acodec",
903
+ "pcm_s16le",
904
+ "-ac",
905
+ "1",
906
+ "-ar",
907
+ "8000",
908
+ tempPcm
909
+ ]);
910
+ const pcmData = await fs.readFile(tempPcm);
911
+ const samples = new Int16Array(pcmData.buffer, pcmData.byteOffset, pcmData.byteLength / 2);
912
+ const step = Math.max(1, Math.floor(samples.length / WAVEFORM_SAMPLES));
913
+ const waveform = [];
914
+ for (let i = 0; i < WAVEFORM_SAMPLES && i * step < samples.length; i++) {
915
+ let sum = 0;
916
+ let count = 0;
917
+ for (let j = 0; j < step && i * step + j < samples.length; j++) {
918
+ sum += Math.abs(samples[i * step + j]);
919
+ count++;
920
+ }
921
+ const avg = count > 0 ? sum / count : 0;
922
+ const normalized = Math.min(255, Math.round(avg / 32767 * 255));
923
+ waveform.push(normalized);
924
+ }
925
+ while (waveform.length < WAVEFORM_SAMPLES) waveform.push(0);
926
+ return Buffer.from(waveform).toString("base64");
927
+ } finally {
928
+ try {
929
+ await fs.unlink(tempPcm);
930
+ } catch {}
931
+ }
932
+ }
933
+ /**
934
+ * Generate a placeholder waveform (for when audio processing fails)
935
+ */
936
+ function generatePlaceholderWaveform() {
937
+ const waveform = [];
938
+ for (let i = 0; i < WAVEFORM_SAMPLES; i++) {
939
+ const value = Math.round(128 + 64 * Math.sin(i / WAVEFORM_SAMPLES * Math.PI * 8));
940
+ waveform.push(Math.min(255, Math.max(0, value)));
941
+ }
942
+ return Buffer.from(waveform).toString("base64");
943
+ }
944
+ /**
945
+ * Convert audio file to OGG/Opus format if needed
946
+ * Returns path to the OGG file (may be same as input if already OGG/Opus)
947
+ */
948
+ async function ensureOggOpus(filePath) {
949
+ const trimmed = filePath.trim();
950
+ if (/^[a-z][a-z0-9+.-]*:\/\//i.test(trimmed)) throw new Error(`Voice message conversion requires a local file path; received a URL/protocol source: ${trimmed}`);
951
+ if (path.extname(filePath).toLowerCase() === ".ogg") try {
952
+ const { stdout } = await execFileAsync("ffprobe", [
953
+ "-v",
954
+ "error",
955
+ "-select_streams",
956
+ "a:0",
957
+ "-show_entries",
958
+ "stream=codec_name",
959
+ "-of",
960
+ "csv=p=0",
961
+ filePath
962
+ ]);
963
+ if (stdout.trim().toLowerCase() === "opus") return {
964
+ path: filePath,
965
+ cleanup: false
966
+ };
967
+ } catch {}
968
+ const tempDir = resolvePreferredRemoteClawTmpDir();
969
+ const outputPath = path.join(tempDir, `voice-${crypto.randomUUID()}.ogg`);
970
+ await execFileAsync("ffmpeg", [
971
+ "-y",
972
+ "-i",
973
+ filePath,
974
+ "-c:a",
975
+ "libopus",
976
+ "-b:a",
977
+ "64k",
978
+ outputPath
979
+ ]);
980
+ return {
981
+ path: outputPath,
982
+ cleanup: true
983
+ };
984
+ }
985
+ /**
986
+ * Get voice message metadata (duration and waveform)
987
+ */
988
+ async function getVoiceMessageMetadata(filePath) {
989
+ const [durationSecs, waveform] = await Promise.all([getAudioDuration(filePath), generateWaveform(filePath)]);
990
+ return {
991
+ durationSecs,
992
+ waveform
993
+ };
994
+ }
995
+ /**
996
+ * Send a voice message to Discord
997
+ *
998
+ * This follows Discord's voice message protocol:
999
+ * 1. Request upload URL from Discord
1000
+ * 2. Upload the OGG file to the provided URL
1001
+ * 3. Send the message with flag 8192 and attachment metadata
1002
+ */
1003
+ async function sendDiscordVoiceMessage(rest, channelId, audioBuffer, metadata, replyTo, request, silent) {
1004
+ const filename = "voice-message.ogg";
1005
+ const fileSize = audioBuffer.byteLength;
1006
+ const uploadUrlResponse = await request(() => rest.post(`/channels/${channelId}/attachments`, { body: { files: [{
1007
+ filename,
1008
+ file_size: fileSize,
1009
+ id: "0"
1010
+ }] } }), "voice-upload-url");
1011
+ if (!uploadUrlResponse.attachments?.[0]) throw new Error("Failed to get upload URL for voice message");
1012
+ const { upload_url, upload_filename } = uploadUrlResponse.attachments[0];
1013
+ const uploadResponse = await fetch(upload_url, {
1014
+ method: "PUT",
1015
+ headers: { "Content-Type": "audio/ogg" },
1016
+ body: new Uint8Array(audioBuffer)
1017
+ });
1018
+ if (!uploadResponse.ok) throw new Error(`Failed to upload voice message: ${uploadResponse.status}`);
1019
+ const messagePayload = {
1020
+ flags: silent ? DISCORD_VOICE_MESSAGE_FLAG | SUPPRESS_NOTIFICATIONS_FLAG : DISCORD_VOICE_MESSAGE_FLAG,
1021
+ attachments: [{
1022
+ id: "0",
1023
+ filename,
1024
+ uploaded_filename: upload_filename,
1025
+ duration_secs: metadata.durationSecs,
1026
+ waveform: metadata.waveform
1027
+ }]
1028
+ };
1029
+ if (replyTo) messagePayload.message_reference = {
1030
+ message_id: replyTo,
1031
+ fail_if_not_exists: false
1032
+ };
1033
+ return await request(() => rest.post(`/channels/${channelId}/messages`, { body: messagePayload }), "voice-message");
1034
+ }
1035
+
1036
+ //#endregion
1037
+ //#region src/discord/send.outbound.ts
1038
+ async function sendDiscordThreadTextChunks(params) {
1039
+ for (const chunk of params.chunks) await sendDiscordText(params.rest, params.threadId, chunk, void 0, params.request, params.maxLinesPerMessage, void 0, void 0, params.chunkMode, params.silent);
1040
+ }
1041
+ /** Discord thread names are capped at 100 characters. */
1042
+ const DISCORD_THREAD_NAME_LIMIT = 100;
1043
+ /** Derive a thread title from the first non-empty line of the message text. */
1044
+ function deriveForumThreadName(text) {
1045
+ return (text.split("\n").find((l) => l.trim())?.trim() ?? "").slice(0, DISCORD_THREAD_NAME_LIMIT) || (/* @__PURE__ */ new Date()).toISOString().slice(0, 16);
1046
+ }
1047
+ /** Forum/Media channels cannot receive regular messages; detect them here. */
1048
+ function isForumLikeType(channelType) {
1049
+ return channelType === ChannelType.GuildForum || channelType === ChannelType.GuildMedia;
1050
+ }
1051
+ function toDiscordSendResult(result, fallbackChannelId) {
1052
+ return {
1053
+ messageId: result.id ? String(result.id) : "unknown",
1054
+ channelId: String(result.channel_id ?? fallbackChannelId)
1055
+ };
1056
+ }
1057
+ async function resolveDiscordSendTarget(to, opts) {
1058
+ const { rest, request } = createDiscordClient(opts, loadConfig());
1059
+ const { channelId } = await resolveChannelId(rest, await parseAndResolveRecipient(to, opts.accountId), request);
1060
+ return {
1061
+ rest,
1062
+ request,
1063
+ channelId
1064
+ };
1065
+ }
1066
+ async function sendMessageDiscord(to, text, opts = {}) {
1067
+ const cfg = loadConfig();
1068
+ const accountInfo = resolveDiscordAccount({
1069
+ cfg,
1070
+ accountId: opts.accountId
1071
+ });
1072
+ const tableMode = resolveMarkdownTableMode({
1073
+ cfg,
1074
+ channel: "discord",
1075
+ accountId: accountInfo.accountId
1076
+ });
1077
+ const chunkMode = resolveChunkMode(cfg, "discord", accountInfo.accountId);
1078
+ const textWithTables = convertMarkdownTables(text ?? "", tableMode);
1079
+ const { token, rest, request } = createDiscordClient(opts, cfg);
1080
+ const { channelId } = await resolveChannelId(rest, await parseAndResolveRecipient(to, opts.accountId), request);
1081
+ if (isForumLikeType(await resolveDiscordChannelType(rest, channelId))) {
1082
+ const threadName = deriveForumThreadName(textWithTables);
1083
+ const chunks = buildDiscordTextChunks(textWithTables, {
1084
+ maxLinesPerMessage: accountInfo.config.maxLinesPerMessage,
1085
+ chunkMode
1086
+ });
1087
+ const starterContent = chunks[0]?.trim() ? chunks[0] : threadName;
1088
+ const starterPayload = buildDiscordMessagePayload({
1089
+ text: starterContent,
1090
+ components: resolveDiscordSendComponents({
1091
+ components: opts.components,
1092
+ text: starterContent,
1093
+ isFirst: true
1094
+ }),
1095
+ embeds: resolveDiscordSendEmbeds({
1096
+ embeds: opts.embeds,
1097
+ isFirst: true
1098
+ }),
1099
+ flags: opts.silent ? 4096 : void 0
1100
+ });
1101
+ let threadRes;
1102
+ try {
1103
+ threadRes = await request(() => rest.post(Routes.threads(channelId), { body: {
1104
+ name: threadName,
1105
+ message: stripUndefinedFields(serializePayload(starterPayload))
1106
+ } }), "forum-thread");
1107
+ } catch (err) {
1108
+ throw await buildDiscordSendError(err, {
1109
+ channelId,
1110
+ rest,
1111
+ token,
1112
+ hasMedia: Boolean(opts.mediaUrl)
1113
+ });
1114
+ }
1115
+ const threadId = threadRes.id;
1116
+ const messageId = threadRes.message?.id ?? threadId;
1117
+ const resultChannelId = threadRes.message?.channel_id ?? threadId;
1118
+ const remainingChunks = chunks.slice(1);
1119
+ try {
1120
+ if (opts.mediaUrl) {
1121
+ const [mediaCaption, ...afterMediaChunks] = remainingChunks;
1122
+ await sendDiscordMedia(rest, threadId, mediaCaption ?? "", opts.mediaUrl, opts.mediaLocalRoots, void 0, request, accountInfo.config.maxLinesPerMessage, void 0, void 0, chunkMode, opts.silent);
1123
+ await sendDiscordThreadTextChunks({
1124
+ rest,
1125
+ threadId,
1126
+ chunks: afterMediaChunks,
1127
+ request,
1128
+ maxLinesPerMessage: accountInfo.config.maxLinesPerMessage,
1129
+ chunkMode,
1130
+ silent: opts.silent
1131
+ });
1132
+ } else await sendDiscordThreadTextChunks({
1133
+ rest,
1134
+ threadId,
1135
+ chunks: remainingChunks,
1136
+ request,
1137
+ maxLinesPerMessage: accountInfo.config.maxLinesPerMessage,
1138
+ chunkMode,
1139
+ silent: opts.silent
1140
+ });
1141
+ } catch (err) {
1142
+ throw await buildDiscordSendError(err, {
1143
+ channelId: threadId,
1144
+ rest,
1145
+ token,
1146
+ hasMedia: Boolean(opts.mediaUrl)
1147
+ });
1148
+ }
1149
+ recordChannelActivity({
1150
+ channel: "discord",
1151
+ accountId: accountInfo.accountId,
1152
+ direction: "outbound"
1153
+ });
1154
+ return toDiscordSendResult({
1155
+ id: messageId,
1156
+ channel_id: resultChannelId
1157
+ }, channelId);
1158
+ }
1159
+ let result;
1160
+ try {
1161
+ if (opts.mediaUrl) result = await sendDiscordMedia(rest, channelId, textWithTables, opts.mediaUrl, opts.mediaLocalRoots, opts.replyTo, request, accountInfo.config.maxLinesPerMessage, opts.components, opts.embeds, chunkMode, opts.silent);
1162
+ else result = await sendDiscordText(rest, channelId, textWithTables, opts.replyTo, request, accountInfo.config.maxLinesPerMessage, opts.components, opts.embeds, chunkMode, opts.silent);
1163
+ } catch (err) {
1164
+ throw await buildDiscordSendError(err, {
1165
+ channelId,
1166
+ rest,
1167
+ token,
1168
+ hasMedia: Boolean(opts.mediaUrl)
1169
+ });
1170
+ }
1171
+ recordChannelActivity({
1172
+ channel: "discord",
1173
+ accountId: accountInfo.accountId,
1174
+ direction: "outbound"
1175
+ });
1176
+ return toDiscordSendResult(result, channelId);
1177
+ }
1178
+ function resolveWebhookExecutionUrl(params) {
1179
+ const baseUrl = new URL(`https://discord.com/api/v10/webhooks/${encodeURIComponent(params.webhookId)}/${encodeURIComponent(params.webhookToken)}`);
1180
+ baseUrl.searchParams.set("wait", params.wait === false ? "false" : "true");
1181
+ if (params.threadId !== void 0 && params.threadId !== null && params.threadId !== "") baseUrl.searchParams.set("thread_id", String(params.threadId));
1182
+ return baseUrl.toString();
1183
+ }
1184
+ async function sendWebhookMessageDiscord(text, opts) {
1185
+ const webhookId = opts.webhookId.trim();
1186
+ const webhookToken = opts.webhookToken.trim();
1187
+ if (!webhookId || !webhookToken) throw new Error("Discord webhook id/token are required");
1188
+ const replyTo = typeof opts.replyTo === "string" ? opts.replyTo.trim() : "";
1189
+ const messageReference = replyTo ? {
1190
+ message_id: replyTo,
1191
+ fail_if_not_exists: false
1192
+ } : void 0;
1193
+ const response = await fetch(resolveWebhookExecutionUrl({
1194
+ webhookId,
1195
+ webhookToken,
1196
+ threadId: opts.threadId,
1197
+ wait: opts.wait
1198
+ }), {
1199
+ method: "POST",
1200
+ headers: { "content-type": "application/json" },
1201
+ body: JSON.stringify({
1202
+ content: text,
1203
+ username: opts.username?.trim() || void 0,
1204
+ avatar_url: opts.avatarUrl?.trim() || void 0,
1205
+ ...messageReference ? { message_reference: messageReference } : {}
1206
+ })
1207
+ });
1208
+ if (!response.ok) {
1209
+ const raw = await response.text().catch(() => "");
1210
+ throw new Error(`Discord webhook send failed (${response.status}${raw ? `: ${raw.slice(0, 200)}` : ""})`);
1211
+ }
1212
+ const payload = await response.json().catch(() => ({}));
1213
+ try {
1214
+ recordChannelActivity({
1215
+ channel: "discord",
1216
+ accountId: resolveDiscordAccount({
1217
+ cfg: loadConfig(),
1218
+ accountId: opts.accountId
1219
+ }).accountId,
1220
+ direction: "outbound"
1221
+ });
1222
+ } catch {}
1223
+ return {
1224
+ messageId: payload.id ? String(payload.id) : "unknown",
1225
+ channelId: payload.channel_id ? String(payload.channel_id) : opts.threadId ? String(opts.threadId) : ""
1226
+ };
1227
+ }
1228
+ async function sendStickerDiscord(to, stickerIds, opts = {}) {
1229
+ const { rest, request, channelId } = await resolveDiscordSendTarget(to, opts);
1230
+ const content = opts.content?.trim();
1231
+ const stickers = normalizeStickerIds(stickerIds);
1232
+ return toDiscordSendResult(await request(() => rest.post(Routes.channelMessages(channelId), { body: {
1233
+ content: content || void 0,
1234
+ sticker_ids: stickers
1235
+ } }), "sticker"), channelId);
1236
+ }
1237
+ async function sendPollDiscord(to, poll, opts = {}) {
1238
+ const { rest, request, channelId } = await resolveDiscordSendTarget(to, opts);
1239
+ const content = opts.content?.trim();
1240
+ if (poll.durationSeconds !== void 0) throw new Error("Discord polls do not support durationSeconds; use durationHours");
1241
+ const payload = normalizeDiscordPollInput(poll);
1242
+ const flags = opts.silent ? SUPPRESS_NOTIFICATIONS_FLAG$1 : void 0;
1243
+ return toDiscordSendResult(await request(() => rest.post(Routes.channelMessages(channelId), { body: {
1244
+ content: content || void 0,
1245
+ poll: payload,
1246
+ ...flags ? { flags } : {}
1247
+ } }), "poll"), channelId);
1248
+ }
1249
+ async function materializeVoiceMessageInput(mediaUrl) {
1250
+ const media = await loadWebMediaRaw(mediaUrl, maxBytesForKind("audio"));
1251
+ const extFromName = media.fileName ? path.extname(media.fileName) : "";
1252
+ const extFromMime = media.contentType ? extensionForMime(media.contentType) : "";
1253
+ const ext = extFromName || extFromMime || ".bin";
1254
+ const tempDir = resolvePreferredRemoteClawTmpDir();
1255
+ const filePath = path.join(tempDir, `voice-src-${crypto.randomUUID()}${ext}`);
1256
+ await fs.writeFile(filePath, media.buffer, { mode: 384 });
1257
+ return { filePath };
1258
+ }
1259
+ /**
1260
+ * Send a voice message to Discord.
1261
+ *
1262
+ * Voice messages are a special Discord feature that displays audio with a waveform
1263
+ * visualization. They require OGG/Opus format and cannot include text content.
1264
+ *
1265
+ * @param to - Recipient (user ID for DM or channel ID)
1266
+ * @param audioPath - Path to local audio file (will be converted to OGG/Opus if needed)
1267
+ * @param opts - Send options
1268
+ */
1269
+ async function sendVoiceMessageDiscord(to, audioPath, opts = {}) {
1270
+ const { filePath: localInputPath } = await materializeVoiceMessageInput(audioPath);
1271
+ let oggPath = null;
1272
+ let oggCleanup = false;
1273
+ let token;
1274
+ let rest;
1275
+ let channelId;
1276
+ try {
1277
+ const cfg = loadConfig();
1278
+ const accountInfo = resolveDiscordAccount({
1279
+ cfg,
1280
+ accountId: opts.accountId
1281
+ });
1282
+ const client = createDiscordClient(opts, cfg);
1283
+ token = client.token;
1284
+ rest = client.rest;
1285
+ const request = client.request;
1286
+ const recipient = await parseAndResolveRecipient(to, opts.accountId);
1287
+ channelId = (await resolveChannelId(rest, recipient, request)).channelId;
1288
+ const ogg = await ensureOggOpus(localInputPath);
1289
+ oggPath = ogg.path;
1290
+ oggCleanup = ogg.cleanup;
1291
+ const metadata = await getVoiceMessageMetadata(oggPath);
1292
+ const audioBuffer = await fs.readFile(oggPath);
1293
+ const result = await sendDiscordVoiceMessage(rest, channelId, audioBuffer, metadata, opts.replyTo, request, opts.silent);
1294
+ recordChannelActivity({
1295
+ channel: "discord",
1296
+ accountId: accountInfo.accountId,
1297
+ direction: "outbound"
1298
+ });
1299
+ return toDiscordSendResult(result, channelId);
1300
+ } catch (err) {
1301
+ if (channelId && rest && token) throw await buildDiscordSendError(err, {
1302
+ channelId,
1303
+ rest,
1304
+ token,
1305
+ hasMedia: true
1306
+ });
1307
+ throw err;
1308
+ } finally {
1309
+ if (oggCleanup && oggPath) try {
1310
+ await fs.unlink(oggPath);
1311
+ } catch {}
1312
+ try {
1313
+ await fs.unlink(localInputPath);
1314
+ } catch {}
1315
+ }
1316
+ }
1317
+
1318
+ //#endregion
1319
+ //#region src/discord/components-registry.ts
1320
+ const DEFAULT_COMPONENT_TTL_MS = 1800 * 1e3;
1321
+ const componentEntries = /* @__PURE__ */ new Map();
1322
+ const modalEntries = /* @__PURE__ */ new Map();
1323
+ function isExpired(entry, now) {
1324
+ return typeof entry.expiresAt === "number" && entry.expiresAt <= now;
1325
+ }
1326
+ function normalizeEntryTimestamps(entry, now, ttlMs) {
1327
+ const createdAt = entry.createdAt ?? now;
1328
+ const expiresAt = entry.expiresAt ?? createdAt + ttlMs;
1329
+ return {
1330
+ ...entry,
1331
+ createdAt,
1332
+ expiresAt
1333
+ };
1334
+ }
1335
+ function registerDiscordComponentEntries(params) {
1336
+ const now = Date.now();
1337
+ const ttlMs = params.ttlMs ?? DEFAULT_COMPONENT_TTL_MS;
1338
+ for (const entry of params.entries) {
1339
+ const normalized = normalizeEntryTimestamps({
1340
+ ...entry,
1341
+ messageId: params.messageId ?? entry.messageId
1342
+ }, now, ttlMs);
1343
+ componentEntries.set(entry.id, normalized);
1344
+ }
1345
+ for (const modal of params.modals) {
1346
+ const normalized = normalizeEntryTimestamps({
1347
+ ...modal,
1348
+ messageId: params.messageId ?? modal.messageId
1349
+ }, now, ttlMs);
1350
+ modalEntries.set(modal.id, normalized);
1351
+ }
1352
+ }
1353
+ function resolveDiscordComponentEntry(params) {
1354
+ const entry = componentEntries.get(params.id);
1355
+ if (!entry) return null;
1356
+ if (isExpired(entry, Date.now())) {
1357
+ componentEntries.delete(params.id);
1358
+ return null;
1359
+ }
1360
+ if (params.consume !== false) componentEntries.delete(params.id);
1361
+ return entry;
1362
+ }
1363
+ function resolveDiscordModalEntry(params) {
1364
+ const entry = modalEntries.get(params.id);
1365
+ if (!entry) return null;
1366
+ if (isExpired(entry, Date.now())) {
1367
+ modalEntries.delete(params.id);
1368
+ return null;
1369
+ }
1370
+ if (params.consume !== false) modalEntries.delete(params.id);
1371
+ return entry;
1372
+ }
1373
+
1374
+ //#endregion
1375
+ //#region src/discord/components.ts
1376
+ const DISCORD_COMPONENT_CUSTOM_ID_KEY = "occomp";
1377
+ const DISCORD_MODAL_CUSTOM_ID_KEY = "ocmodal";
1378
+ const DISCORD_COMPONENT_ATTACHMENT_PREFIX = "attachment://";
1379
+ const BLOCK_ALIASES = new Map([["row", "actions"], ["action-row", "actions"]]);
1380
+ function createShortId(prefix) {
1381
+ return `${prefix}${crypto.randomBytes(6).toString("base64url")}`;
1382
+ }
1383
+ function requireObject(value, label) {
1384
+ if (!value || typeof value !== "object" || Array.isArray(value)) throw new Error(`${label} must be an object`);
1385
+ return value;
1386
+ }
1387
+ function readString(value, label, opts) {
1388
+ if (typeof value !== "string") throw new Error(`${label} must be a string`);
1389
+ const trimmed = value.trim();
1390
+ if (!opts?.allowEmpty && !trimmed) throw new Error(`${label} cannot be empty`);
1391
+ return opts?.allowEmpty ? value : trimmed;
1392
+ }
1393
+ function readOptionalString(value) {
1394
+ if (typeof value !== "string") return;
1395
+ const trimmed = value.trim();
1396
+ return trimmed ? trimmed : void 0;
1397
+ }
1398
+ function readOptionalStringArray(value, label) {
1399
+ if (value === void 0) return;
1400
+ if (!Array.isArray(value)) throw new Error(`${label} must be an array`);
1401
+ if (value.length === 0) return;
1402
+ return value.map((entry, index) => readString(entry, `${label}[${index}]`));
1403
+ }
1404
+ function readOptionalNumber(value) {
1405
+ if (typeof value !== "number" || !Number.isFinite(value)) return;
1406
+ return value;
1407
+ }
1408
+ function normalizeModalFieldName(value, index) {
1409
+ const trimmed = value?.trim();
1410
+ if (trimmed) return trimmed;
1411
+ return `field_${index + 1}`;
1412
+ }
1413
+ function normalizeAttachmentRef(value, label) {
1414
+ const trimmed = value.trim();
1415
+ if (!trimmed.startsWith(DISCORD_COMPONENT_ATTACHMENT_PREFIX)) throw new Error(`${label} must start with "${DISCORD_COMPONENT_ATTACHMENT_PREFIX}"`);
1416
+ const attachmentName = trimmed.slice(13).trim();
1417
+ if (!attachmentName) throw new Error(`${label} must include an attachment filename`);
1418
+ return `${DISCORD_COMPONENT_ATTACHMENT_PREFIX}${attachmentName}`;
1419
+ }
1420
+ function resolveDiscordComponentAttachmentName(value) {
1421
+ const trimmed = value.trim();
1422
+ if (!trimmed.startsWith(DISCORD_COMPONENT_ATTACHMENT_PREFIX)) throw new Error(`Attachment reference must start with "${DISCORD_COMPONENT_ATTACHMENT_PREFIX}"`);
1423
+ const attachmentName = trimmed.slice(13).trim();
1424
+ if (!attachmentName) throw new Error("Attachment reference must include a filename");
1425
+ return attachmentName;
1426
+ }
1427
+ function mapButtonStyle(style) {
1428
+ switch ((style ?? "primary").toLowerCase()) {
1429
+ case "secondary": return ButtonStyle.Secondary;
1430
+ case "success": return ButtonStyle.Success;
1431
+ case "danger": return ButtonStyle.Danger;
1432
+ case "link": return ButtonStyle.Link;
1433
+ default: return ButtonStyle.Primary;
1434
+ }
1435
+ }
1436
+ function mapTextInputStyle(style) {
1437
+ return style === "paragraph" ? TextInputStyle.Paragraph : TextInputStyle.Short;
1438
+ }
1439
+ function normalizeBlockType(raw) {
1440
+ const lowered = raw.trim().toLowerCase();
1441
+ return BLOCK_ALIASES.get(lowered) ?? lowered;
1442
+ }
1443
+ function parseSelectOptions(raw, label) {
1444
+ if (raw === void 0) return;
1445
+ if (!Array.isArray(raw)) throw new Error(`${label} must be an array`);
1446
+ return raw.map((entry, index) => {
1447
+ const obj = requireObject(entry, `${label}[${index}]`);
1448
+ return {
1449
+ label: readString(obj.label, `${label}[${index}].label`),
1450
+ value: readString(obj.value, `${label}[${index}].value`),
1451
+ description: readOptionalString(obj.description),
1452
+ emoji: typeof obj.emoji === "object" && obj.emoji && !Array.isArray(obj.emoji) ? {
1453
+ name: readString(obj.emoji.name, `${label}[${index}].emoji.name`),
1454
+ id: readOptionalString(obj.emoji.id),
1455
+ animated: typeof obj.emoji.animated === "boolean" ? obj.emoji.animated : void 0
1456
+ } : void 0,
1457
+ default: typeof obj.default === "boolean" ? obj.default : void 0
1458
+ };
1459
+ });
1460
+ }
1461
+ function parseButtonSpec(raw, label) {
1462
+ const obj = requireObject(raw, label);
1463
+ const style = readOptionalString(obj.style);
1464
+ const url = readOptionalString(obj.url);
1465
+ if ((style === "link" || url) && !url) throw new Error(`${label}.url is required for link buttons`);
1466
+ return {
1467
+ label: readString(obj.label, `${label}.label`),
1468
+ style,
1469
+ url,
1470
+ emoji: typeof obj.emoji === "object" && obj.emoji && !Array.isArray(obj.emoji) ? {
1471
+ name: readString(obj.emoji.name, `${label}.emoji.name`),
1472
+ id: readOptionalString(obj.emoji.id),
1473
+ animated: typeof obj.emoji.animated === "boolean" ? obj.emoji.animated : void 0
1474
+ } : void 0,
1475
+ disabled: typeof obj.disabled === "boolean" ? obj.disabled : void 0,
1476
+ allowedUsers: readOptionalStringArray(obj.allowedUsers, `${label}.allowedUsers`)
1477
+ };
1478
+ }
1479
+ function parseSelectSpec(raw, label) {
1480
+ const obj = requireObject(raw, label);
1481
+ const type = readOptionalString(obj.type);
1482
+ const allowedTypes = [
1483
+ "string",
1484
+ "user",
1485
+ "role",
1486
+ "mentionable",
1487
+ "channel"
1488
+ ];
1489
+ if (type && !allowedTypes.includes(type)) throw new Error(`${label}.type must be one of ${allowedTypes.join(", ")}`);
1490
+ return {
1491
+ type,
1492
+ placeholder: readOptionalString(obj.placeholder),
1493
+ minValues: readOptionalNumber(obj.minValues),
1494
+ maxValues: readOptionalNumber(obj.maxValues),
1495
+ options: parseSelectOptions(obj.options, `${label}.options`)
1496
+ };
1497
+ }
1498
+ function parseModalField(raw, label, index) {
1499
+ const obj = requireObject(raw, label);
1500
+ const type = readString(obj.type, `${label}.type`).toLowerCase();
1501
+ const supported = [
1502
+ "text",
1503
+ "checkbox",
1504
+ "radio",
1505
+ "select",
1506
+ "role-select",
1507
+ "user-select"
1508
+ ];
1509
+ if (!supported.includes(type)) throw new Error(`${label}.type must be one of ${supported.join(", ")}`);
1510
+ const options = parseSelectOptions(obj.options, `${label}.options`);
1511
+ if ([
1512
+ "checkbox",
1513
+ "radio",
1514
+ "select"
1515
+ ].includes(type) && (!options || options.length === 0)) throw new Error(`${label}.options is required for ${type} fields`);
1516
+ return {
1517
+ type,
1518
+ name: normalizeModalFieldName(readOptionalString(obj.name), index),
1519
+ label: readString(obj.label, `${label}.label`),
1520
+ description: readOptionalString(obj.description),
1521
+ placeholder: readOptionalString(obj.placeholder),
1522
+ required: typeof obj.required === "boolean" ? obj.required : void 0,
1523
+ options,
1524
+ minValues: readOptionalNumber(obj.minValues),
1525
+ maxValues: readOptionalNumber(obj.maxValues),
1526
+ minLength: readOptionalNumber(obj.minLength),
1527
+ maxLength: readOptionalNumber(obj.maxLength),
1528
+ style: readOptionalString(obj.style)
1529
+ };
1530
+ }
1531
+ function parseComponentBlock(raw, label) {
1532
+ const obj = requireObject(raw, label);
1533
+ switch (normalizeBlockType(readString(obj.type, `${label}.type`).toLowerCase())) {
1534
+ case "text": return {
1535
+ type: "text",
1536
+ text: readString(obj.text, `${label}.text`)
1537
+ };
1538
+ case "section": {
1539
+ const text = readOptionalString(obj.text);
1540
+ const textsRaw = obj.texts;
1541
+ const texts = Array.isArray(textsRaw) ? textsRaw.map((entry, idx) => readString(entry, `${label}.texts[${idx}]`)) : void 0;
1542
+ if (!text && (!texts || texts.length === 0)) throw new Error(`${label}.text or ${label}.texts is required for section blocks`);
1543
+ let accessory;
1544
+ if (obj.accessory !== void 0) {
1545
+ const accessoryObj = requireObject(obj.accessory, `${label}.accessory`);
1546
+ const accessoryType = readString(accessoryObj.type, `${label}.accessory.type`).toLowerCase();
1547
+ if (accessoryType === "thumbnail") accessory = {
1548
+ type: "thumbnail",
1549
+ url: readString(accessoryObj.url, `${label}.accessory.url`)
1550
+ };
1551
+ else if (accessoryType === "button") accessory = {
1552
+ type: "button",
1553
+ button: parseButtonSpec(accessoryObj.button, `${label}.accessory.button`)
1554
+ };
1555
+ else throw new Error(`${label}.accessory.type must be "thumbnail" or "button"`);
1556
+ }
1557
+ return {
1558
+ type: "section",
1559
+ text,
1560
+ texts,
1561
+ accessory
1562
+ };
1563
+ }
1564
+ case "separator": {
1565
+ const spacingRaw = obj.spacing;
1566
+ let spacing;
1567
+ if (spacingRaw === "small" || spacingRaw === "large") spacing = spacingRaw;
1568
+ else if (spacingRaw === 1 || spacingRaw === 2) spacing = spacingRaw;
1569
+ else if (spacingRaw !== void 0) throw new Error(`${label}.spacing must be "small", "large", 1, or 2`);
1570
+ const divider = typeof obj.divider === "boolean" ? obj.divider : void 0;
1571
+ return {
1572
+ type: "separator",
1573
+ spacing,
1574
+ divider
1575
+ };
1576
+ }
1577
+ case "actions": {
1578
+ const buttonsRaw = obj.buttons;
1579
+ const buttons = Array.isArray(buttonsRaw) ? buttonsRaw.map((entry, idx) => parseButtonSpec(entry, `${label}.buttons[${idx}]`)) : void 0;
1580
+ const select = obj.select ? parseSelectSpec(obj.select, `${label}.select`) : void 0;
1581
+ if ((!buttons || buttons.length === 0) && !select) throw new Error(`${label} requires buttons or select`);
1582
+ if (buttons && select) throw new Error(`${label} cannot include both buttons and select`);
1583
+ return {
1584
+ type: "actions",
1585
+ buttons,
1586
+ select
1587
+ };
1588
+ }
1589
+ case "media-gallery": {
1590
+ const itemsRaw = obj.items;
1591
+ if (!Array.isArray(itemsRaw) || itemsRaw.length === 0) throw new Error(`${label}.items must be a non-empty array`);
1592
+ return {
1593
+ type: "media-gallery",
1594
+ items: itemsRaw.map((entry, idx) => {
1595
+ const itemObj = requireObject(entry, `${label}.items[${idx}]`);
1596
+ return {
1597
+ url: readString(itemObj.url, `${label}.items[${idx}].url`),
1598
+ description: readOptionalString(itemObj.description),
1599
+ spoiler: typeof itemObj.spoiler === "boolean" ? itemObj.spoiler : void 0
1600
+ };
1601
+ })
1602
+ };
1603
+ }
1604
+ case "file": return {
1605
+ type: "file",
1606
+ file: normalizeAttachmentRef(readString(obj.file, `${label}.file`), `${label}.file`),
1607
+ spoiler: typeof obj.spoiler === "boolean" ? obj.spoiler : void 0
1608
+ };
1609
+ default: throw new Error(`${label}.type must be a supported component block`);
1610
+ }
1611
+ }
1612
+ function readDiscordComponentSpec(raw) {
1613
+ if (raw === void 0 || raw === null) return null;
1614
+ const obj = requireObject(raw, "components");
1615
+ const blocksRaw = obj.blocks;
1616
+ const blocks = Array.isArray(blocksRaw) ? blocksRaw.map((entry, idx) => parseComponentBlock(entry, `components.blocks[${idx}]`)) : void 0;
1617
+ const modalRaw = obj.modal;
1618
+ const reusable = typeof obj.reusable === "boolean" ? obj.reusable : void 0;
1619
+ let modal;
1620
+ if (modalRaw !== void 0) {
1621
+ const modalObj = requireObject(modalRaw, "components.modal");
1622
+ const fieldsRaw = modalObj.fields;
1623
+ if (!Array.isArray(fieldsRaw) || fieldsRaw.length === 0) throw new Error("components.modal.fields must be a non-empty array");
1624
+ if (fieldsRaw.length > 5) throw new Error("components.modal.fields supports up to 5 inputs");
1625
+ const fields = fieldsRaw.map((entry, idx) => parseModalField(entry, `components.modal.fields[${idx}]`, idx));
1626
+ modal = {
1627
+ title: readString(modalObj.title, "components.modal.title"),
1628
+ triggerLabel: readOptionalString(modalObj.triggerLabel),
1629
+ triggerStyle: readOptionalString(modalObj.triggerStyle),
1630
+ fields
1631
+ };
1632
+ }
1633
+ return {
1634
+ text: readOptionalString(obj.text),
1635
+ reusable,
1636
+ container: typeof obj.container === "object" && obj.container && !Array.isArray(obj.container) ? {
1637
+ accentColor: obj.container.accentColor,
1638
+ spoiler: typeof obj.container.spoiler === "boolean" ? obj.container.spoiler : void 0
1639
+ } : void 0,
1640
+ blocks,
1641
+ modal
1642
+ };
1643
+ }
1644
+ function buildDiscordComponentCustomId(params) {
1645
+ const base = `${DISCORD_COMPONENT_CUSTOM_ID_KEY}:cid=${params.componentId}`;
1646
+ return params.modalId ? `${base};mid=${params.modalId}` : base;
1647
+ }
1648
+ function buildDiscordModalCustomId(modalId) {
1649
+ return `${DISCORD_MODAL_CUSTOM_ID_KEY}:mid=${modalId}`;
1650
+ }
1651
+ function parseDiscordComponentCustomId(id) {
1652
+ const parsed = parseCustomId(id);
1653
+ if (parsed.key !== DISCORD_COMPONENT_CUSTOM_ID_KEY) return null;
1654
+ const componentId = parsed.data.cid;
1655
+ if (typeof componentId !== "string" || !componentId.trim()) return null;
1656
+ const modalId = parsed.data.mid;
1657
+ return {
1658
+ componentId,
1659
+ modalId: typeof modalId === "string" && modalId.trim() ? modalId : void 0
1660
+ };
1661
+ }
1662
+ function parseDiscordModalCustomId(id) {
1663
+ const parsed = parseCustomId(id);
1664
+ if (parsed.key !== DISCORD_MODAL_CUSTOM_ID_KEY) return null;
1665
+ const modalId = parsed.data.mid;
1666
+ if (typeof modalId !== "string" || !modalId.trim()) return null;
1667
+ return modalId;
1668
+ }
1669
+ function parseDiscordComponentCustomIdForCarbon(id) {
1670
+ if (id === "*") return {
1671
+ key: "*",
1672
+ data: {}
1673
+ };
1674
+ const parsed = parseCustomId(id);
1675
+ if (parsed.key !== DISCORD_COMPONENT_CUSTOM_ID_KEY) return parsed;
1676
+ return {
1677
+ key: "*",
1678
+ data: parsed.data
1679
+ };
1680
+ }
1681
+ function parseDiscordModalCustomIdForCarbon(id) {
1682
+ if (id === "*") return {
1683
+ key: "*",
1684
+ data: {}
1685
+ };
1686
+ const parsed = parseCustomId(id);
1687
+ if (parsed.key !== DISCORD_MODAL_CUSTOM_ID_KEY) return parsed;
1688
+ return {
1689
+ key: "*",
1690
+ data: parsed.data
1691
+ };
1692
+ }
1693
+ function buildTextDisplays(text, texts) {
1694
+ if (texts && texts.length > 0) return texts.map((entry) => new TextDisplay(entry));
1695
+ if (text) return [new TextDisplay(text)];
1696
+ return [];
1697
+ }
1698
+ function createButtonComponent(params) {
1699
+ const style = mapButtonStyle(params.spec.style);
1700
+ if (style === ButtonStyle.Link || Boolean(params.spec.url)) {
1701
+ if (!params.spec.url) throw new Error("Link buttons require a url");
1702
+ const linkUrl = params.spec.url;
1703
+ class DynamicLinkButton extends LinkButton {
1704
+ constructor(..._args) {
1705
+ super(..._args);
1706
+ this.label = params.spec.label;
1707
+ this.url = linkUrl;
1708
+ }
1709
+ }
1710
+ return { component: new DynamicLinkButton() };
1711
+ }
1712
+ const componentId = params.componentId ?? createShortId("btn_");
1713
+ const customId = buildDiscordComponentCustomId({
1714
+ componentId,
1715
+ modalId: params.modalId
1716
+ });
1717
+ class DynamicButton extends Button {
1718
+ constructor(..._args2) {
1719
+ super(..._args2);
1720
+ this.label = params.spec.label;
1721
+ this.customId = customId;
1722
+ this.style = style;
1723
+ this.emoji = params.spec.emoji;
1724
+ this.disabled = params.spec.disabled ?? false;
1725
+ }
1726
+ }
1727
+ return {
1728
+ component: new DynamicButton(),
1729
+ entry: {
1730
+ id: componentId,
1731
+ kind: params.modalId ? "modal-trigger" : "button",
1732
+ label: params.spec.label,
1733
+ modalId: params.modalId,
1734
+ allowedUsers: params.spec.allowedUsers
1735
+ }
1736
+ };
1737
+ }
1738
+ function createSelectComponent(params) {
1739
+ const type = (params.spec.type ?? "string").toLowerCase();
1740
+ const componentId = params.componentId ?? createShortId("sel_");
1741
+ const customId = buildDiscordComponentCustomId({ componentId });
1742
+ if (type === "string") {
1743
+ const options = params.spec.options ?? [];
1744
+ if (options.length === 0) throw new Error("String select menus require options");
1745
+ class DynamicStringSelect extends StringSelectMenu {
1746
+ constructor(..._args3) {
1747
+ super(..._args3);
1748
+ this.customId = customId;
1749
+ this.options = options;
1750
+ this.minValues = params.spec.minValues;
1751
+ this.maxValues = params.spec.maxValues;
1752
+ this.placeholder = params.spec.placeholder;
1753
+ this.disabled = false;
1754
+ }
1755
+ }
1756
+ return {
1757
+ component: new DynamicStringSelect(),
1758
+ entry: {
1759
+ id: componentId,
1760
+ kind: "select",
1761
+ label: params.spec.placeholder ?? "select",
1762
+ selectType: "string",
1763
+ options: options.map((option) => ({
1764
+ value: option.value,
1765
+ label: option.label
1766
+ }))
1767
+ }
1768
+ };
1769
+ }
1770
+ if (type === "user") {
1771
+ class DynamicUserSelect extends UserSelectMenu {
1772
+ constructor(..._args4) {
1773
+ super(..._args4);
1774
+ this.customId = customId;
1775
+ this.minValues = params.spec.minValues;
1776
+ this.maxValues = params.spec.maxValues;
1777
+ this.placeholder = params.spec.placeholder;
1778
+ this.disabled = false;
1779
+ }
1780
+ }
1781
+ return {
1782
+ component: new DynamicUserSelect(),
1783
+ entry: {
1784
+ id: componentId,
1785
+ kind: "select",
1786
+ label: params.spec.placeholder ?? "user select",
1787
+ selectType: "user"
1788
+ }
1789
+ };
1790
+ }
1791
+ if (type === "role") {
1792
+ class DynamicRoleSelect extends RoleSelectMenu {
1793
+ constructor(..._args5) {
1794
+ super(..._args5);
1795
+ this.customId = customId;
1796
+ this.minValues = params.spec.minValues;
1797
+ this.maxValues = params.spec.maxValues;
1798
+ this.placeholder = params.spec.placeholder;
1799
+ this.disabled = false;
1800
+ }
1801
+ }
1802
+ return {
1803
+ component: new DynamicRoleSelect(),
1804
+ entry: {
1805
+ id: componentId,
1806
+ kind: "select",
1807
+ label: params.spec.placeholder ?? "role select",
1808
+ selectType: "role"
1809
+ }
1810
+ };
1811
+ }
1812
+ if (type === "mentionable") {
1813
+ class DynamicMentionableSelect extends MentionableSelectMenu {
1814
+ constructor(..._args6) {
1815
+ super(..._args6);
1816
+ this.customId = customId;
1817
+ this.minValues = params.spec.minValues;
1818
+ this.maxValues = params.spec.maxValues;
1819
+ this.placeholder = params.spec.placeholder;
1820
+ this.disabled = false;
1821
+ }
1822
+ }
1823
+ return {
1824
+ component: new DynamicMentionableSelect(),
1825
+ entry: {
1826
+ id: componentId,
1827
+ kind: "select",
1828
+ label: params.spec.placeholder ?? "mentionable select",
1829
+ selectType: "mentionable"
1830
+ }
1831
+ };
1832
+ }
1833
+ class DynamicChannelSelect extends ChannelSelectMenu {
1834
+ constructor(..._args7) {
1835
+ super(..._args7);
1836
+ this.customId = customId;
1837
+ this.minValues = params.spec.minValues;
1838
+ this.maxValues = params.spec.maxValues;
1839
+ this.placeholder = params.spec.placeholder;
1840
+ this.disabled = false;
1841
+ }
1842
+ }
1843
+ return {
1844
+ component: new DynamicChannelSelect(),
1845
+ entry: {
1846
+ id: componentId,
1847
+ kind: "select",
1848
+ label: params.spec.placeholder ?? "channel select",
1849
+ selectType: "channel"
1850
+ }
1851
+ };
1852
+ }
1853
+ function isSelectComponent(component) {
1854
+ return component instanceof StringSelectMenu || component instanceof UserSelectMenu || component instanceof RoleSelectMenu || component instanceof MentionableSelectMenu || component instanceof ChannelSelectMenu;
1855
+ }
1856
+ function createModalFieldComponent(field) {
1857
+ if (field.type === "text") {
1858
+ class DynamicTextInput extends TextInput {
1859
+ constructor(..._args8) {
1860
+ super(..._args8);
1861
+ this.customId = field.id;
1862
+ this.style = mapTextInputStyle(field.style);
1863
+ this.placeholder = field.placeholder;
1864
+ this.required = field.required;
1865
+ this.minLength = field.minLength;
1866
+ this.maxLength = field.maxLength;
1867
+ }
1868
+ }
1869
+ return new DynamicTextInput();
1870
+ }
1871
+ if (field.type === "select") {
1872
+ const options = field.options ?? [];
1873
+ class DynamicModalSelect extends StringSelectMenu {
1874
+ constructor(..._args9) {
1875
+ super(..._args9);
1876
+ this.customId = field.id;
1877
+ this.options = options;
1878
+ this.required = field.required;
1879
+ this.minValues = field.minValues;
1880
+ this.maxValues = field.maxValues;
1881
+ this.placeholder = field.placeholder;
1882
+ }
1883
+ }
1884
+ return new DynamicModalSelect();
1885
+ }
1886
+ if (field.type === "role-select") {
1887
+ class DynamicModalRoleSelect extends RoleSelectMenu {
1888
+ constructor(..._args10) {
1889
+ super(..._args10);
1890
+ this.customId = field.id;
1891
+ this.required = field.required;
1892
+ this.minValues = field.minValues;
1893
+ this.maxValues = field.maxValues;
1894
+ this.placeholder = field.placeholder;
1895
+ }
1896
+ }
1897
+ return new DynamicModalRoleSelect();
1898
+ }
1899
+ if (field.type === "user-select") {
1900
+ class DynamicModalUserSelect extends UserSelectMenu {
1901
+ constructor(..._args11) {
1902
+ super(..._args11);
1903
+ this.customId = field.id;
1904
+ this.required = field.required;
1905
+ this.minValues = field.minValues;
1906
+ this.maxValues = field.maxValues;
1907
+ this.placeholder = field.placeholder;
1908
+ }
1909
+ }
1910
+ return new DynamicModalUserSelect();
1911
+ }
1912
+ if (field.type === "checkbox") {
1913
+ const options = field.options ?? [];
1914
+ class DynamicCheckboxGroup extends CheckboxGroup {
1915
+ constructor(..._args12) {
1916
+ super(..._args12);
1917
+ this.customId = field.id;
1918
+ this.options = options;
1919
+ this.required = field.required;
1920
+ this.minValues = field.minValues;
1921
+ this.maxValues = field.maxValues;
1922
+ }
1923
+ }
1924
+ return new DynamicCheckboxGroup();
1925
+ }
1926
+ const options = field.options ?? [];
1927
+ class DynamicRadioGroup extends RadioGroup {
1928
+ constructor(..._args13) {
1929
+ super(..._args13);
1930
+ this.customId = field.id;
1931
+ this.options = options;
1932
+ this.required = field.required;
1933
+ this.minValues = field.minValues;
1934
+ this.maxValues = field.maxValues;
1935
+ }
1936
+ }
1937
+ return new DynamicRadioGroup();
1938
+ }
1939
+ function buildDiscordComponentMessage(params) {
1940
+ const entries = [];
1941
+ const modals = [];
1942
+ const components = [];
1943
+ const containerChildren = [];
1944
+ const addEntry = (entry) => {
1945
+ entries.push({
1946
+ ...entry,
1947
+ sessionKey: params.sessionKey,
1948
+ agentId: params.agentId,
1949
+ accountId: params.accountId,
1950
+ reusable: entry.reusable ?? params.spec.reusable
1951
+ });
1952
+ };
1953
+ const text = params.spec.text ?? params.fallbackText;
1954
+ if (text) containerChildren.push(new TextDisplay(text));
1955
+ for (const block of params.spec.blocks ?? []) {
1956
+ if (block.type === "text") {
1957
+ containerChildren.push(new TextDisplay(block.text));
1958
+ continue;
1959
+ }
1960
+ if (block.type === "section") {
1961
+ const displays = buildTextDisplays(block.text, block.texts);
1962
+ if (displays.length > 3) throw new Error("Section blocks support up to 3 text displays");
1963
+ let accessory;
1964
+ if (block.accessory?.type === "thumbnail") accessory = new Thumbnail(block.accessory.url);
1965
+ else if (block.accessory?.type === "button") {
1966
+ const { component, entry } = createButtonComponent({ spec: block.accessory.button });
1967
+ accessory = component;
1968
+ if (entry) addEntry(entry);
1969
+ }
1970
+ containerChildren.push(new Section(displays, accessory));
1971
+ continue;
1972
+ }
1973
+ if (block.type === "separator") {
1974
+ containerChildren.push(new Separator({
1975
+ spacing: block.spacing,
1976
+ divider: block.divider
1977
+ }));
1978
+ continue;
1979
+ }
1980
+ if (block.type === "media-gallery") {
1981
+ containerChildren.push(new MediaGallery(block.items));
1982
+ continue;
1983
+ }
1984
+ if (block.type === "file") {
1985
+ containerChildren.push(new File(block.file, block.spoiler));
1986
+ continue;
1987
+ }
1988
+ if (block.type === "actions") {
1989
+ const rowComponents = [];
1990
+ if (block.buttons) {
1991
+ if (block.buttons.length > 5) throw new Error("Action rows support up to 5 buttons");
1992
+ for (const button of block.buttons) {
1993
+ const { component, entry } = createButtonComponent({ spec: button });
1994
+ rowComponents.push(component);
1995
+ if (entry) addEntry(entry);
1996
+ }
1997
+ } else if (block.select) {
1998
+ const { component, entry } = createSelectComponent({ spec: block.select });
1999
+ rowComponents.push(component);
2000
+ addEntry(entry);
2001
+ }
2002
+ containerChildren.push(new Row(rowComponents));
2003
+ }
2004
+ }
2005
+ if (params.spec.modal) {
2006
+ const modalId = createShortId("mdl_");
2007
+ const fields = params.spec.modal.fields.map((field, index) => ({
2008
+ id: createShortId("fld_"),
2009
+ name: normalizeModalFieldName(field.name, index),
2010
+ label: field.label,
2011
+ type: field.type,
2012
+ description: field.description,
2013
+ placeholder: field.placeholder,
2014
+ required: field.required,
2015
+ options: field.options,
2016
+ minValues: field.minValues,
2017
+ maxValues: field.maxValues,
2018
+ minLength: field.minLength,
2019
+ maxLength: field.maxLength,
2020
+ style: field.style
2021
+ }));
2022
+ modals.push({
2023
+ id: modalId,
2024
+ title: params.spec.modal.title,
2025
+ fields,
2026
+ sessionKey: params.sessionKey,
2027
+ agentId: params.agentId,
2028
+ accountId: params.accountId,
2029
+ reusable: params.spec.reusable
2030
+ });
2031
+ const { component, entry } = createButtonComponent({
2032
+ spec: {
2033
+ label: params.spec.modal.triggerLabel ?? "Open form",
2034
+ style: params.spec.modal.triggerStyle ?? "primary"
2035
+ },
2036
+ modalId
2037
+ });
2038
+ if (entry) addEntry(entry);
2039
+ const lastChild = containerChildren.at(-1);
2040
+ if (lastChild instanceof Row) {
2041
+ const row = lastChild;
2042
+ const hasSelect = row.components.some((entry) => isSelectComponent(entry));
2043
+ if (row.components.length < 5 && !hasSelect) row.addComponent(component);
2044
+ else containerChildren.push(new Row([component]));
2045
+ } else containerChildren.push(new Row([component]));
2046
+ }
2047
+ if (containerChildren.length === 0) throw new Error("components must include at least one block, text, or modal trigger");
2048
+ const container = new Container(containerChildren, params.spec.container);
2049
+ components.push(container);
2050
+ return {
2051
+ components,
2052
+ entries,
2053
+ modals
2054
+ };
2055
+ }
2056
+ function buildDiscordComponentMessageFlags(components) {
2057
+ return components.some((component) => component.isV2) ? MessageFlags.IsComponentsV2 : void 0;
2058
+ }
2059
+ var DiscordFormModal = class extends Modal {
2060
+ constructor(params) {
2061
+ super();
2062
+ this.customIdParser = parseDiscordModalCustomIdForCarbon;
2063
+ this.title = params.title;
2064
+ this.customId = buildDiscordModalCustomId(params.modalId);
2065
+ this.components = params.fields.map((field) => {
2066
+ const component = createModalFieldComponent(field);
2067
+ class DynamicLabel extends Label {
2068
+ constructor(..._args14) {
2069
+ super(..._args14);
2070
+ this.label = field.label;
2071
+ this.description = field.description;
2072
+ this.component = component;
2073
+ this.customId = field.id;
2074
+ }
2075
+ }
2076
+ return new DynamicLabel(component);
2077
+ });
2078
+ }
2079
+ async run() {
2080
+ throw new Error("Modal handler is not registered for dynamic forms");
2081
+ }
2082
+ };
2083
+ function createDiscordFormModal(entry) {
2084
+ return new DiscordFormModal({
2085
+ modalId: entry.id,
2086
+ title: entry.title,
2087
+ fields: entry.fields
2088
+ });
2089
+ }
2090
+ function formatDiscordComponentEventText(params) {
2091
+ if (params.kind === "button") return `Clicked "${params.label}".`;
2092
+ const values = params.values ?? [];
2093
+ if (values.length === 0) return `Updated "${params.label}".`;
2094
+ return `Selected ${values.join(", ")} from "${params.label}".`;
2095
+ }
2096
+
2097
+ //#endregion
2098
+ //#region src/discord/send.components.ts
2099
+ const DISCORD_FORUM_LIKE_TYPES = new Set([ChannelType.GuildForum, ChannelType.GuildMedia]);
2100
+ function extractComponentAttachmentNames(spec) {
2101
+ const names = [];
2102
+ for (const block of spec.blocks ?? []) if (block.type === "file") names.push(resolveDiscordComponentAttachmentName(block.file));
2103
+ return names;
2104
+ }
2105
+ async function sendDiscordComponentMessage(to, spec, opts = {}) {
2106
+ const cfg = loadConfig();
2107
+ const accountInfo = resolveDiscordAccount({
2108
+ cfg,
2109
+ accountId: opts.accountId
2110
+ });
2111
+ const { token, rest, request } = createDiscordClient(opts, cfg);
2112
+ const { channelId } = await resolveChannelId(rest, await parseAndResolveRecipient(to, opts.accountId), request);
2113
+ const channelType = await resolveDiscordChannelType(rest, channelId);
2114
+ if (channelType && DISCORD_FORUM_LIKE_TYPES.has(channelType)) throw new Error("Discord components are not supported in forum-style channels");
2115
+ const buildResult = buildDiscordComponentMessage({
2116
+ spec,
2117
+ sessionKey: opts.sessionKey,
2118
+ agentId: opts.agentId,
2119
+ accountId: accountInfo.accountId
2120
+ });
2121
+ const flags = buildDiscordComponentMessageFlags(buildResult.components);
2122
+ const finalFlags = opts.silent ? (flags ?? 0) | SUPPRESS_NOTIFICATIONS_FLAG$1 : flags ?? void 0;
2123
+ const messageReference = opts.replyTo ? {
2124
+ message_id: opts.replyTo,
2125
+ fail_if_not_exists: false
2126
+ } : void 0;
2127
+ const attachmentNames = extractComponentAttachmentNames(spec);
2128
+ const uniqueAttachmentNames = [...new Set(attachmentNames)];
2129
+ if (uniqueAttachmentNames.length > 1) throw new Error("Discord component attachments currently support a single file. Use media-gallery for multiple files.");
2130
+ const expectedAttachmentName = uniqueAttachmentNames[0];
2131
+ let files;
2132
+ if (opts.mediaUrl) {
2133
+ const media = await loadWebMedia(opts.mediaUrl, { localRoots: opts.mediaLocalRoots });
2134
+ const fileName = opts.filename?.trim() || media.fileName || "upload";
2135
+ if (expectedAttachmentName && expectedAttachmentName !== fileName) throw new Error(`Component file block expects attachment "${expectedAttachmentName}", but the uploaded file is "${fileName}". Update components.blocks[].file or provide a matching filename.`);
2136
+ files = [{
2137
+ data: toDiscordFileBlob(media.buffer),
2138
+ name: fileName
2139
+ }];
2140
+ } else if (expectedAttachmentName) throw new Error("Discord component file blocks require a media attachment (media/path/filePath).");
2141
+ const body = stripUndefinedFields({
2142
+ ...serializePayload({
2143
+ components: buildResult.components,
2144
+ ...finalFlags ? { flags: finalFlags } : {},
2145
+ ...files ? { files } : {}
2146
+ }),
2147
+ ...messageReference ? { message_reference: messageReference } : {}
2148
+ });
2149
+ let result;
2150
+ try {
2151
+ result = await request(() => rest.post(Routes.channelMessages(channelId), { body }), "components");
2152
+ } catch (err) {
2153
+ throw await buildDiscordSendError(err, {
2154
+ channelId,
2155
+ rest,
2156
+ token,
2157
+ hasMedia: Boolean(files?.length)
2158
+ });
2159
+ }
2160
+ registerDiscordComponentEntries({
2161
+ entries: buildResult.entries,
2162
+ modals: buildResult.modals,
2163
+ messageId: result.id
2164
+ });
2165
+ recordChannelActivity({
2166
+ channel: "discord",
2167
+ accountId: accountInfo.accountId,
2168
+ direction: "outbound"
2169
+ });
2170
+ return {
2171
+ messageId: result.id ?? "unknown",
2172
+ channelId: result.channel_id ?? channelId
2173
+ };
2174
+ }
2175
+
2176
+ //#endregion
2177
+ //#region src/discord/send.reactions.ts
2178
+ async function reactMessageDiscord(channelId, messageId, emoji, opts = {}) {
2179
+ const { rest, request } = createDiscordClient(opts, loadConfig());
2180
+ const encoded = normalizeReactionEmoji(emoji);
2181
+ await request(() => rest.put(Routes.channelMessageOwnReaction(channelId, messageId, encoded)), "react");
2182
+ return { ok: true };
2183
+ }
2184
+ async function removeReactionDiscord(channelId, messageId, emoji, opts = {}) {
2185
+ const rest = resolveDiscordRest(opts);
2186
+ const encoded = normalizeReactionEmoji(emoji);
2187
+ await rest.delete(Routes.channelMessageOwnReaction(channelId, messageId, encoded));
2188
+ return { ok: true };
2189
+ }
2190
+ async function removeOwnReactionsDiscord(channelId, messageId, opts = {}) {
2191
+ const rest = resolveDiscordRest(opts);
2192
+ const message = await rest.get(Routes.channelMessage(channelId, messageId));
2193
+ const identifiers = /* @__PURE__ */ new Set();
2194
+ for (const reaction of message.reactions ?? []) {
2195
+ const identifier = buildReactionIdentifier(reaction.emoji);
2196
+ if (identifier) identifiers.add(identifier);
2197
+ }
2198
+ if (identifiers.size === 0) return {
2199
+ ok: true,
2200
+ removed: []
2201
+ };
2202
+ const removed = [];
2203
+ await Promise.allSettled(Array.from(identifiers, (identifier) => {
2204
+ removed.push(identifier);
2205
+ return rest.delete(Routes.channelMessageOwnReaction(channelId, messageId, normalizeReactionEmoji(identifier)));
2206
+ }));
2207
+ return {
2208
+ ok: true,
2209
+ removed
2210
+ };
2211
+ }
2212
+ async function fetchReactionsDiscord(channelId, messageId, opts = {}) {
2213
+ const rest = resolveDiscordRest(opts);
2214
+ const reactions = (await rest.get(Routes.channelMessage(channelId, messageId))).reactions ?? [];
2215
+ if (reactions.length === 0) return [];
2216
+ const limit = typeof opts.limit === "number" && Number.isFinite(opts.limit) ? Math.min(Math.max(Math.floor(opts.limit), 1), 100) : 100;
2217
+ const summaries = [];
2218
+ for (const reaction of reactions) {
2219
+ const identifier = buildReactionIdentifier(reaction.emoji);
2220
+ if (!identifier) continue;
2221
+ const encoded = encodeURIComponent(identifier);
2222
+ const users = await rest.get(Routes.channelMessageReaction(channelId, messageId, encoded), { limit });
2223
+ summaries.push({
2224
+ emoji: {
2225
+ id: reaction.emoji.id ?? null,
2226
+ name: reaction.emoji.name ?? null,
2227
+ raw: formatReactionEmoji(reaction.emoji)
2228
+ },
2229
+ count: reaction.count,
2230
+ users: users.map((user) => ({
2231
+ id: user.id,
2232
+ username: user.username,
2233
+ tag: user.username && user.discriminator ? `${user.username}#${user.discriminator}` : user.username
2234
+ }))
2235
+ });
2236
+ }
2237
+ return summaries;
2238
+ }
2239
+
2240
+ //#endregion
2241
+ //#region src/discord/send.ts
2242
+ var send_exports = /* @__PURE__ */ __exportAll({ sendMessageDiscord: () => sendMessageDiscord });
2243
+
2244
+ //#endregion
2245
+ export { hasAnyGuildPermissionDiscord as $, unpinMessageDiscord as A, listScheduledEventsDiscord as B, editMessageDiscord as C, pinMessageDiscord as D, listThreadsDiscord as E, fetchMemberInfoDiscord as F, uploadStickerDiscord as G, timeoutMemberDiscord as H, fetchRoleInfoDiscord as I, editChannelDiscord as J, createChannelDiscord as K, fetchVoiceStatusDiscord as L, banMemberDiscord as M, createScheduledEventDiscord as N, readMessagesDiscord as O, fetchChannelInfoDiscord as P, fetchChannelPermissionsDiscord as Q, kickMemberDiscord as R, deleteMessageDiscord as S, listPinsDiscord as T, listGuildEmojisDiscord as U, removeRoleDiscord as V, uploadEmojiDiscord as W, removeChannelPermissionDiscord as X, moveChannelDiscord as Y, setChannelPermissionDiscord as Z, sendPollDiscord as _, removeReactionDiscord as a, sendWebhookMessageDiscord as b, formatDiscordComponentEventText as c, parseDiscordModalCustomId as d, chunkDiscordTextWithMode as et, parseDiscordModalCustomIdForCarbon as f, sendMessageDiscord as g, resolveDiscordModalEntry as h, removeOwnReactionsDiscord as i, addRoleDiscord as j, searchMessagesDiscord as k, parseDiscordComponentCustomId as l, resolveDiscordComponentEntry as m, fetchReactionsDiscord as n, sendDiscordComponentMessage as o, readDiscordComponentSpec as p, deleteChannelDiscord as q, reactMessageDiscord as r, createDiscordFormModal as s, send_exports as t, createDiscordRestClient as tt, parseDiscordComponentCustomIdForCarbon as u, sendStickerDiscord as v, fetchMessageDiscord as w, createThreadDiscord as x, sendVoiceMessageDiscord as y, listGuildChannelsDiscord as z };