@symerian/symi 2.6.0 → 2.6.1
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-DQIz-_on.js} +4 -4
- package/dist/{agents.config-Duce7lam.js → agents.config-CIJRaVWl.js} +1 -1
- package/dist/{agents.config-BcTeP94V.js → agents.config-D8WPDf-m.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-BFIBR4l9.js → auth-choice-BqFbNDuP.js} +1 -1
- package/dist/{auth-choice-Dyq-0MNq.js → auth-choice-DTDyJL1r.js} +1 -1
- package/dist/{banner-D50f_0qf.js → banner-DYDCxnDL.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-BvBcjqyk.js → channel-options-CvHSm_Kx.js} +1 -1
- package/dist/{channel-options-BFqaanEt.js → channel-options-vBCJhJB7.js} +1 -1
- package/dist/{channel-web-BQtFg4IP.js → channel-web-CM2LyWZW.js} +1 -1
- package/dist/{channels-cli-BYFQdWnL.js → channels-cli-D5H3Wcho.js} +4 -4
- package/dist/{channels-cli-BuTH-iVi.js → channels-cli-DzOjNNFn.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-8hqssnRJ.js} +1 -1
- package/dist/{cli-eOBlVLcC.js → cli-DNZwCDRe.js} +1 -1
- package/dist/{command-registry-D-pwcAIW.js → command-registry-CHtN2HeK.js} +9 -9
- package/dist/{completion-cli-DMO2OGTm.js → completion-cli-C8y_J5KC.js} +1 -1
- package/dist/{completion-cli-DIx7KyOG.js → completion-cli-Cov6N3BO.js} +2 -2
- package/dist/{config-cli-BsDxqYDU.js → config-cli-B2REEd2l.js} +1 -1
- package/dist/{config-cli-seaVWVru.js → config-cli-BwO0xAbV.js} +1 -1
- package/dist/{configure-BmPwuHXL.js → configure-BWSYSi2-.js} +3 -3
- package/dist/{configure-CqbKA0_V.js → configure-C6yNe33U.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-BKKzstt6.js} +1 -1
- package/dist/{doctor-completion-C2IV3lKi.js → doctor-completion-D7CDLFLg.js} +1 -1
- package/dist/entry.js +1 -1
- package/dist/extensionAPI.js +6 -6
- package/dist/{gateway-cli-C-J_s559.js → gateway-cli-BhFM4Bkm.js} +9 -9
- package/dist/{gateway-cli-BanaeKQ_.js → gateway-cli-Datohp3m.js} +9 -9
- package/dist/{glass-ui-ws-DK7x3Tz7.js → glass-ui-ws-BzqfD_wX.js} +7 -7
- package/dist/{glass-ui-ws-DUzp9m0D.js → glass-ui-ws-D9yvYULL.js} +7 -7
- package/dist/{health-DK6rAOhC.js → health-BjwDRAdd.js} +1 -1
- package/dist/{health-BpHgCv-u.js → health-C5XJPwpt.js} +1 -1
- package/dist/{hooks-cli-Cin_3tFg.js → hooks-cli-CafMq9Vr.js} +2 -2
- package/dist/{hooks-cli-D-75G_66.js → hooks-cli-U12oVyLH.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-Bo4iHJy-.js} +2 -2
- package/dist/{models-cli-2NcPKR9A.js → models-cli-6aNi3eN9.js} +2 -2
- package/dist/{models-cli-DN4AVlpI.js → models-cli-B5vh-XK8.js} +3 -3
- package/dist/{onboard-BcxDiUl_.js → onboard-Bm-pmstf.js} +2 -2
- package/dist/{onboard-channels-HPxu77wp.js → onboard-channels-BRd1cXye.js} +1 -1
- package/dist/{onboard-channels-DS6s341R.js → onboard-channels-CUl5U8kV.js} +1 -1
- package/dist/{onboard-BukRqcRH.js → onboard-f-GJ26Ix.js} +2 -2
- package/dist/{onboarding-B8uz24jt.js → onboarding-CvBDWlBJ.js} +3 -3
- package/dist/{onboarding-DI-o_sax.js → onboarding-DIVKvosg.js} +3 -3
- package/dist/{onboarding.finalize-CfE_AEto.js → onboarding.finalize-DJX6mSLa.js} +6 -6
- package/dist/{onboarding.finalize-Bn2e61yb.js → onboarding.finalize-WSac-JKd.js} +5 -5
- package/dist/{pi-embedded-B5qBa69e.js → pi-embedded-BmbbC1Sb.js} +133 -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-2zUJMasm.js} +1 -1
- package/dist/{plugin-registry-cj99EI0k.js → plugin-registry-5yf-hu_W.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-DPyyTvFo.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-QAcAd9ev.js} +193 -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-DaTTL9M0.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-D4eRESV2.js} +2 -2
- package/dist/{plugins-cli-D8hhTHZD.js → plugins-cli-DksVl33N.js} +2 -2
- package/dist/{program-D09h71pS.js → program-BjORH7Cc.js} +7 -7
- package/dist/{program-context-CLJSWBZr.js → program-context-DaNGrTOm.js} +17 -17
- package/dist/{prompt-select-styled-zRUqu0c8.js → prompt-select-styled-QaS2zul_.js} +4 -4
- package/dist/{prompt-select-styled-DQqZEGoo.js → prompt-select-styled-YOj4xigd.js} +4 -4
- package/dist/{provider-auth-helpers-16r2WHNe.js → provider-auth-helpers-BAGT_RXV.js} +1 -1
- package/dist/{provider-auth-helpers-LzJ2WQIc.js → provider-auth-helpers-DCEbm2hz.js} +1 -1
- package/dist/{push-apns-B5xZKIxK.js → push-apns-BECodU1i.js} +1 -1
- package/dist/{push-apns-DJddAK3u.js → push-apns-Bek3ANJa.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-B34lxx7F.js} +5 -5
- package/dist/{register.agent-CP_sigRh.js → register.agent-DJHQo-Iq.js} +6 -6
- package/dist/{register.configure-BEsGd0PR.js → register.configure-BdhhIzb0.js} +6 -6
- package/dist/{register.configure-BjRLNatb.js → register.configure-DC_-t5kj.js} +6 -6
- package/dist/{register.maintenance-DD6TNFtV.js → register.maintenance-CITur3O_.js} +8 -8
- package/dist/{register.maintenance-CN6KUuX7.js → register.maintenance-cs-A4kHF.js} +7 -7
- package/dist/{register.message-DEUcNly1.js → register.message--RhtnEYn.js} +2 -2
- package/dist/{register.message-DMVC_Sqm.js → register.message-PIaHm2pZ.js} +2 -2
- package/dist/{register.onboard-CP6RP90V.js → register.onboard-CTJQoDcK.js} +4 -4
- package/dist/{register.onboard-J1pgV7lz.js → register.onboard-DucZgrF7.js} +4 -4
- package/dist/{register.setup-Dhc3jKpK.js → register.setup-2ZiUN7ui.js} +4 -4
- package/dist/{register.setup-BeHpW3xI.js → register.setup-DD4Rgkt9.js} +4 -4
- package/dist/{register.status-health-sessions-b-lWNsTM.js → register.status-health-sessions-BqD7L8XL.js} +3 -3
- package/dist/{register.status-health-sessions-DDkC0aoW.js → register.status-health-sessions-sLgA92t7.js} +3 -3
- package/dist/{register.subclis-BJqiT8Q2.js → register.subclis-B2dGWFur.js} +9 -9
- package/dist/{reply-D40cmAci.js → reply-DYnTEYoa.js} +119 -13
- package/dist/{run-main-BruREeZ6.js → run-main-DWmu2b6D.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-C8EWZt2g.js} +7 -7
- package/dist/{server-methods-Cyw_WS3A.js → server-methods-vDGoM3xL.js} +7 -7
- package/dist/{server-node-events-89R9Ryky.js → server-node-events-CKi12bol.js} +2 -2
- package/dist/{server-node-events-RA8RurtC.js → server-node-events-DFwGbkcO.js} +2 -2
- package/dist/{status-DHJLMwQN.js → status--iNVOTMO.js} +2 -2
- package/dist/{status-CtNKWuzg.js → status-B1_iHrOg.js} +2 -2
- package/dist/{status-BSMEjz4q.js → status-BQcdARV4.js} +1 -1
- package/dist/{status-Kv_hsY8N.js → status-DiX0DAtH.js} +1 -1
- package/dist/{subagent-registry-Cb5e_x99.js → subagent-registry-CXrOOgPW.js} +119 -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-CulJZMxc.js} +133 -27
- package/dist/{update-cli-Bl66LJZ4.js → update-cli-560gprSp.js} +7 -7
- package/dist/{update-cli-CrRBoiVU.js → update-cli-D1pLX3eo.js} +8 -8
- package/dist/{update-runner-DxpSPK-f.js → update-runner-BQxFFCGc.js} +1 -1
- package/dist/{update-runner-FgrqoxvV.js → update-runner-CLKHrONW.js} +1 -1
- package/dist/{web-Czp0JS6-.js → web-Bqrgp43v.js} +1 -1
- package/dist/{web-D99WHLTL.js → web-D4qJ9XKP.js} +6 -6
- package/dist/{web-BYRKX5Ln.js → web-Dr5cOn-1.js} +2 -2
- package/dist/{web-RePh7lRy.js → web-hHX9a9YO.js} +6 -6
- package/package.json +1 -1
- package/dist/plugin-sdk/web-DdTTil50.js +0 -65
|
@@ -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-
|
|
4
|
+
import "./reply-DYnTEYoa.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-
|
|
106
|
+
import "./program-context-DaNGrTOm.js";
|
|
107
107
|
import "./note-DeHoW7xO.js";
|
|
108
|
-
import { r as installCompletion } from "./completion-cli-
|
|
108
|
+
import { r as installCompletion } from "./completion-cli-C8y_J5KC.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-
|
|
112
|
+
import { r as healthCommand } from "./health-BjwDRAdd.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-
|
|
115
|
+
import { r as ensureCompletionCacheExists, t as checkShellCompletionStatus } from "./doctor-completion-D7CDLFLg.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";
|
|
@@ -14,7 +14,7 @@ import { a as logoutWeb, i as logWebSelfId, l as readWebSelfId, p as webAuthExis
|
|
|
14
14
|
import { t as normalizeChatType } from "./chat-type-DFDuk3FY.js";
|
|
15
15
|
import { a as resolveSlackWebClientOptions, c as buildSlackBlocksFallbackText, i as createSlackWebClient, l as parseSlackTarget, o as parseSlackBlocksInput, s as validateSlackBlocksArray, t as sendMessageSlack, u as resolveSlackChannelId } from "./send-D-hWrHoH.js";
|
|
16
16
|
import { $ as fetchChannelPermissionsDiscord, A as unpinMessageDiscord, B as listScheduledEventsDiscord, C as editMessageDiscord, Ct as resolveTimestampMs, D as pinMessageDiscord, Dt as normalizeChannelSlug, E as listThreadsDiscord, Et as buildChannelKeyCandidates, F as fetchMemberInfoDiscord, G as uploadStickerDiscord, H as timeoutMemberDiscord, I as fetchRoleInfoDiscord, J as editChannelDiscord, K as createChannelDiscord, L as fetchVoiceStatusDiscord, M as banMemberDiscord, N as createScheduledEventDiscord, O as readMessagesDiscord, Ot as resolveChannelEntryMatchWithFallback, P as fetchChannelInfoDiscord, Q as stripUndefinedFields, R as kickMemberDiscord, S as deleteMessageDiscord, St as resolveDiscordSystemLocation, T as listPinsDiscord, Tt as applyChannelMatchMeta, U as listGuildEmojisDiscord, V as removeRoleDiscord, W as uploadEmojiDiscord, X as removeChannelPermissionDiscord, Y as moveChannelDiscord, Z as setChannelPermissionDiscord, _ as sendPollDiscord, _t as resolveDiscordShouldRequireMention, a as removeReactionDiscord, at as resolveDiscordChannelId, b as sendWebhookMessageDiscord, bt as formatDiscordReactionEmoji, c as formatDiscordComponentEventText, ct as allowListMatches$1, d as parseDiscordModalCustomId, dt as normalizeDiscordSlug, et as hasAnyGuildPermissionDiscord, f as parseDiscordModalCustomIdForCarbon, ft as resolveDiscordAllowListMatch, g as sendMessageDiscord, gt as resolveDiscordOwnerAllowFrom, h as resolveDiscordModalEntry, ht as resolveDiscordMemberAccessState, i as removeOwnReactionsDiscord, it as parseDiscordTarget, j as addRoleDiscord, k as searchMessagesDiscord, l as parseDiscordComponentCustomId, lt as isDiscordGroupAllowedByPolicy, m as resolveDiscordComponentEntry, mt as resolveDiscordGuildEntry, n as fetchReactionsDiscord, nt as createDiscordClient, o as sendDiscordComponentMessage, ot as listDiscordDirectoryGroupsLive, p as readDiscordComponentSpec, pt as resolveDiscordChannelConfigWithFallback, q as deleteChannelDiscord, r as reactMessageDiscord, rt as createDiscordRestClient, s as createDiscordFormModal, st as listDiscordDirectoryPeersLive, tt as chunkDiscordTextWithMode, u as parseDiscordComponentCustomIdForCarbon, ut as normalizeDiscordAllowList, v as sendStickerDiscord, vt as resolveGroupDmAllow, w as fetchMessageDiscord, wt as fetchDiscord, x as createThreadDiscord, xt as formatDiscordUserTag, y as sendVoiceMessageDiscord, yt as shouldEmitDiscordReactionNotification, z as listGuildChannelsDiscord } from "./send-C1IYd3g7.js";
|
|
17
|
-
import { C as getGlobalHookRunner, S as parseInlineDirectives$1, _ as normalizeTargetForProvider, a as normalizeOutboundPayloadsForJson, b as MEDIA_TOKEN_RE, c as applyReplyThreading, d as isRenderablePayload, f as shouldSuppressMessagingToolReplies, g as normalizeChannelTargetInput, h as buildTargetResolverSignature, i as normalizeOutboundPayloads, l as filterMessagingToolDuplicates, m as resolveReplyToMode, o as normalizeReplyPayloadsForDelivery, p as createReplyToModeFilterForChannel, r as formatOutboundPayloadLog, s as applyReplyTagsToPayload, t as deliverOutboundPayloads, u as filterMessagingToolMediaDuplicates, v as throwIfAborted, w as initializeGlobalHookRunner, x as splitMediaFromOutput, y as parseReplyDirectives } from "./deliver-
|
|
17
|
+
import { C as getGlobalHookRunner, S as parseInlineDirectives$1, _ as normalizeTargetForProvider, a as normalizeOutboundPayloadsForJson, b as MEDIA_TOKEN_RE, c as applyReplyThreading, d as isRenderablePayload, f as shouldSuppressMessagingToolReplies, g as normalizeChannelTargetInput, h as buildTargetResolverSignature, i as normalizeOutboundPayloads, l as filterMessagingToolDuplicates, m as resolveReplyToMode, o as normalizeReplyPayloadsForDelivery, p as createReplyToModeFilterForChannel, r as formatOutboundPayloadLog, s as applyReplyTagsToPayload, t as deliverOutboundPayloads, u as filterMessagingToolMediaDuplicates, v as throwIfAborted, w as initializeGlobalHookRunner, x as splitMediaFromOutput, y as parseReplyDirectives } from "./deliver-C-37cZUe.js";
|
|
18
18
|
import { a as logMessageProcessed, c as logWebhookError, d as startDiagnosticHeartbeat, f as stopDiagnosticHeartbeat, i as logLaneEnqueue, l as logWebhookProcessed, m as isDiagnosticsEnabled, o as logMessageQueued, p as emitDiagnosticEvent, r as logLaneDequeue, s as logSessionStateChange, t as diag, u as logWebhookReceived } from "./diagnostic-D0xmLpej.js";
|
|
19
19
|
import { r as getDiagnosticSessionState } from "./diagnostic-session-state-C1vRJs5w.js";
|
|
20
20
|
import { n as resolveSignalAccount, t as listEnabledSignalAccounts } from "./accounts-8zZqL37v.js";
|
|
@@ -22,10 +22,10 @@ import { $ as isVoiceCompatibleAudio, A as extractTelegramLocation, B as normali
|
|
|
22
22
|
import { d as detectMime, f as extensionForMime, g as isGifMedia, h as isAudioFileName, i as getImageMetadata, m as imageMimeFromFormat, s as resizeToJpeg, x as mediaKindFromMime, y as MAX_IMAGE_BYTES } from "./image-ops-ByaQt43P.js";
|
|
23
23
|
import { n as discoverModels, t as discoverAuthStorage } from "./pi-model-discovery-j5tVLINv.js";
|
|
24
24
|
import { a as isMarkdownCapableMessageChannel, c as resolveGatewayMessageChannel, d as GATEWAY_CLIENT_MODES, f as GATEWAY_CLIENT_NAMES, i as isInternalMessageChannel, l as resolveMessageChannel, n as isDeliverableMessageChannel, o as listDeliverableMessageChannels, r as isGatewayMessageChannel, s as normalizeMessageChannel, t as INTERNAL_MESSAGE_CHANNEL, u as GATEWAY_CLIENT_IDS } from "./message-channel-BQINJQIT.js";
|
|
25
|
-
import { $ as mergeDeliveryContext, A as isTransientHttpError, At as DEFAULT_UPLOAD_DIR, Bt as expandToolGroups, C as isContextOverflowError, Ct as resolveGroupSessionKey, D as isRateLimitAssistantError, Dt as registerBrowserRoutes, E as isLikelyContextOverflowError, Et as createBrowserRouteContext, F as resolveSandboxContext, Ft as resolveSandboxConfigForAgent, Gt as compileGlobPatterns, H as loadSessionStore, Ht as normalizeToolName, I as resolveSandboxRuntimeStatus, It as applyOwnerOnlyToolPolicy, J as updateSessionStoreEntry, Jt as ensureSessionHeader, K as updateLastRoute, Kt as matchesAnyGlobPattern, L as extractDeliveryInfo, Lt as buildPluginToolGroups, M as parseImageSizeError, Mt as getBridgeAuthForPort, N as sanitizeUserFacingText, Nt as ensureBrowserControlAuth, O as isRawApiErrorPayload, Ot as resolveBrowserConfig, P as ensureSandboxWorkspaceForSession, Pt as resolveBrowserControlAuth, Q as deliveryContextKey, R as parseSessionThreadInfo, Rt as collectExplicitAllowlist, S as isCompactionFailureError, St as deriveSessionMetaPatch, T as isFailoverErrorMessage, Tt as resolveSessionLockMaxHoldFromTimeout, U as readSessionUpdatedAt, Ut as resolveToolProfilePolicy, V as resolveAndPersistSessionFile, Vt as mergeAlsoAllowPolicy, W as recordSessionMetaFromInbound, Wt as stripPluginOnlyAllowlist, X as resolveCacheTtlMs$1, Xt as resolveBootstrapTotalMaxChars, Y as isCacheEnabled, Yt as resolveBootstrapMaxChars, Z as deliveryContextFromSession, Zt as sanitizeGoogleTurnOrdering, _ as formatRawAssistantErrorForUi, _t as DEFAULT_RESET_TRIGGERS, a as isMessagingToolDuplicateNormalized, at as countToolResults, b as isBillingAssistantError, bt as resolveExplicitAgentSessionKey, c as extractToolCallsFromAssistant, ct as applyInputProvenanceToUserMessage, d as isAntigravityClaude, dt as resolveSessionKey, et as normalizeDeliveryContext, f as isGoogleModelApi, ft as evaluateSessionFreshness, g as formatBillingErrorMessage, gt as resolveThreadFlag, h as formatAssistantErrorText, ht as resolveSessionResetType, it as capArrayByJsonBytes, j as parseImageDimensionError, jt as resolveExistingPathsWithinRoot, k as isTimeoutErrorMessage, kt as resolveProfile, l as extractToolResultId, lt as hasInterSessionUserProvenance, m as classifyFailoverReason, mt as resolveSessionResetPolicy, n as validateGeminiTurns, nt as normalizeAccountId$3, o as normalizeTextForComparison, ot as extractToolCallNames, p as BILLING_ERROR_USER_MESSAGE, pt as resolveChannelResetConfig, q as updateSessionStore, qt as buildBootstrapContextFiles, r as pickFallbackThinkingLevel, rt as archiveSessionTranscripts, s as sanitizeSessionMessagesImages, st as INPUT_PROVENANCE_KIND_VALUES, t as validateAnthropicTurns, tt as normalizeSessionDeliveryFields, u as downgradeOpenAIReasoningBlocks, ut as normalizeInputProvenance, v as getApiErrorPayloadFingerprint, vt as resolveFreshSessionTotalTokens, w as isFailoverAssistantError, wt as acquireSessionWriteLock, x as isCloudCodeAssistFormatError, xt as resolveMainSessionKey, y as isAuthAssistantError, yt as canonicalizeMainSessionAlias, z as appendAssistantMessageToSessionTranscript, zt as expandPolicyWithPluginGroups } from "./pi-embedded-helpers-
|
|
25
|
+
import { $ as mergeDeliveryContext, A as isTransientHttpError, At as DEFAULT_UPLOAD_DIR, Bt as expandToolGroups, C as isContextOverflowError, Ct as resolveGroupSessionKey, D as isRateLimitAssistantError, Dt as registerBrowserRoutes, E as isLikelyContextOverflowError, Et as createBrowserRouteContext, F as resolveSandboxContext, Ft as resolveSandboxConfigForAgent, Gt as compileGlobPatterns, H as loadSessionStore, Ht as normalizeToolName, I as resolveSandboxRuntimeStatus, It as applyOwnerOnlyToolPolicy, J as updateSessionStoreEntry, Jt as ensureSessionHeader, K as updateLastRoute, Kt as matchesAnyGlobPattern, L as extractDeliveryInfo, Lt as buildPluginToolGroups, M as parseImageSizeError, Mt as getBridgeAuthForPort, N as sanitizeUserFacingText, Nt as ensureBrowserControlAuth, O as isRawApiErrorPayload, Ot as resolveBrowserConfig, P as ensureSandboxWorkspaceForSession, Pt as resolveBrowserControlAuth, Q as deliveryContextKey, R as parseSessionThreadInfo, Rt as collectExplicitAllowlist, S as isCompactionFailureError, St as deriveSessionMetaPatch, T as isFailoverErrorMessage, Tt as resolveSessionLockMaxHoldFromTimeout, U as readSessionUpdatedAt, Ut as resolveToolProfilePolicy, V as resolveAndPersistSessionFile, Vt as mergeAlsoAllowPolicy, W as recordSessionMetaFromInbound, Wt as stripPluginOnlyAllowlist, X as resolveCacheTtlMs$1, Xt as resolveBootstrapTotalMaxChars, Y as isCacheEnabled, Yt as resolveBootstrapMaxChars, Z as deliveryContextFromSession, Zt as sanitizeGoogleTurnOrdering, _ as formatRawAssistantErrorForUi, _t as DEFAULT_RESET_TRIGGERS, a as isMessagingToolDuplicateNormalized, at as countToolResults, b as isBillingAssistantError, bt as resolveExplicitAgentSessionKey, c as extractToolCallsFromAssistant, ct as applyInputProvenanceToUserMessage, d as isAntigravityClaude, dt as resolveSessionKey, et as normalizeDeliveryContext, f as isGoogleModelApi, ft as evaluateSessionFreshness, g as formatBillingErrorMessage, gt as resolveThreadFlag, h as formatAssistantErrorText, ht as resolveSessionResetType, it as capArrayByJsonBytes, j as parseImageDimensionError, jt as resolveExistingPathsWithinRoot, k as isTimeoutErrorMessage, kt as resolveProfile, l as extractToolResultId, lt as hasInterSessionUserProvenance, m as classifyFailoverReason, mt as resolveSessionResetPolicy, n as validateGeminiTurns, nt as normalizeAccountId$3, o as normalizeTextForComparison, ot as extractToolCallNames, p as BILLING_ERROR_USER_MESSAGE, pt as resolveChannelResetConfig, q as updateSessionStore, qt as buildBootstrapContextFiles, r as pickFallbackThinkingLevel, rt as archiveSessionTranscripts, s as sanitizeSessionMessagesImages, st as INPUT_PROVENANCE_KIND_VALUES, t as validateAnthropicTurns, tt as normalizeSessionDeliveryFields, u as downgradeOpenAIReasoningBlocks, ut as normalizeInputProvenance, v as getApiErrorPayloadFingerprint, vt as resolveFreshSessionTotalTokens, w as isFailoverAssistantError, wt as acquireSessionWriteLock, x as isCloudCodeAssistFormatError, xt as resolveMainSessionKey, y as isAuthAssistantError, yt as canonicalizeMainSessionAlias, z as appendAssistantMessageToSessionTranscript, zt as expandPolicyWithPluginGroups } from "./pi-embedded-helpers-B8kqLWns.js";
|
|
26
26
|
import { A as VERSION, C as getConfigValueAtPath, D as isSafeExecutableValue, E as unsetConfigValueAtPath, O as DEFAULT_SUBAGENT_MAX_SPAWN_DEPTH, S as unsetConfigOverride, T as setConfigValueAtPath, _ as parseDurationMs, a as writeConfigFile, b as resetConfigOverrides, c as TELEGRAM_COMMAND_NAME_PATTERN, f as isInboundPathAllowed, g as normalizeScpRemoteHost, h as resolveIMessageRemoteAttachmentRoots, i as resolveConfigSnapshotHash, k as resolveAgentMaxConcurrent, l as normalizeTelegramCommandName, m as resolveIMessageAttachmentRoots, n as loadConfig, o as validateConfigObjectWithPlugins, r as readConfigFileSnapshot, u as resolveTelegramCustomCommands, v as validateJsonSchemaValue, w as parseConfigPath, x as setConfigOverride, y as getConfigOverrides } from "./config-BmV60pPT.js";
|
|
27
27
|
import { c as normalizePluginsConfig, f as isPathInsideWithRealpath, i as safeStatSync, l as resolveEnableState, n as discoverSymiPlugins, p as isDangerousHostEnvVarName, r as isPathInside, s as applyTestPluginDefaults, t as loadPluginManifestRegistry, u as resolveMemorySlotDecision } from "./manifest-registry-D-mTF1cj.js";
|
|
28
|
-
import { C as rawDataToString, O as DEFAULT_AI_SNAPSHOT_MAX_CHARS, T as isSecureWebSocketUrl, x as ensureChromeExtensionRelayServer } from "./chrome-
|
|
28
|
+
import { C as rawDataToString, O as DEFAULT_AI_SNAPSHOT_MAX_CHARS, T as isSecureWebSocketUrl, x as ensureChromeExtensionRelayServer } from "./chrome-D2SKJnR7.js";
|
|
29
29
|
import { c as assertSandboxPath, d as resolveSandboxedMediaSource, f as applySkillEnvOverrides, i as resolveSkillsPromptForRun, l as resolveSandboxInputPath, n as buildWorkspaceSkillSnapshot, p as applySkillEnvOverridesFromSnapshot, r as loadWorkspaceSkillEntries, s as assertMediaNotDataUrl } from "./skills-BNpGMnp-.js";
|
|
30
30
|
import { n as formatErrorMessage, r as formatUncaughtError } from "./errors-CPfngF0S.js";
|
|
31
31
|
import { i as isBlockedHostnameOrIp, o as normalizeHostname, t as SsrFBlockedError } from "./ssrf-CxfFyMRZ.js";
|
|
@@ -36,7 +36,7 @@ import { t as resolveIMessageAccount } from "./accounts-DImOt9jX.js";
|
|
|
36
36
|
import { i as resolveSessionTranscriptPath, n as resolveSessionFilePath, o as resolveSessionTranscriptsDirForAgent, r as resolveSessionFilePathOptions, s as resolveStorePath, t as resolveDefaultSessionStorePath } from "./paths-DkMamAQ-.js";
|
|
37
37
|
import { t as emitSessionTranscriptUpdate } from "./transcript-events-C8Tqw4td.js";
|
|
38
38
|
import { i as resolveImageSanitizationLimits, n as sanitizeImageBlocks, r as sanitizeToolResultImages } from "./tool-images-ChC2CXaN.js";
|
|
39
|
-
import { S as ensureSymiModelsJson, _ as stripMinimaxToolCallXml, a as decodeDataUrl, b as stripReasoningTagsFromText, c as extractAssistantText$1, d as extractThinkingFromTaggedText, f as formatReasoningMessage, g as stripDowngradedToolCallText, h as promoteThinkingTagsToBlocks, i as coerceImageModelConfig, l as extractAssistantThinking, m as isAssistantMessage, o as resolveProviderVisionModelFromConfig, p as inferToolMetaFromArgs, r as coerceImageAssistantText, s as minimaxUnderstandImage, u as extractThinkingFromTaggedStream, v as stripThinkingTagsFromText, x as extractTextFromChatContent, y as resolveToolDisplay } from "./image-
|
|
39
|
+
import { S as ensureSymiModelsJson, _ as stripMinimaxToolCallXml, a as decodeDataUrl, b as stripReasoningTagsFromText, c as extractAssistantText$1, d as extractThinkingFromTaggedText, f as formatReasoningMessage, g as stripDowngradedToolCallText, h as promoteThinkingTagsToBlocks, i as coerceImageModelConfig, l as extractAssistantThinking, m as isAssistantMessage, o as resolveProviderVisionModelFromConfig, p as inferToolMetaFromArgs, r as coerceImageAssistantText, s as minimaxUnderstandImage, u as extractThinkingFromTaggedStream, v as stripThinkingTagsFromText, x as extractTextFromChatContent, y as resolveToolDisplay } from "./image-DcpMiprB.js";
|
|
40
40
|
import { i as resolveMemorySearchConfig, n as probeOllamaEmbeddingModels, r as resolveOllamaBaseUrl } from "./manager-jpn5vRTY.js";
|
|
41
41
|
import { d as listMemoryFiles, f as normalizeExtraMemoryPaths, g as runTasksWithConcurrency } from "./sqlite-BNh23mUR.js";
|
|
42
42
|
import { n as retryAsync } from "./retry-QGp0jvVi.js";
|
|
@@ -49,7 +49,7 @@ import { a as loadWebMedia, i as getDefaultLocalRoots } from "./ir-F0moAwIl.js";
|
|
|
49
49
|
import { _ as resolveNativeCommandsEnabled, a as listChatCommandsForConfig, c as normalizeCommandBody, d as resolveCommandArgMenu, f as serializeCommandArgs, g as isRestartEnabled, h as isNativeCommandsExplicitlyDisabled, i as listChatCommands, l as parseCommandArgs, m as isCommandFlagEnabled, o as listNativeCommandSpecs, p as shouldHandleTextCommands, r as findCommandByNativeName, s as listNativeCommandSpecsForConfig, t as buildCommandTextFromArgs, u as resolveCommandArgChoices, v as resolveNativeSkillsEnabled } from "./commands-registry-C_aYUwpl.js";
|
|
50
50
|
import { c as getSkillsSnapshotVersion, d as createAsyncLock, f as readJsonFile, i as resolveSkillCommandInvocation, l as pruneExpiredPending, n as listSkillCommandsForAgents, o as getRemoteSkillEligibility, p as writeJsonAtomic, r as listSkillCommandsForWorkspace, s as ensureSkillsWatcher, t as listReservedChatSlashCommandNames, u as resolvePairingPaths } from "./skill-commands-DklY7Cj7.js";
|
|
51
51
|
import { r as normalizeInboundTextNewlines, t as finalizeInboundContext } from "./inbound-context-QOi5vzUt.js";
|
|
52
|
-
import { _ as resolveMediaUnderstandingScope, a as resolveMediaAttachmentLocalRoots, c as loadModelCatalog, d as resolveAttachmentKind, f as buildRandomTempFilePath, g as normalizeMediaUnderstandingChatType, h as resolveTimeoutMs$1, i as resolveAutoImageModel, l as modelSupportsVision, m as resolveConcurrency, n as createMediaAttachmentCache, o as runCapability, p as registerUnhandledRejectionHandler, r as normalizeMediaAttachments, s as findModelInCatalog, t as buildProviderRegistry, v as CLI_OUTPUT_MAX_BUFFER, y as applyTemplate } from "./runner-
|
|
52
|
+
import { _ as resolveMediaUnderstandingScope, a as resolveMediaAttachmentLocalRoots, c as loadModelCatalog, d as resolveAttachmentKind, f as buildRandomTempFilePath, g as normalizeMediaUnderstandingChatType, h as resolveTimeoutMs$1, i as resolveAutoImageModel, l as modelSupportsVision, m as resolveConcurrency, n as createMediaAttachmentCache, o as runCapability, p as registerUnhandledRejectionHandler, r as normalizeMediaAttachments, s as findModelInCatalog, t as buildProviderRegistry, v as CLI_OUTPUT_MAX_BUFFER, y as applyTemplate } from "./runner-BcQ0sF9T.js";
|
|
53
53
|
import { n as wrapFetchWithAbortSignal, t as resolveFetch } from "./fetch-DtLn7YU3.js";
|
|
54
54
|
import { n as recordCommandPoll, r as resetCommandPollCount } from "./command-poll-backoff-DtXYsHEc.js";
|
|
55
55
|
import { n as recordChannelActivity, r as createDiscordRetryRunner, t as getChannelActivity } from "./channel-activity-D9q-fIPB.js";
|
|
@@ -79,7 +79,7 @@ import { EdgeTTS } from "node-edge-tts";
|
|
|
79
79
|
import AjvPkg from "ajv";
|
|
80
80
|
import { createServer } from "node:http";
|
|
81
81
|
import { ProxyAgent, fetch as fetch$1 } from "undici";
|
|
82
|
-
import WebSocket
|
|
82
|
+
import WebSocket, { WebSocket as WebSocket$1 } from "ws";
|
|
83
83
|
import { Buffer as Buffer$1 } from "node:buffer";
|
|
84
84
|
import { createJiti } from "jiti";
|
|
85
85
|
import { Type } from "@sinclair/typebox";
|
|
@@ -5714,7 +5714,7 @@ var GatewayClient = class {
|
|
|
5714
5714
|
if (fingerprint !== expected) return /* @__PURE__ */ new Error("gateway tls fingerprint mismatch");
|
|
5715
5715
|
});
|
|
5716
5716
|
}
|
|
5717
|
-
this.ws = new WebSocket(url, wsOptions);
|
|
5717
|
+
this.ws = new WebSocket$1(url, wsOptions);
|
|
5718
5718
|
this.ws.on("open", () => {
|
|
5719
5719
|
if (url.startsWith("wss://") && this.opts.tlsFingerprint) {
|
|
5720
5720
|
const tlsError = this.validateTlsFingerprint();
|
|
@@ -5933,7 +5933,7 @@ var GatewayClient = class {
|
|
|
5933
5933
|
return null;
|
|
5934
5934
|
}
|
|
5935
5935
|
async request(method, params, opts) {
|
|
5936
|
-
if (!this.ws || this.ws.readyState !== WebSocket.OPEN) throw new Error("gateway not connected");
|
|
5936
|
+
if (!this.ws || this.ws.readyState !== WebSocket$1.OPEN) throw new Error("gateway not connected");
|
|
5937
5937
|
const id = randomUUID();
|
|
5938
5938
|
const frame = {
|
|
5939
5939
|
type: "req",
|
|
@@ -7199,7 +7199,7 @@ async function routeReply(params) {
|
|
|
7199
7199
|
const resolvedReplyToId = replyToId ?? (channelId === "slack" && threadId != null && threadId !== "" ? String(threadId) : void 0);
|
|
7200
7200
|
const resolvedThreadId = channelId === "slack" ? null : threadId ?? null;
|
|
7201
7201
|
try {
|
|
7202
|
-
const { deliverOutboundPayloads } = await import("./deliver-
|
|
7202
|
+
const { deliverOutboundPayloads } = await import("./deliver-C-37cZUe.js").then((n) => n.n);
|
|
7203
7203
|
return {
|
|
7204
7204
|
ok: true,
|
|
7205
7205
|
messageId: (await deliverOutboundPayloads({
|
|
@@ -39057,7 +39057,8 @@ const BUILTIN_PROFILES = [
|
|
|
39057
39057
|
"<end_of_turn>"
|
|
39058
39058
|
],
|
|
39059
39059
|
suppressMonologue: true,
|
|
39060
|
-
hasStructuredThinking: false
|
|
39060
|
+
hasStructuredThinking: false,
|
|
39061
|
+
validateToolArgs: true
|
|
39061
39062
|
},
|
|
39062
39063
|
promptAdditions: [
|
|
39063
39064
|
"CRITICAL OUTPUT RULES:",
|
|
@@ -39067,7 +39068,8 @@ const BUILTIN_PROFILES = [
|
|
|
39067
39068
|
"- Do not write verification checklists, self-assessments, or numbered assessment lists after your answer.",
|
|
39068
39069
|
"- Do not write 'Verification:', 'Requirements:', 'Status Check:', or 'Everything is correct'.",
|
|
39069
39070
|
"- If you need to verify your work, do so before writing your response, not after.",
|
|
39070
|
-
"- Send brief progress updates on long tasks so the user knows you are active."
|
|
39071
|
+
"- Send brief progress updates on long tasks so the user knows you are active.",
|
|
39072
|
+
"- 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."
|
|
39071
39073
|
],
|
|
39072
39074
|
ui: {
|
|
39073
39075
|
badge: "Local",
|
|
@@ -39091,7 +39093,8 @@ const BUILTIN_PROFILES = [
|
|
|
39091
39093
|
filters: {
|
|
39092
39094
|
stripPatterns: [],
|
|
39093
39095
|
suppressMonologue: false,
|
|
39094
|
-
hasStructuredThinking: true
|
|
39096
|
+
hasStructuredThinking: true,
|
|
39097
|
+
validateToolArgs: false
|
|
39095
39098
|
},
|
|
39096
39099
|
promptAdditions: [],
|
|
39097
39100
|
ui: {
|
|
@@ -39125,7 +39128,8 @@ const BUILTIN_PROFILES = [
|
|
|
39125
39128
|
"^\\s*<bos>\\s*"
|
|
39126
39129
|
],
|
|
39127
39130
|
suppressMonologue: true,
|
|
39128
|
-
hasStructuredThinking: false
|
|
39131
|
+
hasStructuredThinking: false,
|
|
39132
|
+
validateToolArgs: true
|
|
39129
39133
|
},
|
|
39130
39134
|
promptAdditions: [
|
|
39131
39135
|
"CRITICAL OUTPUT RULES:",
|
|
@@ -39136,7 +39140,8 @@ const BUILTIN_PROFILES = [
|
|
|
39136
39140
|
"- Do not write 'Verification:', 'Requirements:', 'Status Check:', or 'Everything is correct'.",
|
|
39137
39141
|
"- If you need to verify your work, do so before writing your response, not after.",
|
|
39138
39142
|
"- Keep planning and reasoning internal. Only speak when you have a result or need user input.",
|
|
39139
|
-
"- When working on multi-step tasks, send a brief one-line status update so the user knows you are active."
|
|
39143
|
+
"- When working on multi-step tasks, send a brief one-line status update so the user knows you are active.",
|
|
39144
|
+
"- 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."
|
|
39140
39145
|
],
|
|
39141
39146
|
ui: {
|
|
39142
39147
|
badge: "CoreWeave",
|
|
@@ -39164,7 +39169,8 @@ const FALLBACK_PROFILE = {
|
|
|
39164
39169
|
filters: {
|
|
39165
39170
|
stripPatterns: [],
|
|
39166
39171
|
suppressMonologue: false,
|
|
39167
|
-
hasStructuredThinking: false
|
|
39172
|
+
hasStructuredThinking: false,
|
|
39173
|
+
validateToolArgs: false
|
|
39168
39174
|
},
|
|
39169
39175
|
promptAdditions: [],
|
|
39170
39176
|
ui: {
|
|
@@ -39591,6 +39597,19 @@ function stripModelTokensAggressive(text, modelId) {
|
|
|
39591
39597
|
}
|
|
39592
39598
|
return result;
|
|
39593
39599
|
}
|
|
39600
|
+
/**
|
|
39601
|
+
* Clean residual fragments left after aggressive token stripping.
|
|
39602
|
+
* After `<|` and `|>` are removed, orphaned `<`, `"`, `|` can remain
|
|
39603
|
+
* at string boundaries (e.g., `<<|"|uname -a` → `<"uname -a`).
|
|
39604
|
+
*
|
|
39605
|
+
* Conservative: only trims leading junk before what looks like a command,
|
|
39606
|
+
* and trailing junk. Does NOT touch content in the middle of the string.
|
|
39607
|
+
* Preserves heredoc syntax (`<<EOF`, `<<"EOF"`) via negative lookahead.
|
|
39608
|
+
*/
|
|
39609
|
+
function cleanResidualTokenFragments(text) {
|
|
39610
|
+
if (!text) return text;
|
|
39611
|
+
return text.replace(/^[<"|]+(?!<[A-Z_])(?=[a-zA-Z0-9/~$.(])/gm, "").replace(/[<"|]+$/gm, "").trim();
|
|
39612
|
+
}
|
|
39594
39613
|
|
|
39595
39614
|
//#endregion
|
|
39596
39615
|
//#region src/agents/output-normalizer.ts
|
|
@@ -39676,10 +39695,14 @@ function detectRepetition(text, minBlock) {
|
|
|
39676
39695
|
const searchStart = sampleStart + minBlock;
|
|
39677
39696
|
return text.indexOf(sample, searchStart) >= 0;
|
|
39678
39697
|
}
|
|
39698
|
+
function sanitizeStringValue(value, modelId) {
|
|
39699
|
+
const stripped = stripModelTokensAggressive(value, modelId);
|
|
39700
|
+
return isGemmaModel$1(modelId) ? cleanResidualTokenFragments(stripped) : stripped;
|
|
39701
|
+
}
|
|
39679
39702
|
function sanitizeArgs(args, modelId) {
|
|
39680
39703
|
const result = {};
|
|
39681
|
-
for (const [key, value] of Object.entries(args)) if (typeof value === "string") result[key] =
|
|
39682
|
-
else if (Array.isArray(value)) result[key] = value.map((item) => typeof item === "string" ?
|
|
39704
|
+
for (const [key, value] of Object.entries(args)) if (typeof value === "string") result[key] = sanitizeStringValue(value, modelId);
|
|
39705
|
+
else if (Array.isArray(value)) result[key] = value.map((item) => typeof item === "string" ? sanitizeStringValue(item, modelId) : item && typeof item === "object" ? sanitizeArgs(item, modelId) : item);
|
|
39683
39706
|
else if (value && typeof value === "object") result[key] = sanitizeArgs(value, modelId);
|
|
39684
39707
|
else result[key] = value;
|
|
39685
39708
|
return result;
|
|
@@ -41973,7 +41996,7 @@ async function recordLoopOutcome(args) {
|
|
|
41973
41996
|
if (!args.ctx?.sessionKey) return;
|
|
41974
41997
|
try {
|
|
41975
41998
|
const { getDiagnosticSessionState } = await import("./diagnostic-session-state-C1vRJs5w.js").then((n) => n.n);
|
|
41976
|
-
const { recordToolCallOutcome } = await import("./tool-loop-detection-
|
|
41999
|
+
const { recordToolCallOutcome } = await import("./tool-loop-detection-C7TCF2V2.js");
|
|
41977
42000
|
recordToolCallOutcome(getDiagnosticSessionState({
|
|
41978
42001
|
sessionKey: args.ctx.sessionKey,
|
|
41979
42002
|
sessionId: args.ctx?.agentId
|
|
@@ -41995,7 +42018,7 @@ async function runBeforeToolCallHook(args) {
|
|
|
41995
42018
|
if (args.ctx?.sessionKey) {
|
|
41996
42019
|
const { getDiagnosticSessionState } = await import("./diagnostic-session-state-C1vRJs5w.js").then((n) => n.n);
|
|
41997
42020
|
const { logToolLoopAction } = await import("./diagnostic-D0xmLpej.js").then((n) => n.n);
|
|
41998
|
-
const { detectToolCallLoop, recordToolCall } = await import("./tool-loop-detection-
|
|
42021
|
+
const { detectToolCallLoop, recordToolCall } = await import("./tool-loop-detection-C7TCF2V2.js");
|
|
41999
42022
|
const sessionState = getDiagnosticSessionState({
|
|
42000
42023
|
sessionKey: args.ctx.sessionKey,
|
|
42001
42024
|
sessionId: args.ctx?.agentId
|
|
@@ -42266,6 +42289,88 @@ function toClientToolDefinitions(tools, onClientToolCall, hookContext) {
|
|
|
42266
42289
|
});
|
|
42267
42290
|
}
|
|
42268
42291
|
|
|
42292
|
+
//#endregion
|
|
42293
|
+
//#region src/agents/pi-tools.validate.ts
|
|
42294
|
+
/**
|
|
42295
|
+
* Tool argument validation — validates that exec/bash commands contain
|
|
42296
|
+
* valid shell syntax after model token sanitization.
|
|
42297
|
+
*
|
|
42298
|
+
* Gated on ModelProfile.filters.validateToolArgs — only active for
|
|
42299
|
+
* models known to leak control tokens into structured output (Gemma, Ollama).
|
|
42300
|
+
*
|
|
42301
|
+
* @module
|
|
42302
|
+
*/
|
|
42303
|
+
/**
|
|
42304
|
+
* Validate that a command string contains extractable valid shell syntax.
|
|
42305
|
+
* Returns the cleaned command if valid, or an error reason if not.
|
|
42306
|
+
*
|
|
42307
|
+
* Does NOT attempt to parse the full shell grammar — just checks for
|
|
42308
|
+
* obvious corruption (residual control tokens, empty commands).
|
|
42309
|
+
* Preserves heredocs, redirects, pipes, and other legitimate shell syntax.
|
|
42310
|
+
*/
|
|
42311
|
+
function validateShellCommand(command) {
|
|
42312
|
+
if (!command || !command.trim()) return {
|
|
42313
|
+
valid: false,
|
|
42314
|
+
cleaned: "",
|
|
42315
|
+
reason: "empty command"
|
|
42316
|
+
};
|
|
42317
|
+
let cleaned = cleanResidualTokenFragments(command);
|
|
42318
|
+
if (/(?:^|[^<])<\|/.test(cleaned) || /\|>/.test(cleaned)) {
|
|
42319
|
+
cleaned = cleaned.replace(/<\|[^|>]*(?:\|>)?/g, "").trim();
|
|
42320
|
+
cleaned = cleanResidualTokenFragments(cleaned);
|
|
42321
|
+
}
|
|
42322
|
+
if (!cleaned || !cleaned.trim()) return {
|
|
42323
|
+
valid: false,
|
|
42324
|
+
cleaned: "",
|
|
42325
|
+
reason: "command is empty after removing control tokens"
|
|
42326
|
+
};
|
|
42327
|
+
if (!/[a-zA-Z0-9_/.~-]/.test(cleaned)) return {
|
|
42328
|
+
valid: false,
|
|
42329
|
+
cleaned,
|
|
42330
|
+
reason: "no recognizable shell command found"
|
|
42331
|
+
};
|
|
42332
|
+
return {
|
|
42333
|
+
valid: true,
|
|
42334
|
+
cleaned: cleaned.trim()
|
|
42335
|
+
};
|
|
42336
|
+
}
|
|
42337
|
+
|
|
42338
|
+
//#endregion
|
|
42339
|
+
//#region src/agents/pi-tools.validate-wrapper.ts
|
|
42340
|
+
const EXEC_TOOL_NAMES = new Set(["exec", "bash"]);
|
|
42341
|
+
/**
|
|
42342
|
+
* Wrap tools with argument validation. Only exec/bash tools are validated.
|
|
42343
|
+
* Other tools pass through unchanged.
|
|
42344
|
+
*
|
|
42345
|
+
* Call this AFTER tools are created and the model profile is resolved.
|
|
42346
|
+
*/
|
|
42347
|
+
function wrapToolsWithArgValidation(tools, profile) {
|
|
42348
|
+
if (!profile.filters?.validateToolArgs) return tools;
|
|
42349
|
+
return tools.map((tool) => wrapToolWithArgValidation(tool));
|
|
42350
|
+
}
|
|
42351
|
+
/**
|
|
42352
|
+
* Wrap a single tool with argument validation for exec/bash commands.
|
|
42353
|
+
*/
|
|
42354
|
+
function wrapToolWithArgValidation(tool) {
|
|
42355
|
+
const toolName = (tool.name ?? "").toLowerCase().trim();
|
|
42356
|
+
if (!EXEC_TOOL_NAMES.has(toolName)) return tool;
|
|
42357
|
+
const originalExecute = tool.execute;
|
|
42358
|
+
return {
|
|
42359
|
+
...tool,
|
|
42360
|
+
execute(toolCallId, params, ...rest) {
|
|
42361
|
+
const command = params.command ?? params.cmd;
|
|
42362
|
+
if (typeof command !== "string") return originalExecute.call(tool, toolCallId, params, ...rest);
|
|
42363
|
+
const result = validateShellCommand(command);
|
|
42364
|
+
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.` });
|
|
42365
|
+
if (result.cleaned !== command) return originalExecute.call(tool, toolCallId, {
|
|
42366
|
+
...params,
|
|
42367
|
+
command: result.cleaned
|
|
42368
|
+
}, ...rest);
|
|
42369
|
+
return originalExecute.call(tool, toolCallId, params, ...rest);
|
|
42370
|
+
}
|
|
42371
|
+
};
|
|
42372
|
+
}
|
|
42373
|
+
|
|
42269
42374
|
//#endregion
|
|
42270
42375
|
//#region src/agents/plan-mode.ts
|
|
42271
42376
|
/**
|
|
@@ -46215,10 +46320,11 @@ async function runEmbeddedAttempt(params) {
|
|
|
46215
46320
|
await resourceLoader.reload();
|
|
46216
46321
|
}
|
|
46217
46322
|
const hookRunner = getGlobalHookRunner();
|
|
46218
|
-
const { builtInTools, customTools } = splitSdkTools({
|
|
46323
|
+
const { builtInTools: rawBuiltInTools, customTools } = splitSdkTools({
|
|
46219
46324
|
tools,
|
|
46220
46325
|
sandboxEnabled: !!sandbox?.enabled
|
|
46221
46326
|
});
|
|
46327
|
+
const builtInTools = wrapToolsWithArgValidation(rawBuiltInTools, modelProfile);
|
|
46222
46328
|
let clientToolCallDetected = null;
|
|
46223
46329
|
const clientToolLoopDetection = resolveToolLoopDetectionConfig({
|
|
46224
46330
|
cfg: params.config,
|
|
@@ -50521,7 +50627,7 @@ async function deliverSessionMaintenanceWarning(params) {
|
|
|
50521
50627
|
return;
|
|
50522
50628
|
}
|
|
50523
50629
|
try {
|
|
50524
|
-
const { deliverOutboundPayloads } = await import("./deliver-
|
|
50630
|
+
const { deliverOutboundPayloads } = await import("./deliver-C-37cZUe.js").then((n) => n.n);
|
|
50525
50631
|
await deliverOutboundPayloads({
|
|
50526
50632
|
cfg: params.cfg,
|
|
50527
50633
|
channel,
|
|
@@ -53967,7 +54073,7 @@ async function describeStickerImage(params) {
|
|
|
53967
54073
|
logVerbose(`telegram: describing sticker with ${provider}/${model}`);
|
|
53968
54074
|
try {
|
|
53969
54075
|
const buffer = await fs$1.readFile(imagePath);
|
|
53970
|
-
const { describeImageWithModel } = await import("./image-
|
|
54076
|
+
const { describeImageWithModel } = await import("./image-DcpMiprB.js").then((n) => n.n);
|
|
53971
54077
|
return (await describeImageWithModel({
|
|
53972
54078
|
buffer,
|
|
53973
54079
|
fileName: "sticker.webp",
|
|
@@ -56629,7 +56735,7 @@ async function preflightDiscordMessage(params) {
|
|
|
56629
56735
|
let preflightTranscript;
|
|
56630
56736
|
const hasAudioAttachment = message.attachments?.some((att) => att.contentType?.startsWith("audio/"));
|
|
56631
56737
|
if (!isDirectMessage && shouldRequireMention && hasAudioAttachment && !baseText && mentionRegexes.length > 0) try {
|
|
56632
|
-
const { transcribeFirstAudio } = await import("./audio-preflight-
|
|
56738
|
+
const { transcribeFirstAudio } = await import("./audio-preflight-CPBOQV4I.js");
|
|
56633
56739
|
const audioPaths = message.attachments?.filter((att) => att.contentType?.startsWith("audio/")).map((att) => att.url) ?? [];
|
|
56634
56740
|
if (audioPaths.length > 0) preflightTranscript = await transcribeFirstAudio({
|
|
56635
56741
|
ctx: {
|
|
@@ -60412,7 +60518,7 @@ function isVoiceChannelType(type) {
|
|
|
60412
60518
|
function createDefaultDeps() {
|
|
60413
60519
|
return {
|
|
60414
60520
|
sendMessageWhatsApp: async (...args) => {
|
|
60415
|
-
const { sendMessageWhatsApp } = await import("./web-
|
|
60521
|
+
const { sendMessageWhatsApp } = await import("./web-D4qJ9XKP.js");
|
|
60416
60522
|
return await sendMessageWhatsApp(...args);
|
|
60417
60523
|
},
|
|
60418
60524
|
sendMessageTelegram: async (...args) => {
|
|
@@ -63317,7 +63423,7 @@ function createDiscordGatewayPlugin(params) {
|
|
|
63317
63423
|
super(options);
|
|
63318
63424
|
}
|
|
63319
63425
|
createWebSocket(url) {
|
|
63320
|
-
return new WebSocket
|
|
63426
|
+
return new WebSocket(url, { agent });
|
|
63321
63427
|
}
|
|
63322
63428
|
}
|
|
63323
63429
|
return new ProxyGatewayPlugin();
|
|
@@ -73535,7 +73641,7 @@ const buildTelegramMessageContext = async ({ primaryCtx, allMedia, storeAllowFro
|
|
|
73535
73641
|
const hasAudio = allMedia.some((media) => media.contentType?.startsWith("audio/"));
|
|
73536
73642
|
let preflightTranscript;
|
|
73537
73643
|
if (isGroup && requireMention && hasAudio && !hasUserText && mentionRegexes.length > 0) try {
|
|
73538
|
-
const { transcribeFirstAudio } = await import("./audio-preflight-
|
|
73644
|
+
const { transcribeFirstAudio } = await import("./audio-preflight-CPBOQV4I.js");
|
|
73539
73645
|
preflightTranscript = await transcribeFirstAudio({
|
|
73540
73646
|
ctx: {
|
|
73541
73647
|
MediaPaths: allMedia.length > 0 ? allMedia.map((m) => m.path) : void 0,
|
|
@@ -75692,7 +75798,7 @@ function loadWebLoginQr() {
|
|
|
75692
75798
|
return webLoginQrPromise;
|
|
75693
75799
|
}
|
|
75694
75800
|
function loadWebChannel() {
|
|
75695
|
-
webChannelPromise ??= import("./web-
|
|
75801
|
+
webChannelPromise ??= import("./web-D4qJ9XKP.js");
|
|
75696
75802
|
return webChannelPromise;
|
|
75697
75803
|
}
|
|
75698
75804
|
function loadWhatsAppActions() {
|
|
@@ -10,7 +10,7 @@ import { t as normalizeChatType } from "./chat-type-DFDuk3FY.js";
|
|
|
10
10
|
import { c as SafeOpenError, i as getImageMetadata, l as openFileWithinRoot, n as buildImageResizeSideGrid, s as resizeToJpeg, t as IMAGE_REDUCE_QUALITY_STEPS } from "./image-ops-ByaQt43P.js";
|
|
11
11
|
import { o as listDeliverableMessageChannels, s as normalizeMessageChannel } from "./message-channel-BQINJQIT.js";
|
|
12
12
|
import { _ as parseDurationMs, a as writeConfigFile, n as loadConfig, s as parseByteSize, t as createConfigIO } from "./config-BmV60pPT.js";
|
|
13
|
-
import { A as DEFAULT_BROWSER_EVALUATE_ENABLED, D as DEFAULT_AI_SNAPSHOT_EFFICIENT_MAX_CHARS, E as DEFAULT_AI_SNAPSHOT_EFFICIENT_DEPTH, M as DEFAULT_SYMI_BROWSER_ENABLED, N as DEFAULT_SYMI_BROWSER_PROFILE_NAME, O as DEFAULT_AI_SNAPSHOT_MAX_CHARS, S as stopChromeExtensionRelayServer, _ as fetchJson, a as resolveSymiUserDataDir, c as captureScreenshot, d as normalizeCdpWsUrl, f as snapshotAria, g as appendCdpPath, h as withBrowserNavigationPolicy, i as launchSymiChrome, j as DEFAULT_SYMI_BROWSER_COLOR, k as DEFAULT_BROWSER_DEFAULT_PROFILE_NAME, l as createTargetViaCdp, m as assertBrowserNavigationAllowed, n as isChromeCdpReady, o as stopSymiChrome, p as InvalidBrowserNavigationUrlError, r as isChromeReachable, s as resolveBrowserExecutableForPlatform, v as fetchOk, w as isLoopbackHost, x as ensureChromeExtensionRelayServer } from "./chrome-
|
|
13
|
+
import { A as DEFAULT_BROWSER_EVALUATE_ENABLED, D as DEFAULT_AI_SNAPSHOT_EFFICIENT_MAX_CHARS, E as DEFAULT_AI_SNAPSHOT_EFFICIENT_DEPTH, M as DEFAULT_SYMI_BROWSER_ENABLED, N as DEFAULT_SYMI_BROWSER_PROFILE_NAME, O as DEFAULT_AI_SNAPSHOT_MAX_CHARS, S as stopChromeExtensionRelayServer, _ as fetchJson, a as resolveSymiUserDataDir, c as captureScreenshot, d as normalizeCdpWsUrl, f as snapshotAria, g as appendCdpPath, h as withBrowserNavigationPolicy, i as launchSymiChrome, j as DEFAULT_SYMI_BROWSER_COLOR, k as DEFAULT_BROWSER_DEFAULT_PROFILE_NAME, l as createTargetViaCdp, m as assertBrowserNavigationAllowed, n as isChromeCdpReady, o as stopSymiChrome, p as InvalidBrowserNavigationUrlError, r as isChromeReachable, s as resolveBrowserExecutableForPlatform, v as fetchOk, w as isLoopbackHost, x as ensureChromeExtensionRelayServer } from "./chrome-D2SKJnR7.js";
|
|
14
14
|
import { a as syncSkillsToWorkspace, l as resolveSandboxInputPath, m as sanitizeEnvVars, u as resolveSandboxPath } from "./skills-BNpGMnp-.js";
|
|
15
15
|
import { n as formatErrorMessage, t as extractErrorCode } from "./errors-CPfngF0S.js";
|
|
16
16
|
import { t as SsrFBlockedError } from "./ssrf-CxfFyMRZ.js";
|
|
@@ -931,7 +931,7 @@ function isModuleNotFoundError(err) {
|
|
|
931
931
|
}
|
|
932
932
|
async function loadPwAiModule(mode) {
|
|
933
933
|
try {
|
|
934
|
-
return await import("./pw-ai-
|
|
934
|
+
return await import("./pw-ai-1htA-NnS.js");
|
|
935
935
|
} catch (err) {
|
|
936
936
|
if (mode === "soft") return null;
|
|
937
937
|
if (isModuleNotFoundError(err)) return null;
|
|
@@ -3471,11 +3471,11 @@ function createProfileContext(opts, profile) {
|
|
|
3471
3471
|
const userDataDir = resolveSymiUserDataDir(profile.name);
|
|
3472
3472
|
const profileState = getProfileState();
|
|
3473
3473
|
if (await isHttpReachable(300) && !profileState.running) try {
|
|
3474
|
-
await (await import("./pw-ai-
|
|
3474
|
+
await (await import("./pw-ai-1htA-NnS.js")).closePlaywrightBrowserConnection();
|
|
3475
3475
|
} catch {}
|
|
3476
3476
|
if (profileState.running) await stopRunningBrowser();
|
|
3477
3477
|
try {
|
|
3478
|
-
await (await import("./pw-ai-
|
|
3478
|
+
await (await import("./pw-ai-1htA-NnS.js")).closePlaywrightBrowserConnection();
|
|
3479
3479
|
} catch {}
|
|
3480
3480
|
if (!fs.existsSync(userDataDir)) return {
|
|
3481
3481
|
moved: false,
|
|
@@ -9,7 +9,7 @@ import { h as isPidAlive, m as resolveProcessScopedMap } from "./auth-profiles-D
|
|
|
9
9
|
import { n as formatCliCommand } from "./env-BDXYbTKj.js";
|
|
10
10
|
import { t as parseBooleanValue } from "./boolean-CE7i9tBR.js";
|
|
11
11
|
import { _ as parseDurationMs, a as writeConfigFile, n as loadConfig, s as parseByteSize, t as createConfigIO } from "./config-5SdHIcHU.js";
|
|
12
|
-
import { A as DEFAULT_BROWSER_EVALUATE_ENABLED, D as DEFAULT_AI_SNAPSHOT_EFFICIENT_MAX_CHARS, E as DEFAULT_AI_SNAPSHOT_EFFICIENT_DEPTH, M as DEFAULT_SYMI_BROWSER_ENABLED, N as DEFAULT_SYMI_BROWSER_PROFILE_NAME, O as DEFAULT_AI_SNAPSHOT_MAX_CHARS, S as stopChromeExtensionRelayServer, _ as fetchJson, a as resolveSymiUserDataDir, c as captureScreenshot, d as normalizeCdpWsUrl, f as snapshotAria, g as appendCdpPath, h as withBrowserNavigationPolicy, i as launchSymiChrome, j as DEFAULT_SYMI_BROWSER_COLOR, k as DEFAULT_BROWSER_DEFAULT_PROFILE_NAME, l as createTargetViaCdp, m as assertBrowserNavigationAllowed, n as isChromeCdpReady, o as stopSymiChrome, p as InvalidBrowserNavigationUrlError, r as isChromeReachable, s as resolveBrowserExecutableForPlatform, v as fetchOk, w as isLoopbackHost, x as ensureChromeExtensionRelayServer } from "./chrome-
|
|
12
|
+
import { A as DEFAULT_BROWSER_EVALUATE_ENABLED, D as DEFAULT_AI_SNAPSHOT_EFFICIENT_MAX_CHARS, E as DEFAULT_AI_SNAPSHOT_EFFICIENT_DEPTH, M as DEFAULT_SYMI_BROWSER_ENABLED, N as DEFAULT_SYMI_BROWSER_PROFILE_NAME, O as DEFAULT_AI_SNAPSHOT_MAX_CHARS, S as stopChromeExtensionRelayServer, _ as fetchJson, a as resolveSymiUserDataDir, c as captureScreenshot, d as normalizeCdpWsUrl, f as snapshotAria, g as appendCdpPath, h as withBrowserNavigationPolicy, i as launchSymiChrome, j as DEFAULT_SYMI_BROWSER_COLOR, k as DEFAULT_BROWSER_DEFAULT_PROFILE_NAME, l as createTargetViaCdp, m as assertBrowserNavigationAllowed, n as isChromeCdpReady, o as stopSymiChrome, p as InvalidBrowserNavigationUrlError, r as isChromeReachable, s as resolveBrowserExecutableForPlatform, v as fetchOk, w as isLoopbackHost, x as ensureChromeExtensionRelayServer } from "./chrome-DkaXoP36.js";
|
|
13
13
|
import { a as syncSkillsToWorkspace, l as resolveSandboxInputPath, m as sanitizeEnvVars, u as resolveSandboxPath } from "./skills-Bs0AW1g3.js";
|
|
14
14
|
import { n as formatErrorMessage, t as extractErrorCode } from "./errors-XIsvXeC-.js";
|
|
15
15
|
import { b as openFileWithinRoot, i as getImageMetadata, n as buildImageResizeSideGrid, s as resizeToJpeg, t as IMAGE_REDUCE_QUALITY_STEPS, y as SafeOpenError } from "./image-ops-C7CauEK8.js";
|
|
@@ -933,7 +933,7 @@ function isModuleNotFoundError(err) {
|
|
|
933
933
|
}
|
|
934
934
|
async function loadPwAiModule(mode) {
|
|
935
935
|
try {
|
|
936
|
-
return await import("./pw-ai-
|
|
936
|
+
return await import("./pw-ai-m0mj2KWK.js");
|
|
937
937
|
} catch (err) {
|
|
938
938
|
if (mode === "soft") return null;
|
|
939
939
|
if (isModuleNotFoundError(err)) return null;
|
|
@@ -3473,11 +3473,11 @@ function createProfileContext(opts, profile) {
|
|
|
3473
3473
|
const userDataDir = resolveSymiUserDataDir(profile.name);
|
|
3474
3474
|
const profileState = getProfileState();
|
|
3475
3475
|
if (await isHttpReachable(300) && !profileState.running) try {
|
|
3476
|
-
await (await import("./pw-ai-
|
|
3476
|
+
await (await import("./pw-ai-m0mj2KWK.js")).closePlaywrightBrowserConnection();
|
|
3477
3477
|
} catch {}
|
|
3478
3478
|
if (profileState.running) await stopRunningBrowser();
|
|
3479
3479
|
try {
|
|
3480
|
-
await (await import("./pw-ai-
|
|
3480
|
+
await (await import("./pw-ai-m0mj2KWK.js")).closePlaywrightBrowserConnection();
|
|
3481
3481
|
} catch {}
|
|
3482
3482
|
if (!fs.existsSync(userDataDir)) return {
|
|
3483
3483
|
moved: false,
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
|
|
2
|
-
import { ft as loadSymiPlugins } from "./reply-
|
|
2
|
+
import { ft as loadSymiPlugins } from "./reply-DYnTEYoa.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";
|
|
@@ -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-
|
|
5
|
+
import { m as loadSymiPlugins } from "./subagent-registry-CXrOOgPW.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 { p as normalizeAccountId } from "./session-key-C_0eELjb.js";
|
|
2
|
-
import { _ as createAccountListHelpers } from "./accounts-
|
|
2
|
+
import { _ as createAccountListHelpers } from "./accounts-D9zGZU5t.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
|
|
4
|
-
import { i as defaultRuntime } from "./subsystem-
|
|
5
|
-
import { t as formatCliCommand } from "./command-format-
|
|
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";
|
|
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-
|
|
2
|
+
import { _ as createAccountListHelpers } from "./accounts-D9zGZU5t.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-
|
|
2
|
+
import { t as formatCliCommand } from "./command-format-DSdvQ_M5.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
|
|
4
|
-
import { i as defaultRuntime, t as createSubsystemLogger } from "./subsystem-
|
|
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";
|
|
5
5
|
import fs from "node:fs";
|
|
6
6
|
import path from "node:path";
|
|
7
7
|
import os from "node:os";
|
|
@@ -23,4 +23,14 @@ export declare function stripModelTokens(text: string, modelId: string): string;
|
|
|
23
23
|
* that don't match any known token template.
|
|
24
24
|
*/
|
|
25
25
|
export declare function stripModelTokensAggressive(text: string, modelId: string): string;
|
|
26
|
+
/**
|
|
27
|
+
* Clean residual fragments left after aggressive token stripping.
|
|
28
|
+
* After `<|` and `|>` are removed, orphaned `<`, `"`, `|` can remain
|
|
29
|
+
* at string boundaries (e.g., `<<|"|uname -a` → `<"uname -a`).
|
|
30
|
+
*
|
|
31
|
+
* Conservative: only trims leading junk before what looks like a command,
|
|
32
|
+
* and trailing junk. Does NOT touch content in the middle of the string.
|
|
33
|
+
* Preserves heredoc syntax (`<<EOF`, `<<"EOF"`) via negative lookahead.
|
|
34
|
+
*/
|
|
35
|
+
export declare function cleanResidualTokenFragments(text: string): string;
|
|
26
36
|
export { isGemmaModel, GEMMA_TOKEN_PATTERNS };
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tool argument validation wrapper — validates exec/bash command args
|
|
3
|
+
* before execution when the model profile has validateToolArgs enabled.
|
|
4
|
+
*
|
|
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 a clean command.
|
|
8
|
+
*
|
|
9
|
+
* @module
|
|
10
|
+
*/
|
|
11
|
+
import type { ModelProfile } from "../config/model-profiles.js";
|
|
12
|
+
import type { AnyAgentTool } from "./pi-tools.types.js";
|
|
13
|
+
/**
|
|
14
|
+
* Wrap tools with argument validation. Only exec/bash tools are validated.
|
|
15
|
+
* Other tools pass through unchanged.
|
|
16
|
+
*
|
|
17
|
+
* Call this AFTER tools are created and the model profile is resolved.
|
|
18
|
+
*/
|
|
19
|
+
export declare function wrapToolsWithArgValidation(tools: AnyAgentTool[], profile: ModelProfile): AnyAgentTool[];
|
|
20
|
+
/**
|
|
21
|
+
* Wrap a single tool with argument validation for exec/bash commands.
|
|
22
|
+
*/
|
|
23
|
+
export declare function wrapToolWithArgValidation(tool: AnyAgentTool): AnyAgentTool;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tool argument validation — validates that exec/bash commands contain
|
|
3
|
+
* valid shell syntax after model token sanitization.
|
|
4
|
+
*
|
|
5
|
+
* Gated on ModelProfile.filters.validateToolArgs — only active for
|
|
6
|
+
* models known to leak control tokens into structured output (Gemma, Ollama).
|
|
7
|
+
*
|
|
8
|
+
* @module
|
|
9
|
+
*/
|
|
10
|
+
export type ShellValidationResult = {
|
|
11
|
+
valid: true;
|
|
12
|
+
cleaned: string;
|
|
13
|
+
} | {
|
|
14
|
+
valid: false;
|
|
15
|
+
cleaned: string;
|
|
16
|
+
reason: string;
|
|
17
|
+
};
|
|
18
|
+
/**
|
|
19
|
+
* Validate that a command string contains extractable valid shell syntax.
|
|
20
|
+
* Returns the cleaned command if valid, or an error reason if not.
|
|
21
|
+
*
|
|
22
|
+
* Does NOT attempt to parse the full shell grammar — just checks for
|
|
23
|
+
* obvious corruption (residual control tokens, empty commands).
|
|
24
|
+
* Preserves heredocs, redirects, pipes, and other legitimate shell syntax.
|
|
25
|
+
*/
|
|
26
|
+
export declare function validateShellCommand(command: string): ShellValidationResult;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { ToolLoopDetectionConfig } from "../config/types.tools.js";
|
|
2
2
|
import type { SessionState } from "../logging/diagnostic-session-state.js";
|
|
3
|
-
export type LoopDetectorKind = "generic_repeat" | "known_poll_no_progress" | "global_circuit_breaker" | "ping_pong";
|
|
3
|
+
export type LoopDetectorKind = "generic_repeat" | "known_poll_no_progress" | "global_circuit_breaker" | "ping_pong" | "consecutive_failure";
|
|
4
4
|
export type LoopDetectionResult = {
|
|
5
5
|
stuck: false;
|
|
6
6
|
} | {
|
|
@@ -16,6 +16,8 @@ export declare const TOOL_CALL_HISTORY_SIZE = 30;
|
|
|
16
16
|
export declare const WARNING_THRESHOLD = 10;
|
|
17
17
|
export declare const CRITICAL_THRESHOLD = 20;
|
|
18
18
|
export declare const GLOBAL_CIRCUIT_BREAKER_THRESHOLD = 30;
|
|
19
|
+
export declare const CONSECUTIVE_FAILURE_WARNING_THRESHOLD = 3;
|
|
20
|
+
export declare const CONSECUTIVE_FAILURE_CRITICAL_THRESHOLD = 5;
|
|
19
21
|
/**
|
|
20
22
|
* Hash a tool call for pattern matching.
|
|
21
23
|
* Uses tool name + deterministic JSON serialization digest of params.
|