squidclaw 3.0.19 → 3.0.21

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 (407) hide show
  1. package/dist/{accounts-s5e9zidf.js → accounts-C7pGQPcS.js} +2 -2
  2. package/dist/{accounts-Bkb-J8V6.js → accounts-DjhBQg_8.js} +2 -2
  3. package/dist/{accounts-B6F_XCgS.js → accounts-DwGoZKGm.js} +17 -17
  4. package/dist/{active-listener-6-Svu8Dx.js → active-listener-DPc_PGsA.js} +2 -2
  5. package/dist/{agents-DL8uYsUq.js → agents-DXKtU4Il.js} +4 -4
  6. package/dist/{agents.config-B4KAAVvR.js → agents.config-BM-2SLCh.js} +1 -1
  7. package/dist/{agents.config-D93fF1eJ.js → agents.config-eMSUW-iw.js} +1 -1
  8. package/dist/{plugin-sdk/api-key-rotation-DyjMI2n3.js → api-key-rotation-DVyYtQxC.js} +2 -2
  9. package/dist/{audio-preflight-DZ1LNMJp.js → audio-preflight-BUCBED7N.js} +32 -32
  10. package/dist/{audio-preflight-Bzo_zN4j.js → audio-preflight-lT9iRnYi.js} +4 -4
  11. package/dist/{audio-transcription-runner-B3u2x_ja.js → audio-transcription-runner-Cv0Q47cM.js} +12 -12
  12. package/dist/{audio-transcription-runner-Cp_lkLCv.js → audio-transcription-runner-YiR1ym3a.js} +1 -1
  13. package/dist/{audit-membership-runtime-w23FnNAN.js → audit-membership-runtime-DyLj-uhz.js} +4 -4
  14. package/dist/{auth-choice-Ba4AEm_k.js → auth-choice-CXepQc7c.js} +1 -1
  15. package/dist/{auth-choice-ziFj5bXd.js → auth-choice-D2JrMJn-.js} +1 -1
  16. package/dist/{banner-DDih2slD.js → banner-DMfuBV69.js} +1 -1
  17. package/dist/build-info.json +3 -3
  18. package/dist/bundled/boot-md/handler.js +51 -51
  19. package/dist/bundled/bootstrap-extra-files/handler.js +6 -6
  20. package/dist/bundled/command-logger/handler.js +2 -2
  21. package/dist/bundled/session-memory/handler.js +687 -51
  22. package/dist/canvas-host/a2ui/a2ui.bundle.js +1 -17815
  23. package/dist/{channel-activity-CxJbx4sD.js → channel-activity-CPpt4XaL.js} +3 -3
  24. package/dist/{channel-options-DTDfU0R6.js → channel-options-CQ-gER0J.js} +1 -1
  25. package/dist/{channel-options-BBSsevyl.js → channel-options-SijIkAlT.js} +1 -1
  26. package/dist/{channel-web-BXl9jCKV.js → channel-web-7t1a2N13.js} +1 -1
  27. package/dist/{channel-web-SF18oYqo.js → channel-web-LLzBxZrT.js} +1 -1
  28. package/dist/{channels-cli-BiuWJpJu.js → channels-cli-D4xUEYYC.js} +6 -6
  29. package/dist/{channels-cli-BDLabpWH.js → channels-cli-DYaFNMme.js} +6 -6
  30. package/dist/{chrome-CZQnp4VH.js → chrome-CuBHInKC.js} +8 -8
  31. package/dist/{chrome-Dxm25ptH.js → chrome-OgCChbC_.js} +26 -26
  32. package/dist/{cli-CfgDCCuC.js → cli-CAID9zkL.js} +1 -1
  33. package/dist/{cli-DAZ1MKrJ.js → cli-Dlc9IFWZ.js} +1 -1
  34. package/dist/{command-registry-DkjNuW8w.js → command-registry-AHS8_9da.js} +9 -9
  35. package/dist/{commands-registry-B44COZFz.js → commands-registry-BJjv8_oR.js} +4 -4
  36. package/dist/{completion-cli-DbNma3J9.js → completion-cli-B8xjpHDs.js} +1 -1
  37. package/dist/{completion-cli-Du8H92bM.js → completion-cli-BR1r9_h4.js} +2 -2
  38. package/dist/{config-cli-CQhQ8Bcc.js → config-cli-D0A8Awoo.js} +1 -1
  39. package/dist/{config-cli-D16tlTWa.js → config-cli-D4Rxoozg.js} +1 -1
  40. package/dist/{configure-B9b3cQTC.js → configure-DOiI8_8c.js} +3 -3
  41. package/dist/{configure-B4TiK50K.js → configure-XmOqwwy9.js} +3 -3
  42. package/dist/control-ui/assets/{index-cM5P_3w7.js → index-BqxuPQOl.js} +2 -2
  43. package/dist/control-ui/assets/{index-cM5P_3w7.js.map → index-BqxuPQOl.js.map} +1 -1
  44. package/dist/control-ui/index.html +1 -1
  45. package/dist/{deliver-B4WWPQvt.js → deliver-6zfT7daI.js} +1 -1
  46. package/dist/{deliver-BcnsjbAB.js → deliver-DMTUTpTM.js} +21 -21
  47. package/dist/deliver-runtime-B80olQwJ.js +36 -0
  48. package/dist/{deliver-runtime-CeE1X9si.js → deliver-runtime-MBexxUuG.js} +3 -3
  49. package/dist/deps-send-discord.runtime-GIuvX7Xw.js +26 -0
  50. package/dist/deps-send-imessage.runtime-B3TC7G80.js +25 -0
  51. package/dist/deps-send-signal.runtime-CuVJyw7n.js +24 -0
  52. package/dist/deps-send-slack.runtime-cbfFoLZ4.js +22 -0
  53. package/dist/deps-send-telegram.runtime-CRyP-xDQ.js +27 -0
  54. package/dist/deps-send-whatsapp.runtime-4aOUBP2J.js +60 -0
  55. package/dist/{deps-send-whatsapp.runtime-B9uivfkM.js → deps-send-whatsapp.runtime-CETLGt-t.js} +3 -3
  56. package/dist/{deps-send-whatsapp.runtime-miTfQkK9.js → deps-send-whatsapp.runtime-CrxkfP31.js} +7 -7
  57. package/dist/{deps-send-whatsapp.runtime-CFnZsKW0.js → deps-send-whatsapp.runtime-__ogpmJj.js} +3 -3
  58. package/dist/{diagnostic-C2lklhkn.js → diagnostic-CnVwZNbm.js} +2 -2
  59. package/dist/{doctor-completion-ujZ_JdIz.js → doctor-completion-CZoEdMS-.js} +1 -1
  60. package/dist/{doctor-completion-CEiVFPte.js → doctor-completion-DhLEFUhN.js} +1 -1
  61. package/dist/entry.js +2 -2
  62. package/dist/{plugin-sdk/errors-B8oJXuCF.js → errors-kkRuS2Cs.js} +1 -1
  63. package/dist/extensionAPI.js +6 -6
  64. package/dist/{fetch-b8tSR7_e.js → fetch-DP-JjB6Z.js} +5 -5
  65. package/dist/{fetch-guard-D16tjNsZ.js → fetch-guard-BDy975wP.js} +2 -2
  66. package/dist/{frontmatter-CjKtFduT.js → frontmatter-Cq1TcIQ2.js} +3 -3
  67. package/dist/{fs-safe-CwHbZdFH.js → fs-safe-BoB4X3GD.js} +4 -4
  68. package/dist/{gateway-cli-NXeo-J8r.js → gateway-cli-BJHBChfI.js} +8 -8
  69. package/dist/{gateway-cli-2jaWM_Ci.js → gateway-cli-BpHskeDd.js} +8 -8
  70. package/dist/{github-copilot-token-Cw3tAXM9.js → github-copilot-token-B5cPlwaz.js} +7 -7
  71. package/dist/{health-BPZALM__.js → health-TmpUGSqu.js} +1 -1
  72. package/dist/{health-DFZKMrW2.js → health-XFKFZ7ZJ.js} +1 -1
  73. package/dist/{hooks-cli-B3rkhWcT.js → hooks-cli-CXsZK8H9.js} +2 -2
  74. package/dist/{hooks-cli-BO_gZJVD.js → hooks-cli-DsDV-Pxz.js} +2 -2
  75. package/dist/{image-DKkuLtZ4.js → image-VgwN31FZ.js} +1 -1
  76. package/dist/{image-C-8Kd2Mh.js → image-kKMG59st.js} +6 -6
  77. package/dist/{image-ops-BoN1E_WZ.js → image-ops-Dg8iraUV.js} +2 -2
  78. package/dist/image-runtime-BqIv7p_K.js +29 -0
  79. package/dist/{image-runtime-BMavqm9n.js → image-runtime-CwMuTYvd.js} +3 -3
  80. package/dist/index.js +6 -6
  81. package/dist/{ir-Dut0zXyS.js → ir-CKK03mBV.js} +8 -8
  82. package/dist/{legacy-names-B0wgIP0Q.js → legacy-names-aGJJuzM_.js} +1 -1
  83. package/dist/llm-slug-generator.js +51 -51
  84. package/dist/{logger-oGKcCLZ5.js → logger-CnTSBL7T.js} +7 -7
  85. package/dist/{login-DJ357UQV.js → login-CeKDrz6_.js} +5 -5
  86. package/dist/{login-qr-C0fDBnpM.js → login-qr-KbOpR0GQ.js} +10 -10
  87. package/dist/{manager-BPGhs30n.js → manager-DINhLnMi.js} +13 -13
  88. package/dist/manager-runtime-D6ckUNSs.js +18 -0
  89. package/dist/{model-selection-CHnojCCK.js → model-selection-DuNLFQPR.js} +43 -43
  90. package/dist/{models-Bb-GYqHr.js → models-5VXwJBU2.js} +2 -2
  91. package/dist/{models-cli-DffAz0ji.js → models-cli-Br56IHfy.js} +3 -3
  92. package/dist/{models-cli-CAIJM1Wh.js → models-cli-CrR1RN3j.js} +2 -2
  93. package/dist/{npm-resolution-D2_zGJM-.js → npm-resolution-CKtyq4FH.js} +1 -1
  94. package/dist/{npm-resolution-D5pBCkUw.js → npm-resolution-CPk7dS7F.js} +1 -1
  95. package/dist/{onboard-DcVsL9Jx.js → onboard-DUnBamC0.js} +2 -2
  96. package/dist/{onboard-channels-mNXKTvFs.js → onboard-channels-D45grihx.js} +1 -1
  97. package/dist/{onboard-channels-C-cQFUBH.js → onboard-channels-_kVo3Apf.js} +1 -1
  98. package/dist/{onboard-dhG2YBez.js → onboard-lFwpCpC3.js} +2 -2
  99. package/dist/{onboarding-B3-IwkNi.js → onboarding-CyCSQ__q.js} +3 -3
  100. package/dist/{onboarding-Cl6kW_iq.js → onboarding-EEd_g8Zg.js} +3 -3
  101. package/dist/{onboarding.finalize-CCU-ykTR.js → onboarding.finalize-CbMq7C4K.js} +5 -5
  102. package/dist/{onboarding.finalize-BZqsNG2H.js → onboarding.finalize-Cs1ukjFN.js} +6 -6
  103. package/dist/{outbound-qTioiTJg.js → outbound-C9svt6RH.js} +6 -6
  104. package/dist/{outbound-attachment-rlW7G5df.js → outbound-attachment-DwupUxYF.js} +2 -2
  105. package/dist/{path-alias-guards-Cpsiv2KL.js → path-alias-guards-DORgbZ1w.js} +1 -1
  106. package/dist/{paths-CSdAWKDO.js → paths-DA5srn0U.js} +5 -5
  107. package/dist/{paths-CXClY8zC.js → paths-DSd911Oe.js} +4 -4
  108. package/dist/{pi-embedded-B79nZERv.js → pi-embedded-BN8fghaF.js} +123 -26
  109. package/dist/{pi-embedded-C5U8Qxn6.js → pi-embedded-BiC4tIJ8.js} +266 -169
  110. package/dist/{pi-embedded-helpers-CEHpGDRs.js → pi-embedded-helpers-A9VYPVCH.js} +3 -3
  111. package/dist/{pi-embedded-helpers-DQ7IaeOi.js → pi-embedded-helpers-Di58J7Eh.js} +52 -52
  112. package/dist/{pi-model-discovery-o-WX5w2t.js → pi-model-discovery-V-InbjOM.js} +7 -7
  113. package/dist/pi-model-discovery-runtime--t6tAlar.js +11 -0
  114. package/dist/{pi-tools.before-tool-call.runtime-B_LUttg1.js → pi-tools.before-tool-call.runtime-Bpk4qTgV.js} +9 -9
  115. package/dist/{plugin-registry-CB47SSz1.js → plugin-registry-CXm125Uz.js} +1 -1
  116. package/dist/{plugin-registry-Gy_VByyf.js → plugin-registry-D3PnPE1D.js} +1 -1
  117. package/dist/plugin-sdk/{accounts-0kF5cxkn.js → accounts-C5PAuCTj.js} +2 -2
  118. package/dist/plugin-sdk/{accounts-u0-JAHzj.js → accounts-DC5cbH9r.js} +2 -2
  119. package/dist/plugin-sdk/{accounts-xZOA23tQ.js → accounts-DncG0Hx9.js} +3 -3
  120. package/dist/plugin-sdk/{active-listener-BO7eBEG_.js → active-listener-Bd3HH2km.js} +2 -2
  121. package/dist/plugin-sdk/agents/agent-tier.d.ts +22 -2
  122. package/dist/plugin-sdk/{api-key-rotation-C4C_mDsg.js → api-key-rotation-BAZ0GD26.js} +2 -2
  123. package/dist/plugin-sdk/{audio-preflight-C0q7lu6y.js → audio-preflight-tpVm-t9O.js} +26 -26
  124. package/dist/plugin-sdk/{audio-transcription-runner-Ced47O1H.js → audio-transcription-runner-DSScb434.js} +11 -11
  125. package/dist/plugin-sdk/{audit-membership-runtime-Xl20kCBe.js → audit-membership-runtime-DHQDvH4u.js} +2 -2
  126. package/dist/plugin-sdk/{channel-activity-CNffKOEQ.js → channel-activity-cYEaofTH.js} +3 -3
  127. package/dist/plugin-sdk/{channel-web-vB3Dcd8-.js → channel-web-CbeCrQ4C.js} +18 -18
  128. package/dist/plugin-sdk/{channel-web-BrhP6FQO.js → channel-web-CqiSEc52.js} +1 -1
  129. package/dist/plugin-sdk/{chrome-DJQWo149.js → chrome-DB2h0uN0.js} +6 -6
  130. package/dist/plugin-sdk/{commands-registry-_kBPE22q.js → commands-registry-DGZ1oFXJ.js} +4 -4
  131. package/dist/plugin-sdk/{common-J8vIST9Q.js → common-D5lLWoCW.js} +2 -2
  132. package/dist/plugin-sdk/compat.js +50 -50
  133. package/dist/plugin-sdk/{config-CnZ1TlEw.js → config-Bt-c7PWF.js} +7 -7
  134. package/dist/plugin-sdk/{deliver-Xh6voz9H.js → deliver-MvrkIeKJ.js} +10 -10
  135. package/dist/plugin-sdk/deliver-runtime-i50kjcNM.js +32 -0
  136. package/dist/plugin-sdk/deps-send-discord.runtime-hOYq9ov0.js +23 -0
  137. package/dist/plugin-sdk/deps-send-imessage.runtime-D5n9DXyL.js +22 -0
  138. package/dist/plugin-sdk/deps-send-signal.runtime-CwEaRyJU.js +21 -0
  139. package/dist/plugin-sdk/deps-send-slack.runtime-DOZeLIaC.js +19 -0
  140. package/dist/plugin-sdk/deps-send-telegram.runtime-BW1hSPKh.js +24 -0
  141. package/dist/plugin-sdk/{deps-send-whatsapp.runtime-Ce4Gzz-J.js → deps-send-whatsapp.runtime-DvxhnHR_.js} +3 -3
  142. package/dist/plugin-sdk/deps-send-whatsapp.runtime-JKmTtCFM.js +57 -0
  143. package/dist/plugin-sdk/{diagnostic-DKsyROPi.js → diagnostic-B6F3BtCX.js} +2 -2
  144. package/dist/plugin-sdk/{errors-CgRPdp3o.js → errors-9oVz7reJ.js} +1 -1
  145. package/dist/plugin-sdk/{fetch-guard-BBAT8G-1.js → fetch-guard-cfPCfkrw.js} +2 -2
  146. package/dist/plugin-sdk/{fs-safe-DqCO1D4C.js → fs-safe-DFbwq9CS.js} +3 -3
  147. package/dist/plugin-sdk/{image-4ay2cw7G.js → image-FK5xhY5u.js} +6 -6
  148. package/dist/plugin-sdk/{image-ops-G8KoEfY8.js → image-ops-BSYgrL7E.js} +2 -2
  149. package/dist/plugin-sdk/image-runtime-B95EPFpg.js +25 -0
  150. package/dist/plugin-sdk/index.js +2 -2
  151. package/dist/plugin-sdk/{ir-DXj1KGnL.js → ir-CWmryq5f.js} +7 -7
  152. package/dist/plugin-sdk/{local-roots-ovKHgVSP.js → local-roots-U25IdeDH.js} +4 -4
  153. package/dist/plugin-sdk/{logger-DIb2cGHp.js → logger-Bg4vIUJn.js} +2 -2
  154. package/dist/plugin-sdk/{login-Cgtm70by.js → login-8qzl2H7G.js} +4 -4
  155. package/dist/plugin-sdk/{login-qr-BrixqhMx.js → login-qr-kalCTJEw.js} +5 -5
  156. package/dist/plugin-sdk/{manager-PEQ_cPYF.js → manager-ijYHktIt.js} +8 -8
  157. package/dist/plugin-sdk/manager-runtime--JrLQE03.js +15 -0
  158. package/dist/plugin-sdk/{outbound-BK75h9CQ.js → outbound-BIVf0aPq.js} +5 -5
  159. package/dist/plugin-sdk/{outbound-attachment-BI1QngTS.js → outbound-attachment-F5tzeNUD.js} +2 -2
  160. package/dist/plugin-sdk/{path-alias-guards-TnxupPQC.js → path-alias-guards-DA0MhfkG.js} +1 -1
  161. package/dist/plugin-sdk/{paths-B7_75Pdr.js → paths-CP67O8eN.js} +1 -1
  162. package/dist/plugin-sdk/{pi-embedded-helpers-BioULNev.js → pi-embedded-helpers-CxMnPQ37.js} +16 -16
  163. package/dist/plugin-sdk/{pi-model-discovery-BMmAbnil.js → pi-model-discovery-8OL77kCh.js} +1 -1
  164. package/dist/plugin-sdk/pi-model-discovery-runtime-DGRFpUfd.js +8 -0
  165. package/dist/plugin-sdk/{pi-tools.before-tool-call.runtime-rdRqZ9lk.js → pi-tools.before-tool-call.runtime-B7FW36KX.js} +4 -4
  166. package/dist/plugin-sdk/{plugins-BqKpJkqt.js → plugins-D3mrhffi.js} +4 -4
  167. package/dist/plugin-sdk/{proxy-env-C4s12rr8.js → proxy-env-CUUXO6rv.js} +1 -1
  168. package/dist/plugin-sdk/{proxy-fetch-ZPEvp58f.js → proxy-fetch-Cf3IUSDw.js} +1 -1
  169. package/dist/plugin-sdk/{pw-ai-Cb0ZDSq4.js → pw-ai-dPmKdw_w.js} +9 -9
  170. package/dist/plugin-sdk/{qmd-manager-Bei6TaFq.js → qmd-manager-Ov9ElEfG.js} +7 -7
  171. package/dist/plugin-sdk/{query-expansion-POz2za8a.js → query-expansion-CzjwW461.js} +4 -4
  172. package/dist/plugin-sdk/{redact-9WsNyb7S.js → redact-DfACyt0X.js} +1 -1
  173. package/dist/plugin-sdk/{reply-DxvpiQBp.js → reply-BczXGzC_.js} +137 -40
  174. package/dist/plugin-sdk/{reply-sFKB3ofA.js → reply-Dfjh1YtV.js} +206 -109
  175. package/dist/plugin-sdk/{resolve-outbound-target-DL1adXpk.js → resolve-outbound-target-BeIB_jm0.js} +2 -2
  176. package/dist/plugin-sdk/{run-with-concurrency-DmTrN5JG.js → run-with-concurrency-kVooFCVo.js} +1 -1
  177. package/dist/plugin-sdk/runtime-whatsapp-login.runtime-B6EcC22F.js +10 -0
  178. package/dist/plugin-sdk/runtime-whatsapp-outbound.runtime-DH8J0Ie7.js +19 -0
  179. package/dist/plugin-sdk/{send-BCVXt-3e.js → send-CgkNzAhS.js} +8 -8
  180. package/dist/plugin-sdk/{send-CAG0Or0G.js → send-CuENGOhq.js} +7 -7
  181. package/dist/plugin-sdk/{send-X6QuS7x0.js → send-D6Uh2D1D.js} +5 -5
  182. package/dist/plugin-sdk/{send-BNePC8CO.js → send-DV5kR0Hg.js} +6 -6
  183. package/dist/plugin-sdk/{send-DhGDAZnT.js → send-DtA6ngBJ.js} +13 -13
  184. package/dist/plugin-sdk/{session-CAqYQVhe.js → session-CnlZn-bR.js} +3 -3
  185. package/dist/plugin-sdk/{skill-commands-Bk-IFyNw.js → skill-commands-Ckfii7h8.js} +4 -4
  186. package/dist/plugin-sdk/{skills-C5bT9-q4.js → skills-v0WQqKTa.js} +6 -6
  187. package/dist/plugin-sdk/slash-commands.runtime-BYoxsxkX.js +13 -0
  188. package/dist/plugin-sdk/{slash-dispatch.runtime-Dyb_EkUt.js → slash-dispatch.runtime-DOo1IzuY.js} +1 -1
  189. package/dist/plugin-sdk/slash-dispatch.runtime-JfFr7bNy.js +52 -0
  190. package/dist/plugin-sdk/slash-skill-commands.runtime-D0399tia.js +16 -0
  191. package/dist/plugin-sdk/{store-D3lgWnS2.js → store-C_UrNuM3.js} +2 -2
  192. package/dist/plugin-sdk/{subagent-registry-runtime-hdnabonI.js → subagent-registry-runtime-DLvup9ph.js} +1 -1
  193. package/dist/plugin-sdk/subagent-registry-runtime-DVl5xKOW.js +52 -0
  194. package/dist/plugin-sdk/{tables-Dmlu4_q_.js → tables-CJP05iMa.js} +1 -1
  195. package/dist/plugin-sdk/{thinking-DRNOh5Xx.js → thinking-BhP3vn1l.js} +7 -7
  196. package/dist/plugin-sdk/{tokens-CTIYTLWu.js → tokens-DAL_5WHL.js} +1 -1
  197. package/dist/plugin-sdk/{tool-images-GSlvf6RP.js → tool-images-ZE5G5UM0.js} +2 -2
  198. package/dist/plugin-sdk/{web-D9LAdsuU.js → web-C2Sj2WW0.js} +2 -2
  199. package/dist/plugin-sdk/web-CNY_ky8h.js +56 -0
  200. package/dist/plugin-sdk/{whatsapp-actions-BCJYmWCB.js → whatsapp-actions-DJmx6ihj.js} +17 -17
  201. package/dist/plugin-sdk/whatsapp.js +50 -50
  202. package/dist/{plugins-AqsVZZk3.js → plugins-DvejjZnJ.js} +11 -11
  203. package/dist/{plugins-cli-BYnoJwF1.js → plugins-cli-BA_2daJe.js} +2 -2
  204. package/dist/{plugins-cli-gtgkmDcv.js → plugins-cli-C0WKWrZo.js} +2 -2
  205. package/dist/{program-BGlgDpHI.js → program-D_xdLzmM.js} +7 -7
  206. package/dist/{program-context-M4FTWqqg.js → program-context-DfmCIQ91.js} +17 -17
  207. package/dist/{prompt-select-styled-AL5Tm3yO.js → prompt-select-styled-ApPSadr5.js} +4 -4
  208. package/dist/{prompt-select-styled-BVC2byQV.js → prompt-select-styled-BsheNEnh.js} +4 -4
  209. package/dist/{provider-auth-helpers-DDgrFku5.js → provider-auth-helpers-B5kD4Lt6.js} +1 -1
  210. package/dist/{provider-auth-helpers-Q7aIhDgv.js → provider-auth-helpers-DpOFkV28.js} +1 -1
  211. package/dist/{proxy-env-DXXfs2WL.js → proxy-env-D-fike7s.js} +1 -1
  212. package/dist/{plugin-sdk/proxy-fetch-Dt5BedH8.js → proxy-fetch-lH6RsRTE.js} +1 -1
  213. package/dist/{push-apns-Ga8xvhkh.js → push-apns-BbenjEX4.js} +1 -1
  214. package/dist/{push-apns-FyGbUyh2.js → push-apns-Ci2sdIKf.js} +1 -1
  215. package/dist/{pw-ai-GOBxzChI.js → pw-ai-B8ymIYub.js} +14 -14
  216. package/dist/{pw-ai-Du22SYoO.js → pw-ai-CM87tQwG.js} +1 -1
  217. package/dist/{qmd-manager-CO-shcLU.js → qmd-manager-BN0siR2Z.js} +10 -10
  218. package/dist/{query-expansion-DlQOkf-g.js → query-expansion-Dzxt6kXo.js} +6 -6
  219. package/dist/{redact-NmPEVjIo.js → redact-DvzicBMu.js} +1 -1
  220. package/dist/{register.agent-koAXw1ay.js → register.agent-CY6R-7fn.js} +6 -6
  221. package/dist/{register.agent-zP8a-sNB.js → register.agent-Dk_5V5oA.js} +7 -7
  222. package/dist/{register.configure-CUuP5J8W.js → register.configure-C8OFfGln.js} +7 -7
  223. package/dist/{register.configure-CYrmyjlf.js → register.configure-DT1RLeTR.js} +7 -7
  224. package/dist/{register.maintenance-BZuEljPU.js → register.maintenance-CluQOq8b.js} +8 -8
  225. package/dist/{register.maintenance-ByEQ2CVH.js → register.maintenance-YHXmOQzf.js} +7 -7
  226. package/dist/{register.message-BkSXhv9I.js → register.message-BCTXT5yK.js} +2 -2
  227. package/dist/{register.message-CgHfmDHm.js → register.message-BuoFjRqA.js} +2 -2
  228. package/dist/{register.onboard-HcQwPAEK.js → register.onboard-BJaRMtxU.js} +2 -2
  229. package/dist/{register.onboard-4ke40MNP.js → register.onboard-C64oXnvq.js} +2 -2
  230. package/dist/{register.setup-B41xZb1r.js → register.setup-Dl3nk2Ui.js} +2 -2
  231. package/dist/{register.setup-xAb7Cvzy.js → register.setup-Drc55K_w.js} +2 -2
  232. package/dist/{register.status-health-sessions-CcOVL0x8.js → register.status-health-sessions-BHtbPeCO.js} +3 -3
  233. package/dist/{register.status-health-sessions-BbHAAKwv.js → register.status-health-sessions-xgC_gtEM.js} +3 -3
  234. package/dist/{register.subclis-_uSASnfC.js → register.subclis-CDMFyaKR.js} +9 -9
  235. package/dist/{reply-BFTOdZcK.js → reply-DwjHsBuj.js} +137 -40
  236. package/dist/{run-main-C1eZrW-5.js → run-main-BcA22Ipv.js} +14 -14
  237. package/dist/{run-with-concurrency-FczpX8ng.js → run-with-concurrency-BFR3ReeF.js} +4 -4
  238. package/dist/runtime-whatsapp-login.runtime-DxV9iv6l.js +13 -0
  239. package/dist/runtime-whatsapp-outbound.runtime-DQqIlwhS.js +22 -0
  240. package/dist/{send-Bx9CqcZr.js → send-4nRsZJXH.js} +7 -7
  241. package/dist/{send-D5D0ZGht.js → send-BGlcHjUD.js} +26 -26
  242. package/dist/{send-DtHQ7_6Z.js → send-BTUU1jWM.js} +8 -8
  243. package/dist/{send-B9H0BkfO.js → send-DdBbRpTP.js} +6 -6
  244. package/dist/{send-B5QEmMJ4.js → send-dTQd-IyJ.js} +5 -5
  245. package/dist/{server-node-events-pYrJmi9w.js → server-node-events-Q0cT2ifj.js} +2 -2
  246. package/dist/{server-node-events-DbS1jJ5j.js → server-node-events-YN5eJeHa.js} +2 -2
  247. package/dist/{session-DLTCuoUD.js → session-CnCwDJke.js} +8 -8
  248. package/dist/{skill-commands-BwTLQRR8.js → skill-commands-Cz45_nme.js} +9 -9
  249. package/dist/{skills-B9N2bqKU.js → skills-CdCS1HeL.js} +22 -22
  250. package/dist/slash-commands.runtime-CZz6v6b3.js +16 -0
  251. package/dist/{slash-dispatch.runtime-PX9_08Hm.js → slash-dispatch.runtime-BOMEVFk0.js} +1 -1
  252. package/dist/{slash-dispatch.runtime-DmFVOi3w.js → slash-dispatch.runtime-DB1QsBRc.js} +1 -1
  253. package/dist/slash-dispatch.runtime-SO7HOe8q.js +56 -0
  254. package/dist/{slash-dispatch.runtime-BGXbtMX6.js → slash-dispatch.runtime-sXaUYn4v.js} +6 -6
  255. package/dist/slash-skill-commands.runtime-Bawt7j0r.js +20 -0
  256. package/dist/{status-DtiapFqq.js → status-Bh5x6DsW.js} +2 -2
  257. package/dist/{status-B4eVRJcO.js → status-cU9cJReo.js} +2 -2
  258. package/dist/{store-CvQ41zCV.js → store-D9z0dn7D.js} +2 -2
  259. package/dist/{subagent-registry-Ctrhw4X-.js → subagent-registry-CIgFD2oi.js} +103 -6
  260. package/dist/{subagent-registry-runtime-CezPaX9P.js → subagent-registry-runtime-232sNNT6.js} +6 -6
  261. package/dist/subagent-registry-runtime-D2rUxU5J.js +56 -0
  262. package/dist/{subagent-registry-runtime-Cy7dsGqF.js → subagent-registry-runtime-D7ubAnDZ.js} +1 -1
  263. package/dist/{subagent-registry-runtime-CTjx4TK5.js → subagent-registry-runtime-DGTjU9Lb.js} +1 -1
  264. package/dist/{subsystem-BaLYRf7D.js → subsystem-6v7sWnAD.js} +14 -14
  265. package/dist/{tables-BRYYxYs7.js → tables-BTFiZyRU.js} +1 -1
  266. package/dist/{target-errors-D0ZJUbbf.js → target-errors-DgNRx3Nr.js} +2 -2
  267. package/dist/{thinking-B-A99X3F.js → thinking-B75CXkTT.js} +7 -7
  268. package/dist/{tokens-D2XhLqIz.js → tokens-DfbMVF9y.js} +1 -1
  269. package/dist/{tool-images-Zn6jVmkX.js → tool-images-Dp5OiXeA.js} +2 -2
  270. package/dist/{update-cli-_FsTRdQZ.js → update-cli-CktBOXZF.js} +7 -7
  271. package/dist/{update-cli-DLOWRdjv.js → update-cli-DM_dUip_.js} +8 -8
  272. package/dist/{update-runner-BY3l7ytB.js → update-runner-BBJZmfZ4.js} +1 -1
  273. package/dist/{update-runner-BKWHnVYI.js → update-runner-BYGPkHXG.js} +1 -1
  274. package/dist/{web-BdZ3mX3p.js → web-CZhZC1EA.js} +2 -2
  275. package/dist/{web-B46aOGK0.js → web-Chw1dtKA.js} +6 -6
  276. package/dist/{web-BNfDYvlW.js → web-DWRZAXj9.js} +2 -2
  277. package/dist/{web-1D0d1RHD.js → web-QsxgXbNK.js} +55 -55
  278. package/dist/{whatsapp-actions-Cuy0qeQK.js → whatsapp-actions-CzqsuSGx.js} +21 -21
  279. package/dist/{workspace-TqfVSQuO.js → workspace-kVMIaBrV.js} +20 -20
  280. package/extensions/acpx/node_modules/.bin/acpx +2 -2
  281. package/extensions/diagnostics-otel/node_modules/.bin/acorn +2 -2
  282. package/extensions/diffs/node_modules/.bin/playwright-core +2 -2
  283. package/extensions/googlechat/node_modules/.bin/squidclaw +2 -2
  284. package/extensions/matrix/node_modules/.bin/markdown-it +2 -2
  285. package/extensions/memory-core/node_modules/.bin/squidclaw +2 -2
  286. package/extensions/memory-lancedb/node_modules/.bin/arrow2csv +2 -2
  287. package/extensions/memory-lancedb/node_modules/.bin/openai +2 -2
  288. package/extensions/nostr/node_modules/.bin/tsc +2 -2
  289. package/extensions/nostr/node_modules/.bin/tsserver +2 -2
  290. package/extensions/tlon/node_modules/.bin/tlon +2 -2
  291. package/package.json +1 -1
  292. package/dist/api-key-rotation-TRwuCWbu.js +0 -181
  293. package/dist/canvas-host/a2ui/.bundle.hash +0 -1
  294. package/dist/deliver-runtime-_mBfV_4S.js +0 -36
  295. package/dist/deps-send-discord.runtime-CUTAK2hy.js +0 -26
  296. package/dist/deps-send-imessage.runtime-CQOiEIuA.js +0 -25
  297. package/dist/deps-send-signal.runtime-wN7MkzLw.js +0 -24
  298. package/dist/deps-send-slack.runtime-HEEwW4uU.js +0 -22
  299. package/dist/deps-send-telegram.runtime-DHlcnjQO.js +0 -27
  300. package/dist/deps-send-whatsapp.runtime-Cw7U9orE.js +0 -60
  301. package/dist/errors-DfgAh2Ml.js +0 -54
  302. package/dist/export-html/vendor/highlight.min.js +0 -1213
  303. package/dist/export-html/vendor/marked.min.js +0 -6
  304. package/dist/image-runtime-D11wBIC8.js +0 -29
  305. package/dist/manager-runtime-BB9lcoFR.js +0 -18
  306. package/dist/pi-model-discovery-runtime-DBkQoIJw.js +0 -11
  307. package/dist/plugin-sdk/accounts-CUEuUR3C.js +0 -46
  308. package/dist/plugin-sdk/accounts-D0W2pELU.js +0 -288
  309. package/dist/plugin-sdk/accounts-ucj0odJq.js +0 -35
  310. package/dist/plugin-sdk/active-listener-C5xPUSTb.js +0 -50
  311. package/dist/plugin-sdk/audio-preflight-Cqdo0JKm.js +0 -69
  312. package/dist/plugin-sdk/audio-transcription-runner-DnEooIyE.js +0 -2176
  313. package/dist/plugin-sdk/audit-membership-runtime-B9b-zRwg.js +0 -58
  314. package/dist/plugin-sdk/channel-activity-BMWLw4o2.js +0 -94
  315. package/dist/plugin-sdk/channel-web-D9WdAFlv.js +0 -2256
  316. package/dist/plugin-sdk/chrome-CV-q0Lmc.js +0 -2415
  317. package/dist/plugin-sdk/commands-registry-e7YoqrbP.js +0 -1125
  318. package/dist/plugin-sdk/config-B2B64aX0.js +0 -17911
  319. package/dist/plugin-sdk/deliver-BkyBtcLR.js +0 -1694
  320. package/dist/plugin-sdk/deliver-runtime-5UVcSskg.js +0 -32
  321. package/dist/plugin-sdk/deliver-runtime-O4lwAWMw.js +0 -32
  322. package/dist/plugin-sdk/deps-send-discord.runtime-BAeeBldY.js +0 -23
  323. package/dist/plugin-sdk/deps-send-discord.runtime-DTspXSCt.js +0 -23
  324. package/dist/plugin-sdk/deps-send-imessage.runtime-EL-CfikZ.js +0 -22
  325. package/dist/plugin-sdk/deps-send-imessage.runtime-qThAwDEe.js +0 -22
  326. package/dist/plugin-sdk/deps-send-signal.runtime-BeemHeUu.js +0 -21
  327. package/dist/plugin-sdk/deps-send-signal.runtime-DnjnVzZF.js +0 -21
  328. package/dist/plugin-sdk/deps-send-slack.runtime-CbKevLnv.js +0 -19
  329. package/dist/plugin-sdk/deps-send-slack.runtime-DTttkC0N.js +0 -19
  330. package/dist/plugin-sdk/deps-send-telegram.runtime-C6y29O9E.js +0 -24
  331. package/dist/plugin-sdk/deps-send-telegram.runtime-Dsf9Cnka.js +0 -24
  332. package/dist/plugin-sdk/deps-send-whatsapp.runtime-CCS71r77.js +0 -57
  333. package/dist/plugin-sdk/deps-send-whatsapp.runtime-CuxKhIE0.js +0 -57
  334. package/dist/plugin-sdk/diagnostic-DPRVoKTk.js +0 -319
  335. package/dist/plugin-sdk/fetch-guard-F0Fnqisy.js +0 -156
  336. package/dist/plugin-sdk/fs-safe-Dqmpk-Fr.js +0 -352
  337. package/dist/plugin-sdk/image-cBW8L8pp.js +0 -2310
  338. package/dist/plugin-sdk/image-ops-BP8ix1GC.js +0 -584
  339. package/dist/plugin-sdk/image-runtime-9xkgSlNz.js +0 -25
  340. package/dist/plugin-sdk/image-runtime-CpfepTDc.js +0 -25
  341. package/dist/plugin-sdk/ir-DWEc6zOp.js +0 -1296
  342. package/dist/plugin-sdk/local-roots-BIPT8uAO.js +0 -186
  343. package/dist/plugin-sdk/logger-DDdrdbDu.js +0 -1163
  344. package/dist/plugin-sdk/login-BMTiGutN.js +0 -57
  345. package/dist/plugin-sdk/login-qr-BFxqYUkc.js +0 -320
  346. package/dist/plugin-sdk/manager-BD-aYaZ8.js +0 -3917
  347. package/dist/plugin-sdk/manager-runtime-BmgTeb5G.js +0 -15
  348. package/dist/plugin-sdk/manager-runtime-C5bRwUlz.js +0 -15
  349. package/dist/plugin-sdk/outbound-Bm07xvO6.js +0 -212
  350. package/dist/plugin-sdk/outbound-attachment-DLsaxDsc.js +0 -19
  351. package/dist/plugin-sdk/path-alias-guards-gBhrAn14.js +0 -43
  352. package/dist/plugin-sdk/paths-C6W4VHoa.js +0 -166
  353. package/dist/plugin-sdk/pi-embedded-helpers-BExwPvTh.js +0 -9627
  354. package/dist/plugin-sdk/pi-model-discovery-DdctvBeX.js +0 -134
  355. package/dist/plugin-sdk/pi-model-discovery-runtime-COnuGwZt.js +0 -8
  356. package/dist/plugin-sdk/pi-model-discovery-runtime-DrtpLJjk.js +0 -8
  357. package/dist/plugin-sdk/pi-tools.before-tool-call.runtime-rgTz3FBl.js +0 -354
  358. package/dist/plugin-sdk/plugins-BN64HHZA.js +0 -864
  359. package/dist/plugin-sdk/pw-ai-DBm3RdBK.js +0 -1938
  360. package/dist/plugin-sdk/qmd-manager-6bozlfFg.js +0 -1448
  361. package/dist/plugin-sdk/query-expansion-eeVz_aEm.js +0 -1011
  362. package/dist/plugin-sdk/redact-BoNEjbpF.js +0 -319
  363. package/dist/plugin-sdk/reply-CqXMy3Yd.js +0 -98731
  364. package/dist/plugin-sdk/resolve-outbound-target-DXfjGlZQ.js +0 -40
  365. package/dist/plugin-sdk/run-with-concurrency-5DMu9szx.js +0 -1994
  366. package/dist/plugin-sdk/runtime-whatsapp-login.runtime-99sCh8RG.js +0 -10
  367. package/dist/plugin-sdk/runtime-whatsapp-login.runtime-D2hkJBa-.js +0 -10
  368. package/dist/plugin-sdk/runtime-whatsapp-outbound.runtime-C06I4adi.js +0 -19
  369. package/dist/plugin-sdk/runtime-whatsapp-outbound.runtime-dTkDaXHl.js +0 -19
  370. package/dist/plugin-sdk/send-B9xnwtQ-.js +0 -540
  371. package/dist/plugin-sdk/send-BxySs-Cu.js +0 -2587
  372. package/dist/plugin-sdk/send-D9THKp_J.js +0 -414
  373. package/dist/plugin-sdk/send-DCuaaP2w.js +0 -503
  374. package/dist/plugin-sdk/send-Dm_-_xje.js +0 -3135
  375. package/dist/plugin-sdk/session-DDzIZHxt.js +0 -169
  376. package/dist/plugin-sdk/skill-commands-DRvqtuFC.js +0 -342
  377. package/dist/plugin-sdk/skills-BWwlfbVj.js +0 -1428
  378. package/dist/plugin-sdk/slash-commands.runtime-BzYsaTST.js +0 -13
  379. package/dist/plugin-sdk/slash-commands.runtime-EAZKpRKq.js +0 -13
  380. package/dist/plugin-sdk/slash-dispatch.runtime-BC3IAF-I.js +0 -52
  381. package/dist/plugin-sdk/slash-dispatch.runtime-C7u7mlny.js +0 -52
  382. package/dist/plugin-sdk/slash-skill-commands.runtime-DGd_JSWX.js +0 -16
  383. package/dist/plugin-sdk/slash-skill-commands.runtime-sg98L8BK.js +0 -16
  384. package/dist/plugin-sdk/ssrf-DOBwjFow.js +0 -202
  385. package/dist/plugin-sdk/store-BKDR_-Qk.js +0 -81
  386. package/dist/plugin-sdk/subagent-registry-runtime-B6l6PxqP.js +0 -52
  387. package/dist/plugin-sdk/subagent-registry-runtime-Ceu7AzWi.js +0 -52
  388. package/dist/plugin-sdk/tables-GIj79us5.js +0 -55
  389. package/dist/plugin-sdk/target-errors-jlLHihbX.js +0 -195
  390. package/dist/plugin-sdk/thinking-BgdUnMZ2.js +0 -1206
  391. package/dist/plugin-sdk/tokens-CLE20fRI.js +0 -52
  392. package/dist/plugin-sdk/tool-images-BY1gsRyE.js +0 -274
  393. package/dist/plugin-sdk/web-BK2-uaOo.js +0 -56
  394. package/dist/plugin-sdk/web-Bnn82S4u.js +0 -56
  395. package/dist/plugin-sdk/whatsapp-actions-DQpK_5Ds.js +0 -80
  396. package/dist/proxy-fetch-C2v-Utgg.js +0 -38
  397. package/dist/runtime-whatsapp-login.runtime-DumUjKRz.js +0 -13
  398. package/dist/runtime-whatsapp-outbound.runtime-Cgu2MfqR.js +0 -22
  399. package/dist/slash-commands.runtime-CjBXruwG.js +0 -16
  400. package/dist/slash-dispatch.runtime-DqZVfX4H.js +0 -56
  401. package/dist/slash-skill-commands.runtime-DYK20Lxf.js +0 -20
  402. package/dist/subagent-registry-runtime-BIKGAzgI.js +0 -56
  403. package/docs/reference/templates/IDENTITY.md +0 -29
  404. package/docs/reference/templates/USER.md +0 -23
  405. package/docs/zh-CN/reference/templates/IDENTITY.md +0 -36
  406. package/docs/zh-CN/reference/templates/USER.md +0 -30
  407. package/skills/sherpa-onnx-tts/bin/sherpa-onnx-tts +0 -178
@@ -1,10 +0,0 @@
1
- import "./run-with-concurrency-DmTrN5JG.js";
2
- import "./config-CnZ1TlEw.js";
3
- import "./logger-DIb2cGHp.js";
4
- import "./paths-Duwviem_.js";
5
- import "./accounts-xZOA23tQ.js";
6
- import "./github-copilot-token-C0y6vp3r.js";
7
- import "./session-CAqYQVhe.js";
8
- import { t as loginWeb } from "./login-Cgtm70by.js";
9
-
10
- export { loginWeb };
@@ -1,10 +0,0 @@
1
- import "./run-with-concurrency-5DMu9szx.js";
2
- import "./accounts-D0W2pELU.js";
3
- import "./paths-8xF5kDne.js";
4
- import "./github-copilot-token-Dy-0-Kh3.js";
5
- import "./config-B2B64aX0.js";
6
- import "./logger-DDdrdbDu.js";
7
- import "./session-DDzIZHxt.js";
8
- import { t as loginWeb } from "./login-BMTiGutN.js";
9
-
10
- export { loginWeb };
@@ -1,19 +0,0 @@
1
- import "./run-with-concurrency-5DMu9szx.js";
2
- import "./accounts-D0W2pELU.js";
3
- import "./paths-8xF5kDne.js";
4
- import "./github-copilot-token-Dy-0-Kh3.js";
5
- import "./config-B2B64aX0.js";
6
- import "./logger-DDdrdbDu.js";
7
- import "./image-ops-BP8ix1GC.js";
8
- import "./plugins-BN64HHZA.js";
9
- import "./path-alias-guards-gBhrAn14.js";
10
- import "./fs-safe-Dqmpk-Fr.js";
11
- import "./ssrf-DOBwjFow.js";
12
- import "./fetch-guard-F0Fnqisy.js";
13
- import "./local-roots-BIPT8uAO.js";
14
- import "./ir-DWEc6zOp.js";
15
- import "./render-HmipMDlP.js";
16
- import "./tables-GIj79us5.js";
17
- import { n as sendPollWhatsApp, t as sendMessageWhatsApp } from "./outbound-Bm07xvO6.js";
18
-
19
- export { sendMessageWhatsApp, sendPollWhatsApp };
@@ -1,19 +0,0 @@
1
- import "./run-with-concurrency-DmTrN5JG.js";
2
- import "./config-CnZ1TlEw.js";
3
- import "./logger-DIb2cGHp.js";
4
- import "./paths-Duwviem_.js";
5
- import "./accounts-xZOA23tQ.js";
6
- import "./plugins-BqKpJkqt.js";
7
- import "./image-ops-G8KoEfY8.js";
8
- import "./github-copilot-token-C0y6vp3r.js";
9
- import "./path-alias-guards-TnxupPQC.js";
10
- import "./fs-safe-DqCO1D4C.js";
11
- import "./proxy-env-C4s12rr8.js";
12
- import "./fetch-guard-BBAT8G-1.js";
13
- import "./local-roots-ovKHgVSP.js";
14
- import "./ir-DXj1KGnL.js";
15
- import "./render-95l30zcf.js";
16
- import "./tables-Dmlu4_q_.js";
17
- import { n as sendPollWhatsApp, t as sendMessageWhatsApp } from "./outbound-BK75h9CQ.js";
18
-
19
- export { sendMessageWhatsApp, sendPollWhatsApp };
@@ -1,540 +0,0 @@
1
- import { n as loadConfig } from "./config-B2B64aX0.js";
2
- import { m as kindFromMime } from "./image-ops-BP8ix1GC.js";
3
- import { i as resolveSignalAccount } from "./accounts-CUEuUR3C.js";
4
- import { n as fetchWithTimeout } from "./fetch-timeout-D455O27U.js";
5
- import { t as resolveFetch } from "./fetch-B_RcOnt9.js";
6
- import { i as resolveMarkdownTableMode, n as markdownToIR, t as chunkMarkdownIR } from "./ir-DWEc6zOp.js";
7
- import { n as generateSecureUuid } from "./secure-random-IkuYAMEf.js";
8
- import { t as resolveOutboundAttachmentFromUrl } from "./outbound-attachment-DLsaxDsc.js";
9
-
10
- //#region src/signal/format.ts
11
- function normalizeUrlForComparison(url) {
12
- let normalized = url.toLowerCase();
13
- normalized = normalized.replace(/^https?:\/\//, "");
14
- normalized = normalized.replace(/^www\./, "");
15
- normalized = normalized.replace(/\/+$/, "");
16
- return normalized;
17
- }
18
- function mapStyle(style) {
19
- switch (style) {
20
- case "bold": return "BOLD";
21
- case "italic": return "ITALIC";
22
- case "strikethrough": return "STRIKETHROUGH";
23
- case "code":
24
- case "code_block": return "MONOSPACE";
25
- case "spoiler": return "SPOILER";
26
- default: return null;
27
- }
28
- }
29
- function mergeStyles(styles) {
30
- const sorted = [...styles].toSorted((a, b) => {
31
- if (a.start !== b.start) return a.start - b.start;
32
- if (a.length !== b.length) return a.length - b.length;
33
- return a.style.localeCompare(b.style);
34
- });
35
- const merged = [];
36
- for (const style of sorted) {
37
- const prev = merged[merged.length - 1];
38
- if (prev && prev.style === style.style && style.start <= prev.start + prev.length) {
39
- const prevEnd = prev.start + prev.length;
40
- prev.length = Math.max(prevEnd, style.start + style.length) - prev.start;
41
- continue;
42
- }
43
- merged.push({ ...style });
44
- }
45
- return merged;
46
- }
47
- function clampStyles(styles, maxLength) {
48
- const clamped = [];
49
- for (const style of styles) {
50
- const start = Math.max(0, Math.min(style.start, maxLength));
51
- const length = Math.min(style.start + style.length, maxLength) - start;
52
- if (length > 0) clamped.push({
53
- start,
54
- length,
55
- style: style.style
56
- });
57
- }
58
- return clamped;
59
- }
60
- function applyInsertionsToStyles(spans, insertions) {
61
- if (insertions.length === 0) return spans;
62
- const sortedInsertions = [...insertions].toSorted((a, b) => a.pos - b.pos);
63
- let updated = spans;
64
- let cumulativeShift = 0;
65
- for (const insertion of sortedInsertions) {
66
- const insertionPos = insertion.pos + cumulativeShift;
67
- const next = [];
68
- for (const span of updated) {
69
- if (span.end <= insertionPos) {
70
- next.push(span);
71
- continue;
72
- }
73
- if (span.start >= insertionPos) {
74
- next.push({
75
- start: span.start + insertion.length,
76
- end: span.end + insertion.length,
77
- style: span.style
78
- });
79
- continue;
80
- }
81
- if (span.start < insertionPos && span.end > insertionPos) {
82
- if (insertionPos > span.start) next.push({
83
- start: span.start,
84
- end: insertionPos,
85
- style: span.style
86
- });
87
- const shiftedStart = insertionPos + insertion.length;
88
- const shiftedEnd = span.end + insertion.length;
89
- if (shiftedEnd > shiftedStart) next.push({
90
- start: shiftedStart,
91
- end: shiftedEnd,
92
- style: span.style
93
- });
94
- }
95
- }
96
- updated = next;
97
- cumulativeShift += insertion.length;
98
- }
99
- return updated;
100
- }
101
- function renderSignalText(ir) {
102
- const text = ir.text ?? "";
103
- if (!text) return {
104
- text: "",
105
- styles: []
106
- };
107
- const sortedLinks = [...ir.links].toSorted((a, b) => a.start - b.start);
108
- let out = "";
109
- let cursor = 0;
110
- const insertions = [];
111
- for (const link of sortedLinks) {
112
- if (link.start < cursor) continue;
113
- out += text.slice(cursor, link.end);
114
- const href = link.href.trim();
115
- const trimmedLabel = text.slice(link.start, link.end).trim();
116
- if (href) if (!trimmedLabel) {
117
- out += href;
118
- insertions.push({
119
- pos: link.end,
120
- length: href.length
121
- });
122
- } else {
123
- const normalizedLabel = normalizeUrlForComparison(trimmedLabel);
124
- let comparableHref = href;
125
- if (href.startsWith("mailto:")) comparableHref = href.slice(7);
126
- if (normalizedLabel !== normalizeUrlForComparison(comparableHref)) {
127
- const addition = ` (${href})`;
128
- out += addition;
129
- insertions.push({
130
- pos: link.end,
131
- length: addition.length
132
- });
133
- }
134
- }
135
- cursor = link.end;
136
- }
137
- out += text.slice(cursor);
138
- const adjusted = applyInsertionsToStyles(ir.styles.map((span) => {
139
- const mapped = mapStyle(span.style);
140
- if (!mapped) return null;
141
- return {
142
- start: span.start,
143
- end: span.end,
144
- style: mapped
145
- };
146
- }).filter((span) => span !== null), insertions);
147
- const trimmedText = out.trimEnd();
148
- const trimmedLength = trimmedText.length;
149
- return {
150
- text: trimmedText,
151
- styles: mergeStyles(clampStyles(adjusted.map((span) => ({
152
- start: span.start,
153
- length: span.end - span.start,
154
- style: span.style
155
- })), trimmedLength))
156
- };
157
- }
158
- function markdownToSignalText(markdown, options = {}) {
159
- return renderSignalText(markdownToIR(markdown ?? "", {
160
- linkify: true,
161
- enableSpoilers: true,
162
- headingStyle: "bold",
163
- blockquotePrefix: "> ",
164
- tableMode: options.tableMode
165
- }));
166
- }
167
- function sliceSignalStyles(styles, start, end) {
168
- const sliced = [];
169
- for (const style of styles) {
170
- const styleEnd = style.start + style.length;
171
- const sliceStart = Math.max(style.start, start);
172
- const sliceEnd = Math.min(styleEnd, end);
173
- if (sliceEnd > sliceStart) sliced.push({
174
- start: sliceStart - start,
175
- length: sliceEnd - sliceStart,
176
- style: style.style
177
- });
178
- }
179
- return sliced;
180
- }
181
- /**
182
- * Split Signal formatted text into chunks under the limit while preserving styles.
183
- *
184
- * This implementation deterministically tracks cursor position without using indexOf,
185
- * which is fragile when chunks are trimmed or when duplicate substrings exist.
186
- * Styles spanning chunk boundaries are split into separate ranges for each chunk.
187
- */
188
- function splitSignalFormattedText(formatted, limit) {
189
- const { text, styles } = formatted;
190
- if (text.length <= limit) return [formatted];
191
- const results = [];
192
- let remaining = text;
193
- let offset = 0;
194
- while (remaining.length > 0) {
195
- if (remaining.length <= limit) {
196
- const trimmed = remaining.trimEnd();
197
- if (trimmed.length > 0) results.push({
198
- text: trimmed,
199
- styles: mergeStyles(sliceSignalStyles(styles, offset, offset + trimmed.length))
200
- });
201
- break;
202
- }
203
- let breakIdx = findBreakIndex(remaining.slice(0, limit));
204
- if (breakIdx <= 0) breakIdx = limit;
205
- const chunk = remaining.slice(0, breakIdx).trimEnd();
206
- if (chunk.length > 0) results.push({
207
- text: chunk,
208
- styles: mergeStyles(sliceSignalStyles(styles, offset, offset + chunk.length))
209
- });
210
- const brokeOnWhitespace = breakIdx < remaining.length && /\s/.test(remaining[breakIdx]);
211
- const nextStart = Math.min(remaining.length, breakIdx + (brokeOnWhitespace ? 1 : 0));
212
- remaining = remaining.slice(nextStart).trimStart();
213
- offset = text.length - remaining.length;
214
- }
215
- return results;
216
- }
217
- /**
218
- * Find the best break index within a text window.
219
- * Prefers newlines over whitespace, avoids breaking inside parentheses.
220
- */
221
- function findBreakIndex(window) {
222
- let lastNewline = -1;
223
- let lastWhitespace = -1;
224
- let parenDepth = 0;
225
- for (let i = 0; i < window.length; i++) {
226
- const char = window[i];
227
- if (char === "(") {
228
- parenDepth++;
229
- continue;
230
- }
231
- if (char === ")" && parenDepth > 0) {
232
- parenDepth--;
233
- continue;
234
- }
235
- if (parenDepth === 0) {
236
- if (char === "\n") lastNewline = i;
237
- else if (/\s/.test(char)) lastWhitespace = i;
238
- }
239
- }
240
- return lastNewline > 0 ? lastNewline : lastWhitespace;
241
- }
242
- function markdownToSignalTextChunks(markdown, limit, options = {}) {
243
- const chunks = chunkMarkdownIR(markdownToIR(markdown ?? "", {
244
- linkify: true,
245
- enableSpoilers: true,
246
- headingStyle: "bold",
247
- blockquotePrefix: "> ",
248
- tableMode: options.tableMode
249
- }), limit);
250
- const results = [];
251
- for (const chunk of chunks) {
252
- const rendered = renderSignalText(chunk);
253
- if (rendered.text.length > limit) results.push(...splitSignalFormattedText(rendered, limit));
254
- else results.push(rendered);
255
- }
256
- return results;
257
- }
258
-
259
- //#endregion
260
- //#region src/signal/client.ts
261
- const DEFAULT_TIMEOUT_MS = 1e4;
262
- function normalizeBaseUrl(url) {
263
- const trimmed = url.trim();
264
- if (!trimmed) throw new Error("Signal base URL is required");
265
- if (/^https?:\/\//i.test(trimmed)) return trimmed.replace(/\/+$/, "");
266
- return `http://${trimmed}`.replace(/\/+$/, "");
267
- }
268
- function getRequiredFetch() {
269
- const fetchImpl = resolveFetch();
270
- if (!fetchImpl) throw new Error("fetch is not available");
271
- return fetchImpl;
272
- }
273
- function parseSignalRpcResponse(text, status) {
274
- let parsed;
275
- try {
276
- parsed = JSON.parse(text);
277
- } catch (err) {
278
- throw new Error(`Signal RPC returned malformed JSON (status ${status})`, { cause: err });
279
- }
280
- if (!parsed || typeof parsed !== "object") throw new Error(`Signal RPC returned invalid response envelope (status ${status})`);
281
- const rpc = parsed;
282
- const hasResult = Object.hasOwn(rpc, "result");
283
- if (!rpc.error && !hasResult) throw new Error(`Signal RPC returned invalid response envelope (status ${status})`);
284
- return rpc;
285
- }
286
- async function signalRpcRequest(method, params, opts) {
287
- const baseUrl = normalizeBaseUrl(opts.baseUrl);
288
- const id = generateSecureUuid();
289
- const body = JSON.stringify({
290
- jsonrpc: "2.0",
291
- method,
292
- params,
293
- id
294
- });
295
- const res = await fetchWithTimeout(`${baseUrl}/api/v1/rpc`, {
296
- method: "POST",
297
- headers: { "Content-Type": "application/json" },
298
- body
299
- }, opts.timeoutMs ?? DEFAULT_TIMEOUT_MS, getRequiredFetch());
300
- if (res.status === 201) return;
301
- const text = await res.text();
302
- if (!text) throw new Error(`Signal RPC empty response (status ${res.status})`);
303
- const parsed = parseSignalRpcResponse(text, res.status);
304
- if (parsed.error) {
305
- const code = parsed.error.code ?? "unknown";
306
- const msg = parsed.error.message ?? "Signal RPC error";
307
- throw new Error(`Signal RPC ${code}: ${msg}`);
308
- }
309
- return parsed.result;
310
- }
311
- async function signalCheck(baseUrl, timeoutMs = DEFAULT_TIMEOUT_MS) {
312
- const normalized = normalizeBaseUrl(baseUrl);
313
- try {
314
- const res = await fetchWithTimeout(`${normalized}/api/v1/check`, { method: "GET" }, timeoutMs, getRequiredFetch());
315
- if (!res.ok) return {
316
- ok: false,
317
- status: res.status,
318
- error: `HTTP ${res.status}`
319
- };
320
- return {
321
- ok: true,
322
- status: res.status,
323
- error: null
324
- };
325
- } catch (err) {
326
- return {
327
- ok: false,
328
- status: null,
329
- error: err instanceof Error ? err.message : String(err)
330
- };
331
- }
332
- }
333
- async function streamSignalEvents(params) {
334
- const baseUrl = normalizeBaseUrl(params.baseUrl);
335
- const url = new URL(`${baseUrl}/api/v1/events`);
336
- if (params.account) url.searchParams.set("account", params.account);
337
- const fetchImpl = resolveFetch();
338
- if (!fetchImpl) throw new Error("fetch is not available");
339
- const res = await fetchImpl(url, {
340
- method: "GET",
341
- headers: { Accept: "text/event-stream" },
342
- signal: params.abortSignal
343
- });
344
- if (!res.ok || !res.body) throw new Error(`Signal SSE failed (${res.status} ${res.statusText || "error"})`);
345
- const reader = res.body.getReader();
346
- const decoder = new TextDecoder();
347
- let buffer = "";
348
- let currentEvent = {};
349
- const flushEvent = () => {
350
- if (!currentEvent.data && !currentEvent.event && !currentEvent.id) return;
351
- params.onEvent({
352
- event: currentEvent.event,
353
- data: currentEvent.data,
354
- id: currentEvent.id
355
- });
356
- currentEvent = {};
357
- };
358
- while (true) {
359
- const { value, done } = await reader.read();
360
- if (done) break;
361
- buffer += decoder.decode(value, { stream: true });
362
- let lineEnd = buffer.indexOf("\n");
363
- while (lineEnd !== -1) {
364
- let line = buffer.slice(0, lineEnd);
365
- buffer = buffer.slice(lineEnd + 1);
366
- if (line.endsWith("\r")) line = line.slice(0, -1);
367
- if (line === "") {
368
- flushEvent();
369
- lineEnd = buffer.indexOf("\n");
370
- continue;
371
- }
372
- if (line.startsWith(":")) {
373
- lineEnd = buffer.indexOf("\n");
374
- continue;
375
- }
376
- const [rawField, ...rest] = line.split(":");
377
- const field = rawField.trim();
378
- const rawValue = rest.join(":");
379
- const value = rawValue.startsWith(" ") ? rawValue.slice(1) : rawValue;
380
- if (field === "event") currentEvent.event = value;
381
- else if (field === "data") currentEvent.data = currentEvent.data ? `${currentEvent.data}\n${value}` : value;
382
- else if (field === "id") currentEvent.id = value;
383
- lineEnd = buffer.indexOf("\n");
384
- }
385
- }
386
- flushEvent();
387
- }
388
-
389
- //#endregion
390
- //#region src/signal/rpc-context.ts
391
- function resolveSignalRpcContext(opts, accountInfo) {
392
- const hasBaseUrl = Boolean(opts.baseUrl?.trim());
393
- const hasAccount = Boolean(opts.account?.trim());
394
- const resolvedAccount = accountInfo || (!hasBaseUrl || !hasAccount ? resolveSignalAccount({
395
- cfg: loadConfig(),
396
- accountId: opts.accountId
397
- }) : void 0);
398
- const baseUrl = opts.baseUrl?.trim() || resolvedAccount?.baseUrl;
399
- if (!baseUrl) throw new Error("Signal base URL is required");
400
- return {
401
- baseUrl,
402
- account: opts.account?.trim() || resolvedAccount?.config.account?.trim()
403
- };
404
- }
405
-
406
- //#endregion
407
- //#region src/signal/send.ts
408
- function parseTarget(raw) {
409
- let value = raw.trim();
410
- if (!value) throw new Error("Signal recipient is required");
411
- if (value.toLowerCase().startsWith("signal:")) value = value.slice(7).trim();
412
- const normalized = value.toLowerCase();
413
- if (normalized.startsWith("group:")) return {
414
- type: "group",
415
- groupId: value.slice(6).trim()
416
- };
417
- if (normalized.startsWith("username:")) return {
418
- type: "username",
419
- username: value.slice(9).trim()
420
- };
421
- if (normalized.startsWith("u:")) return {
422
- type: "username",
423
- username: value.trim()
424
- };
425
- return {
426
- type: "recipient",
427
- recipient: value
428
- };
429
- }
430
- function buildTargetParams(target, allow) {
431
- if (target.type === "recipient") {
432
- if (!allow.recipient) return null;
433
- return { recipient: [target.recipient] };
434
- }
435
- if (target.type === "group") {
436
- if (!allow.group) return null;
437
- return { groupId: target.groupId };
438
- }
439
- if (target.type === "username") {
440
- if (!allow.username) return null;
441
- return { username: [target.username] };
442
- }
443
- return null;
444
- }
445
- async function sendMessageSignal(to, text, opts = {}) {
446
- const cfg = opts.cfg ?? loadConfig();
447
- const accountInfo = resolveSignalAccount({
448
- cfg,
449
- accountId: opts.accountId
450
- });
451
- const { baseUrl, account } = resolveSignalRpcContext(opts, accountInfo);
452
- const target = parseTarget(to);
453
- let message = text ?? "";
454
- let messageFromPlaceholder = false;
455
- let textStyles = [];
456
- const textMode = opts.textMode ?? "markdown";
457
- const maxBytes = (() => {
458
- if (typeof opts.maxBytes === "number") return opts.maxBytes;
459
- if (typeof accountInfo.config.mediaMaxMb === "number") return accountInfo.config.mediaMaxMb * 1024 * 1024;
460
- if (typeof cfg.agents?.defaults?.mediaMaxMb === "number") return cfg.agents.defaults.mediaMaxMb * 1024 * 1024;
461
- return 8 * 1024 * 1024;
462
- })();
463
- let attachments;
464
- if (opts.mediaUrl?.trim()) {
465
- const resolved = await resolveOutboundAttachmentFromUrl(opts.mediaUrl.trim(), maxBytes, { localRoots: opts.mediaLocalRoots });
466
- attachments = [resolved.path];
467
- const kind = kindFromMime(resolved.contentType ?? void 0);
468
- if (!message && kind) {
469
- message = kind === "image" ? "<media:image>" : `<media:${kind}>`;
470
- messageFromPlaceholder = true;
471
- }
472
- }
473
- if (message.trim() && !messageFromPlaceholder) if (textMode === "plain") textStyles = opts.textStyles ?? [];
474
- else {
475
- const tableMode = resolveMarkdownTableMode({
476
- cfg,
477
- channel: "signal",
478
- accountId: accountInfo.accountId
479
- });
480
- const formatted = markdownToSignalText(message, { tableMode });
481
- message = formatted.text;
482
- textStyles = formatted.styles;
483
- }
484
- if (!message.trim() && (!attachments || attachments.length === 0)) throw new Error("Signal send requires text or media");
485
- const params = { message };
486
- if (textStyles.length > 0) params["text-style"] = textStyles.map((style) => `${style.start}:${style.length}:${style.style}`);
487
- if (account) params.account = account;
488
- if (attachments && attachments.length > 0) params.attachments = attachments;
489
- const targetParams = buildTargetParams(target, {
490
- recipient: true,
491
- group: true,
492
- username: true
493
- });
494
- if (!targetParams) throw new Error("Signal recipient is required");
495
- Object.assign(params, targetParams);
496
- const timestamp = (await signalRpcRequest("send", params, {
497
- baseUrl,
498
- timeoutMs: opts.timeoutMs
499
- }))?.timestamp;
500
- return {
501
- messageId: timestamp ? String(timestamp) : "unknown",
502
- timestamp
503
- };
504
- }
505
- async function sendTypingSignal(to, opts = {}) {
506
- const { baseUrl, account } = resolveSignalRpcContext(opts);
507
- const targetParams = buildTargetParams(parseTarget(to), {
508
- recipient: true,
509
- group: true
510
- });
511
- if (!targetParams) return false;
512
- const params = { ...targetParams };
513
- if (account) params.account = account;
514
- if (opts.stop) params.stop = true;
515
- await signalRpcRequest("sendTyping", params, {
516
- baseUrl,
517
- timeoutMs: opts.timeoutMs
518
- });
519
- return true;
520
- }
521
- async function sendReadReceiptSignal(to, targetTimestamp, opts = {}) {
522
- if (!Number.isFinite(targetTimestamp) || targetTimestamp <= 0) return false;
523
- const { baseUrl, account } = resolveSignalRpcContext(opts);
524
- const targetParams = buildTargetParams(parseTarget(to), { recipient: true });
525
- if (!targetParams) return false;
526
- const params = {
527
- ...targetParams,
528
- targetTimestamp,
529
- type: opts.type ?? "read"
530
- };
531
- if (account) params.account = account;
532
- await signalRpcRequest("sendReceipt", params, {
533
- baseUrl,
534
- timeoutMs: opts.timeoutMs
535
- });
536
- return true;
537
- }
538
-
539
- //#endregion
540
- export { signalCheck as a, markdownToSignalTextChunks as c, resolveSignalRpcContext as i, sendReadReceiptSignal as n, signalRpcRequest as o, sendTypingSignal as r, streamSignalEvents as s, sendMessageSignal as t };