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,503 +0,0 @@
1
- import { n as loadConfig } from "./config-B2B64aX0.js";
2
- import { E as resolveUserPath, S as normalizeE164 } from "./logger-DDdrdbDu.js";
3
- import { m as kindFromMime } from "./image-ops-BP8ix1GC.js";
4
- import { r as resolveIMessageAccount } from "./accounts-ucj0odJq.js";
5
- import { i as resolveMarkdownTableMode } from "./ir-DWEc6zOp.js";
6
- import { t as convertMarkdownTables } from "./tables-GIj79us5.js";
7
- import { t as resolveOutboundAttachmentFromUrl } from "./outbound-attachment-DLsaxDsc.js";
8
- import { spawn } from "node:child_process";
9
- import { createInterface } from "node:readline";
10
-
11
- //#region src/plugin-sdk/allow-from.ts
12
- function formatAllowFromLowercase(params) {
13
- return params.allowFrom.map((entry) => String(entry).trim()).filter(Boolean).map((entry) => params.stripPrefixRe ? entry.replace(params.stripPrefixRe, "") : entry).map((entry) => entry.toLowerCase());
14
- }
15
- function isNormalizedSenderAllowed(params) {
16
- const normalizedAllow = formatAllowFromLowercase({
17
- allowFrom: params.allowFrom,
18
- stripPrefixRe: params.stripPrefixRe
19
- });
20
- if (normalizedAllow.length === 0) return false;
21
- if (normalizedAllow.includes("*")) return true;
22
- const sender = String(params.senderId).trim().toLowerCase();
23
- return normalizedAllow.includes(sender);
24
- }
25
- function isAllowedParsedChatSender(params) {
26
- const allowFrom = params.allowFrom.map((entry) => String(entry).trim());
27
- if (allowFrom.length === 0) return false;
28
- if (allowFrom.includes("*")) return true;
29
- const senderNormalized = params.normalizeSender(params.sender);
30
- const chatId = params.chatId ?? void 0;
31
- const chatGuid = params.chatGuid?.trim();
32
- const chatIdentifier = params.chatIdentifier?.trim();
33
- for (const entry of allowFrom) {
34
- if (!entry) continue;
35
- const parsed = params.parseAllowTarget(entry);
36
- if (parsed.kind === "chat_id" && chatId !== void 0) {
37
- if (parsed.chatId === chatId) return true;
38
- } else if (parsed.kind === "chat_guid" && chatGuid) {
39
- if (parsed.chatGuid === chatGuid) return true;
40
- } else if (parsed.kind === "chat_identifier" && chatIdentifier) {
41
- if (parsed.chatIdentifier === chatIdentifier) return true;
42
- } else if (parsed.kind === "handle" && senderNormalized) {
43
- if (parsed.handle === senderNormalized) return true;
44
- }
45
- }
46
- return false;
47
- }
48
-
49
- //#endregion
50
- //#region src/imessage/target-parsing-helpers.ts
51
- function stripPrefix(value, prefix) {
52
- return value.slice(prefix.length).trim();
53
- }
54
- function resolveServicePrefixedTarget(params) {
55
- for (const { prefix, service } of params.servicePrefixes) {
56
- if (!params.lower.startsWith(prefix)) continue;
57
- const remainder = stripPrefix(params.trimmed, prefix);
58
- if (!remainder) throw new Error(`${prefix} target is required`);
59
- const remainderLower = remainder.toLowerCase();
60
- if (params.isChatTarget(remainderLower)) return params.parseTarget(remainder);
61
- return {
62
- kind: "handle",
63
- to: remainder,
64
- service
65
- };
66
- }
67
- return null;
68
- }
69
- function parseChatTargetPrefixesOrThrow(params) {
70
- for (const prefix of params.chatIdPrefixes) if (params.lower.startsWith(prefix)) {
71
- const value = stripPrefix(params.trimmed, prefix);
72
- const chatId = Number.parseInt(value, 10);
73
- if (!Number.isFinite(chatId)) throw new Error(`Invalid chat_id: ${value}`);
74
- return {
75
- kind: "chat_id",
76
- chatId
77
- };
78
- }
79
- for (const prefix of params.chatGuidPrefixes) if (params.lower.startsWith(prefix)) {
80
- const value = stripPrefix(params.trimmed, prefix);
81
- if (!value) throw new Error("chat_guid is required");
82
- return {
83
- kind: "chat_guid",
84
- chatGuid: value
85
- };
86
- }
87
- for (const prefix of params.chatIdentifierPrefixes) if (params.lower.startsWith(prefix)) {
88
- const value = stripPrefix(params.trimmed, prefix);
89
- if (!value) throw new Error("chat_identifier is required");
90
- return {
91
- kind: "chat_identifier",
92
- chatIdentifier: value
93
- };
94
- }
95
- return null;
96
- }
97
- function resolveServicePrefixedAllowTarget(params) {
98
- for (const { prefix } of params.servicePrefixes) {
99
- if (!params.lower.startsWith(prefix)) continue;
100
- const remainder = stripPrefix(params.trimmed, prefix);
101
- if (!remainder) return {
102
- kind: "handle",
103
- handle: ""
104
- };
105
- return params.parseAllowTarget(remainder);
106
- }
107
- return null;
108
- }
109
- function parseChatAllowTargetPrefixes(params) {
110
- for (const prefix of params.chatIdPrefixes) if (params.lower.startsWith(prefix)) {
111
- const value = stripPrefix(params.trimmed, prefix);
112
- const chatId = Number.parseInt(value, 10);
113
- if (Number.isFinite(chatId)) return {
114
- kind: "chat_id",
115
- chatId
116
- };
117
- }
118
- for (const prefix of params.chatGuidPrefixes) if (params.lower.startsWith(prefix)) {
119
- const value = stripPrefix(params.trimmed, prefix);
120
- if (value) return {
121
- kind: "chat_guid",
122
- chatGuid: value
123
- };
124
- }
125
- for (const prefix of params.chatIdentifierPrefixes) if (params.lower.startsWith(prefix)) {
126
- const value = stripPrefix(params.trimmed, prefix);
127
- if (value) return {
128
- kind: "chat_identifier",
129
- chatIdentifier: value
130
- };
131
- }
132
- return null;
133
- }
134
-
135
- //#endregion
136
- //#region src/imessage/targets.ts
137
- const CHAT_ID_PREFIXES = [
138
- "chat_id:",
139
- "chatid:",
140
- "chat:"
141
- ];
142
- const CHAT_GUID_PREFIXES = [
143
- "chat_guid:",
144
- "chatguid:",
145
- "guid:"
146
- ];
147
- const CHAT_IDENTIFIER_PREFIXES = [
148
- "chat_identifier:",
149
- "chatidentifier:",
150
- "chatident:"
151
- ];
152
- const SERVICE_PREFIXES = [
153
- {
154
- prefix: "imessage:",
155
- service: "imessage"
156
- },
157
- {
158
- prefix: "sms:",
159
- service: "sms"
160
- },
161
- {
162
- prefix: "auto:",
163
- service: "auto"
164
- }
165
- ];
166
- function normalizeIMessageHandle(raw) {
167
- const trimmed = raw.trim();
168
- if (!trimmed) return "";
169
- const lowered = trimmed.toLowerCase();
170
- if (lowered.startsWith("imessage:")) return normalizeIMessageHandle(trimmed.slice(9));
171
- if (lowered.startsWith("sms:")) return normalizeIMessageHandle(trimmed.slice(4));
172
- if (lowered.startsWith("auto:")) return normalizeIMessageHandle(trimmed.slice(5));
173
- for (const prefix of CHAT_ID_PREFIXES) if (lowered.startsWith(prefix)) return `chat_id:${trimmed.slice(prefix.length).trim()}`;
174
- for (const prefix of CHAT_GUID_PREFIXES) if (lowered.startsWith(prefix)) return `chat_guid:${trimmed.slice(prefix.length).trim()}`;
175
- for (const prefix of CHAT_IDENTIFIER_PREFIXES) if (lowered.startsWith(prefix)) return `chat_identifier:${trimmed.slice(prefix.length).trim()}`;
176
- if (trimmed.includes("@")) return trimmed.toLowerCase();
177
- const normalized = normalizeE164(trimmed);
178
- if (normalized) return normalized;
179
- return trimmed.replace(/\s+/g, "");
180
- }
181
- function parseIMessageTarget(raw) {
182
- const trimmed = raw.trim();
183
- if (!trimmed) throw new Error("iMessage target is required");
184
- const lower = trimmed.toLowerCase();
185
- const servicePrefixed = resolveServicePrefixedTarget({
186
- trimmed,
187
- lower,
188
- servicePrefixes: SERVICE_PREFIXES,
189
- isChatTarget: (remainderLower) => CHAT_ID_PREFIXES.some((p) => remainderLower.startsWith(p)) || CHAT_GUID_PREFIXES.some((p) => remainderLower.startsWith(p)) || CHAT_IDENTIFIER_PREFIXES.some((p) => remainderLower.startsWith(p)),
190
- parseTarget: parseIMessageTarget
191
- });
192
- if (servicePrefixed) return servicePrefixed;
193
- const chatTarget = parseChatTargetPrefixesOrThrow({
194
- trimmed,
195
- lower,
196
- chatIdPrefixes: CHAT_ID_PREFIXES,
197
- chatGuidPrefixes: CHAT_GUID_PREFIXES,
198
- chatIdentifierPrefixes: CHAT_IDENTIFIER_PREFIXES
199
- });
200
- if (chatTarget) return chatTarget;
201
- return {
202
- kind: "handle",
203
- to: trimmed,
204
- service: "auto"
205
- };
206
- }
207
- function parseIMessageAllowTarget(raw) {
208
- const trimmed = raw.trim();
209
- if (!trimmed) return {
210
- kind: "handle",
211
- handle: ""
212
- };
213
- const lower = trimmed.toLowerCase();
214
- const servicePrefixed = resolveServicePrefixedAllowTarget({
215
- trimmed,
216
- lower,
217
- servicePrefixes: SERVICE_PREFIXES,
218
- parseAllowTarget: parseIMessageAllowTarget
219
- });
220
- if (servicePrefixed) return servicePrefixed;
221
- const chatTarget = parseChatAllowTargetPrefixes({
222
- trimmed,
223
- lower,
224
- chatIdPrefixes: CHAT_ID_PREFIXES,
225
- chatGuidPrefixes: CHAT_GUID_PREFIXES,
226
- chatIdentifierPrefixes: CHAT_IDENTIFIER_PREFIXES
227
- });
228
- if (chatTarget) return chatTarget;
229
- return {
230
- kind: "handle",
231
- handle: normalizeIMessageHandle(trimmed)
232
- };
233
- }
234
- function isAllowedIMessageSender(params) {
235
- return isAllowedParsedChatSender({
236
- allowFrom: params.allowFrom,
237
- sender: params.sender,
238
- chatId: params.chatId,
239
- chatGuid: params.chatGuid,
240
- chatIdentifier: params.chatIdentifier,
241
- normalizeSender: normalizeIMessageHandle,
242
- parseAllowTarget: parseIMessageAllowTarget
243
- });
244
- }
245
- function formatIMessageChatTarget(chatId) {
246
- if (!chatId || !Number.isFinite(chatId)) return "";
247
- return `chat_id:${chatId}`;
248
- }
249
-
250
- //#endregion
251
- //#region src/imessage/constants.ts
252
- /** Default timeout for iMessage probe/RPC operations (10 seconds). */
253
- const DEFAULT_IMESSAGE_PROBE_TIMEOUT_MS = 1e4;
254
-
255
- //#endregion
256
- //#region src/imessage/client.ts
257
- function isTestEnv() {
258
- const vitest = process.env.VITEST?.trim().toLowerCase();
259
- return Boolean(vitest);
260
- }
261
- var IMessageRpcClient = class {
262
- constructor(opts = {}) {
263
- this.pending = /* @__PURE__ */ new Map();
264
- this.closedResolve = null;
265
- this.child = null;
266
- this.reader = null;
267
- this.nextId = 1;
268
- this.cliPath = opts.cliPath?.trim() || "imsg";
269
- this.dbPath = opts.dbPath?.trim() ? resolveUserPath(opts.dbPath) : void 0;
270
- this.runtime = opts.runtime;
271
- this.onNotification = opts.onNotification;
272
- this.closed = new Promise((resolve) => {
273
- this.closedResolve = resolve;
274
- });
275
- }
276
- async start() {
277
- if (this.child) return;
278
- if (isTestEnv()) throw new Error("Refusing to start imsg rpc in test environment; mock iMessage RPC client");
279
- const args = ["rpc"];
280
- if (this.dbPath) args.push("--db", this.dbPath);
281
- const child = spawn(this.cliPath, args, { stdio: [
282
- "pipe",
283
- "pipe",
284
- "pipe"
285
- ] });
286
- this.child = child;
287
- this.reader = createInterface({ input: child.stdout });
288
- this.reader.on("line", (line) => {
289
- const trimmed = line.trim();
290
- if (!trimmed) return;
291
- this.handleLine(trimmed);
292
- });
293
- child.stderr?.on("data", (chunk) => {
294
- const lines = chunk.toString().split(/\r?\n/);
295
- for (const line of lines) {
296
- if (!line.trim()) continue;
297
- this.runtime?.error?.(`imsg rpc: ${line.trim()}`);
298
- }
299
- });
300
- child.on("error", (err) => {
301
- this.failAll(err instanceof Error ? err : new Error(String(err)));
302
- this.closedResolve?.();
303
- });
304
- child.on("close", (code, signal) => {
305
- if (code !== 0 && code !== null) {
306
- const reason = signal ? `signal ${signal}` : `code ${code}`;
307
- this.failAll(/* @__PURE__ */ new Error(`imsg rpc exited (${reason})`));
308
- } else this.failAll(/* @__PURE__ */ new Error("imsg rpc closed"));
309
- this.closedResolve?.();
310
- });
311
- }
312
- async stop() {
313
- if (!this.child) return;
314
- this.reader?.close();
315
- this.reader = null;
316
- this.child.stdin?.end();
317
- const child = this.child;
318
- this.child = null;
319
- await Promise.race([this.closed, new Promise((resolve) => {
320
- setTimeout(() => {
321
- if (!child.killed) child.kill("SIGTERM");
322
- resolve();
323
- }, 500);
324
- })]);
325
- }
326
- async waitForClose() {
327
- await this.closed;
328
- }
329
- async request(method, params, opts) {
330
- if (!this.child || !this.child.stdin) throw new Error("imsg rpc not running");
331
- const id = this.nextId++;
332
- const payload = {
333
- jsonrpc: "2.0",
334
- id,
335
- method,
336
- params: params ?? {}
337
- };
338
- const line = `${JSON.stringify(payload)}\n`;
339
- const timeoutMs = opts?.timeoutMs ?? DEFAULT_IMESSAGE_PROBE_TIMEOUT_MS;
340
- const response = new Promise((resolve, reject) => {
341
- const key = String(id);
342
- const timer = timeoutMs > 0 ? setTimeout(() => {
343
- this.pending.delete(key);
344
- reject(/* @__PURE__ */ new Error(`imsg rpc timeout (${method})`));
345
- }, timeoutMs) : void 0;
346
- this.pending.set(key, {
347
- resolve: (value) => resolve(value),
348
- reject,
349
- timer
350
- });
351
- });
352
- this.child.stdin.write(line);
353
- return await response;
354
- }
355
- handleLine(line) {
356
- let parsed;
357
- try {
358
- parsed = JSON.parse(line);
359
- } catch (err) {
360
- const detail = err instanceof Error ? err.message : String(err);
361
- this.runtime?.error?.(`imsg rpc: failed to parse ${line}: ${detail}`);
362
- return;
363
- }
364
- if (parsed.id !== void 0 && parsed.id !== null) {
365
- const key = String(parsed.id);
366
- const pending = this.pending.get(key);
367
- if (!pending) return;
368
- if (pending.timer) clearTimeout(pending.timer);
369
- this.pending.delete(key);
370
- if (parsed.error) {
371
- const baseMessage = parsed.error.message ?? "imsg rpc error";
372
- const details = parsed.error.data;
373
- const code = parsed.error.code;
374
- const suffixes = [];
375
- if (typeof code === "number") suffixes.push(`code=${code}`);
376
- if (details !== void 0) {
377
- const detailText = typeof details === "string" ? details : JSON.stringify(details, null, 2);
378
- if (detailText) suffixes.push(detailText);
379
- }
380
- const msg = suffixes.length > 0 ? `${baseMessage}: ${suffixes.join(" ")}` : baseMessage;
381
- pending.reject(new Error(msg));
382
- return;
383
- }
384
- pending.resolve(parsed.result);
385
- return;
386
- }
387
- if (parsed.method) this.onNotification?.({
388
- method: parsed.method,
389
- params: parsed.params
390
- });
391
- }
392
- failAll(err) {
393
- for (const [key, pending] of this.pending.entries()) {
394
- if (pending.timer) clearTimeout(pending.timer);
395
- pending.reject(err);
396
- this.pending.delete(key);
397
- }
398
- }
399
- };
400
- async function createIMessageRpcClient(opts = {}) {
401
- const client = new IMessageRpcClient(opts);
402
- await client.start();
403
- return client;
404
- }
405
-
406
- //#endregion
407
- //#region src/imessage/send.ts
408
- const LEADING_REPLY_TAG_RE = /^\s*\[\[\s*reply_to\s*:\s*([^\]\n]+)\s*\]\]\s*/i;
409
- const MAX_REPLY_TO_ID_LENGTH = 256;
410
- function stripUnsafeReplyTagChars(value) {
411
- let next = "";
412
- for (const ch of value) {
413
- const code = ch.charCodeAt(0);
414
- if (code >= 0 && code <= 31 || code === 127 || ch === "[" || ch === "]") continue;
415
- next += ch;
416
- }
417
- return next;
418
- }
419
- function sanitizeReplyToId(rawReplyToId) {
420
- const trimmed = rawReplyToId?.trim();
421
- if (!trimmed) return;
422
- const sanitized = stripUnsafeReplyTagChars(trimmed).trim();
423
- if (!sanitized) return;
424
- if (sanitized.length > MAX_REPLY_TO_ID_LENGTH) return sanitized.slice(0, MAX_REPLY_TO_ID_LENGTH);
425
- return sanitized;
426
- }
427
- function prependReplyTagIfNeeded(message, replyToId) {
428
- const resolvedReplyToId = sanitizeReplyToId(replyToId);
429
- if (!resolvedReplyToId) return message;
430
- const replyTag = `[[reply_to:${resolvedReplyToId}]]`;
431
- const existingLeadingTag = message.match(LEADING_REPLY_TAG_RE);
432
- if (existingLeadingTag) {
433
- const remainder = message.slice(existingLeadingTag[0].length).trimStart();
434
- return remainder ? `${replyTag} ${remainder}` : replyTag;
435
- }
436
- const trimmedMessage = message.trimStart();
437
- return trimmedMessage ? `${replyTag} ${trimmedMessage}` : replyTag;
438
- }
439
- function resolveMessageId(result) {
440
- if (!result) return null;
441
- const raw = typeof result.messageId === "string" && result.messageId.trim() || typeof result.message_id === "string" && result.message_id.trim() || typeof result.id === "string" && result.id.trim() || typeof result.guid === "string" && result.guid.trim() || (typeof result.message_id === "number" ? String(result.message_id) : null) || (typeof result.id === "number" ? String(result.id) : null);
442
- return raw ? String(raw).trim() : null;
443
- }
444
- async function sendMessageIMessage(to, text, opts = {}) {
445
- const cfg = opts.config ?? loadConfig();
446
- const account = opts.account ?? resolveIMessageAccount({
447
- cfg,
448
- accountId: opts.accountId
449
- });
450
- const cliPath = opts.cliPath?.trim() || account.config.cliPath?.trim() || "imsg";
451
- const dbPath = opts.dbPath?.trim() || account.config.dbPath?.trim();
452
- const target = parseIMessageTarget(opts.chatId ? formatIMessageChatTarget(opts.chatId) : to);
453
- const service = opts.service ?? (target.kind === "handle" ? target.service : void 0) ?? account.config.service;
454
- const region = opts.region?.trim() || account.config.region?.trim() || "US";
455
- const maxBytes = typeof opts.maxBytes === "number" ? opts.maxBytes : typeof account.config.mediaMaxMb === "number" ? account.config.mediaMaxMb * 1024 * 1024 : 16 * 1024 * 1024;
456
- let message = text ?? "";
457
- let filePath;
458
- if (opts.mediaUrl?.trim()) {
459
- const resolved = await (opts.resolveAttachmentImpl ?? resolveOutboundAttachmentFromUrl)(opts.mediaUrl.trim(), maxBytes, { localRoots: opts.mediaLocalRoots });
460
- filePath = resolved.path;
461
- if (!message.trim()) {
462
- const kind = kindFromMime(resolved.contentType ?? void 0);
463
- if (kind) message = kind === "image" ? "<media:image>" : `<media:${kind}>`;
464
- }
465
- }
466
- if (!message.trim() && !filePath) throw new Error("iMessage send requires text or media");
467
- if (message.trim()) {
468
- const tableMode = resolveMarkdownTableMode({
469
- cfg,
470
- channel: "imessage",
471
- accountId: account.accountId
472
- });
473
- message = convertMarkdownTables(message, tableMode);
474
- }
475
- message = prependReplyTagIfNeeded(message, opts.replyToId);
476
- const params = {
477
- text: message,
478
- service: service || "auto",
479
- region
480
- };
481
- if (filePath) params.file = filePath;
482
- if (target.kind === "chat_id") params.chat_id = target.chatId;
483
- else if (target.kind === "chat_guid") params.chat_guid = target.chatGuid;
484
- else if (target.kind === "chat_identifier") params.chat_identifier = target.chatIdentifier;
485
- else params.to = target.to;
486
- const client = opts.client ?? (opts.createClient ? await opts.createClient({
487
- cliPath,
488
- dbPath
489
- }) : await createIMessageRpcClient({
490
- cliPath,
491
- dbPath
492
- }));
493
- const shouldClose = !opts.client;
494
- try {
495
- const result = await client.request("send", params, { timeoutMs: opts.timeoutMs });
496
- return { messageId: resolveMessageId(result) ?? (result?.ok ? "ok" : "unknown") };
497
- } finally {
498
- if (shouldClose) await client.stop();
499
- }
500
- }
501
-
502
- //#endregion
503
- export { isAllowedIMessageSender as a, parseChatAllowTargetPrefixes as c, resolveServicePrefixedTarget as d, formatAllowFromLowercase as f, formatIMessageChatTarget as i, parseChatTargetPrefixesOrThrow as l, isNormalizedSenderAllowed as m, createIMessageRpcClient as n, normalizeIMessageHandle as o, isAllowedParsedChatSender as p, DEFAULT_IMESSAGE_PROBE_TIMEOUT_MS as r, parseIMessageTarget as s, sendMessageIMessage as t, resolveServicePrefixedAllowTarget as u };