@symerian/symi 2.6.14 → 2.6.15
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-CrSpoNsS.js → agents-DbDrceM_.js} +4 -4
- package/dist/{agents.config-B3GILTs5.js → agents.config-AMrJVinF.js} +1 -1
- package/dist/{agents.config-Co1CO8fA.js → agents.config-phBy3nbc.js} +1 -1
- package/dist/{audio-preflight-DHTaS5U1.js → audio-preflight-BVaaZWkg.js} +4 -4
- package/dist/{auth-choice-BHWxDJh7.js → auth-choice-CmbfbR4q.js} +1 -1
- package/dist/{auth-choice-BBmXnDnK.js → auth-choice-DsGuT4Dk.js} +1 -1
- package/dist/{banner-RLiOIu-3.js → banner-Ds_jDSsM.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-BCK41AON.js → channel-options-BV6WyWWq.js} +1 -1
- package/dist/{channel-options-PDf46S-K.js → channel-options-Del6IGRs.js} +1 -1
- package/dist/{channel-web-C3XZ7c2q.js → channel-web-Cuukem2c.js} +1 -1
- package/dist/{channels-cli-723vy6L6.js → channels-cli-C3LiJhRT.js} +4 -4
- package/dist/{channels-cli-CUWuD7qf.js → channels-cli-D-E-oHnC.js} +4 -4
- package/dist/{chrome-DYZwl5Gv.js → chrome-DkaXoP36.js} +7 -7
- package/dist/{cli-CAzmrOs0.js → cli-BavIfExj.js} +1 -1
- package/dist/{cli-DYdRSi_j.js → cli-C53UJpN3.js} +1 -1
- package/dist/{command-registry-B2aO0Q7_.js → command-registry-Dtn5iLgE.js} +9 -9
- package/dist/{completion-cli-BsKD_vBb.js → completion-cli-DEFzGiNX.js} +2 -2
- package/dist/{completion-cli-BKm12loU.js → completion-cli-DhhIPri-.js} +1 -1
- package/dist/{config-cli-D47lU7kU.js → config-cli-CIhqgzOH.js} +1 -1
- package/dist/{config-cli-Bynmd81Q.js → config-cli-DW40utS2.js} +1 -1
- package/dist/{configure-Df6GmKAR.js → configure-CkSODPmX.js} +3 -3
- package/dist/{configure-B3vS2Iz5.js → configure-SVzErXwX.js} +3 -3
- package/dist/{deliver-dODxSv3b.js → deliver-C46-vyqg.js} +1 -1
- package/dist/{doctor-completion-DyiRkYT4.js → doctor-completion-B-w1_lQk.js} +1 -1
- package/dist/{doctor-completion-SEerte2S.js → doctor-completion-BBki2Ufk.js} +1 -1
- package/dist/entry.js +1 -1
- package/dist/extensionAPI.js +1 -1
- package/dist/{gateway-cli-k19iT2vJ.js → gateway-cli-BNYHujRR.js} +9 -9
- package/dist/{gateway-cli-PjmG0pFo.js → gateway-cli-BVbhSSqh.js} +9 -9
- package/dist/{glass-ui-ws-iCEtluQU.js → glass-ui-ws-B-MkTkAC.js} +7 -7
- package/dist/{glass-ui-ws-D0Yv090T.js → glass-ui-ws-DfJEU59m.js} +7 -7
- package/dist/{health-CXjAtn1-.js → health-BU6f7W6a.js} +1 -1
- package/dist/{health-B32Q-KYM.js → health-wZyomt2k.js} +1 -1
- package/dist/{hooks-cli-DA6zOGNz.js → hooks-cli-CdoOvoX9.js} +2 -2
- package/dist/{hooks-cli-DfRmFenH.js → hooks-cli-DX4nLKqn.js} +2 -2
- package/dist/{image-CXu8W39c.js → image-CuzFLQWC.js} +1 -1
- package/dist/index.js +6 -6
- package/dist/llm-slug-generator.js +6 -6
- package/dist/{models-cli-CbJUD_L1.js → models-cli-Bc2k_maK.js} +3 -3
- package/dist/{models-cli-BgCUViRO.js → models-cli-BeOo0gLs.js} +2 -2
- package/dist/{models-zowe4LXa.js → models-mS0NbL8c.js} +2 -2
- package/dist/{onboard-CYvIpUXQ.js → onboard-B6VpNEvT.js} +2 -2
- package/dist/{onboard-DsKgcThj.js → onboard-Cl0aQccB.js} +2 -2
- package/dist/{onboard-channels-DxCGWgB0.js → onboard-channels-BlmSvsPS.js} +1 -1
- package/dist/{onboard-channels-DLiV4Y0t.js → onboard-channels-BnvM0w8_.js} +1 -1
- package/dist/{onboarding-DioGtMFo.js → onboarding-BxBRG2z_.js} +3 -3
- package/dist/{onboarding-BA5v1JEG.js → onboarding-DwHp3u6V.js} +3 -3
- package/dist/{onboarding.finalize-DMXCA49f.js → onboarding.finalize-BrbMUUi5.js} +6 -6
- package/dist/{onboarding.finalize-CAbRXb0h.js → onboarding.finalize-J7oUfYcz.js} +5 -5
- package/dist/{pi-embedded-CFFnZEcA.js → pi-embedded-FraxHehk.js} +172 -2
- package/dist/{pi-embedded-helpers-pubKo8HQ.js → pi-embedded-helpers-CfqDGQ9J.js} +4 -4
- package/dist/{plugin-registry-HFOrv3KN.js → plugin-registry-CMCHyYWB.js} +1 -1
- package/dist/{plugin-registry-Bt5YCgFq.js → plugin-registry-thPK5K1z.js} +1 -1
- package/dist/plugin-sdk/{channel-web-E56yV1OA.js → channel-web-Cz5hAZTe.js} +1 -1
- package/dist/plugin-sdk/index.js +2 -2
- package/dist/plugin-sdk/{reply-pPqvSkWb.js → reply-DM8-P0Qq.js} +172 -2
- package/dist/plugin-sdk/{web-Msnzya6B.js → web-BQYWq6xE.js} +2 -2
- package/dist/{plugins-cli-C7xTf9NV.js → plugins-cli-B87kp0ad.js} +2 -2
- package/dist/{plugins-cli-CXz_UApK.js → plugins-cli-DamE7XjD.js} +2 -2
- package/dist/{program-context-BBtSJunF.js → program-context-DFKRAsbt.js} +17 -17
- package/dist/{program-8hWr4qGZ.js → program-gbhreuEV.js} +7 -7
- package/dist/{prompt-select-styled-DUXeA9Zp.js → prompt-select-styled-B5bx2NEB.js} +4 -4
- package/dist/{prompt-select-styled-CwfroEHp.js → prompt-select-styled-BICt4IW2.js} +4 -4
- package/dist/{provider-auth-helpers-Dc7jBEOA.js → provider-auth-helpers-BEu0e6yr.js} +1 -1
- package/dist/{provider-auth-helpers-DhLHWjNU.js → provider-auth-helpers-DmEnyFX5.js} +1 -1
- package/dist/{push-apns-CflJh75N.js → push-apns-DVz2SkR5.js} +1 -1
- package/dist/{push-apns-CVZe5WVN.js → push-apns-tMnMeZX7.js} +1 -1
- package/dist/{pw-ai-B5asscAD.js → pw-ai-m0mj2KWK.js} +1 -1
- package/dist/{register.agent-BnuJQ5lg.js → register.agent-BOvqehoy.js} +6 -6
- package/dist/{register.agent-DV7IR1rI.js → register.agent-KI2e7rY8.js} +5 -5
- package/dist/{register.configure-DaIrJXWo.js → register.configure-BpxsezsB.js} +6 -6
- package/dist/{register.configure-BhncI0ij.js → register.configure-D8DGPMv0.js} +6 -6
- package/dist/{register.maintenance-BO1XWhVb.js → register.maintenance-BcIwMibz.js} +7 -7
- package/dist/{register.maintenance-DK_p-7so.js → register.maintenance-WRAU5DSR.js} +8 -8
- package/dist/{register.message-B194ue2R.js → register.message-C0eMmAGL.js} +2 -2
- package/dist/{register.message-B4CGCAn_.js → register.message-CX_Dmuke.js} +2 -2
- package/dist/{register.onboard-DidMCka8.js → register.onboard-BE87LPDH.js} +4 -4
- package/dist/{register.onboard-Dt53qGB5.js → register.onboard-ByB6oGQ-.js} +4 -4
- package/dist/{register.setup-DgUxMRZR.js → register.setup-D8DgDNnC.js} +4 -4
- package/dist/{register.setup-CLV1kk2-.js → register.setup-DSY9eAV8.js} +4 -4
- package/dist/{register.status-health-sessions-TvGuwVoR.js → register.status-health-sessions-CW4DkAa1.js} +3 -3
- package/dist/{register.status-health-sessions-CB10JLY6.js → register.status-health-sessions-TMJPmooX.js} +3 -3
- package/dist/{register.subclis-elNdyQio.js → register.subclis-BS-WgVMV.js} +9 -9
- package/dist/{reply-DUZvOCsG.js → reply-B2Xur-75.js} +172 -2
- package/dist/{run-main-gBPGqO8r.js → run-main-jFBqLwBJ.js} +14 -14
- package/dist/{runner-WAG0M5s9.js → runner-CU9l0uJh.js} +1 -1
- package/dist/{server-methods-dgW-8gC7.js → server-methods-BqQeaixw.js} +7 -7
- package/dist/{server-methods-BG0N79yY.js → server-methods-zgqyrRAq.js} +7 -7
- package/dist/{server-node-events-B_hsQw_N.js → server-node-events-8pINzbzg.js} +2 -2
- package/dist/{server-node-events-ZtQKBPo3.js → server-node-events-Doln-zR2.js} +2 -2
- package/dist/{status-D4Lr90yH.js → status-BDABGQ7Y.js} +1 -1
- package/dist/{status-Cd9-xWsZ.js → status-Bdqk3JgK.js} +2 -2
- package/dist/{status-BqhJ-HsW.js → status-Bwvq4SPL.js} +1 -1
- package/dist/{status-D-IvYfjk.js → status-DFml_pIs.js} +2 -2
- package/dist/{subagent-registry-J2pIBQF7.js → subagent-registry-CUXuFP-8.js} +172 -2
- package/dist/{unified-runner-C8c7J6BS.js → unified-runner-Bojz2_xD.js} +186 -16
- package/dist/{update-cli-D8nA6U7C.js → update-cli-C6thJhZU.js} +7 -7
- package/dist/{update-cli-B7TLu25J.js → update-cli-Pwrk83u-.js} +8 -8
- package/dist/{update-runner-DvZOsoQs.js → update-runner-Bssy0nSl.js} +1 -1
- package/dist/{update-runner-D8AFB8Oi.js → update-runner-DgqFpUFr.js} +1 -1
- package/dist/{web-DDiOPIdv.js → web-BFY2FcFr.js} +2 -2
- package/dist/{web-CAy-xQv2.js → web-BiK5cfMV.js} +1 -1
- package/dist/{web-mQInjWbW.js → web-DJgELzDq.js} +1 -1
- package/dist/{web--erunODY.js → web-DLkEjSYp.js} +6 -6
- package/package.json +1 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { u as resolveGatewayPort } from "./paths-Cqn-zk3M.js";
|
|
2
2
|
import { B as theme, k as info, z as isRich } from "./utils-B-0b9bGM.js";
|
|
3
|
-
import { B as summarizeRestartSentinel, Jt as sha256HexPrefix, _t as formatUsageReportLines, a as buildChannelSummary, gt as loadProviderUsageSummary, h as listAgentsForGateway, m as classifySessionKey, o as buildChannelAccountSnapshot, pr as lookupContextTokens, s as formatChannelAllowFrom, wr as peekSystemEvents, x as resolveSessionModelRef, z as readRestartSentinel } from "./reply-
|
|
3
|
+
import { B as summarizeRestartSentinel, Jt as sha256HexPrefix, _t as formatUsageReportLines, a as buildChannelSummary, gt as loadProviderUsageSummary, h as listAgentsForGateway, m as classifySessionKey, o as buildChannelAccountSnapshot, pr as lookupContextTokens, s as formatChannelAllowFrom, wr as peekSystemEvents, x as resolveSessionModelRef, z as readRestartSentinel } from "./reply-B2Xur-75.js";
|
|
4
4
|
import { S as parseAgentSessionKey } from "./session-key-DCt45XZa.js";
|
|
5
5
|
import { t as resolveSymiPackageRoot } from "./symi-root-CrGJbkzf.js";
|
|
6
6
|
import { n as runExec } from "./exec-CWkblSrI.js";
|
|
@@ -28,7 +28,7 @@ import { t as formatRuntimeStatusWithDetails } from "./runtime-status-CR9445g5.j
|
|
|
28
28
|
import { t as readLastGatewayErrorLine } from "./diagnostics-BAMlsVVX.js";
|
|
29
29
|
import { t as renderTable } from "./table-BTgkRafz.js";
|
|
30
30
|
import { a as resolveGatewayProbeAuth$1, c as probeGateway, t as runSecurityAudit } from "./audit-CrITRV6w.js";
|
|
31
|
-
import { a as resolveHeartbeatSummaryForAgent, t as formatHealthChannelLines } from "./health-
|
|
31
|
+
import { a as resolveHeartbeatSummaryForAgent, t as formatHealthChannelLines } from "./health-wZyomt2k.js";
|
|
32
32
|
import { g as resolveUpdateChannelDisplay, i as formatGitInstallLabel, m as normalizeUpdateChannel, t as checkUpdateStatus } from "./update-check-CtckACbb.js";
|
|
33
33
|
import { t as resolveNodeService } from "./node-service-Cxz4e-Qd.js";
|
|
34
34
|
import { n as redactSecrets, t as formatGatewayAuthUsed } from "./format-yQZNwAF2.js";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { dt as createPluginLoaderLogger, ft as loadSymiPlugins } from "./reply-
|
|
1
|
+
import { dt as createPluginLoaderLogger, ft as loadSymiPlugins } from "./reply-B2Xur-75.js";
|
|
2
2
|
import { t as createSubsystemLogger } from "./subsystem-D9vIQve0.js";
|
|
3
3
|
import { D as resolveDefaultAgentWorkspaceDir, c as resolveAgentWorkspaceDir, l as resolveDefaultAgentId } from "./agent-scope-CgUHAtCo.js";
|
|
4
4
|
import { i as loadConfig } from "./config-CHwyw6l5.js";
|
|
@@ -9,7 +9,7 @@ import { c as resolveAgentWorkspaceDir } from "./agent-scope-D-jRCY0d.js";
|
|
|
9
9
|
import { t as buildWorkspaceSkillStatus } from "./skills-status-DKXJ-tbi.js";
|
|
10
10
|
import { H as VERSION, i as loadConfig, o as readConfigFileSnapshot } from "./config-DHBLS1Hl.js";
|
|
11
11
|
import { n as callGateway, t as buildGatewayConnectionDetails } from "./call-BcE47FtD.js";
|
|
12
|
-
import { En as peekSystemEvents, St as summarizeRestartSentinel, cn as buildChannelAccountSnapshot, in as formatUsageReportLines, ln as formatChannelAllowFrom, nt as sha256HexPrefix, rn as loadProviderUsageSummary, sn as buildChannelSummary, xt as readRestartSentinel } from "./subagent-registry-
|
|
12
|
+
import { En as peekSystemEvents, St as summarizeRestartSentinel, cn as buildChannelAccountSnapshot, in as formatUsageReportLines, ln as formatChannelAllowFrom, nt as sha256HexPrefix, rn as loadProviderUsageSummary, sn as buildChannelSummary, xt as readRestartSentinel } from "./subagent-registry-CUXuFP-8.js";
|
|
13
13
|
import { F as resolveMainSessionKey, j as resolveFreshSessionTotalTokens, o as loadSessionStore } from "./sessions-CJXnZVjR.js";
|
|
14
14
|
import { n as listChannelPlugins } from "./plugins-CwSlLxM8.js";
|
|
15
15
|
import { o as getTailnetHostname, s as readTailscaleStatusJson } from "./tailscale-CbbvYNVw.js";
|
|
@@ -29,7 +29,7 @@ import { t as formatRuntimeStatusWithDetails } from "./runtime-status-hFVEC3wO.j
|
|
|
29
29
|
import { t as readLastGatewayErrorLine } from "./diagnostics-CS1ov_hH.js";
|
|
30
30
|
import { t as renderTable } from "./table-D01d2GuY.js";
|
|
31
31
|
import { a as resolveGatewayProbeAuth$1, c as probeGateway, t as runSecurityAudit } from "./audit-Byo5jCLN.js";
|
|
32
|
-
import { o as resolveHeartbeatSummaryForAgent, t as formatHealthChannelLines } from "./health-
|
|
32
|
+
import { o as resolveHeartbeatSummaryForAgent, t as formatHealthChannelLines } from "./health-BU6f7W6a.js";
|
|
33
33
|
import { g as resolveUpdateChannelDisplay, i as formatGitInstallLabel, m as normalizeUpdateChannel, t as checkUpdateStatus } from "./update-check-ZdimP1aU.js";
|
|
34
34
|
import { t as resolveNodeService } from "./node-service-fcZExd22.js";
|
|
35
35
|
import { n as redactSecrets, t as formatGatewayAuthUsed } from "./format-DVLB9DNB.js";
|
|
@@ -35579,6 +35579,175 @@ function toClientToolDefinitions(tools, onClientToolCall, hookContext) {
|
|
|
35579
35579
|
* @module
|
|
35580
35580
|
*/
|
|
35581
35581
|
/**
|
|
35582
|
+
* Known shell commands for prefix deduplication.
|
|
35583
|
+
* When token boundary corruption doubles a command prefix (grep → grgrep,
|
|
35584
|
+
* ls → lsls), we check the first token against this set. If stripping
|
|
35585
|
+
* the repeated prefix yields a known command, use it.
|
|
35586
|
+
*
|
|
35587
|
+
* O(1) lookup. Zero false positives — no valid command is its own prefix doubled.
|
|
35588
|
+
*/
|
|
35589
|
+
const KNOWN_COMMANDS = new Set([
|
|
35590
|
+
"ls",
|
|
35591
|
+
"cat",
|
|
35592
|
+
"cp",
|
|
35593
|
+
"mv",
|
|
35594
|
+
"rm",
|
|
35595
|
+
"mkdir",
|
|
35596
|
+
"rmdir",
|
|
35597
|
+
"touch",
|
|
35598
|
+
"chmod",
|
|
35599
|
+
"chown",
|
|
35600
|
+
"chgrp",
|
|
35601
|
+
"ln",
|
|
35602
|
+
"pwd",
|
|
35603
|
+
"echo",
|
|
35604
|
+
"printf",
|
|
35605
|
+
"head",
|
|
35606
|
+
"tail",
|
|
35607
|
+
"wc",
|
|
35608
|
+
"sort",
|
|
35609
|
+
"uniq",
|
|
35610
|
+
"cut",
|
|
35611
|
+
"tr",
|
|
35612
|
+
"tee",
|
|
35613
|
+
"xargs",
|
|
35614
|
+
"env",
|
|
35615
|
+
"date",
|
|
35616
|
+
"sleep",
|
|
35617
|
+
"true",
|
|
35618
|
+
"false",
|
|
35619
|
+
"yes",
|
|
35620
|
+
"test",
|
|
35621
|
+
"expr",
|
|
35622
|
+
"basename",
|
|
35623
|
+
"dirname",
|
|
35624
|
+
"readlink",
|
|
35625
|
+
"realpath",
|
|
35626
|
+
"mktemp",
|
|
35627
|
+
"stat",
|
|
35628
|
+
"file",
|
|
35629
|
+
"dd",
|
|
35630
|
+
"df",
|
|
35631
|
+
"du",
|
|
35632
|
+
"id",
|
|
35633
|
+
"whoami",
|
|
35634
|
+
"hostname",
|
|
35635
|
+
"uname",
|
|
35636
|
+
"grep",
|
|
35637
|
+
"egrep",
|
|
35638
|
+
"fgrep",
|
|
35639
|
+
"find",
|
|
35640
|
+
"locate",
|
|
35641
|
+
"sed",
|
|
35642
|
+
"awk",
|
|
35643
|
+
"diff",
|
|
35644
|
+
"patch",
|
|
35645
|
+
"strings",
|
|
35646
|
+
"less",
|
|
35647
|
+
"more",
|
|
35648
|
+
"tar",
|
|
35649
|
+
"gzip",
|
|
35650
|
+
"gunzip",
|
|
35651
|
+
"zip",
|
|
35652
|
+
"unzip",
|
|
35653
|
+
"bzip2",
|
|
35654
|
+
"xz",
|
|
35655
|
+
"curl",
|
|
35656
|
+
"wget",
|
|
35657
|
+
"ssh",
|
|
35658
|
+
"scp",
|
|
35659
|
+
"rsync",
|
|
35660
|
+
"ping",
|
|
35661
|
+
"dig",
|
|
35662
|
+
"nslookup",
|
|
35663
|
+
"netstat",
|
|
35664
|
+
"lsof",
|
|
35665
|
+
"nc",
|
|
35666
|
+
"ifconfig",
|
|
35667
|
+
"ip",
|
|
35668
|
+
"ps",
|
|
35669
|
+
"top",
|
|
35670
|
+
"kill",
|
|
35671
|
+
"killall",
|
|
35672
|
+
"nohup",
|
|
35673
|
+
"nice",
|
|
35674
|
+
"which",
|
|
35675
|
+
"type",
|
|
35676
|
+
"where",
|
|
35677
|
+
"man",
|
|
35678
|
+
"sudo",
|
|
35679
|
+
"su",
|
|
35680
|
+
"mount",
|
|
35681
|
+
"umount",
|
|
35682
|
+
"systemctl",
|
|
35683
|
+
"journalctl",
|
|
35684
|
+
"launchctl",
|
|
35685
|
+
"dmesg",
|
|
35686
|
+
"sysctl",
|
|
35687
|
+
"git",
|
|
35688
|
+
"make",
|
|
35689
|
+
"gcc",
|
|
35690
|
+
"python",
|
|
35691
|
+
"python3",
|
|
35692
|
+
"pip",
|
|
35693
|
+
"pip3",
|
|
35694
|
+
"node",
|
|
35695
|
+
"npm",
|
|
35696
|
+
"npx",
|
|
35697
|
+
"pnpm",
|
|
35698
|
+
"yarn",
|
|
35699
|
+
"cargo",
|
|
35700
|
+
"go",
|
|
35701
|
+
"ruby",
|
|
35702
|
+
"gem",
|
|
35703
|
+
"java",
|
|
35704
|
+
"javac",
|
|
35705
|
+
"docker",
|
|
35706
|
+
"brew",
|
|
35707
|
+
"open",
|
|
35708
|
+
"pbcopy",
|
|
35709
|
+
"pbpaste",
|
|
35710
|
+
"defaults",
|
|
35711
|
+
"diskutil",
|
|
35712
|
+
"sw_vers",
|
|
35713
|
+
"system_profiler",
|
|
35714
|
+
"plutil",
|
|
35715
|
+
"mdfind",
|
|
35716
|
+
"mdls",
|
|
35717
|
+
"softwareupdate",
|
|
35718
|
+
"caffeinate",
|
|
35719
|
+
"say",
|
|
35720
|
+
"osascript",
|
|
35721
|
+
"security",
|
|
35722
|
+
"codesign",
|
|
35723
|
+
"hdiutil",
|
|
35724
|
+
"installer",
|
|
35725
|
+
"lipo",
|
|
35726
|
+
"otool",
|
|
35727
|
+
"dscl",
|
|
35728
|
+
"scutil"
|
|
35729
|
+
]);
|
|
35730
|
+
/**
|
|
35731
|
+
* Fix command prefix duplication from token boundary splits.
|
|
35732
|
+
* Token corruption can double a multi-char prefix: grep → grgrep, ls → lsls.
|
|
35733
|
+
* Check if the first token starts with a repeated prefix that, when removed,
|
|
35734
|
+
* yields a known command.
|
|
35735
|
+
*
|
|
35736
|
+
* Examples: grgrep → grep, lsls → ls, catcat → cat, curlcurl → curl
|
|
35737
|
+
*/
|
|
35738
|
+
function dedupCommandPrefix(command) {
|
|
35739
|
+
const match = command.match(/^([a-zA-Z0-9_-]+)/);
|
|
35740
|
+
if (!match) return command;
|
|
35741
|
+
const firstToken = match[1];
|
|
35742
|
+
if (KNOWN_COMMANDS.has(firstToken)) return command;
|
|
35743
|
+
for (let prefixLen = 2; prefixLen <= Math.min(10, Math.floor(firstToken.length / 2)); prefixLen++) {
|
|
35744
|
+
const prefix = firstToken.slice(0, prefixLen);
|
|
35745
|
+
const candidate = firstToken.slice(prefixLen);
|
|
35746
|
+
if (candidate.startsWith(prefix.slice(0, Math.min(prefix.length, candidate.length))) && KNOWN_COMMANDS.has(candidate)) return candidate + command.slice(firstToken.length);
|
|
35747
|
+
}
|
|
35748
|
+
return command;
|
|
35749
|
+
}
|
|
35750
|
+
/**
|
|
35582
35751
|
* Validate that a command string contains extractable valid shell syntax.
|
|
35583
35752
|
* Returns the cleaned command if valid, or an error reason if not.
|
|
35584
35753
|
*
|
|
@@ -35597,6 +35766,7 @@ function validateShellCommand(command) {
|
|
|
35597
35766
|
cleaned = cleaned.replace(/<\|[^|>]*(?:\|>)?/g, "").trim();
|
|
35598
35767
|
cleaned = cleanResidualTokenFragments(cleaned);
|
|
35599
35768
|
}
|
|
35769
|
+
cleaned = dedupCommandPrefix(cleaned);
|
|
35600
35770
|
if (!cleaned || !cleaned.trim()) return {
|
|
35601
35771
|
valid: false,
|
|
35602
35772
|
cleaned: "",
|
|
@@ -53079,7 +53249,7 @@ function isVoiceChannelType(type) {
|
|
|
53079
53249
|
function createDefaultDeps() {
|
|
53080
53250
|
return {
|
|
53081
53251
|
sendMessageWhatsApp: async (...args) => {
|
|
53082
|
-
const { sendMessageWhatsApp } = await import("./web-
|
|
53252
|
+
const { sendMessageWhatsApp } = await import("./web-BiK5cfMV.js");
|
|
53083
53253
|
return await sendMessageWhatsApp(...args);
|
|
53084
53254
|
},
|
|
53085
53255
|
sendMessageTelegram: async (...args) => {
|
|
@@ -68393,7 +68563,7 @@ function loadWebLoginQr() {
|
|
|
68393
68563
|
return webLoginQrPromise;
|
|
68394
68564
|
}
|
|
68395
68565
|
function loadWebChannel() {
|
|
68396
|
-
webChannelPromise ??= import("./web-
|
|
68566
|
+
webChannelPromise ??= import("./web-BiK5cfMV.js");
|
|
68397
68567
|
return webChannelPromise;
|
|
68398
68568
|
}
|
|
68399
68569
|
function loadWhatsAppActions() {
|
|
@@ -10,10 +10,10 @@ import { $ as resolveSymiAgentDir, B as resolveApiKeyForProvider, C as normalize
|
|
|
10
10
|
import { n as formatCliCommand, r as resolveCliName, t as isTruthyEnvValue } from "./env-BDXYbTKj.js";
|
|
11
11
|
import { a as saveJsonFile, i as loadJsonFile } from "./github-copilot-token-cCYzSU9h.js";
|
|
12
12
|
import { t as parseBooleanValue$1 } from "./boolean-CE7i9tBR.js";
|
|
13
|
-
import { $ as normalizeDeliveryContext, 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, G as updateLastRoute, Gt as compileGlobPatterns, H as loadSessionStore, Ht as normalizeToolName, I as resolveSandboxRuntimeStatus, It as applyOwnerOnlyToolPolicy, J as isCacheEnabled, Jt as ensureSessionHeader, K as updateSessionStore, 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 mergeDeliveryContext, 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 deliveryContextFromSession, Xt as resolveBootstrapTotalMaxChars, Y as resolveCacheTtlMs$1, Yt as resolveBootstrapMaxChars, Z as deliveryContextKey, Zt as sanitizeGoogleTurnOrdering, _ as formatRawAssistantErrorForUi, _t as resolveFreshSessionTotalTokens, a as isMessagingToolDuplicateNormalized, at as extractToolCallNames, b as isBillingAssistantError, bt as resolveExplicitAgentSessionKey, c as extractToolCallsFromAssistant, ct as hasInterSessionUserProvenance, d as isAntigravityClaude, dt as evaluateSessionFreshness, et as normalizeSessionDeliveryFields, f as isGoogleModelApi, ft as resolveChannelResetConfig, g as formatBillingErrorMessage, gt as DEFAULT_RESET_TRIGGERS, h as formatAssistantErrorText, ht as resolveThreadFlag, it as countToolResults, j as parseImageDimensionError, jt as resolveExistingPathsWithinRoot, k as isTimeoutErrorMessage, kt as resolveProfile, l as extractToolResultId, lt as normalizeInputProvenance, m as classifyFailoverReason, mt as resolveSessionResetType, n as validateGeminiTurns, nt as archiveSessionTranscripts, o as normalizeTextForComparison, ot as INPUT_PROVENANCE_KIND_VALUES, p as BILLING_ERROR_USER_MESSAGE, pt as resolveSessionResetPolicy, q as updateSessionStoreEntry, qt as buildBootstrapContextFiles, r as pickFallbackThinkingLevel, rt as capArrayByJsonBytes, s as sanitizeSessionMessagesImages, st as applyInputProvenanceToUserMessage, t as validateAnthropicTurns, tt as normalizeAccountId$3, u as downgradeOpenAIReasoningBlocks, ut as resolveSessionKey, v as getApiErrorPayloadFingerprint, vt as canonicalizeMainSessionAlias, w as isFailoverAssistantError, wt as acquireSessionWriteLock, x as isCloudCodeAssistFormatError, xt as resolveMainSessionKey, y as isAuthAssistantError, z as appendAssistantMessageToSessionTranscript, zt as expandPolicyWithPluginGroups } from "./pi-embedded-helpers-
|
|
13
|
+
import { $ as normalizeDeliveryContext, 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, G as updateLastRoute, Gt as compileGlobPatterns, H as loadSessionStore, Ht as normalizeToolName, I as resolveSandboxRuntimeStatus, It as applyOwnerOnlyToolPolicy, J as isCacheEnabled, Jt as ensureSessionHeader, K as updateSessionStore, 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 mergeDeliveryContext, 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 deliveryContextFromSession, Xt as resolveBootstrapTotalMaxChars, Y as resolveCacheTtlMs$1, Yt as resolveBootstrapMaxChars, Z as deliveryContextKey, Zt as sanitizeGoogleTurnOrdering, _ as formatRawAssistantErrorForUi, _t as resolveFreshSessionTotalTokens, a as isMessagingToolDuplicateNormalized, at as extractToolCallNames, b as isBillingAssistantError, bt as resolveExplicitAgentSessionKey, c as extractToolCallsFromAssistant, ct as hasInterSessionUserProvenance, d as isAntigravityClaude, dt as evaluateSessionFreshness, et as normalizeSessionDeliveryFields, f as isGoogleModelApi, ft as resolveChannelResetConfig, g as formatBillingErrorMessage, gt as DEFAULT_RESET_TRIGGERS, h as formatAssistantErrorText, ht as resolveThreadFlag, it as countToolResults, j as parseImageDimensionError, jt as resolveExistingPathsWithinRoot, k as isTimeoutErrorMessage, kt as resolveProfile, l as extractToolResultId, lt as normalizeInputProvenance, m as classifyFailoverReason, mt as resolveSessionResetType, n as validateGeminiTurns, nt as archiveSessionTranscripts, o as normalizeTextForComparison, ot as INPUT_PROVENANCE_KIND_VALUES, p as BILLING_ERROR_USER_MESSAGE, pt as resolveSessionResetPolicy, q as updateSessionStoreEntry, qt as buildBootstrapContextFiles, r as pickFallbackThinkingLevel, rt as capArrayByJsonBytes, s as sanitizeSessionMessagesImages, st as applyInputProvenanceToUserMessage, t as validateAnthropicTurns, tt as normalizeAccountId$3, u as downgradeOpenAIReasoningBlocks, ut as resolveSessionKey, v as getApiErrorPayloadFingerprint, vt as canonicalizeMainSessionAlias, w as isFailoverAssistantError, wt as acquireSessionWriteLock, x as isCloudCodeAssistFormatError, xt as resolveMainSessionKey, y as isAuthAssistantError, z as appendAssistantMessageToSessionTranscript, zt as expandPolicyWithPluginGroups } from "./pi-embedded-helpers-CfqDGQ9J.js";
|
|
14
14
|
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-5SdHIcHU.js";
|
|
15
15
|
import { a as applyTestPluginDefaults, c as resolveMemorySlotDecision, d as isDangerousHostEnvVarName, i as safeStatSync, n as discoverSymiPlugins, o as normalizePluginsConfig, r as isPathInside, s as resolveEnableState, t as loadPluginManifestRegistry, u as isPathInsideWithRealpath } from "./manifest-registry-yb7sAlu4.js";
|
|
16
|
-
import { C as rawDataToString, O as DEFAULT_AI_SNAPSHOT_MAX_CHARS, T as isSecureWebSocketUrl, x as ensureChromeExtensionRelayServer } from "./chrome-
|
|
16
|
+
import { C as rawDataToString, O as DEFAULT_AI_SNAPSHOT_MAX_CHARS, T as isSecureWebSocketUrl, x as ensureChromeExtensionRelayServer } from "./chrome-DkaXoP36.js";
|
|
17
17
|
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-Bs0AW1g3.js";
|
|
18
18
|
import { n as formatErrorMessage, r as formatUncaughtError } from "./errors-XIsvXeC-.js";
|
|
19
19
|
import { c as detectMime, d as imageMimeFromFormat, f as isAudioFileName, g as MAX_IMAGE_BYTES, i as getImageMetadata, l as extensionForMime, p as isGifMedia, s as resizeToJpeg, v as mediaKindFromMime } from "./image-ops-C7CauEK8.js";
|
|
@@ -31,10 +31,10 @@ import { a as resolveSlackWebClientOptions, c as buildSlackBlocksFallbackText, i
|
|
|
31
31
|
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-CvhXrdgS.js";
|
|
32
32
|
import { t as emitSessionTranscriptUpdate } from "./transcript-events-BBh3Gsrx.js";
|
|
33
33
|
import { i as resolveImageSanitizationLimits, n as sanitizeImageBlocks, r as sanitizeToolResultImages } from "./tool-images-SqqWIT22.js";
|
|
34
|
-
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-
|
|
34
|
+
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-C46-vyqg.js";
|
|
35
35
|
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-rPhsBoZz.js";
|
|
36
36
|
import { r as getDiagnosticSessionState } from "./diagnostic-session-state-Zw87xFym.js";
|
|
37
|
-
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-
|
|
37
|
+
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-CuzFLQWC.js";
|
|
38
38
|
import { a as isSilentReplyText, i as isSilentReplyPrefixText, n as SILENT_REPLY_TOKEN, r as SYMIPULSE_TOKEN, t as HEARTBEAT_TOKEN } from "./tokens-Bux9Y_xD.js";
|
|
39
39
|
import { $ as isVoiceCompatibleAudio, A as extractTelegramLocation, B as normalizeAllowFromWithStore$1, C as buildTelegramGroupFrom, D as buildTypingThreadParams, E as buildTelegramThreadParams, F as resolveTelegramMediaPlaceholder, G as formatLocationText, H as firstDefined$1, I as resolveTelegramReplyId, J as readChannelAllowFromStore, K as toLocationContext, L as resolveTelegramStreamMode, M as normalizeForwardedContext, N as resolveTelegramForumThreadId, O as describeReplyTarget, P as resolveTelegramGroupAllowFromContext, Q as listPairingChannels, R as resolveTelegramThreadSpec, S as buildSenderName, T as buildTelegramParentPeer, U as isSenderIdAllowed, V as resolveSenderAllowMatch, W as mergeAllowFromSources, X as upsertChannelPairingRequest, Y as removeChannelAllowFromStoreEntry, Z as getPairingAdapter, _ as resolveTelegramFetch, a as reactMessageTelegram, b as buildGroupLabel, c as sendStickerTelegram, d as wasSentByBot, et as parseTelegramTarget, f as isRecoverableTelegramNetworkError, g as wrapFileReferencesInHtml, h as renderTelegramHtmlText, i as editMessageTelegram, j as hasBotMention, k as expandTextLinks, m as markdownToTelegramHtml, n as createForumTopicTelegram, o as sendMessageTelegram, p as markdownToTelegramChunks, q as addChannelAllowFromStoreEntry, r as deleteMessageTelegram, s as sendPollTelegram, t as buildInlineKeyboard, tt as resolveTelegramTargetChatType, u as resolveTelegramVoiceSend, v as splitTelegramCaption, w as buildTelegramGroupPeerId, x as buildSenderLabel, y as withTelegramApiErrorLogging, z as isSenderAllowed$1 } from "./send-DYj_o4_F.js";
|
|
40
40
|
import { n as discoverModels, t as discoverAuthStorage } from "./pi-model-discovery-Bv5YDJc8.js";
|
|
@@ -49,7 +49,7 @@ import { n as fetchWithTimeout, t as bindAbortRelay } from "./fetch-timeout-DL3f
|
|
|
49
49
|
import { a as readResponseWithLimit, i as fetchRemoteMedia, n as getDefaultMediaLocalRoots, o as fetchWithSsrFGuard, t as getAgentScopedMediaLocalRoots } from "./local-roots-DhZz0Ybs.js";
|
|
50
50
|
import { a as loadWebMedia, i as getDefaultLocalRoots } from "./ir-CTiz95Vb.js";
|
|
51
51
|
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-Bfc7Uz0o.js";
|
|
52
|
-
import { _ as CLI_OUTPUT_MAX_BUFFER, a as resolveMediaAttachmentLocalRoots, c as loadModelCatalog, d as resolveAttachmentKind, f as buildRandomTempFilePath, g as resolveMediaUnderstandingScope, h as normalizeMediaUnderstandingChatType, i as resolveAutoImageModel, l as modelSupportsVision, m as resolveTimeoutMs$1, n as createMediaAttachmentCache, o as runCapability, p as resolveConcurrency, r as normalizeMediaAttachments, s as findModelInCatalog, t as buildProviderRegistry, v as applyTemplate, y as registerUnhandledRejectionHandler } from "./runner-
|
|
52
|
+
import { _ as CLI_OUTPUT_MAX_BUFFER, a as resolveMediaAttachmentLocalRoots, c as loadModelCatalog, d as resolveAttachmentKind, f as buildRandomTempFilePath, g as resolveMediaUnderstandingScope, h as normalizeMediaUnderstandingChatType, i as resolveAutoImageModel, l as modelSupportsVision, m as resolveTimeoutMs$1, n as createMediaAttachmentCache, o as runCapability, p as resolveConcurrency, r as normalizeMediaAttachments, s as findModelInCatalog, t as buildProviderRegistry, v as applyTemplate, y as registerUnhandledRejectionHandler } from "./runner-CU9l0uJh.js";
|
|
53
53
|
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-DcVwOafC.js";
|
|
54
54
|
import { r as normalizeInboundTextNewlines, t as finalizeInboundContext } from "./inbound-context-DSDTl6Kj.js";
|
|
55
55
|
import { n as wrapFetchWithAbortSignal, t as resolveFetch } from "./fetch-Bso4i15F.js";
|
|
@@ -80,7 +80,7 @@ import AjvPkg from "ajv";
|
|
|
80
80
|
import { CURRENT_SESSION_VERSION, DefaultResourceLoader, SessionManager, SettingsManager, codingTools, createAgentSession, createEditTool, createReadTool, createWriteTool, estimateTokens, generateSummary, readTool } from "@mariozechner/pi-coding-agent";
|
|
81
81
|
import { createServer } from "node:http";
|
|
82
82
|
import { ProxyAgent, fetch as fetch$1 } from "undici";
|
|
83
|
-
import WebSocket, { WebSocket
|
|
83
|
+
import WebSocket$1, { WebSocket } from "ws";
|
|
84
84
|
import { Buffer as Buffer$1 } from "node:buffer";
|
|
85
85
|
import { EdgeTTS } from "node-edge-tts";
|
|
86
86
|
import { createJiti } from "jiti";
|
|
@@ -8636,7 +8636,7 @@ var GatewayClient = class {
|
|
|
8636
8636
|
if (fingerprint !== expected) return /* @__PURE__ */ new Error("gateway tls fingerprint mismatch");
|
|
8637
8637
|
});
|
|
8638
8638
|
}
|
|
8639
|
-
this.ws = new WebSocket
|
|
8639
|
+
this.ws = new WebSocket(url, wsOptions);
|
|
8640
8640
|
this.ws.on("open", () => {
|
|
8641
8641
|
if (url.startsWith("wss://") && this.opts.tlsFingerprint) {
|
|
8642
8642
|
const tlsError = this.validateTlsFingerprint();
|
|
@@ -8855,7 +8855,7 @@ var GatewayClient = class {
|
|
|
8855
8855
|
return null;
|
|
8856
8856
|
}
|
|
8857
8857
|
async request(method, params, opts) {
|
|
8858
|
-
if (!this.ws || this.ws.readyState !== WebSocket
|
|
8858
|
+
if (!this.ws || this.ws.readyState !== WebSocket.OPEN) throw new Error("gateway not connected");
|
|
8859
8859
|
const id = randomUUID();
|
|
8860
8860
|
const frame = {
|
|
8861
8861
|
type: "req",
|
|
@@ -10121,7 +10121,7 @@ async function routeReply(params) {
|
|
|
10121
10121
|
const resolvedReplyToId = replyToId ?? (channelId === "slack" && threadId != null && threadId !== "" ? String(threadId) : void 0);
|
|
10122
10122
|
const resolvedThreadId = channelId === "slack" ? null : threadId ?? null;
|
|
10123
10123
|
try {
|
|
10124
|
-
const { deliverOutboundPayloads } = await import("./deliver-
|
|
10124
|
+
const { deliverOutboundPayloads } = await import("./deliver-C46-vyqg.js").then((n) => n.n);
|
|
10125
10125
|
return {
|
|
10126
10126
|
ok: true,
|
|
10127
10127
|
messageId: (await deliverOutboundPayloads({
|
|
@@ -43560,7 +43560,7 @@ async function deliverSessionMaintenanceWarning(params) {
|
|
|
43560
43560
|
return;
|
|
43561
43561
|
}
|
|
43562
43562
|
try {
|
|
43563
|
-
const { deliverOutboundPayloads } = await import("./deliver-
|
|
43563
|
+
const { deliverOutboundPayloads } = await import("./deliver-C46-vyqg.js").then((n) => n.n);
|
|
43564
43564
|
await deliverOutboundPayloads({
|
|
43565
43565
|
cfg: params.cfg,
|
|
43566
43566
|
channel,
|
|
@@ -47006,7 +47006,7 @@ async function describeStickerImage(params) {
|
|
|
47006
47006
|
logVerbose(`telegram: describing sticker with ${provider}/${model}`);
|
|
47007
47007
|
try {
|
|
47008
47008
|
const buffer = await fs$1.readFile(imagePath);
|
|
47009
|
-
const { describeImageWithModel } = await import("./image-
|
|
47009
|
+
const { describeImageWithModel } = await import("./image-CuzFLQWC.js").then((n) => n.n);
|
|
47010
47010
|
return (await describeImageWithModel({
|
|
47011
47011
|
buffer,
|
|
47012
47012
|
fileName: "sticker.webp",
|
|
@@ -49668,7 +49668,7 @@ async function preflightDiscordMessage(params) {
|
|
|
49668
49668
|
let preflightTranscript;
|
|
49669
49669
|
const hasAudioAttachment = message.attachments?.some((att) => att.contentType?.startsWith("audio/"));
|
|
49670
49670
|
if (!isDirectMessage && shouldRequireMention && hasAudioAttachment && !baseText && mentionRegexes.length > 0) try {
|
|
49671
|
-
const { transcribeFirstAudio } = await import("./audio-preflight-
|
|
49671
|
+
const { transcribeFirstAudio } = await import("./audio-preflight-BVaaZWkg.js");
|
|
49672
49672
|
const audioPaths = message.attachments?.filter((att) => att.contentType?.startsWith("audio/")).map((att) => att.url) ?? [];
|
|
49673
49673
|
if (audioPaths.length > 0) preflightTranscript = await transcribeFirstAudio({
|
|
49674
49674
|
ctx: {
|
|
@@ -53674,7 +53674,7 @@ function isVoiceChannelType(type) {
|
|
|
53674
53674
|
function createDefaultDeps() {
|
|
53675
53675
|
return {
|
|
53676
53676
|
sendMessageWhatsApp: async (...args) => {
|
|
53677
|
-
const { sendMessageWhatsApp } = await import("./web
|
|
53677
|
+
const { sendMessageWhatsApp } = await import("./web-DLkEjSYp.js");
|
|
53678
53678
|
return await sendMessageWhatsApp(...args);
|
|
53679
53679
|
},
|
|
53680
53680
|
sendMessageTelegram: async (...args) => {
|
|
@@ -56579,7 +56579,7 @@ function createDiscordGatewayPlugin(params) {
|
|
|
56579
56579
|
super(options);
|
|
56580
56580
|
}
|
|
56581
56581
|
createWebSocket(url) {
|
|
56582
|
-
return new WebSocket(url, { agent });
|
|
56582
|
+
return new WebSocket$1(url, { agent });
|
|
56583
56583
|
}
|
|
56584
56584
|
}
|
|
56585
56585
|
return new ProxyGatewayPlugin();
|
|
@@ -66797,7 +66797,7 @@ const buildTelegramMessageContext = async ({ primaryCtx, allMedia, storeAllowFro
|
|
|
66797
66797
|
const hasAudio = allMedia.some((media) => media.contentType?.startsWith("audio/"));
|
|
66798
66798
|
let preflightTranscript;
|
|
66799
66799
|
if (isGroup && requireMention && hasAudio && !hasUserText && mentionRegexes.length > 0) try {
|
|
66800
|
-
const { transcribeFirstAudio } = await import("./audio-preflight-
|
|
66800
|
+
const { transcribeFirstAudio } = await import("./audio-preflight-BVaaZWkg.js");
|
|
66801
66801
|
preflightTranscript = await transcribeFirstAudio({
|
|
66802
66802
|
ctx: {
|
|
66803
66803
|
MediaPaths: allMedia.length > 0 ? allMedia.map((m) => m.path) : void 0,
|
|
@@ -68954,7 +68954,7 @@ function loadWebLoginQr() {
|
|
|
68954
68954
|
return webLoginQrPromise;
|
|
68955
68955
|
}
|
|
68956
68956
|
function loadWebChannel() {
|
|
68957
|
-
webChannelPromise ??= import("./web
|
|
68957
|
+
webChannelPromise ??= import("./web-DLkEjSYp.js");
|
|
68958
68958
|
return webChannelPromise;
|
|
68959
68959
|
}
|
|
68960
68960
|
function loadWhatsAppActions() {
|
|
@@ -75497,6 +75497,175 @@ function subscribeEmbeddedPiSession(params) {
|
|
|
75497
75497
|
* @module
|
|
75498
75498
|
*/
|
|
75499
75499
|
/**
|
|
75500
|
+
* Known shell commands for prefix deduplication.
|
|
75501
|
+
* When token boundary corruption doubles a command prefix (grep → grgrep,
|
|
75502
|
+
* ls → lsls), we check the first token against this set. If stripping
|
|
75503
|
+
* the repeated prefix yields a known command, use it.
|
|
75504
|
+
*
|
|
75505
|
+
* O(1) lookup. Zero false positives — no valid command is its own prefix doubled.
|
|
75506
|
+
*/
|
|
75507
|
+
const KNOWN_COMMANDS = new Set([
|
|
75508
|
+
"ls",
|
|
75509
|
+
"cat",
|
|
75510
|
+
"cp",
|
|
75511
|
+
"mv",
|
|
75512
|
+
"rm",
|
|
75513
|
+
"mkdir",
|
|
75514
|
+
"rmdir",
|
|
75515
|
+
"touch",
|
|
75516
|
+
"chmod",
|
|
75517
|
+
"chown",
|
|
75518
|
+
"chgrp",
|
|
75519
|
+
"ln",
|
|
75520
|
+
"pwd",
|
|
75521
|
+
"echo",
|
|
75522
|
+
"printf",
|
|
75523
|
+
"head",
|
|
75524
|
+
"tail",
|
|
75525
|
+
"wc",
|
|
75526
|
+
"sort",
|
|
75527
|
+
"uniq",
|
|
75528
|
+
"cut",
|
|
75529
|
+
"tr",
|
|
75530
|
+
"tee",
|
|
75531
|
+
"xargs",
|
|
75532
|
+
"env",
|
|
75533
|
+
"date",
|
|
75534
|
+
"sleep",
|
|
75535
|
+
"true",
|
|
75536
|
+
"false",
|
|
75537
|
+
"yes",
|
|
75538
|
+
"test",
|
|
75539
|
+
"expr",
|
|
75540
|
+
"basename",
|
|
75541
|
+
"dirname",
|
|
75542
|
+
"readlink",
|
|
75543
|
+
"realpath",
|
|
75544
|
+
"mktemp",
|
|
75545
|
+
"stat",
|
|
75546
|
+
"file",
|
|
75547
|
+
"dd",
|
|
75548
|
+
"df",
|
|
75549
|
+
"du",
|
|
75550
|
+
"id",
|
|
75551
|
+
"whoami",
|
|
75552
|
+
"hostname",
|
|
75553
|
+
"uname",
|
|
75554
|
+
"grep",
|
|
75555
|
+
"egrep",
|
|
75556
|
+
"fgrep",
|
|
75557
|
+
"find",
|
|
75558
|
+
"locate",
|
|
75559
|
+
"sed",
|
|
75560
|
+
"awk",
|
|
75561
|
+
"diff",
|
|
75562
|
+
"patch",
|
|
75563
|
+
"strings",
|
|
75564
|
+
"less",
|
|
75565
|
+
"more",
|
|
75566
|
+
"tar",
|
|
75567
|
+
"gzip",
|
|
75568
|
+
"gunzip",
|
|
75569
|
+
"zip",
|
|
75570
|
+
"unzip",
|
|
75571
|
+
"bzip2",
|
|
75572
|
+
"xz",
|
|
75573
|
+
"curl",
|
|
75574
|
+
"wget",
|
|
75575
|
+
"ssh",
|
|
75576
|
+
"scp",
|
|
75577
|
+
"rsync",
|
|
75578
|
+
"ping",
|
|
75579
|
+
"dig",
|
|
75580
|
+
"nslookup",
|
|
75581
|
+
"netstat",
|
|
75582
|
+
"lsof",
|
|
75583
|
+
"nc",
|
|
75584
|
+
"ifconfig",
|
|
75585
|
+
"ip",
|
|
75586
|
+
"ps",
|
|
75587
|
+
"top",
|
|
75588
|
+
"kill",
|
|
75589
|
+
"killall",
|
|
75590
|
+
"nohup",
|
|
75591
|
+
"nice",
|
|
75592
|
+
"which",
|
|
75593
|
+
"type",
|
|
75594
|
+
"where",
|
|
75595
|
+
"man",
|
|
75596
|
+
"sudo",
|
|
75597
|
+
"su",
|
|
75598
|
+
"mount",
|
|
75599
|
+
"umount",
|
|
75600
|
+
"systemctl",
|
|
75601
|
+
"journalctl",
|
|
75602
|
+
"launchctl",
|
|
75603
|
+
"dmesg",
|
|
75604
|
+
"sysctl",
|
|
75605
|
+
"git",
|
|
75606
|
+
"make",
|
|
75607
|
+
"gcc",
|
|
75608
|
+
"python",
|
|
75609
|
+
"python3",
|
|
75610
|
+
"pip",
|
|
75611
|
+
"pip3",
|
|
75612
|
+
"node",
|
|
75613
|
+
"npm",
|
|
75614
|
+
"npx",
|
|
75615
|
+
"pnpm",
|
|
75616
|
+
"yarn",
|
|
75617
|
+
"cargo",
|
|
75618
|
+
"go",
|
|
75619
|
+
"ruby",
|
|
75620
|
+
"gem",
|
|
75621
|
+
"java",
|
|
75622
|
+
"javac",
|
|
75623
|
+
"docker",
|
|
75624
|
+
"brew",
|
|
75625
|
+
"open",
|
|
75626
|
+
"pbcopy",
|
|
75627
|
+
"pbpaste",
|
|
75628
|
+
"defaults",
|
|
75629
|
+
"diskutil",
|
|
75630
|
+
"sw_vers",
|
|
75631
|
+
"system_profiler",
|
|
75632
|
+
"plutil",
|
|
75633
|
+
"mdfind",
|
|
75634
|
+
"mdls",
|
|
75635
|
+
"softwareupdate",
|
|
75636
|
+
"caffeinate",
|
|
75637
|
+
"say",
|
|
75638
|
+
"osascript",
|
|
75639
|
+
"security",
|
|
75640
|
+
"codesign",
|
|
75641
|
+
"hdiutil",
|
|
75642
|
+
"installer",
|
|
75643
|
+
"lipo",
|
|
75644
|
+
"otool",
|
|
75645
|
+
"dscl",
|
|
75646
|
+
"scutil"
|
|
75647
|
+
]);
|
|
75648
|
+
/**
|
|
75649
|
+
* Fix command prefix duplication from token boundary splits.
|
|
75650
|
+
* Token corruption can double a multi-char prefix: grep → grgrep, ls → lsls.
|
|
75651
|
+
* Check if the first token starts with a repeated prefix that, when removed,
|
|
75652
|
+
* yields a known command.
|
|
75653
|
+
*
|
|
75654
|
+
* Examples: grgrep → grep, lsls → ls, catcat → cat, curlcurl → curl
|
|
75655
|
+
*/
|
|
75656
|
+
function dedupCommandPrefix(command) {
|
|
75657
|
+
const match = command.match(/^([a-zA-Z0-9_-]+)/);
|
|
75658
|
+
if (!match) return command;
|
|
75659
|
+
const firstToken = match[1];
|
|
75660
|
+
if (KNOWN_COMMANDS.has(firstToken)) return command;
|
|
75661
|
+
for (let prefixLen = 2; prefixLen <= Math.min(10, Math.floor(firstToken.length / 2)); prefixLen++) {
|
|
75662
|
+
const prefix = firstToken.slice(0, prefixLen);
|
|
75663
|
+
const candidate = firstToken.slice(prefixLen);
|
|
75664
|
+
if (candidate.startsWith(prefix.slice(0, Math.min(prefix.length, candidate.length))) && KNOWN_COMMANDS.has(candidate)) return candidate + command.slice(firstToken.length);
|
|
75665
|
+
}
|
|
75666
|
+
return command;
|
|
75667
|
+
}
|
|
75668
|
+
/**
|
|
75500
75669
|
* Validate that a command string contains extractable valid shell syntax.
|
|
75501
75670
|
* Returns the cleaned command if valid, or an error reason if not.
|
|
75502
75671
|
*
|
|
@@ -75515,6 +75684,7 @@ function validateShellCommand(command) {
|
|
|
75515
75684
|
cleaned = cleaned.replace(/<\|[^|>]*(?:\|>)?/g, "").trim();
|
|
75516
75685
|
cleaned = cleanResidualTokenFragments(cleaned);
|
|
75517
75686
|
}
|
|
75687
|
+
cleaned = dedupCommandPrefix(cleaned);
|
|
75518
75688
|
if (!cleaned || !cleaned.trim()) return {
|
|
75519
75689
|
valid: false,
|
|
75520
75690
|
cleaned: "",
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { g as resolveStateDir } from "./paths-Cqn-zk3M.js";
|
|
2
2
|
import { B as theme, h as pathExists } from "./utils-B-0b9bGM.js";
|
|
3
3
|
import "./thinking-EAliFiVK.js";
|
|
4
|
-
import { V as trimLogTail } from "./reply-
|
|
4
|
+
import { V as trimLogTail } from "./reply-B2Xur-75.js";
|
|
5
5
|
import { t as resolveSymiPackageRoot } from "./symi-root-CrGJbkzf.js";
|
|
6
6
|
import "./registry-Cja8eT7G.js";
|
|
7
7
|
import { f as defaultRuntime } from "./subsystem-D9vIQve0.js";
|
|
@@ -106,7 +106,7 @@ import "./stagger-BUClb97_.js";
|
|
|
106
106
|
import { c as resolveGatewayLaunchAgentLabel, d as resolveGatewaySystemdServiceName, f as resolveGatewayWindowsTaskName } from "./constants-C8_BLnaW.js";
|
|
107
107
|
import "./channel-selection-DuWs0Aak.js";
|
|
108
108
|
import { r as parseSemver } from "./runtime-guard-B37eizu-.js";
|
|
109
|
-
import "./program-context-
|
|
109
|
+
import "./program-context-DFKRAsbt.js";
|
|
110
110
|
import "./catalog-RiADx7MA.js";
|
|
111
111
|
import "./skills-status-CURJKnyY.js";
|
|
112
112
|
import { n as inheritOptionFromParent } from "./command-options-BtDai3oC.js";
|
|
@@ -117,7 +117,7 @@ import "./npm-registry-spec-C2JDdSZS.js";
|
|
|
117
117
|
import "./skill-scanner-CLs8u6vQ.js";
|
|
118
118
|
import "./installs-C1Cebk97.js";
|
|
119
119
|
import "./channels-status-issues-B_kBkl_u.js";
|
|
120
|
-
import { r as installCompletion } from "./completion-cli-
|
|
120
|
+
import { r as installCompletion } from "./completion-cli-DhhIPri-.js";
|
|
121
121
|
import "./daemon-runtime-2mwX-jqj.js";
|
|
122
122
|
import "./systemd-riq8uNJQ.js";
|
|
123
123
|
import { t as resolveGatewayService } from "./service-Cl74hx8J.js";
|
|
@@ -126,19 +126,19 @@ import "./systemd-hints-BR6gChwm.js";
|
|
|
126
126
|
import { i as runDaemonInstall, r as runDaemonRestart } from "./daemon-cli-DscwlsKW.js";
|
|
127
127
|
import "./diagnostics-BAMlsVVX.js";
|
|
128
128
|
import { t as renderTable } from "./table-BTgkRafz.js";
|
|
129
|
-
import "./health-
|
|
129
|
+
import "./health-wZyomt2k.js";
|
|
130
130
|
import "./control-ui-assets-Z947tKLt.js";
|
|
131
131
|
import { a as resolveNpmChannelTag, c as DEFAULT_PACKAGE_CHANNEL, d as formatUpdateChannelLabel, g as resolveUpdateChannelDisplay, h as resolveEffectiveUpdateChannel, m as normalizeUpdateChannel, n as compareSemverStrings, r as fetchNpmTagVersion, s as DEFAULT_GIT_CHANNEL, t as checkUpdateStatus, u as channelToNpmTag } from "./update-check-CtckACbb.js";
|
|
132
132
|
import "./dm-policy-shared-Bh3TbexU.js";
|
|
133
133
|
import { i as resolveUpdateAvailability, n as formatUpdateOneLiner, t as formatUpdateAvailableHint } from "./status.update-DtwCUTf-.js";
|
|
134
|
-
import { a as globalInstallArgs, c as readPackageVersion, i as detectGlobalInstallManagerForRoot, n as cleanupGlobalRenameDirs, o as resolveGlobalPackageRoot, r as detectGlobalInstallManagerByPresence, s as readPackageName, t as runGatewayUpdate } from "./update-runner-
|
|
134
|
+
import { a as globalInstallArgs, c as readPackageVersion, i as detectGlobalInstallManagerForRoot, n as cleanupGlobalRenameDirs, o as resolveGlobalPackageRoot, r as detectGlobalInstallManagerByPresence, s as readPackageName, t as runGatewayUpdate } from "./update-runner-Bssy0nSl.js";
|
|
135
135
|
import "./logging-BzzwiKjv.js";
|
|
136
136
|
import { n as updateNpmInstalledPlugins, t as syncPluginsForUpdateChannel } from "./update-rw7wJwHd.js";
|
|
137
137
|
import "./doctor-config-flow-QnaBd8kL.js";
|
|
138
138
|
import "./systemd-linger-aQ75ZlXY.js";
|
|
139
139
|
import "./health-format-DSwnXZPU.js";
|
|
140
|
-
import { n as doctorCommand, t as selectStyled } from "./prompt-select-styled-
|
|
141
|
-
import { r as ensureCompletionCacheExists, t as checkShellCompletionStatus } from "./doctor-completion-
|
|
140
|
+
import { n as doctorCommand, t as selectStyled } from "./prompt-select-styled-B5bx2NEB.js";
|
|
141
|
+
import { r as ensureCompletionCacheExists, t as checkShellCompletionStatus } from "./doctor-completion-BBki2Ufk.js";
|
|
142
142
|
import os from "node:os";
|
|
143
143
|
import path from "node:path";
|
|
144
144
|
import fs from "node:fs/promises";
|