@symerian/symi 2.6.0 → 2.6.2

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 (188) hide show
  1. package/dist/{agents-Bi50kp6u.js → agents-qLMWAYwU.js} +4 -4
  2. package/dist/{agents.config-BcTeP94V.js → agents.config-BfjAwFCr.js} +1 -1
  3. package/dist/{agents.config-Duce7lam.js → agents.config-BmdFH4J5.js} +1 -1
  4. package/dist/{audio-preflight-DHTaS5U1.js → audio-preflight-BVaaZWkg.js} +4 -4
  5. package/dist/{audio-preflight-C40mKAp7.js → audio-preflight-CPBOQV4I.js} +4 -4
  6. package/dist/{auth-choice-Dyq-0MNq.js → auth-choice-D1u_GPfQ.js} +1 -1
  7. package/dist/{auth-choice-BFIBR4l9.js → auth-choice-zFq3WRQ0.js} +1 -1
  8. package/dist/{banner-D50f_0qf.js → banner-DpH44qlJ.js} +1 -1
  9. package/dist/build-info.json +3 -3
  10. package/dist/bundled/boot-md/handler.js +6 -6
  11. package/dist/bundled/session-memory/handler.js +6 -6
  12. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  13. package/dist/{channel-options-BFqaanEt.js → channel-options-0iOfzVR3.js} +1 -1
  14. package/dist/{channel-options-BvBcjqyk.js → channel-options-C8tKm8re.js} +1 -1
  15. package/dist/{channel-web-BQtFg4IP.js → channel-web-DYinYBz4.js} +1 -1
  16. package/dist/{channels-cli-BuTH-iVi.js → channels-cli-93tLT17t.js} +4 -4
  17. package/dist/{channels-cli-BYFQdWnL.js → channels-cli-C8HgSMTH.js} +4 -4
  18. package/dist/{chrome-DYZwl5Gv.js → chrome-D2SKJnR7.js} +5 -5
  19. package/dist/{chrome-CDJYxX5a.js → chrome-DkaXoP36.js} +5 -5
  20. package/dist/{cli-r2L-UK6y.js → cli-BYJyRW2M.js} +1 -1
  21. package/dist/{cli-eOBlVLcC.js → cli-DapZXGSB.js} +1 -1
  22. package/dist/{command-registry-D-pwcAIW.js → command-registry-9EhYc6da.js} +9 -9
  23. package/dist/{completion-cli-DIx7KyOG.js → completion-cli-BFZv3K5D.js} +2 -2
  24. package/dist/{completion-cli-DMO2OGTm.js → completion-cli-CCeQlMlC.js} +1 -1
  25. package/dist/{config-cli-BsDxqYDU.js → config-cli-DbWMIBUz.js} +1 -1
  26. package/dist/{config-cli-seaVWVru.js → config-cli-Dv2mtIeM.js} +1 -1
  27. package/dist/{configure-BmPwuHXL.js → configure-B8zV6Hxj.js} +3 -3
  28. package/dist/{configure-CqbKA0_V.js → configure-CVQf2UJE.js} +3 -3
  29. package/dist/{deliver-BH0l3UKW.js → deliver-C-37cZUe.js} +1 -1
  30. package/dist/{deliver-dODxSv3b.js → deliver-C46-vyqg.js} +1 -1
  31. package/dist/{doctor-completion-DMjs7-Qa.js → doctor-completion-BunqvoqZ.js} +1 -1
  32. package/dist/{doctor-completion-C2IV3lKi.js → doctor-completion-CLeX1kaN.js} +1 -1
  33. package/dist/entry.js +1 -1
  34. package/dist/extensionAPI.js +6 -6
  35. package/dist/{gateway-cli-BanaeKQ_.js → gateway-cli-Co-tp-WC.js} +9 -9
  36. package/dist/{gateway-cli-C-J_s559.js → gateway-cli-DMey_29a.js} +9 -9
  37. package/dist/{glass-ui-ws-DUzp9m0D.js → glass-ui-ws-C4O227UO.js} +7 -7
  38. package/dist/{glass-ui-ws-DK7x3Tz7.js → glass-ui-ws-CKb1jTZR.js} +7 -7
  39. package/dist/{health-DK6rAOhC.js → health-CDGOsNeD.js} +1 -1
  40. package/dist/{health-BpHgCv-u.js → health-CM1asUG8.js} +1 -1
  41. package/dist/{hooks-cli-D-75G_66.js → hooks-cli-DFKB3Z6X.js} +2 -2
  42. package/dist/{hooks-cli-Cin_3tFg.js → hooks-cli-Tx0TzSju.js} +2 -2
  43. package/dist/{image-CXu8W39c.js → image-CuzFLQWC.js} +1 -1
  44. package/dist/{image-CHzdaNJ4.js → image-DcpMiprB.js} +1 -1
  45. package/dist/index.js +6 -6
  46. package/dist/llm-slug-generator.js +6 -6
  47. package/dist/{models-CeKIXf5B.js → models-CiqHYwje.js} +2 -2
  48. package/dist/{models-cli-2NcPKR9A.js → models-cli-B-b-gBKG.js} +2 -2
  49. package/dist/{models-cli-DN4AVlpI.js → models-cli-B4ATSsNS.js} +3 -3
  50. package/dist/{onboard-BukRqcRH.js → onboard-B_ECX48L.js} +2 -2
  51. package/dist/{onboard-BcxDiUl_.js → onboard-DcnGZKZX.js} +2 -2
  52. package/dist/{onboard-channels-DS6s341R.js → onboard-channels-FFQPpuEN.js} +1 -1
  53. package/dist/{onboard-channels-HPxu77wp.js → onboard-channels-pfSGhg_C.js} +1 -1
  54. package/dist/{onboarding-DI-o_sax.js → onboarding-BU14cspo.js} +3 -3
  55. package/dist/{onboarding-B8uz24jt.js → onboarding-jhZxQcZ3.js} +3 -3
  56. package/dist/{onboarding.finalize-CfE_AEto.js → onboarding.finalize-B8oOMfHc.js} +6 -6
  57. package/dist/{onboarding.finalize-Bn2e61yb.js → onboarding.finalize-ByZT4dF5.js} +5 -5
  58. package/dist/{pi-embedded-B5qBa69e.js → pi-embedded-BY9AnmoP.js} +203 -27
  59. package/dist/{pi-embedded-helpers-lgx_U5KS.js → pi-embedded-helpers-B8kqLWns.js} +4 -4
  60. package/dist/{pi-embedded-helpers-pubKo8HQ.js → pi-embedded-helpers-CfqDGQ9J.js} +4 -4
  61. package/dist/{plugin-registry-NIUxULTk.js → plugin-registry-CNf1_8hj.js} +1 -1
  62. package/dist/{plugin-registry-cj99EI0k.js → plugin-registry-DXWJkJX6.js} +1 -1
  63. package/dist/plugin-sdk/{accounts-BtaOa4z_.js → accounts-BToL3HlP.js} +1 -1
  64. package/dist/plugin-sdk/{accounts-Ddm33hQm.js → accounts-D9zGZU5t.js} +3 -3
  65. package/dist/plugin-sdk/{accounts-s-AdhXVR.js → accounts-Dtszw3Zn.js} +1 -1
  66. package/dist/plugin-sdk/{active-listener-BXYeALs0.js → active-listener-bEk__wbB.js} +1 -1
  67. package/dist/plugin-sdk/{agent-scope-CYYpcO9W.js → agent-scope-C3gMMKCU.js} +2 -2
  68. package/dist/plugin-sdk/agents/model-token-filter.d.ts +10 -0
  69. package/dist/plugin-sdk/agents/pi-tools.validate-wrapper.d.ts +23 -0
  70. package/dist/plugin-sdk/agents/pi-tools.validate.d.ts +26 -0
  71. package/dist/plugin-sdk/agents/tool-loop-detection.d.ts +3 -1
  72. package/dist/plugin-sdk/{api-key-rotation-D_sMvI5W.js → api-key-rotation-CVBMpnPc.js} +1 -1
  73. package/dist/plugin-sdk/{audio-preflight-VpItkiy3.js → audio-preflight-DoQQKlxa.js} +24 -24
  74. package/dist/plugin-sdk/{bindings-C7hRtgYW.js → bindings-BbwoUGPx.js} +2 -2
  75. package/dist/plugin-sdk/{channel-activity-DoC1xtDu.js → channel-activity-Ji7f0gqq.js} +1 -1
  76. package/dist/plugin-sdk/{channel-web-CSd16cDi.js → channel-web-DZQQ0mzN.js} +22 -22
  77. package/dist/plugin-sdk/{chrome-B7RdxmJ0.js → chrome-C7c_0I5M.js} +3 -3
  78. package/dist/plugin-sdk/{chunk-Dw2XBYXv.js → chunk-jvk9axTQ.js} +1 -1
  79. package/dist/plugin-sdk/{command-format-GKSevep4.js → command-format-DSdvQ_M5.js} +1 -1
  80. package/dist/plugin-sdk/{commands-registry-COIaslGl.js → commands-registry-CQFbmUMs.js} +4 -4
  81. package/dist/plugin-sdk/config/model-profiles.d.ts +2 -0
  82. package/dist/plugin-sdk/{config-KlTNfkFF.js → config-DDkdiUOR.js} +9 -9
  83. package/dist/plugin-sdk/{deliver-BZ99UKQq.js → deliver-BZ6iNLl7.js} +10 -10
  84. package/dist/plugin-sdk/{diagnostic-05pm5Rxi.js → diagnostic-mFf4i4G9.js} +1 -1
  85. package/dist/plugin-sdk/{image-CLOPx7yW.js → image-BOYy0Ump.js} +4 -4
  86. package/dist/plugin-sdk/{image-ops-BlQR__MN.js → image-ops-Bnp6LXEx.js} +1 -1
  87. package/dist/plugin-sdk/index.js +53 -53
  88. package/dist/plugin-sdk/infra/diagnostic-events.d.ts +1 -1
  89. package/dist/plugin-sdk/{ir-BJ6BHE5b.js → ir-Fb3qpcis.js} +4 -4
  90. package/dist/plugin-sdk/{local-roots-BHLNSI8U.js → local-roots-Ckk1QfzI.js} +3 -3
  91. package/dist/plugin-sdk/logging/diagnostic-session-state.d.ts +2 -0
  92. package/dist/plugin-sdk/logging/diagnostic.d.ts +1 -1
  93. package/dist/plugin-sdk/{login-DQMXuxOk.js → login-Bh3DZPam.js} +7 -7
  94. package/dist/plugin-sdk/{login-qr-BjVZSoCi.js → login-qr-DbR7odSr.js} +9 -9
  95. package/dist/plugin-sdk/{manager-CBSBFuFz.js → manager-DckktAQ3.js} +8 -8
  96. package/dist/plugin-sdk/{manifest-registry-CPnHl_K3.js → manifest-registry-B3ugY9-f.js} +1 -1
  97. package/dist/plugin-sdk/{markdown-tables-BoYFajMu.js → markdown-tables-Dfaqilz6.js} +1 -1
  98. package/dist/plugin-sdk/{message-channel-COTAJzHd.js → message-channel-BdI5Ra9S.js} +1 -1
  99. package/dist/plugin-sdk/{model-selection-CsbEfrS0.js → model-selection-OpU8HN50.js} +4 -4
  100. package/dist/plugin-sdk/{outbound-attachment-CnslKL38.js → outbound-attachment-DnVQfTG2.js} +2 -2
  101. package/dist/plugin-sdk/{outbound-B0e8KdaR.js → outbound-rF6G8Xpr.js} +7 -7
  102. package/dist/plugin-sdk/{pi-auth-json-qWi7ZIYV.js → pi-auth-json-CJk8t14T.js} +5 -5
  103. package/dist/plugin-sdk/{pi-embedded-helpers-CW630epe.js → pi-embedded-helpers-BveUP4hk.js} +17 -17
  104. package/dist/plugin-sdk/{plugins-BNByVCIH.js → plugins-BbAvhC25.js} +4 -4
  105. package/dist/plugin-sdk/{pw-ai-CnbPIPY9.js → pw-ai-DjGUsee-.js} +8 -8
  106. package/dist/plugin-sdk/{qmd-manager-CH0XbIHf.js → qmd-manager-mjKcdwVr.js} +4 -4
  107. package/dist/plugin-sdk/{registry-D0xTnUWt.js → registry--_pGht6S.js} +2 -2
  108. package/dist/plugin-sdk/{replies-LLcQL3w6.js → replies-fI39rPGa.js} +3 -3
  109. package/dist/plugin-sdk/{reply-CkqSfQZN.js → reply-DvZeyOVA.js} +263 -87
  110. package/dist/plugin-sdk/{reply-prefix-uxfMZW4p.js → reply-prefix-BHuV5t70.js} +1 -1
  111. package/dist/plugin-sdk/{resolve-outbound-target-BiyAyTWz.js → resolve-outbound-target-BkCUbYGV.js} +2 -2
  112. package/dist/plugin-sdk/{resolve-route-B3CCBumQ.js → resolve-route-D3JH_D2N.js} +3 -3
  113. package/dist/plugin-sdk/{retry-CwQ_iIj8.js → retry-ilSJqnz9.js} +1 -1
  114. package/dist/plugin-sdk/{runner-CGBT7tgF.js → runner-BVqnEfNe.js} +9 -9
  115. package/dist/plugin-sdk/{send-C5h_YxNb.js → send-BHbXh8Ly.js} +7 -7
  116. package/dist/plugin-sdk/{send-pYqe432l.js → send-BMfJIhCk.js} +6 -6
  117. package/dist/plugin-sdk/{send-B2CEnVLL.js → send-BtANzsAo.js} +6 -6
  118. package/dist/plugin-sdk/{send-CjOBB3Vo.js → send-Bxdu6ZZy.js} +10 -10
  119. package/dist/plugin-sdk/{send-CRsR8-vO.js → send-D6LMZJ_h.js} +10 -10
  120. package/dist/plugin-sdk/{session-BsOrxiMj.js → session-kI0tzViQ.js} +4 -4
  121. package/dist/plugin-sdk/{skill-commands-ff_01_r3.js → skill-commands-DCNXVERE.js} +5 -5
  122. package/dist/plugin-sdk/{skills-_yTP47Cd.js → skills-B1GeRYlu.js} +7 -7
  123. package/dist/plugin-sdk/{sqlite-CxAR5ttJ.js → sqlite-Cq_7Cg4E.js} +1 -1
  124. package/dist/plugin-sdk/{store-BdrNabcU.js → store-Do3t33-c.js} +2 -2
  125. package/dist/plugin-sdk/{subsystem-B2uDN3TV.js → subsystem-Coz2AgU8.js} +1 -1
  126. package/dist/plugin-sdk/{tables-DNwXwNFa.js → tables-DR0NmBeH.js} +1 -1
  127. package/dist/plugin-sdk/{target-errors-Paro1BjP.js → target-errors-B7YyMnIi.js} +2 -2
  128. package/dist/plugin-sdk/{thinking-CXqf7WTe.js → thinking-DCNUIAHY.js} +5 -5
  129. package/dist/plugin-sdk/{tokens-bC3UVmVH.js → tokens-CWMflosr.js} +1 -1
  130. package/dist/plugin-sdk/{tool-images-HJ2sfZDV.js → tool-images-D7Lno-TE.js} +2 -2
  131. package/dist/plugin-sdk/{tool-loop-detection-BVA6fax-.js → tool-loop-detection-DU5sTIKg.js} +55 -5
  132. package/dist/plugin-sdk/web-BCsJFuQu.js +65 -0
  133. package/dist/plugin-sdk/{whatsapp-actions-DfseosPO.js → whatsapp-actions-CcBzDuL-.js} +21 -21
  134. package/dist/{plugins-cli-CcjxxESJ.js → plugins-cli-BiedlZMy.js} +2 -2
  135. package/dist/{plugins-cli-D8hhTHZD.js → plugins-cli-C9TYM40P.js} +2 -2
  136. package/dist/{program-D09h71pS.js → program-bnWda72r.js} +7 -7
  137. package/dist/{program-context-CLJSWBZr.js → program-context-CY1jWc5A.js} +17 -17
  138. package/dist/{prompt-select-styled-DQqZEGoo.js → prompt-select-styled-BEnZY8wI.js} +4 -4
  139. package/dist/{prompt-select-styled-zRUqu0c8.js → prompt-select-styled-B_lFTtqp.js} +4 -4
  140. package/dist/{provider-auth-helpers-LzJ2WQIc.js → provider-auth-helpers-DApJuzBd.js} +1 -1
  141. package/dist/{provider-auth-helpers-16r2WHNe.js → provider-auth-helpers-DcNKxc7D.js} +1 -1
  142. package/dist/{push-apns-DJddAK3u.js → push-apns-CKKHlj6j.js} +1 -1
  143. package/dist/{push-apns-B5xZKIxK.js → push-apns-DA7UMNQH.js} +1 -1
  144. package/dist/{pw-ai-De-KR9_s.js → pw-ai-1htA-NnS.js} +1 -1
  145. package/dist/{pw-ai-B5asscAD.js → pw-ai-m0mj2KWK.js} +1 -1
  146. package/dist/{register.agent-D7NKuUkY.js → register.agent-8lxVlmzQ.js} +5 -5
  147. package/dist/{register.agent-CP_sigRh.js → register.agent-ulu0VmOg.js} +6 -6
  148. package/dist/{register.configure-BEsGd0PR.js → register.configure-45--Sly1.js} +6 -6
  149. package/dist/{register.configure-BjRLNatb.js → register.configure-rq0h5r3X.js} +6 -6
  150. package/dist/{register.maintenance-DD6TNFtV.js → register.maintenance-CXbxRtWI.js} +8 -8
  151. package/dist/{register.maintenance-CN6KUuX7.js → register.maintenance-DyEJx7NY.js} +7 -7
  152. package/dist/{register.message-DEUcNly1.js → register.message-C7Yh1uky.js} +2 -2
  153. package/dist/{register.message-DMVC_Sqm.js → register.message-CiN_pt6K.js} +2 -2
  154. package/dist/{register.onboard-CP6RP90V.js → register.onboard-BWaRkbei.js} +4 -4
  155. package/dist/{register.onboard-J1pgV7lz.js → register.onboard-e_2hc2Rm.js} +4 -4
  156. package/dist/{register.setup-Dhc3jKpK.js → register.setup-BIIFHtF7.js} +4 -4
  157. package/dist/{register.setup-BeHpW3xI.js → register.setup-zwh90Vn-.js} +4 -4
  158. package/dist/{register.status-health-sessions-b-lWNsTM.js → register.status-health-sessions-D6t5maEr.js} +3 -3
  159. package/dist/{register.status-health-sessions-DDkC0aoW.js → register.status-health-sessions-O-sVAFHE.js} +3 -3
  160. package/dist/{register.subclis-BJqiT8Q2.js → register.subclis-DOiZocR6.js} +9 -9
  161. package/dist/{reply-D40cmAci.js → reply-05js8eGB.js} +189 -13
  162. package/dist/{run-main-BruREeZ6.js → run-main-u-Eyc8Wm.js} +14 -14
  163. package/dist/{runner-DUBExAb5.js → runner-BcQ0sF9T.js} +1 -1
  164. package/dist/{runner-WAG0M5s9.js → runner-CU9l0uJh.js} +1 -1
  165. package/dist/{server-methods-K-0MHs8x.js → server-methods-Bvl1xubo.js} +7 -7
  166. package/dist/{server-methods-Cyw_WS3A.js → server-methods-Dds-iEoY.js} +7 -7
  167. package/dist/{server-node-events-89R9Ryky.js → server-node-events-Qp-gJMET.js} +2 -2
  168. package/dist/{server-node-events-RA8RurtC.js → server-node-events-qGqpsPxm.js} +2 -2
  169. package/dist/{status-DHJLMwQN.js → status-BATOXGRi.js} +2 -2
  170. package/dist/{status-CtNKWuzg.js → status-BRSo-LY3.js} +2 -2
  171. package/dist/{status-Kv_hsY8N.js → status-BqQ9mm64.js} +1 -1
  172. package/dist/{status-BSMEjz4q.js → status-CfYa1Q9K.js} +1 -1
  173. package/dist/{subagent-registry-Cb5e_x99.js → subagent-registry-lbDgDwLy.js} +189 -13
  174. package/dist/{tool-loop-detection-BgbtzUGc.js → tool-loop-detection-C7TCF2V2.js} +53 -3
  175. package/dist/{tool-loop-detection-BU3fbtCd.js → tool-loop-detection-D7qjFnRh.js} +53 -3
  176. package/dist/{tool-loop-detection-B6j1r-Wk.js → tool-loop-detection-DPVtQOfM.js} +53 -3
  177. package/dist/{tool-loop-detection-D0kUzUGu.js → tool-loop-detection-DR_rrIA1.js} +53 -3
  178. package/dist/{unified-runner-CkJLTsTK.js → unified-runner-B4ICXRlg.js} +203 -27
  179. package/dist/{update-cli-CrRBoiVU.js → update-cli-BOaP4XyQ.js} +8 -8
  180. package/dist/{update-cli-Bl66LJZ4.js → update-cli-R8-SSkbS.js} +7 -7
  181. package/dist/{update-runner-DxpSPK-f.js → update-runner-B8UmqtLI.js} +1 -1
  182. package/dist/{update-runner-FgrqoxvV.js → update-runner-CWJ4pC1b.js} +1 -1
  183. package/dist/{web-BYRKX5Ln.js → web-BWybtnEa.js} +2 -2
  184. package/dist/{web-RePh7lRy.js → web-CQH9fSkH.js} +6 -6
  185. package/dist/{web-Czp0JS6-.js → web-CSrDbJJ7.js} +1 -1
  186. package/dist/{web-D99WHLTL.js → web-DBFW0ejP.js} +6 -6
  187. package/package.json +1 -1
  188. package/dist/plugin-sdk/web-DdTTil50.js +0 -65
@@ -13,7 +13,7 @@ import "./client-DMBZpU6X.js";
13
13
  import "./call-BcE47FtD.js";
14
14
  import "./message-channel-C9dERklz.js";
15
15
  import "./pairing-token-Byh6drgn.js";
16
- import "./subagent-registry-Cb5e_x99.js";
16
+ import "./subagent-registry-lbDgDwLy.js";
17
17
  import "./sessions-CJXnZVjR.js";
18
18
  import "./tokens-Csntmwwn.js";
19
19
  import "./plugins-CwSlLxM8.js";
@@ -104,8 +104,8 @@ import "./daemon-runtime-CfRwa6qh.js";
104
104
  import "./runtime-guard-D7waq_Ho.js";
105
105
  import "./systemd-DlMdyFDY.js";
106
106
  import "./service-Cm9j9WzQ.js";
107
- import "./health-BpHgCv-u.js";
108
- import "./onboarding-B8uz24jt.js";
107
+ import "./health-CM1asUG8.js";
108
+ import "./onboarding-jhZxQcZ3.js";
109
109
  import "./shared-D8K9MkWg.js";
110
110
  import "./auth-token-Cmrk2TPo.js";
111
111
  import { n as logConfigUpdated, t as formatConfigPath } from "./logging-BGewRZy0.js";
@@ -113,7 +113,7 @@ import "./openai-model-default-DAwnTUcK.js";
113
113
  import "./model-picker-D5nCutGW.js";
114
114
  import "./systemd-linger-DA_LW52P.js";
115
115
  import "./onboard-custom-DdWPfzJO.js";
116
- import { t as onboardCommand } from "./onboard-BcxDiUl_.js";
116
+ import { t as onboardCommand } from "./onboard-DcnGZKZX.js";
117
117
  import JSON5 from "json5";
118
118
  import fs from "node:fs/promises";
119
119
 
@@ -1,7 +1,7 @@
1
1
  import "./paths-Cqn-zk3M.js";
2
2
  import { B as theme, S as shortenHomePath } from "./utils-B-0b9bGM.js";
3
3
  import "./thinking-EAliFiVK.js";
4
- import "./reply-D40cmAci.js";
4
+ import "./reply-05js8eGB.js";
5
5
  import "./registry-Cja8eT7G.js";
6
6
  import { f as defaultRuntime } from "./subsystem-D9vIQve0.js";
7
7
  import "./exec-CWkblSrI.js";
@@ -108,8 +108,8 @@ import "./clack-prompter-B7pN13HV.js";
108
108
  import "./daemon-runtime-2mwX-jqj.js";
109
109
  import "./systemd-riq8uNJQ.js";
110
110
  import "./service-Cl74hx8J.js";
111
- import "./health-DK6rAOhC.js";
112
- import "./onboarding-DI-o_sax.js";
111
+ import "./health-CDGOsNeD.js";
112
+ import "./onboarding-BU14cspo.js";
113
113
  import "./shared-Knv1hy6h.js";
114
114
  import "./auth-token-BnOynwk4.js";
115
115
  import { n as logConfigUpdated, t as formatConfigPath } from "./logging-BzzwiKjv.js";
@@ -117,7 +117,7 @@ import "./openai-model-default-DMjQRsb1.js";
117
117
  import "./model-picker-Ddo3jHe-.js";
118
118
  import "./systemd-linger-aQ75ZlXY.js";
119
119
  import "./onboard-custom-C7O-zfQ1.js";
120
- import { t as onboardCommand } from "./onboard-BukRqcRH.js";
120
+ import { t as onboardCommand } from "./onboard-B_ECX48L.js";
121
121
  import JSON5 from "json5";
122
122
  import fs from "node:fs/promises";
123
123
 
@@ -1,7 +1,7 @@
1
1
  import "./paths-Cqn-zk3M.js";
2
2
  import { B as theme, P as setVerbose, k as info, z as isRich } from "./utils-B-0b9bGM.js";
3
3
  import "./thinking-EAliFiVK.js";
4
- import { m as classifySessionKey, pr as lookupContextTokens, x as resolveSessionModelRef } from "./reply-D40cmAci.js";
4
+ import { m as classifySessionKey, pr as lookupContextTokens, x as resolveSessionModelRef } from "./reply-05js8eGB.js";
5
5
  import { S as parseAgentSessionKey } from "./session-key-DCt45XZa.js";
6
6
  import "./registry-Cja8eT7G.js";
7
7
  import { f as defaultRuntime } from "./subsystem-D9vIQve0.js";
@@ -114,8 +114,8 @@ import "./service-Cl74hx8J.js";
114
114
  import "./diagnostics-BAMlsVVX.js";
115
115
  import "./table-BTgkRafz.js";
116
116
  import "./audit-CrITRV6w.js";
117
- import { t as statusCommand } from "./status-DHJLMwQN.js";
118
- import { r as healthCommand } from "./health-DK6rAOhC.js";
117
+ import { t as statusCommand } from "./status-BATOXGRi.js";
118
+ import { r as healthCommand } from "./health-CDGOsNeD.js";
119
119
  import "./update-check-CtckACbb.js";
120
120
  import "./dm-policy-shared-Bh3TbexU.js";
121
121
  import "./node-service-Cxz4e-Qd.js";
@@ -14,7 +14,7 @@ import "./client-DMBZpU6X.js";
14
14
  import "./call-BcE47FtD.js";
15
15
  import "./message-channel-C9dERklz.js";
16
16
  import "./pairing-token-Byh6drgn.js";
17
- import "./subagent-registry-Cb5e_x99.js";
17
+ import "./subagent-registry-lbDgDwLy.js";
18
18
  import "./sessions-CJXnZVjR.js";
19
19
  import "./tokens-Csntmwwn.js";
20
20
  import "./plugins-CwSlLxM8.js";
@@ -108,8 +108,8 @@ import "./service-Cm9j9WzQ.js";
108
108
  import "./diagnostics-CS1ov_hH.js";
109
109
  import "./table-D01d2GuY.js";
110
110
  import "./audit-Byo5jCLN.js";
111
- import { n as statusCommand } from "./status-CtNKWuzg.js";
112
- import { r as healthCommand } from "./health-BpHgCv-u.js";
111
+ import { n as statusCommand } from "./status-BRSo-LY3.js";
112
+ import { r as healthCommand } from "./health-CM1asUG8.js";
113
113
  import "./update-check-ZdimP1aU.js";
114
114
  import "./dm-policy-shared-DJ-61hCT.js";
115
115
  import "./node-service-fcZExd22.js";
@@ -49,7 +49,7 @@ const entries = [
49
49
  description: "Run, inspect, and query the WebSocket Gateway",
50
50
  hasSubcommands: true,
51
51
  register: async (program) => {
52
- (await import("./gateway-cli-BanaeKQ_.js")).registerGatewayCli(program);
52
+ (await import("./gateway-cli-Co-tp-WC.js")).registerGatewayCli(program);
53
53
  }
54
54
  },
55
55
  {
@@ -81,7 +81,7 @@ const entries = [
81
81
  description: "Discover, scan, and configure models",
82
82
  hasSubcommands: true,
83
83
  register: async (program) => {
84
- (await import("./models-cli-DN4AVlpI.js")).registerModelsCli(program);
84
+ (await import("./models-cli-B4ATSsNS.js")).registerModelsCli(program);
85
85
  }
86
86
  },
87
87
  {
@@ -161,7 +161,7 @@ const entries = [
161
161
  description: "Manage internal agent hooks",
162
162
  hasSubcommands: true,
163
163
  register: async (program) => {
164
- (await import("./hooks-cli-Cin_3tFg.js")).registerHooksCli(program);
164
+ (await import("./hooks-cli-Tx0TzSju.js")).registerHooksCli(program);
165
165
  }
166
166
  },
167
167
  {
@@ -185,7 +185,7 @@ const entries = [
185
185
  description: "Secure DM pairing (approve inbound requests)",
186
186
  hasSubcommands: true,
187
187
  register: async (program) => {
188
- const { registerPluginCliCommands } = await import("./cli-eOBlVLcC.js");
188
+ const { registerPluginCliCommands } = await import("./cli-DapZXGSB.js");
189
189
  registerPluginCliCommands(program, await loadConfig());
190
190
  (await import("./pairing-cli-CQRAnpvm.js")).registerPairingCli(program);
191
191
  }
@@ -195,8 +195,8 @@ const entries = [
195
195
  description: "Manage Symi plugins and extensions",
196
196
  hasSubcommands: true,
197
197
  register: async (program) => {
198
- (await import("./plugins-cli-D8hhTHZD.js")).registerPluginsCli(program);
199
- const { registerPluginCliCommands } = await import("./cli-eOBlVLcC.js");
198
+ (await import("./plugins-cli-C9TYM40P.js")).registerPluginsCli(program);
199
+ const { registerPluginCliCommands } = await import("./cli-DapZXGSB.js");
200
200
  registerPluginCliCommands(program, await loadConfig());
201
201
  }
202
202
  },
@@ -205,7 +205,7 @@ const entries = [
205
205
  description: "Manage connected chat channels (Telegram, Discord, etc.)",
206
206
  hasSubcommands: true,
207
207
  register: async (program) => {
208
- (await import("./channels-cli-BuTH-iVi.js")).registerChannelsCli(program);
208
+ (await import("./channels-cli-93tLT17t.js")).registerChannelsCli(program);
209
209
  }
210
210
  },
211
211
  {
@@ -237,7 +237,7 @@ const entries = [
237
237
  description: "Update Symi and inspect update channel status",
238
238
  hasSubcommands: true,
239
239
  register: async (program) => {
240
- (await import("./update-cli-CrRBoiVU.js")).registerUpdateCli(program);
240
+ (await import("./update-cli-BOaP4XyQ.js")).registerUpdateCli(program);
241
241
  }
242
242
  },
243
243
  {
@@ -245,7 +245,7 @@ const entries = [
245
245
  description: "Generate shell completion script",
246
246
  hasSubcommands: false,
247
247
  register: async (program) => {
248
- (await import("./completion-cli-DIx7KyOG.js").then((n) => n.n)).registerCompletionCli(program);
248
+ (await import("./completion-cli-BFZv3K5D.js").then((n) => n.n)).registerCompletionCli(program);
249
249
  }
250
250
  }
251
251
  ];
@@ -22402,7 +22402,8 @@ const BUILTIN_PROFILES = [
22402
22402
  "<end_of_turn>"
22403
22403
  ],
22404
22404
  suppressMonologue: true,
22405
- hasStructuredThinking: false
22405
+ hasStructuredThinking: false,
22406
+ validateToolArgs: true
22406
22407
  },
22407
22408
  promptAdditions: [
22408
22409
  "CRITICAL OUTPUT RULES:",
@@ -22412,7 +22413,8 @@ const BUILTIN_PROFILES = [
22412
22413
  "- Do not write verification checklists, self-assessments, or numbered assessment lists after your answer.",
22413
22414
  "- Do not write 'Verification:', 'Requirements:', 'Status Check:', or 'Everything is correct'.",
22414
22415
  "- If you need to verify your work, do so before writing your response, not after.",
22415
- "- Send brief progress updates on long tasks so the user knows you are active."
22416
+ "- Send brief progress updates on long tasks so the user knows you are active.",
22417
+ "- When calling tools, provide arguments as clean values only. Never include <|, |>, or XML-like tags in tool argument values. For exec/bash commands, provide only valid shell syntax."
22416
22418
  ],
22417
22419
  ui: {
22418
22420
  badge: "Local",
@@ -22436,7 +22438,8 @@ const BUILTIN_PROFILES = [
22436
22438
  filters: {
22437
22439
  stripPatterns: [],
22438
22440
  suppressMonologue: false,
22439
- hasStructuredThinking: true
22441
+ hasStructuredThinking: true,
22442
+ validateToolArgs: false
22440
22443
  },
22441
22444
  promptAdditions: [],
22442
22445
  ui: {
@@ -22470,7 +22473,8 @@ const BUILTIN_PROFILES = [
22470
22473
  "^\\s*<bos>\\s*"
22471
22474
  ],
22472
22475
  suppressMonologue: true,
22473
- hasStructuredThinking: false
22476
+ hasStructuredThinking: false,
22477
+ validateToolArgs: true
22474
22478
  },
22475
22479
  promptAdditions: [
22476
22480
  "CRITICAL OUTPUT RULES:",
@@ -22481,7 +22485,8 @@ const BUILTIN_PROFILES = [
22481
22485
  "- Do not write 'Verification:', 'Requirements:', 'Status Check:', or 'Everything is correct'.",
22482
22486
  "- If you need to verify your work, do so before writing your response, not after.",
22483
22487
  "- Keep planning and reasoning internal. Only speak when you have a result or need user input.",
22484
- "- When working on multi-step tasks, send a brief one-line status update so the user knows you are active."
22488
+ "- When working on multi-step tasks, send a brief one-line status update so the user knows you are active.",
22489
+ "- When calling tools, provide arguments as clean values only. Never include <|, |>, or XML-like tags in tool argument values. For exec/bash commands, provide only valid shell syntax."
22485
22490
  ],
22486
22491
  ui: {
22487
22492
  badge: "CoreWeave",
@@ -22509,7 +22514,8 @@ const FALLBACK_PROFILE = {
22509
22514
  filters: {
22510
22515
  stripPatterns: [],
22511
22516
  suppressMonologue: false,
22512
- hasStructuredThinking: false
22517
+ hasStructuredThinking: false,
22518
+ validateToolArgs: false
22513
22519
  },
22514
22520
  promptAdditions: [],
22515
22521
  ui: {
@@ -22936,6 +22942,19 @@ function stripModelTokensAggressive(text, modelId) {
22936
22942
  }
22937
22943
  return result;
22938
22944
  }
22945
+ /**
22946
+ * Clean residual fragments left after aggressive token stripping.
22947
+ * After `<|` and `|>` are removed, orphaned `<`, `"`, `|` can remain
22948
+ * at string boundaries (e.g., `<<|"|uname -a` → `<"uname -a`).
22949
+ *
22950
+ * Conservative: only trims leading junk before what looks like a command,
22951
+ * and trailing junk. Does NOT touch content in the middle of the string.
22952
+ * Preserves heredoc syntax (`<<EOF`, `<<"EOF"`) via negative lookahead.
22953
+ */
22954
+ function cleanResidualTokenFragments(text) {
22955
+ if (!text) return text;
22956
+ return text.replace(/^[<"|]+(?!<[A-Z_])(?=[a-zA-Z0-9/~$.(])/gm, "").replace(/[<"|]+$/gm, "").trim();
22957
+ }
22939
22958
 
22940
22959
  //#endregion
22941
22960
  //#region src/agents/output-normalizer.ts
@@ -23021,10 +23040,14 @@ function detectRepetition(text, minBlock) {
23021
23040
  const searchStart = sampleStart + minBlock;
23022
23041
  return text.indexOf(sample, searchStart) >= 0;
23023
23042
  }
23043
+ function sanitizeStringValue(value, modelId) {
23044
+ const stripped = stripModelTokensAggressive(value, modelId);
23045
+ return isGemmaModel$1(modelId) ? cleanResidualTokenFragments(stripped) : stripped;
23046
+ }
23024
23047
  function sanitizeArgs(args, modelId) {
23025
23048
  const result = {};
23026
- for (const [key, value] of Object.entries(args)) if (typeof value === "string") result[key] = stripModelTokensAggressive(value, modelId);
23027
- else if (Array.isArray(value)) result[key] = value.map((item) => typeof item === "string" ? stripModelTokensAggressive(item, modelId) : item && typeof item === "object" ? sanitizeArgs(item, modelId) : item);
23049
+ for (const [key, value] of Object.entries(args)) if (typeof value === "string") result[key] = sanitizeStringValue(value, modelId);
23050
+ else if (Array.isArray(value)) result[key] = value.map((item) => typeof item === "string" ? sanitizeStringValue(item, modelId) : item && typeof item === "object" ? sanitizeArgs(item, modelId) : item);
23028
23051
  else if (value && typeof value === "object") result[key] = sanitizeArgs(value, modelId);
23029
23052
  else result[key] = value;
23030
23053
  return result;
@@ -25108,7 +25131,7 @@ async function recordLoopOutcome(args) {
25108
25131
  if (!args.ctx?.sessionKey) return;
25109
25132
  try {
25110
25133
  const { getDiagnosticSessionState } = await import("./diagnostic-session-state-CUslJyKP.js").then((n) => n.n);
25111
- const { recordToolCallOutcome } = await import("./tool-loop-detection-B6j1r-Wk.js");
25134
+ const { recordToolCallOutcome } = await import("./tool-loop-detection-DPVtQOfM.js");
25112
25135
  recordToolCallOutcome(getDiagnosticSessionState({
25113
25136
  sessionKey: args.ctx.sessionKey,
25114
25137
  sessionId: args.ctx?.agentId
@@ -25130,7 +25153,7 @@ async function runBeforeToolCallHook(args) {
25130
25153
  if (args.ctx?.sessionKey) {
25131
25154
  const { getDiagnosticSessionState } = await import("./diagnostic-session-state-CUslJyKP.js").then((n) => n.n);
25132
25155
  const { logToolLoopAction } = await import("./diagnostic-DjBRPfu9.js").then((n) => n.n);
25133
- const { detectToolCallLoop, recordToolCall } = await import("./tool-loop-detection-B6j1r-Wk.js");
25156
+ const { detectToolCallLoop, recordToolCall } = await import("./tool-loop-detection-DPVtQOfM.js");
25134
25157
  const sessionState = getDiagnosticSessionState({
25135
25158
  sessionKey: args.ctx.sessionKey,
25136
25159
  sessionId: args.ctx?.agentId
@@ -25401,6 +25424,135 @@ function toClientToolDefinitions(tools, onClientToolCall, hookContext) {
25401
25424
  });
25402
25425
  }
25403
25426
 
25427
+ //#endregion
25428
+ //#region src/agents/pi-tools.validate.ts
25429
+ /**
25430
+ * Tool argument validation — validates that exec/bash commands contain
25431
+ * valid shell syntax after model token sanitization.
25432
+ *
25433
+ * Gated on ModelProfile.filters.validateToolArgs — only active for
25434
+ * models known to leak control tokens into structured output (Gemma, Ollama).
25435
+ *
25436
+ * @module
25437
+ */
25438
+ /**
25439
+ * Validate that a command string contains extractable valid shell syntax.
25440
+ * Returns the cleaned command if valid, or an error reason if not.
25441
+ *
25442
+ * Does NOT attempt to parse the full shell grammar — just checks for
25443
+ * obvious corruption (residual control tokens, empty commands).
25444
+ * Preserves heredocs, redirects, pipes, and other legitimate shell syntax.
25445
+ */
25446
+ function validateShellCommand(command) {
25447
+ if (!command || !command.trim()) return {
25448
+ valid: false,
25449
+ cleaned: "",
25450
+ reason: "empty command"
25451
+ };
25452
+ let cleaned = cleanResidualTokenFragments(command);
25453
+ if (/(?:^|[^<])<\|/.test(cleaned) || /\|>/.test(cleaned)) {
25454
+ cleaned = cleaned.replace(/<\|[^|>]*(?:\|>)?/g, "").trim();
25455
+ cleaned = cleanResidualTokenFragments(cleaned);
25456
+ }
25457
+ if (!cleaned || !cleaned.trim()) return {
25458
+ valid: false,
25459
+ cleaned: "",
25460
+ reason: "command is empty after removing control tokens"
25461
+ };
25462
+ if (!/[a-zA-Z0-9_/.~-]/.test(cleaned)) return {
25463
+ valid: false,
25464
+ cleaned,
25465
+ reason: "no recognizable shell command found"
25466
+ };
25467
+ return {
25468
+ valid: true,
25469
+ cleaned: cleaned.trim()
25470
+ };
25471
+ }
25472
+
25473
+ //#endregion
25474
+ //#region src/agents/pi-tools.validate-wrapper.ts
25475
+ const EXEC_TOOL_NAMES = new Set(["exec", "bash"]);
25476
+ const FILE_TOOL_NAMES = new Set([
25477
+ "write",
25478
+ "read",
25479
+ "edit",
25480
+ "patch",
25481
+ "file_write",
25482
+ "file_edit",
25483
+ "write_file",
25484
+ "edit_file",
25485
+ "create_file"
25486
+ ]);
25487
+ const FILE_PATH_KEYS = [
25488
+ "file_path",
25489
+ "path",
25490
+ "filePath"
25491
+ ];
25492
+ /**
25493
+ * Wrap tools with argument validation. Exec/bash commands and file paths
25494
+ * are validated. Other tools pass through unchanged.
25495
+ *
25496
+ * Call this AFTER tools are created and the model profile is resolved.
25497
+ */
25498
+ function wrapToolsWithArgValidation(tools, profile) {
25499
+ if (!profile.filters?.validateToolArgs) return tools;
25500
+ return tools.map((tool) => wrapToolWithArgValidation(tool));
25501
+ }
25502
+ /**
25503
+ * Clean a file path by stripping control token fragments.
25504
+ * Returns null if the path is irreparably corrupted (empty after cleanup).
25505
+ */
25506
+ function cleanFilePath(filePath) {
25507
+ let cleaned = filePath.replace(/<\|[^|>]*(?:\|>)?/g, "");
25508
+ cleaned = cleanResidualTokenFragments(cleaned);
25509
+ cleaned = cleaned.trim();
25510
+ if (!cleaned || !/[a-zA-Z0-9/._~-]/.test(cleaned)) return {
25511
+ valid: false,
25512
+ cleaned
25513
+ };
25514
+ return {
25515
+ valid: true,
25516
+ cleaned
25517
+ };
25518
+ }
25519
+ /**
25520
+ * Wrap a single tool with argument validation.
25521
+ */
25522
+ function wrapToolWithArgValidation(tool) {
25523
+ const toolName = (tool.name ?? "").toLowerCase().trim();
25524
+ const isExecTool = EXEC_TOOL_NAMES.has(toolName);
25525
+ const isFileTool = FILE_TOOL_NAMES.has(toolName);
25526
+ if (!isExecTool && !isFileTool) return tool;
25527
+ const originalExecute = tool.execute;
25528
+ return {
25529
+ ...tool,
25530
+ execute(toolCallId, params, ...rest) {
25531
+ if (isExecTool) {
25532
+ const command = params.command ?? params.cmd;
25533
+ if (typeof command !== "string") return originalExecute.call(tool, toolCallId, params, ...rest);
25534
+ const result = validateShellCommand(command);
25535
+ if (!result.valid) return Promise.resolve({ output: `Error: ${result.reason}. The command appears to contain model control tokens. Please provide a clean shell command without any <|, |>, or XML-like tags. Only valid shell syntax is accepted.` });
25536
+ if (result.cleaned !== command) return originalExecute.call(tool, toolCallId, {
25537
+ ...params,
25538
+ command: result.cleaned
25539
+ }, ...rest);
25540
+ return originalExecute.call(tool, toolCallId, params, ...rest);
25541
+ }
25542
+ const pathKey = FILE_PATH_KEYS.find((k) => typeof params[k] === "string");
25543
+ if (!pathKey) return originalExecute.call(tool, toolCallId, params, ...rest);
25544
+ const rawPath = params[pathKey];
25545
+ if (!rawPath.includes("<|") && !rawPath.includes("|>") && !/^[<"|]/.test(rawPath)) return originalExecute.call(tool, toolCallId, params, ...rest);
25546
+ const pathResult = cleanFilePath(rawPath);
25547
+ if (!pathResult.valid) return Promise.resolve({ output: `Error: file path "${rawPath}" contains model control tokens and could not be cleaned. Please provide a clean file path without any <|, |>, or XML-like tags.` });
25548
+ return originalExecute.call(tool, toolCallId, {
25549
+ ...params,
25550
+ [pathKey]: pathResult.cleaned
25551
+ }, ...rest);
25552
+ }
25553
+ };
25554
+ }
25555
+
25404
25556
  //#endregion
25405
25557
  //#region src/agents/plan-mode.ts
25406
25558
  /**
@@ -29483,10 +29635,11 @@ async function runEmbeddedAttempt(params) {
29483
29635
  await resourceLoader.reload();
29484
29636
  }
29485
29637
  const hookRunner = getGlobalHookRunner();
29486
- const { builtInTools, customTools } = splitSdkTools({
29638
+ const { builtInTools: rawBuiltInTools, customTools } = splitSdkTools({
29487
29639
  tools,
29488
29640
  sandboxEnabled: !!sandbox?.enabled
29489
29641
  });
29642
+ const builtInTools = wrapToolsWithArgValidation(rawBuiltInTools, modelProfile);
29490
29643
  let clientToolCallDetected = null;
29491
29644
  const clientToolLoopDetection = resolveToolLoopDetectionConfig({
29492
29645
  cfg: params.config,
@@ -29695,6 +29848,10 @@ async function runEmbeddedAttempt(params) {
29695
29848
  });
29696
29849
  };
29697
29850
  const streamMonitor = createStreamMonitor(modelProfile);
29851
+ const TOOL_ERROR_ABORT_THRESHOLD = 5;
29852
+ const TOOL_ERROR_WARN_THRESHOLD = 3;
29853
+ let consecutiveToolErrors = 0;
29854
+ let lastErrorToolName = "";
29698
29855
  const subscription = subscribeEmbeddedPiSession({
29699
29856
  session: activeSession,
29700
29857
  runId: params.runId,
@@ -29716,6 +29873,25 @@ async function runEmbeddedAttempt(params) {
29716
29873
  onAgentEvent: (evt) => {
29717
29874
  armSymipulseTimer();
29718
29875
  params.onAgentEvent?.(evt);
29876
+ if (evt.stream === "tool" && !aborted) {
29877
+ const phase = typeof evt.data?.phase === "string" ? evt.data.phase : "";
29878
+ const toolName = typeof evt.data?.name === "string" ? evt.data.name : "";
29879
+ const isError = evt.data?.isError === true;
29880
+ if (phase === "result" && toolName) {
29881
+ if (isError && toolName === lastErrorToolName) consecutiveToolErrors++;
29882
+ else if (isError) {
29883
+ consecutiveToolErrors = 1;
29884
+ lastErrorToolName = toolName;
29885
+ } else {
29886
+ consecutiveToolErrors = 0;
29887
+ lastErrorToolName = "";
29888
+ }
29889
+ if (consecutiveToolErrors >= TOOL_ERROR_ABORT_THRESHOLD) {
29890
+ log$6.error(`Agent-loop circuit breaker: ${toolName} failed ${consecutiveToolErrors} consecutive times. Aborting run ${params.runId}.`);
29891
+ abortRun(false, /* @__PURE__ */ new Error(`Tool ${toolName} failed ${consecutiveToolErrors} consecutive times. The model may be generating corrupted tool arguments. Run aborted to prevent infinite loop.`));
29892
+ } else if (consecutiveToolErrors === TOOL_ERROR_WARN_THRESHOLD) log$6.warn(`Agent-loop tool error warning: ${toolName} failed ${consecutiveToolErrors} times consecutively. runId=${params.runId}`);
29893
+ }
29894
+ }
29719
29895
  if (evt.stream === "assistant" && typeof evt.data?.text === "string" && !aborted) {
29720
29896
  streamMonitor.onChunk(evt.data.text);
29721
29897
  if (streamMonitor.shouldStop()) log$6.debug(`stream monitor detection (log-only, no abort): runId=${params.runId} reason=${streamMonitor.getStopReason()}`);
@@ -31211,7 +31387,7 @@ async function runAgentTurn(params) {
31211
31387
  function createDefaultDeps() {
31212
31388
  return {
31213
31389
  sendMessageWhatsApp: async (...args) => {
31214
- const { sendMessageWhatsApp } = await import("./web-BYRKX5Ln.js");
31390
+ const { sendMessageWhatsApp } = await import("./web-BWybtnEa.js");
31215
31391
  return await sendMessageWhatsApp(...args);
31216
31392
  },
31217
31393
  sendMessageTelegram: async (...args) => {
@@ -49642,7 +49818,7 @@ function loadWebLoginQr() {
49642
49818
  return webLoginQrPromise;
49643
49819
  }
49644
49820
  function loadWebChannel() {
49645
- webChannelPromise ??= import("./web-BYRKX5Ln.js");
49821
+ webChannelPromise ??= import("./web-BWybtnEa.js");
49646
49822
  return webChannelPromise;
49647
49823
  }
49648
49824
  function loadWhatsAppActions() {
@@ -13,7 +13,7 @@ import "./client-DMBZpU6X.js";
13
13
  import "./call-BcE47FtD.js";
14
14
  import "./message-channel-C9dERklz.js";
15
15
  import "./pairing-token-Byh6drgn.js";
16
- import "./subagent-registry-Cb5e_x99.js";
16
+ import "./subagent-registry-lbDgDwLy.js";
17
17
  import "./sessions-CJXnZVjR.js";
18
18
  import "./tokens-Csntmwwn.js";
19
19
  import "./plugins-CwSlLxM8.js";
@@ -101,9 +101,9 @@ import { t as ensureSymiCliOnPath } from "./path-env-Bic_wXs9.js";
101
101
  import "./catalog-DLQFKucJ.js";
102
102
  import "./note-DDecZomM.js";
103
103
  import "./plugin-auto-enable-D6ENR3Xg.js";
104
- import { t as ensurePluginRegistryLoaded } from "./plugin-registry-cj99EI0k.js";
104
+ import { t as ensurePluginRegistryLoaded } from "./plugin-registry-DXWJkJX6.js";
105
105
  import { t as assertSupportedRuntime } from "./runtime-guard-D7waq_Ho.js";
106
- import { t as emitCliBanner } from "./banner-D50f_0qf.js";
106
+ import { t as emitCliBanner } from "./banner-DpH44qlJ.js";
107
107
  import "./doctor-config-flow-CA3eiKhd.js";
108
108
  import { n as ensureConfigReady } from "./config-guard-CPHvOzsC.js";
109
109
  import process$1 from "node:process";
@@ -118,7 +118,7 @@ const routeHealth = {
118
118
  const verbose = getVerboseFlag(argv, { includeDebug: true });
119
119
  const timeoutMs = getPositiveIntFlagValue(argv, "--timeout");
120
120
  if (timeoutMs === null) return false;
121
- const { healthCommand } = await import("./health-BpHgCv-u.js").then((n) => n.i);
121
+ const { healthCommand } = await import("./health-CM1asUG8.js").then((n) => n.i);
122
122
  await healthCommand({
123
123
  json,
124
124
  timeoutMs,
@@ -138,7 +138,7 @@ const routeStatus = {
138
138
  const verbose = getVerboseFlag(argv, { includeDebug: true });
139
139
  const timeoutMs = getPositiveIntFlagValue(argv, "--timeout");
140
140
  if (timeoutMs === null) return false;
141
- const { statusCommand } = await import("./status-CtNKWuzg.js").then((n) => n.t);
141
+ const { statusCommand } = await import("./status-BRSo-LY3.js").then((n) => n.t);
142
142
  await statusCommand({
143
143
  json,
144
144
  deep,
@@ -172,7 +172,7 @@ const routeAgentsList = {
172
172
  run: async (argv) => {
173
173
  const json = hasFlag(argv, "--json");
174
174
  const bindings = hasFlag(argv, "--bindings");
175
- const { agentsListCommand } = await import("./agents-Bi50kp6u.js").then((n) => n.t);
175
+ const { agentsListCommand } = await import("./agents-qLMWAYwU.js").then((n) => n.t);
176
176
  await agentsListCommand({
177
177
  json,
178
178
  bindings
@@ -243,7 +243,7 @@ const routes = [
243
243
  const pathArg = getCommandPositionals(argv)[2];
244
244
  if (!pathArg) return false;
245
245
  const json = hasFlag(argv, "--json");
246
- const { runConfigGet } = await import("./config-cli-BsDxqYDU.js");
246
+ const { runConfigGet } = await import("./config-cli-DbWMIBUz.js");
247
247
  await runConfigGet({
248
248
  path: pathArg,
249
249
  json
@@ -256,7 +256,7 @@ const routes = [
256
256
  run: async (argv) => {
257
257
  const pathArg = getCommandPositionals(argv)[2];
258
258
  if (!pathArg) return false;
259
- const { runConfigUnset } = await import("./config-cli-BsDxqYDU.js");
259
+ const { runConfigUnset } = await import("./config-cli-DbWMIBUz.js");
260
260
  await runConfigUnset({ path: pathArg });
261
261
  return true;
262
262
  }
@@ -270,7 +270,7 @@ const routes = [
270
270
  const local = hasFlag(argv, "--local");
271
271
  const json = hasFlag(argv, "--json");
272
272
  const plain = hasFlag(argv, "--plain");
273
- const { modelsListCommand } = await import("./models-CeKIXf5B.js").then((n) => n.t);
273
+ const { modelsListCommand } = await import("./models-CiqHYwje.js").then((n) => n.t);
274
274
  await modelsListCommand({
275
275
  all,
276
276
  local,
@@ -301,7 +301,7 @@ const routes = [
301
301
  const plain = hasFlag(argv, "--plain");
302
302
  const check = hasFlag(argv, "--check");
303
303
  const probe = hasFlag(argv, "--probe");
304
- const { modelsStatusCommand } = await import("./models-CeKIXf5B.js").then((n) => n.t);
304
+ const { modelsStatusCommand } = await import("./models-CiqHYwje.js").then((n) => n.t);
305
305
  await modelsStatusCommand({
306
306
  json,
307
307
  plain,
@@ -379,7 +379,7 @@ async function runCli(argv = process$1.argv) {
379
379
  assertSupportedRuntime();
380
380
  if (await tryRouteCli(normalizedArgv)) return;
381
381
  enableConsoleCapture();
382
- const { buildProgram } = await import("./program-D09h71pS.js");
382
+ const { buildProgram } = await import("./program-bnWda72r.js");
383
383
  const program = buildProgram();
384
384
  installUnhandledRejectionHandler();
385
385
  process$1.on("uncaughtException", (error) => {
@@ -411,10 +411,10 @@ async function runCli(argv = process$1.argv) {
411
411
  const { getProgramContext } = await import("./program-context-CqzR_m-7.js").then((n) => n.n);
412
412
  const ctx = getProgramContext(program);
413
413
  if (ctx) {
414
- const { registerCoreCliByName } = await import("./command-registry-D-pwcAIW.js").then((n) => n.t);
414
+ const { registerCoreCliByName } = await import("./command-registry-9EhYc6da.js").then((n) => n.t);
415
415
  await registerCoreCliByName(program, ctx, primary, parseArgv);
416
416
  }
417
- const { registerSubCliByName } = await import("./register.subclis-BJqiT8Q2.js").then((n) => n.a);
417
+ const { registerSubCliByName } = await import("./register.subclis-DOiZocR6.js").then((n) => n.a);
418
418
  await registerSubCliByName(program, primary);
419
419
  }
420
420
  const hasBuiltinPrimary = primary !== null && program.commands.some((command) => command.name() === primary);
@@ -423,7 +423,7 @@ async function runCli(argv = process$1.argv) {
423
423
  primary,
424
424
  hasBuiltinPrimary
425
425
  })) {
426
- const { registerPluginCliCommands } = await import("./cli-eOBlVLcC.js");
426
+ const { registerPluginCliCommands } = await import("./cli-DapZXGSB.js");
427
427
  const { loadConfig } = await import("./config-DHBLS1Hl.js").then((n) => n.t);
428
428
  registerPluginCliCommands(program, loadConfig());
429
429
  }
@@ -4,7 +4,7 @@ import { G as resolveSymiAgentDir, T as resolveApiKeyForProvider, c as normalize
4
4
  import { t as normalizeChatType } from "./chat-type-DFDuk3FY.js";
5
5
  import { _ as kindFromMime, d as detectMime, h as isAudioFileName, p as getFileExtension } from "./image-ops-ByaQt43P.js";
6
6
  import { d as DEFAULT_IMESSAGE_ATTACHMENT_ROOTS, f as isInboundPathAllowed, m as resolveIMessageAttachmentRoots, n as loadConfig, p as mergeInboundPathRoots } from "./config-BmV60pPT.js";
7
- import { S as ensureSymiModelsJson, t as describeImageWithModel } from "./image-CHzdaNJ4.js";
7
+ import { S as ensureSymiModelsJson, t as describeImageWithModel } from "./image-DcpMiprB.js";
8
8
  import { n as collectProviderApiKeysForExecution, r as executeWithApiKeyRotation, t as parseGeminiAuth } from "./gemini-auth-CSlZZ1Pw.js";
9
9
  import { n as fetchWithTimeout } from "./fetch-timeout-BheTNyes.js";
10
10
  import { i as fetchRemoteMedia, n as getDefaultMediaLocalRoots, o as fetchWithSsrFGuard, r as MediaFetchError } from "./local-roots-CC8jiKDk.js";
@@ -4,7 +4,7 @@ import { $ as resolveSymiAgentDir, A as normalizeGoogleModelId, B as resolveApiK
4
4
  import { d as DEFAULT_IMESSAGE_ATTACHMENT_ROOTS, f as isInboundPathAllowed, m as resolveIMessageAttachmentRoots, n as loadConfig, p as mergeInboundPathRoots } from "./config-5SdHIcHU.js";
5
5
  import { c as detectMime, f as isAudioFileName, m as kindFromMime, u as getFileExtension } from "./image-ops-C7CauEK8.js";
6
6
  import { t as normalizeChatType } from "./chat-type-3FRbbjbq.js";
7
- import { S as ensureSymiModelsJson, t as describeImageWithModel } from "./image-CXu8W39c.js";
7
+ import { S as ensureSymiModelsJson, t as describeImageWithModel } from "./image-CuzFLQWC.js";
8
8
  import { n as collectProviderApiKeysForExecution, r as executeWithApiKeyRotation, t as parseGeminiAuth } from "./gemini-auth-Dy12ZAH3.js";
9
9
  import { n as fetchWithTimeout } from "./fetch-timeout-DL3f_O53.js";
10
10
  import { i as fetchRemoteMedia, n as getDefaultMediaLocalRoots, o as fetchWithSsrFGuard, r as MediaFetchError } from "./local-roots-DhZz0Ybs.js";