@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.
- package/dist/{agents-Bi50kp6u.js → agents-qLMWAYwU.js} +4 -4
- package/dist/{agents.config-BcTeP94V.js → agents.config-BfjAwFCr.js} +1 -1
- package/dist/{agents.config-Duce7lam.js → agents.config-BmdFH4J5.js} +1 -1
- package/dist/{audio-preflight-DHTaS5U1.js → audio-preflight-BVaaZWkg.js} +4 -4
- package/dist/{audio-preflight-C40mKAp7.js → audio-preflight-CPBOQV4I.js} +4 -4
- package/dist/{auth-choice-Dyq-0MNq.js → auth-choice-D1u_GPfQ.js} +1 -1
- package/dist/{auth-choice-BFIBR4l9.js → auth-choice-zFq3WRQ0.js} +1 -1
- package/dist/{banner-D50f_0qf.js → banner-DpH44qlJ.js} +1 -1
- package/dist/build-info.json +3 -3
- package/dist/bundled/boot-md/handler.js +6 -6
- package/dist/bundled/session-memory/handler.js +6 -6
- package/dist/canvas-host/a2ui/.bundle.hash +1 -1
- package/dist/{channel-options-BFqaanEt.js → channel-options-0iOfzVR3.js} +1 -1
- package/dist/{channel-options-BvBcjqyk.js → channel-options-C8tKm8re.js} +1 -1
- package/dist/{channel-web-BQtFg4IP.js → channel-web-DYinYBz4.js} +1 -1
- package/dist/{channels-cli-BuTH-iVi.js → channels-cli-93tLT17t.js} +4 -4
- package/dist/{channels-cli-BYFQdWnL.js → channels-cli-C8HgSMTH.js} +4 -4
- package/dist/{chrome-DYZwl5Gv.js → chrome-D2SKJnR7.js} +5 -5
- package/dist/{chrome-CDJYxX5a.js → chrome-DkaXoP36.js} +5 -5
- package/dist/{cli-r2L-UK6y.js → cli-BYJyRW2M.js} +1 -1
- package/dist/{cli-eOBlVLcC.js → cli-DapZXGSB.js} +1 -1
- package/dist/{command-registry-D-pwcAIW.js → command-registry-9EhYc6da.js} +9 -9
- package/dist/{completion-cli-DIx7KyOG.js → completion-cli-BFZv3K5D.js} +2 -2
- package/dist/{completion-cli-DMO2OGTm.js → completion-cli-CCeQlMlC.js} +1 -1
- package/dist/{config-cli-BsDxqYDU.js → config-cli-DbWMIBUz.js} +1 -1
- package/dist/{config-cli-seaVWVru.js → config-cli-Dv2mtIeM.js} +1 -1
- package/dist/{configure-BmPwuHXL.js → configure-B8zV6Hxj.js} +3 -3
- package/dist/{configure-CqbKA0_V.js → configure-CVQf2UJE.js} +3 -3
- package/dist/{deliver-BH0l3UKW.js → deliver-C-37cZUe.js} +1 -1
- package/dist/{deliver-dODxSv3b.js → deliver-C46-vyqg.js} +1 -1
- package/dist/{doctor-completion-DMjs7-Qa.js → doctor-completion-BunqvoqZ.js} +1 -1
- package/dist/{doctor-completion-C2IV3lKi.js → doctor-completion-CLeX1kaN.js} +1 -1
- package/dist/entry.js +1 -1
- package/dist/extensionAPI.js +6 -6
- package/dist/{gateway-cli-BanaeKQ_.js → gateway-cli-Co-tp-WC.js} +9 -9
- package/dist/{gateway-cli-C-J_s559.js → gateway-cli-DMey_29a.js} +9 -9
- package/dist/{glass-ui-ws-DUzp9m0D.js → glass-ui-ws-C4O227UO.js} +7 -7
- package/dist/{glass-ui-ws-DK7x3Tz7.js → glass-ui-ws-CKb1jTZR.js} +7 -7
- package/dist/{health-DK6rAOhC.js → health-CDGOsNeD.js} +1 -1
- package/dist/{health-BpHgCv-u.js → health-CM1asUG8.js} +1 -1
- package/dist/{hooks-cli-D-75G_66.js → hooks-cli-DFKB3Z6X.js} +2 -2
- package/dist/{hooks-cli-Cin_3tFg.js → hooks-cli-Tx0TzSju.js} +2 -2
- package/dist/{image-CXu8W39c.js → image-CuzFLQWC.js} +1 -1
- package/dist/{image-CHzdaNJ4.js → image-DcpMiprB.js} +1 -1
- package/dist/index.js +6 -6
- package/dist/llm-slug-generator.js +6 -6
- package/dist/{models-CeKIXf5B.js → models-CiqHYwje.js} +2 -2
- package/dist/{models-cli-2NcPKR9A.js → models-cli-B-b-gBKG.js} +2 -2
- package/dist/{models-cli-DN4AVlpI.js → models-cli-B4ATSsNS.js} +3 -3
- package/dist/{onboard-BukRqcRH.js → onboard-B_ECX48L.js} +2 -2
- package/dist/{onboard-BcxDiUl_.js → onboard-DcnGZKZX.js} +2 -2
- package/dist/{onboard-channels-DS6s341R.js → onboard-channels-FFQPpuEN.js} +1 -1
- package/dist/{onboard-channels-HPxu77wp.js → onboard-channels-pfSGhg_C.js} +1 -1
- package/dist/{onboarding-DI-o_sax.js → onboarding-BU14cspo.js} +3 -3
- package/dist/{onboarding-B8uz24jt.js → onboarding-jhZxQcZ3.js} +3 -3
- package/dist/{onboarding.finalize-CfE_AEto.js → onboarding.finalize-B8oOMfHc.js} +6 -6
- package/dist/{onboarding.finalize-Bn2e61yb.js → onboarding.finalize-ByZT4dF5.js} +5 -5
- package/dist/{pi-embedded-B5qBa69e.js → pi-embedded-BY9AnmoP.js} +203 -27
- package/dist/{pi-embedded-helpers-lgx_U5KS.js → pi-embedded-helpers-B8kqLWns.js} +4 -4
- package/dist/{pi-embedded-helpers-pubKo8HQ.js → pi-embedded-helpers-CfqDGQ9J.js} +4 -4
- package/dist/{plugin-registry-NIUxULTk.js → plugin-registry-CNf1_8hj.js} +1 -1
- package/dist/{plugin-registry-cj99EI0k.js → plugin-registry-DXWJkJX6.js} +1 -1
- package/dist/plugin-sdk/{accounts-BtaOa4z_.js → accounts-BToL3HlP.js} +1 -1
- package/dist/plugin-sdk/{accounts-Ddm33hQm.js → accounts-D9zGZU5t.js} +3 -3
- package/dist/plugin-sdk/{accounts-s-AdhXVR.js → accounts-Dtszw3Zn.js} +1 -1
- package/dist/plugin-sdk/{active-listener-BXYeALs0.js → active-listener-bEk__wbB.js} +1 -1
- package/dist/plugin-sdk/{agent-scope-CYYpcO9W.js → agent-scope-C3gMMKCU.js} +2 -2
- package/dist/plugin-sdk/agents/model-token-filter.d.ts +10 -0
- package/dist/plugin-sdk/agents/pi-tools.validate-wrapper.d.ts +23 -0
- package/dist/plugin-sdk/agents/pi-tools.validate.d.ts +26 -0
- package/dist/plugin-sdk/agents/tool-loop-detection.d.ts +3 -1
- package/dist/plugin-sdk/{api-key-rotation-D_sMvI5W.js → api-key-rotation-CVBMpnPc.js} +1 -1
- package/dist/plugin-sdk/{audio-preflight-VpItkiy3.js → audio-preflight-DoQQKlxa.js} +24 -24
- package/dist/plugin-sdk/{bindings-C7hRtgYW.js → bindings-BbwoUGPx.js} +2 -2
- package/dist/plugin-sdk/{channel-activity-DoC1xtDu.js → channel-activity-Ji7f0gqq.js} +1 -1
- package/dist/plugin-sdk/{channel-web-CSd16cDi.js → channel-web-DZQQ0mzN.js} +22 -22
- package/dist/plugin-sdk/{chrome-B7RdxmJ0.js → chrome-C7c_0I5M.js} +3 -3
- package/dist/plugin-sdk/{chunk-Dw2XBYXv.js → chunk-jvk9axTQ.js} +1 -1
- package/dist/plugin-sdk/{command-format-GKSevep4.js → command-format-DSdvQ_M5.js} +1 -1
- package/dist/plugin-sdk/{commands-registry-COIaslGl.js → commands-registry-CQFbmUMs.js} +4 -4
- package/dist/plugin-sdk/config/model-profiles.d.ts +2 -0
- package/dist/plugin-sdk/{config-KlTNfkFF.js → config-DDkdiUOR.js} +9 -9
- package/dist/plugin-sdk/{deliver-BZ99UKQq.js → deliver-BZ6iNLl7.js} +10 -10
- package/dist/plugin-sdk/{diagnostic-05pm5Rxi.js → diagnostic-mFf4i4G9.js} +1 -1
- package/dist/plugin-sdk/{image-CLOPx7yW.js → image-BOYy0Ump.js} +4 -4
- package/dist/plugin-sdk/{image-ops-BlQR__MN.js → image-ops-Bnp6LXEx.js} +1 -1
- package/dist/plugin-sdk/index.js +53 -53
- package/dist/plugin-sdk/infra/diagnostic-events.d.ts +1 -1
- package/dist/plugin-sdk/{ir-BJ6BHE5b.js → ir-Fb3qpcis.js} +4 -4
- package/dist/plugin-sdk/{local-roots-BHLNSI8U.js → local-roots-Ckk1QfzI.js} +3 -3
- package/dist/plugin-sdk/logging/diagnostic-session-state.d.ts +2 -0
- package/dist/plugin-sdk/logging/diagnostic.d.ts +1 -1
- package/dist/plugin-sdk/{login-DQMXuxOk.js → login-Bh3DZPam.js} +7 -7
- package/dist/plugin-sdk/{login-qr-BjVZSoCi.js → login-qr-DbR7odSr.js} +9 -9
- package/dist/plugin-sdk/{manager-CBSBFuFz.js → manager-DckktAQ3.js} +8 -8
- package/dist/plugin-sdk/{manifest-registry-CPnHl_K3.js → manifest-registry-B3ugY9-f.js} +1 -1
- package/dist/plugin-sdk/{markdown-tables-BoYFajMu.js → markdown-tables-Dfaqilz6.js} +1 -1
- package/dist/plugin-sdk/{message-channel-COTAJzHd.js → message-channel-BdI5Ra9S.js} +1 -1
- package/dist/plugin-sdk/{model-selection-CsbEfrS0.js → model-selection-OpU8HN50.js} +4 -4
- package/dist/plugin-sdk/{outbound-attachment-CnslKL38.js → outbound-attachment-DnVQfTG2.js} +2 -2
- package/dist/plugin-sdk/{outbound-B0e8KdaR.js → outbound-rF6G8Xpr.js} +7 -7
- package/dist/plugin-sdk/{pi-auth-json-qWi7ZIYV.js → pi-auth-json-CJk8t14T.js} +5 -5
- package/dist/plugin-sdk/{pi-embedded-helpers-CW630epe.js → pi-embedded-helpers-BveUP4hk.js} +17 -17
- package/dist/plugin-sdk/{plugins-BNByVCIH.js → plugins-BbAvhC25.js} +4 -4
- package/dist/plugin-sdk/{pw-ai-CnbPIPY9.js → pw-ai-DjGUsee-.js} +8 -8
- package/dist/plugin-sdk/{qmd-manager-CH0XbIHf.js → qmd-manager-mjKcdwVr.js} +4 -4
- package/dist/plugin-sdk/{registry-D0xTnUWt.js → registry--_pGht6S.js} +2 -2
- package/dist/plugin-sdk/{replies-LLcQL3w6.js → replies-fI39rPGa.js} +3 -3
- package/dist/plugin-sdk/{reply-CkqSfQZN.js → reply-DvZeyOVA.js} +263 -87
- package/dist/plugin-sdk/{reply-prefix-uxfMZW4p.js → reply-prefix-BHuV5t70.js} +1 -1
- package/dist/plugin-sdk/{resolve-outbound-target-BiyAyTWz.js → resolve-outbound-target-BkCUbYGV.js} +2 -2
- package/dist/plugin-sdk/{resolve-route-B3CCBumQ.js → resolve-route-D3JH_D2N.js} +3 -3
- package/dist/plugin-sdk/{retry-CwQ_iIj8.js → retry-ilSJqnz9.js} +1 -1
- package/dist/plugin-sdk/{runner-CGBT7tgF.js → runner-BVqnEfNe.js} +9 -9
- package/dist/plugin-sdk/{send-C5h_YxNb.js → send-BHbXh8Ly.js} +7 -7
- package/dist/plugin-sdk/{send-pYqe432l.js → send-BMfJIhCk.js} +6 -6
- package/dist/plugin-sdk/{send-B2CEnVLL.js → send-BtANzsAo.js} +6 -6
- package/dist/plugin-sdk/{send-CjOBB3Vo.js → send-Bxdu6ZZy.js} +10 -10
- package/dist/plugin-sdk/{send-CRsR8-vO.js → send-D6LMZJ_h.js} +10 -10
- package/dist/plugin-sdk/{session-BsOrxiMj.js → session-kI0tzViQ.js} +4 -4
- package/dist/plugin-sdk/{skill-commands-ff_01_r3.js → skill-commands-DCNXVERE.js} +5 -5
- package/dist/plugin-sdk/{skills-_yTP47Cd.js → skills-B1GeRYlu.js} +7 -7
- package/dist/plugin-sdk/{sqlite-CxAR5ttJ.js → sqlite-Cq_7Cg4E.js} +1 -1
- package/dist/plugin-sdk/{store-BdrNabcU.js → store-Do3t33-c.js} +2 -2
- package/dist/plugin-sdk/{subsystem-B2uDN3TV.js → subsystem-Coz2AgU8.js} +1 -1
- package/dist/plugin-sdk/{tables-DNwXwNFa.js → tables-DR0NmBeH.js} +1 -1
- package/dist/plugin-sdk/{target-errors-Paro1BjP.js → target-errors-B7YyMnIi.js} +2 -2
- package/dist/plugin-sdk/{thinking-CXqf7WTe.js → thinking-DCNUIAHY.js} +5 -5
- package/dist/plugin-sdk/{tokens-bC3UVmVH.js → tokens-CWMflosr.js} +1 -1
- package/dist/plugin-sdk/{tool-images-HJ2sfZDV.js → tool-images-D7Lno-TE.js} +2 -2
- package/dist/plugin-sdk/{tool-loop-detection-BVA6fax-.js → tool-loop-detection-DU5sTIKg.js} +55 -5
- package/dist/plugin-sdk/web-BCsJFuQu.js +65 -0
- package/dist/plugin-sdk/{whatsapp-actions-DfseosPO.js → whatsapp-actions-CcBzDuL-.js} +21 -21
- package/dist/{plugins-cli-CcjxxESJ.js → plugins-cli-BiedlZMy.js} +2 -2
- package/dist/{plugins-cli-D8hhTHZD.js → plugins-cli-C9TYM40P.js} +2 -2
- package/dist/{program-D09h71pS.js → program-bnWda72r.js} +7 -7
- package/dist/{program-context-CLJSWBZr.js → program-context-CY1jWc5A.js} +17 -17
- package/dist/{prompt-select-styled-DQqZEGoo.js → prompt-select-styled-BEnZY8wI.js} +4 -4
- package/dist/{prompt-select-styled-zRUqu0c8.js → prompt-select-styled-B_lFTtqp.js} +4 -4
- package/dist/{provider-auth-helpers-LzJ2WQIc.js → provider-auth-helpers-DApJuzBd.js} +1 -1
- package/dist/{provider-auth-helpers-16r2WHNe.js → provider-auth-helpers-DcNKxc7D.js} +1 -1
- package/dist/{push-apns-DJddAK3u.js → push-apns-CKKHlj6j.js} +1 -1
- package/dist/{push-apns-B5xZKIxK.js → push-apns-DA7UMNQH.js} +1 -1
- package/dist/{pw-ai-De-KR9_s.js → pw-ai-1htA-NnS.js} +1 -1
- package/dist/{pw-ai-B5asscAD.js → pw-ai-m0mj2KWK.js} +1 -1
- package/dist/{register.agent-D7NKuUkY.js → register.agent-8lxVlmzQ.js} +5 -5
- package/dist/{register.agent-CP_sigRh.js → register.agent-ulu0VmOg.js} +6 -6
- package/dist/{register.configure-BEsGd0PR.js → register.configure-45--Sly1.js} +6 -6
- package/dist/{register.configure-BjRLNatb.js → register.configure-rq0h5r3X.js} +6 -6
- package/dist/{register.maintenance-DD6TNFtV.js → register.maintenance-CXbxRtWI.js} +8 -8
- package/dist/{register.maintenance-CN6KUuX7.js → register.maintenance-DyEJx7NY.js} +7 -7
- package/dist/{register.message-DEUcNly1.js → register.message-C7Yh1uky.js} +2 -2
- package/dist/{register.message-DMVC_Sqm.js → register.message-CiN_pt6K.js} +2 -2
- package/dist/{register.onboard-CP6RP90V.js → register.onboard-BWaRkbei.js} +4 -4
- package/dist/{register.onboard-J1pgV7lz.js → register.onboard-e_2hc2Rm.js} +4 -4
- package/dist/{register.setup-Dhc3jKpK.js → register.setup-BIIFHtF7.js} +4 -4
- package/dist/{register.setup-BeHpW3xI.js → register.setup-zwh90Vn-.js} +4 -4
- package/dist/{register.status-health-sessions-b-lWNsTM.js → register.status-health-sessions-D6t5maEr.js} +3 -3
- package/dist/{register.status-health-sessions-DDkC0aoW.js → register.status-health-sessions-O-sVAFHE.js} +3 -3
- package/dist/{register.subclis-BJqiT8Q2.js → register.subclis-DOiZocR6.js} +9 -9
- package/dist/{reply-D40cmAci.js → reply-05js8eGB.js} +189 -13
- package/dist/{run-main-BruREeZ6.js → run-main-u-Eyc8Wm.js} +14 -14
- package/dist/{runner-DUBExAb5.js → runner-BcQ0sF9T.js} +1 -1
- package/dist/{runner-WAG0M5s9.js → runner-CU9l0uJh.js} +1 -1
- package/dist/{server-methods-K-0MHs8x.js → server-methods-Bvl1xubo.js} +7 -7
- package/dist/{server-methods-Cyw_WS3A.js → server-methods-Dds-iEoY.js} +7 -7
- package/dist/{server-node-events-89R9Ryky.js → server-node-events-Qp-gJMET.js} +2 -2
- package/dist/{server-node-events-RA8RurtC.js → server-node-events-qGqpsPxm.js} +2 -2
- package/dist/{status-DHJLMwQN.js → status-BATOXGRi.js} +2 -2
- package/dist/{status-CtNKWuzg.js → status-BRSo-LY3.js} +2 -2
- package/dist/{status-Kv_hsY8N.js → status-BqQ9mm64.js} +1 -1
- package/dist/{status-BSMEjz4q.js → status-CfYa1Q9K.js} +1 -1
- package/dist/{subagent-registry-Cb5e_x99.js → subagent-registry-lbDgDwLy.js} +189 -13
- package/dist/{tool-loop-detection-BgbtzUGc.js → tool-loop-detection-C7TCF2V2.js} +53 -3
- package/dist/{tool-loop-detection-BU3fbtCd.js → tool-loop-detection-D7qjFnRh.js} +53 -3
- package/dist/{tool-loop-detection-B6j1r-Wk.js → tool-loop-detection-DPVtQOfM.js} +53 -3
- package/dist/{tool-loop-detection-D0kUzUGu.js → tool-loop-detection-DR_rrIA1.js} +53 -3
- package/dist/{unified-runner-CkJLTsTK.js → unified-runner-B4ICXRlg.js} +203 -27
- package/dist/{update-cli-CrRBoiVU.js → update-cli-BOaP4XyQ.js} +8 -8
- package/dist/{update-cli-Bl66LJZ4.js → update-cli-R8-SSkbS.js} +7 -7
- package/dist/{update-runner-DxpSPK-f.js → update-runner-B8UmqtLI.js} +1 -1
- package/dist/{update-runner-FgrqoxvV.js → update-runner-CWJ4pC1b.js} +1 -1
- package/dist/{web-BYRKX5Ln.js → web-BWybtnEa.js} +2 -2
- package/dist/{web-RePh7lRy.js → web-CQH9fSkH.js} +6 -6
- package/dist/{web-Czp0JS6-.js → web-CSrDbJJ7.js} +1 -1
- package/dist/{web-D99WHLTL.js → web-DBFW0ejP.js} +6 -6
- package/package.json +1 -1
- 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-
|
|
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-
|
|
108
|
-
import "./onboarding-
|
|
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-
|
|
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-
|
|
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-
|
|
112
|
-
import "./onboarding-
|
|
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-
|
|
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-
|
|
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-
|
|
118
|
-
import { r as healthCommand } from "./health-
|
|
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-
|
|
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-
|
|
112
|
-
import { r as healthCommand } from "./health-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
199
|
-
const { registerPluginCliCommands } = await import("./cli-
|
|
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-
|
|
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-
|
|
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-
|
|
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] =
|
|
23027
|
-
else if (Array.isArray(value)) result[key] = value.map((item) => typeof item === "string" ?
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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";
|