squidclaw 3.0.24 → 3.0.26

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 (329) hide show
  1. package/dist/{accounts-BH9Qo1sQ.js → accounts-BK8I0Svb.js} +7 -7
  2. package/dist/{accounts-Cuwg9Tan.js → accounts-DeqNOvBo.js} +1 -1
  3. package/dist/{accounts-B1RxFghM.js → accounts-KzgPbLHP.js} +1 -1
  4. package/dist/{acp-cli-Ch55Vzud.js → acp-cli-BwG98FYT.js} +8 -8
  5. package/dist/{agent-scope-nEVgVklg.js → agent-scope-Cq4vDGrK.js} +17 -17
  6. package/dist/{agents-B-ig6ydU.js → agents-DXKtU4Il.js} +14 -14
  7. package/dist/{agents.config-w_Z6Fb4-.js → agents.config-BM-2SLCh.js} +2 -2
  8. package/dist/{api-key-rotation-JPmjv-c0.js → api-key-rotation-6i41mEc9.js} +1 -1
  9. package/dist/{audio-preflight-lT9iRnYi.js → audio-preflight-Bzo_zN4j.js} +4 -4
  10. package/dist/{audio-preflight-CZ--cSZh.js → audio-preflight-C-JCwUKe.js} +34 -34
  11. package/dist/{audio-transcription-runner-YiR1ym3a.js → audio-transcription-runner-Cp_lkLCv.js} +1 -1
  12. package/dist/{audio-transcription-runner-D-uxpkbd.js → audio-transcription-runner-DvQksGUE.js} +23 -23
  13. package/dist/{audit-JLT1FqTt.js → audit-DLTgNDFw.js} +29 -29
  14. package/dist/{auth-BlP9BwaD.js → auth-CuObxnC4.js} +1 -1
  15. package/dist/{auth-choice-Czu7271G.js → auth-choice-BVQQneHM.js} +13 -13
  16. package/dist/{auth-choice-ORZHjbsv.js → auth-choice-CXepQc7c.js} +11 -11
  17. package/dist/{auth-choice.apply-helpers-CdoXMtxm.js → auth-choice.apply-helpers-p1y_DmDT.js} +1 -1
  18. package/dist/{auth-profiles-9T4j6jMy.js → auth-profiles-CX4YYu7Z.js} +16 -16
  19. package/dist/{auth-token-BFc70pes.js → auth-token-Dlk7MMsC.js} +1 -1
  20. package/dist/{banner-CwNmI5G-.js → banner-DMfuBV69.js} +2 -2
  21. package/dist/{bonjour-discovery-eqJcK09r.js → bonjour-discovery-BHz2I6_W.js} +1 -1
  22. package/dist/{browser-cli-DCDPC5sg.js → browser-cli-Dvwk4zAD.js} +12 -12
  23. package/dist/build-info.json +3 -3
  24. package/dist/bundled/session-memory/handler.js +127 -12
  25. package/dist/{call-D7jOWSFr.js → call-BlWEBz99.js} +10 -10
  26. package/dist/{channel-account-context-DJ3rHgVO.js → channel-account-context-CQ6rCiGI.js} +5 -5
  27. package/dist/{channel-activity-wuB3-cfR.js → channel-activity-BZKeZQH-.js} +1 -1
  28. package/dist/{channel-options-BS7BSU_5.js → channel-options-CQ-gER0J.js} +3 -3
  29. package/dist/{channel-selection-CFWQq1nS.js → channel-selection-BqwS1Rlq.js} +1 -1
  30. package/dist/{channel-web-C1qYz-HK.js → channel-web-LLzBxZrT.js} +17 -17
  31. package/dist/{channels-cli-CVNqp5q7.js → channels-cli-D4xUEYYC.js} +93 -93
  32. package/dist/{channels-status-issues-Erzzhl2e.js → channels-status-issues-Dz1_R7Ah.js} +1 -1
  33. package/dist/{chrome-CuBHInKC.js → chrome-CZQnp4VH.js} +8 -8
  34. package/dist/{chrome-DiktJpMU.js → chrome-CoRiYsNu.js} +4 -4
  35. package/dist/{clawbot-cli-C3bt-FEP.js → clawbot-cli-2Zlim_pH.js} +11 -11
  36. package/dist/cli/daemon-cli.js +1 -1
  37. package/dist/{cli-Jyqv2jm8.js → cli-CAID9zkL.js} +73 -73
  38. package/dist/{client-COy24r9W.js → client-G9E5HGM2.js} +2 -2
  39. package/dist/{command-registry-DCojicSG.js → command-registry-AHS8_9da.js} +11 -11
  40. package/dist/{command-secret-targets-CZjP-Bm5.js → command-secret-targets-DAu5nw-j.js} +4 -4
  41. package/dist/{commands-DDHiW-As.js → commands-CnX9I_l4.js} +1 -1
  42. package/dist/{commands-registry--ITOJ-cM.js → commands-registry-_r_JONI4.js} +3 -3
  43. package/dist/{completion-cli-DCTv7Ejv.js → completion-cli-BR1r9_h4.js} +13 -13
  44. package/dist/{config-cli-CSPSSP_R.js → config-cli-D0A8Awoo.js} +7 -7
  45. package/dist/{config-guard-CFauJm79.js → config-guard-BHy2f0hU.js} +3 -3
  46. package/dist/{config-validation-Bt3LfFJ0.js → config-validation-BkvDORAk.js} +3 -3
  47. package/dist/{configure-DAol2gT6.js → configure-XmOqwwy9.js} +17 -17
  48. package/dist/{control-ui-assets-d6VtDSeo.js → control-ui-assets-BYEy341x.js} +1 -1
  49. package/dist/{cron-cli-yS1ww1k2.js → cron-cli-QwZcnjJc.js} +11 -11
  50. package/dist/{daemon-cli-B-yZvTqZ.js → daemon-cli-kJfDhzr8.js} +15 -15
  51. package/dist/{daemon-install-CbPLNiIP.js → daemon-install-Chxlu9Kv.js} +4 -4
  52. package/dist/{daemon-install-helpers-CZDVO_MU.js → daemon-install-helpers-CJtiW2RE.js} +11 -11
  53. package/dist/{deliver-6zfT7daI.js → deliver-B4WWPQvt.js} +1 -1
  54. package/dist/{deliver-D-IQEJ52.js → deliver-CL2RW5UB.js} +7 -7
  55. package/dist/deliver-runtime-C08pF1_3.js +61 -0
  56. package/dist/{deliver-runtime-MBexxUuG.js → deliver-runtime-CeE1X9si.js} +3 -3
  57. package/dist/deps-send-discord.runtime-r80y9aXF.js +36 -0
  58. package/dist/deps-send-imessage.runtime-BmocBgPM.js +35 -0
  59. package/dist/deps-send-signal.runtime-ByJt6qz-.js +34 -0
  60. package/dist/deps-send-slack.runtime-C3UUEG9J.js +32 -0
  61. package/dist/{deps-send-telegram.runtime-Irv0ky5l.js → deps-send-telegram.runtime-BHaZAs2h.js} +16 -16
  62. package/dist/{deps-send-whatsapp.runtime-CrxkfP31.js → deps-send-whatsapp.runtime-COv_qoD2.js} +7 -7
  63. package/dist/deps-send-whatsapp.runtime-__ogpmJj.js +119 -0
  64. package/dist/{devices-cli-CPgutgUT.js → devices-cli-DlQGTogF.js} +8 -8
  65. package/dist/{diagnostic-B4w80e4D.js → diagnostic-CLEtu0MC.js} +1 -1
  66. package/dist/{diagnostics-m7hHHbuE.js → diagnostics--O6mo6KH.js} +5 -5
  67. package/dist/{directory-cli-DqObADBL.js → directory-cli-K9qIwxYa.js} +7 -7
  68. package/dist/{dns-cli-CKbwsWBv.js → dns-cli-qtX-WNMF.js} +5 -5
  69. package/dist/{dock-W3cGg46W.js → dock-DJJAj46v.js} +4 -4
  70. package/dist/{docs-cli-BpZtes_j.js → docs-cli--gGxz79Z.js} +4 -4
  71. package/dist/{doctor-completion--7PR_Vqz.js → doctor-completion-CZoEdMS-.js} +2 -2
  72. package/dist/{doctor-config-flow-BDF7TR6O.js → doctor-config-flow-C-h3yV4z.js} +15 -15
  73. package/dist/{enable--Q7yLTZm.js → enable-C8FNY18p.js} +1 -1
  74. package/dist/entry.js +2 -2
  75. package/dist/{exec-approvals-allowlist-B9bcJkGP.js → exec-approvals-allowlist-CtSREgYh.js} +1 -1
  76. package/dist/{exec-approvals-cli-homtziYt.js → exec-approvals-cli-BmM4RpVn.js} +16 -16
  77. package/dist/{exec-safe-bin-runtime-policy-DECo77U6.js → exec-safe-bin-runtime-policy-CfQeDABF.js} +2 -2
  78. package/dist/extensionAPI.js +6 -6
  79. package/dist/{fetch-lq0SDLLE.js → fetch-CtoC2wgs.js} +3 -3
  80. package/dist/{fetch-guard-CbtWqa1E.js → fetch-guard-Dvzi3MjK.js} +1 -1
  81. package/dist/{plugin-sdk/fs-safe-Dqmpk-Fr.js → fs-safe-DPYj7h8A.js} +6 -6
  82. package/dist/{gateway-cli-B3oqskb4.js → gateway-cli-BJHBChfI.js} +153 -153
  83. package/dist/{gateway-rpc-BBBN9ZJk.js → gateway-rpc-D0AmaBzR.js} +1 -1
  84. package/dist/{health-CjXrJkCb.js → health-XFKFZ7ZJ.js} +11 -11
  85. package/dist/{hooks-cli--aKmd8c9.js → hooks-cli-CXsZK8H9.js} +81 -81
  86. package/dist/{hooks-status-BlgSVDvN.js → hooks-status-DMFBAUq8.js} +1 -1
  87. package/dist/{image-VgwN31FZ.js → image-DKkuLtZ4.js} +1 -1
  88. package/dist/{image-BcYt63Jx.js → image-DSWTfuxv.js} +5 -5
  89. package/dist/{image-ops-LFsSCTyI.js → image-ops-B2uuLIGD.js} +10 -10
  90. package/dist/{image-runtime-CwMuTYvd.js → image-runtime-BMavqm9n.js} +3 -3
  91. package/dist/image-runtime-cza2NTiZ.js +55 -0
  92. package/dist/{inspect-CzsXBsew.js → inspect-4c1uL0x5.js} +4 -4
  93. package/dist/{install-safe-path-DqI19VEv.js → install-safe-path-3muwy3fu.js} +25 -25
  94. package/dist/{installs-P-pYAJm1.js → installs-BiQDtPF0.js} +9 -9
  95. package/dist/{ipv4-B95173MB.js → ipv4-sHllwvAI.js} +1 -1
  96. package/dist/{ir-C7He5vmn.js → ir-BukzlgSp.js} +8 -8
  97. package/dist/{issue-format-CbTfB8Hy.js → issue-format-DCcINW-9.js} +1 -1
  98. package/dist/{json-files-rR19q30D.js → json-files-CuJjdF_0.js} +8 -8
  99. package/dist/{lifecycle-core-ChKClWdw.js → lifecycle-core-CqFEhwHn.js} +5 -5
  100. package/dist/{login-qr-CX0rs3A6.js → login-qr-B8P_EAd-.js} +6 -6
  101. package/dist/{login-CjzRATwO.js → login-zoeewfBu.js} +3 -3
  102. package/dist/{logs-cli-DvHsw1WZ.js → logs-cli-D30BUN6y.js} +9 -9
  103. package/dist/{manager-BVfTfggO.js → manager-5OzUkYLf.js} +14 -14
  104. package/dist/{manager-runtime-BXJJSlzC.js → manager-runtime-BxXpVt3x.js} +9 -9
  105. package/dist/{manifest-registry-1ACGW3OR.js → manifest-registry-7kwtbCH-.js} +1 -1
  106. package/dist/{memory-cli-u8eyO3Ec.js → memory-cli-Dj8tyFtt.js} +12 -12
  107. package/dist/{model-D7hZpWTB.js → model-B8p-EsdJ.js} +2 -2
  108. package/dist/{model-catalog-Drh9Rois.js → model-catalog-BWuvEv1x.js} +3 -3
  109. package/dist/{model-picker-DK_vvKCV.js → model-picker-CLhaaagi.js} +4 -4
  110. package/dist/{models-CFXLX9IF.js → models-5VXwJBU2.js} +17 -17
  111. package/dist/{models-cli-PHQyKESa.js → models-cli-Br56IHfy.js} +78 -78
  112. package/dist/{models-config-DAastTau.js → models-config-poV-4Xlx.js} +6 -6
  113. package/dist/{net-CIh5ellr.js → net-CCnbGop3.js} +2 -2
  114. package/dist/{node-cli-o9qcU9GJ.js → node-cli-C8hvYquX.js} +33 -33
  115. package/dist/{node-command-policy-BeTSnoyk.js → node-command-policy-B_D5ucTj.js} +1 -1
  116. package/dist/{node-service-OVe0_CIs.js → node-service-Z0JprJda.js} +1 -1
  117. package/dist/{nodes-cli-kGx_Qa3c.js → nodes-cli-IIc8fTKT.js} +16 -16
  118. package/dist/{nodes-screen-BrMJzhot.js → nodes-screen-DFFmbaXE.js} +7 -7
  119. package/dist/{npm-pack-install-Dn3FiWXB.js → npm-pack-install-B887us7R.js} +18 -18
  120. package/dist/{npm-resolution-ky_uAlXE.js → npm-resolution-CKtyq4FH.js} +4 -4
  121. package/dist/{onboard-channels-oJCC_sJX.js → onboard-channels-_kVo3Apf.js} +21 -21
  122. package/dist/{onboard-custom-CRpsaM3g.js → onboard-custom-CZtjqrY7.js} +4 -4
  123. package/dist/{onboard-helpers-DwEZeaoe.js → onboard-helpers-BP429__H.js} +10 -10
  124. package/dist/{onboard-hooks-DyxckB2C.js → onboard-hooks-CTbjgLDl.js} +4 -4
  125. package/dist/{onboard-D1Qy64JK.js → onboard-lFwpCpC3.js} +6 -6
  126. package/dist/{onboard-remote-ZgpWNq9Z.js → onboard-remote-BlZB0AE9.js} +4 -4
  127. package/dist/{onboard-skills-DEijVfCg.js → onboard-skills-BT2YOXeP.js} +4 -4
  128. package/dist/{onboarding-Mxqy4O1E.js → onboarding-EEd_g8Zg.js} +14 -14
  129. package/dist/{onboarding.finalize-DiOMx6A5.js → onboarding.finalize-Cs1ukjFN.js} +90 -90
  130. package/dist/{onboarding.gateway-config-9wkBCzzO.js → onboarding.gateway-config-C6N8r5Is.js} +18 -18
  131. package/dist/{onboarding.secret-input-DRnoQSlI.js → onboarding.secret-input-BTK1IG-J.js} +1 -1
  132. package/dist/{openai-model-default-DqE4bNtd.js → openai-model-default-COzeuAI4.js} +2 -2
  133. package/dist/{outbound-CwzUo-rx.js → outbound-B7m9Vcd2.js} +3 -3
  134. package/dist/{outbound-attachment-Bedqixj2.js → outbound-attachment-fdEhzyl9.js} +2 -2
  135. package/dist/{pairing-cli-CsYP0at7.js → pairing-cli-NhoRKes6.js} +8 -8
  136. package/dist/{pairing-labels-CX4CtqRa.js → pairing-labels-CnTvFrUT.js} +1 -1
  137. package/dist/{pairing-store-BC4mnG9S.js → pairing-store-D0eOXyby.js} +3 -3
  138. package/dist/{plugin-sdk/path-alias-guards-gBhrAn14.js → path-alias-guards-vfYYQFIg.js} +1 -1
  139. package/dist/{path-safety-D7CjFQvf.js → path-safety-C95DzArw.js} +1 -1
  140. package/dist/{paths-D6mnO6Ni.js → paths-DfuVHiHu.js} +9 -9
  141. package/dist/{pi-embedded-BN8fghaF.js → pi-embedded-BR5y0dLa.js} +24 -24
  142. package/dist/{pi-embedded-helpers-A9VYPVCH.js → pi-embedded-helpers-CEHpGDRs.js} +3 -3
  143. package/dist/{pi-embedded-helpers-DtCOZSv-.js → pi-embedded-helpers-qCAK_a65.js} +6 -6
  144. package/dist/{pi-model-discovery-Cr1q2cJt.js → pi-model-discovery-CKUePiDc.js} +1 -1
  145. package/dist/{pi-model-discovery-runtime-BHmdAKBK.js → pi-model-discovery-runtime-CNLKih0w.js} +5 -5
  146. package/dist/{pi-tools.before-tool-call.runtime-duKHqrMc.js → pi-tools.before-tool-call.runtime-Bba7rXQq.js} +5 -5
  147. package/dist/{pi-tools.policy-D3RA94WF.js → pi-tools.policy-BwWnFLLV.js} +5 -5
  148. package/dist/{plugin-auto-enable-a3TK3OPT.js → plugin-auto-enable-DJkHW_LG.js} +3 -3
  149. package/dist/{plugin-registry-CFqqDqQV.js → plugin-registry-D3PnPE1D.js} +3 -3
  150. package/dist/plugin-sdk/discord.js +6 -6
  151. package/dist/plugin-sdk/index.js +50 -50
  152. package/dist/plugin-sdk/mattermost.js +3 -3
  153. package/dist/plugin-sdk/signal.js +2 -2
  154. package/dist/{plugins-Bc7YM9X-.js → plugins-BDTkSIi7.js} +2 -2
  155. package/dist/{plugins-cli-vQi8tFye.js → plugins-cli-BA_2daJe.js} +83 -83
  156. package/dist/{ports-DMeUt80n.js → ports-0jLyYbvQ.js} +2 -2
  157. package/dist/{ports-BzfeaNjw.js → ports-Be82TlEg.js} +1 -1
  158. package/dist/{program-Nott_VTb.js → program-D_xdLzmM.js} +81 -81
  159. package/dist/{prompt-select-styled-7mnlZgrQ.js → prompt-select-styled-BsheNEnh.js} +40 -40
  160. package/dist/{provider-auth-helpers-_77rN3Zc.js → provider-auth-helpers-B5kD4Lt6.js} +5 -5
  161. package/dist/{proxy-env-BiKHVg2h.js → proxy-env-CQTuxZoS.js} +1 -1
  162. package/dist/{push-apns-Ce1zzNYB.js → push-apns-BbenjEX4.js} +5 -5
  163. package/dist/{pw-ai-CM87tQwG.js → pw-ai-Du22SYoO.js} +1 -1
  164. package/dist/{pw-ai-CAhTwexx.js → pw-ai-wo5t_KO_.js} +18 -18
  165. package/dist/{plugin-sdk/qmd-manager-6bozlfFg.js → qmd-manager-BkSWV1Q1.js} +17 -11
  166. package/dist/{qr-cli-DzjBpGix.js → qr-cli-DSMYIp-D.js} +2 -2
  167. package/dist/{query-expansion-C0HUJbRn.js → query-expansion-DI9INxTg.js} +12 -12
  168. package/dist/{redact-snapshot-C0McNGqh.js → redact-snapshot-B2YFI3cO.js} +1 -1
  169. package/dist/{register.agent-DtjNdvUh.js → register.agent-Dk_5V5oA.js} +94 -94
  170. package/dist/register.configure-C8OFfGln.js +165 -0
  171. package/dist/{register.maintenance-DERKsSgi.js → register.maintenance-CluQOq8b.js} +95 -95
  172. package/dist/{register.message-DkYxt6gZ.js → register.message-BCTXT5yK.js} +74 -74
  173. package/dist/{register.onboard-BtfW83M0.js → register.onboard-C64oXnvq.js} +18 -18
  174. package/dist/{register.setup-Ba9gMkRk.js → register.setup-Dl3nk2Ui.js} +21 -21
  175. package/dist/{register.status-health-sessions-BILdpWJV.js → register.status-health-sessions-BHtbPeCO.js} +88 -88
  176. package/dist/{register.subclis-Dfm_Zu31.js → register.subclis-CDMFyaKR.js} +31 -31
  177. package/dist/{rpc-mau2U4RG.js → rpc-DA9IhLVG.js} +1 -1
  178. package/dist/{run-main-BF7ybLIy.js → run-main-BcA22Ipv.js} +93 -93
  179. package/dist/{runtime-Bcmv4Epp.js → runtime-BnbzNRr6.js} +3 -3
  180. package/dist/{runtime-config-collectors-Bsjz4isf.js → runtime-config-collectors-CXJdhHRo.js} +1 -1
  181. package/dist/{runtime-whatsapp-login.runtime-COUEKxmy.js → runtime-whatsapp-login.runtime-DRoK8G8H.js} +7 -7
  182. package/dist/{runtime-whatsapp-outbound.runtime-BaWH6-ns.js → runtime-whatsapp-outbound.runtime-C9OiwkWh.js} +15 -15
  183. package/dist/{sandbox-ixDhkfHu.js → sandbox-C3TbYIHd.js} +18 -18
  184. package/dist/{sandbox-cli-DOxm7fjR.js → sandbox-cli-BwK2slfh.js} +25 -25
  185. package/dist/{secrets-cli-DvXznMUb.js → secrets-cli-Beu2lcrf.js} +11 -11
  186. package/dist/{security-cli-3WOXvJR-.js → security-cli-CcpKH_lC.js} +42 -42
  187. package/dist/{send-BuBTLRMz.js → send-CLI3CiQv.js} +6 -6
  188. package/dist/{send-Do2preUU.js → send-DEs83M9V.js} +11 -11
  189. package/dist/{send-BPgrWmUX.js → send-EVcbFVqn.js} +5 -5
  190. package/dist/{send-BVyLW1cn.js → send-RDqyJwZx.js} +8 -8
  191. package/dist/{send-BpkluEZ5.js → send-z-sMjqvX.js} +4 -4
  192. package/dist/{server-DMAPnkgM.js → server-Bm-IxvZZ.js} +20 -20
  193. package/dist/{server-context-Dd8UynDU.js → server-context-Dw_4lGoI.js} +12 -12
  194. package/dist/{server-lifecycle-BEZ2jsQ6.js → server-lifecycle-DYgHYif9.js} +2 -2
  195. package/dist/{server-middleware-B_LyQkOL.js → server-middleware-BVAEuQs7.js} +1 -1
  196. package/dist/{server-node-events-dr5CaM3M.js → server-node-events-Q0cT2ifj.js} +74 -74
  197. package/dist/{service-B5T42CWZ.js → service-DSqxS6_D.js} +15 -15
  198. package/dist/{session-eXSdl5mb.js → session-D0jodcgT.js} +1 -1
  199. package/dist/{session-utils-D12gSo5W.js → session-utils-XY6JwRhT.js} +6 -6
  200. package/dist/{sessions-DgnXAQCc.js → sessions-BWptzMw0.js} +15 -15
  201. package/dist/{sessions-C16G7L5c.js → sessions-CMqv9JEu.js} +4 -4
  202. package/dist/{shared-BYny1RCF.js → shared-BbVxcRzb.js} +3 -3
  203. package/dist/{shared-By6_qr_R.js → shared-D5DTxBPH.js} +1 -1
  204. package/dist/{skill-commands-BcigmiOW.js → skill-commands-fU-Mejn9.js} +5 -5
  205. package/dist/{skill-scanner--QKHR8U0.js → skill-scanner-CvS725eQ.js} +6 -6
  206. package/dist/{skills-EwyaIyKC.js → skills-C85azDXm.js} +3 -3
  207. package/dist/{skills-cli-CqEjN0Yj.js → skills-cli-ZXx6BNar.js} +5 -5
  208. package/dist/{skills-install-CXVKvhIE.js → skills-install-KD6dzNoZ.js} +6 -6
  209. package/dist/{skills-status-Bv8Xt7Lc.js → skills-status-DkO7rxE8.js} +1 -1
  210. package/dist/{slash-commands.runtime-Bi99B_EP.js → slash-commands.runtime-CPlXJtuM.js} +11 -11
  211. package/dist/slash-dispatch.runtime-BOMEVFk0.js +114 -0
  212. package/dist/{slash-dispatch.runtime-sXaUYn4v.js → slash-dispatch.runtime-BcecLKcJ.js} +6 -6
  213. package/dist/{slash-skill-commands.runtime-DOXmvOtU.js → slash-skill-commands.runtime-Cnfq_5LN.js} +15 -15
  214. package/dist/{squidclaw-root-JXyRbQLJ.js → squidclaw-root-BQfLymzj.js} +8 -8
  215. package/dist/{status-Dnl-Um1D.js → status-cU9cJReo.js} +27 -27
  216. package/dist/{status.update-BGIm6we4.js → status.update-CiLU9RPF.js} +2 -2
  217. package/dist/{store-BTkIx401.js → store-BEIcnlgx.js} +5 -5
  218. package/dist/{subagent-registry-CQA6P2FO.js → subagent-registry-CIgFD2oi.js} +149 -149
  219. package/dist/{subagent-registry-runtime-232sNNT6.js → subagent-registry-runtime-Cq9I6PwW.js} +6 -6
  220. package/dist/subagent-registry-runtime-DGTjU9Lb.js +114 -0
  221. package/dist/{system-cli-CJAQxYHv.js → system-cli-i1FWZDjn.js} +9 -9
  222. package/dist/{system-run-command-BaSqmSwR.js → system-run-command-COqCNIBg.js} +1 -1
  223. package/dist/{systemd-B86VePXs.js → systemd-Cj2cX_ZP.js} +9 -9
  224. package/dist/{systemd-hints-BmFWZu_j.js → systemd-hints-46PqJfaq.js} +6 -6
  225. package/dist/{systemd-linger-w7fvBU-1.js → systemd-linger-6Jd9K5p2.js} +1 -1
  226. package/dist/{tables-CGh4CW_h.js → tables-CIpKClDV.js} +1 -1
  227. package/dist/{tailnet-DJq7Mi1o.js → tailnet-CZANZjq6.js} +1 -1
  228. package/dist/{plugin-sdk/target-errors-jlLHihbX.js → target-errors-CRQlPF1u.js} +2 -2
  229. package/dist/{tool-images-D6mmxuWS.js → tool-images-CyzWvDUu.js} +1 -1
  230. package/dist/{tui-BbcmzKaA.js → tui-CC_AbfZr.js} +6 -6
  231. package/dist/{tui-cli-Dv3jSm3x.js → tui-cli-DiJ7zKUD.js} +32 -32
  232. package/dist/{update-BhRrb6BI.js → update-1JhjCqjy.js} +3 -3
  233. package/dist/{update-cli-Oe0fP8x9.js → update-cli-DM_dUip_.js} +104 -104
  234. package/dist/{update-runner-DdA6xBa9.js → update-runner-BBJZmfZ4.js} +16 -16
  235. package/dist/{web-Chw1dtKA.js → web-CWxO_flK.js} +6 -6
  236. package/dist/web-CZhZC1EA.js +118 -0
  237. package/dist/{webhooks-cli-CJLug1QH.js → webhooks-cli-CzDd8ikc.js} +6 -6
  238. package/dist/{whatsapp-actions-_ca5OtHq.js → whatsapp-actions-MR_bBjXO.js} +17 -17
  239. package/dist/{with-timeout-CFfRudNc.js → with-timeout-BZ_Teugb.js} +3 -3
  240. package/dist/{workspace-BbO-M3Jv.js → workspace-D5vNjk5G.js} +1 -1
  241. package/dist/{workspace-dirs-D8D-Ghcl.js → workspace-dirs-CjMIsQti.js} +1 -1
  242. package/dist/{wsl-CsGe5QCP.js → wsl-CvQfS6aU.js} +2 -2
  243. package/package.json +1 -1
  244. package/dist/deliver-runtime-zICm26tE.js +0 -61
  245. package/dist/deps-send-discord.runtime-C_9HZQko.js +0 -36
  246. package/dist/deps-send-imessage.runtime-BMhGsWds.js +0 -35
  247. package/dist/deps-send-signal.runtime-BGhjYiu6.js +0 -34
  248. package/dist/deps-send-slack.runtime-DjBCu-RX.js +0 -32
  249. package/dist/deps-send-whatsapp.runtime-CU257URT.js +0 -119
  250. package/dist/fs-safe-BPQ-per2.js +0 -352
  251. package/dist/image-runtime-Cxoxcx04.js +0 -55
  252. package/dist/path-alias-guards-DeOVetT7.js +0 -43
  253. package/dist/plugin-sdk/accounts-CUEuUR3C.js +0 -46
  254. package/dist/plugin-sdk/accounts-D0W2pELU.js +0 -288
  255. package/dist/plugin-sdk/accounts-ucj0odJq.js +0 -35
  256. package/dist/plugin-sdk/active-listener-BO7eBEG_.js +0 -50
  257. package/dist/plugin-sdk/api-key-rotation-C4C_mDsg.js +0 -181
  258. package/dist/plugin-sdk/audio-preflight-Cqdo0JKm.js +0 -69
  259. package/dist/plugin-sdk/audio-transcription-runner-DnEooIyE.js +0 -2176
  260. package/dist/plugin-sdk/audit-membership-runtime-B9b-zRwg.js +0 -58
  261. package/dist/plugin-sdk/channel-activity-BMWLw4o2.js +0 -94
  262. package/dist/plugin-sdk/channel-web-B8bj7MB9.js +0 -2256
  263. package/dist/plugin-sdk/chrome-CV-q0Lmc.js +0 -2415
  264. package/dist/plugin-sdk/commands-registry-e7YoqrbP.js +0 -1125
  265. package/dist/plugin-sdk/config-B2B64aX0.js +0 -17911
  266. package/dist/plugin-sdk/deliver-BkyBtcLR.js +0 -1694
  267. package/dist/plugin-sdk/deliver-runtime-O4lwAWMw.js +0 -32
  268. package/dist/plugin-sdk/deps-send-discord.runtime-BAeeBldY.js +0 -23
  269. package/dist/plugin-sdk/deps-send-imessage.runtime-EL-CfikZ.js +0 -22
  270. package/dist/plugin-sdk/deps-send-signal.runtime-BeemHeUu.js +0 -21
  271. package/dist/plugin-sdk/deps-send-slack.runtime-DTttkC0N.js +0 -19
  272. package/dist/plugin-sdk/deps-send-telegram.runtime-Dsf9Cnka.js +0 -24
  273. package/dist/plugin-sdk/deps-send-whatsapp.runtime-DvdFo6lj.js +0 -57
  274. package/dist/plugin-sdk/diagnostic-DPRVoKTk.js +0 -319
  275. package/dist/plugin-sdk/errors-B8oJXuCF.js +0 -54
  276. package/dist/plugin-sdk/fetch-guard-F0Fnqisy.js +0 -156
  277. package/dist/plugin-sdk/image-cBW8L8pp.js +0 -2310
  278. package/dist/plugin-sdk/image-ops-BP8ix1GC.js +0 -584
  279. package/dist/plugin-sdk/image-runtime-9xkgSlNz.js +0 -25
  280. package/dist/plugin-sdk/ir-DWEc6zOp.js +0 -1296
  281. package/dist/plugin-sdk/local-roots-BIPT8uAO.js +0 -186
  282. package/dist/plugin-sdk/logger-DDdrdbDu.js +0 -1163
  283. package/dist/plugin-sdk/login-BMTiGutN.js +0 -57
  284. package/dist/plugin-sdk/login-qr-BFxqYUkc.js +0 -320
  285. package/dist/plugin-sdk/manager-BD-aYaZ8.js +0 -3917
  286. package/dist/plugin-sdk/manager-runtime-C5bRwUlz.js +0 -15
  287. package/dist/plugin-sdk/outbound-Bm07xvO6.js +0 -212
  288. package/dist/plugin-sdk/outbound-attachment-DLsaxDsc.js +0 -19
  289. package/dist/plugin-sdk/paths-C6W4VHoa.js +0 -166
  290. package/dist/plugin-sdk/pi-embedded-helpers-BExwPvTh.js +0 -9627
  291. package/dist/plugin-sdk/pi-model-discovery-DdctvBeX.js +0 -134
  292. package/dist/plugin-sdk/pi-model-discovery-runtime-DrtpLJjk.js +0 -8
  293. package/dist/plugin-sdk/pi-tools.before-tool-call.runtime-rgTz3FBl.js +0 -354
  294. package/dist/plugin-sdk/plugins-BN64HHZA.js +0 -864
  295. package/dist/plugin-sdk/proxy-fetch-ZPEvp58f.js +0 -38
  296. package/dist/plugin-sdk/pw-ai-DBm3RdBK.js +0 -1938
  297. package/dist/plugin-sdk/query-expansion-eeVz_aEm.js +0 -1011
  298. package/dist/plugin-sdk/redact-BoNEjbpF.js +0 -319
  299. package/dist/plugin-sdk/reply-Bp49JV3f.js +0 -98828
  300. package/dist/plugin-sdk/resolve-outbound-target-DXfjGlZQ.js +0 -40
  301. package/dist/plugin-sdk/run-with-concurrency-5DMu9szx.js +0 -1994
  302. package/dist/plugin-sdk/runtime-whatsapp-login.runtime-D2hkJBa-.js +0 -10
  303. package/dist/plugin-sdk/runtime-whatsapp-outbound.runtime-C06I4adi.js +0 -19
  304. package/dist/plugin-sdk/send-B9xnwtQ-.js +0 -540
  305. package/dist/plugin-sdk/send-BxySs-Cu.js +0 -2587
  306. package/dist/plugin-sdk/send-D9THKp_J.js +0 -414
  307. package/dist/plugin-sdk/send-DCuaaP2w.js +0 -503
  308. package/dist/plugin-sdk/send-Dm_-_xje.js +0 -3135
  309. package/dist/plugin-sdk/session-DDzIZHxt.js +0 -169
  310. package/dist/plugin-sdk/skill-commands-DRvqtuFC.js +0 -342
  311. package/dist/plugin-sdk/skills-BWwlfbVj.js +0 -1428
  312. package/dist/plugin-sdk/slash-commands.runtime-BzYsaTST.js +0 -13
  313. package/dist/plugin-sdk/slash-dispatch.runtime-Cty8EAD9.js +0 -52
  314. package/dist/plugin-sdk/slash-skill-commands.runtime-sg98L8BK.js +0 -16
  315. package/dist/plugin-sdk/ssrf-DOBwjFow.js +0 -202
  316. package/dist/plugin-sdk/store-BKDR_-Qk.js +0 -81
  317. package/dist/plugin-sdk/subagent-registry-runtime-Dz50ieim.js +0 -52
  318. package/dist/plugin-sdk/tables-GIj79us5.js +0 -55
  319. package/dist/plugin-sdk/thinking-BgdUnMZ2.js +0 -1206
  320. package/dist/plugin-sdk/tokens-CTIYTLWu.js +0 -52
  321. package/dist/plugin-sdk/tool-images-GSlvf6RP.js +0 -274
  322. package/dist/plugin-sdk/web-BK9mCTAc.js +0 -56
  323. package/dist/plugin-sdk/whatsapp-actions-DQpK_5Ds.js +0 -80
  324. package/dist/qmd-manager-BsL_hcOB.js +0 -1454
  325. package/dist/register.configure-BkwbM-hb.js +0 -165
  326. package/dist/slash-dispatch.runtime-reuPLnse.js +0 -114
  327. package/dist/subagent-registry-runtime-CqgIWcSl.js +0 -114
  328. package/dist/target-errors-C_rnMuJ2.js +0 -195
  329. package/dist/web-w04Gvwqi.js +0 -118
@@ -1,414 +0,0 @@
1
- import { n as loadConfig } from "./config-B2B64aX0.js";
2
- import { L as logVerbose } from "./logger-DDdrdbDu.js";
3
- import { F as resolveSlackBotToken, M as resolveSlackAccount, m as parseSlackTarget } from "./plugins-BN64HHZA.js";
4
- import { r as withTrustedEnvProxyGuardedFetchMode, t as fetchWithSsrFGuard } from "./fetch-guard-F0Fnqisy.js";
5
- import { c as chunkMarkdownTextWithMode, d as resolveChunkMode, f as resolveTextChunkLimit, i as resolveMarkdownTableMode, n as markdownToIR, t as chunkMarkdownIR, v as loadWebMedia } from "./ir-DWEc6zOp.js";
6
- import { t as renderMarkdownWithMarkers } from "./render-HmipMDlP.js";
7
- import { i as isSilentReplyText } from "./tokens-CTIYTLWu.js";
8
- import { WebClient } from "@slack/web-api";
9
-
10
- //#region src/slack/blocks-input.ts
11
- const SLACK_MAX_BLOCKS = 50;
12
- function parseBlocksJson(raw) {
13
- try {
14
- return JSON.parse(raw);
15
- } catch {
16
- throw new Error("blocks must be valid JSON");
17
- }
18
- }
19
- function assertBlocksArray(raw) {
20
- if (!Array.isArray(raw)) throw new Error("blocks must be an array");
21
- if (raw.length === 0) throw new Error("blocks must contain at least one block");
22
- if (raw.length > SLACK_MAX_BLOCKS) throw new Error(`blocks cannot exceed ${SLACK_MAX_BLOCKS} items`);
23
- for (const block of raw) {
24
- if (!block || typeof block !== "object" || Array.isArray(block)) throw new Error("each block must be an object");
25
- const type = block.type;
26
- if (typeof type !== "string" || type.trim().length === 0) throw new Error("each block must include a non-empty string type");
27
- }
28
- }
29
- function validateSlackBlocksArray(raw) {
30
- assertBlocksArray(raw);
31
- return raw;
32
- }
33
- function parseSlackBlocksInput(raw) {
34
- if (raw == null) return;
35
- return validateSlackBlocksArray(typeof raw === "string" ? parseBlocksJson(raw) : raw);
36
- }
37
-
38
- //#endregion
39
- //#region src/slack/client.ts
40
- const SLACK_DEFAULT_RETRY_OPTIONS = {
41
- retries: 2,
42
- factor: 2,
43
- minTimeout: 500,
44
- maxTimeout: 3e3,
45
- randomize: true
46
- };
47
- function resolveSlackWebClientOptions(options = {}) {
48
- return {
49
- ...options,
50
- retryConfig: options.retryConfig ?? SLACK_DEFAULT_RETRY_OPTIONS
51
- };
52
- }
53
- function createSlackWebClient(token, options = {}) {
54
- return new WebClient(token, resolveSlackWebClientOptions(options));
55
- }
56
-
57
- //#endregion
58
- //#region src/slack/blocks-fallback.ts
59
- function cleanCandidate(value) {
60
- if (typeof value !== "string") return;
61
- const normalized = value.replace(/\s+/g, " ").trim();
62
- return normalized.length > 0 ? normalized : void 0;
63
- }
64
- function readSectionText(block) {
65
- return cleanCandidate(block.text?.text);
66
- }
67
- function readHeaderText(block) {
68
- return cleanCandidate(block.text?.text);
69
- }
70
- function readImageText(block) {
71
- return cleanCandidate(block.alt_text) ?? cleanCandidate(block.title?.text);
72
- }
73
- function readVideoText(block) {
74
- return cleanCandidate(block.title?.text) ?? cleanCandidate(block.alt_text);
75
- }
76
- function readContextText(block) {
77
- if (!Array.isArray(block.elements)) return;
78
- const textParts = block.elements.map((element) => cleanCandidate(element.text)).filter((value) => Boolean(value));
79
- return textParts.length > 0 ? textParts.join(" ") : void 0;
80
- }
81
- function buildSlackBlocksFallbackText(blocks) {
82
- for (const raw of blocks) {
83
- const block = raw;
84
- switch (block.type) {
85
- case "header": {
86
- const text = readHeaderText(block);
87
- if (text) return text;
88
- break;
89
- }
90
- case "section": {
91
- const text = readSectionText(block);
92
- if (text) return text;
93
- break;
94
- }
95
- case "image": {
96
- const text = readImageText(block);
97
- if (text) return text;
98
- return "Shared an image";
99
- }
100
- case "video": {
101
- const text = readVideoText(block);
102
- if (text) return text;
103
- return "Shared a video";
104
- }
105
- case "file": return "Shared a file";
106
- case "context": {
107
- const text = readContextText(block);
108
- if (text) return text;
109
- break;
110
- }
111
- default: break;
112
- }
113
- }
114
- return "Shared a Block Kit message";
115
- }
116
-
117
- //#endregion
118
- //#region src/slack/format.ts
119
- function escapeSlackMrkdwnSegment(text) {
120
- return text.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;");
121
- }
122
- const SLACK_ANGLE_TOKEN_RE = /<[^>\n]+>/g;
123
- function isAllowedSlackAngleToken(token) {
124
- if (!token.startsWith("<") || !token.endsWith(">")) return false;
125
- const inner = token.slice(1, -1);
126
- return inner.startsWith("@") || inner.startsWith("#") || inner.startsWith("!") || inner.startsWith("mailto:") || inner.startsWith("tel:") || inner.startsWith("http://") || inner.startsWith("https://") || inner.startsWith("slack://");
127
- }
128
- function escapeSlackMrkdwnContent(text) {
129
- if (!text) return "";
130
- if (!text.includes("&") && !text.includes("<") && !text.includes(">")) return text;
131
- SLACK_ANGLE_TOKEN_RE.lastIndex = 0;
132
- const out = [];
133
- let lastIndex = 0;
134
- for (let match = SLACK_ANGLE_TOKEN_RE.exec(text); match; match = SLACK_ANGLE_TOKEN_RE.exec(text)) {
135
- const matchIndex = match.index ?? 0;
136
- out.push(escapeSlackMrkdwnSegment(text.slice(lastIndex, matchIndex)));
137
- const token = match[0] ?? "";
138
- out.push(isAllowedSlackAngleToken(token) ? token : escapeSlackMrkdwnSegment(token));
139
- lastIndex = matchIndex + token.length;
140
- }
141
- out.push(escapeSlackMrkdwnSegment(text.slice(lastIndex)));
142
- return out.join("");
143
- }
144
- function escapeSlackMrkdwnText(text) {
145
- if (!text) return "";
146
- if (!text.includes("&") && !text.includes("<") && !text.includes(">")) return text;
147
- return text.split("\n").map((line) => {
148
- if (line.startsWith("> ")) return `> ${escapeSlackMrkdwnContent(line.slice(2))}`;
149
- return escapeSlackMrkdwnContent(line);
150
- }).join("\n");
151
- }
152
- function buildSlackLink(link, text) {
153
- const href = link.href.trim();
154
- if (!href) return null;
155
- const trimmedLabel = text.slice(link.start, link.end).trim();
156
- const comparableHref = href.startsWith("mailto:") ? href.slice(7) : href;
157
- if (!(trimmedLabel.length > 0 && trimmedLabel !== href && trimmedLabel !== comparableHref)) return null;
158
- const safeHref = escapeSlackMrkdwnSegment(href);
159
- return {
160
- start: link.start,
161
- end: link.end,
162
- open: `<${safeHref}|`,
163
- close: ">"
164
- };
165
- }
166
- function buildSlackRenderOptions() {
167
- return {
168
- styleMarkers: {
169
- bold: {
170
- open: "*",
171
- close: "*"
172
- },
173
- italic: {
174
- open: "_",
175
- close: "_"
176
- },
177
- strikethrough: {
178
- open: "~",
179
- close: "~"
180
- },
181
- code: {
182
- open: "`",
183
- close: "`"
184
- },
185
- code_block: {
186
- open: "```\n",
187
- close: "```"
188
- }
189
- },
190
- escapeText: escapeSlackMrkdwnText,
191
- buildLink: buildSlackLink
192
- };
193
- }
194
- function markdownToSlackMrkdwn(markdown, options = {}) {
195
- return renderMarkdownWithMarkers(markdownToIR(markdown ?? "", {
196
- linkify: false,
197
- autolink: false,
198
- headingStyle: "bold",
199
- blockquotePrefix: "> ",
200
- tableMode: options.tableMode
201
- }), buildSlackRenderOptions());
202
- }
203
- function normalizeSlackOutboundText(markdown) {
204
- return markdownToSlackMrkdwn(markdown ?? "");
205
- }
206
- function markdownToSlackMrkdwnChunks(markdown, limit, options = {}) {
207
- const chunks = chunkMarkdownIR(markdownToIR(markdown ?? "", {
208
- linkify: false,
209
- autolink: false,
210
- headingStyle: "bold",
211
- blockquotePrefix: "> ",
212
- tableMode: options.tableMode
213
- }), limit);
214
- const renderOptions = buildSlackRenderOptions();
215
- return chunks.map((chunk) => renderMarkdownWithMarkers(chunk, renderOptions));
216
- }
217
-
218
- //#endregion
219
- //#region src/slack/send.ts
220
- const SLACK_TEXT_LIMIT = 4e3;
221
- const SLACK_UPLOAD_SSRF_POLICY = {
222
- allowedHostnames: [
223
- "*.slack.com",
224
- "*.slack-edge.com",
225
- "*.slack-files.com"
226
- ],
227
- allowRfc2544BenchmarkRange: true
228
- };
229
- function hasCustomIdentity(identity) {
230
- return Boolean(identity?.username || identity?.iconUrl || identity?.iconEmoji);
231
- }
232
- function isSlackCustomizeScopeError(err) {
233
- if (!(err instanceof Error)) return false;
234
- const maybeData = err;
235
- if (maybeData.data?.error?.toLowerCase() !== "missing_scope") return false;
236
- if ((maybeData.data?.needed?.toLowerCase())?.includes("chat:write.customize")) return true;
237
- return [...maybeData.data?.response_metadata?.scopes ?? [], ...maybeData.data?.response_metadata?.acceptedScopes ?? []].map((scope) => scope.toLowerCase()).includes("chat:write.customize");
238
- }
239
- async function postSlackMessageBestEffort(params) {
240
- const basePayload = {
241
- channel: params.channelId,
242
- text: params.text,
243
- thread_ts: params.threadTs,
244
- ...params.blocks?.length ? { blocks: params.blocks } : {}
245
- };
246
- try {
247
- if (params.identity?.iconUrl) return await params.client.chat.postMessage({
248
- ...basePayload,
249
- ...params.identity.username ? { username: params.identity.username } : {},
250
- icon_url: params.identity.iconUrl
251
- });
252
- if (params.identity?.iconEmoji) return await params.client.chat.postMessage({
253
- ...basePayload,
254
- ...params.identity.username ? { username: params.identity.username } : {},
255
- icon_emoji: params.identity.iconEmoji
256
- });
257
- return await params.client.chat.postMessage({
258
- ...basePayload,
259
- ...params.identity?.username ? { username: params.identity.username } : {}
260
- });
261
- } catch (err) {
262
- if (!hasCustomIdentity(params.identity) || !isSlackCustomizeScopeError(err)) throw err;
263
- logVerbose("slack send: missing chat:write.customize, retrying without custom identity");
264
- return params.client.chat.postMessage(basePayload);
265
- }
266
- }
267
- function resolveToken(params) {
268
- const explicit = resolveSlackBotToken(params.explicit);
269
- if (explicit) return explicit;
270
- const fallback = resolveSlackBotToken(params.fallbackToken);
271
- if (!fallback) {
272
- logVerbose(`slack send: missing bot token for account=${params.accountId} explicit=${Boolean(params.explicit)} source=${params.fallbackSource ?? "unknown"}`);
273
- throw new Error(`Slack bot token missing for account "${params.accountId}" (set channels.slack.accounts.${params.accountId}.botToken or SLACK_BOT_TOKEN for default).`);
274
- }
275
- return fallback;
276
- }
277
- function parseRecipient(raw) {
278
- const target = parseSlackTarget(raw);
279
- if (!target) throw new Error("Recipient is required for Slack sends");
280
- return {
281
- kind: target.kind,
282
- id: target.id
283
- };
284
- }
285
- async function resolveChannelId(client, recipient) {
286
- if (!(recipient.kind === "user" || /^U[A-Z0-9]+$/i.test(recipient.id))) return { channelId: recipient.id };
287
- const channelId = (await client.conversations.open({ users: recipient.id })).channel?.id;
288
- if (!channelId) throw new Error("Failed to open Slack DM channel");
289
- return {
290
- channelId,
291
- isDm: true
292
- };
293
- }
294
- async function uploadSlackFile(params) {
295
- const { buffer, contentType, fileName } = await loadWebMedia(params.mediaUrl, {
296
- maxBytes: params.maxBytes,
297
- localRoots: params.mediaLocalRoots
298
- });
299
- const uploadUrlResp = await params.client.files.getUploadURLExternal({
300
- filename: fileName ?? "upload",
301
- length: buffer.length
302
- });
303
- if (!uploadUrlResp.ok || !uploadUrlResp.upload_url || !uploadUrlResp.file_id) throw new Error(`Failed to get upload URL: ${uploadUrlResp.error ?? "unknown error"}`);
304
- const uploadBody = new Uint8Array(buffer);
305
- const { response: uploadResp, release } = await fetchWithSsrFGuard(withTrustedEnvProxyGuardedFetchMode({
306
- url: uploadUrlResp.upload_url,
307
- init: {
308
- method: "POST",
309
- ...contentType ? { headers: { "Content-Type": contentType } } : {},
310
- body: uploadBody
311
- },
312
- policy: SLACK_UPLOAD_SSRF_POLICY,
313
- auditContext: "slack-upload-file"
314
- }));
315
- try {
316
- if (!uploadResp.ok) throw new Error(`Failed to upload file: HTTP ${uploadResp.status}`);
317
- } finally {
318
- await release();
319
- }
320
- const completeResp = await params.client.files.completeUploadExternal({
321
- files: [{
322
- id: uploadUrlResp.file_id,
323
- title: fileName ?? "upload"
324
- }],
325
- channel_id: params.channelId,
326
- ...params.caption ? { initial_comment: params.caption } : {},
327
- ...params.threadTs ? { thread_ts: params.threadTs } : {}
328
- });
329
- if (!completeResp.ok) throw new Error(`Failed to complete upload: ${completeResp.error ?? "unknown error"}`);
330
- return uploadUrlResp.file_id;
331
- }
332
- async function sendMessageSlack(to, message, opts = {}) {
333
- const trimmedMessage = message?.trim() ?? "";
334
- if (isSilentReplyText(trimmedMessage) && !opts.mediaUrl && !opts.blocks) {
335
- logVerbose("slack send: suppressed NO_REPLY token before API call");
336
- return {
337
- messageId: "suppressed",
338
- channelId: ""
339
- };
340
- }
341
- const blocks = opts.blocks == null ? void 0 : validateSlackBlocksArray(opts.blocks);
342
- if (!trimmedMessage && !opts.mediaUrl && !blocks) throw new Error("Slack send requires text, blocks, or media");
343
- const cfg = opts.cfg ?? loadConfig();
344
- const account = resolveSlackAccount({
345
- cfg,
346
- accountId: opts.accountId
347
- });
348
- const token = resolveToken({
349
- explicit: opts.token,
350
- accountId: account.accountId,
351
- fallbackToken: account.botToken,
352
- fallbackSource: account.botTokenSource
353
- });
354
- const client = opts.client ?? createSlackWebClient(token);
355
- const { channelId } = await resolveChannelId(client, parseRecipient(to));
356
- if (blocks) {
357
- if (opts.mediaUrl) throw new Error("Slack send does not support blocks with mediaUrl");
358
- return {
359
- messageId: (await postSlackMessageBestEffort({
360
- client,
361
- channelId,
362
- text: trimmedMessage || buildSlackBlocksFallbackText(blocks),
363
- threadTs: opts.threadTs,
364
- identity: opts.identity,
365
- blocks
366
- })).ts ?? "unknown",
367
- channelId
368
- };
369
- }
370
- const textLimit = resolveTextChunkLimit(cfg, "slack", account.accountId);
371
- const chunkLimit = Math.min(textLimit, SLACK_TEXT_LIMIT);
372
- const tableMode = resolveMarkdownTableMode({
373
- cfg,
374
- channel: "slack",
375
- accountId: account.accountId
376
- });
377
- const chunkMode = resolveChunkMode(cfg, "slack", account.accountId);
378
- const chunks = (chunkMode === "newline" ? chunkMarkdownTextWithMode(trimmedMessage, chunkLimit, chunkMode) : [trimmedMessage]).flatMap((markdown) => markdownToSlackMrkdwnChunks(markdown, chunkLimit, { tableMode }));
379
- if (!chunks.length && trimmedMessage) chunks.push(trimmedMessage);
380
- const mediaMaxBytes = typeof account.config.mediaMaxMb === "number" ? account.config.mediaMaxMb * 1024 * 1024 : void 0;
381
- let lastMessageId = "";
382
- if (opts.mediaUrl) {
383
- const [firstChunk, ...rest] = chunks;
384
- lastMessageId = await uploadSlackFile({
385
- client,
386
- channelId,
387
- mediaUrl: opts.mediaUrl,
388
- mediaLocalRoots: opts.mediaLocalRoots,
389
- caption: firstChunk,
390
- threadTs: opts.threadTs,
391
- maxBytes: mediaMaxBytes
392
- });
393
- for (const chunk of rest) lastMessageId = (await postSlackMessageBestEffort({
394
- client,
395
- channelId,
396
- text: chunk,
397
- threadTs: opts.threadTs,
398
- identity: opts.identity
399
- })).ts ?? lastMessageId;
400
- } else for (const chunk of chunks.length ? chunks : [""]) lastMessageId = (await postSlackMessageBestEffort({
401
- client,
402
- channelId,
403
- text: chunk,
404
- threadTs: opts.threadTs,
405
- identity: opts.identity
406
- })).ts ?? lastMessageId;
407
- return {
408
- messageId: lastMessageId || "unknown",
409
- channelId
410
- };
411
- }
412
-
413
- //#endregion
414
- export { createSlackWebClient as a, validateSlackBlocksArray as c, buildSlackBlocksFallbackText as i, markdownToSlackMrkdwnChunks as n, resolveSlackWebClientOptions as o, normalizeSlackOutboundText as r, parseSlackBlocksInput as s, sendMessageSlack as t };