squidclaw 3.0.3 → 3.0.4

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 (240) hide show
  1. package/dist/{audio-preflight-BTYxAJjy.js → audio-preflight-BKgdc7dS.js} +4 -4
  2. package/dist/{audio-preflight-Dkl6Z32z.js → audio-preflight-DpCWFB4z.js} +4 -4
  3. package/dist/{audio-transcription-runner-Gi_h5HEE.js → audio-transcription-runner-B2BdTEps.js} +1 -1
  4. package/dist/{audio-transcription-runner-DBkDgluo.js → audio-transcription-runner-BnbdYMDl.js} +1 -1
  5. package/dist/build-info.json +3 -3
  6. package/dist/bundled/boot-md/handler.js +6 -6
  7. package/dist/bundled/session-memory/handler.js +6 -6
  8. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  9. package/dist/{chrome-CAd6FQEn.js → chrome-BQDCalPp.js} +8 -8
  10. package/dist/{chrome-pBkBuWci.js → chrome-CjxCwFA9.js} +8 -8
  11. package/dist/{command-registry-CvgCFxfY.js → command-registry-CxiSVXru.js} +6 -6
  12. package/dist/{completion-cli-BGM1V6EN.js → completion-cli-s0fxD0OE.js} +2 -2
  13. package/dist/{completion-cli-OrgUDc2S.js → completion-cli-slzdOlRV.js} +1 -1
  14. package/dist/{config-cli-DbBvjvpS.js → config-cli-C0mk9eRl.js} +1 -1
  15. package/dist/{config-cli-uIP4r17f.js → config-cli-DhHEA_Nc.js} +1 -1
  16. package/dist/{configure-BGvoAfbs.js → configure-CeLdVVyh.js} +8 -1
  17. package/dist/{configure-BOsTXjBw.js → configure-FRd92XZ8.js} +8 -1
  18. package/dist/{deliver-DBXe-ZmL.js → deliver-D-f6Wa3i.js} +1 -1
  19. package/dist/{deliver-BJuiq0GS.js → deliver-aL8yOYS1.js} +1 -1
  20. package/dist/{deliver-runtime-DHKcNQzq.js → deliver-runtime-ChVR6sR3.js} +3 -3
  21. package/dist/{deliver-runtime-GlnBJNCj.js → deliver-runtime-_egya0QZ.js} +3 -3
  22. package/dist/{deps-send-whatsapp.runtime-DdxKewuy.js → deps-send-whatsapp.runtime-CZj97m5A.js} +7 -7
  23. package/dist/{deps-send-whatsapp.runtime-CslTuV47.js → deps-send-whatsapp.runtime-CiG6xd2e.js} +7 -7
  24. package/dist/{doctor-completion-42wcUATu.js → doctor-completion-I-WDZUs1.js} +1 -1
  25. package/dist/{doctor-completion-D6RGDBD5.js → doctor-completion-mnJOkoQ_.js} +1 -1
  26. package/dist/entry.js +2 -2
  27. package/dist/extensionAPI.js +6 -6
  28. package/dist/{gateway-cli-CG3mshpO.js → gateway-cli-B5rTNvd7.js} +1 -1
  29. package/dist/{gateway-cli-BbPfLLT6.js → gateway-cli-BHfkbI0u.js} +1 -1
  30. package/dist/{image-j_UomzVG.js → image-C-C7hQ26.js} +1 -1
  31. package/dist/{image-sRW3RpTY.js → image-DKZCmkET.js} +1 -1
  32. package/dist/{image-runtime-BNh3IfMj.js → image-runtime-D7n4dID4.js} +3 -3
  33. package/dist/{image-runtime-SUtf9jqh.js → image-runtime-poRypm-b.js} +3 -3
  34. package/dist/index.js +1 -1
  35. package/dist/llm-slug-generator.js +6 -6
  36. package/dist/{onboard-ChxvwUze.js → onboard-BP2Cr_Xy.js} +1 -1
  37. package/dist/{onboard-1KfKwvMR.js → onboard-CCJCvPgf.js} +1 -1
  38. package/dist/{onboarding-D6kMb3yv.js → onboarding-D5G87dvM.js} +1 -1
  39. package/dist/{onboarding-DuUMPrqA.js → onboarding-D7CIbxzd.js} +1 -1
  40. package/dist/{onboarding.finalize-KTOhO1-l.js → onboarding.finalize-B1MmYTFV.js} +4 -4
  41. package/dist/{onboarding.finalize-bphDUwZy.js → onboarding.finalize-Cxzl-fYU.js} +3 -3
  42. package/dist/{pi-embedded-BP2UlUm_.js → pi-embedded-CHzwPt6X.js} +24 -24
  43. package/dist/{pi-embedded-BGz_qdCc.js → pi-embedded-MktS4l8v.js} +24 -24
  44. package/dist/{pi-embedded-helpers-CmLnmKlb.js → pi-embedded-helpers-Bse_QhEf.js} +3 -3
  45. package/dist/{pi-embedded-helpers-BruaFB5l.js → pi-embedded-helpers-DYWYzEOC.js} +3 -3
  46. package/dist/plugin-sdk/accounts-BNuRM3rG.js +288 -0
  47. package/dist/plugin-sdk/accounts-CGTYP7Rh.js +46 -0
  48. package/dist/plugin-sdk/accounts-CcS9IAhD.js +35 -0
  49. package/dist/plugin-sdk/{accounts-YTdQYQFr.js → accounts-CxUSDHsT.js} +3 -3
  50. package/dist/plugin-sdk/{accounts-h__dTrLK.js → accounts-PSzw-z3S.js} +2 -2
  51. package/dist/plugin-sdk/{accounts-DghIDNk2.js → accounts-kr-Gz1hk.js} +2 -2
  52. package/dist/plugin-sdk/{active-listener-_PRYjtJv.js → active-listener-BQNrTcR3.js} +2 -2
  53. package/dist/plugin-sdk/active-listener-CTsLn1AX.js +50 -0
  54. package/dist/plugin-sdk/{api-key-rotation-mVDSAkKQ.js → api-key-rotation-Bhck7wki.js} +2 -2
  55. package/dist/plugin-sdk/api-key-rotation-DE4gr5YM.js +181 -0
  56. package/dist/plugin-sdk/audio-preflight-CRGLqp-g.js +69 -0
  57. package/dist/plugin-sdk/{audio-preflight-BZlQM-qX.js → audio-preflight-_xgGaeho.js} +26 -26
  58. package/dist/plugin-sdk/{audio-transcription-runner-CrYTX8py.js → audio-transcription-runner-Dwc0Eh-B.js} +11 -11
  59. package/dist/plugin-sdk/audio-transcription-runner-RXsskMMk.js +2176 -0
  60. package/dist/plugin-sdk/audit-membership-runtime-B9b-zRwg.js +58 -0
  61. package/dist/plugin-sdk/{audit-membership-runtime-Xl20kCBe.js → audit-membership-runtime-DHQDvH4u.js} +2 -2
  62. package/dist/plugin-sdk/{channel-activity-gwxRn4wF.js → channel-activity-XajEg_DL.js} +3 -3
  63. package/dist/plugin-sdk/channel-activity-gPvD1D7S.js +94 -0
  64. package/dist/plugin-sdk/{channel-web-1WF-Nabe.js → channel-web-KtqCp4mz.js} +18 -18
  65. package/dist/plugin-sdk/channel-web-LGl1zPJt.js +2256 -0
  66. package/dist/plugin-sdk/chrome-9Y_LcUg1.js +2415 -0
  67. package/dist/plugin-sdk/{chrome-BXbYwXRH.js → chrome-diV5m81I.js} +6 -6
  68. package/dist/plugin-sdk/commands-registry-CcdEPxVg.js +1125 -0
  69. package/dist/plugin-sdk/{commands-registry-0w-aZenK.js → commands-registry-DwZAJuut.js} +4 -4
  70. package/dist/plugin-sdk/{common-DBOCt6Yv.js → common-CqnO92P8.js} +2 -2
  71. package/dist/plugin-sdk/config-CrQ5bCrw.js +17912 -0
  72. package/dist/plugin-sdk/{config-pRtEoVyZ.js → config-DYbtdrsT.js} +7 -7
  73. package/dist/plugin-sdk/deliver-D3xr5AkB.js +1694 -0
  74. package/dist/plugin-sdk/{deliver-FjlJrtZk.js → deliver-DG_7Uagn.js} +10 -10
  75. package/dist/plugin-sdk/deliver-runtime-B79ZQu69.js +32 -0
  76. package/dist/plugin-sdk/deliver-runtime-BdTC7uKE.js +32 -0
  77. package/dist/plugin-sdk/deps-send-discord.runtime-BOQZIqC8.js +23 -0
  78. package/dist/plugin-sdk/deps-send-discord.runtime-CObCNMt3.js +23 -0
  79. package/dist/plugin-sdk/deps-send-imessage.runtime-CuHOc9Ka.js +22 -0
  80. package/dist/plugin-sdk/deps-send-imessage.runtime-DlWgi2DH.js +22 -0
  81. package/dist/plugin-sdk/deps-send-signal.runtime-Cz7FT8J8.js +21 -0
  82. package/dist/plugin-sdk/deps-send-signal.runtime-iPynghkE.js +21 -0
  83. package/dist/plugin-sdk/deps-send-slack.runtime-D4vDoRsg.js +19 -0
  84. package/dist/plugin-sdk/deps-send-slack.runtime-DNTbE5jS.js +19 -0
  85. package/dist/plugin-sdk/deps-send-telegram.runtime-7CR-xtCF.js +24 -0
  86. package/dist/plugin-sdk/deps-send-telegram.runtime-DjTVED_m.js +24 -0
  87. package/dist/plugin-sdk/deps-send-whatsapp.runtime-CRWOIKRC.js +57 -0
  88. package/dist/plugin-sdk/deps-send-whatsapp.runtime-bUi8kghi.js +57 -0
  89. package/dist/plugin-sdk/diagnostic-BXkLYs_9.js +319 -0
  90. package/dist/plugin-sdk/{diagnostic-Dt2i3afe.js → diagnostic-CT7v_kM2.js} +2 -2
  91. package/dist/plugin-sdk/{errors-CgRPdp3o.js → errors-9oVz7reJ.js} +1 -1
  92. package/dist/plugin-sdk/errors-B8oJXuCF.js +54 -0
  93. package/dist/plugin-sdk/fetch-guard-C55uvn27.js +156 -0
  94. package/dist/plugin-sdk/{fetch-guard-DyPZh8r2.js → fetch-guard-Or5BCq0E.js} +2 -2
  95. package/dist/plugin-sdk/{fs-safe-DqCO1D4C.js → fs-safe-DFbwq9CS.js} +3 -3
  96. package/dist/plugin-sdk/fs-safe-Dqmpk-Fr.js +352 -0
  97. package/dist/plugin-sdk/image-3xW7IJdq.js +2310 -0
  98. package/dist/plugin-sdk/image-ops-BjK2qZZn.js +584 -0
  99. package/dist/plugin-sdk/{image-ops-sw0uZ0GN.js → image-ops-CMsocOob.js} +2 -2
  100. package/dist/plugin-sdk/image-runtime-CZZJJqcW.js +25 -0
  101. package/dist/plugin-sdk/image-runtime-Cjz368oj.js +25 -0
  102. package/dist/plugin-sdk/{image-CQ9TZ9vq.js → image-rycGCqJO.js} +6 -6
  103. package/dist/plugin-sdk/index.js +50 -50
  104. package/dist/plugin-sdk/ir-CS7uuQhN.js +1296 -0
  105. package/dist/plugin-sdk/{ir-BVZ5kUMb.js → ir-DihI2SIz.js} +7 -7
  106. package/dist/plugin-sdk/{local-roots-fO3ZgW3G.js → local-roots-1xVosTZ4.js} +4 -4
  107. package/dist/plugin-sdk/local-roots-DmOKwiNW.js +186 -0
  108. package/dist/plugin-sdk/{logger-DIb2cGHp.js → logger-Bg4vIUJn.js} +2 -2
  109. package/dist/plugin-sdk/logger-DDdrdbDu.js +1163 -0
  110. package/dist/plugin-sdk/login-BSEeU27Y.js +57 -0
  111. package/dist/plugin-sdk/{login-Dg5cxB_3.js → login-YhFrVUWo.js} +4 -4
  112. package/dist/plugin-sdk/login-qr-BwWJsDSj.js +320 -0
  113. package/dist/plugin-sdk/{login-qr-C3Vn30cq.js → login-qr-SpUTuwYv.js} +5 -5
  114. package/dist/plugin-sdk/manager-DiXPCubI.js +3917 -0
  115. package/dist/plugin-sdk/{manager-BR-TwWTH.js → manager-DrzOPeMD.js} +8 -8
  116. package/dist/plugin-sdk/manager-runtime-CF55pBNe.js +15 -0
  117. package/dist/plugin-sdk/manager-runtime-Ct0m9UJC.js +15 -0
  118. package/dist/plugin-sdk/mattermost.js +3 -3
  119. package/dist/plugin-sdk/{outbound-1a3Z_QJ2.js → outbound-Cc4cUn9K.js} +5 -5
  120. package/dist/plugin-sdk/outbound-attachment-BoFx05zw.js +19 -0
  121. package/dist/plugin-sdk/{outbound-attachment-BTQjD4YE.js → outbound-attachment-Dtp3hQgc.js} +2 -2
  122. package/dist/plugin-sdk/outbound-cpqK1GFe.js +212 -0
  123. package/dist/plugin-sdk/{path-alias-guards-TnxupPQC.js → path-alias-guards-DA0MhfkG.js} +1 -1
  124. package/dist/plugin-sdk/path-alias-guards-gBhrAn14.js +43 -0
  125. package/dist/plugin-sdk/paths-C6W4VHoa.js +166 -0
  126. package/dist/plugin-sdk/{paths-B7_75Pdr.js → paths-CP67O8eN.js} +1 -1
  127. package/dist/plugin-sdk/{pi-embedded-helpers-DZRNadD8.js → pi-embedded-helpers-BDJ_4Plh.js} +16 -16
  128. package/dist/plugin-sdk/pi-embedded-helpers-C-B9B6Sp.js +9627 -0
  129. package/dist/plugin-sdk/pi-model-discovery-BGEeoPzN.js +134 -0
  130. package/dist/plugin-sdk/{pi-model-discovery-DGh6xekX.js → pi-model-discovery-Mk0GTDJl.js} +1 -1
  131. package/dist/plugin-sdk/pi-model-discovery-runtime-BHZ_Htob.js +8 -0
  132. package/dist/plugin-sdk/pi-model-discovery-runtime-BrwtJHPU.js +8 -0
  133. package/dist/plugin-sdk/pi-tools.before-tool-call.runtime-ByN_xThw.js +354 -0
  134. package/dist/plugin-sdk/{pi-tools.before-tool-call.runtime-BZ9XgG_x.js → pi-tools.before-tool-call.runtime-DV72wTDb.js} +4 -4
  135. package/dist/plugin-sdk/plugins-D5cdn70e.js +864 -0
  136. package/dist/plugin-sdk/{plugins-B8pWVYug.js → plugins-DSs2-fnK.js} +4 -4
  137. package/dist/plugin-sdk/{proxy-env-BOlkiW1-.js → proxy-env-Ib4-LUh-.js} +1 -1
  138. package/dist/plugin-sdk/{proxy-fetch-Dt5BedH8.js → proxy-fetch-Cf3IUSDw.js} +1 -1
  139. package/dist/plugin-sdk/proxy-fetch-ZPEvp58f.js +38 -0
  140. package/dist/plugin-sdk/pw-ai-C_QOIuin.js +1938 -0
  141. package/dist/plugin-sdk/{pw-ai-C17A1o4w.js → pw-ai-DIx2wpkY.js} +9 -9
  142. package/dist/plugin-sdk/qmd-manager-6bozlfFg.js +1448 -0
  143. package/dist/plugin-sdk/{qmd-manager-Bei6TaFq.js → qmd-manager-Ov9ElEfG.js} +7 -7
  144. package/dist/plugin-sdk/{query-expansion-POz2za8a.js → query-expansion-CzjwW461.js} +4 -4
  145. package/dist/plugin-sdk/query-expansion-eeVz_aEm.js +1011 -0
  146. package/dist/plugin-sdk/{redact-9WsNyb7S.js → redact-BoNEjbpF.js} +1 -1
  147. package/dist/plugin-sdk/redact-DfACyt0X.js +319 -0
  148. package/dist/plugin-sdk/reply-CQUX_haM.js +98828 -0
  149. package/dist/plugin-sdk/{reply-BFbijn6_.js → reply-CWWUd_JS.js} +73 -73
  150. package/dist/plugin-sdk/{resolve-outbound-target-B9iFEh0y.js → resolve-outbound-target-BOkvxZtM.js} +2 -2
  151. package/dist/plugin-sdk/resolve-outbound-target-Dbz0O8cR.js +40 -0
  152. package/dist/plugin-sdk/run-with-concurrency-5DMu9szx.js +1994 -0
  153. package/dist/plugin-sdk/{run-with-concurrency-DmTrN5JG.js → run-with-concurrency-kVooFCVo.js} +1 -1
  154. package/dist/plugin-sdk/runtime-whatsapp-login.runtime-DitS0I1z.js +10 -0
  155. package/dist/plugin-sdk/runtime-whatsapp-login.runtime-OthrtsLL.js +10 -0
  156. package/dist/plugin-sdk/runtime-whatsapp-outbound.runtime-CYCr6A3v.js +19 -0
  157. package/dist/plugin-sdk/runtime-whatsapp-outbound.runtime-Q2HL0zL3.js +19 -0
  158. package/dist/plugin-sdk/send-BACEu1Un.js +414 -0
  159. package/dist/plugin-sdk/{send-BGZo6HW1.js → send-BP1fSEBR.js} +5 -5
  160. package/dist/plugin-sdk/send-BU4OoR7u.js +2587 -0
  161. package/dist/plugin-sdk/{send-BqkUDZed.js → send-BeLBlAsQ.js} +13 -13
  162. package/dist/plugin-sdk/{send-BisREGBZ.js → send-D9CSOGul.js} +6 -6
  163. package/dist/plugin-sdk/{send-D6_nNvi0.js → send-DLKxJJYV.js} +8 -8
  164. package/dist/plugin-sdk/send-DbxOJ_BC.js +3135 -0
  165. package/dist/plugin-sdk/{send-Dj7XEcZN.js → send-XZ6IXCtL.js} +7 -7
  166. package/dist/plugin-sdk/send-n932vjT5.js +540 -0
  167. package/dist/plugin-sdk/send-uCPS53j8.js +503 -0
  168. package/dist/plugin-sdk/session-DenDKR_-.js +169 -0
  169. package/dist/plugin-sdk/{session-D4KDs7Hq.js → session-DtLUYWvY.js} +3 -3
  170. package/dist/plugin-sdk/skill-commands-BK1KDKmS.js +342 -0
  171. package/dist/plugin-sdk/{skill-commands-D_xeseiI.js → skill-commands-Bv7EZypt.js} +4 -4
  172. package/dist/plugin-sdk/{skills-Bs2b3JfV.js → skills-BzXN4uev.js} +6 -6
  173. package/dist/plugin-sdk/skills-D4am-zkO.js +1428 -0
  174. package/dist/plugin-sdk/slash-commands.runtime-Bx1K1iqP.js +13 -0
  175. package/dist/plugin-sdk/slash-commands.runtime-DWfFqMZw.js +13 -0
  176. package/dist/plugin-sdk/slash-dispatch.runtime-DVn338JI.js +52 -0
  177. package/dist/plugin-sdk/slash-dispatch.runtime-pnWH5AjM.js +52 -0
  178. package/dist/plugin-sdk/slash-skill-commands.runtime-Dbi_YzPO.js +16 -0
  179. package/dist/plugin-sdk/slash-skill-commands.runtime-DxvNWv_E.js +16 -0
  180. package/dist/plugin-sdk/ssrf-2WBi1Tzx.js +202 -0
  181. package/dist/plugin-sdk/store-BKDMuvyn.js +81 -0
  182. package/dist/plugin-sdk/{store-B7ESm9_L.js → store-DnJhFFW5.js} +2 -2
  183. package/dist/plugin-sdk/subagent-registry-runtime-FhP0l-Rw.js +52 -0
  184. package/dist/plugin-sdk/subagent-registry-runtime-hH9ADku1.js +52 -0
  185. package/dist/plugin-sdk/{tables-1vhBJPK_.js → tables-CpmqssLF.js} +1 -1
  186. package/dist/plugin-sdk/tables-CrDYcv_b.js +55 -0
  187. package/dist/plugin-sdk/target-errors-aOwE-MIU.js +195 -0
  188. package/dist/plugin-sdk/{thinking-DjaClmzi.js → thinking-1UCPuD9d.js} +7 -7
  189. package/dist/plugin-sdk/thinking-D41FMh9T.js +1206 -0
  190. package/dist/plugin-sdk/{tokens-CLE20fRI.js → tokens-CTIYTLWu.js} +1 -1
  191. package/dist/plugin-sdk/tokens-DAL_5WHL.js +52 -0
  192. package/dist/plugin-sdk/{tool-images-B95xcwiR.js → tool-images-CWc54lpI.js} +2 -2
  193. package/dist/plugin-sdk/tool-images-RX4QTMnt.js +274 -0
  194. package/dist/plugin-sdk/web-AtEy-48y.js +56 -0
  195. package/dist/plugin-sdk/web-DjKONHqF.js +56 -0
  196. package/dist/plugin-sdk/{whatsapp-actions-BYpcWkTN.js → whatsapp-actions-BF6ih4Gi.js} +17 -17
  197. package/dist/plugin-sdk/whatsapp-actions-DEZcm_CZ.js +80 -0
  198. package/dist/plugin-sdk/whatsapp.js +50 -50
  199. package/dist/{program-xNEHPhT8.js → program-2J-jgdfk.js} +2 -2
  200. package/dist/{program-context-J_FyEsaS.js → program-context-SjYSWx_N.js} +8 -8
  201. package/dist/{prompt-select-styled-B1LjjgQ0.js → prompt-select-styled-Baiu3mAU.js} +1 -1
  202. package/dist/{prompt-select-styled-BRiogP_P.js → prompt-select-styled-DPnVmH8f.js} +1 -1
  203. package/dist/{pw-ai-7kHgUGj0.js → pw-ai-BwRP3TWc.js} +1 -1
  204. package/dist/{pw-ai-BmGrTicP.js → pw-ai-zFPBSxaL.js} +1 -1
  205. package/dist/{register.configure-DezZ4Q1p.js → register.configure-Ao1K2uze.js} +1 -1
  206. package/dist/{register.configure-C4p9ad2q.js → register.configure-CCkfhF-7.js} +1 -1
  207. package/dist/{register.maintenance-CzMKTC2a.js → register.maintenance-DMbs8w2m.js} +4 -4
  208. package/dist/{register.maintenance-CTvFmkAm.js → register.maintenance-pLpE2oF-.js} +5 -5
  209. package/dist/{register.onboard-C39xhpv1.js → register.onboard-Cb8xLIye.js} +2 -2
  210. package/dist/{register.onboard-DZt2kSAg.js → register.onboard-IMrHOeW_.js} +2 -2
  211. package/dist/{register.setup-04L_8wfA.js → register.setup-CX8IUmew.js} +2 -2
  212. package/dist/{register.setup-DWctFmOd.js → register.setup-DU7IDzAv.js} +2 -2
  213. package/dist/{register.subclis-C3TphbCF.js → register.subclis-BIbL6FBV.js} +3 -3
  214. package/dist/{run-main-7tknx04F.js → run-main-CpDZPsC_.js} +5 -5
  215. package/dist/{slash-dispatch.runtime-BL3qA1O3.js → slash-dispatch.runtime-DkcAYuyK.js} +6 -6
  216. package/dist/{slash-dispatch.runtime-Dh2L_3Tg.js → slash-dispatch.runtime-DuJRl-LD.js} +6 -6
  217. package/dist/{subagent-registry-runtime-MtjBCcgn.js → subagent-registry-runtime-BlRAnw80.js} +6 -6
  218. package/dist/{subagent-registry-runtime-BRNDawlJ.js → subagent-registry-runtime-COygB9b1.js} +6 -6
  219. package/dist/{update-cli-0UiUaT3q.js → update-cli-BwhvSo1R.js} +5 -5
  220. package/dist/{update-cli-C-uyQcFS.js → update-cli-TQEfxhWF.js} +4 -4
  221. package/dist/{web-D1ZoRVB0.js → web-DddJa7ZT.js} +6 -6
  222. package/dist/{web-B7kbCskR.js → web-DyCuTR9b.js} +6 -6
  223. package/package.json +7 -7
  224. package/dist/plugin-sdk/deliver-runtime-DEzvpBW1.js +0 -32
  225. package/dist/plugin-sdk/deps-send-discord.runtime-Bhusa_Hi.js +0 -23
  226. package/dist/plugin-sdk/deps-send-imessage.runtime-bmakPm5f.js +0 -22
  227. package/dist/plugin-sdk/deps-send-signal.runtime-n00sfFto.js +0 -21
  228. package/dist/plugin-sdk/deps-send-slack.runtime-BvM3Z-Mr.js +0 -19
  229. package/dist/plugin-sdk/deps-send-telegram.runtime-CPuMkcmo.js +0 -24
  230. package/dist/plugin-sdk/deps-send-whatsapp.runtime-BzO6S-KX.js +0 -57
  231. package/dist/plugin-sdk/image-runtime-17_mTqsy.js +0 -25
  232. package/dist/plugin-sdk/manager-runtime-CvI9wF8N.js +0 -15
  233. package/dist/plugin-sdk/pi-model-discovery-runtime-DjjBdPYt.js +0 -8
  234. package/dist/plugin-sdk/runtime-whatsapp-login.runtime-DzhkSmLi.js +0 -10
  235. package/dist/plugin-sdk/runtime-whatsapp-outbound.runtime-DyILWezU.js +0 -19
  236. package/dist/plugin-sdk/slash-commands.runtime-CUb5sqqf.js +0 -13
  237. package/dist/plugin-sdk/slash-dispatch.runtime-DCB6bGjB.js +0 -52
  238. package/dist/plugin-sdk/slash-skill-commands.runtime-BqEweE4K.js +0 -16
  239. package/dist/plugin-sdk/subagent-registry-runtime-CCUW4SbM.js +0 -52
  240. package/dist/plugin-sdk/web-DeRmHQ4_.js +0 -56
@@ -10,15 +10,15 @@ import { a as logWebSelfId, h as resolveAccountEntry, i as getWebAuthAgeMs, m as
10
10
  import { a as resolveSlackWebClientOptions, c as buildSlackBlocksFallbackText, i as createSlackWebClient, l as parseSlackTarget, n as markdownToSlackMrkdwnChunks, o as parseSlackBlocksInput, r as normalizeSlackOutboundText, s as validateSlackBlocksArray, t as sendMessageSlack, u as resolveSlackChannelId } from "./send-D7hOGQmY.js";
11
11
  import { $ as stripUndefinedFields, A as unpinMessageDiscord, At as resolveChannelEntryMatchWithFallback, B as listScheduledEventsDiscord, C as editMessageDiscord, Ct as resolveDiscordSystemLocation, D as pinMessageDiscord, Dt as applyChannelMatchMeta, E as listThreadsDiscord, Et as fetchDiscord, F as fetchMemberInfoDiscord, G as uploadStickerDiscord, H as timeoutMemberDiscord, I as fetchRoleInfoDiscord, J as editChannelDiscord, K as createChannelDiscord, L as fetchVoiceStatusDiscord, M as banMemberDiscord, N as createScheduledEventDiscord, O as readMessagesDiscord, Ot as buildChannelKeyCandidates, P as fetchChannelInfoDiscord, Q as sendDiscordText, R as kickMemberDiscord, S as deleteMessageDiscord, St as formatDiscordUserTag, T as listPinsDiscord, Tt as DiscordApiError, U as listGuildEmojisDiscord, V as removeRoleDiscord, W as uploadEmojiDiscord, X as removeChannelPermissionDiscord, Y as moveChannelDiscord, Z as setChannelPermissionDiscord, _ as sendStickerDiscord, _t as resolveDiscordOwnerAllowFrom, a as sendDiscordComponentMessage, at as parseDiscordTarget, b as formatMention, bt as shouldEmitDiscordReactionNotification, c as parseDiscordComponentCustomId, ct as listDiscordDirectoryPeersLive, d as parseDiscordModalCustomIdForCarbon, dt as normalizeDiscordSlug, et as fetchChannelPermissionsDiscord, f as readDiscordComponentSpec, ft as resolveDiscordAllowListMatch, g as sendPollDiscord, gt as resolveDiscordOwnerAccess, h as sendMessageDiscord, ht as resolveDiscordMemberAccessState, i as removeReactionDiscord, it as createDiscordRestClient, j as addRoleDiscord, k as searchMessagesDiscord, kt as normalizeChannelSlug, l as parseDiscordComponentCustomIdForCarbon, lt as isDiscordGroupAllowedByPolicy, m as resolveDiscordModalEntry, mt as resolveDiscordGuildEntry, n as reactMessageDiscord, nt as chunkDiscordTextWithMode, o as createDiscordFormModal, ot as resolveDiscordChannelId, p as resolveDiscordComponentEntry, pt as resolveDiscordChannelConfigWithFallback, q as deleteChannelDiscord, r as removeOwnReactionsDiscord, rt as createDiscordClient, s as formatDiscordComponentEventText, st as listDiscordDirectoryGroupsLive, t as fetchReactionsDiscord, tt as hasAnyGuildPermissionDiscord, u as parseDiscordModalCustomId, ut as normalizeDiscordAllowList, v as sendVoiceMessageDiscord, vt as resolveDiscordShouldRequireMention, w as fetchMessageDiscord, wt as resolveTimestampMs, x as createThreadDiscord, xt as formatDiscordReactionEmoji, y as sendWebhookMessageDiscord, yt as resolveGroupDmAllow, z as listGuildChannelsDiscord } from "./send-DxlbTmGE.js";
12
12
  import { n as generateSecureUuid, t as generateSecureToken } from "./secure-random-D68-1Hhs.js";
13
- import { C as createReplyToModeFilterForChannel, D as normalizeTargetForProvider, E as normalizeChannelTargetInput, O as getGlobalHookRunner, S as shouldSuppressReasoningPayload, T as buildTargetResolverSignature, _ as applyReplyThreading, a as normalizeReplyPayloadsForDelivery, b as isRenderablePayload, c as splitMediaFromOutput, d as toInternalMessageReceivedContext, f as toInternalMessageTranscribedContext, g as applyReplyTagsToPayload, h as fireAndForgetHook, i as normalizeOutboundPayloadsForJson, k as initializeGlobalHookRunner, l as deriveInboundMessageHookContext, m as toPluginMessageReceivedEvent, n as formatOutboundPayloadLog, o as throwIfAborted, p as toPluginMessageContext, r as normalizeOutboundPayloads, s as parseReplyDirectives, t as deliverOutboundPayloads, u as toInternalMessagePreprocessedContext, v as filterMessagingToolDuplicates, w as resolveReplyToMode, x as shouldSuppressMessagingToolReplies, y as filterMessagingToolMediaDuplicates } from "./deliver-BJuiq0GS.js";
13
+ import { C as createReplyToModeFilterForChannel, D as normalizeTargetForProvider, E as normalizeChannelTargetInput, O as getGlobalHookRunner, S as shouldSuppressReasoningPayload, T as buildTargetResolverSignature, _ as applyReplyThreading, a as normalizeReplyPayloadsForDelivery, b as isRenderablePayload, c as splitMediaFromOutput, d as toInternalMessageReceivedContext, f as toInternalMessageTranscribedContext, g as applyReplyTagsToPayload, h as fireAndForgetHook, i as normalizeOutboundPayloadsForJson, k as initializeGlobalHookRunner, l as deriveInboundMessageHookContext, m as toPluginMessageReceivedEvent, n as formatOutboundPayloadLog, o as throwIfAborted, p as toPluginMessageContext, r as normalizeOutboundPayloads, s as parseReplyDirectives, t as deliverOutboundPayloads, u as toInternalMessagePreprocessedContext, v as filterMessagingToolDuplicates, w as resolveReplyToMode, x as shouldSuppressMessagingToolReplies, y as filterMessagingToolMediaDuplicates } from "./deliver-aL8yOYS1.js";
14
14
  import { a as logMessageQueued, c as logWebhookError, d as startDiagnosticHeartbeat, f as stopDiagnosticHeartbeat, h as isDiagnosticsEnabled, i as logMessageProcessed, l as logWebhookProcessed, m as emitDiagnosticEvent, n as logLaneDequeue, o as logSessionStateChange, p as getDiagnosticSessionState, r as logLaneEnqueue, t as diag, u as logWebhookReceived } from "./diagnostic-C1FUUMnV.js";
15
15
  import { n as resolveSignalAccount, t as listEnabledSignalAccounts } from "./accounts-Bw_h44Sz.js";
16
16
  import { i as resolveTelegramTargetChatType, r as parseTelegramTarget } from "./targets-D1wBrTyc.js";
17
17
  import { A as mediaKindFromMime, C as imageMimeFromFormat, E as kindFromMime, O as MAX_IMAGE_BYTES, T as isGifMedia, _ as GATEWAY_CLIENT_IDS, b as detectMime, c as INTERNAL_MESSAGE_CHANNEL, d as isInternalMessageChannel, f as isMarkdownCapableMessageChannel, g as resolveMessageChannel, h as resolveGatewayMessageChannel, i as getImageMetadata, l as isDeliverableMessageChannel, m as normalizeMessageChannel, p as listDeliverableMessageChannels, s as resizeToJpeg, u as isGatewayMessageChannel, v as GATEWAY_CLIENT_MODES, w as isAudioFileName, x as extensionForMime, y as GATEWAY_CLIENT_NAMES } from "./image-ops-t3DLKnpb.js";
18
18
  import { $ as removeChannelAllowFromStoreEntry, A as expandTextLinks, B as resolveTelegramThreadSpec, C as buildSenderName, D as buildTelegramThreadParams, E as buildTelegramParentPeer, F as resolveTelegramForumThreadId, G as firstDefined$1, H as normalizeAllowFrom$2, I as resolveTelegramGroupAllowFromContext, J as resolveGroupAllowFromSources, K as isSenderIdAllowed, L as resolveTelegramMediaPlaceholder, M as hasBotMention, N as normalizeForwardedContext, O as buildTypingThreadParams, P as resolveTelegramDirectPeerId, Q as readChannelAllowFromStore, R as resolveTelegramReplyId, S as buildSenderLabel, T as buildTelegramGroupPeerId, U as normalizeDmAllowFromWithStore$1, V as isSenderAllowed$1, W as resolveSenderAllowMatch$1, X as toLocationContext, Y as formatLocationText, Z as addChannelAllowFromStoreEntry, _ as splitTelegramCaption, a as reactMessageTelegram, at as isVoiceCompatibleAudio, b as resolveCronStorePath, c as sendStickerTelegram, d as isRecoverableTelegramNetworkError, et as upsertChannelPairingRequest, f as markdownToTelegramChunks, g as resolveTelegramFetch, h as wrapFileReferencesInHtml, i as editMessageTelegram, it as listPairingChannels, j as extractTelegramLocation, k as describeReplyTarget, l as resolveTelegramVoiceSend, m as renderTelegramHtmlText, n as createForumTopicTelegram, nt as writeJsonFileAtomically, o as sendMessageTelegram, p as markdownToTelegramHtml, q as mergeDmAllowFromSources, r as deleteMessageTelegram, rt as getPairingAdapter, s as sendPollTelegram, t as buildInlineKeyboard, tt as readJsonFileWithFallback, u as wasSentByBot, v as withTelegramApiErrorLogging, w as buildTelegramGroupFrom, x as buildGroupLabel, y as loadCronStore, z as resolveTelegramStreamMode } from "./send-BMtsqKqs.js";
19
19
  import { n as discoverModels, t as discoverAuthStorage } from "./pi-model-discovery-k9ASrJ8f.js";
20
- import { $ as deliveryContextFromSession, $t as matchesAnyGlobPattern, A as isTransientHttpError, At as resolveGroupSessionKey, B as parseSessionThreadInfo, Bt as resolveGatewayCredentialsFromConfig, C as isCompactionFailureError, Ct as resolveFreshSessionTotalTokens, D as isLikelyContextOverflowError, Dt as resolveMainSessionKey, E as isFailoverErrorMessage, Et as resolveExplicitAgentSessionKey, F as isTimeoutErrorMessage, Ft as resolveBrowserConfig, G as readSessionUpdatedAt, Gt as collectExplicitAllowlist, Ht as resolveSandboxConfigForAgent, I as ensureSandboxWorkspaceForSession, It as resolveProfile, J as updateLastRoute, Jt as stripPluginOnlyAllowlist, K as recordSessionMetaFromInbound, Kt as expandPolicyWithPluginGroups, L as resolveSandboxContext, Lt as getBridgeAuthForPort, M as parseImageSizeError, Mt as resolveSessionLockMaxHoldFromTimeout, N as sanitizeUserFacingText, Nt as createBrowserRouteContext, O as isRateLimitAssistantError, Ot as deriveSessionMetaPatch, P as isAuthPermanentErrorMessage, Pt as registerBrowserRoutes, Q as resolveCacheTtlMs$1, Qt as compileGlobPatterns, R as resolveSandboxRuntimeStatus, Rt as ensureBrowserControlAuth, S as isCloudCodeAssistFormatError, St as mergeSessionEntry, T as isFailoverAssistantError, Tt as canonicalizeMainSessionAlias, U as resolveAndPersistSessionFile, Ut as applyOwnerOnlyToolPolicy, V as appendAssistantMessageToSessionTranscript, Vt as trimToUndefined$1, W as loadSessionStore, Wt as buildPluginToolGroups, X as updateSessionStoreEntry, Xt as normalizeToolName, Y as updateSessionStore, Yt as expandToolGroups, Z as isCacheEnabled, Zt as resolveToolProfilePolicy, _ as formatBillingErrorMessage, _t as resolveChannelResetConfig, a as isMessagingToolDuplicateNormalized, an as sanitizeGoogleTurnOrdering, at as archiveSessionTranscripts, b as isAuthAssistantError, bt as resolveThreadFlag, c as extractToolCallsFromAssistant, ct as extractToolCallNames, d as downgradeOpenAIFunctionCallReasoningPairs, dt as applyInputProvenanceToUserMessage, en as buildBootstrapContextFiles, et as deliveryContextKey, f as downgradeOpenAIReasoningBlocks, ft as hasInterSessionUserProvenance, g as formatAssistantErrorText, gt as evaluateSessionFreshness, h as classifyFailoverReason, ht as resolveSessionKey, in as resolveBootstrapTotalMaxChars, it as normalizeAccountId$3, j as parseImageDimensionError, jt as acquireSessionWriteLock, k as isRawApiErrorPayload, kt as resolveConversationLabel, l as extractToolResultId, lt as parseInlineDirectives$1, m as BILLING_ERROR_USER_MESSAGE, mt as jsonUtf8Bytes, n as validateGeminiTurns, nn as resolveBootstrapMaxChars, nt as normalizeDeliveryContext, o as normalizeTextForComparison, ot as capArrayByJsonBytes, p as isGoogleModelApi, pt as normalizeInputProvenance, qt as mergeAlsoAllowPolicy, r as pickFallbackThinkingLevel, rn as resolveBootstrapPromptTruncationWarningMode, rt as normalizeSessionDeliveryFields, s as sanitizeSessionMessagesImages, st as countToolResults, t as validateAnthropicTurns, tn as ensureSessionHeader, tt as mergeDeliveryContext, u as sanitizeToolCallIdsForCloudCodeAssist, ut as INPUT_PROVENANCE_KIND_VALUES, v as formatRawAssistantErrorForUi, vt as resolveSessionResetPolicy, w as isContextOverflowError, wt as setSessionRuntimeModel, x as isBillingAssistantError, xt as DEFAULT_RESET_TRIGGERS, y as getApiErrorPayloadFingerprint, yt as resolveSessionResetType, z as extractDeliveryInfo, zt as resolveBrowserControlAuth } from "./pi-embedded-helpers-BruaFB5l.js";
21
- import { A as rawDataToString, B as isSecureWebSocketUrl, C as ensureChromeExtensionRelayServer, N as DEFAULT_UPLOAD_DIR, P as resolveExistingPathsWithinRoot, U as DEFAULT_AI_SNAPSHOT_MAX_CHARS, s as resolveLsofCommandSync, z as isLoopbackHost } from "./chrome-CAd6FQEn.js";
20
+ import { $ as deliveryContextFromSession, $t as matchesAnyGlobPattern, A as isTransientHttpError, At as resolveGroupSessionKey, B as parseSessionThreadInfo, Bt as resolveGatewayCredentialsFromConfig, C as isCompactionFailureError, Ct as resolveFreshSessionTotalTokens, D as isLikelyContextOverflowError, Dt as resolveMainSessionKey, E as isFailoverErrorMessage, Et as resolveExplicitAgentSessionKey, F as isTimeoutErrorMessage, Ft as resolveBrowserConfig, G as readSessionUpdatedAt, Gt as collectExplicitAllowlist, Ht as resolveSandboxConfigForAgent, I as ensureSandboxWorkspaceForSession, It as resolveProfile, J as updateLastRoute, Jt as stripPluginOnlyAllowlist, K as recordSessionMetaFromInbound, Kt as expandPolicyWithPluginGroups, L as resolveSandboxContext, Lt as getBridgeAuthForPort, M as parseImageSizeError, Mt as resolveSessionLockMaxHoldFromTimeout, N as sanitizeUserFacingText, Nt as createBrowserRouteContext, O as isRateLimitAssistantError, Ot as deriveSessionMetaPatch, P as isAuthPermanentErrorMessage, Pt as registerBrowserRoutes, Q as resolveCacheTtlMs$1, Qt as compileGlobPatterns, R as resolveSandboxRuntimeStatus, Rt as ensureBrowserControlAuth, S as isCloudCodeAssistFormatError, St as mergeSessionEntry, T as isFailoverAssistantError, Tt as canonicalizeMainSessionAlias, U as resolveAndPersistSessionFile, Ut as applyOwnerOnlyToolPolicy, V as appendAssistantMessageToSessionTranscript, Vt as trimToUndefined$1, W as loadSessionStore, Wt as buildPluginToolGroups, X as updateSessionStoreEntry, Xt as normalizeToolName, Y as updateSessionStore, Yt as expandToolGroups, Z as isCacheEnabled, Zt as resolveToolProfilePolicy, _ as formatBillingErrorMessage, _t as resolveChannelResetConfig, a as isMessagingToolDuplicateNormalized, an as sanitizeGoogleTurnOrdering, at as archiveSessionTranscripts, b as isAuthAssistantError, bt as resolveThreadFlag, c as extractToolCallsFromAssistant, ct as extractToolCallNames, d as downgradeOpenAIFunctionCallReasoningPairs, dt as applyInputProvenanceToUserMessage, en as buildBootstrapContextFiles, et as deliveryContextKey, f as downgradeOpenAIReasoningBlocks, ft as hasInterSessionUserProvenance, g as formatAssistantErrorText, gt as evaluateSessionFreshness, h as classifyFailoverReason, ht as resolveSessionKey, in as resolveBootstrapTotalMaxChars, it as normalizeAccountId$3, j as parseImageDimensionError, jt as acquireSessionWriteLock, k as isRawApiErrorPayload, kt as resolveConversationLabel, l as extractToolResultId, lt as parseInlineDirectives$1, m as BILLING_ERROR_USER_MESSAGE, mt as jsonUtf8Bytes, n as validateGeminiTurns, nn as resolveBootstrapMaxChars, nt as normalizeDeliveryContext, o as normalizeTextForComparison, ot as capArrayByJsonBytes, p as isGoogleModelApi, pt as normalizeInputProvenance, qt as mergeAlsoAllowPolicy, r as pickFallbackThinkingLevel, rn as resolveBootstrapPromptTruncationWarningMode, rt as normalizeSessionDeliveryFields, s as sanitizeSessionMessagesImages, st as countToolResults, t as validateAnthropicTurns, tn as ensureSessionHeader, tt as mergeDeliveryContext, u as sanitizeToolCallIdsForCloudCodeAssist, ut as INPUT_PROVENANCE_KIND_VALUES, v as formatRawAssistantErrorForUi, vt as resolveSessionResetPolicy, w as isContextOverflowError, wt as setSessionRuntimeModel, x as isBillingAssistantError, xt as DEFAULT_RESET_TRIGGERS, y as getApiErrorPayloadFingerprint, yt as resolveSessionResetType, z as extractDeliveryInfo, zt as resolveBrowserControlAuth } from "./pi-embedded-helpers-DYWYzEOC.js";
21
+ import { A as rawDataToString, B as isSecureWebSocketUrl, C as ensureChromeExtensionRelayServer, N as DEFAULT_UPLOAD_DIR, P as resolveExistingPathsWithinRoot, U as DEFAULT_AI_SNAPSHOT_MAX_CHARS, s as resolveLsofCommandSync, z as isLoopbackHost } from "./chrome-BQDCalPp.js";
22
22
  import { c as assertSandboxPath, d as resolveSandboxedMediaSource, f as applySkillEnvOverrides, i as resolveSkillsPromptForRun, l as resolveSandboxInputPath, n as buildWorkspaceSkillSnapshot, p as applySkillEnvOverridesFromSnapshot, r as loadWorkspaceSkillEntries, s as assertMediaNotDataUrl } from "./skills-BdeJ4sDE.js";
23
23
  import { t as PATH_ALIAS_POLICIES } from "./path-alias-guards-DLHloUkx.js";
24
24
  import { i as testRegexWithBoundedInput, r as compileSafeRegex, t as redactSensitiveText } from "./redact-kK-uDSQK.js";
@@ -31,8 +31,8 @@ import { t as resolveIMessageAccount } from "./accounts-CiVJ9o2y.js";
31
31
  import { i as resolveSessionTranscriptPath, n as resolveSessionFilePath, o as resolveSessionTranscriptsDirForAgent, r as resolveSessionFilePathOptions, s as resolveStorePath, t as resolveDefaultSessionStorePath } from "./paths-BeCJt7wC.js";
32
32
  import { n as onSessionTranscriptUpdate, t as emitSessionTranscriptUpdate } from "./transcript-events-UAKcGiUQ.js";
33
33
  import { a as canonicalizeBase64, i as resolveImageSanitizationLimits, n as sanitizeImageBlocks, o as estimateBase64DecodedBytes, r as sanitizeToolResultImages } from "./tool-images-DPqIlL2c.js";
34
- import { C as minimaxUnderstandImage, S as extractTextFromChatContent, _ as formatToolSummary, a as resolveProviderVisionModelFromConfig, b as findCodeRegions, c as extractThinkingFromTaggedStream, d as inferToolMetaFromArgs, f as isAssistantMessage, g as stripThinkingTagsFromText, h as stripMinimaxToolCallXml, i as decodeDataUrl, l as extractThinkingFromTaggedText, m as stripDowngradedToolCallText, n as coerceImageAssistantText, o as extractAssistantText$1, p as promoteThinkingTagsToBlocks, r as coerceImageModelConfig, s as extractAssistantThinking, u as formatReasoningMessage, v as resolveToolDisplay, w as ensureSquidClawModelsJson, x as isInsideCode, y as stripReasoningTagsFromText } from "./image-sRW3RpTY.js";
35
- import { _ as resolveAttachmentKind, a as resolveAutoImageModel, b as modelSupportsVision, c as applyTemplate, d as normalizeMediaUnderstandingChatType, f as resolveMediaUnderstandingScope, h as registerUnhandledRejectionHandler, i as normalizeMediaAttachments, l as resolveConcurrency, m as buildRandomTempFilePath, n as buildProviderRegistry, o as resolveMediaAttachmentLocalRoots, p as CLI_OUTPUT_MAX_BUFFER, r as createMediaAttachmentCache, s as runCapability, t as runAudioTranscription, u as resolveTimeoutMs$2, v as findModelInCatalog, y as loadModelCatalog } from "./audio-transcription-runner-Gi_h5HEE.js";
34
+ import { C as minimaxUnderstandImage, S as extractTextFromChatContent, _ as formatToolSummary, a as resolveProviderVisionModelFromConfig, b as findCodeRegions, c as extractThinkingFromTaggedStream, d as inferToolMetaFromArgs, f as isAssistantMessage, g as stripThinkingTagsFromText, h as stripMinimaxToolCallXml, i as decodeDataUrl, l as extractThinkingFromTaggedText, m as stripDowngradedToolCallText, n as coerceImageAssistantText, o as extractAssistantText$1, p as promoteThinkingTagsToBlocks, r as coerceImageModelConfig, s as extractAssistantThinking, u as formatReasoningMessage, v as resolveToolDisplay, w as ensureSquidClawModelsJson, x as isInsideCode, y as stripReasoningTagsFromText } from "./image-DKZCmkET.js";
35
+ import { _ as resolveAttachmentKind, a as resolveAutoImageModel, b as modelSupportsVision, c as applyTemplate, d as normalizeMediaUnderstandingChatType, f as resolveMediaUnderstandingScope, h as registerUnhandledRejectionHandler, i as normalizeMediaAttachments, l as resolveConcurrency, m as buildRandomTempFilePath, n as buildProviderRegistry, o as resolveMediaAttachmentLocalRoots, p as CLI_OUTPUT_MAX_BUFFER, r as createMediaAttachmentCache, s as runCapability, t as runAudioTranscription, u as resolveTimeoutMs$2, v as findModelInCatalog, y as loadModelCatalog } from "./audio-transcription-runner-B2BdTEps.js";
36
36
  import { a as getDefaultMediaLocalRoots, i as getAgentScopedMediaLocalRoots, n as fetchRemoteMedia, r as readResponseWithLimit, t as MediaFetchError } from "./fetch-VsWmWmFU.js";
37
37
  import { n as fetchWithTimeout, t as bindAbortRelay } from "./fetch-timeout-B_Wivh-n.js";
38
38
  import { n as withStrictGuardedFetchMode, r as withTrustedEnvProxyGuardedFetchMode, t as fetchWithSsrFGuard } from "./fetch-guard-CzuxP5PA.js";
@@ -69,7 +69,7 @@ import { CURRENT_SESSION_VERSION, DefaultResourceLoader, SessionManager, Setting
69
69
  import { EdgeTTS } from "node-edge-tts";
70
70
  import { createServer } from "node:http";
71
71
  import { ProxyAgent, fetch as fetch$1 } from "undici";
72
- import WebSocket, { WebSocket as WebSocket$1 } from "ws";
72
+ import WebSocket$1, { WebSocket } from "ws";
73
73
  import { Buffer as Buffer$1 } from "node:buffer";
74
74
  import { createJiti } from "jiti";
75
75
  import AjvPkg from "ajv";
@@ -8230,7 +8230,7 @@ var GatewayClient = class {
8230
8230
  if (fingerprint !== expected) return /* @__PURE__ */ new Error("gateway tls fingerprint mismatch");
8231
8231
  });
8232
8232
  }
8233
- this.ws = new WebSocket$1(url, wsOptions);
8233
+ this.ws = new WebSocket(url, wsOptions);
8234
8234
  this.ws.on("open", () => {
8235
8235
  if (url.startsWith("wss://") && this.opts.tlsFingerprint) {
8236
8236
  const tlsError = this.validateTlsFingerprint();
@@ -8426,7 +8426,7 @@ var GatewayClient = class {
8426
8426
  const connectChallengeTimeoutMs = typeof rawConnectDelayMs === "number" && Number.isFinite(rawConnectDelayMs) ? Math.max(250, Math.min(1e4, rawConnectDelayMs)) : 2e3;
8427
8427
  if (this.connectTimer) clearTimeout(this.connectTimer);
8428
8428
  this.connectTimer = setTimeout(() => {
8429
- if (this.connectSent || this.ws?.readyState !== WebSocket$1.OPEN) return;
8429
+ if (this.connectSent || this.ws?.readyState !== WebSocket.OPEN) return;
8430
8430
  this.opts.onConnectError?.(/* @__PURE__ */ new Error("gateway connect challenge timeout"));
8431
8431
  this.ws?.close(1008, "connect challenge timeout");
8432
8432
  }, connectChallengeTimeoutMs);
@@ -8468,7 +8468,7 @@ var GatewayClient = class {
8468
8468
  return null;
8469
8469
  }
8470
8470
  async request(method, params, opts) {
8471
- if (!this.ws || this.ws.readyState !== WebSocket$1.OPEN) throw new Error("gateway not connected");
8471
+ if (!this.ws || this.ws.readyState !== WebSocket.OPEN) throw new Error("gateway not connected");
8472
8472
  const id = randomUUID();
8473
8473
  const frame = {
8474
8474
  type: "req",
@@ -9890,7 +9890,7 @@ function normalizeReplyPayload(payload, opts = {}) {
9890
9890
  */
9891
9891
  let deliverRuntimePromise$2 = null;
9892
9892
  function loadDeliverRuntime$2() {
9893
- deliverRuntimePromise$2 ??= import("./deliver-runtime-DHKcNQzq.js");
9893
+ deliverRuntimePromise$2 ??= import("./deliver-runtime-ChVR6sR3.js");
9894
9894
  return deliverRuntimePromise$2;
9895
9895
  }
9896
9896
  /**
@@ -11178,7 +11178,7 @@ const DEFAULT_SUBAGENT_ANNOUNCE_TIMEOUT_MS = 6e4;
11178
11178
  const MAX_TIMER_SAFE_TIMEOUT_MS = 2147e6;
11179
11179
  let subagentRegistryRuntimePromise = null;
11180
11180
  function loadSubagentRegistryRuntime() {
11181
- subagentRegistryRuntimePromise ??= import("./subagent-registry-runtime-MtjBCcgn.js");
11181
+ subagentRegistryRuntimePromise ??= import("./subagent-registry-runtime-BlRAnw80.js");
11182
11182
  return subagentRegistryRuntimePromise;
11183
11183
  }
11184
11184
  const DIRECT_ANNOUNCE_TRANSIENT_RETRY_DELAYS_MS = FAST_TEST_MODE ? [
@@ -14532,7 +14532,7 @@ async function runWithConcurrency(tasks, limit) {
14532
14532
  //#region src/media-understanding/echo-transcript.ts
14533
14533
  let deliverRuntimePromise$1 = null;
14534
14534
  function loadDeliverRuntime$1() {
14535
- deliverRuntimePromise$1 ??= import("./deliver-runtime-DHKcNQzq.js");
14535
+ deliverRuntimePromise$1 ??= import("./deliver-runtime-ChVR6sR3.js");
14536
14536
  return deliverRuntimePromise$1;
14537
14537
  }
14538
14538
  const DEFAULT_ECHO_TRANSCRIPT_FORMAT = "📝 \"{transcript}\"";
@@ -51532,7 +51532,7 @@ const warnedContexts = /* @__PURE__ */ new Map();
51532
51532
  const log$10 = createSubsystemLogger("session-maintenance-warning");
51533
51533
  let deliverRuntimePromise = null;
51534
51534
  function loadDeliverRuntime() {
51535
- deliverRuntimePromise ??= import("./deliver-runtime-DHKcNQzq.js");
51535
+ deliverRuntimePromise ??= import("./deliver-runtime-ChVR6sR3.js");
51536
51536
  return deliverRuntimePromise;
51537
51537
  }
51538
51538
  function shouldSendWarning() {
@@ -56509,7 +56509,7 @@ const VISION_PROVIDERS = [
56509
56509
  ];
56510
56510
  let imageRuntimePromise = null;
56511
56511
  function loadImageRuntime() {
56512
- imageRuntimePromise ??= import("./image-runtime-SUtf9jqh.js");
56512
+ imageRuntimePromise ??= import("./image-runtime-poRypm-b.js");
56513
56513
  return imageRuntimePromise;
56514
56514
  }
56515
56515
  /**
@@ -58570,7 +58570,7 @@ async function resolveDiscordPreflightAudioMentionContext(params) {
58570
58570
  hasTypedText
58571
58571
  };
58572
58572
  try {
58573
- const { transcribeFirstAudio } = await import("./audio-preflight-Dkl6Z32z.js");
58573
+ const { transcribeFirstAudio } = await import("./audio-preflight-DpCWFB4z.js");
58574
58574
  if (params.abortSignal?.aborted) return {
58575
58575
  hasAudioAttachment,
58576
58576
  hasTypedText
@@ -65964,7 +65964,7 @@ let slackSenderRuntimePromise = null;
65964
65964
  let signalSenderRuntimePromise = null;
65965
65965
  let imessageSenderRuntimePromise = null;
65966
65966
  function loadWhatsAppSenderRuntime() {
65967
- whatsappSenderRuntimePromise ??= import("./deps-send-whatsapp.runtime-DdxKewuy.js");
65967
+ whatsappSenderRuntimePromise ??= import("./deps-send-whatsapp.runtime-CZj97m5A.js");
65968
65968
  return whatsappSenderRuntimePromise;
65969
65969
  }
65970
65970
  function loadTelegramSenderRuntime() {
@@ -69668,7 +69668,7 @@ function createDiscordGatewayPlugin(params) {
69668
69668
  return super.registerClient(client);
69669
69669
  }
69670
69670
  createWebSocket(url) {
69671
- return new WebSocket(url, { agent: wsAgent });
69671
+ return new WebSocket$1(url, { agent: wsAgent });
69672
69672
  }
69673
69673
  }
69674
69674
  return new ProxyGatewayPlugin();
@@ -78819,7 +78819,7 @@ function loadSlashCommandsRuntime() {
78819
78819
  return slashCommandsRuntimePromise;
78820
78820
  }
78821
78821
  function loadSlashDispatchRuntime() {
78822
- slashDispatchRuntimePromise ??= import("./slash-dispatch.runtime-BL3qA1O3.js");
78822
+ slashDispatchRuntimePromise ??= import("./slash-dispatch.runtime-DkcAYuyK.js");
78823
78823
  return slashDispatchRuntimePromise;
78824
78824
  }
78825
78825
  function loadSlashSkillCommandsRuntime() {
@@ -82188,7 +82188,7 @@ const buildTelegramMessageContext = async ({ primaryCtx, allMedia, replyMedia =
82188
82188
  const disableAudioPreflight = firstDefined$1(topicConfig?.disableAudioPreflight, groupConfig?.disableAudioPreflight) === true;
82189
82189
  let preflightTranscript;
82190
82190
  if (isGroup && requireMention && hasAudio && !hasUserText && mentionRegexes.length > 0 && !disableAudioPreflight) try {
82191
- const { transcribeFirstAudio } = await import("./audio-preflight-Dkl6Z32z.js");
82191
+ const { transcribeFirstAudio } = await import("./audio-preflight-DpCWFB4z.js");
82192
82192
  preflightTranscript = await transcribeFirstAudio({
82193
82193
  ctx: {
82194
82194
  MediaPaths: allMedia.length > 0 ? allMedia.map((m) => m.path) : void 0,
@@ -85114,7 +85114,7 @@ function loadWebLoginQr() {
85114
85114
  return webLoginQrPromise;
85115
85115
  }
85116
85116
  function loadWebChannel() {
85117
- webChannelPromise ??= import("./web-D1ZoRVB0.js");
85117
+ webChannelPromise ??= import("./web-DddJa7ZT.js");
85118
85118
  return webChannelPromise;
85119
85119
  }
85120
85120
  function loadWhatsAppActions() {
@@ -93377,7 +93377,7 @@ var OpenAIWebSocketManager = class extends EventEmitter {
93377
93377
  * Throws if the connection is not open.
93378
93378
  */
93379
93379
  send(event) {
93380
- if (!this.ws || this.ws.readyState !== WebSocket.OPEN) throw new Error(`OpenAIWebSocketManager: cannot send — connection is not open (readyState=${this.ws?.readyState ?? "no socket"})`);
93380
+ if (!this.ws || this.ws.readyState !== WebSocket$1.OPEN) throw new Error(`OpenAIWebSocketManager: cannot send — connection is not open (readyState=${this.ws?.readyState ?? "no socket"})`);
93381
93381
  this.ws.send(JSON.stringify(event));
93382
93382
  }
93383
93383
  /**
@@ -93394,7 +93394,7 @@ var OpenAIWebSocketManager = class extends EventEmitter {
93394
93394
  * Returns true if the WebSocket is currently open and ready to send.
93395
93395
  */
93396
93396
  isConnected() {
93397
- return this.ws !== null && this.ws.readyState === WebSocket.OPEN;
93397
+ return this.ws !== null && this.ws.readyState === WebSocket$1.OPEN;
93398
93398
  }
93399
93399
  /**
93400
93400
  * Permanently closes the WebSocket connection and disables auto-reconnect.
@@ -93404,7 +93404,7 @@ var OpenAIWebSocketManager = class extends EventEmitter {
93404
93404
  this._cancelRetryTimer();
93405
93405
  if (this.ws) {
93406
93406
  this.ws.removeAllListeners();
93407
- if (this.ws.readyState === WebSocket.OPEN || this.ws.readyState === WebSocket.CONNECTING) this.ws.close(1e3, "Client closed");
93407
+ if (this.ws.readyState === WebSocket$1.OPEN || this.ws.readyState === WebSocket$1.CONNECTING) this.ws.close(1e3, "Client closed");
93408
93408
  this.ws = null;
93409
93409
  }
93410
93410
  }
@@ -93414,7 +93414,7 @@ var OpenAIWebSocketManager = class extends EventEmitter {
93414
93414
  reject(/* @__PURE__ */ new Error("OpenAIWebSocketManager: apiKey is required before connecting."));
93415
93415
  return;
93416
93416
  }
93417
- const socket = new WebSocket(this.wsUrl, { headers: {
93417
+ const socket = new WebSocket$1(this.wsUrl, { headers: {
93418
93418
  Authorization: `Bearer ${this.apiKey}`,
93419
93419
  "OpenAI-Beta": "responses-websocket=v1"
93420
93420
  } });
@@ -9,7 +9,7 @@ import { d as getChannelDock, o as normalizeThinkLevel, v as normalizeHyphenSlug
9
9
  import { _ as normalizeChatType, r as normalizeChannelId } from "./plugins-DXkm70nK.js";
10
10
  import { t as generateSecureToken } from "./secure-random-CXrBi7Jq.js";
11
11
  import { i as getImageMetadata, m as normalizeMessageChannel, n as buildImageResizeSideGrid, p as listDeliverableMessageChannels, s as resizeToJpeg, t as IMAGE_REDUCE_QUALITY_STEPS } from "./image-ops-CdgypS_g.js";
12
- import { C as ensureChromeExtensionRelayServer, D as PROFILE_POST_RESTART_WS_TIMEOUT_MS, E as PROFILE_ATTACH_RETRY_TIMEOUT_MS, G as DEFAULT_BROWSER_EVALUATE_ENABLED, H as DEFAULT_AI_SNAPSHOT_EFFICIENT_MAX_CHARS, I as resolveWritablePathWithinRoot, J as DEFAULT_SQUIDCLAW_BROWSER_PROFILE_NAME, K as DEFAULT_SQUIDCLAW_BROWSER_COLOR, M as DEFAULT_TRACE_DIR, N as DEFAULT_UPLOAD_DIR, O as resolveCdpReachabilityTimeouts, P as resolveExistingPathsWithinRoot, R as normalizeBrowserFormField, T as CDP_JSON_NEW_TIMEOUT_MS, U as DEFAULT_AI_SNAPSHOT_MAX_CHARS, V as DEFAULT_AI_SNAPSHOT_EFFICIENT_DEPTH, W as DEFAULT_BROWSER_DEFAULT_PROFILE_NAME, _ as withBrowserNavigationPolicy, a as resolveSquidClawUserDataDir, b as fetchOk, c as resolveBrowserExecutableForPlatform, f as normalizeCdpWsUrl, g as assertBrowserNavigationResultAllowed, h as assertBrowserNavigationAllowed, i as launchSquidClawChrome, j as DEFAULT_DOWNLOAD_DIR, l as captureScreenshot, m as InvalidBrowserNavigationUrlError, n as isChromeCdpReady, o as stopSquidClawChrome, p as snapshotAria, q as DEFAULT_SQUIDCLAW_BROWSER_ENABLED, r as isChromeReachable, u as createTargetViaCdp, v as appendCdpPath, w as stopChromeExtensionRelayServer, y as fetchJson, z as isLoopbackHost } from "./chrome-pBkBuWci.js";
12
+ import { C as ensureChromeExtensionRelayServer, D as PROFILE_POST_RESTART_WS_TIMEOUT_MS, E as PROFILE_ATTACH_RETRY_TIMEOUT_MS, G as DEFAULT_BROWSER_EVALUATE_ENABLED, H as DEFAULT_AI_SNAPSHOT_EFFICIENT_MAX_CHARS, I as resolveWritablePathWithinRoot, J as DEFAULT_SQUIDCLAW_BROWSER_PROFILE_NAME, K as DEFAULT_SQUIDCLAW_BROWSER_COLOR, M as DEFAULT_TRACE_DIR, N as DEFAULT_UPLOAD_DIR, O as resolveCdpReachabilityTimeouts, P as resolveExistingPathsWithinRoot, R as normalizeBrowserFormField, T as CDP_JSON_NEW_TIMEOUT_MS, U as DEFAULT_AI_SNAPSHOT_MAX_CHARS, V as DEFAULT_AI_SNAPSHOT_EFFICIENT_DEPTH, W as DEFAULT_BROWSER_DEFAULT_PROFILE_NAME, _ as withBrowserNavigationPolicy, a as resolveSquidClawUserDataDir, b as fetchOk, c as resolveBrowserExecutableForPlatform, f as normalizeCdpWsUrl, g as assertBrowserNavigationResultAllowed, h as assertBrowserNavigationAllowed, i as launchSquidClawChrome, j as DEFAULT_DOWNLOAD_DIR, l as captureScreenshot, m as InvalidBrowserNavigationUrlError, n as isChromeCdpReady, o as stopSquidClawChrome, p as snapshotAria, q as DEFAULT_SQUIDCLAW_BROWSER_ENABLED, r as isChromeReachable, u as createTargetViaCdp, v as appendCdpPath, w as stopChromeExtensionRelayServer, y as fetchJson, z as isLoopbackHost } from "./chrome-CjxCwFA9.js";
13
13
  import { a as syncSkillsToWorkspace, l as resolveSandboxInputPath, m as sanitizeEnvVars, u as resolveSandboxPath } from "./skills-CTV78w4q.js";
14
14
  import { t as PATH_ALIAS_POLICIES } from "./path-alias-guards-DORgbZ1w.js";
15
15
  import { n as extractErrorCode, r as formatErrorMessage } from "./errors-kkRuS2Cs.js";
@@ -1278,7 +1278,7 @@ function isModuleNotFoundError(err) {
1278
1278
  }
1279
1279
  async function loadPwAiModule(mode) {
1280
1280
  try {
1281
- return await import("./pw-ai-7kHgUGj0.js");
1281
+ return await import("./pw-ai-BwRP3TWc.js");
1282
1282
  } catch (err) {
1283
1283
  if (mode === "soft") return null;
1284
1284
  if (isModuleNotFoundError(err)) return null;
@@ -3644,7 +3644,7 @@ function createProfileAvailability({ opts, profile, state, getProfileState, setP
3644
3644
  //#region src/browser/server-context.reset.ts
3645
3645
  async function closePlaywrightBrowserConnection() {
3646
3646
  try {
3647
- await (await import("./pw-ai-7kHgUGj0.js")).closePlaywrightBrowserConnection();
3647
+ await (await import("./pw-ai-BwRP3TWc.js")).closePlaywrightBrowserConnection();
3648
3648
  } catch {}
3649
3649
  }
3650
3650
  function createProfileResetOps({ profile, getProfileState, stopRunningBrowser, isHttpReachable, resolveSquidClawUserDataDir }) {
@@ -6,7 +6,7 @@ import { d as getChannelDock, o as normalizeThinkLevel, v as normalizeHyphenSlug
6
6
  import { _ as normalizeChatType, r as normalizeChannelId } from "./plugins-DaMn-Hjl.js";
7
7
  import { t as generateSecureToken } from "./secure-random-D68-1Hhs.js";
8
8
  import { i as getImageMetadata, m as normalizeMessageChannel, n as buildImageResizeSideGrid, p as listDeliverableMessageChannels, s as resizeToJpeg, t as IMAGE_REDUCE_QUALITY_STEPS } from "./image-ops-t3DLKnpb.js";
9
- import { C as ensureChromeExtensionRelayServer, D as PROFILE_POST_RESTART_WS_TIMEOUT_MS, E as PROFILE_ATTACH_RETRY_TIMEOUT_MS, G as DEFAULT_BROWSER_EVALUATE_ENABLED, H as DEFAULT_AI_SNAPSHOT_EFFICIENT_MAX_CHARS, I as resolveWritablePathWithinRoot, J as DEFAULT_SQUIDCLAW_BROWSER_PROFILE_NAME, K as DEFAULT_SQUIDCLAW_BROWSER_COLOR, M as DEFAULT_TRACE_DIR, N as DEFAULT_UPLOAD_DIR, O as resolveCdpReachabilityTimeouts, P as resolveExistingPathsWithinRoot, R as normalizeBrowserFormField, T as CDP_JSON_NEW_TIMEOUT_MS, U as DEFAULT_AI_SNAPSHOT_MAX_CHARS, V as DEFAULT_AI_SNAPSHOT_EFFICIENT_DEPTH, W as DEFAULT_BROWSER_DEFAULT_PROFILE_NAME, _ as withBrowserNavigationPolicy, a as resolveSquidClawUserDataDir, b as fetchOk, c as resolveBrowserExecutableForPlatform, f as normalizeCdpWsUrl, g as assertBrowserNavigationResultAllowed, h as assertBrowserNavigationAllowed, i as launchSquidClawChrome, j as DEFAULT_DOWNLOAD_DIR, l as captureScreenshot, m as InvalidBrowserNavigationUrlError, n as isChromeCdpReady, o as stopSquidClawChrome, p as snapshotAria, q as DEFAULT_SQUIDCLAW_BROWSER_ENABLED, r as isChromeReachable, u as createTargetViaCdp, v as appendCdpPath, w as stopChromeExtensionRelayServer, y as fetchJson, z as isLoopbackHost } from "./chrome-CAd6FQEn.js";
9
+ import { C as ensureChromeExtensionRelayServer, D as PROFILE_POST_RESTART_WS_TIMEOUT_MS, E as PROFILE_ATTACH_RETRY_TIMEOUT_MS, G as DEFAULT_BROWSER_EVALUATE_ENABLED, H as DEFAULT_AI_SNAPSHOT_EFFICIENT_MAX_CHARS, I as resolveWritablePathWithinRoot, J as DEFAULT_SQUIDCLAW_BROWSER_PROFILE_NAME, K as DEFAULT_SQUIDCLAW_BROWSER_COLOR, M as DEFAULT_TRACE_DIR, N as DEFAULT_UPLOAD_DIR, O as resolveCdpReachabilityTimeouts, P as resolveExistingPathsWithinRoot, R as normalizeBrowserFormField, T as CDP_JSON_NEW_TIMEOUT_MS, U as DEFAULT_AI_SNAPSHOT_MAX_CHARS, V as DEFAULT_AI_SNAPSHOT_EFFICIENT_DEPTH, W as DEFAULT_BROWSER_DEFAULT_PROFILE_NAME, _ as withBrowserNavigationPolicy, a as resolveSquidClawUserDataDir, b as fetchOk, c as resolveBrowserExecutableForPlatform, f as normalizeCdpWsUrl, g as assertBrowserNavigationResultAllowed, h as assertBrowserNavigationAllowed, i as launchSquidClawChrome, j as DEFAULT_DOWNLOAD_DIR, l as captureScreenshot, m as InvalidBrowserNavigationUrlError, n as isChromeCdpReady, o as stopSquidClawChrome, p as snapshotAria, q as DEFAULT_SQUIDCLAW_BROWSER_ENABLED, r as isChromeReachable, u as createTargetViaCdp, v as appendCdpPath, w as stopChromeExtensionRelayServer, y as fetchJson, z as isLoopbackHost } from "./chrome-BQDCalPp.js";
10
10
  import { a as syncSkillsToWorkspace, l as resolveSandboxInputPath, m as sanitizeEnvVars, u as resolveSandboxPath } from "./skills-BdeJ4sDE.js";
11
11
  import { t as PATH_ALIAS_POLICIES } from "./path-alias-guards-DLHloUkx.js";
12
12
  import { n as extractErrorCode, r as formatErrorMessage } from "./errors-VR6fgqPc.js";
@@ -1275,7 +1275,7 @@ function isModuleNotFoundError(err) {
1275
1275
  }
1276
1276
  async function loadPwAiModule(mode) {
1277
1277
  try {
1278
- return await import("./pw-ai-BmGrTicP.js");
1278
+ return await import("./pw-ai-zFPBSxaL.js");
1279
1279
  } catch (err) {
1280
1280
  if (mode === "soft") return null;
1281
1281
  if (isModuleNotFoundError(err)) return null;
@@ -3641,7 +3641,7 @@ function createProfileAvailability({ opts, profile, state, getProfileState, setP
3641
3641
  //#region src/browser/server-context.reset.ts
3642
3642
  async function closePlaywrightBrowserConnection() {
3643
3643
  try {
3644
- await (await import("./pw-ai-BmGrTicP.js")).closePlaywrightBrowserConnection();
3644
+ await (await import("./pw-ai-zFPBSxaL.js")).closePlaywrightBrowserConnection();
3645
3645
  } catch {}
3646
3646
  }
3647
3647
  function createProfileResetOps({ profile, getProfileState, stopRunningBrowser, isHttpReachable, resolveSquidClawUserDataDir }) {
@@ -0,0 +1,288 @@
1
+ import { at as DEFAULT_ACCOUNT_ID, ot as normalizeAccountId, st as normalizeOptionalAccountId } from "./run-with-concurrency-5DMu9szx.js";
2
+ import { o as resolveOAuthDir } from "./paths-8xF5kDne.js";
3
+ import { Pr as formatCliCommand } from "./config-CrQ5bCrw.js";
4
+ import { B as success, E as resolveUserPath, G as getChildLogger, I as info, c as defaultRuntime, x as jidToE164 } from "./logger-DDdrdbDu.js";
5
+ import fs from "node:fs";
6
+ import path from "node:path";
7
+ import fs$1 from "node:fs/promises";
8
+
9
+ //#region src/channels/plugins/account-helpers.ts
10
+ function createAccountListHelpers(channelKey) {
11
+ function resolveConfiguredDefaultAccountId(cfg) {
12
+ const channel = cfg.channels?.[channelKey];
13
+ const preferred = normalizeOptionalAccountId(typeof channel?.defaultAccount === "string" ? channel.defaultAccount : void 0);
14
+ if (!preferred) return;
15
+ if (listAccountIds(cfg).some((id) => normalizeAccountId(id) === preferred)) return preferred;
16
+ }
17
+ function listConfiguredAccountIds(cfg) {
18
+ const accounts = (cfg.channels?.[channelKey])?.accounts;
19
+ if (!accounts || typeof accounts !== "object") return [];
20
+ return Object.keys(accounts).filter(Boolean);
21
+ }
22
+ function listAccountIds(cfg) {
23
+ const ids = listConfiguredAccountIds(cfg);
24
+ if (ids.length === 0) return [DEFAULT_ACCOUNT_ID];
25
+ return ids.toSorted((a, b) => a.localeCompare(b));
26
+ }
27
+ function resolveDefaultAccountId(cfg) {
28
+ const preferred = resolveConfiguredDefaultAccountId(cfg);
29
+ if (preferred) return preferred;
30
+ const ids = listAccountIds(cfg);
31
+ if (ids.includes(DEFAULT_ACCOUNT_ID)) return DEFAULT_ACCOUNT_ID;
32
+ return ids[0] ?? DEFAULT_ACCOUNT_ID;
33
+ }
34
+ return {
35
+ listConfiguredAccountIds,
36
+ listAccountIds,
37
+ resolveDefaultAccountId
38
+ };
39
+ }
40
+
41
+ //#endregion
42
+ //#region src/routing/account-lookup.ts
43
+ function resolveAccountEntry(accounts, accountId) {
44
+ if (!accounts || typeof accounts !== "object") return;
45
+ if (Object.hasOwn(accounts, accountId)) return accounts[accountId];
46
+ const normalized = accountId.toLowerCase();
47
+ const matchKey = Object.keys(accounts).find((key) => key.toLowerCase() === normalized);
48
+ return matchKey ? accounts[matchKey] : void 0;
49
+ }
50
+
51
+ //#endregion
52
+ //#region src/web/auth-store.ts
53
+ function resolveDefaultWebAuthDir() {
54
+ return path.join(resolveOAuthDir(), "whatsapp", DEFAULT_ACCOUNT_ID);
55
+ }
56
+ const WA_WEB_AUTH_DIR = resolveDefaultWebAuthDir();
57
+ function resolveWebCredsPath(authDir) {
58
+ return path.join(authDir, "creds.json");
59
+ }
60
+ function resolveWebCredsBackupPath(authDir) {
61
+ return path.join(authDir, "creds.json.bak");
62
+ }
63
+ function hasWebCredsSync(authDir) {
64
+ try {
65
+ const stats = fs.statSync(resolveWebCredsPath(authDir));
66
+ return stats.isFile() && stats.size > 1;
67
+ } catch {
68
+ return false;
69
+ }
70
+ }
71
+ function readCredsJsonRaw(filePath) {
72
+ try {
73
+ if (!fs.existsSync(filePath)) return null;
74
+ const stats = fs.statSync(filePath);
75
+ if (!stats.isFile() || stats.size <= 1) return null;
76
+ return fs.readFileSync(filePath, "utf-8");
77
+ } catch {
78
+ return null;
79
+ }
80
+ }
81
+ function maybeRestoreCredsFromBackup(authDir) {
82
+ const logger = getChildLogger({ module: "web-session" });
83
+ try {
84
+ const credsPath = resolveWebCredsPath(authDir);
85
+ const backupPath = resolveWebCredsBackupPath(authDir);
86
+ const raw = readCredsJsonRaw(credsPath);
87
+ if (raw) {
88
+ JSON.parse(raw);
89
+ return;
90
+ }
91
+ const backupRaw = readCredsJsonRaw(backupPath);
92
+ if (!backupRaw) return;
93
+ JSON.parse(backupRaw);
94
+ fs.copyFileSync(backupPath, credsPath);
95
+ try {
96
+ fs.chmodSync(credsPath, 384);
97
+ } catch {}
98
+ logger.warn({ credsPath }, "restored corrupted WhatsApp creds.json from backup");
99
+ } catch {}
100
+ }
101
+ async function webAuthExists(authDir = resolveDefaultWebAuthDir()) {
102
+ const resolvedAuthDir = resolveUserPath(authDir);
103
+ maybeRestoreCredsFromBackup(resolvedAuthDir);
104
+ const credsPath = resolveWebCredsPath(resolvedAuthDir);
105
+ try {
106
+ await fs$1.access(resolvedAuthDir);
107
+ } catch {
108
+ return false;
109
+ }
110
+ try {
111
+ const stats = await fs$1.stat(credsPath);
112
+ if (!stats.isFile() || stats.size <= 1) return false;
113
+ const raw = await fs$1.readFile(credsPath, "utf-8");
114
+ JSON.parse(raw);
115
+ return true;
116
+ } catch {
117
+ return false;
118
+ }
119
+ }
120
+ async function clearLegacyBaileysAuthState(authDir) {
121
+ const entries = await fs$1.readdir(authDir, { withFileTypes: true });
122
+ const shouldDelete = (name) => {
123
+ if (name === "oauth.json") return false;
124
+ if (name === "creds.json" || name === "creds.json.bak") return true;
125
+ if (!name.endsWith(".json")) return false;
126
+ return /^(app-state-sync|session|sender-key|pre-key)-/.test(name);
127
+ };
128
+ await Promise.all(entries.map(async (entry) => {
129
+ if (!entry.isFile()) return;
130
+ if (!shouldDelete(entry.name)) return;
131
+ await fs$1.rm(path.join(authDir, entry.name), { force: true });
132
+ }));
133
+ }
134
+ async function logoutWeb(params) {
135
+ const runtime = params.runtime ?? defaultRuntime;
136
+ const resolvedAuthDir = resolveUserPath(params.authDir ?? resolveDefaultWebAuthDir());
137
+ if (!await webAuthExists(resolvedAuthDir)) {
138
+ runtime.log(info("No WhatsApp Web session found; nothing to delete."));
139
+ return false;
140
+ }
141
+ if (params.isLegacyAuthDir) await clearLegacyBaileysAuthState(resolvedAuthDir);
142
+ else await fs$1.rm(resolvedAuthDir, {
143
+ recursive: true,
144
+ force: true
145
+ });
146
+ runtime.log(success("Cleared WhatsApp Web credentials."));
147
+ return true;
148
+ }
149
+ function readWebSelfId(authDir = resolveDefaultWebAuthDir()) {
150
+ try {
151
+ const credsPath = resolveWebCredsPath(resolveUserPath(authDir));
152
+ if (!fs.existsSync(credsPath)) return {
153
+ e164: null,
154
+ jid: null
155
+ };
156
+ const raw = fs.readFileSync(credsPath, "utf-8");
157
+ const jid = JSON.parse(raw)?.me?.id ?? null;
158
+ return {
159
+ e164: jid ? jidToE164(jid, { authDir }) : null,
160
+ jid
161
+ };
162
+ } catch {
163
+ return {
164
+ e164: null,
165
+ jid: null
166
+ };
167
+ }
168
+ }
169
+ /**
170
+ * Return the age (in milliseconds) of the cached WhatsApp web auth state, or null when missing.
171
+ * Helpful for heartbeats/observability to spot stale credentials.
172
+ */
173
+ function getWebAuthAgeMs(authDir = resolveDefaultWebAuthDir()) {
174
+ try {
175
+ const stats = fs.statSync(resolveWebCredsPath(resolveUserPath(authDir)));
176
+ return Date.now() - stats.mtimeMs;
177
+ } catch {
178
+ return null;
179
+ }
180
+ }
181
+ function logWebSelfId(authDir = resolveDefaultWebAuthDir(), runtime = defaultRuntime, includeChannelPrefix = false) {
182
+ const { e164, jid } = readWebSelfId(authDir);
183
+ const details = e164 || jid ? `${e164 ?? "unknown"}${jid ? ` (jid ${jid})` : ""}` : "unknown";
184
+ const prefix = includeChannelPrefix ? "Web Channel: " : "";
185
+ runtime.log(info(`${prefix}${details}`));
186
+ }
187
+ async function pickWebChannel(pref, authDir = resolveDefaultWebAuthDir()) {
188
+ const choice = pref === "auto" ? "web" : pref;
189
+ if (!await webAuthExists(authDir)) throw new Error(`No WhatsApp Web session found. Run \`${formatCliCommand("squidclaw channels login --channel whatsapp --verbose")}\` to link.`);
190
+ return choice;
191
+ }
192
+
193
+ //#endregion
194
+ //#region src/web/accounts.ts
195
+ const { listConfiguredAccountIds, listAccountIds, resolveDefaultAccountId } = createAccountListHelpers("whatsapp");
196
+ const listWhatsAppAccountIds = listAccountIds;
197
+ const resolveDefaultWhatsAppAccountId = resolveDefaultAccountId;
198
+ function listWhatsAppAuthDirs(cfg) {
199
+ const oauthDir = resolveOAuthDir();
200
+ const whatsappDir = path.join(oauthDir, "whatsapp");
201
+ const authDirs = new Set([oauthDir, path.join(whatsappDir, DEFAULT_ACCOUNT_ID)]);
202
+ const accountIds = listConfiguredAccountIds(cfg);
203
+ for (const accountId of accountIds) authDirs.add(resolveWhatsAppAuthDir({
204
+ cfg,
205
+ accountId
206
+ }).authDir);
207
+ try {
208
+ const entries = fs.readdirSync(whatsappDir, { withFileTypes: true });
209
+ for (const entry of entries) {
210
+ if (!entry.isDirectory()) continue;
211
+ authDirs.add(path.join(whatsappDir, entry.name));
212
+ }
213
+ } catch {}
214
+ return Array.from(authDirs);
215
+ }
216
+ function hasAnyWhatsAppAuth(cfg) {
217
+ return listWhatsAppAuthDirs(cfg).some((authDir) => hasWebCredsSync(authDir));
218
+ }
219
+ function resolveAccountConfig(cfg, accountId) {
220
+ return resolveAccountEntry(cfg.channels?.whatsapp?.accounts, accountId);
221
+ }
222
+ function resolveDefaultAuthDir(accountId) {
223
+ return path.join(resolveOAuthDir(), "whatsapp", normalizeAccountId(accountId));
224
+ }
225
+ function resolveLegacyAuthDir() {
226
+ return resolveOAuthDir();
227
+ }
228
+ function legacyAuthExists(authDir) {
229
+ try {
230
+ return fs.existsSync(path.join(authDir, "creds.json"));
231
+ } catch {
232
+ return false;
233
+ }
234
+ }
235
+ function resolveWhatsAppAuthDir(params) {
236
+ const accountId = params.accountId.trim() || DEFAULT_ACCOUNT_ID;
237
+ const configured = resolveAccountConfig(params.cfg, accountId)?.authDir?.trim();
238
+ if (configured) return {
239
+ authDir: resolveUserPath(configured),
240
+ isLegacy: false
241
+ };
242
+ const defaultDir = resolveDefaultAuthDir(accountId);
243
+ if (accountId === DEFAULT_ACCOUNT_ID) {
244
+ const legacyDir = resolveLegacyAuthDir();
245
+ if (legacyAuthExists(legacyDir) && !legacyAuthExists(defaultDir)) return {
246
+ authDir: legacyDir,
247
+ isLegacy: true
248
+ };
249
+ }
250
+ return {
251
+ authDir: defaultDir,
252
+ isLegacy: false
253
+ };
254
+ }
255
+ function resolveWhatsAppAccount(params) {
256
+ const rootCfg = params.cfg.channels?.whatsapp;
257
+ const accountId = params.accountId?.trim() || resolveDefaultWhatsAppAccountId(params.cfg);
258
+ const accountCfg = resolveAccountConfig(params.cfg, accountId);
259
+ const enabled = accountCfg?.enabled !== false;
260
+ const { authDir, isLegacy } = resolveWhatsAppAuthDir({
261
+ cfg: params.cfg,
262
+ accountId
263
+ });
264
+ return {
265
+ accountId,
266
+ name: accountCfg?.name?.trim() || void 0,
267
+ enabled,
268
+ sendReadReceipts: accountCfg?.sendReadReceipts ?? rootCfg?.sendReadReceipts ?? true,
269
+ messagePrefix: accountCfg?.messagePrefix ?? rootCfg?.messagePrefix ?? params.cfg.messages?.messagePrefix,
270
+ authDir,
271
+ isLegacyAuthDir: isLegacy,
272
+ selfChatMode: accountCfg?.selfChatMode ?? rootCfg?.selfChatMode,
273
+ dmPolicy: accountCfg?.dmPolicy ?? rootCfg?.dmPolicy,
274
+ allowFrom: accountCfg?.allowFrom ?? rootCfg?.allowFrom,
275
+ groupAllowFrom: accountCfg?.groupAllowFrom ?? rootCfg?.groupAllowFrom,
276
+ groupPolicy: accountCfg?.groupPolicy ?? rootCfg?.groupPolicy,
277
+ textChunkLimit: accountCfg?.textChunkLimit ?? rootCfg?.textChunkLimit,
278
+ chunkMode: accountCfg?.chunkMode ?? rootCfg?.chunkMode,
279
+ mediaMaxMb: accountCfg?.mediaMaxMb ?? rootCfg?.mediaMaxMb,
280
+ blockStreaming: accountCfg?.blockStreaming ?? rootCfg?.blockStreaming,
281
+ ackReaction: accountCfg?.ackReaction ?? rootCfg?.ackReaction,
282
+ groups: accountCfg?.groups ?? rootCfg?.groups,
283
+ debounceMs: accountCfg?.debounceMs ?? rootCfg?.debounceMs
284
+ };
285
+ }
286
+
287
+ //#endregion
288
+ export { webAuthExists as _, resolveWhatsAppAuthDir as a, logWebSelfId as c, pickWebChannel as d, readCredsJsonRaw as f, resolveWebCredsPath as g, resolveWebCredsBackupPath as h, resolveWhatsAppAccount as i, logoutWeb as l, resolveDefaultWebAuthDir as m, listWhatsAppAccountIds as n, WA_WEB_AUTH_DIR as o, readWebSelfId as p, resolveDefaultWhatsAppAccountId as r, getWebAuthAgeMs as s, hasAnyWhatsAppAuth as t, maybeRestoreCredsFromBackup as u, resolveAccountEntry as v, createAccountListHelpers as y };
@@ -0,0 +1,46 @@
1
+ import { ot as normalizeAccountId } from "./run-with-concurrency-5DMu9szx.js";
2
+ import { v as resolveAccountEntry, y as createAccountListHelpers } from "./accounts-BNuRM3rG.js";
3
+
4
+ //#region src/signal/accounts.ts
5
+ const { listAccountIds, resolveDefaultAccountId } = createAccountListHelpers("signal");
6
+ const listSignalAccountIds = listAccountIds;
7
+ const resolveDefaultSignalAccountId = resolveDefaultAccountId;
8
+ function resolveAccountConfig(cfg, accountId) {
9
+ return resolveAccountEntry(cfg.channels?.signal?.accounts, accountId);
10
+ }
11
+ function mergeSignalAccountConfig(cfg, accountId) {
12
+ const { accounts: _ignored, ...base } = cfg.channels?.signal ?? {};
13
+ const account = resolveAccountConfig(cfg, accountId) ?? {};
14
+ return {
15
+ ...base,
16
+ ...account
17
+ };
18
+ }
19
+ function resolveSignalAccount(params) {
20
+ const accountId = normalizeAccountId(params.accountId);
21
+ const baseEnabled = params.cfg.channels?.signal?.enabled !== false;
22
+ const merged = mergeSignalAccountConfig(params.cfg, accountId);
23
+ const accountEnabled = merged.enabled !== false;
24
+ const enabled = baseEnabled && accountEnabled;
25
+ const host = merged.httpHost?.trim() || "127.0.0.1";
26
+ const port = merged.httpPort ?? 8080;
27
+ const baseUrl = merged.httpUrl?.trim() || `http://${host}:${port}`;
28
+ const configured = Boolean(merged.account?.trim() || merged.httpUrl?.trim() || merged.cliPath?.trim() || merged.httpHost?.trim() || typeof merged.httpPort === "number" || typeof merged.autoStart === "boolean");
29
+ return {
30
+ accountId,
31
+ enabled,
32
+ name: merged.name?.trim() || void 0,
33
+ baseUrl,
34
+ configured,
35
+ config: merged
36
+ };
37
+ }
38
+ function listEnabledSignalAccounts(cfg) {
39
+ return listSignalAccountIds(cfg).map((accountId) => resolveSignalAccount({
40
+ cfg,
41
+ accountId
42
+ })).filter((account) => account.enabled);
43
+ }
44
+
45
+ //#endregion
46
+ export { resolveSignalAccount as i, listSignalAccountIds as n, resolveDefaultSignalAccountId as r, listEnabledSignalAccounts as t };