@symerian/symi 2.6.6 → 2.6.8

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 (163) hide show
  1. package/dist/{agents-DPdRUY_O.js → agents-DUCHzmZ7.js} +4 -4
  2. package/dist/{agents.config-Cr6DcdaD.js → agents.config-CHQebF9q.js} +1 -1
  3. package/dist/{agents.config-DIumfxnN.js → agents.config-CwoBiqZ_.js} +1 -1
  4. package/dist/{auth-choice-C5etRQcH.js → auth-choice-B1zaWakt.js} +1 -1
  5. package/dist/{auth-choice-z3-Baeyd.js → auth-choice-DGzjLihE.js} +1 -1
  6. package/dist/{banner-om7BRUIc.js → banner-Dy01rdll.js} +1 -1
  7. package/dist/build-info.json +3 -3
  8. package/dist/bundled/boot-md/handler.js +1 -1
  9. package/dist/bundled/session-memory/handler.js +1 -1
  10. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  11. package/dist/{channel-options-BqnokE7_.js → channel-options-Ba5tfq9-.js} +1 -1
  12. package/dist/{channel-options-Cb1PgfNV.js → channel-options-Cte5qJHT.js} +1 -1
  13. package/dist/{channel-web-DztB2W6w.js → channel-web-NGDI-tJN.js} +1 -1
  14. package/dist/{channels-cli-xlZ2mjBu.js → channels-cli-BDlDCL3R.js} +4 -4
  15. package/dist/{channels-cli-R2PHQWVd.js → channels-cli-CgNtcB-z.js} +4 -4
  16. package/dist/{cli-DLly6H0w.js → cli-C2ZGBmO9.js} +1 -1
  17. package/dist/{cli-DNGrFH7L.js → cli-Da_Dnvvp.js} +1 -1
  18. package/dist/{command-registry-xEOR2NPq.js → command-registry-CLcFUFJs.js} +9 -9
  19. package/dist/{completion-cli-CRhFwMiA.js → completion-cli-BzXhONEe.js} +2 -2
  20. package/dist/{completion-cli-CFJbuU6i.js → completion-cli-MbaQCbTj.js} +1 -1
  21. package/dist/{config-cli-CbdeNt0M.js → config-cli-BHHGJx1I.js} +1 -1
  22. package/dist/{config-cli-BaH8OVQ-.js → config-cli-CT6Q4rhy.js} +1 -1
  23. package/dist/{configure-BmNOfGox.js → configure-BOLt9A-A.js} +3 -3
  24. package/dist/{configure-D5dSJprr.js → configure-CVcHuLVe.js} +3 -3
  25. package/dist/{doctor-completion-DCc4SxWN.js → doctor-completion-BZ-FYLu9.js} +1 -1
  26. package/dist/{doctor-completion-D0L7wK2h.js → doctor-completion-CislKWHy.js} +1 -1
  27. package/dist/entry.js +1 -1
  28. package/dist/extensionAPI.js +1 -1
  29. package/dist/{gateway-cli-DYXn5A0z.js → gateway-cli-2yQf_hKZ.js} +168 -35
  30. package/dist/{gateway-cli-zN6V2qw8.js → gateway-cli-Bzz6Rduw.js} +167 -34
  31. package/dist/{glass-ui-ws-Cj9wbO1L.js → glass-ui-ws-ibSNo7RU.js} +7 -7
  32. package/dist/{glass-ui-ws-B7V2wHEu.js → glass-ui-ws-uRv3KH-0.js} +7 -7
  33. package/dist/{health-DUKLANXu.js → health-CBwxQHlQ.js} +1 -1
  34. package/dist/{health-BPOuBmYt.js → health-D4ySlvOE.js} +1 -1
  35. package/dist/{hooks-cli-BF0mbqlZ.js → hooks-cli-BFN2xMj8.js} +2 -2
  36. package/dist/{hooks-cli-BpfIySkB.js → hooks-cli-CreZeBlG.js} +2 -2
  37. package/dist/index.js +6 -6
  38. package/dist/llm-slug-generator.js +1 -1
  39. package/dist/{models-Bt8lm_nD.js → models-Dk7Q5cSF.js} +2 -2
  40. package/dist/{models-cli-bHYoiL5x.js → models-cli-C9Y-HfLg.js} +2 -2
  41. package/dist/{models-cli-BmBmBUgl.js → models-cli-DzSb3Scm.js} +3 -3
  42. package/dist/{onboard-ttzux1w7.js → onboard-D_PsLQiw.js} +2 -2
  43. package/dist/{onboard-i7lit3dF.js → onboard-N-KB8jvT.js} +2 -2
  44. package/dist/{onboard-channels-DEFF3Rjo.js → onboard-channels-Bp74i8iG.js} +1 -1
  45. package/dist/{onboard-channels-D0RHtaJE.js → onboard-channels-VuJyK9g-.js} +1 -1
  46. package/dist/{onboarding-CAlILYcN.js → onboarding-CRAQ2s_3.js} +3 -3
  47. package/dist/{onboarding-By0D-QmK.js → onboarding-D1AsOvXd.js} +3 -3
  48. package/dist/{onboarding.finalize-DSNIp08z.js → onboarding.finalize-DLUoLFNl.js} +6 -6
  49. package/dist/{onboarding.finalize-BDmc4k2T.js → onboarding.finalize-ZYLgVmdn.js} +5 -5
  50. package/dist/{pi-embedded-BzE5v-JN.js → pi-embedded-BSoqm4lP.js} +47 -52
  51. package/dist/{plugin-registry-C1ghjhOE.js → plugin-registry-CTu9B9S3.js} +1 -1
  52. package/dist/{plugin-registry-CDIOKK_i.js → plugin-registry-DDIcHkNU.js} +1 -1
  53. package/dist/plugin-sdk/{accounts-BToL3HlP.js → accounts-BtaOa4z_.js} +1 -1
  54. package/dist/plugin-sdk/{accounts-D9zGZU5t.js → accounts-Ddm33hQm.js} +3 -3
  55. package/dist/plugin-sdk/{accounts-Dtszw3Zn.js → accounts-s-AdhXVR.js} +1 -1
  56. package/dist/plugin-sdk/{active-listener-bEk__wbB.js → active-listener-BXYeALs0.js} +1 -1
  57. package/dist/plugin-sdk/{agent-scope-C3gMMKCU.js → agent-scope-CYYpcO9W.js} +2 -2
  58. package/dist/plugin-sdk/agents/pi-tools.validate-wrapper.d.ts +8 -8
  59. package/dist/plugin-sdk/{api-key-rotation-CVBMpnPc.js → api-key-rotation-D_sMvI5W.js} +1 -1
  60. package/dist/plugin-sdk/{audio-preflight-DoQQKlxa.js → audio-preflight-VpItkiy3.js} +24 -24
  61. package/dist/plugin-sdk/{bindings-BbwoUGPx.js → bindings-C7hRtgYW.js} +2 -2
  62. package/dist/plugin-sdk/{channel-activity-Ji7f0gqq.js → channel-activity-DoC1xtDu.js} +1 -1
  63. package/dist/plugin-sdk/{channel-web-CxwLjrWk.js → channel-web-BmV3Tuy0.js} +22 -22
  64. package/dist/plugin-sdk/{chrome-C7c_0I5M.js → chrome-B7RdxmJ0.js} +3 -3
  65. package/dist/plugin-sdk/{chunk-jvk9axTQ.js → chunk-Dw2XBYXv.js} +1 -1
  66. package/dist/plugin-sdk/{command-format-DSdvQ_M5.js → command-format-GKSevep4.js} +1 -1
  67. package/dist/plugin-sdk/{commands-registry-CQFbmUMs.js → commands-registry-COIaslGl.js} +4 -4
  68. package/dist/plugin-sdk/{config-DDkdiUOR.js → config-KlTNfkFF.js} +9 -9
  69. package/dist/plugin-sdk/{deliver-BZ6iNLl7.js → deliver-BZ99UKQq.js} +10 -10
  70. package/dist/plugin-sdk/{diagnostic-mFf4i4G9.js → diagnostic-05pm5Rxi.js} +1 -1
  71. package/dist/plugin-sdk/{image-BOYy0Ump.js → image-CLOPx7yW.js} +4 -4
  72. package/dist/plugin-sdk/{image-ops-Bnp6LXEx.js → image-ops-BlQR__MN.js} +1 -1
  73. package/dist/plugin-sdk/index.js +53 -53
  74. package/dist/plugin-sdk/{ir-Fb3qpcis.js → ir-BJ6BHE5b.js} +4 -4
  75. package/dist/plugin-sdk/{local-roots-Ckk1QfzI.js → local-roots-BHLNSI8U.js} +3 -3
  76. package/dist/plugin-sdk/{login-Bh3DZPam.js → login-DQMXuxOk.js} +7 -7
  77. package/dist/plugin-sdk/{login-qr-DbR7odSr.js → login-qr-BjVZSoCi.js} +9 -9
  78. package/dist/plugin-sdk/{manager-DckktAQ3.js → manager-CBSBFuFz.js} +8 -8
  79. package/dist/plugin-sdk/{manifest-registry-B3ugY9-f.js → manifest-registry-CPnHl_K3.js} +1 -1
  80. package/dist/plugin-sdk/{markdown-tables-Dfaqilz6.js → markdown-tables-BoYFajMu.js} +1 -1
  81. package/dist/plugin-sdk/{message-channel-BdI5Ra9S.js → message-channel-COTAJzHd.js} +1 -1
  82. package/dist/plugin-sdk/{model-selection-OpU8HN50.js → model-selection-CsbEfrS0.js} +4 -4
  83. package/dist/plugin-sdk/{outbound-rF6G8Xpr.js → outbound-B0e8KdaR.js} +7 -7
  84. package/dist/plugin-sdk/{outbound-attachment-DnVQfTG2.js → outbound-attachment-CnslKL38.js} +2 -2
  85. package/dist/plugin-sdk/{pi-auth-json-CJk8t14T.js → pi-auth-json-qWi7ZIYV.js} +5 -5
  86. package/dist/plugin-sdk/{pi-embedded-helpers-BveUP4hk.js → pi-embedded-helpers-CW630epe.js} +17 -17
  87. package/dist/plugin-sdk/{plugins-BbAvhC25.js → plugins-BNByVCIH.js} +4 -4
  88. package/dist/plugin-sdk/{pw-ai-DjGUsee-.js → pw-ai-CnbPIPY9.js} +8 -8
  89. package/dist/plugin-sdk/{qmd-manager-mjKcdwVr.js → qmd-manager-CH0XbIHf.js} +4 -4
  90. package/dist/plugin-sdk/{registry--_pGht6S.js → registry-D0xTnUWt.js} +2 -2
  91. package/dist/plugin-sdk/{replies-fI39rPGa.js → replies-LLcQL3w6.js} +3 -3
  92. package/dist/plugin-sdk/{reply-CyZfsjrl.js → reply-LQcs9anV.js} +123 -128
  93. package/dist/plugin-sdk/{reply-prefix-BHuV5t70.js → reply-prefix-uxfMZW4p.js} +1 -1
  94. package/dist/plugin-sdk/{resolve-outbound-target-BkCUbYGV.js → resolve-outbound-target-BiyAyTWz.js} +2 -2
  95. package/dist/plugin-sdk/{resolve-route-D3JH_D2N.js → resolve-route-B3CCBumQ.js} +3 -3
  96. package/dist/plugin-sdk/{retry-ilSJqnz9.js → retry-CwQ_iIj8.js} +1 -1
  97. package/dist/plugin-sdk/{runner-BVqnEfNe.js → runner-CGBT7tgF.js} +9 -9
  98. package/dist/plugin-sdk/{send-BtANzsAo.js → send-B2CEnVLL.js} +6 -6
  99. package/dist/plugin-sdk/{send-BHbXh8Ly.js → send-C5h_YxNb.js} +7 -7
  100. package/dist/plugin-sdk/{send-D6LMZJ_h.js → send-CRsR8-vO.js} +10 -10
  101. package/dist/plugin-sdk/{send-Bxdu6ZZy.js → send-CjOBB3Vo.js} +10 -10
  102. package/dist/plugin-sdk/{send-BMfJIhCk.js → send-pYqe432l.js} +6 -6
  103. package/dist/plugin-sdk/{session-kI0tzViQ.js → session-BsOrxiMj.js} +4 -4
  104. package/dist/plugin-sdk/{skill-commands-DCNXVERE.js → skill-commands-ff_01_r3.js} +5 -5
  105. package/dist/plugin-sdk/{skills-B1GeRYlu.js → skills-_yTP47Cd.js} +7 -7
  106. package/dist/plugin-sdk/{sqlite-Cq_7Cg4E.js → sqlite-CxAR5ttJ.js} +1 -1
  107. package/dist/plugin-sdk/{store-Do3t33-c.js → store-BdrNabcU.js} +2 -2
  108. package/dist/plugin-sdk/{subsystem-Coz2AgU8.js → subsystem-B2uDN3TV.js} +1 -1
  109. package/dist/plugin-sdk/{tables-DR0NmBeH.js → tables-DNwXwNFa.js} +1 -1
  110. package/dist/plugin-sdk/{target-errors-B7YyMnIi.js → target-errors-Paro1BjP.js} +2 -2
  111. package/dist/plugin-sdk/{thinking-DCNUIAHY.js → thinking-CXqf7WTe.js} +5 -5
  112. package/dist/plugin-sdk/{tokens-CWMflosr.js → tokens-bC3UVmVH.js} +1 -1
  113. package/dist/plugin-sdk/{tool-images-D7Lno-TE.js → tool-images-HJ2sfZDV.js} +2 -2
  114. package/dist/plugin-sdk/{tool-loop-detection-DU5sTIKg.js → tool-loop-detection-at_K42K7.js} +2 -2
  115. package/dist/plugin-sdk/web-DvzecOyx.js +65 -0
  116. package/dist/plugin-sdk/{whatsapp-actions-CcBzDuL-.js → whatsapp-actions-DfseosPO.js} +21 -21
  117. package/dist/{plugins-cli-BFCJyRBX.js → plugins-cli-DJUkvonf.js} +2 -2
  118. package/dist/{plugins-cli-jv-Bqq1t.js → plugins-cli-DdfBwKlP.js} +2 -2
  119. package/dist/{program-sDlUcw2S.js → program-DyPb-tj_.js} +7 -7
  120. package/dist/{program-context-N9-4Ubpp.js → program-context-Bz_GuT_l.js} +17 -17
  121. package/dist/{prompt-select-styled-BtG_t1Tf.js → prompt-select-styled-BKnaBZhj.js} +4 -4
  122. package/dist/{prompt-select-styled-eBoNrCn6.js → prompt-select-styled-CghdSf8F.js} +4 -4
  123. package/dist/{provider-auth-helpers-CqDTEFnD.js → provider-auth-helpers-BdNgfdWd.js} +1 -1
  124. package/dist/{provider-auth-helpers-CfBPNN7J.js → provider-auth-helpers-CXKXgdFl.js} +1 -1
  125. package/dist/{push-apns-CVRC-O3Q.js → push-apns-A--Taj2b.js} +1 -1
  126. package/dist/{push-apns-CHIVwHRD.js → push-apns-Cdjd6L8R.js} +1 -1
  127. package/dist/{register.agent-B0ExzmtM.js → register.agent-BLWVTdIg.js} +6 -6
  128. package/dist/{register.agent-DD2QErXm.js → register.agent-C4tjED3B.js} +5 -5
  129. package/dist/{register.configure-ByNKeAo7.js → register.configure-De6KxZc8.js} +6 -6
  130. package/dist/{register.configure-DpHCcS5d.js → register.configure-DkNQpMco.js} +6 -6
  131. package/dist/{register.maintenance-BMrBjqU4.js → register.maintenance-B7dlUmZQ.js} +7 -7
  132. package/dist/{register.maintenance-_S91q7Rv.js → register.maintenance-el_O34pN.js} +8 -8
  133. package/dist/{register.message-DZ45n1GX.js → register.message-Bg38q7xU.js} +2 -2
  134. package/dist/{register.message-BveFb6IW.js → register.message-CNub6pDr.js} +2 -2
  135. package/dist/{register.onboard-CLGWOBoy.js → register.onboard-DUIvvhd3.js} +4 -4
  136. package/dist/{register.onboard-CUTbssYt.js → register.onboard-OXQpAbIU.js} +4 -4
  137. package/dist/{register.setup-B_cLbC3d.js → register.setup-BAZ3txi6.js} +4 -4
  138. package/dist/{register.setup-CcDqU6WR.js → register.setup-BQLAOnSQ.js} +4 -4
  139. package/dist/{register.status-health-sessions-DgNzHYE-.js → register.status-health-sessions-BU25Fv8p.js} +3 -3
  140. package/dist/{register.status-health-sessions-CMJ_l4rs.js → register.status-health-sessions-bw_2svPd.js} +3 -3
  141. package/dist/{register.subclis-D6LLN38B.js → register.subclis-Bop-tTBx.js} +9 -9
  142. package/dist/{reply-DcyKvFor.js → reply-BR3MMmPE.js} +47 -52
  143. package/dist/{run-main-QW59Pk-I.js → run-main-DFp18fyd.js} +14 -14
  144. package/dist/{server-methods-D1W-tViM.js → server-methods-B7KrCq1B.js} +7 -7
  145. package/dist/{server-methods-BdXCfO_O.js → server-methods-BMrgMa55.js} +7 -7
  146. package/dist/{server-node-events-BwGehjys.js → server-node-events-DcIWSJrb.js} +2 -2
  147. package/dist/{server-node-events-DqVmWjof.js → server-node-events-tKdBKitQ.js} +2 -2
  148. package/dist/{status-CfLq5R5j.js → status-CChK9DsL.js} +2 -2
  149. package/dist/{status-BY4CnB2O.js → status-DAeh7JKa.js} +2 -2
  150. package/dist/{status-kPaSg3RB.js → status-DkAuXji3.js} +1 -1
  151. package/dist/{status-BvnWSBQl.js → status-Ta_hiT2w.js} +1 -1
  152. package/dist/{subagent-registry-CVQOC9Jw.js → subagent-registry-DovA8Baf.js} +47 -52
  153. package/dist/{unified-runner-DpWGASP3.js → unified-runner-OplgmcEq.js} +47 -52
  154. package/dist/{update-cli-DcUr7_Lg.js → update-cli-DPewzEht.js} +8 -8
  155. package/dist/{update-cli-BpSFY22r.js → update-cli-hfO-LduQ.js} +7 -7
  156. package/dist/{update-runner-DdPdhkw5.js → update-runner-DvkWGO1t.js} +1 -1
  157. package/dist/{update-runner-CPOm0f_6.js → update-runner-WFWqzZw8.js} +1 -1
  158. package/dist/{web-DhofKbBh.js → web-BbEzqR_T.js} +1 -1
  159. package/dist/{web-DqjNQqGK.js → web-CEP_xmdJ.js} +2 -2
  160. package/dist/{web-ZnFT5LP9.js → web-DMBrhq3h.js} +1 -1
  161. package/dist/{web-CHV60IdQ.js → web-WfZujXg4.js} +1 -1
  162. package/package.json +1 -1
  163. package/dist/plugin-sdk/web-C2OyRvIo.js +0 -65
@@ -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-CVQOC9Jw.js";
17
+ import "./subagent-registry-DovA8Baf.js";
18
18
  import "./sessions-CJXnZVjR.js";
19
19
  import "./tokens-Csntmwwn.js";
20
20
  import "./plugins-CwSlLxM8.js";
@@ -104,8 +104,8 @@ import "./table-D01d2GuY.js";
104
104
  import "./shared-D8K9MkWg.js";
105
105
  import "./auth-token-Cmrk2TPo.js";
106
106
  import "./logging-BGewRZy0.js";
107
- import { c as githubCopilotLoginCommand } from "./provider-auth-helpers-CqDTEFnD.js";
108
- import { C as modelsAliasesListCommand, S as modelsAliasesAddCommand, _ as modelsAuthOrderSetCommand, a as modelsStatusCommand, b as modelsAuthPasteTokenCommand, c as modelsImageFallbacksClearCommand, d as modelsFallbacksAddCommand, f as modelsFallbacksClearCommand, g as modelsAuthOrderGetCommand, h as modelsAuthOrderClearCommand, i as modelsScanCommand, l as modelsImageFallbacksListCommand, m as modelsFallbacksRemoveCommand, n as modelsSetImageCommand, o as modelsListCommand, p as modelsFallbacksListCommand, r as modelsSetCommand, s as modelsImageFallbacksAddCommand, u as modelsImageFallbacksRemoveCommand, v as modelsAuthAddCommand, w as modelsAliasesRemoveCommand, x as modelsAuthSetupTokenCommand, y as modelsAuthLoginCommand } from "./models-Bt8lm_nD.js";
107
+ import { c as githubCopilotLoginCommand } from "./provider-auth-helpers-BdNgfdWd.js";
108
+ import { C as modelsAliasesListCommand, S as modelsAliasesAddCommand, _ as modelsAuthOrderSetCommand, a as modelsStatusCommand, b as modelsAuthPasteTokenCommand, c as modelsImageFallbacksClearCommand, d as modelsFallbacksAddCommand, f as modelsFallbacksClearCommand, g as modelsAuthOrderGetCommand, h as modelsAuthOrderClearCommand, i as modelsScanCommand, l as modelsImageFallbacksListCommand, m as modelsFallbacksRemoveCommand, n as modelsSetImageCommand, o as modelsListCommand, p as modelsFallbacksListCommand, r as modelsSetCommand, s as modelsImageFallbacksAddCommand, u as modelsImageFallbacksRemoveCommand, v as modelsAuthAddCommand, w as modelsAliasesRemoveCommand, x as modelsAuthSetupTokenCommand, y as modelsAuthLoginCommand } from "./models-Dk7Q5cSF.js";
109
109
 
110
110
  //#region src/cli/models-cli.ts
111
111
  function runModelsCommand(action) {
@@ -11,8 +11,8 @@ import { t as createClackPrompter } from "./clack-prompter-B7pN13HV.js";
11
11
  import { a as gatewayInstallErrorHint, i as buildGatewayInstallPlan, r as isGatewayDaemonRuntime, t as DEFAULT_GATEWAY_DAEMON_RUNTIME } from "./daemon-runtime-2mwX-jqj.js";
12
12
  import { r as isSystemdUserServiceAvailable } from "./systemd-riq8uNJQ.js";
13
13
  import { t as resolveGatewayService } from "./service-Cl74hx8J.js";
14
- import { r as healthCommand } from "./health-BPOuBmYt.js";
15
- import { t as runOnboardingWizard } from "./onboarding-CAlILYcN.js";
14
+ import { r as healthCommand } from "./health-D4ySlvOE.js";
15
+ import { t as runOnboardingWizard } from "./onboarding-CRAQ2s_3.js";
16
16
  import { $ as setHuggingfaceApiKey, A as applyXaiConfig, B as applyVercelAiGatewayConfig, E as applyTogetherConfig, I as applyLitellmConfig, M as applyXiaomiConfig, O as applyVeniceConfig, P as applyZaiConfig, Q as setGeminiApiKey, R as applyCloudflareAiGatewayConfig, S as applyQianfanConfig, X as setAnthropicApiKey, Z as setCloudflareAiGatewayConfig, _ as applyMoonshotConfigCn, a as applyMinimaxApiConfig, at as setOpenrouterApiKey, b as applyOpenrouterConfig, ct as setTogetherApiKey, d as applyAuthProfileConfig, dt as setXaiApiKey, et as setKimiCodingApiKey, f as applyHuggingfaceConfig, ft as setXiaomiApiKey, g as applyMoonshotConfig, it as setOpencodeZenApiKey, l as applyMinimaxConfig, lt as setVeniceApiKey, m as applyKimiCodeConfig, n as validateAnthropicSetupToken, nt as setMinimaxApiKey, o as applyMinimaxApiConfigCn, ot as setQianfanApiKey, pt as setZaiApiKey, r as applyOpencodeZenConfig, rt as setMoonshotApiKey, st as setSyntheticApiKey, t as buildTokenProfileId, tt as setLitellmApiKey, ut as setVercelAiGatewayApiKey, w as applySyntheticConfig } from "./auth-token-BnOynwk4.js";
17
17
  import { n as logConfigUpdated } from "./logging-BzzwiKjv.js";
18
18
  import { n as isDeprecatedAuthChoice, r as normalizeLegacyOnboardAuthChoice } from "./auth-choice-legacy-Ch38-Kbr.js";
@@ -9,8 +9,8 @@ import { a as gatewayInstallErrorHint, i as buildGatewayInstallPlan, r as isGate
9
9
  import { t as assertSupportedRuntime } from "./runtime-guard-D7waq_Ho.js";
10
10
  import { r as isSystemdUserServiceAvailable } from "./systemd-DlMdyFDY.js";
11
11
  import { t as resolveGatewayService } from "./service-Cm9j9WzQ.js";
12
- import { r as healthCommand } from "./health-DUKLANXu.js";
13
- import { t as runOnboardingWizard } from "./onboarding-By0D-QmK.js";
12
+ import { r as healthCommand } from "./health-CBwxQHlQ.js";
13
+ import { t as runOnboardingWizard } from "./onboarding-D1AsOvXd.js";
14
14
  import { $ as setHuggingfaceApiKey, A as applyXaiConfig, B as applyVercelAiGatewayConfig, E as applyTogetherConfig, I as applyLitellmConfig, M as applyXiaomiConfig, O as applyVeniceConfig, P as applyZaiConfig, Q as setGeminiApiKey, R as applyCloudflareAiGatewayConfig, S as applyQianfanConfig, X as setAnthropicApiKey, Z as setCloudflareAiGatewayConfig, _ as applyMoonshotConfigCn, a as applyMinimaxApiConfig, at as setOpenrouterApiKey, b as applyOpenrouterConfig, ct as setTogetherApiKey, d as applyAuthProfileConfig, dt as setXaiApiKey, et as setKimiCodingApiKey, f as applyHuggingfaceConfig, ft as setXiaomiApiKey, g as applyMoonshotConfig, it as setOpencodeZenApiKey, l as applyMinimaxConfig, lt as setVeniceApiKey, m as applyKimiCodeConfig, n as validateAnthropicSetupToken, nt as setMinimaxApiKey, o as applyMinimaxApiConfigCn, ot as setQianfanApiKey, pt as setZaiApiKey, r as applyOpencodeZenConfig, rt as setMoonshotApiKey, st as setSyntheticApiKey, t as buildTokenProfileId, tt as setLitellmApiKey, ut as setVercelAiGatewayApiKey, w as applySyntheticConfig } from "./auth-token-Cmrk2TPo.js";
15
15
  import { n as logConfigUpdated } from "./logging-BGewRZy0.js";
16
16
  import { n as isDeprecatedAuthChoice, r as normalizeLegacyOnboardAuthChoice } from "./auth-choice-legacy-BKXTgyr4.js";
@@ -3,7 +3,7 @@ import { E as formatChannelSelectionLine, O as listChatChannels, T as formatChan
3
3
  import { t as formatCliCommand } from "./command-format-BtYOfWxC.js";
4
4
  import { h as normalizeAccountId, m as DEFAULT_ACCOUNT_ID } from "./session-key-DjZ7Z1hW.js";
5
5
  import { c as resolveAgentWorkspaceDir, l as resolveDefaultAgentId } from "./agent-scope-D-jRCY0d.js";
6
- import { m as loadSymiPlugins, p as createPluginLoaderLogger } from "./subagent-registry-CVQOC9Jw.js";
6
+ import { m as loadSymiPlugins, p as createPluginLoaderLogger } from "./subagent-registry-DovA8Baf.js";
7
7
  import { n as listChannelPlugins, t as getChannelPlugin } from "./plugins-CwSlLxM8.js";
8
8
  import { t as formatDocsLink } from "./links-DlWpl9Yv.js";
9
9
  import { r as listChannelPluginCatalogEntries } from "./catalog-DLQFKucJ.js";
@@ -1,5 +1,5 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
2
- import { dt as createPluginLoaderLogger, ft as loadSymiPlugins } from "./reply-DcyKvFor.js";
2
+ import { dt as createPluginLoaderLogger, ft as loadSymiPlugins } from "./reply-BR3MMmPE.js";
3
3
  import { h as normalizeAccountId, m as DEFAULT_ACCOUNT_ID } from "./session-key-DCt45XZa.js";
4
4
  import { a as formatChannelSelectionLine, i as formatChannelPrimerLine, s as listChatChannels } from "./registry-Cja8eT7G.js";
5
5
  import { t as createSubsystemLogger } from "./subsystem-D9vIQve0.js";
@@ -225,7 +225,7 @@ async function runOnboardingWizard(opts, runtime = defaultRuntime, prompter) {
225
225
  const { ensureAuthProfileStore } = await import("./model-selection-CyFvYcRt.js").then((n) => n.dt);
226
226
  const { promptAuthChoiceGrouped } = await import("./auth-choice-prompt-BLzEBA1v.js").then((n) => n.t);
227
227
  const { promptCustomApiConfig } = await import("./onboard-custom-C7O-zfQ1.js").then((n) => n.r);
228
- const { applyAuthChoice, resolvePreferredProviderForAuthChoice, warnIfModelConfigLooksOff } = await import("./auth-choice-z3-Baeyd.js").then((n) => n.t);
228
+ const { applyAuthChoice, resolvePreferredProviderForAuthChoice, warnIfModelConfigLooksOff } = await import("./auth-choice-DGzjLihE.js").then((n) => n.t);
229
229
  const { applyPrimaryModel, promptDefaultModel } = await import("./model-picker-Ddo3jHe-.js").then((n) => n.i);
230
230
  const authStore = ensureAuthProfileStore(void 0, { allowKeychainPrompt: false });
231
231
  const authChoiceFromPrompt = opts.authChoice === void 0;
@@ -278,7 +278,7 @@ async function runOnboardingWizard(opts, runtime = defaultRuntime, prompter) {
278
278
  if (opts.skipChannels ?? opts.skipProviders) await prompter.note("Skipping channel setup.", "Channels");
279
279
  else {
280
280
  const { listChannelPlugins } = await import("./plugins-DKDeQZF0.js").then((n) => n.i);
281
- const { setupChannels } = await import("./onboard-channels-D0RHtaJE.js").then((n) => n.n);
281
+ const { setupChannels } = await import("./onboard-channels-VuJyK9g-.js").then((n) => n.n);
282
282
  const quickstartAllowFromChannels = flow === "quickstart" ? listChannelPlugins().filter((plugin) => plugin.meta.quickstartAllowFrom).map((plugin) => plugin.id) : [];
283
283
  nextConfig = await setupChannels(nextConfig, runtime, prompter, {
284
284
  allowSignalInstall: true,
@@ -304,7 +304,7 @@ async function runOnboardingWizard(opts, runtime = defaultRuntime, prompter) {
304
304
  mode
305
305
  });
306
306
  await writeConfigFile(nextConfig);
307
- const { finalizeOnboardingWizard } = await import("./onboarding.finalize-BDmc4k2T.js");
307
+ const { finalizeOnboardingWizard } = await import("./onboarding.finalize-ZYLgVmdn.js");
308
308
  const { launchedTui } = await finalizeOnboardingWizard({
309
309
  flow,
310
310
  opts,
@@ -223,7 +223,7 @@ async function runOnboardingWizard(opts, runtime = defaultRuntime, prompter) {
223
223
  const { ensureAuthProfileStore } = await import("./auth-profiles-Q1xTr5SX.js").then((n) => n.t);
224
224
  const { promptAuthChoiceGrouped } = await import("./auth-choice-prompt-DVcYPG2v.js").then((n) => n.t);
225
225
  const { promptCustomApiConfig } = await import("./onboard-custom-DdWPfzJO.js").then((n) => n.r);
226
- const { applyAuthChoice, resolvePreferredProviderForAuthChoice, warnIfModelConfigLooksOff } = await import("./auth-choice-C5etRQcH.js").then((n) => n.t);
226
+ const { applyAuthChoice, resolvePreferredProviderForAuthChoice, warnIfModelConfigLooksOff } = await import("./auth-choice-B1zaWakt.js").then((n) => n.t);
227
227
  const { applyPrimaryModel, promptDefaultModel } = await import("./model-picker-D5nCutGW.js").then((n) => n.i);
228
228
  const authStore = ensureAuthProfileStore(void 0, { allowKeychainPrompt: false });
229
229
  const authChoiceFromPrompt = opts.authChoice === void 0;
@@ -276,7 +276,7 @@ async function runOnboardingWizard(opts, runtime = defaultRuntime, prompter) {
276
276
  if (opts.skipChannels ?? opts.skipProviders) await prompter.note("Skipping channel setup.", "Channels");
277
277
  else {
278
278
  const { listChannelPlugins } = await import("./plugins-CwSlLxM8.js").then((n) => n.i);
279
- const { setupChannels } = await import("./onboard-channels-DEFF3Rjo.js").then((n) => n.n);
279
+ const { setupChannels } = await import("./onboard-channels-Bp74i8iG.js").then((n) => n.n);
280
280
  const quickstartAllowFromChannels = flow === "quickstart" ? listChannelPlugins().filter((plugin) => plugin.meta.quickstartAllowFrom).map((plugin) => plugin.id) : [];
281
281
  nextConfig = await setupChannels(nextConfig, runtime, prompter, {
282
282
  allowSignalInstall: true,
@@ -302,7 +302,7 @@ async function runOnboardingWizard(opts, runtime = defaultRuntime, prompter) {
302
302
  mode
303
303
  });
304
304
  await writeConfigFile(nextConfig);
305
- const { finalizeOnboardingWizard } = await import("./onboarding.finalize-DSNIp08z.js");
305
+ const { finalizeOnboardingWizard } = await import("./onboarding.finalize-DLUoLFNl.js");
306
306
  const { launchedTui } = await finalizeOnboardingWizard({
307
307
  flow,
308
308
  opts,
@@ -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-CVQOC9Jw.js";
17
+ import "./subagent-registry-DovA8Baf.js";
18
18
  import "./sessions-CJXnZVjR.js";
19
19
  import "./tokens-Csntmwwn.js";
20
20
  import "./plugins-CwSlLxM8.js";
@@ -99,18 +99,18 @@ import "./prompt-style-DwCXob2h.js";
99
99
  import "./pairing-labels-D1HDboV2.js";
100
100
  import "./pi-tools.policy-De00gPXt.js";
101
101
  import "./note-DDecZomM.js";
102
- import "./register.subclis-D6LLN38B.js";
103
- import "./command-registry-xEOR2NPq.js";
102
+ import "./register.subclis-Bop-tTBx.js";
103
+ import "./command-registry-CLcFUFJs.js";
104
104
  import "./program-context-CqzR_m-7.js";
105
- import { r as installCompletion } from "./completion-cli-CRhFwMiA.js";
105
+ import { r as installCompletion } from "./completion-cli-BzXhONEe.js";
106
106
  import { a as gatewayInstallErrorHint, i as buildGatewayInstallPlan, n as GATEWAY_DAEMON_RUNTIME_OPTIONS, t as DEFAULT_GATEWAY_DAEMON_RUNTIME } from "./daemon-runtime-CfRwa6qh.js";
107
107
  import "./runtime-guard-D7waq_Ho.js";
108
108
  import { r as isSystemdUserServiceAvailable } from "./systemd-DlMdyFDY.js";
109
109
  import { t as resolveGatewayService } from "./service-Cm9j9WzQ.js";
110
- import { r as healthCommand } from "./health-DUKLANXu.js";
110
+ import { r as healthCommand } from "./health-CBwxQHlQ.js";
111
111
  import { t as ensureControlUiAssetsBuilt } from "./control-ui-assets-BseSWee1.js";
112
112
  import { t as formatHealthCheckFailure } from "./health-format-CzgUHmmX.js";
113
- import { r as ensureCompletionCacheExists, t as checkShellCompletionStatus } from "./doctor-completion-D0L7wK2h.js";
113
+ import { r as ensureCompletionCacheExists, t as checkShellCompletionStatus } from "./doctor-completion-CislKWHy.js";
114
114
  import { t as runTui } from "./tui-BJB80muc.js";
115
115
  import os from "node:os";
116
116
  import path from "node:path";
@@ -1,7 +1,7 @@
1
1
  import "./paths-Cqn-zk3M.js";
2
2
  import { h as pathExists, y as resolveUserPath } from "./utils-B-0b9bGM.js";
3
3
  import "./thinking-EAliFiVK.js";
4
- import "./reply-DcyKvFor.js";
4
+ import "./reply-BR3MMmPE.js";
5
5
  import "./registry-Cja8eT7G.js";
6
6
  import { p as restoreTerminalState } from "./subsystem-D9vIQve0.js";
7
7
  import "./exec-CWkblSrI.js";
@@ -103,16 +103,16 @@ import "./control-service-Bz7rxLWq.js";
103
103
  import "./stagger-BUClb97_.js";
104
104
  import "./channel-selection-DuWs0Aak.js";
105
105
  import "./runtime-guard-B37eizu-.js";
106
- import "./program-context-N9-4Ubpp.js";
106
+ import "./program-context-Bz_GuT_l.js";
107
107
  import "./note-DeHoW7xO.js";
108
- import { r as installCompletion } from "./completion-cli-CFJbuU6i.js";
108
+ import { r as installCompletion } from "./completion-cli-MbaQCbTj.js";
109
109
  import { a as gatewayInstallErrorHint, i as buildGatewayInstallPlan, n as GATEWAY_DAEMON_RUNTIME_OPTIONS, t as DEFAULT_GATEWAY_DAEMON_RUNTIME } from "./daemon-runtime-2mwX-jqj.js";
110
110
  import { r as isSystemdUserServiceAvailable } from "./systemd-riq8uNJQ.js";
111
111
  import { t as resolveGatewayService } from "./service-Cl74hx8J.js";
112
- import { r as healthCommand } from "./health-BPOuBmYt.js";
112
+ import { r as healthCommand } from "./health-D4ySlvOE.js";
113
113
  import { t as ensureControlUiAssetsBuilt } from "./control-ui-assets-Z947tKLt.js";
114
114
  import { t as formatHealthCheckFailure } from "./health-format-DSwnXZPU.js";
115
- import { r as ensureCompletionCacheExists, t as checkShellCompletionStatus } from "./doctor-completion-DCc4SxWN.js";
115
+ import { r as ensureCompletionCacheExists, t as checkShellCompletionStatus } from "./doctor-completion-BZ-FYLu9.js";
116
116
  import { t as runTui } from "./tui-CriznorL.js";
117
117
  import os from "node:os";
118
118
  import path from "node:path";
@@ -42339,25 +42339,10 @@ function validateShellCommand(command) {
42339
42339
  //#region src/agents/pi-tools.validate-wrapper.ts
42340
42340
  const log$1 = createSubsystemLogger("agents/tool-validate");
42341
42341
  const EXEC_TOOL_NAMES = new Set(["exec", "bash"]);
42342
- const FILE_TOOL_NAMES = new Set([
42343
- "write",
42344
- "read",
42345
- "edit",
42346
- "patch",
42347
- "file_write",
42348
- "file_edit",
42349
- "write_file",
42350
- "edit_file",
42351
- "create_file"
42352
- ]);
42353
- const FILE_PATH_KEYS = [
42354
- "file_path",
42355
- "path",
42356
- "filePath"
42357
- ];
42342
+ const GEMMA_MODEL_ID = "gemma";
42358
42343
  /**
42359
- * Wrap tools with argument validation. Exec/bash commands and file paths
42360
- * are validated. Other tools pass through unchanged.
42344
+ * Wrap ALL tools with universal string argument sanitization.
42345
+ * Exec/bash tools get additional structural command validation.
42361
42346
  *
42362
42347
  * Call this AFTER tools are created and the model profile is resolved.
42363
42348
  */
@@ -42367,44 +42352,64 @@ function wrapToolsWithArgValidation(tools, profile) {
42367
42352
  return tools;
42368
42353
  }
42369
42354
  const wrapped = tools.map((tool) => wrapToolWithArgValidation(tool));
42370
- const wrappedNames = wrapped.filter((t, i) => t !== tools[i]).map((t) => t.name);
42371
- log$1.debug(`[validate] applied to ${wrappedNames.length} tools: ${wrappedNames.join(",") || "(none matched)"}`);
42355
+ log$1.debug(`[validate] universal sanitizer applied to ${wrapped.length} tools`);
42372
42356
  return wrapped;
42373
42357
  }
42374
42358
  /**
42375
- * Clean a file path by stripping control token fragments.
42376
- * Returns null if the path is irreparably corrupted (empty after cleanup).
42359
+ * Sanitize a single string value: strip control tokens + residual fragments.
42360
+ * Returns the cleaned string, or the original if no changes needed.
42377
42361
  */
42378
- function cleanFilePath(filePath) {
42379
- let cleaned = filePath.replace(/<\|[^|>]*(?:\|>)?/g, "");
42380
- cleaned = cleanResidualTokenFragments(cleaned);
42381
- cleaned = cleaned.trim();
42382
- if (!cleaned || !/[a-zA-Z0-9/._~-]/.test(cleaned)) return {
42383
- valid: false,
42384
- cleaned
42385
- };
42362
+ function sanitizeString(value) {
42363
+ return cleanResidualTokenFragments(stripModelTokensAggressive(value, GEMMA_MODEL_ID));
42364
+ }
42365
+ /**
42366
+ * Check if a string contains control token patterns that need sanitization.
42367
+ * Fast check to avoid unnecessary work on clean strings.
42368
+ */
42369
+ function needsSanitization(value) {
42370
+ return value.includes("<|") || value.includes("|>") || /^[<"|]/.test(value);
42371
+ }
42372
+ /**
42373
+ * Recursively sanitize all string values in a params object.
42374
+ * Returns a new object if any values were changed, or the original if clean.
42375
+ */
42376
+ function sanitizeParams(params) {
42377
+ let changed = false;
42378
+ const cleaned = {};
42379
+ for (const [key, value] of Object.entries(params)) {
42380
+ if (typeof value === "string" && needsSanitization(value)) {
42381
+ const sanitized = sanitizeString(value);
42382
+ if (sanitized !== value) {
42383
+ cleaned[key] = sanitized;
42384
+ changed = true;
42385
+ continue;
42386
+ }
42387
+ }
42388
+ cleaned[key] = value;
42389
+ }
42386
42390
  return {
42387
- valid: true,
42388
- cleaned
42391
+ cleaned,
42392
+ changed
42389
42393
  };
42390
42394
  }
42391
42395
  /**
42392
- * Wrap a single tool with argument validation.
42396
+ * Wrap a single tool with universal argument sanitization.
42393
42397
  */
42394
42398
  function wrapToolWithArgValidation(tool) {
42395
42399
  const toolName = (tool.name ?? "").toLowerCase().trim();
42396
42400
  const isExecTool = EXEC_TOOL_NAMES.has(toolName);
42397
- const isFileTool = FILE_TOOL_NAMES.has(toolName);
42398
- if (!isExecTool && !isFileTool) return tool;
42399
42401
  const originalExecute = tool.execute;
42400
42402
  return {
42401
42403
  ...tool,
42402
42404
  execute(toolCallId, params, ...rest) {
42405
+ const { cleaned, changed } = sanitizeParams(params);
42406
+ if (changed) log$1.debug(`[validate] sanitized args for ${toolName}: ${Object.keys(params).filter((k) => cleaned[k] !== params[k]).join(",")}`);
42407
+ const effectiveParams = changed ? cleaned : params;
42403
42408
  if (isExecTool) {
42404
- const command = params.command ?? params.cmd;
42409
+ const command = effectiveParams.command ?? effectiveParams.cmd;
42405
42410
  if (typeof command !== "string") {
42406
- log$1.debug(`[validate] exec called without string command: keys=${Object.keys(params).join(",")}`);
42407
- return originalExecute.call(tool, toolCallId, params, ...rest);
42411
+ log$1.debug(`[validate] exec called without string command: keys=${Object.keys(effectiveParams).join(",")}`);
42412
+ return originalExecute.call(tool, toolCallId, effectiveParams, ...rest);
42408
42413
  }
42409
42414
  const result = validateShellCommand(command);
42410
42415
  if (!result.valid) {
@@ -42414,22 +42419,12 @@ function wrapToolWithArgValidation(tool) {
42414
42419
  if (result.cleaned !== command) {
42415
42420
  log$1.debug(`[validate] exec command cleaned: raw=${command.slice(0, 80)} → cleaned=${result.cleaned.slice(0, 80)}`);
42416
42421
  return originalExecute.call(tool, toolCallId, {
42417
- ...params,
42422
+ ...effectiveParams,
42418
42423
  command: result.cleaned
42419
42424
  }, ...rest);
42420
42425
  }
42421
- return originalExecute.call(tool, toolCallId, params, ...rest);
42422
42426
  }
42423
- const pathKey = FILE_PATH_KEYS.find((k) => typeof params[k] === "string");
42424
- if (!pathKey) return originalExecute.call(tool, toolCallId, params, ...rest);
42425
- const rawPath = params[pathKey];
42426
- if (!rawPath.includes("<|") && !rawPath.includes("|>") && !/^[<"|]/.test(rawPath)) return originalExecute.call(tool, toolCallId, params, ...rest);
42427
- const pathResult = cleanFilePath(rawPath);
42428
- 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.` });
42429
- return originalExecute.call(tool, toolCallId, {
42430
- ...params,
42431
- [pathKey]: pathResult.cleaned
42432
- }, ...rest);
42427
+ return originalExecute.call(tool, toolCallId, effectiveParams, ...rest);
42433
42428
  }
42434
42429
  };
42435
42430
  }
@@ -60601,7 +60596,7 @@ function isVoiceChannelType(type) {
60601
60596
  function createDefaultDeps() {
60602
60597
  return {
60603
60598
  sendMessageWhatsApp: async (...args) => {
60604
- const { sendMessageWhatsApp } = await import("./web-CHV60IdQ.js");
60599
+ const { sendMessageWhatsApp } = await import("./web-WfZujXg4.js");
60605
60600
  return await sendMessageWhatsApp(...args);
60606
60601
  },
60607
60602
  sendMessageTelegram: async (...args) => {
@@ -75881,7 +75876,7 @@ function loadWebLoginQr() {
75881
75876
  return webLoginQrPromise;
75882
75877
  }
75883
75878
  function loadWebChannel() {
75884
- webChannelPromise ??= import("./web-CHV60IdQ.js");
75879
+ webChannelPromise ??= import("./web-WfZujXg4.js");
75885
75880
  return webChannelPromise;
75886
75881
  }
75887
75882
  function loadWhatsAppActions() {
@@ -2,7 +2,7 @@ import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
2
2
  import { M as getActivePluginRegistry, o as createSubsystemLogger } from "./entry.js";
3
3
  import { c as resolveAgentWorkspaceDir, l as resolveDefaultAgentId } from "./agent-scope-D-jRCY0d.js";
4
4
  import { i as loadConfig } from "./config-DHBLS1Hl.js";
5
- import { m as loadSymiPlugins } from "./subagent-registry-CVQOC9Jw.js";
5
+ import { m as loadSymiPlugins } from "./subagent-registry-DovA8Baf.js";
6
6
 
7
7
  //#region src/cli/plugin-registry.ts
8
8
  var plugin_registry_exports = /* @__PURE__ */ __exportAll({ ensurePluginRegistryLoaded: () => ensurePluginRegistryLoaded });
@@ -1,5 +1,5 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
2
- import { ft as loadSymiPlugins } from "./reply-DcyKvFor.js";
2
+ import { ft as loadSymiPlugins } from "./reply-BR3MMmPE.js";
3
3
  import { d as getActivePluginRegistry } from "./registry-Cja8eT7G.js";
4
4
  import { t as createSubsystemLogger } from "./subsystem-D9vIQve0.js";
5
5
  import { c as resolveAgentWorkspaceDir, l as resolveDefaultAgentId } from "./agent-scope-CgUHAtCo.js";
@@ -1,5 +1,5 @@
1
1
  import { p as normalizeAccountId } from "./session-key-C_0eELjb.js";
2
- import { _ as createAccountListHelpers } from "./accounts-D9zGZU5t.js";
2
+ import { _ as createAccountListHelpers } from "./accounts-Ddm33hQm.js";
3
3
 
4
4
  //#region src/signal/accounts.ts
5
5
  const { listAccountIds, resolveDefaultAccountId } = createAccountListHelpers("signal");
@@ -1,8 +1,8 @@
1
1
  import { f as DEFAULT_ACCOUNT_ID, p as normalizeAccountId } from "./session-key-C_0eELjb.js";
2
2
  import { a as resolveOAuthDir } from "./paths-DR2yt_mP.js";
3
- import { P as resolveUserPath, W as info, X as success, k as jidToE164, tt as getChildLogger } from "./registry--_pGht6S.js";
4
- import { i as defaultRuntime } from "./subsystem-Coz2AgU8.js";
5
- import { t as formatCliCommand } from "./command-format-DSdvQ_M5.js";
3
+ import { P as resolveUserPath, W as info, X as success, k as jidToE164, tt as getChildLogger } from "./registry-D0xTnUWt.js";
4
+ import { i as defaultRuntime } from "./subsystem-B2uDN3TV.js";
5
+ import { t as formatCliCommand } from "./command-format-GKSevep4.js";
6
6
  import fs from "node:fs";
7
7
  import path from "node:path";
8
8
  import fs$1 from "node:fs/promises";
@@ -1,5 +1,5 @@
1
1
  import { p as normalizeAccountId } from "./session-key-C_0eELjb.js";
2
- import { _ as createAccountListHelpers } from "./accounts-D9zGZU5t.js";
2
+ import { _ as createAccountListHelpers } from "./accounts-Ddm33hQm.js";
3
3
 
4
4
  //#region src/imessage/accounts.ts
5
5
  const { listAccountIds, resolveDefaultAccountId } = createAccountListHelpers("imessage");
@@ -1,5 +1,5 @@
1
1
  import { f as DEFAULT_ACCOUNT_ID } from "./session-key-C_0eELjb.js";
2
- import { t as formatCliCommand } from "./command-format-DSdvQ_M5.js";
2
+ import { t as formatCliCommand } from "./command-format-GKSevep4.js";
3
3
 
4
4
  //#region src/web/active-listener.ts
5
5
  const listeners = /* @__PURE__ */ new Map();
@@ -1,7 +1,7 @@
1
1
  import { _ as isCronSessionKey, s as normalizeAgentId, t as DEFAULT_AGENT_ID, v as isSubagentSessionKey, y as parseAgentSessionKey } from "./session-key-C_0eELjb.js";
2
2
  import { s as resolveStateDir, u as resolveRequiredHomeDir } from "./paths-DR2yt_mP.js";
3
- import { P as resolveUserPath, U as danger, W as info, Y as shouldLogVerbose, Z as warn, j as pathExists, nt as getLogger, q as logVerboseConsole } from "./registry--_pGht6S.js";
4
- import { i as defaultRuntime, t as createSubsystemLogger } from "./subsystem-Coz2AgU8.js";
3
+ import { P as resolveUserPath, U as danger, W as info, Y as shouldLogVerbose, Z as warn, j as pathExists, nt as getLogger, q as logVerboseConsole } from "./registry-D0xTnUWt.js";
4
+ import { i as defaultRuntime, t as createSubsystemLogger } from "./subsystem-B2uDN3TV.js";
5
5
  import fs from "node:fs";
6
6
  import path from "node:path";
7
7
  import os from "node:os";
@@ -1,23 +1,23 @@
1
1
  /**
2
- * Tool argument validation wrapper validates exec/bash commands and
3
- * file paths before execution when the model profile has validateToolArgs enabled.
2
+ * Universal tool argument sanitizerstrips model control tokens from ALL
3
+ * string arguments on ALL tools when the model profile has validateToolArgs
4
+ * enabled. Exec/bash commands get additional structural validation.
4
5
  *
5
- * Gated on ModelProfile.filters.validateToolArgs. Returns an instructive
6
- * error message when corruption is detected, giving the model a chance
7
- * to retry with clean arguments.
6
+ * Gated on ModelProfile.filters.validateToolArgs. Claude gets passthrough.
7
+ * Gemma/Ollama profiles get full sanitization.
8
8
  *
9
9
  * @module
10
10
  */
11
11
  import type { ModelProfile } from "../config/model-profiles.js";
12
12
  import type { AnyAgentTool } from "./pi-tools.types.js";
13
13
  /**
14
- * Wrap tools with argument validation. Exec/bash commands and file paths
15
- * are validated. Other tools pass through unchanged.
14
+ * Wrap ALL tools with universal string argument sanitization.
15
+ * Exec/bash tools get additional structural command validation.
16
16
  *
17
17
  * Call this AFTER tools are created and the model profile is resolved.
18
18
  */
19
19
  export declare function wrapToolsWithArgValidation(tools: AnyAgentTool[], profile: ModelProfile): AnyAgentTool[];
20
20
  /**
21
- * Wrap a single tool with argument validation.
21
+ * Wrap a single tool with universal argument sanitization.
22
22
  */
23
23
  export declare function wrapToolWithArgValidation(tool: AnyAgentTool): AnyAgentTool;
@@ -1,4 +1,4 @@
1
- import { c as normalizeProviderId } from "./model-selection-OpU8HN50.js";
1
+ import { c as normalizeProviderId } from "./model-selection-CsbEfrS0.js";
2
2
  import { n as formatErrorMessage } from "./errors-Bv8oZiTO.js";
3
3
 
4
4
  //#region src/infra/gemini-auth.ts
@@ -1,34 +1,34 @@
1
- import "./accounts-D9zGZU5t.js";
1
+ import "./accounts-Ddm33hQm.js";
2
2
  import "./paths-DR2yt_mP.js";
3
3
  import "./github-copilot-token-D9X2phUj.js";
4
- import "./plugins-BbAvhC25.js";
5
- import { K as logVerbose, Y as shouldLogVerbose } from "./registry--_pGht6S.js";
6
- import "./config-DDkdiUOR.js";
7
- import "./subsystem-Coz2AgU8.js";
8
- import "./command-format-DSdvQ_M5.js";
9
- import "./model-selection-OpU8HN50.js";
10
- import "./agent-scope-C3gMMKCU.js";
11
- import "./manifest-registry-B3ugY9-f.js";
4
+ import "./plugins-BNByVCIH.js";
5
+ import { K as logVerbose, Y as shouldLogVerbose } from "./registry-D0xTnUWt.js";
6
+ import "./config-KlTNfkFF.js";
7
+ import "./subsystem-B2uDN3TV.js";
8
+ import "./command-format-GKSevep4.js";
9
+ import "./model-selection-CsbEfrS0.js";
10
+ import "./agent-scope-CYYpcO9W.js";
11
+ import "./manifest-registry-CPnHl_K3.js";
12
12
  import "./redact-DPnDWsnT.js";
13
13
  import "./errors-Bv8oZiTO.js";
14
- import "./image-ops-Bnp6LXEx.js";
14
+ import "./image-ops-BlQR__MN.js";
15
15
  import "./ssrf-DKZ8eBrk.js";
16
- import "./local-roots-Ckk1QfzI.js";
17
- import "./message-channel-BdI5Ra9S.js";
18
- import "./bindings-BbwoUGPx.js";
19
- import "./tool-images-D7Lno-TE.js";
20
- import { a as resolveMediaAttachmentLocalRoots, n as createMediaAttachmentCache, o as runCapability, r as normalizeMediaAttachments, t as buildProviderRegistry, u as isAudioAttachment } from "./runner-BVqnEfNe.js";
21
- import "./skills-B1GeRYlu.js";
22
- import "./chrome-C7c_0I5M.js";
23
- import "./thinking-DCNUIAHY.js";
24
- import "./accounts-Dtszw3Zn.js";
25
- import "./accounts-BToL3HlP.js";
26
- import "./pi-embedded-helpers-BveUP4hk.js";
16
+ import "./local-roots-BHLNSI8U.js";
17
+ import "./message-channel-COTAJzHd.js";
18
+ import "./bindings-C7hRtgYW.js";
19
+ import "./tool-images-HJ2sfZDV.js";
20
+ import { a as resolveMediaAttachmentLocalRoots, n as createMediaAttachmentCache, o as runCapability, r as normalizeMediaAttachments, t as buildProviderRegistry, u as isAudioAttachment } from "./runner-CGBT7tgF.js";
21
+ import "./skills-_yTP47Cd.js";
22
+ import "./chrome-B7RdxmJ0.js";
23
+ import "./thinking-CXqf7WTe.js";
24
+ import "./accounts-s-AdhXVR.js";
25
+ import "./accounts-BtaOa4z_.js";
26
+ import "./pi-embedded-helpers-CW630epe.js";
27
27
  import "./paths-A0xdf3yk.js";
28
- import "./store-Do3t33-c.js";
29
- import "./image-BOYy0Ump.js";
28
+ import "./store-BdrNabcU.js";
29
+ import "./image-CLOPx7yW.js";
30
30
  import "./pi-model-discovery-LbcEa65a.js";
31
- import "./api-key-rotation-CVBMpnPc.js";
31
+ import "./api-key-rotation-D_sMvI5W.js";
32
32
 
33
33
  //#region src/media-understanding/audio-preflight.ts
34
34
  /**
@@ -1,6 +1,6 @@
1
1
  import { p as normalizeAccountId, s as normalizeAgentId } from "./session-key-C_0eELjb.js";
2
- import { s as normalizeChatChannelId } from "./registry--_pGht6S.js";
3
- import { c as resolveDefaultAgentId } from "./agent-scope-C3gMMKCU.js";
2
+ import { s as normalizeChatChannelId } from "./registry-D0xTnUWt.js";
3
+ import { c as resolveDefaultAgentId } from "./agent-scope-CYYpcO9W.js";
4
4
 
5
5
  //#region src/routing/bindings.ts
6
6
  function normalizeBindingChannelId(raw) {
@@ -1,4 +1,4 @@
1
- import { n as retryAsync, t as resolveRetryConfig } from "./retry-ilSJqnz9.js";
1
+ import { n as retryAsync, t as resolveRetryConfig } from "./retry-CwQ_iIj8.js";
2
2
  import { n as formatErrorMessage } from "./errors-Bv8oZiTO.js";
3
3
  import { RateLimitError } from "@buape/carbon";
4
4
 
@@ -1,28 +1,28 @@
1
1
  import { a as buildGroupHistoryKey, n as DEFAULT_MAIN_KEY, r as buildAgentMainSessionKey, s as normalizeAgentId } from "./session-key-C_0eELjb.js";
2
- import { f as readWebSelfId, o as getWebAuthAgeMs, r as resolveWhatsAppAccount } from "./accounts-D9zGZU5t.js";
3
- import { E as enqueueSystemEvent, G as resolveMentionGating, W as shouldAckReactionForWhatsApp, X as buildHistoryContextFromEntries, Y as DEFAULT_GROUP_HISTORY_LIMIT, _ as resolveEnvelopeFormatOptions, c as computeBackoff, d as formatDurationPrecise, f as dispatchReplyWithBufferedBlockDispatcher, g as formatInboundEnvelope, h as resolveInboundDebounceMs, ht as createDedupeCache, l as sleepWithAbort, m as createInboundDebouncer, n as normalizeGroupActivation, nt as buildMentionRegexes, r as parseActivationCommand, rt as normalizeMentionText, t as getReplyFromConfig, tt as recordPendingHistoryEntryIfEnabled, u as buildPairingReply, v as hasControlCommand, y as shouldComputeCommandAuthorized } from "./reply-CyZfsjrl.js";
4
- import { A as normalizeE164, B as toWhatsappJid, K as logVerbose, N as resolveJidToE164, O as isSelfChatMode, R as sleep, Y as shouldLogVerbose, k as jidToE164, s as normalizeChatChannelId, tt as getChildLogger, x as clamp } from "./registry--_pGht6S.js";
5
- import { n as loadConfig } from "./config-DDkdiUOR.js";
6
- import { i as defaultRuntime, t as createSubsystemLogger } from "./subsystem-Coz2AgU8.js";
7
- import { t as formatCliCommand } from "./command-format-DSdvQ_M5.js";
8
- import { n as recordChannelActivity } from "./channel-activity-Ji7f0gqq.js";
9
- import { t as getAgentScopedMediaLocalRoots } from "./local-roots-Ckk1QfzI.js";
10
- import { a as loadWebMedia } from "./ir-Fb3qpcis.js";
11
- import { c as resolveChunkMode, i as chunkMarkdownTextWithMode, l as resolveTextChunkLimit } from "./chunk-jvk9axTQ.js";
12
- import { n as resolveMarkdownTableMode } from "./markdown-tables-Dfaqilz6.js";
13
- import { t as convertMarkdownTables } from "./tables-DR0NmBeH.js";
14
- import { G as readChannelAllowFromStore, J as upsertChannelPairingRequest, K as readChannelAllowFromStoreSync, nt as toLocationContext, tt as formatLocationText } from "./send-D6LMZJ_h.js";
15
- import { f as registerUnhandledRejectionHandler } from "./runner-BVqnEfNe.js";
16
- import { l as resolveIdentityNamePrefix, n as createReplyPrefixOptions, u as resolveMessagePrefix } from "./reply-prefix-BHuV5t70.js";
17
- import { F as resolveChannelGroupRequireMention, P as resolveChannelGroupPolicy } from "./thinking-DCNUIAHY.js";
18
- import { Xt as resolveGroupSessionKey, _t as updateLastRoute, gt as recordSessionMetaFromInbound, ht as readSessionUpdatedAt, mt as loadSessionStore } from "./pi-embedded-helpers-BveUP4hk.js";
2
+ import { f as readWebSelfId, o as getWebAuthAgeMs, r as resolveWhatsAppAccount } from "./accounts-Ddm33hQm.js";
3
+ import { E as enqueueSystemEvent, G as resolveMentionGating, W as shouldAckReactionForWhatsApp, X as buildHistoryContextFromEntries, Y as DEFAULT_GROUP_HISTORY_LIMIT, _ as resolveEnvelopeFormatOptions, c as computeBackoff, d as formatDurationPrecise, f as dispatchReplyWithBufferedBlockDispatcher, g as formatInboundEnvelope, h as resolveInboundDebounceMs, ht as createDedupeCache, l as sleepWithAbort, m as createInboundDebouncer, n as normalizeGroupActivation, nt as buildMentionRegexes, r as parseActivationCommand, rt as normalizeMentionText, t as getReplyFromConfig, tt as recordPendingHistoryEntryIfEnabled, u as buildPairingReply, v as hasControlCommand, y as shouldComputeCommandAuthorized } from "./reply-LQcs9anV.js";
4
+ import { A as normalizeE164, B as toWhatsappJid, K as logVerbose, N as resolveJidToE164, O as isSelfChatMode, R as sleep, Y as shouldLogVerbose, k as jidToE164, s as normalizeChatChannelId, tt as getChildLogger, x as clamp } from "./registry-D0xTnUWt.js";
5
+ import { n as loadConfig } from "./config-KlTNfkFF.js";
6
+ import { i as defaultRuntime, t as createSubsystemLogger } from "./subsystem-B2uDN3TV.js";
7
+ import { t as formatCliCommand } from "./command-format-GKSevep4.js";
8
+ import { n as recordChannelActivity } from "./channel-activity-DoC1xtDu.js";
9
+ import { t as getAgentScopedMediaLocalRoots } from "./local-roots-BHLNSI8U.js";
10
+ import { a as loadWebMedia } from "./ir-BJ6BHE5b.js";
11
+ import { c as resolveChunkMode, i as chunkMarkdownTextWithMode, l as resolveTextChunkLimit } from "./chunk-Dw2XBYXv.js";
12
+ import { n as resolveMarkdownTableMode } from "./markdown-tables-BoYFajMu.js";
13
+ import { t as convertMarkdownTables } from "./tables-DNwXwNFa.js";
14
+ import { G as readChannelAllowFromStore, J as upsertChannelPairingRequest, K as readChannelAllowFromStoreSync, nt as toLocationContext, tt as formatLocationText } from "./send-CRsR8-vO.js";
15
+ import { f as registerUnhandledRejectionHandler } from "./runner-CGBT7tgF.js";
16
+ import { l as resolveIdentityNamePrefix, n as createReplyPrefixOptions, u as resolveMessagePrefix } from "./reply-prefix-uxfMZW4p.js";
17
+ import { F as resolveChannelGroupRequireMention, P as resolveChannelGroupPolicy } from "./thinking-CXqf7WTe.js";
18
+ import { Xt as resolveGroupSessionKey, _t as updateLastRoute, gt as recordSessionMetaFromInbound, ht as readSessionUpdatedAt, mt as loadSessionStore } from "./pi-embedded-helpers-CW630epe.js";
19
19
  import { s as resolveStorePath } from "./paths-A0xdf3yk.js";
20
- import { i as saveMediaBuffer } from "./store-Do3t33-c.js";
20
+ import { i as saveMediaBuffer } from "./store-BdrNabcU.js";
21
21
  import { t as finalizeInboundContext } from "./inbound-context-D5EzMeL_.js";
22
- import { n as resolveAgentRoute, t as buildAgentSessionKey } from "./resolve-route-D3JH_D2N.js";
23
- import { r as setActiveWebListener } from "./active-listener-bEk__wbB.js";
24
- import { i as markdownToWhatsApp, r as sendReactionWhatsApp } from "./outbound-rF6G8Xpr.js";
25
- import { i as waitForWaConnection, n as formatError, r as getStatusCode, t as createWaSocket } from "./session-kI0tzViQ.js";
22
+ import { n as resolveAgentRoute, t as buildAgentSessionKey } from "./resolve-route-B3CCBumQ.js";
23
+ import { r as setActiveWebListener } from "./active-listener-BXYeALs0.js";
24
+ import { i as markdownToWhatsApp, r as sendReactionWhatsApp } from "./outbound-B0e8KdaR.js";
25
+ import { i as waitForWaConnection, n as formatError, r as getStatusCode, t as createWaSocket } from "./session-BsOrxiMj.js";
26
26
  import { randomUUID } from "node:crypto";
27
27
  import { DisconnectReason, downloadMediaMessage, extractMessageContent, getContentType, isJidGroup, normalizeMessageContent } from "@whiskeysockets/baileys";
28
28
 
@@ -1,6 +1,6 @@
1
- import { b as CONFIG_DIR } from "./registry--_pGht6S.js";
2
- import { n as loadConfig } from "./config-DDkdiUOR.js";
3
- import { t as createSubsystemLogger } from "./subsystem-Coz2AgU8.js";
1
+ import { b as CONFIG_DIR } from "./registry-D0xTnUWt.js";
2
+ import { n as loadConfig } from "./config-KlTNfkFF.js";
3
+ import { t as createSubsystemLogger } from "./subsystem-B2uDN3TV.js";
4
4
  import { i as isErrno } from "./errors-Bv8oZiTO.js";
5
5
  import { s as resolvePinnedHostnameWithPolicy } from "./ssrf-DKZ8eBrk.js";
6
6
  import fs from "node:fs";
@@ -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 { t as INTERNAL_MESSAGE_CHANNEL } from "./message-channel-BdI5Ra9S.js";
3
+ import { t as INTERNAL_MESSAGE_CHANNEL } from "./message-channel-COTAJzHd.js";
4
4
 
5
5
  //#region src/markdown/fences.ts
6
6
  function parseFenceSpans(buffer) {