squidclaw 3.0.24 → 3.0.26

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (329) hide show
  1. package/dist/{accounts-BH9Qo1sQ.js → accounts-BK8I0Svb.js} +7 -7
  2. package/dist/{accounts-Cuwg9Tan.js → accounts-DeqNOvBo.js} +1 -1
  3. package/dist/{accounts-B1RxFghM.js → accounts-KzgPbLHP.js} +1 -1
  4. package/dist/{acp-cli-Ch55Vzud.js → acp-cli-BwG98FYT.js} +8 -8
  5. package/dist/{agent-scope-nEVgVklg.js → agent-scope-Cq4vDGrK.js} +17 -17
  6. package/dist/{agents-B-ig6ydU.js → agents-DXKtU4Il.js} +14 -14
  7. package/dist/{agents.config-w_Z6Fb4-.js → agents.config-BM-2SLCh.js} +2 -2
  8. package/dist/{api-key-rotation-JPmjv-c0.js → api-key-rotation-6i41mEc9.js} +1 -1
  9. package/dist/{audio-preflight-lT9iRnYi.js → audio-preflight-Bzo_zN4j.js} +4 -4
  10. package/dist/{audio-preflight-CZ--cSZh.js → audio-preflight-C-JCwUKe.js} +34 -34
  11. package/dist/{audio-transcription-runner-YiR1ym3a.js → audio-transcription-runner-Cp_lkLCv.js} +1 -1
  12. package/dist/{audio-transcription-runner-D-uxpkbd.js → audio-transcription-runner-DvQksGUE.js} +23 -23
  13. package/dist/{audit-JLT1FqTt.js → audit-DLTgNDFw.js} +29 -29
  14. package/dist/{auth-BlP9BwaD.js → auth-CuObxnC4.js} +1 -1
  15. package/dist/{auth-choice-Czu7271G.js → auth-choice-BVQQneHM.js} +13 -13
  16. package/dist/{auth-choice-ORZHjbsv.js → auth-choice-CXepQc7c.js} +11 -11
  17. package/dist/{auth-choice.apply-helpers-CdoXMtxm.js → auth-choice.apply-helpers-p1y_DmDT.js} +1 -1
  18. package/dist/{auth-profiles-9T4j6jMy.js → auth-profiles-CX4YYu7Z.js} +16 -16
  19. package/dist/{auth-token-BFc70pes.js → auth-token-Dlk7MMsC.js} +1 -1
  20. package/dist/{banner-CwNmI5G-.js → banner-DMfuBV69.js} +2 -2
  21. package/dist/{bonjour-discovery-eqJcK09r.js → bonjour-discovery-BHz2I6_W.js} +1 -1
  22. package/dist/{browser-cli-DCDPC5sg.js → browser-cli-Dvwk4zAD.js} +12 -12
  23. package/dist/build-info.json +3 -3
  24. package/dist/bundled/session-memory/handler.js +127 -12
  25. package/dist/{call-D7jOWSFr.js → call-BlWEBz99.js} +10 -10
  26. package/dist/{channel-account-context-DJ3rHgVO.js → channel-account-context-CQ6rCiGI.js} +5 -5
  27. package/dist/{channel-activity-wuB3-cfR.js → channel-activity-BZKeZQH-.js} +1 -1
  28. package/dist/{channel-options-BS7BSU_5.js → channel-options-CQ-gER0J.js} +3 -3
  29. package/dist/{channel-selection-CFWQq1nS.js → channel-selection-BqwS1Rlq.js} +1 -1
  30. package/dist/{channel-web-C1qYz-HK.js → channel-web-LLzBxZrT.js} +17 -17
  31. package/dist/{channels-cli-CVNqp5q7.js → channels-cli-D4xUEYYC.js} +93 -93
  32. package/dist/{channels-status-issues-Erzzhl2e.js → channels-status-issues-Dz1_R7Ah.js} +1 -1
  33. package/dist/{chrome-CuBHInKC.js → chrome-CZQnp4VH.js} +8 -8
  34. package/dist/{chrome-DiktJpMU.js → chrome-CoRiYsNu.js} +4 -4
  35. package/dist/{clawbot-cli-C3bt-FEP.js → clawbot-cli-2Zlim_pH.js} +11 -11
  36. package/dist/cli/daemon-cli.js +1 -1
  37. package/dist/{cli-Jyqv2jm8.js → cli-CAID9zkL.js} +73 -73
  38. package/dist/{client-COy24r9W.js → client-G9E5HGM2.js} +2 -2
  39. package/dist/{command-registry-DCojicSG.js → command-registry-AHS8_9da.js} +11 -11
  40. package/dist/{command-secret-targets-CZjP-Bm5.js → command-secret-targets-DAu5nw-j.js} +4 -4
  41. package/dist/{commands-DDHiW-As.js → commands-CnX9I_l4.js} +1 -1
  42. package/dist/{commands-registry--ITOJ-cM.js → commands-registry-_r_JONI4.js} +3 -3
  43. package/dist/{completion-cli-DCTv7Ejv.js → completion-cli-BR1r9_h4.js} +13 -13
  44. package/dist/{config-cli-CSPSSP_R.js → config-cli-D0A8Awoo.js} +7 -7
  45. package/dist/{config-guard-CFauJm79.js → config-guard-BHy2f0hU.js} +3 -3
  46. package/dist/{config-validation-Bt3LfFJ0.js → config-validation-BkvDORAk.js} +3 -3
  47. package/dist/{configure-DAol2gT6.js → configure-XmOqwwy9.js} +17 -17
  48. package/dist/{control-ui-assets-d6VtDSeo.js → control-ui-assets-BYEy341x.js} +1 -1
  49. package/dist/{cron-cli-yS1ww1k2.js → cron-cli-QwZcnjJc.js} +11 -11
  50. package/dist/{daemon-cli-B-yZvTqZ.js → daemon-cli-kJfDhzr8.js} +15 -15
  51. package/dist/{daemon-install-CbPLNiIP.js → daemon-install-Chxlu9Kv.js} +4 -4
  52. package/dist/{daemon-install-helpers-CZDVO_MU.js → daemon-install-helpers-CJtiW2RE.js} +11 -11
  53. package/dist/{deliver-6zfT7daI.js → deliver-B4WWPQvt.js} +1 -1
  54. package/dist/{deliver-D-IQEJ52.js → deliver-CL2RW5UB.js} +7 -7
  55. package/dist/deliver-runtime-C08pF1_3.js +61 -0
  56. package/dist/{deliver-runtime-MBexxUuG.js → deliver-runtime-CeE1X9si.js} +3 -3
  57. package/dist/deps-send-discord.runtime-r80y9aXF.js +36 -0
  58. package/dist/deps-send-imessage.runtime-BmocBgPM.js +35 -0
  59. package/dist/deps-send-signal.runtime-ByJt6qz-.js +34 -0
  60. package/dist/deps-send-slack.runtime-C3UUEG9J.js +32 -0
  61. package/dist/{deps-send-telegram.runtime-Irv0ky5l.js → deps-send-telegram.runtime-BHaZAs2h.js} +16 -16
  62. package/dist/{deps-send-whatsapp.runtime-CrxkfP31.js → deps-send-whatsapp.runtime-COv_qoD2.js} +7 -7
  63. package/dist/deps-send-whatsapp.runtime-__ogpmJj.js +119 -0
  64. package/dist/{devices-cli-CPgutgUT.js → devices-cli-DlQGTogF.js} +8 -8
  65. package/dist/{diagnostic-B4w80e4D.js → diagnostic-CLEtu0MC.js} +1 -1
  66. package/dist/{diagnostics-m7hHHbuE.js → diagnostics--O6mo6KH.js} +5 -5
  67. package/dist/{directory-cli-DqObADBL.js → directory-cli-K9qIwxYa.js} +7 -7
  68. package/dist/{dns-cli-CKbwsWBv.js → dns-cli-qtX-WNMF.js} +5 -5
  69. package/dist/{dock-W3cGg46W.js → dock-DJJAj46v.js} +4 -4
  70. package/dist/{docs-cli-BpZtes_j.js → docs-cli--gGxz79Z.js} +4 -4
  71. package/dist/{doctor-completion--7PR_Vqz.js → doctor-completion-CZoEdMS-.js} +2 -2
  72. package/dist/{doctor-config-flow-BDF7TR6O.js → doctor-config-flow-C-h3yV4z.js} +15 -15
  73. package/dist/{enable--Q7yLTZm.js → enable-C8FNY18p.js} +1 -1
  74. package/dist/entry.js +2 -2
  75. package/dist/{exec-approvals-allowlist-B9bcJkGP.js → exec-approvals-allowlist-CtSREgYh.js} +1 -1
  76. package/dist/{exec-approvals-cli-homtziYt.js → exec-approvals-cli-BmM4RpVn.js} +16 -16
  77. package/dist/{exec-safe-bin-runtime-policy-DECo77U6.js → exec-safe-bin-runtime-policy-CfQeDABF.js} +2 -2
  78. package/dist/extensionAPI.js +6 -6
  79. package/dist/{fetch-lq0SDLLE.js → fetch-CtoC2wgs.js} +3 -3
  80. package/dist/{fetch-guard-CbtWqa1E.js → fetch-guard-Dvzi3MjK.js} +1 -1
  81. package/dist/{plugin-sdk/fs-safe-Dqmpk-Fr.js → fs-safe-DPYj7h8A.js} +6 -6
  82. package/dist/{gateway-cli-B3oqskb4.js → gateway-cli-BJHBChfI.js} +153 -153
  83. package/dist/{gateway-rpc-BBBN9ZJk.js → gateway-rpc-D0AmaBzR.js} +1 -1
  84. package/dist/{health-CjXrJkCb.js → health-XFKFZ7ZJ.js} +11 -11
  85. package/dist/{hooks-cli--aKmd8c9.js → hooks-cli-CXsZK8H9.js} +81 -81
  86. package/dist/{hooks-status-BlgSVDvN.js → hooks-status-DMFBAUq8.js} +1 -1
  87. package/dist/{image-VgwN31FZ.js → image-DKkuLtZ4.js} +1 -1
  88. package/dist/{image-BcYt63Jx.js → image-DSWTfuxv.js} +5 -5
  89. package/dist/{image-ops-LFsSCTyI.js → image-ops-B2uuLIGD.js} +10 -10
  90. package/dist/{image-runtime-CwMuTYvd.js → image-runtime-BMavqm9n.js} +3 -3
  91. package/dist/image-runtime-cza2NTiZ.js +55 -0
  92. package/dist/{inspect-CzsXBsew.js → inspect-4c1uL0x5.js} +4 -4
  93. package/dist/{install-safe-path-DqI19VEv.js → install-safe-path-3muwy3fu.js} +25 -25
  94. package/dist/{installs-P-pYAJm1.js → installs-BiQDtPF0.js} +9 -9
  95. package/dist/{ipv4-B95173MB.js → ipv4-sHllwvAI.js} +1 -1
  96. package/dist/{ir-C7He5vmn.js → ir-BukzlgSp.js} +8 -8
  97. package/dist/{issue-format-CbTfB8Hy.js → issue-format-DCcINW-9.js} +1 -1
  98. package/dist/{json-files-rR19q30D.js → json-files-CuJjdF_0.js} +8 -8
  99. package/dist/{lifecycle-core-ChKClWdw.js → lifecycle-core-CqFEhwHn.js} +5 -5
  100. package/dist/{login-qr-CX0rs3A6.js → login-qr-B8P_EAd-.js} +6 -6
  101. package/dist/{login-CjzRATwO.js → login-zoeewfBu.js} +3 -3
  102. package/dist/{logs-cli-DvHsw1WZ.js → logs-cli-D30BUN6y.js} +9 -9
  103. package/dist/{manager-BVfTfggO.js → manager-5OzUkYLf.js} +14 -14
  104. package/dist/{manager-runtime-BXJJSlzC.js → manager-runtime-BxXpVt3x.js} +9 -9
  105. package/dist/{manifest-registry-1ACGW3OR.js → manifest-registry-7kwtbCH-.js} +1 -1
  106. package/dist/{memory-cli-u8eyO3Ec.js → memory-cli-Dj8tyFtt.js} +12 -12
  107. package/dist/{model-D7hZpWTB.js → model-B8p-EsdJ.js} +2 -2
  108. package/dist/{model-catalog-Drh9Rois.js → model-catalog-BWuvEv1x.js} +3 -3
  109. package/dist/{model-picker-DK_vvKCV.js → model-picker-CLhaaagi.js} +4 -4
  110. package/dist/{models-CFXLX9IF.js → models-5VXwJBU2.js} +17 -17
  111. package/dist/{models-cli-PHQyKESa.js → models-cli-Br56IHfy.js} +78 -78
  112. package/dist/{models-config-DAastTau.js → models-config-poV-4Xlx.js} +6 -6
  113. package/dist/{net-CIh5ellr.js → net-CCnbGop3.js} +2 -2
  114. package/dist/{node-cli-o9qcU9GJ.js → node-cli-C8hvYquX.js} +33 -33
  115. package/dist/{node-command-policy-BeTSnoyk.js → node-command-policy-B_D5ucTj.js} +1 -1
  116. package/dist/{node-service-OVe0_CIs.js → node-service-Z0JprJda.js} +1 -1
  117. package/dist/{nodes-cli-kGx_Qa3c.js → nodes-cli-IIc8fTKT.js} +16 -16
  118. package/dist/{nodes-screen-BrMJzhot.js → nodes-screen-DFFmbaXE.js} +7 -7
  119. package/dist/{npm-pack-install-Dn3FiWXB.js → npm-pack-install-B887us7R.js} +18 -18
  120. package/dist/{npm-resolution-ky_uAlXE.js → npm-resolution-CKtyq4FH.js} +4 -4
  121. package/dist/{onboard-channels-oJCC_sJX.js → onboard-channels-_kVo3Apf.js} +21 -21
  122. package/dist/{onboard-custom-CRpsaM3g.js → onboard-custom-CZtjqrY7.js} +4 -4
  123. package/dist/{onboard-helpers-DwEZeaoe.js → onboard-helpers-BP429__H.js} +10 -10
  124. package/dist/{onboard-hooks-DyxckB2C.js → onboard-hooks-CTbjgLDl.js} +4 -4
  125. package/dist/{onboard-D1Qy64JK.js → onboard-lFwpCpC3.js} +6 -6
  126. package/dist/{onboard-remote-ZgpWNq9Z.js → onboard-remote-BlZB0AE9.js} +4 -4
  127. package/dist/{onboard-skills-DEijVfCg.js → onboard-skills-BT2YOXeP.js} +4 -4
  128. package/dist/{onboarding-Mxqy4O1E.js → onboarding-EEd_g8Zg.js} +14 -14
  129. package/dist/{onboarding.finalize-DiOMx6A5.js → onboarding.finalize-Cs1ukjFN.js} +90 -90
  130. package/dist/{onboarding.gateway-config-9wkBCzzO.js → onboarding.gateway-config-C6N8r5Is.js} +18 -18
  131. package/dist/{onboarding.secret-input-DRnoQSlI.js → onboarding.secret-input-BTK1IG-J.js} +1 -1
  132. package/dist/{openai-model-default-DqE4bNtd.js → openai-model-default-COzeuAI4.js} +2 -2
  133. package/dist/{outbound-CwzUo-rx.js → outbound-B7m9Vcd2.js} +3 -3
  134. package/dist/{outbound-attachment-Bedqixj2.js → outbound-attachment-fdEhzyl9.js} +2 -2
  135. package/dist/{pairing-cli-CsYP0at7.js → pairing-cli-NhoRKes6.js} +8 -8
  136. package/dist/{pairing-labels-CX4CtqRa.js → pairing-labels-CnTvFrUT.js} +1 -1
  137. package/dist/{pairing-store-BC4mnG9S.js → pairing-store-D0eOXyby.js} +3 -3
  138. package/dist/{plugin-sdk/path-alias-guards-gBhrAn14.js → path-alias-guards-vfYYQFIg.js} +1 -1
  139. package/dist/{path-safety-D7CjFQvf.js → path-safety-C95DzArw.js} +1 -1
  140. package/dist/{paths-D6mnO6Ni.js → paths-DfuVHiHu.js} +9 -9
  141. package/dist/{pi-embedded-BN8fghaF.js → pi-embedded-BR5y0dLa.js} +24 -24
  142. package/dist/{pi-embedded-helpers-A9VYPVCH.js → pi-embedded-helpers-CEHpGDRs.js} +3 -3
  143. package/dist/{pi-embedded-helpers-DtCOZSv-.js → pi-embedded-helpers-qCAK_a65.js} +6 -6
  144. package/dist/{pi-model-discovery-Cr1q2cJt.js → pi-model-discovery-CKUePiDc.js} +1 -1
  145. package/dist/{pi-model-discovery-runtime-BHmdAKBK.js → pi-model-discovery-runtime-CNLKih0w.js} +5 -5
  146. package/dist/{pi-tools.before-tool-call.runtime-duKHqrMc.js → pi-tools.before-tool-call.runtime-Bba7rXQq.js} +5 -5
  147. package/dist/{pi-tools.policy-D3RA94WF.js → pi-tools.policy-BwWnFLLV.js} +5 -5
  148. package/dist/{plugin-auto-enable-a3TK3OPT.js → plugin-auto-enable-DJkHW_LG.js} +3 -3
  149. package/dist/{plugin-registry-CFqqDqQV.js → plugin-registry-D3PnPE1D.js} +3 -3
  150. package/dist/plugin-sdk/discord.js +6 -6
  151. package/dist/plugin-sdk/index.js +50 -50
  152. package/dist/plugin-sdk/mattermost.js +3 -3
  153. package/dist/plugin-sdk/signal.js +2 -2
  154. package/dist/{plugins-Bc7YM9X-.js → plugins-BDTkSIi7.js} +2 -2
  155. package/dist/{plugins-cli-vQi8tFye.js → plugins-cli-BA_2daJe.js} +83 -83
  156. package/dist/{ports-DMeUt80n.js → ports-0jLyYbvQ.js} +2 -2
  157. package/dist/{ports-BzfeaNjw.js → ports-Be82TlEg.js} +1 -1
  158. package/dist/{program-Nott_VTb.js → program-D_xdLzmM.js} +81 -81
  159. package/dist/{prompt-select-styled-7mnlZgrQ.js → prompt-select-styled-BsheNEnh.js} +40 -40
  160. package/dist/{provider-auth-helpers-_77rN3Zc.js → provider-auth-helpers-B5kD4Lt6.js} +5 -5
  161. package/dist/{proxy-env-BiKHVg2h.js → proxy-env-CQTuxZoS.js} +1 -1
  162. package/dist/{push-apns-Ce1zzNYB.js → push-apns-BbenjEX4.js} +5 -5
  163. package/dist/{pw-ai-CM87tQwG.js → pw-ai-Du22SYoO.js} +1 -1
  164. package/dist/{pw-ai-CAhTwexx.js → pw-ai-wo5t_KO_.js} +18 -18
  165. package/dist/{plugin-sdk/qmd-manager-6bozlfFg.js → qmd-manager-BkSWV1Q1.js} +17 -11
  166. package/dist/{qr-cli-DzjBpGix.js → qr-cli-DSMYIp-D.js} +2 -2
  167. package/dist/{query-expansion-C0HUJbRn.js → query-expansion-DI9INxTg.js} +12 -12
  168. package/dist/{redact-snapshot-C0McNGqh.js → redact-snapshot-B2YFI3cO.js} +1 -1
  169. package/dist/{register.agent-DtjNdvUh.js → register.agent-Dk_5V5oA.js} +94 -94
  170. package/dist/register.configure-C8OFfGln.js +165 -0
  171. package/dist/{register.maintenance-DERKsSgi.js → register.maintenance-CluQOq8b.js} +95 -95
  172. package/dist/{register.message-DkYxt6gZ.js → register.message-BCTXT5yK.js} +74 -74
  173. package/dist/{register.onboard-BtfW83M0.js → register.onboard-C64oXnvq.js} +18 -18
  174. package/dist/{register.setup-Ba9gMkRk.js → register.setup-Dl3nk2Ui.js} +21 -21
  175. package/dist/{register.status-health-sessions-BILdpWJV.js → register.status-health-sessions-BHtbPeCO.js} +88 -88
  176. package/dist/{register.subclis-Dfm_Zu31.js → register.subclis-CDMFyaKR.js} +31 -31
  177. package/dist/{rpc-mau2U4RG.js → rpc-DA9IhLVG.js} +1 -1
  178. package/dist/{run-main-BF7ybLIy.js → run-main-BcA22Ipv.js} +93 -93
  179. package/dist/{runtime-Bcmv4Epp.js → runtime-BnbzNRr6.js} +3 -3
  180. package/dist/{runtime-config-collectors-Bsjz4isf.js → runtime-config-collectors-CXJdhHRo.js} +1 -1
  181. package/dist/{runtime-whatsapp-login.runtime-COUEKxmy.js → runtime-whatsapp-login.runtime-DRoK8G8H.js} +7 -7
  182. package/dist/{runtime-whatsapp-outbound.runtime-BaWH6-ns.js → runtime-whatsapp-outbound.runtime-C9OiwkWh.js} +15 -15
  183. package/dist/{sandbox-ixDhkfHu.js → sandbox-C3TbYIHd.js} +18 -18
  184. package/dist/{sandbox-cli-DOxm7fjR.js → sandbox-cli-BwK2slfh.js} +25 -25
  185. package/dist/{secrets-cli-DvXznMUb.js → secrets-cli-Beu2lcrf.js} +11 -11
  186. package/dist/{security-cli-3WOXvJR-.js → security-cli-CcpKH_lC.js} +42 -42
  187. package/dist/{send-BuBTLRMz.js → send-CLI3CiQv.js} +6 -6
  188. package/dist/{send-Do2preUU.js → send-DEs83M9V.js} +11 -11
  189. package/dist/{send-BPgrWmUX.js → send-EVcbFVqn.js} +5 -5
  190. package/dist/{send-BVyLW1cn.js → send-RDqyJwZx.js} +8 -8
  191. package/dist/{send-BpkluEZ5.js → send-z-sMjqvX.js} +4 -4
  192. package/dist/{server-DMAPnkgM.js → server-Bm-IxvZZ.js} +20 -20
  193. package/dist/{server-context-Dd8UynDU.js → server-context-Dw_4lGoI.js} +12 -12
  194. package/dist/{server-lifecycle-BEZ2jsQ6.js → server-lifecycle-DYgHYif9.js} +2 -2
  195. package/dist/{server-middleware-B_LyQkOL.js → server-middleware-BVAEuQs7.js} +1 -1
  196. package/dist/{server-node-events-dr5CaM3M.js → server-node-events-Q0cT2ifj.js} +74 -74
  197. package/dist/{service-B5T42CWZ.js → service-DSqxS6_D.js} +15 -15
  198. package/dist/{session-eXSdl5mb.js → session-D0jodcgT.js} +1 -1
  199. package/dist/{session-utils-D12gSo5W.js → session-utils-XY6JwRhT.js} +6 -6
  200. package/dist/{sessions-DgnXAQCc.js → sessions-BWptzMw0.js} +15 -15
  201. package/dist/{sessions-C16G7L5c.js → sessions-CMqv9JEu.js} +4 -4
  202. package/dist/{shared-BYny1RCF.js → shared-BbVxcRzb.js} +3 -3
  203. package/dist/{shared-By6_qr_R.js → shared-D5DTxBPH.js} +1 -1
  204. package/dist/{skill-commands-BcigmiOW.js → skill-commands-fU-Mejn9.js} +5 -5
  205. package/dist/{skill-scanner--QKHR8U0.js → skill-scanner-CvS725eQ.js} +6 -6
  206. package/dist/{skills-EwyaIyKC.js → skills-C85azDXm.js} +3 -3
  207. package/dist/{skills-cli-CqEjN0Yj.js → skills-cli-ZXx6BNar.js} +5 -5
  208. package/dist/{skills-install-CXVKvhIE.js → skills-install-KD6dzNoZ.js} +6 -6
  209. package/dist/{skills-status-Bv8Xt7Lc.js → skills-status-DkO7rxE8.js} +1 -1
  210. package/dist/{slash-commands.runtime-Bi99B_EP.js → slash-commands.runtime-CPlXJtuM.js} +11 -11
  211. package/dist/slash-dispatch.runtime-BOMEVFk0.js +114 -0
  212. package/dist/{slash-dispatch.runtime-sXaUYn4v.js → slash-dispatch.runtime-BcecLKcJ.js} +6 -6
  213. package/dist/{slash-skill-commands.runtime-DOXmvOtU.js → slash-skill-commands.runtime-Cnfq_5LN.js} +15 -15
  214. package/dist/{squidclaw-root-JXyRbQLJ.js → squidclaw-root-BQfLymzj.js} +8 -8
  215. package/dist/{status-Dnl-Um1D.js → status-cU9cJReo.js} +27 -27
  216. package/dist/{status.update-BGIm6we4.js → status.update-CiLU9RPF.js} +2 -2
  217. package/dist/{store-BTkIx401.js → store-BEIcnlgx.js} +5 -5
  218. package/dist/{subagent-registry-CQA6P2FO.js → subagent-registry-CIgFD2oi.js} +149 -149
  219. package/dist/{subagent-registry-runtime-232sNNT6.js → subagent-registry-runtime-Cq9I6PwW.js} +6 -6
  220. package/dist/subagent-registry-runtime-DGTjU9Lb.js +114 -0
  221. package/dist/{system-cli-CJAQxYHv.js → system-cli-i1FWZDjn.js} +9 -9
  222. package/dist/{system-run-command-BaSqmSwR.js → system-run-command-COqCNIBg.js} +1 -1
  223. package/dist/{systemd-B86VePXs.js → systemd-Cj2cX_ZP.js} +9 -9
  224. package/dist/{systemd-hints-BmFWZu_j.js → systemd-hints-46PqJfaq.js} +6 -6
  225. package/dist/{systemd-linger-w7fvBU-1.js → systemd-linger-6Jd9K5p2.js} +1 -1
  226. package/dist/{tables-CGh4CW_h.js → tables-CIpKClDV.js} +1 -1
  227. package/dist/{tailnet-DJq7Mi1o.js → tailnet-CZANZjq6.js} +1 -1
  228. package/dist/{plugin-sdk/target-errors-jlLHihbX.js → target-errors-CRQlPF1u.js} +2 -2
  229. package/dist/{tool-images-D6mmxuWS.js → tool-images-CyzWvDUu.js} +1 -1
  230. package/dist/{tui-BbcmzKaA.js → tui-CC_AbfZr.js} +6 -6
  231. package/dist/{tui-cli-Dv3jSm3x.js → tui-cli-DiJ7zKUD.js} +32 -32
  232. package/dist/{update-BhRrb6BI.js → update-1JhjCqjy.js} +3 -3
  233. package/dist/{update-cli-Oe0fP8x9.js → update-cli-DM_dUip_.js} +104 -104
  234. package/dist/{update-runner-DdA6xBa9.js → update-runner-BBJZmfZ4.js} +16 -16
  235. package/dist/{web-Chw1dtKA.js → web-CWxO_flK.js} +6 -6
  236. package/dist/web-CZhZC1EA.js +118 -0
  237. package/dist/{webhooks-cli-CJLug1QH.js → webhooks-cli-CzDd8ikc.js} +6 -6
  238. package/dist/{whatsapp-actions-_ca5OtHq.js → whatsapp-actions-MR_bBjXO.js} +17 -17
  239. package/dist/{with-timeout-CFfRudNc.js → with-timeout-BZ_Teugb.js} +3 -3
  240. package/dist/{workspace-BbO-M3Jv.js → workspace-D5vNjk5G.js} +1 -1
  241. package/dist/{workspace-dirs-D8D-Ghcl.js → workspace-dirs-CjMIsQti.js} +1 -1
  242. package/dist/{wsl-CsGe5QCP.js → wsl-CvQfS6aU.js} +2 -2
  243. package/package.json +1 -1
  244. package/dist/deliver-runtime-zICm26tE.js +0 -61
  245. package/dist/deps-send-discord.runtime-C_9HZQko.js +0 -36
  246. package/dist/deps-send-imessage.runtime-BMhGsWds.js +0 -35
  247. package/dist/deps-send-signal.runtime-BGhjYiu6.js +0 -34
  248. package/dist/deps-send-slack.runtime-DjBCu-RX.js +0 -32
  249. package/dist/deps-send-whatsapp.runtime-CU257URT.js +0 -119
  250. package/dist/fs-safe-BPQ-per2.js +0 -352
  251. package/dist/image-runtime-Cxoxcx04.js +0 -55
  252. package/dist/path-alias-guards-DeOVetT7.js +0 -43
  253. package/dist/plugin-sdk/accounts-CUEuUR3C.js +0 -46
  254. package/dist/plugin-sdk/accounts-D0W2pELU.js +0 -288
  255. package/dist/plugin-sdk/accounts-ucj0odJq.js +0 -35
  256. package/dist/plugin-sdk/active-listener-BO7eBEG_.js +0 -50
  257. package/dist/plugin-sdk/api-key-rotation-C4C_mDsg.js +0 -181
  258. package/dist/plugin-sdk/audio-preflight-Cqdo0JKm.js +0 -69
  259. package/dist/plugin-sdk/audio-transcription-runner-DnEooIyE.js +0 -2176
  260. package/dist/plugin-sdk/audit-membership-runtime-B9b-zRwg.js +0 -58
  261. package/dist/plugin-sdk/channel-activity-BMWLw4o2.js +0 -94
  262. package/dist/plugin-sdk/channel-web-B8bj7MB9.js +0 -2256
  263. package/dist/plugin-sdk/chrome-CV-q0Lmc.js +0 -2415
  264. package/dist/plugin-sdk/commands-registry-e7YoqrbP.js +0 -1125
  265. package/dist/plugin-sdk/config-B2B64aX0.js +0 -17911
  266. package/dist/plugin-sdk/deliver-BkyBtcLR.js +0 -1694
  267. package/dist/plugin-sdk/deliver-runtime-O4lwAWMw.js +0 -32
  268. package/dist/plugin-sdk/deps-send-discord.runtime-BAeeBldY.js +0 -23
  269. package/dist/plugin-sdk/deps-send-imessage.runtime-EL-CfikZ.js +0 -22
  270. package/dist/plugin-sdk/deps-send-signal.runtime-BeemHeUu.js +0 -21
  271. package/dist/plugin-sdk/deps-send-slack.runtime-DTttkC0N.js +0 -19
  272. package/dist/plugin-sdk/deps-send-telegram.runtime-Dsf9Cnka.js +0 -24
  273. package/dist/plugin-sdk/deps-send-whatsapp.runtime-DvdFo6lj.js +0 -57
  274. package/dist/plugin-sdk/diagnostic-DPRVoKTk.js +0 -319
  275. package/dist/plugin-sdk/errors-B8oJXuCF.js +0 -54
  276. package/dist/plugin-sdk/fetch-guard-F0Fnqisy.js +0 -156
  277. package/dist/plugin-sdk/image-cBW8L8pp.js +0 -2310
  278. package/dist/plugin-sdk/image-ops-BP8ix1GC.js +0 -584
  279. package/dist/plugin-sdk/image-runtime-9xkgSlNz.js +0 -25
  280. package/dist/plugin-sdk/ir-DWEc6zOp.js +0 -1296
  281. package/dist/plugin-sdk/local-roots-BIPT8uAO.js +0 -186
  282. package/dist/plugin-sdk/logger-DDdrdbDu.js +0 -1163
  283. package/dist/plugin-sdk/login-BMTiGutN.js +0 -57
  284. package/dist/plugin-sdk/login-qr-BFxqYUkc.js +0 -320
  285. package/dist/plugin-sdk/manager-BD-aYaZ8.js +0 -3917
  286. package/dist/plugin-sdk/manager-runtime-C5bRwUlz.js +0 -15
  287. package/dist/plugin-sdk/outbound-Bm07xvO6.js +0 -212
  288. package/dist/plugin-sdk/outbound-attachment-DLsaxDsc.js +0 -19
  289. package/dist/plugin-sdk/paths-C6W4VHoa.js +0 -166
  290. package/dist/plugin-sdk/pi-embedded-helpers-BExwPvTh.js +0 -9627
  291. package/dist/plugin-sdk/pi-model-discovery-DdctvBeX.js +0 -134
  292. package/dist/plugin-sdk/pi-model-discovery-runtime-DrtpLJjk.js +0 -8
  293. package/dist/plugin-sdk/pi-tools.before-tool-call.runtime-rgTz3FBl.js +0 -354
  294. package/dist/plugin-sdk/plugins-BN64HHZA.js +0 -864
  295. package/dist/plugin-sdk/proxy-fetch-ZPEvp58f.js +0 -38
  296. package/dist/plugin-sdk/pw-ai-DBm3RdBK.js +0 -1938
  297. package/dist/plugin-sdk/query-expansion-eeVz_aEm.js +0 -1011
  298. package/dist/plugin-sdk/redact-BoNEjbpF.js +0 -319
  299. package/dist/plugin-sdk/reply-Bp49JV3f.js +0 -98828
  300. package/dist/plugin-sdk/resolve-outbound-target-DXfjGlZQ.js +0 -40
  301. package/dist/plugin-sdk/run-with-concurrency-5DMu9szx.js +0 -1994
  302. package/dist/plugin-sdk/runtime-whatsapp-login.runtime-D2hkJBa-.js +0 -10
  303. package/dist/plugin-sdk/runtime-whatsapp-outbound.runtime-C06I4adi.js +0 -19
  304. package/dist/plugin-sdk/send-B9xnwtQ-.js +0 -540
  305. package/dist/plugin-sdk/send-BxySs-Cu.js +0 -2587
  306. package/dist/plugin-sdk/send-D9THKp_J.js +0 -414
  307. package/dist/plugin-sdk/send-DCuaaP2w.js +0 -503
  308. package/dist/plugin-sdk/send-Dm_-_xje.js +0 -3135
  309. package/dist/plugin-sdk/session-DDzIZHxt.js +0 -169
  310. package/dist/plugin-sdk/skill-commands-DRvqtuFC.js +0 -342
  311. package/dist/plugin-sdk/skills-BWwlfbVj.js +0 -1428
  312. package/dist/plugin-sdk/slash-commands.runtime-BzYsaTST.js +0 -13
  313. package/dist/plugin-sdk/slash-dispatch.runtime-Cty8EAD9.js +0 -52
  314. package/dist/plugin-sdk/slash-skill-commands.runtime-sg98L8BK.js +0 -16
  315. package/dist/plugin-sdk/ssrf-DOBwjFow.js +0 -202
  316. package/dist/plugin-sdk/store-BKDR_-Qk.js +0 -81
  317. package/dist/plugin-sdk/subagent-registry-runtime-Dz50ieim.js +0 -52
  318. package/dist/plugin-sdk/tables-GIj79us5.js +0 -55
  319. package/dist/plugin-sdk/thinking-BgdUnMZ2.js +0 -1206
  320. package/dist/plugin-sdk/tokens-CTIYTLWu.js +0 -52
  321. package/dist/plugin-sdk/tool-images-GSlvf6RP.js +0 -274
  322. package/dist/plugin-sdk/web-BK9mCTAc.js +0 -56
  323. package/dist/plugin-sdk/whatsapp-actions-DQpK_5Ds.js +0 -80
  324. package/dist/qmd-manager-BsL_hcOB.js +0 -1454
  325. package/dist/register.configure-BkwbM-hb.js +0 -165
  326. package/dist/slash-dispatch.runtime-reuPLnse.js +0 -114
  327. package/dist/subagent-registry-runtime-CqgIWcSl.js +0 -114
  328. package/dist/target-errors-C_rnMuJ2.js +0 -195
  329. package/dist/web-w04Gvwqi.js +0 -118
@@ -1,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 };