@symerian/symi 2.4.3 → 2.5.0

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 (178) hide show
  1. package/dist/{agents-BrpbYYTb.js → agents-BEPfMqrg.js} +4 -4
  2. package/dist/{agents.config-j4SWyB6K.js → agents.config-D60gMagv.js} +1 -1
  3. package/dist/{agents.config-Bf8u_0ts.js → agents.config-DPv-AmZD.js} +1 -1
  4. package/dist/{audio-preflight-C40mKAp7.js → audio-preflight-CPBOQV4I.js} +4 -4
  5. package/dist/{auth-choice-BYB9fJiu.js → auth-choice-BeHaRQfM.js} +1 -1
  6. package/dist/{auth-choice-DlrjQI-v.js → auth-choice-CTeG2A5P.js} +1 -1
  7. package/dist/{banner-DRJJmkv1.js → banner-DihS8WHF.js} +1 -1
  8. package/dist/build-info.json +3 -3
  9. package/dist/bundled/boot-md/handler.js +1 -1
  10. package/dist/bundled/session-memory/handler.js +1 -1
  11. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  12. package/dist/{channel-options-CxSIp3x-.js → channel-options-BJphNYiq.js} +1 -1
  13. package/dist/{channel-options-BQz0F4El.js → channel-options-D2Zf6a2L.js} +1 -1
  14. package/dist/{channel-web-BY4lhNxW.js → channel-web-BnZ6c0_u.js} +1 -1
  15. package/dist/{channels-cli-B5Nj_nHr.js → channels-cli-CF9LDCSC.js} +10 -10
  16. package/dist/{channels-cli--rkhLJvR.js → channels-cli-COMko9mZ.js} +4 -4
  17. package/dist/{chrome-CDJYxX5a.js → chrome-D2SKJnR7.js} +7 -7
  18. package/dist/{cli-Ds6poYQ6.js → cli-DXpAHJS4.js} +1 -1
  19. package/dist/{cli-CATf6JAq.js → cli-DYNTJxmZ.js} +7 -7
  20. package/dist/{command-registry-CsDAPQfS.js → command-registry-X_FmrHib.js} +9 -9
  21. package/dist/{completion-cli-B_f5PMBc.js → completion-cli-D1aObtjM.js} +1 -1
  22. package/dist/{completion-cli-CSdjFWHy.js → completion-cli-Dhj0jCR_.js} +2 -2
  23. package/dist/{config-cli-C_GarUko.js → config-cli-BDpBT1b-.js} +1 -1
  24. package/dist/{config-cli-B_KCvdli.js → config-cli-BrmaXVj4.js} +1 -1
  25. package/dist/{configure-vfmJApU8.js → configure-CkCFJCKp.js} +3 -3
  26. package/dist/{configure-CM-z8YCS.js → configure-oMqP6jIk.js} +3 -3
  27. package/dist/{deliver-BH0l3UKW.js → deliver-C-37cZUe.js} +1 -1
  28. package/dist/{deliver-CceEhg3d.js → deliver-CWR_98sK.js} +54 -54
  29. package/dist/{doctor-completion-BWJvfjTC.js → doctor-completion-vhqAoURB.js} +1 -1
  30. package/dist/{doctor-completion-llX6EnGy.js → doctor-completion-wGoyzRH8.js} +1 -1
  31. package/dist/entry.js +1 -1
  32. package/dist/extensionAPI.js +6 -6
  33. package/dist/{gateway-cli-BApdH1bD.js → gateway-cli-BBPEwiAc.js} +9 -9
  34. package/dist/{gateway-cli-70k2-I4K.js → gateway-cli-uDuGdJsH.js} +17 -17
  35. package/dist/{glass-ui-ws-Z_wtGa_A.js → glass-ui-ws-DiqQflvy.js} +7 -7
  36. package/dist/{glass-ui-ws-Be_AOhp7.js → glass-ui-ws-TCkne4L4.js} +13 -13
  37. package/dist/{health-BBGgp_dC.js → health-1KsVR3eN.js} +2 -2
  38. package/dist/{health-BmaWws9G.js → health-CPYlV7Zg.js} +1 -1
  39. package/dist/{hooks-cli-C5eV9sxP.js → hooks-cli-CL266d2E.js} +8 -8
  40. package/dist/{hooks-cli-W_aoP9nb.js → hooks-cli-PKy2h3eb.js} +2 -2
  41. package/dist/{image-CHzdaNJ4.js → image-DcpMiprB.js} +1 -1
  42. package/dist/index.js +12 -12
  43. package/dist/llm-slug-generator.js +1 -1
  44. package/dist/{models-COaQWNz5.js → models-BsS_l1gY.js} +2 -2
  45. package/dist/{models-cli-DeG1qheS.js → models-cli-CmR7k-2e.js} +8 -8
  46. package/dist/{models-cli-DH17yK8M.js → models-cli-CvxkLybz.js} +3 -3
  47. package/dist/{onboard-1wGdR0wt.js → onboard-Bgo_BcMo.js} +2 -2
  48. package/dist/{onboard-nQYq_dsr.js → onboard-D2GpwLzg.js} +2 -2
  49. package/dist/{onboard-channels-D93AAHMd.js → onboard-channels-3WFDi7Ts.js} +1 -1
  50. package/dist/{onboard-channels-BCUkNB26.js → onboard-channels-BNTeFCna.js} +1 -1
  51. package/dist/{onboarding-Peg7PNOz.js → onboarding-BUumoJYB.js} +3 -3
  52. package/dist/{onboarding-gQRA57l_.js → onboarding-CbkyewZp.js} +3 -3
  53. package/dist/{onboarding.finalize-C4DSBMrV.js → onboarding.finalize-B2_mgA4K.js} +6 -6
  54. package/dist/{onboarding.finalize-D26o-hBA.js → onboarding.finalize-sESCY9Iq.js} +11 -11
  55. package/dist/{pi-embedded-XE5y7qIF.js → pi-embedded-BIIdwXKr.js} +24743 -24406
  56. package/dist/{pi-embedded-CAJ6egA1.js → pi-embedded-BOF7XlCO.js} +24751 -24414
  57. package/dist/{pi-embedded-helpers-lgx_U5KS.js → pi-embedded-helpers-B8kqLWns.js} +4 -4
  58. package/dist/{plugin-registry-D_BAH1V5.js → plugin-registry-BDfC2z-e.js} +1 -1
  59. package/dist/{plugin-registry-C0iHnZ7j.js → plugin-registry-IXa-nyg0.js} +1 -1
  60. package/dist/plugin-sdk/{accounts-BToL3HlP.js → accounts-BtaOa4z_.js} +1 -1
  61. package/dist/plugin-sdk/{accounts-D9zGZU5t.js → accounts-Ddm33hQm.js} +3 -3
  62. package/dist/plugin-sdk/{accounts-Dtszw3Zn.js → accounts-s-AdhXVR.js} +1 -1
  63. package/dist/plugin-sdk/{active-listener-bEk__wbB.js → active-listener-BXYeALs0.js} +1 -1
  64. package/dist/plugin-sdk/{agent-scope-C3gMMKCU.js → agent-scope-CYYpcO9W.js} +2 -2
  65. package/dist/plugin-sdk/agents/output-normalizer.d.ts +69 -0
  66. package/dist/plugin-sdk/agents/tools/browser-tool.schema.d.ts +1 -1
  67. package/dist/plugin-sdk/agents/unified-runner.d.ts +122 -0
  68. package/dist/plugin-sdk/{api-key-rotation-CVBMpnPc.js → api-key-rotation-D_sMvI5W.js} +1 -1
  69. package/dist/plugin-sdk/{audio-preflight-DoQQKlxa.js → audio-preflight-VpItkiy3.js} +24 -24
  70. package/dist/plugin-sdk/{bindings-BbwoUGPx.js → bindings-C7hRtgYW.js} +2 -2
  71. package/dist/plugin-sdk/{channel-activity-Ji7f0gqq.js → channel-activity-DoC1xtDu.js} +1 -1
  72. package/dist/plugin-sdk/{channel-web-ilY3YUmF.js → channel-web-HznAZS1r.js} +22 -22
  73. package/dist/plugin-sdk/{chrome-C7c_0I5M.js → chrome-B7RdxmJ0.js} +3 -3
  74. package/dist/plugin-sdk/{chunk-jvk9axTQ.js → chunk-Dw2XBYXv.js} +1 -1
  75. package/dist/plugin-sdk/{command-format-DSdvQ_M5.js → command-format-GKSevep4.js} +1 -1
  76. package/dist/plugin-sdk/{commands-registry-CQFbmUMs.js → commands-registry-COIaslGl.js} +4 -4
  77. package/dist/plugin-sdk/{config-DDkdiUOR.js → config-KlTNfkFF.js} +9 -9
  78. package/dist/plugin-sdk/{deliver-BUns_L9e.js → deliver-BZ99UKQq.js} +125 -125
  79. package/dist/plugin-sdk/{diagnostic-mFf4i4G9.js → diagnostic-05pm5Rxi.js} +1 -1
  80. package/dist/plugin-sdk/{image-BOYy0Ump.js → image-CLOPx7yW.js} +4 -4
  81. package/dist/plugin-sdk/{image-ops-Bnp6LXEx.js → image-ops-BlQR__MN.js} +1 -1
  82. package/dist/plugin-sdk/index.js +53 -53
  83. package/dist/plugin-sdk/{ir-Fb3qpcis.js → ir-BJ6BHE5b.js} +4 -4
  84. package/dist/plugin-sdk/{local-roots-Ckk1QfzI.js → local-roots-BHLNSI8U.js} +3 -3
  85. package/dist/plugin-sdk/{login-Bh3DZPam.js → login-DQMXuxOk.js} +7 -7
  86. package/dist/plugin-sdk/{login-qr-DbR7odSr.js → login-qr-BjVZSoCi.js} +9 -9
  87. package/dist/plugin-sdk/{manager-DckktAQ3.js → manager-CBSBFuFz.js} +8 -8
  88. package/dist/plugin-sdk/{manifest-registry-B3ugY9-f.js → manifest-registry-CPnHl_K3.js} +1 -1
  89. package/dist/plugin-sdk/{markdown-tables-Dfaqilz6.js → markdown-tables-BoYFajMu.js} +1 -1
  90. package/dist/plugin-sdk/{message-channel-BdI5Ra9S.js → message-channel-COTAJzHd.js} +1 -1
  91. package/dist/plugin-sdk/{model-selection-OpU8HN50.js → model-selection-CsbEfrS0.js} +4 -4
  92. package/dist/plugin-sdk/{outbound-rF6G8Xpr.js → outbound-B0e8KdaR.js} +7 -7
  93. package/dist/plugin-sdk/{outbound-attachment-DnVQfTG2.js → outbound-attachment-CnslKL38.js} +2 -2
  94. package/dist/plugin-sdk/{pi-auth-json-CJk8t14T.js → pi-auth-json-qWi7ZIYV.js} +5 -5
  95. package/dist/plugin-sdk/{pi-embedded-helpers-BveUP4hk.js → pi-embedded-helpers-CW630epe.js} +17 -17
  96. package/dist/plugin-sdk/{plugins-BbAvhC25.js → plugins-BNByVCIH.js} +4 -4
  97. package/dist/plugin-sdk/{pw-ai-DjGUsee-.js → pw-ai-CnbPIPY9.js} +8 -8
  98. package/dist/plugin-sdk/{qmd-manager-mjKcdwVr.js → qmd-manager-CH0XbIHf.js} +4 -4
  99. package/dist/plugin-sdk/{registry--_pGht6S.js → registry-D0xTnUWt.js} +2 -2
  100. package/dist/plugin-sdk/{replies-fI39rPGa.js → replies-LLcQL3w6.js} +3 -3
  101. package/dist/plugin-sdk/{reply-CSgeVqcV.js → reply-DpnW-aMb.js} +40129 -39792
  102. package/dist/plugin-sdk/{reply-prefix-BHuV5t70.js → reply-prefix-uxfMZW4p.js} +1 -1
  103. package/dist/plugin-sdk/{resolve-outbound-target-BkCUbYGV.js → resolve-outbound-target-BiyAyTWz.js} +2 -2
  104. package/dist/plugin-sdk/{resolve-route-D3JH_D2N.js → resolve-route-B3CCBumQ.js} +3 -3
  105. package/dist/plugin-sdk/{retry-ilSJqnz9.js → retry-CwQ_iIj8.js} +1 -1
  106. package/dist/plugin-sdk/{runner-BVqnEfNe.js → runner-CGBT7tgF.js} +9 -9
  107. package/dist/plugin-sdk/{send-BtANzsAo.js → send-B2CEnVLL.js} +6 -6
  108. package/dist/plugin-sdk/{send-BHbXh8Ly.js → send-C5h_YxNb.js} +7 -7
  109. package/dist/plugin-sdk/{send-D6LMZJ_h.js → send-CRsR8-vO.js} +10 -10
  110. package/dist/plugin-sdk/{send-Bxdu6ZZy.js → send-CjOBB3Vo.js} +10 -10
  111. package/dist/plugin-sdk/{send-BMfJIhCk.js → send-pYqe432l.js} +6 -6
  112. package/dist/plugin-sdk/{session-kI0tzViQ.js → session-BsOrxiMj.js} +4 -4
  113. package/dist/plugin-sdk/{skill-commands-DCNXVERE.js → skill-commands-ff_01_r3.js} +5 -5
  114. package/dist/plugin-sdk/{skills-B1GeRYlu.js → skills-_yTP47Cd.js} +7 -7
  115. package/dist/plugin-sdk/{sqlite-Cq_7Cg4E.js → sqlite-CxAR5ttJ.js} +1 -1
  116. package/dist/plugin-sdk/{store-Do3t33-c.js → store-BdrNabcU.js} +2 -2
  117. package/dist/plugin-sdk/{subsystem-Coz2AgU8.js → subsystem-B2uDN3TV.js} +1 -1
  118. package/dist/plugin-sdk/{tables-DR0NmBeH.js → tables-DNwXwNFa.js} +1 -1
  119. package/dist/plugin-sdk/{target-errors-B7YyMnIi.js → target-errors-Paro1BjP.js} +2 -2
  120. package/dist/plugin-sdk/{thinking-DCNUIAHY.js → thinking-CXqf7WTe.js} +5 -5
  121. package/dist/plugin-sdk/{tokens-CWMflosr.js → tokens-bC3UVmVH.js} +1 -1
  122. package/dist/plugin-sdk/{tool-images-D7Lno-TE.js → tool-images-HJ2sfZDV.js} +2 -2
  123. package/dist/plugin-sdk/{tool-loop-detection-edmW8ZiF.js → tool-loop-detection-BVA6fax-.js} +2 -2
  124. package/dist/plugin-sdk/web-CGNEXRkp.js +65 -0
  125. package/dist/plugin-sdk/{whatsapp-actions-CcBzDuL-.js → whatsapp-actions-DfseosPO.js} +21 -21
  126. package/dist/{plugins-cli-LqQNHF1I.js → plugins-cli-DAxj0T7n.js} +2 -2
  127. package/dist/{plugins-cli-BhOXY_Ay.js → plugins-cli-DsYvb9az.js} +8 -8
  128. package/dist/{program-Bx47hl_J.js → program-C_UFd0ph.js} +7 -7
  129. package/dist/{program-context-JFmxYLfK.js → program-context-C-1s9IMf.js} +17 -17
  130. package/dist/{prompt-select-styled-BeJhp9PS.js → prompt-select-styled-CYRG7OzR.js} +4 -4
  131. package/dist/{prompt-select-styled--d3H0JCo.js → prompt-select-styled-uEjL8GAK.js} +4 -4
  132. package/dist/{provider-auth-helpers-Ds_HwlgY.js → provider-auth-helpers-CJUiVhCt.js} +1 -1
  133. package/dist/{provider-auth-helpers-BzczCfh8.js → provider-auth-helpers-CpOR6tLS.js} +1 -1
  134. package/dist/{push-apns-CT8-VcK5.js → push-apns-21LKYvkS.js} +1 -1
  135. package/dist/{push-apns-DvcqkHld.js → push-apns-Ciljlk7J.js} +1 -1
  136. package/dist/{pw-ai-De-KR9_s.js → pw-ai-1htA-NnS.js} +1 -1
  137. package/dist/{register.agent-DMvHFw16.js → register.agent-BSv7WO-U.js} +6 -6
  138. package/dist/{register.agent-yoXoJ_5O.js → register.agent-stsk6Gip.js} +11 -11
  139. package/dist/{register.configure-BqrNBkwZ.js → register.configure-C8oDtnaI.js} +12 -12
  140. package/dist/{register.configure-B8UDTEcS.js → register.configure-DNQTd6SJ.js} +6 -6
  141. package/dist/{register.maintenance-CvaHYkoX.js → register.maintenance-B3f3jkUo.js} +13 -13
  142. package/dist/{register.maintenance-CYhp47Hs.js → register.maintenance-dTI3y4Eh.js} +8 -8
  143. package/dist/{register.message-CgtrjEFw.js → register.message-Cbb4nH_0.js} +8 -8
  144. package/dist/{register.message-BnLBwUw9.js → register.message-K9BDeFyy.js} +2 -2
  145. package/dist/{register.onboard-mCscJN7t.js → register.onboard-BBfmwa3j.js} +10 -10
  146. package/dist/{register.onboard-CoySBEdQ.js → register.onboard-Djz7Di9K.js} +4 -4
  147. package/dist/{register.setup-BmE-pwMT.js → register.setup-B6hkCLH0.js} +4 -4
  148. package/dist/{register.setup-CzrsIQMG.js → register.setup-Dmu1jt3n.js} +10 -10
  149. package/dist/{register.status-health-sessions-CP7JWQHw.js → register.status-health-sessions-CvwhBkbb.js} +3 -3
  150. package/dist/{register.status-health-sessions-DhTfQ530.js → register.status-health-sessions-DaSrMm3l.js} +9 -9
  151. package/dist/{register.subclis-wsgQ6wk8.js → register.subclis-Dv1WM9Kj.js} +9 -9
  152. package/dist/{reply-DkwaBRX-.js → reply-BvVsPU7v.js} +39623 -39286
  153. package/dist/{run-main-mKcFqx7h.js → run-main-55CDVAv6.js} +14 -14
  154. package/dist/{runner-DUBExAb5.js → runner-BcQ0sF9T.js} +1 -1
  155. package/dist/{send-CXxQ_f7L.js → send-DWYkPSUs.js} +1 -1
  156. package/dist/{send-tanEMpHN.js → send-DkfYiRx5.js} +1 -1
  157. package/dist/{server-methods-CbeCo-6O.js → server-methods-Bf8SpXoW.js} +10 -10
  158. package/dist/{server-methods-EQ0JkHOg.js → server-methods-CDDLS3ke.js} +7 -7
  159. package/dist/{server-node-events-C1FDqJb9.js → server-node-events-B9iZK3qE.js} +8 -8
  160. package/dist/{server-node-events-CBHpc_25.js → server-node-events-Dx0L419d.js} +2 -2
  161. package/dist/{status-jVJSC_Ga.js → status-5XgxbiNb.js} +1 -1
  162. package/dist/{status-Cksz7z4T.js → status-C-kU0UFm.js} +1 -1
  163. package/dist/{status-CnogoaI_.js → status-C-vthqzQ.js} +2 -2
  164. package/dist/{status-B1r3Wp0-.js → status-DEymUALi.js} +2 -2
  165. package/dist/{subagent-registry-Jwg44JMf.js → subagent-registry-CZah-77E.js} +24597 -24260
  166. package/dist/{update-cli-C22V-tFW.js → update-cli-B21iNb0v.js} +13 -13
  167. package/dist/{update-cli-BEBDpJF4.js → update-cli-BSk-OFnI.js} +8 -8
  168. package/dist/{update-runner-le1Hcqx4.js → update-runner-B5bKK21U.js} +1 -1
  169. package/dist/{update-runner-BQg__DB5.js → update-runner-DPwXk0QQ.js} +1 -1
  170. package/dist/{web-BSs2eYJa.js → web-CB23XCVF.js} +8 -8
  171. package/dist/{web-CviyqTad.js → web-DSgWG_2m.js} +1 -1
  172. package/dist/{web-KYh3LgI0.js → web-DVvZ_mDC.js} +6 -6
  173. package/dist/{web-DajtZMaX.js → web-mkZpWfVs.js} +1 -1
  174. package/package.json +1 -1
  175. package/dist/plugin-sdk/web-BVg5EjiY.js +0 -65
  176. /package/dist/{delivery-queue-Df1uodAG.js → delivery-queue-CxuV9EeG.js} +0 -0
  177. /package/dist/{outbound-attachment-D_QuKi8U.js → outbound-attachment-mQQiYZ3C.js} +0 -0
  178. /package/dist/{session-cost-usage-BG4AXrGN.js → session-cost-usage-UxUgrslM.js} +0 -0
@@ -1,16 +1,16 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
2
2
  import { m as normalizeOptionalAccountId, p as normalizeAccountId } from "./session-key-C_0eELjb.js";
3
3
  import { s as resolveStateDir } from "./paths-DR2yt_mP.js";
4
- import { r as normalizeChannelId, t as getChannelPlugin } from "./plugins-BbAvhC25.js";
5
- import { c as getActivePluginRegistry, v as createInternalHookEvent, y as triggerInternalHook } from "./registry--_pGht6S.js";
6
- import { t as createSubsystemLogger } from "./subsystem-Coz2AgU8.js";
7
- import { t as getAgentScopedMediaLocalRoots } from "./local-roots-Ckk1QfzI.js";
8
- import { c as resolveChunkMode, i as chunkMarkdownTextWithMode, l as resolveTextChunkLimit, n as chunkByParagraph, p as parseFenceSpans } from "./chunk-jvk9axTQ.js";
9
- import { n as resolveMarkdownTableMode } from "./markdown-tables-Dfaqilz6.js";
10
- import { a as isSilentReplyText, n as SILENT_REPLY_TOKEN } from "./tokens-CWMflosr.js";
11
- import { d as getChannelDock } from "./thinking-DCNUIAHY.js";
12
- import { dt as appendAssistantMessageToSessionTranscript, ft as resolveMirroredTranscriptText, i as isMessagingToolDuplicate } from "./pi-embedded-helpers-BveUP4hk.js";
13
- import { a as markdownToSignalTextChunks, t as sendMessageSignal } from "./send-BMfJIhCk.js";
4
+ import { r as normalizeChannelId, t as getChannelPlugin } from "./plugins-BNByVCIH.js";
5
+ import { c as getActivePluginRegistry, v as createInternalHookEvent, y as triggerInternalHook } from "./registry-D0xTnUWt.js";
6
+ import { t as createSubsystemLogger } from "./subsystem-B2uDN3TV.js";
7
+ import { t as getAgentScopedMediaLocalRoots } from "./local-roots-BHLNSI8U.js";
8
+ import { c as resolveChunkMode, i as chunkMarkdownTextWithMode, l as resolveTextChunkLimit, n as chunkByParagraph, p as parseFenceSpans } from "./chunk-Dw2XBYXv.js";
9
+ import { n as resolveMarkdownTableMode } from "./markdown-tables-BoYFajMu.js";
10
+ import { a as isSilentReplyText, n as SILENT_REPLY_TOKEN } from "./tokens-bC3UVmVH.js";
11
+ import { d as getChannelDock } from "./thinking-CXqf7WTe.js";
12
+ import { dt as appendAssistantMessageToSessionTranscript, ft as resolveMirroredTranscriptText, i as isMessagingToolDuplicate } from "./pi-embedded-helpers-CW630epe.js";
13
+ import { a as markdownToSignalTextChunks, t as sendMessageSignal } from "./send-pYqe432l.js";
14
14
  import fs from "node:fs";
15
15
  import path from "node:path";
16
16
  import crypto from "node:crypto";
@@ -421,120 +421,6 @@ function getGlobalHookRunner() {
421
421
  return globalHookRunner;
422
422
  }
423
423
 
424
- //#endregion
425
- //#region src/channels/plugins/outbound/load.ts
426
- const cache = /* @__PURE__ */ new Map();
427
- let lastRegistry = null;
428
- function ensureCacheForRegistry(registry) {
429
- if (registry === lastRegistry) return;
430
- cache.clear();
431
- lastRegistry = registry;
432
- }
433
- async function loadChannelOutboundAdapter(id) {
434
- const registry = getActivePluginRegistry();
435
- ensureCacheForRegistry(registry);
436
- const cached = cache.get(id);
437
- if (cached) return cached;
438
- const outbound = (registry?.channels.find((entry) => entry.plugin.id === id))?.plugin.outbound;
439
- if (outbound) {
440
- cache.set(id, outbound);
441
- return outbound;
442
- }
443
- }
444
-
445
- //#endregion
446
- //#region src/infra/outbound/abort.ts
447
- /**
448
- * Utility for checking AbortSignal state and throwing a standard AbortError.
449
- */
450
- /**
451
- * Throws an AbortError if the given signal has been aborted.
452
- * Use at async checkpoints to support cancellation.
453
- */
454
- function throwIfAborted(abortSignal) {
455
- if (abortSignal?.aborted) {
456
- const err = /* @__PURE__ */ new Error("Operation aborted");
457
- err.name = "AbortError";
458
- throw err;
459
- }
460
- }
461
-
462
- //#endregion
463
- //#region src/infra/outbound/delivery-queue.ts
464
- const QUEUE_DIRNAME = "delivery-queue";
465
- const FAILED_DIRNAME = "failed";
466
- function resolveQueueDir(stateDir) {
467
- const base = stateDir ?? resolveStateDir();
468
- return path.join(base, QUEUE_DIRNAME);
469
- }
470
- function resolveFailedDir(stateDir) {
471
- return path.join(resolveQueueDir(stateDir), FAILED_DIRNAME);
472
- }
473
- /** Ensure the queue directory (and failed/ subdirectory) exist. */
474
- async function ensureQueueDir(stateDir) {
475
- const queueDir = resolveQueueDir(stateDir);
476
- await fs.promises.mkdir(queueDir, {
477
- recursive: true,
478
- mode: 448
479
- });
480
- await fs.promises.mkdir(resolveFailedDir(stateDir), {
481
- recursive: true,
482
- mode: 448
483
- });
484
- return queueDir;
485
- }
486
- async function enqueueDelivery(params, stateDir) {
487
- const queueDir = await ensureQueueDir(stateDir);
488
- const id = crypto.randomUUID();
489
- const entry = {
490
- id,
491
- enqueuedAt: Date.now(),
492
- channel: params.channel,
493
- to: params.to,
494
- accountId: params.accountId,
495
- payloads: params.payloads,
496
- threadId: params.threadId,
497
- replyToId: params.replyToId,
498
- bestEffort: params.bestEffort,
499
- gifPlayback: params.gifPlayback,
500
- silent: params.silent,
501
- mirror: params.mirror,
502
- retryCount: 0
503
- };
504
- const filePath = path.join(queueDir, `${id}.json`);
505
- const tmp = `${filePath}.${process.pid}.tmp`;
506
- const json = JSON.stringify(entry, null, 2);
507
- await fs.promises.writeFile(tmp, json, {
508
- encoding: "utf-8",
509
- mode: 384
510
- });
511
- await fs.promises.rename(tmp, filePath);
512
- return id;
513
- }
514
- /** Remove a successfully delivered entry from the queue. */
515
- async function ackDelivery(id, stateDir) {
516
- const filePath = path.join(resolveQueueDir(stateDir), `${id}.json`);
517
- try {
518
- await fs.promises.unlink(filePath);
519
- } catch (err) {
520
- if ((err && typeof err === "object" && "code" in err ? String(err.code) : null) !== "ENOENT") throw err;
521
- }
522
- }
523
- /** Update a queue entry after a failed delivery attempt. */
524
- async function failDelivery(id, error, stateDir) {
525
- const filePath = path.join(resolveQueueDir(stateDir), `${id}.json`);
526
- const raw = await fs.promises.readFile(filePath, "utf-8");
527
- const entry = JSON.parse(raw);
528
- entry.retryCount += 1;
529
- entry.lastError = error;
530
- const tmp = `${filePath}.${process.pid}.tmp`;
531
- await fs.promises.writeFile(tmp, JSON.stringify(entry, null, 2), {
532
- encoding: "utf-8",
533
- mode: 384
534
- });
535
- await fs.promises.rename(tmp, filePath);
536
- }
537
-
538
424
  //#endregion
539
425
  //#region src/utils/directive-tags.ts
540
426
  const AUDIO_TAG_RE = /\[\[\s*audio_as_voice\s*\]\]/gi;
@@ -783,6 +669,120 @@ function hashSignature(value) {
783
669
  return (hash >>> 0).toString(36);
784
670
  }
785
671
 
672
+ //#endregion
673
+ //#region src/channels/plugins/outbound/load.ts
674
+ const cache = /* @__PURE__ */ new Map();
675
+ let lastRegistry = null;
676
+ function ensureCacheForRegistry(registry) {
677
+ if (registry === lastRegistry) return;
678
+ cache.clear();
679
+ lastRegistry = registry;
680
+ }
681
+ async function loadChannelOutboundAdapter(id) {
682
+ const registry = getActivePluginRegistry();
683
+ ensureCacheForRegistry(registry);
684
+ const cached = cache.get(id);
685
+ if (cached) return cached;
686
+ const outbound = (registry?.channels.find((entry) => entry.plugin.id === id))?.plugin.outbound;
687
+ if (outbound) {
688
+ cache.set(id, outbound);
689
+ return outbound;
690
+ }
691
+ }
692
+
693
+ //#endregion
694
+ //#region src/infra/outbound/abort.ts
695
+ /**
696
+ * Utility for checking AbortSignal state and throwing a standard AbortError.
697
+ */
698
+ /**
699
+ * Throws an AbortError if the given signal has been aborted.
700
+ * Use at async checkpoints to support cancellation.
701
+ */
702
+ function throwIfAborted(abortSignal) {
703
+ if (abortSignal?.aborted) {
704
+ const err = /* @__PURE__ */ new Error("Operation aborted");
705
+ err.name = "AbortError";
706
+ throw err;
707
+ }
708
+ }
709
+
710
+ //#endregion
711
+ //#region src/infra/outbound/delivery-queue.ts
712
+ const QUEUE_DIRNAME = "delivery-queue";
713
+ const FAILED_DIRNAME = "failed";
714
+ function resolveQueueDir(stateDir) {
715
+ const base = stateDir ?? resolveStateDir();
716
+ return path.join(base, QUEUE_DIRNAME);
717
+ }
718
+ function resolveFailedDir(stateDir) {
719
+ return path.join(resolveQueueDir(stateDir), FAILED_DIRNAME);
720
+ }
721
+ /** Ensure the queue directory (and failed/ subdirectory) exist. */
722
+ async function ensureQueueDir(stateDir) {
723
+ const queueDir = resolveQueueDir(stateDir);
724
+ await fs.promises.mkdir(queueDir, {
725
+ recursive: true,
726
+ mode: 448
727
+ });
728
+ await fs.promises.mkdir(resolveFailedDir(stateDir), {
729
+ recursive: true,
730
+ mode: 448
731
+ });
732
+ return queueDir;
733
+ }
734
+ async function enqueueDelivery(params, stateDir) {
735
+ const queueDir = await ensureQueueDir(stateDir);
736
+ const id = crypto.randomUUID();
737
+ const entry = {
738
+ id,
739
+ enqueuedAt: Date.now(),
740
+ channel: params.channel,
741
+ to: params.to,
742
+ accountId: params.accountId,
743
+ payloads: params.payloads,
744
+ threadId: params.threadId,
745
+ replyToId: params.replyToId,
746
+ bestEffort: params.bestEffort,
747
+ gifPlayback: params.gifPlayback,
748
+ silent: params.silent,
749
+ mirror: params.mirror,
750
+ retryCount: 0
751
+ };
752
+ const filePath = path.join(queueDir, `${id}.json`);
753
+ const tmp = `${filePath}.${process.pid}.tmp`;
754
+ const json = JSON.stringify(entry, null, 2);
755
+ await fs.promises.writeFile(tmp, json, {
756
+ encoding: "utf-8",
757
+ mode: 384
758
+ });
759
+ await fs.promises.rename(tmp, filePath);
760
+ return id;
761
+ }
762
+ /** Remove a successfully delivered entry from the queue. */
763
+ async function ackDelivery(id, stateDir) {
764
+ const filePath = path.join(resolveQueueDir(stateDir), `${id}.json`);
765
+ try {
766
+ await fs.promises.unlink(filePath);
767
+ } catch (err) {
768
+ if ((err && typeof err === "object" && "code" in err ? String(err.code) : null) !== "ENOENT") throw err;
769
+ }
770
+ }
771
+ /** Update a queue entry after a failed delivery attempt. */
772
+ async function failDelivery(id, error, stateDir) {
773
+ const filePath = path.join(resolveQueueDir(stateDir), `${id}.json`);
774
+ const raw = await fs.promises.readFile(filePath, "utf-8");
775
+ const entry = JSON.parse(raw);
776
+ entry.retryCount += 1;
777
+ entry.lastError = error;
778
+ const tmp = `${filePath}.${process.pid}.tmp`;
779
+ await fs.promises.writeFile(tmp, JSON.stringify(entry, null, 2), {
780
+ encoding: "utf-8",
781
+ mode: 384
782
+ });
783
+ await fs.promises.rename(tmp, filePath);
784
+ }
785
+
786
786
  //#endregion
787
787
  //#region src/auto-reply/reply/reply-tags.ts
788
788
  function extractReplyToTag(text, currentMessageId) {
@@ -1332,4 +1332,4 @@ async function deliverOutboundPayloadsCore(params) {
1332
1332
  }
1333
1333
 
1334
1334
  //#endregion
1335
- export { getGlobalHookRunner as C, throwIfAborted as S, resolveChannelMediaMaxBytes as T, normalizeTargetForProvider as _, normalizeOutboundPayloadsForJson as a, splitMediaFromOutput as b, applyReplyThreading as c, isRenderablePayload as d, shouldSuppressMessagingToolReplies as f, normalizeChannelTargetInput as g, buildTargetResolverSignature as h, normalizeOutboundPayloads as i, filterMessagingToolDuplicates as l, resolveReplyToMode as m, deliver_exports as n, normalizeReplyPayloadsForDelivery as o, createReplyToModeFilterForChannel as p, formatOutboundPayloadLog as r, applyReplyTagsToPayload as s, deliverOutboundPayloads as t, filterMessagingToolMediaDuplicates as u, parseReplyDirectives as v, initializeGlobalHookRunner as w, parseInlineDirectives as x, MEDIA_TOKEN_RE as y };
1335
+ export { getGlobalHookRunner as C, parseInlineDirectives as S, resolveChannelMediaMaxBytes as T, normalizeChannelTargetInput as _, normalizeOutboundPayloadsForJson as a, MEDIA_TOKEN_RE as b, applyReplyThreading as c, isRenderablePayload as d, shouldSuppressMessagingToolReplies as f, buildTargetResolverSignature as g, throwIfAborted as h, normalizeOutboundPayloads as i, filterMessagingToolDuplicates as l, resolveReplyToMode as m, deliver_exports as n, normalizeReplyPayloadsForDelivery as o, createReplyToModeFilterForChannel as p, formatOutboundPayloadLog as r, applyReplyTagsToPayload as s, deliverOutboundPayloads as t, filterMessagingToolMediaDuplicates as u, normalizeTargetForProvider as v, initializeGlobalHookRunner as w, splitMediaFromOutput as x, parseReplyDirectives as y };
@@ -1,5 +1,5 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
2
- import { t as createSubsystemLogger } from "./subsystem-Coz2AgU8.js";
2
+ import { t as createSubsystemLogger } from "./subsystem-B2uDN3TV.js";
3
3
  import { i as pruneDiagnosticSessionStates, r as getDiagnosticSessionState, t as diagnosticSessionStates } from "./diagnostic-session-state-Wd5tNeQG.js";
4
4
 
5
5
  //#region src/infra/diagnostic-events.ts
@@ -1,9 +1,9 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
2
- import { D as isRecord, I as shortenHomeInString } from "./registry--_pGht6S.js";
3
- import { n as loadConfig } from "./config-DDkdiUOR.js";
4
- import { B as resolveSymiAgentDir, G as normalizeSecretInput, S as getApiKeyForModel, _ as resolveImplicitBedrockProvider, g as normalizeProviders, v as resolveImplicitCopilotProvider, w as requireApiKey, y as resolveImplicitProviders } from "./model-selection-OpU8HN50.js";
2
+ import { D as isRecord, I as shortenHomeInString } from "./registry-D0xTnUWt.js";
3
+ import { n as loadConfig } from "./config-KlTNfkFF.js";
4
+ import { B as resolveSymiAgentDir, G as normalizeSecretInput, S as getApiKeyForModel, _ as resolveImplicitBedrockProvider, g as normalizeProviders, v as resolveImplicitCopilotProvider, w as requireApiKey, y as resolveImplicitProviders } from "./model-selection-CsbEfrS0.js";
5
5
  import { n as redactToolDetail } from "./redact-DPnDWsnT.js";
6
- import { N as sanitizeUserFacingText } from "./pi-embedded-helpers-BveUP4hk.js";
6
+ import { N as sanitizeUserFacingText } from "./pi-embedded-helpers-CW630epe.js";
7
7
  import { n as discoverModels, t as discoverAuthStorage } from "./pi-model-discovery-LbcEa65a.js";
8
8
  import path from "node:path";
9
9
  import fs from "node:fs/promises";
@@ -1,4 +1,4 @@
1
- import { E as runExec } from "./agent-scope-C3gMMKCU.js";
1
+ import { E as runExec } from "./agent-scope-CYYpcO9W.js";
2
2
  import { constants } from "node:fs";
3
3
  import path from "node:path";
4
4
  import os from "node:os";
@@ -1,68 +1,68 @@
1
1
  import { f as DEFAULT_ACCOUNT_ID, p as normalizeAccountId } from "./session-key-C_0eELjb.js";
2
- import { _ as createAccountListHelpers, i as resolveWhatsAppAuthDir, n as resolveDefaultWhatsAppAccountId, r as resolveWhatsAppAccount, t as listWhatsAppAccountIds } from "./accounts-D9zGZU5t.js";
3
- import { $ as clearHistoryEntriesIfEnabled, A as resolveDiscordUserAllowlist, B as logTypingFailure, C as stripMarkdown, Ct as unbindThreadBindingsBySessionKey, D as resolveSlackUserAllowlist, Dt as BLUEBUBBLES_ACTION_NAMES, Et as BLUEBUBBLES_ACTIONS, F as stringEnum, G as resolveMentionGating, H as removeAckReactionAfterReply, I as recordInboundSession, J as summarizeMapping, K as resolveMentionGatingWithBypass, L as resolveControlCommandGate, M as collectDiscordAuditChannelIds, N as formatDocsLink, O as resolveSlackChannelAllowlist, Ot as BLUEBUBBLES_GROUP_ACTIONS, P as optionalStringEnum, Q as clearHistoryEntries, R as logAckFailure, S as processLineMessage, St as listThreadBindingsBySessionKey, T as attachFooterText, Tt as resolveAllowlistMatchSimple, U as shouldAckReaction, V as createTypingCallbacks, W as shouldAckReactionForWhatsApp, Y as DEFAULT_GROUP_HISTORY_LIMIT, Z as buildPendingHistoryContextFromMap, _t as listDevicePairing, a as normalizeAccountId$1, at as isWSLEnv, bt as registerPluginHttpRoute, ct as DEFAULT_WEBHOOK_MAX_BODY_BYTES, dt as isRequestBodyLimitError, et as recordPendingHistoryEntry, ft as readJsonBodyWithLimit, gt as approveDevicePairing, ht as createDedupeCache, i as listLineAccountIds, it as isWSL2Sync, j as resolveDiscordChannelAllowlist, k as detectBinary, kt as CHANNEL_MESSAGE_ACTION_NAMES, lt as RequestBodyLimitError, mt as requestBodyErrorToText, o as resolveDefaultLineAccountId, ot as isWSLSync, pt as readRequestBodyWithLimit, q as mergeAllowlist, s as resolveLineAccount, st as DEFAULT_WEBHOOK_BODY_TIMEOUT_MS, tt as recordPendingHistoryEntryIfEnabled, ut as installRequestBodyLimitGuard, vt as rejectDevicePairing, w as createReceiptCard, wt as formatAllowlistMatchMeta, x as hasMarkdownToConvert, xt as autoBindSpawnedDiscordSubagent, yt as extractToolSend, z as logInboundDrop } from "./reply-CSgeVqcV.js";
2
+ import { _ as createAccountListHelpers, i as resolveWhatsAppAuthDir, n as resolveDefaultWhatsAppAccountId, r as resolveWhatsAppAccount, t as listWhatsAppAccountIds } from "./accounts-Ddm33hQm.js";
3
+ import { $ as clearHistoryEntriesIfEnabled, A as resolveDiscordUserAllowlist, B as logTypingFailure, C as stripMarkdown, Ct as unbindThreadBindingsBySessionKey, D as resolveSlackUserAllowlist, Dt as BLUEBUBBLES_ACTION_NAMES, Et as BLUEBUBBLES_ACTIONS, F as stringEnum, G as resolveMentionGating, H as removeAckReactionAfterReply, I as recordInboundSession, J as summarizeMapping, K as resolveMentionGatingWithBypass, L as resolveControlCommandGate, M as collectDiscordAuditChannelIds, N as formatDocsLink, O as resolveSlackChannelAllowlist, Ot as BLUEBUBBLES_GROUP_ACTIONS, P as optionalStringEnum, Q as clearHistoryEntries, R as logAckFailure, S as processLineMessage, St as listThreadBindingsBySessionKey, T as attachFooterText, Tt as resolveAllowlistMatchSimple, U as shouldAckReaction, V as createTypingCallbacks, W as shouldAckReactionForWhatsApp, Y as DEFAULT_GROUP_HISTORY_LIMIT, Z as buildPendingHistoryContextFromMap, _t as listDevicePairing, a as normalizeAccountId$1, at as isWSLEnv, bt as registerPluginHttpRoute, ct as DEFAULT_WEBHOOK_MAX_BODY_BYTES, dt as isRequestBodyLimitError, et as recordPendingHistoryEntry, ft as readJsonBodyWithLimit, gt as approveDevicePairing, ht as createDedupeCache, i as listLineAccountIds, it as isWSL2Sync, j as resolveDiscordChannelAllowlist, k as detectBinary, kt as CHANNEL_MESSAGE_ACTION_NAMES, lt as RequestBodyLimitError, mt as requestBodyErrorToText, o as resolveDefaultLineAccountId, ot as isWSLSync, pt as readRequestBodyWithLimit, q as mergeAllowlist, s as resolveLineAccount, st as DEFAULT_WEBHOOK_BODY_TIMEOUT_MS, tt as recordPendingHistoryEntryIfEnabled, ut as installRequestBodyLimitGuard, vt as rejectDevicePairing, w as createReceiptCard, wt as formatAllowlistMatchMeta, x as hasMarkdownToConvert, xt as autoBindSpawnedDiscordSubagent, yt as extractToolSend, z as logInboundDrop } from "./reply-DpnW-aMb.js";
4
4
  import "./paths-DR2yt_mP.js";
5
5
  import "./github-copilot-token-D9X2phUj.js";
6
- import { D as resolveSlackAccount, E as resolveDefaultSlackAccountId, F as resolveDiscordAccount, M as listDiscordAccountIds, O as resolveSlackReplyToMode, P as resolveDefaultDiscordAccountId, S as resolveTelegramAccount, T as listSlackAccountIds, _ as normalizeWhatsAppTarget, a as listDiscordDirectoryPeersFromConfig, b as listTelegramAccountIds, c as listTelegramDirectoryGroupsFromConfig, d as listWhatsAppDirectoryPeersFromConfig, f as looksLikeSlackTargetId, g as isWhatsAppGroupJid, i as listDiscordDirectoryGroupsFromConfig, l as listTelegramDirectoryPeersFromConfig, o as listSlackDirectoryGroupsFromConfig, p as normalizeSlackMessagingTarget, s as listSlackDirectoryPeersFromConfig, u as listWhatsAppDirectoryGroupsFromConfig, w as listEnabledSlackAccounts, x as resolveDefaultTelegramAccountId } from "./plugins-BbAvhC25.js";
6
+ import { D as resolveSlackAccount, E as resolveDefaultSlackAccountId, F as resolveDiscordAccount, M as listDiscordAccountIds, O as resolveSlackReplyToMode, P as resolveDefaultDiscordAccountId, S as resolveTelegramAccount, T as listSlackAccountIds, _ as normalizeWhatsAppTarget, a as listDiscordDirectoryPeersFromConfig, b as listTelegramAccountIds, c as listTelegramDirectoryGroupsFromConfig, d as listWhatsAppDirectoryPeersFromConfig, f as looksLikeSlackTargetId, g as isWhatsAppGroupJid, i as listDiscordDirectoryGroupsFromConfig, l as listTelegramDirectoryPeersFromConfig, o as listSlackDirectoryGroupsFromConfig, p as normalizeSlackMessagingTarget, s as listSlackDirectoryPeersFromConfig, u as listWhatsAppDirectoryGroupsFromConfig, w as listEnabledSlackAccounts, x as resolveDefaultTelegramAccountId } from "./plugins-BNByVCIH.js";
7
7
  import "./fetch-CUNoPTKm.js";
8
- import { A as normalizeE164, D as isRecord, F as safeParseJson, R as sleep, T as escapeRegExp, b as CONFIG_DIR, f as normalizePluginHttpPath, i as getChatChannelMeta, it as registerLogTransport, j as pathExists, x as clamp } from "./registry--_pGht6S.js";
9
- import "./retry-ilSJqnz9.js";
10
- import { Dt as resolveChannelEntryMatch, Et as normalizeChannelSlug, Ot as resolveChannelEntryMatchWithFallback, Tt as buildChannelKeyCandidates, dt as normalizeDiscordSlug, it as parseDiscordTarget, kt as resolveNestedAllowlistDecision } from "./send-Bxdu6ZZy.js";
11
- import { A as MarkdownConfigSchema, D as DmConfigSchema, E as BlockStreamingCoalesceSchema, F as TtsProviderSchema, I as normalizeAllowFrom, L as requireOpenAllowFrom, M as TtsAutoSchema, N as TtsConfigSchema, O as DmPolicySchema, P as TtsModeSchema, T as ToolPolicySchema, c as WhatsAppConfigSchema, d as IMessageConfigSchema, f as MSTeamsConfigSchema, h as TelegramConfigSchema, j as MarkdownTableModeSchema, k as GroupPolicySchema, l as DiscordConfigSchema, m as SlackConfigSchema, p as SignalConfigSchema, u as GoogleChatConfigSchema } from "./config-DDkdiUOR.js";
12
- import { n as stripAnsi } from "./subsystem-Coz2AgU8.js";
13
- import { r as isTruthyEnvValue, t as formatCliCommand } from "./command-format-DSdvQ_M5.js";
14
- import { H as withFileLock, V as acquireFileLock } from "./model-selection-OpU8HN50.js";
15
- import { T as runCommandWithTimeout } from "./agent-scope-C3gMMKCU.js";
16
- import "./manifest-registry-B3ugY9-f.js";
8
+ import { A as normalizeE164, D as isRecord, F as safeParseJson, R as sleep, T as escapeRegExp, b as CONFIG_DIR, f as normalizePluginHttpPath, i as getChatChannelMeta, it as registerLogTransport, j as pathExists, x as clamp } from "./registry-D0xTnUWt.js";
9
+ import "./retry-CwQ_iIj8.js";
10
+ import { Dt as resolveChannelEntryMatch, Et as normalizeChannelSlug, Ot as resolveChannelEntryMatchWithFallback, Tt as buildChannelKeyCandidates, dt as normalizeDiscordSlug, it as parseDiscordTarget, kt as resolveNestedAllowlistDecision } from "./send-CjOBB3Vo.js";
11
+ import { A as MarkdownConfigSchema, D as DmConfigSchema, E as BlockStreamingCoalesceSchema, F as TtsProviderSchema, I as normalizeAllowFrom, L as requireOpenAllowFrom, M as TtsAutoSchema, N as TtsConfigSchema, O as DmPolicySchema, P as TtsModeSchema, T as ToolPolicySchema, c as WhatsAppConfigSchema, d as IMessageConfigSchema, f as MSTeamsConfigSchema, h as TelegramConfigSchema, j as MarkdownTableModeSchema, k as GroupPolicySchema, l as DiscordConfigSchema, m as SlackConfigSchema, p as SignalConfigSchema, u as GoogleChatConfigSchema } from "./config-KlTNfkFF.js";
12
+ import { n as stripAnsi } from "./subsystem-B2uDN3TV.js";
13
+ import { r as isTruthyEnvValue, t as formatCliCommand } from "./command-format-GKSevep4.js";
14
+ import { H as withFileLock, V as acquireFileLock } from "./model-selection-CsbEfrS0.js";
15
+ import { T as runCommandWithTimeout } from "./agent-scope-CYYpcO9W.js";
16
+ import "./manifest-registry-CPnHl_K3.js";
17
17
  import "./redact-DPnDWsnT.js";
18
18
  import { n as formatErrorMessage } from "./errors-Bv8oZiTO.js";
19
- import "./channel-activity-Ji7f0gqq.js";
20
- import { c as detectMime, l as extensionForMime, u as getFileExtension } from "./image-ops-Bnp6LXEx.js";
19
+ import "./channel-activity-DoC1xtDu.js";
20
+ import { c as detectMime, l as extensionForMime, u as getFileExtension } from "./image-ops-BlQR__MN.js";
21
21
  import { a as isBlockedHostnameOrIp, i as isBlockedHostname, o as isPrivateIpAddress, t as SsrFBlockedError } from "./ssrf-DKZ8eBrk.js";
22
- import { o as fetchWithSsrFGuard } from "./local-roots-Ckk1QfzI.js";
23
- import { a as loadWebMedia } from "./ir-Fb3qpcis.js";
24
- import { u as chunkTextByBreakResolver } from "./chunk-jvk9axTQ.js";
25
- import "./message-channel-BdI5Ra9S.js";
26
- import "./bindings-BbwoUGPx.js";
27
- import "./markdown-tables-Dfaqilz6.js";
22
+ import { o as fetchWithSsrFGuard } from "./local-roots-BHLNSI8U.js";
23
+ import { a as loadWebMedia } from "./ir-BJ6BHE5b.js";
24
+ import { u as chunkTextByBreakResolver } from "./chunk-Dw2XBYXv.js";
25
+ import "./message-channel-COTAJzHd.js";
26
+ import "./bindings-C7hRtgYW.js";
27
+ import "./markdown-tables-BoYFajMu.js";
28
28
  import "./render-BiJZ5W4Z.js";
29
- import "./tables-DR0NmBeH.js";
30
- import { d as resolveServicePrefixedAllowTarget, f as resolveServicePrefixedTarget, l as parseChatAllowTargetPrefixes, m as isAllowedParsedChatSender, p as formatAllowFromLowercase, s as normalizeIMessageHandle, u as parseChatTargetPrefixesOrThrow } from "./send-BHbXh8Ly.js";
31
- import "./tool-images-D7Lno-TE.js";
32
- import { a as createActionGate, c as jsonResult, d as readReactionParams, m as readStringParam, n as missingTargetError, u as readNumberParam } from "./target-errors-B7YyMnIi.js";
33
- import { s as parseSlackBlocksInput } from "./send-BtANzsAo.js";
34
- import { it as writeJsonFileAtomically, nt as toLocationContext, rt as readJsonFileWithFallback, tt as formatLocationText } from "./send-D6LMZJ_h.js";
35
- import { b as withTempDownloadPath, y as buildRandomTempFilePath } from "./runner-BVqnEfNe.js";
36
- import { a as resolveAckReaction, n as createReplyPrefixOptions, t as createReplyPrefixContext } from "./reply-prefix-BHuV5t70.js";
37
- import { a as isSilentReplyText, n as SILENT_REPLY_TOKEN } from "./tokens-CWMflosr.js";
38
- import "./skill-commands-DCNXVERE.js";
39
- import "./skills-B1GeRYlu.js";
40
- import { N as rawDataToString } from "./chrome-C7c_0I5M.js";
41
- import { C as resolveSlackGroupRequireMention, D as resolveWhatsAppGroupRequireMention, E as resolveTelegramGroupToolPolicy, L as resolveToolsBySender, N as buildSlackThreadingToolContext, O as resolveWhatsAppGroupToolPolicy, S as resolveIMessageGroupToolPolicy, T as resolveTelegramGroupRequireMention, _ as resolveDiscordGroupRequireMention, b as resolveGoogleChatGroupToolPolicy, g as resolveBlueBubblesGroupToolPolicy, h as resolveBlueBubblesGroupRequireMention, m as normalizeSignalMessagingTarget, p as looksLikeSignalTargetId, v as resolveDiscordGroupToolPolicy, w as resolveSlackGroupToolPolicy, x as resolveIMessageGroupRequireMention, y as resolveGoogleChatGroupRequireMention } from "./thinking-DCNUIAHY.js";
42
- import { n as resolveDefaultIMessageAccountId, r as resolveIMessageAccount, t as listIMessageAccountIds } from "./accounts-Dtszw3Zn.js";
43
- import { i as resolveSignalAccount, n as listSignalAccountIds, r as resolveDefaultSignalAccountId } from "./accounts-BToL3HlP.js";
44
- import { T as resolveChannelMediaMaxBytes } from "./deliver-BUns_L9e.js";
45
- import "./pi-embedded-helpers-BveUP4hk.js";
29
+ import "./tables-DNwXwNFa.js";
30
+ import { d as resolveServicePrefixedAllowTarget, f as resolveServicePrefixedTarget, l as parseChatAllowTargetPrefixes, m as isAllowedParsedChatSender, p as formatAllowFromLowercase, s as normalizeIMessageHandle, u as parseChatTargetPrefixesOrThrow } from "./send-C5h_YxNb.js";
31
+ import "./tool-images-HJ2sfZDV.js";
32
+ import { a as createActionGate, c as jsonResult, d as readReactionParams, m as readStringParam, n as missingTargetError, u as readNumberParam } from "./target-errors-Paro1BjP.js";
33
+ import { s as parseSlackBlocksInput } from "./send-B2CEnVLL.js";
34
+ import { it as writeJsonFileAtomically, nt as toLocationContext, rt as readJsonFileWithFallback, tt as formatLocationText } from "./send-CRsR8-vO.js";
35
+ import { b as withTempDownloadPath, y as buildRandomTempFilePath } from "./runner-CGBT7tgF.js";
36
+ import { a as resolveAckReaction, n as createReplyPrefixOptions, t as createReplyPrefixContext } from "./reply-prefix-uxfMZW4p.js";
37
+ import { a as isSilentReplyText, n as SILENT_REPLY_TOKEN } from "./tokens-bC3UVmVH.js";
38
+ import "./skill-commands-ff_01_r3.js";
39
+ import "./skills-_yTP47Cd.js";
40
+ import { N as rawDataToString } from "./chrome-B7RdxmJ0.js";
41
+ import { C as resolveSlackGroupRequireMention, D as resolveWhatsAppGroupRequireMention, E as resolveTelegramGroupToolPolicy, L as resolveToolsBySender, N as buildSlackThreadingToolContext, O as resolveWhatsAppGroupToolPolicy, S as resolveIMessageGroupToolPolicy, T as resolveTelegramGroupRequireMention, _ as resolveDiscordGroupRequireMention, b as resolveGoogleChatGroupToolPolicy, g as resolveBlueBubblesGroupToolPolicy, h as resolveBlueBubblesGroupRequireMention, m as normalizeSignalMessagingTarget, p as looksLikeSignalTargetId, v as resolveDiscordGroupToolPolicy, w as resolveSlackGroupToolPolicy, x as resolveIMessageGroupRequireMention, y as resolveGoogleChatGroupRequireMention } from "./thinking-CXqf7WTe.js";
42
+ import { n as resolveDefaultIMessageAccountId, r as resolveIMessageAccount, t as listIMessageAccountIds } from "./accounts-s-AdhXVR.js";
43
+ import { i as resolveSignalAccount, n as listSignalAccountIds, r as resolveDefaultSignalAccountId } from "./accounts-BtaOa4z_.js";
44
+ import { T as resolveChannelMediaMaxBytes } from "./deliver-BZ99UKQq.js";
45
+ import "./pi-embedded-helpers-CW630epe.js";
46
46
  import "./paths-A0xdf3yk.js";
47
- import { h as onDiagnosticEvent, m as isDiagnosticsEnabled, p as emitDiagnosticEvent } from "./diagnostic-mFf4i4G9.js";
48
- import { n as extractOriginalFilename } from "./store-Do3t33-c.js";
49
- import { t as resolveWhatsAppOutboundTarget } from "./resolve-outbound-target-BkCUbYGV.js";
50
- import { r as resolveWhatsAppHeartbeatRecipients } from "./channel-web-ilY3YUmF.js";
51
- import "./image-BOYy0Ump.js";
47
+ import { h as onDiagnosticEvent, m as isDiagnosticsEnabled, p as emitDiagnosticEvent } from "./diagnostic-05pm5Rxi.js";
48
+ import { n as extractOriginalFilename } from "./store-BdrNabcU.js";
49
+ import { t as resolveWhatsAppOutboundTarget } from "./resolve-outbound-target-BiyAyTWz.js";
50
+ import { r as resolveWhatsAppHeartbeatRecipients } from "./channel-web-HznAZS1r.js";
51
+ import "./image-CLOPx7yW.js";
52
52
  import "./pi-model-discovery-LbcEa65a.js";
53
- import "./api-key-rotation-CVBMpnPc.js";
54
- import "./sqlite-Cq_7Cg4E.js";
53
+ import "./api-key-rotation-D_sMvI5W.js";
54
+ import "./sqlite-CxAR5ttJ.js";
55
55
  import "./diagnostic-session-state-Wd5tNeQG.js";
56
- import "./manager-DckktAQ3.js";
57
- import "./commands-registry-CQFbmUMs.js";
58
- import "./send-BMfJIhCk.js";
56
+ import "./manager-CBSBFuFz.js";
57
+ import "./commands-registry-COIaslGl.js";
58
+ import "./send-pYqe432l.js";
59
59
  import "./proxy-MquBDehr.js";
60
- import "./resolve-route-D3JH_D2N.js";
61
- import "./replies-fI39rPGa.js";
62
- import "./outbound-attachment-DnVQfTG2.js";
63
- import "./outbound-rF6G8Xpr.js";
64
- import "./session-kI0tzViQ.js";
65
- import { t as loginWeb } from "./login-Bh3DZPam.js";
60
+ import "./resolve-route-B3CCBumQ.js";
61
+ import "./replies-LLcQL3w6.js";
62
+ import "./outbound-attachment-CnslKL38.js";
63
+ import "./outbound-B0e8KdaR.js";
64
+ import "./session-BsOrxiMj.js";
65
+ import { t as loginWeb } from "./login-DQMXuxOk.js";
66
66
  import fs, { createWriteStream } from "node:fs";
67
67
  import path from "node:path";
68
68
  import os from "node:os";
@@ -1,7 +1,7 @@
1
- import { K as logVerbose, P as resolveUserPath, Y as shouldLogVerbose } from "./registry--_pGht6S.js";
2
- import { _ as maxBytesForKind, a as hasAlphaChannel, c as detectMime, l as extensionForMime, o as optimizeImageToPng, r as convertHeicToJpeg, s as resizeToJpeg, v as mediaKindFromMime, x as readLocalFileSafely, y as SafeOpenError } from "./image-ops-Bnp6LXEx.js";
3
- import { i as fetchRemoteMedia, n as getDefaultMediaLocalRoots } from "./local-roots-Ckk1QfzI.js";
4
- import { a as chunkText } from "./chunk-jvk9axTQ.js";
1
+ import { K as logVerbose, P as resolveUserPath, Y as shouldLogVerbose } from "./registry-D0xTnUWt.js";
2
+ import { _ as maxBytesForKind, a as hasAlphaChannel, c as detectMime, l as extensionForMime, o as optimizeImageToPng, r as convertHeicToJpeg, s as resizeToJpeg, v as mediaKindFromMime, x as readLocalFileSafely, y as SafeOpenError } from "./image-ops-BlQR__MN.js";
3
+ import { i as fetchRemoteMedia, n as getDefaultMediaLocalRoots } from "./local-roots-BHLNSI8U.js";
4
+ import { a as chunkText } from "./chunk-Dw2XBYXv.js";
5
5
  import path from "node:path";
6
6
  import fs from "node:fs/promises";
7
7
  import { fileURLToPath } from "node:url";
@@ -1,8 +1,8 @@
1
1
  import { s as resolveStateDir } from "./paths-DR2yt_mP.js";
2
2
  import { t as bindAbortRelay } from "./fetch-timeout-ChYuW7LE.js";
3
- import { ut as resolvePreferredSymiTmpDir } from "./registry--_pGht6S.js";
4
- import { j as logWarn, s as resolveAgentWorkspaceDir } from "./agent-scope-C3gMMKCU.js";
5
- import { c as detectMime, l as extensionForMime } from "./image-ops-Bnp6LXEx.js";
3
+ import { ut as resolvePreferredSymiTmpDir } from "./registry-D0xTnUWt.js";
4
+ import { j as logWarn, s as resolveAgentWorkspaceDir } from "./agent-scope-CYYpcO9W.js";
5
+ import { c as detectMime, l as extensionForMime } from "./image-ops-BlQR__MN.js";
6
6
  import { n as closeDispatcher, r as createPinnedDispatcher, s as resolvePinnedHostnameWithPolicy, t as SsrFBlockedError } from "./ssrf-DKZ8eBrk.js";
7
7
  import path from "node:path";
8
8
 
@@ -1,11 +1,11 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
2
- import { c as logoutWeb, r as resolveWhatsAppAccount } from "./accounts-D9zGZU5t.js";
3
- import { U as danger, W as info, X as success } from "./registry--_pGht6S.js";
4
- import { n as loadConfig } from "./config-DDkdiUOR.js";
5
- import { i as defaultRuntime } from "./subsystem-Coz2AgU8.js";
6
- import { t as formatCliCommand } from "./command-format-DSdvQ_M5.js";
7
- import { A as logInfo } from "./agent-scope-C3gMMKCU.js";
8
- import { i as waitForWaConnection, n as formatError, t as createWaSocket } from "./session-kI0tzViQ.js";
2
+ import { c as logoutWeb, r as resolveWhatsAppAccount } from "./accounts-Ddm33hQm.js";
3
+ import { U as danger, W as info, X as success } from "./registry-D0xTnUWt.js";
4
+ import { n as loadConfig } from "./config-KlTNfkFF.js";
5
+ import { i as defaultRuntime } from "./subsystem-B2uDN3TV.js";
6
+ import { t as formatCliCommand } from "./command-format-GKSevep4.js";
7
+ import { A as logInfo } from "./agent-scope-CYYpcO9W.js";
8
+ import { i as waitForWaConnection, n as formatError, t as createWaSocket } from "./session-BsOrxiMj.js";
9
9
  import { DisconnectReason } from "@whiskeysockets/baileys";
10
10
 
11
11
  //#region src/web/login.ts
@@ -1,14 +1,14 @@
1
- import { c as logoutWeb, f as readWebSelfId, g as webAuthExists, r as resolveWhatsAppAccount } from "./accounts-D9zGZU5t.js";
1
+ import { c as logoutWeb, f as readWebSelfId, g as webAuthExists, r as resolveWhatsAppAccount } from "./accounts-Ddm33hQm.js";
2
2
  import "./paths-DR2yt_mP.js";
3
3
  import "./github-copilot-token-D9X2phUj.js";
4
- import { U as danger, W as info, X as success } from "./registry--_pGht6S.js";
5
- import { n as loadConfig } from "./config-DDkdiUOR.js";
6
- import { i as defaultRuntime } from "./subsystem-Coz2AgU8.js";
7
- import "./command-format-DSdvQ_M5.js";
8
- import "./model-selection-OpU8HN50.js";
9
- import { A as logInfo } from "./agent-scope-C3gMMKCU.js";
10
- import "./manifest-registry-B3ugY9-f.js";
11
- import { i as waitForWaConnection, n as formatError, r as getStatusCode, t as createWaSocket } from "./session-kI0tzViQ.js";
4
+ import { U as danger, W as info, X as success } from "./registry-D0xTnUWt.js";
5
+ import { n as loadConfig } from "./config-KlTNfkFF.js";
6
+ import { i as defaultRuntime } from "./subsystem-B2uDN3TV.js";
7
+ import "./command-format-GKSevep4.js";
8
+ import "./model-selection-CsbEfrS0.js";
9
+ import { A as logInfo } from "./agent-scope-CYYpcO9W.js";
10
+ import "./manifest-registry-CPnHl_K3.js";
11
+ import { i as waitForWaConnection, n as formatError, r as getStatusCode, t as createWaSocket } from "./session-BsOrxiMj.js";
12
12
  import { randomUUID } from "node:crypto";
13
13
  import { DisconnectReason } from "@whiskeysockets/baileys";
14
14
  import QRCodeModule from "qrcode-terminal/vendor/QRCode/index.js";
@@ -1,16 +1,16 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
2
2
  import { s as resolveStateDir } from "./paths-DR2yt_mP.js";
3
- import { C as clampNumber, P as resolveUserPath, S as clampInt, V as truncateUtf16Safe } from "./registry--_pGht6S.js";
4
- import { n as retryAsync } from "./retry-ilSJqnz9.js";
5
- import { t as createSubsystemLogger } from "./subsystem-Coz2AgU8.js";
6
- import { r as isTruthyEnvValue } from "./command-format-DSdvQ_M5.js";
7
- import { T as resolveApiKeyForProvider, w as requireApiKey } from "./model-selection-OpU8HN50.js";
8
- import { n as resolveAgentConfig, r as resolveAgentDir, s as resolveAgentWorkspaceDir } from "./agent-scope-C3gMMKCU.js";
3
+ import { C as clampNumber, P as resolveUserPath, S as clampInt, V as truncateUtf16Safe } from "./registry-D0xTnUWt.js";
4
+ import { n as retryAsync } from "./retry-CwQ_iIj8.js";
5
+ import { t as createSubsystemLogger } from "./subsystem-B2uDN3TV.js";
6
+ import { r as isTruthyEnvValue } from "./command-format-GKSevep4.js";
7
+ import { T as resolveApiKeyForProvider, w as requireApiKey } from "./model-selection-CsbEfrS0.js";
8
+ import { n as resolveAgentConfig, r as resolveAgentDir, s as resolveAgentWorkspaceDir } from "./agent-scope-CYYpcO9W.js";
9
9
  import { n as formatErrorMessage } from "./errors-Bv8oZiTO.js";
10
10
  import { o as resolveSessionTranscriptsDirForAgent } from "./paths-A0xdf3yk.js";
11
11
  import { n as onSessionTranscriptUpdate } from "./transcript-events-x1D4Vniz.js";
12
- import { n as executeWithApiKeyRotation, r as parseGeminiAuth, t as collectProviderApiKeysForExecution } from "./api-key-rotation-CVBMpnPc.js";
13
- import { _ as statRegularFile, a as buildFileEntry, c as ensureDir, d as listMemoryFiles, f as normalizeExtraMemoryPaths, g as isFileMissingError, h as runWithConcurrency, i as sessionPathForFile, l as hashText, m as remapChunkLines, n as buildSessionEntry, o as chunkMarkdown, p as parseEmbedding, r as listSessionFilesForAgent, s as cosineSimilarity, t as requireNodeSqlite, u as isMemoryPath } from "./sqlite-Cq_7Cg4E.js";
12
+ import { n as executeWithApiKeyRotation, r as parseGeminiAuth, t as collectProviderApiKeysForExecution } from "./api-key-rotation-D_sMvI5W.js";
13
+ import { _ as statRegularFile, a as buildFileEntry, c as ensureDir, d as listMemoryFiles, f as normalizeExtraMemoryPaths, g as isFileMissingError, h as runWithConcurrency, i as sessionPathForFile, l as hashText, m as remapChunkLines, n as buildSessionEntry, o as chunkMarkdown, p as parseEmbedding, r as listSessionFilesForAgent, s as cosineSimilarity, t as requireNodeSqlite, u as isMemoryPath } from "./sqlite-CxAR5ttJ.js";
14
14
  import fs from "node:fs";
15
15
  import path from "node:path";
16
16
  import os from "node:os";
@@ -1,4 +1,4 @@
1
- import { D as isRecord, M as resolveConfigDir, P as resolveUserPath } from "./registry--_pGht6S.js";
1
+ import { D as isRecord, M as resolveConfigDir, P as resolveUserPath } from "./registry-D0xTnUWt.js";
2
2
  import fs from "node:fs";
3
3
  import path from "node:path";
4
4
  import { fileURLToPath } from "node:url";
@@ -1,6 +1,6 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
2
2
  import { p as normalizeAccountId } from "./session-key-C_0eELjb.js";
3
- import { r as normalizeChannelId } from "./plugins-BbAvhC25.js";
3
+ import { r as normalizeChannelId } from "./plugins-BNByVCIH.js";
4
4
 
5
5
  //#region src/config/markdown-tables.ts
6
6
  var markdown_tables_exports = /* @__PURE__ */ __exportAll({ resolveMarkdownTableMode: () => resolveMarkdownTableMode });
@@ -1,4 +1,4 @@
1
- import { c as getActivePluginRegistry, s as normalizeChatChannelId, t as CHANNEL_IDS } from "./registry--_pGht6S.js";
1
+ import { c as getActivePluginRegistry, s as normalizeChatChannelId, t as CHANNEL_IDS } from "./registry-D0xTnUWt.js";
2
2
 
3
3
  //#region src/gateway/protocol/client-info.ts
4
4
  const GATEWAY_CLIENT_IDS = {
@@ -2,10 +2,10 @@ import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
2
2
  import { t as DEFAULT_AGENT_ID } from "./session-key-C_0eELjb.js";
3
3
  import { o as resolveOAuthPath, s as resolveStateDir } from "./paths-DR2yt_mP.js";
4
4
  import { a as saveJsonFile, i as loadJsonFile, r as resolveCopilotApiToken, t as DEFAULT_COPILOT_API_BASE_URL } from "./github-copilot-token-D9X2phUj.js";
5
- import { P as resolveUserPath } from "./registry--_pGht6S.js";
6
- import { t as createSubsystemLogger } from "./subsystem-Coz2AgU8.js";
7
- import { r as isTruthyEnvValue, t as formatCliCommand } from "./command-format-DSdvQ_M5.js";
8
- import { a as resolveAgentModelPrimary, n as resolveAgentConfig } from "./agent-scope-C3gMMKCU.js";
5
+ import { P as resolveUserPath } from "./registry-D0xTnUWt.js";
6
+ import { t as createSubsystemLogger } from "./subsystem-B2uDN3TV.js";
7
+ import { r as isTruthyEnvValue, t as formatCliCommand } from "./command-format-GKSevep4.js";
8
+ import { a as resolveAgentModelPrimary, n as resolveAgentConfig } from "./agent-scope-CYYpcO9W.js";
9
9
  import fs from "node:fs";
10
10
  import path from "node:path";
11
11
  import { createHash, randomBytes, randomUUID } from "node:crypto";
@@ -1,12 +1,12 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
2
- import { B as toWhatsappJid, T as escapeRegExp, tt as getChildLogger } from "./registry--_pGht6S.js";
3
- import { n as loadConfig } from "./config-DDkdiUOR.js";
4
- import { t as createSubsystemLogger } from "./subsystem-Coz2AgU8.js";
2
+ import { B as toWhatsappJid, T as escapeRegExp, tt as getChildLogger } from "./registry-D0xTnUWt.js";
3
+ import { n as loadConfig } from "./config-KlTNfkFF.js";
4
+ import { t as createSubsystemLogger } from "./subsystem-B2uDN3TV.js";
5
5
  import { n as normalizePollInput } from "./polls-3WJMd-G-.js";
6
- import { a as loadWebMedia } from "./ir-Fb3qpcis.js";
7
- import { n as resolveMarkdownTableMode } from "./markdown-tables-Dfaqilz6.js";
8
- import { t as convertMarkdownTables } from "./tables-DR0NmBeH.js";
9
- import { n as requireActiveWebListener } from "./active-listener-bEk__wbB.js";
6
+ import { a as loadWebMedia } from "./ir-BJ6BHE5b.js";
7
+ import { n as resolveMarkdownTableMode } from "./markdown-tables-BoYFajMu.js";
8
+ import { t as convertMarkdownTables } from "./tables-DNwXwNFa.js";
9
+ import { n as requireActiveWebListener } from "./active-listener-BXYeALs0.js";
10
10
  import { randomUUID } from "node:crypto";
11
11
 
12
12
  //#region src/markdown/whatsapp.ts
@@ -1,5 +1,5 @@
1
- import { a as loadWebMedia } from "./ir-Fb3qpcis.js";
2
- import { i as saveMediaBuffer } from "./store-Do3t33-c.js";
1
+ import { a as loadWebMedia } from "./ir-BJ6BHE5b.js";
2
+ import { i as saveMediaBuffer } from "./store-BdrNabcU.js";
3
3
 
4
4
  //#region src/media/outbound-attachment.ts
5
5
  async function resolveOutboundAttachmentFromUrl(mediaUrl, maxBytes, options) {