@symerian/symi 2.2.6 → 2.2.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{agents-nuS2h5ue.js → agents-DbnUoR_W.js} +4 -4
- package/dist/{agents.config-3mkYv9BE.js → agents.config-D4WnZfkE.js} +1 -1
- package/dist/{agents.config-pj-OsrUT.js → agents.config-qyBeLoW5.js} +1 -1
- package/dist/{audio-preflight-CJ3sqM3d.js → audio-preflight-BsS_1f9-.js} +4 -4
- package/dist/{audio-preflight-BGSBr_SJ.js → audio-preflight-Cv9Z1hfd.js} +4 -4
- package/dist/{auth-choice-D3a-vonc.js → auth-choice-DYxn5otk.js} +1 -1
- package/dist/{auth-choice-BRJsVuNT.js → auth-choice-TbOBqNzh.js} +1 -1
- package/dist/{banner-Bb1_x1cQ.js → banner-BGxrGU83.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-s4gZAPwl.js → channel-options-8st4ZPAV.js} +1 -1
- package/dist/{channel-options-CDZ4h6SP.js → channel-options-qDtKomWq.js} +1 -1
- package/dist/{channel-web-CKn3vwF-.js → channel-web-DQusem-l.js} +1 -1
- package/dist/{channels-cli-BsRDVuN-.js → channels-cli-BfrCgEUI.js} +4 -4
- package/dist/{channels-cli-C1ThSe3E.js → channels-cli-DZ9QSHcp.js} +4 -4
- package/dist/{chrome-BM8V9EPM.js → chrome-Bf5N4gMh.js} +7 -7
- package/dist/{chrome-Bs9dOXhy.js → chrome-CQNK4Of4.js} +7 -7
- package/dist/{cli-CdwLjjyv.js → cli-D484UoYM.js} +1 -1
- package/dist/{cli-CMonzisL.js → cli-isTrIFLa.js} +1 -1
- package/dist/{command-registry-TnD0Wo00.js → command-registry-D4kcHIMn.js} +9 -9
- package/dist/{completion-cli-pvycADdj.js → completion-cli-1m5OvbnB.js} +2 -2
- package/dist/{completion-cli-5kGhguIU.js → completion-cli-CtOpZu6z.js} +1 -1
- package/dist/{config-cli-DWCX4dyC.js → config-cli-BVbYrdKA.js} +1 -1
- package/dist/{config-cli-DxZEez4W.js → config-cli-BlpcRRjX.js} +1 -1
- package/dist/{configure-kEIiLFLp.js → configure-C-o6fkN4.js} +3 -3
- package/dist/{configure-B90B0uFn.js → configure-D4WT6m8B.js} +3 -3
- package/dist/control-ui/css/style.css +30 -0
- package/dist/control-ui/index.html +4 -0
- package/dist/control-ui/js/app.js +49 -0
- package/dist/control-ui/js/gateway.js +9 -0
- package/dist/control-ui/js/models.js +1 -1
- package/dist/{deliver-Dh5uiYS8.js → deliver-CBVqE05W.js} +1 -1
- package/dist/{deliver-Bs6SHLMp.js → deliver-CeOnWRNZ.js} +1 -1
- package/dist/{doctor-completion-Cye8oKIJ.js → doctor-completion-CU32z26S.js} +1 -1
- package/dist/{doctor-completion-BOwgNORd.js → doctor-completion-rtRPARP8.js} +1 -1
- package/dist/entry.js +1 -1
- package/dist/extensionAPI.js +6 -6
- package/dist/{gateway-cli-DRYkJB-y.js → gateway-cli-D9tJexeo.js} +22 -9
- package/dist/{gateway-cli-Ce2t7jof.js → gateway-cli-dxsgPoqI.js} +22 -9
- package/dist/{glass-ui-ws-CRdvmB5D.js → glass-ui-ws-BvSaDLuk.js} +11 -7
- package/dist/{glass-ui-ws--I0WsG7s.js → glass-ui-ws-BxliIaQO.js} +11 -7
- package/dist/{health-CJoGuAfg.js → health-6atzBDlL.js} +1 -1
- package/dist/{health-C1DLgFhT.js → health-BpVkd1NR.js} +1 -1
- package/dist/{hooks-cli-EtlTf6l_.js → hooks-cli-A0zhogYG.js} +2 -2
- package/dist/{hooks-cli-CrzS9jmd.js → hooks-cli-BdV4KLxW.js} +2 -2
- package/dist/{image-CkMDI3pp.js → image-CAUuNGNO.js} +1 -1
- package/dist/{image-CjO1LLbc.js → image-Crdjqg8r.js} +1 -1
- package/dist/index.js +6 -6
- package/dist/llm-slug-generator.js +6 -6
- package/dist/{models-DHCzr9eP.js → models-CBEZc-xT.js} +2 -2
- package/dist/{models-cli-C4ExoUXy.js → models-cli-BIM5pEpQ.js} +2 -2
- package/dist/{models-cli-C4ukQVHf.js → models-cli-DlUDMBlo.js} +3 -3
- package/dist/{onboard-QtMwCIU2.js → onboard-BXp3rpw1.js} +2 -2
- package/dist/{onboard-CAcATXB3.js → onboard-DXEF3bw2.js} +2 -2
- package/dist/{onboard-channels-Iy7uyjqi.js → onboard-channels-OKIylMMu.js} +1 -1
- package/dist/{onboard-channels-DDt5x3Xi.js → onboard-channels-qLCTzt3v.js} +1 -1
- package/dist/{onboarding-DtTOnF5l.js → onboarding-HJJedJ3u.js} +3 -3
- package/dist/{onboarding-CRU_W0dm.js → onboarding-m_e9LePg.js} +3 -3
- package/dist/{onboarding.finalize-DhDP0q8g.js → onboarding.finalize-CGVAc5-e.js} +6 -6
- package/dist/{onboarding.finalize-CKAIiDqs.js → onboarding.finalize-CbjQ-91D.js} +5 -5
- package/dist/{pi-embedded-BBROwjX_.js → pi-embedded-C4Cb6hc3.js} +16 -16
- package/dist/{pi-embedded-BkhyOzCD.js → pi-embedded-Cd7Gd0Am.js} +16 -16
- package/dist/{pi-embedded-helpers-D-cALDuy.js → pi-embedded-helpers-B86ZS0eB.js} +4 -4
- package/dist/{pi-embedded-helpers-D3O-Jz_G.js → pi-embedded-helpers-xjO9noTy.js} +4 -4
- package/dist/{plugin-registry-ckK1Eqxg.js → plugin-registry-D0iAVBbj.js} +1 -1
- package/dist/{plugin-registry-CKzb-3wd.js → plugin-registry-DOEhQFQJ.js} +1 -1
- package/dist/{plugins-cli-B1wheurP.js → plugins-cli-6nKHKPj8.js} +2 -2
- package/dist/{plugins-cli-4_vsyXjl.js → plugins-cli-DU06_0f6.js} +2 -2
- package/dist/{program-TcQJDsX0.js → program-D1icw1T9.js} +7 -7
- package/dist/{program-context-Dg2Np8Zw.js → program-context-Bqybavvo.js} +17 -17
- package/dist/{prompt-select-styled-DAdS06gH.js → prompt-select-styled-Cj3jTVJJ.js} +4 -4
- package/dist/{prompt-select-styled-CQjbqwvN.js → prompt-select-styled-DptZ40df.js} +4 -4
- package/dist/{provider-auth-helpers-DzN6dX9q.js → provider-auth-helpers-BVSJctmE.js} +1 -1
- package/dist/{provider-auth-helpers-DB8QYTYh.js → provider-auth-helpers-CDnMFdFw.js} +1 -1
- package/dist/{push-apns-CHAQFZbY.js → push-apns-CpUJIlI7.js} +1 -1
- package/dist/{push-apns-ClGMwC80.js → push-apns-DtKC_-eP.js} +1 -1
- package/dist/{pw-ai-Bea6vnxP.js → pw-ai-BcniFyZm.js} +1 -1
- package/dist/{pw-ai-U9oqOgyv.js → pw-ai-C2hGnRfL.js} +1 -1
- package/dist/{register.agent-BQCR4CBb.js → register.agent-DesQbi0N.js} +5 -5
- package/dist/{register.agent-B7N-v5Mg.js → register.agent-DszKb7kT.js} +6 -6
- package/dist/{register.configure-tbavr38Q.js → register.configure-CPZ2pkCL.js} +6 -6
- package/dist/{register.configure-CL9nlXc3.js → register.configure-CiHbtNBW.js} +6 -6
- package/dist/{register.maintenance-JPUE9NXl.js → register.maintenance-BBjwt-34.js} +7 -7
- package/dist/{register.maintenance-D4e74TuY.js → register.maintenance-hUQ3a2-X.js} +8 -8
- package/dist/{register.message-D0Cq2x8X.js → register.message-BJG43ey1.js} +2 -2
- package/dist/{register.message-BmGLezc2.js → register.message-BZ_faykn.js} +2 -2
- package/dist/{register.onboard-DDIJBTxd.js → register.onboard-BuvppItf.js} +4 -4
- package/dist/{register.onboard-ChTlfU6k.js → register.onboard-CtDGWgek.js} +4 -4
- package/dist/{register.setup-p9eaK45O.js → register.setup-09FZm-3U.js} +4 -4
- package/dist/{register.setup-DDo_Kvoq.js → register.setup-CK_rXwht.js} +4 -4
- package/dist/{register.status-health-sessions-DHI7I-An.js → register.status-health-sessions-CYBXZfzw.js} +3 -3
- package/dist/{register.status-health-sessions-DT6gAamm.js → register.status-health-sessions-Dq1GhVZd.js} +3 -3
- package/dist/{register.subclis-DF2GPUXO.js → register.subclis-oaqsIg7c.js} +9 -9
- package/dist/{reply-BGBRWu_r.js → reply-BnAPNcvn.js} +3 -3
- package/dist/{run-main-6Y8oxwjc.js → run-main-g9-g4T_a.js} +14 -14
- package/dist/{runner-kv4GI5eX.js → runner-DFFbD4Jj.js} +1 -1
- package/dist/{runner-DDAa40wm.js → runner-M7hSmkG1.js} +1 -1
- package/dist/{server-methods-Br0D7ovX.js → server-methods-1TVNg0k5.js} +7 -7
- package/dist/{server-methods-D_xNgVRl.js → server-methods-CYVVBHwG.js} +7 -7
- package/dist/{server-node-events-UAr71uwc.js → server-node-events-CPTRFOMY.js} +2 -2
- package/dist/{server-node-events-CYqlT8In.js → server-node-events-Cvqw-9rw.js} +2 -2
- package/dist/{status-B0E2EIVt.js → status-B7VIwi53.js} +2 -2
- package/dist/{status-DT80WcHk.js → status-BS3y9HjF.js} +1 -1
- package/dist/{status-BGds6W9t.js → status-CCrlpUEA.js} +2 -2
- package/dist/{status-e8uWmyEb.js → status-CDpLvmFd.js} +1 -1
- package/dist/{subagent-registry-Bdq971iu.js → subagent-registry-BSgPGZxs.js} +3 -3
- package/dist/{update-cli-Ck2MutZk.js → update-cli-C8sM6pAA.js} +8 -8
- package/dist/{update-cli-DNIl7PnC.js → update-cli-DL3Tb3b0.js} +7 -7
- package/dist/{update-runner-FuqSMzV5.js → update-runner-ChoWv-od.js} +1 -1
- package/dist/{update-runner-D6WDlrp3.js → update-runner-Dm7EwGFW.js} +1 -1
- package/dist/{web-Ck_rAgaX.js → web-0w8t_r2B.js} +6 -6
- package/dist/{web-CwQfVHEO.js → web-UEqiaso9.js} +6 -6
- package/dist/{web-BZOpNSzC.js → web-VbydcdAk.js} +1 -1
- package/dist/{web-HLh16mL2.js → web-sQrQA6or.js} +2 -2
- package/package.json +1 -1
|
@@ -11,14 +11,14 @@ import { n as stylePromptMessage, r as stylePromptTitle, t as stylePromptHint }
|
|
|
11
11
|
import { t as note$1 } from "./note-DDecZomM.js";
|
|
12
12
|
import { t as WizardCancelledError } from "./prompts-m1IJwIAx.js";
|
|
13
13
|
import { t as createClackPrompter } from "./clack-prompter-B1aVoXd5.js";
|
|
14
|
-
import { r as setupChannels, t as noteChannelStatus } from "./onboard-channels-
|
|
14
|
+
import { r as setupChannels, t as noteChannelStatus } from "./onboard-channels-OKIylMMu.js";
|
|
15
15
|
import { a as gatewayInstallErrorHint, i as buildGatewayInstallPlan, n as GATEWAY_DAEMON_RUNTIME_OPTIONS, t as DEFAULT_GATEWAY_DAEMON_RUNTIME } from "./daemon-runtime-Co0_hiZm.js";
|
|
16
16
|
import { t as resolveGatewayService } from "./service-Cm9j9WzQ.js";
|
|
17
|
-
import { r as healthCommand } from "./health-
|
|
17
|
+
import { r as healthCommand } from "./health-BpVkd1NR.js";
|
|
18
18
|
import { t as ensureControlUiAssetsBuilt } from "./control-ui-assets-BseSWee1.js";
|
|
19
19
|
import { n as logConfigUpdated } from "./logging-BGewRZy0.js";
|
|
20
20
|
import { n as promptAuthChoiceGrouped } from "./auth-choice-prompt-DVcYPG2v.js";
|
|
21
|
-
import { i as applyAuthChoice, n as resolvePreferredProviderForAuthChoice } from "./auth-choice-
|
|
21
|
+
import { i as applyAuthChoice, n as resolvePreferredProviderForAuthChoice } from "./auth-choice-TbOBqNzh.js";
|
|
22
22
|
import { a as promptDefaultModel, n as applyModelFallbacksFromSelection, o as promptModelAllowlist, r as applyPrimaryModel, t as applyModelAllowlist } from "./model-picker-Cv_lMtfR.js";
|
|
23
23
|
import { t as ensureSystemdUserLingerInteractive } from "./systemd-linger-DA_LW52P.js";
|
|
24
24
|
import { a as promptCustomApiConfig } from "./onboard-custom-Bcifi3N2.js";
|
|
@@ -542,6 +542,36 @@ html, body {
|
|
|
542
542
|
letter-spacing: 0.04em;
|
|
543
543
|
}
|
|
544
544
|
|
|
545
|
+
/* ── Secondary "Working" indicator ── */
|
|
546
|
+
.aso-working {
|
|
547
|
+
display: none;
|
|
548
|
+
align-items: center;
|
|
549
|
+
justify-content: center;
|
|
550
|
+
gap: 6px;
|
|
551
|
+
margin-top: 8px;
|
|
552
|
+
opacity: 0;
|
|
553
|
+
transition: opacity 0.3s ease;
|
|
554
|
+
}
|
|
555
|
+
.aso-working.active {
|
|
556
|
+
display: flex;
|
|
557
|
+
opacity: 1;
|
|
558
|
+
}
|
|
559
|
+
.aso-working-asterisk {
|
|
560
|
+
display: inline-block;
|
|
561
|
+
font-size: 12px;
|
|
562
|
+
color: var(--aso-color, rgba(0,212,255,0.75));
|
|
563
|
+
animation: aso-spin 1.5s linear infinite;
|
|
564
|
+
filter: drop-shadow(0 0 4px var(--aso-color, rgba(0,212,255,0.75)));
|
|
565
|
+
}
|
|
566
|
+
.aso-working-text {
|
|
567
|
+
font-family: var(--font-mono);
|
|
568
|
+
font-size: 9px;
|
|
569
|
+
font-weight: 600;
|
|
570
|
+
letter-spacing: 0.18em;
|
|
571
|
+
text-transform: uppercase;
|
|
572
|
+
color: var(--text-dim);
|
|
573
|
+
}
|
|
574
|
+
|
|
545
575
|
/* ── Layout columns ───────────────────────────────────────────────── */
|
|
546
576
|
.metrics-col {
|
|
547
577
|
position: fixed;
|
|
@@ -62,6 +62,10 @@
|
|
|
62
62
|
</div>
|
|
63
63
|
<div class="aso-label" id="aso-label">STANDBY</div>
|
|
64
64
|
<div class="aso-sub" id="aso-sub">Awaiting your prompt</div>
|
|
65
|
+
<div class="aso-working" id="aso-working">
|
|
66
|
+
<span class="aso-working-asterisk">✳</span>
|
|
67
|
+
<span class="aso-working-text">Working</span>
|
|
68
|
+
</div>
|
|
65
69
|
</div>
|
|
66
70
|
|
|
67
71
|
<!-- Subagents Panel -->
|
|
@@ -7,6 +7,8 @@ const newSessionBtn = document.getElementById("new-session-btn");
|
|
|
7
7
|
const stopBtn = document.getElementById("stop-btn");
|
|
8
8
|
|
|
9
9
|
let isStreaming = false;
|
|
10
|
+
let workingActive = false;
|
|
11
|
+
let activeSubagentCount = 0;
|
|
10
12
|
let currentRunId = null;
|
|
11
13
|
let streamBubble = null;
|
|
12
14
|
let streamContent = null;
|
|
@@ -241,6 +243,7 @@ function handleRunFailure(reason) {
|
|
|
241
243
|
|
|
242
244
|
// Show ERROR state on orb, then reset input
|
|
243
245
|
setAgentStatus("error");
|
|
246
|
+
hideWorkingIndicator();
|
|
244
247
|
isStreaming = false;
|
|
245
248
|
currentRunId = null;
|
|
246
249
|
stopBtn.style.opacity = "";
|
|
@@ -491,12 +494,28 @@ async function loadMoreHistory() {
|
|
|
491
494
|
let thinkingEl = null;
|
|
492
495
|
|
|
493
496
|
function handleGatewayEvent(event) {
|
|
497
|
+
// Handle sub-agent lifecycle events (independent of isStreaming)
|
|
498
|
+
if (event.event === "subagent") {
|
|
499
|
+
const s = event.payload;
|
|
500
|
+
if (s && s.phase === "started") {
|
|
501
|
+
activeSubagentCount++;
|
|
502
|
+
showWorkingIndicator();
|
|
503
|
+
} else if (s && s.phase === "completed") {
|
|
504
|
+
activeSubagentCount = Math.max(0, activeSubagentCount - 1);
|
|
505
|
+
if (activeSubagentCount === 0 && !isStreaming) {
|
|
506
|
+
hideWorkingIndicator();
|
|
507
|
+
}
|
|
508
|
+
}
|
|
509
|
+
return;
|
|
510
|
+
}
|
|
511
|
+
|
|
494
512
|
// Handle agent lifecycle/tool events — these prove the agent is alive
|
|
495
513
|
if (event.event === "agent" && isStreaming) {
|
|
496
514
|
const a = event.payload;
|
|
497
515
|
if (a) {
|
|
498
516
|
// Any agent event resets the watchdog — the agent is working
|
|
499
517
|
armWatchdog();
|
|
518
|
+
showWorkingIndicator();
|
|
500
519
|
|
|
501
520
|
// Update the sub-label with what the agent is actually doing
|
|
502
521
|
if (a.stream === "tool" && a.data) {
|
|
@@ -607,6 +626,13 @@ function handleGatewayEvent(event) {
|
|
|
607
626
|
}
|
|
608
627
|
closeStreamBubble(window.activeModelId || "unknown model");
|
|
609
628
|
setAgentStatus("done");
|
|
629
|
+
// Sync sub-agent count from server and conditionally hide working indicator
|
|
630
|
+
if (typeof p.activeSubagentCount === "number") {
|
|
631
|
+
activeSubagentCount = p.activeSubagentCount;
|
|
632
|
+
}
|
|
633
|
+
if (activeSubagentCount <= 0) {
|
|
634
|
+
hideWorkingIndicator();
|
|
635
|
+
}
|
|
610
636
|
isStreaming = false;
|
|
611
637
|
currentRunId = null;
|
|
612
638
|
stopBtn.style.opacity = ""; // reset stop button visual state
|
|
@@ -632,6 +658,7 @@ function handleGatewayEvent(event) {
|
|
|
632
658
|
thinkingEl = null;
|
|
633
659
|
}
|
|
634
660
|
setAgentStatus("idle");
|
|
661
|
+
hideWorkingIndicator();
|
|
635
662
|
isStreaming = false;
|
|
636
663
|
currentRunId = null;
|
|
637
664
|
stopBtn.style.opacity = ""; // reset stop button visual state
|
|
@@ -652,6 +679,7 @@ function handleGatewayEvent(event) {
|
|
|
652
679
|
const asoPanel = document.getElementById("agent-status-panel");
|
|
653
680
|
const asoLabel = document.getElementById("aso-label");
|
|
654
681
|
const asoSub = document.getElementById("aso-sub");
|
|
682
|
+
const asoWorking = document.getElementById("aso-working");
|
|
655
683
|
let asoDoneTimer = null;
|
|
656
684
|
|
|
657
685
|
const ASO_STATES = {
|
|
@@ -714,6 +742,24 @@ function setAgentStatus(key) {
|
|
|
714
742
|
}
|
|
715
743
|
}
|
|
716
744
|
|
|
745
|
+
// ── Working indicator helpers ─────────────────────────────────────
|
|
746
|
+
function showWorkingIndicator() {
|
|
747
|
+
if (!workingActive) {
|
|
748
|
+
workingActive = true;
|
|
749
|
+
if (asoWorking) {
|
|
750
|
+
asoWorking.classList.add("active");
|
|
751
|
+
}
|
|
752
|
+
}
|
|
753
|
+
}
|
|
754
|
+
function hideWorkingIndicator() {
|
|
755
|
+
if (workingActive) {
|
|
756
|
+
workingActive = false;
|
|
757
|
+
if (asoWorking) {
|
|
758
|
+
asoWorking.classList.remove("active");
|
|
759
|
+
}
|
|
760
|
+
}
|
|
761
|
+
}
|
|
762
|
+
|
|
717
763
|
// ── Input state ────────────────────────────────────────────────────
|
|
718
764
|
function disableInput() {
|
|
719
765
|
// Keep textarea enabled so user can type their next queued message while AI responds
|
|
@@ -789,6 +835,7 @@ async function sendText(text) {
|
|
|
789
835
|
return;
|
|
790
836
|
}
|
|
791
837
|
isStreaming = true;
|
|
838
|
+
showWorkingIndicator();
|
|
792
839
|
disableInput();
|
|
793
840
|
updateQueueBtn();
|
|
794
841
|
|
|
@@ -877,6 +924,8 @@ async function handleNewSession() {
|
|
|
877
924
|
responseArea.appendChild(cleared);
|
|
878
925
|
|
|
879
926
|
setAgentStatus("idle");
|
|
927
|
+
activeSubagentCount = 0;
|
|
928
|
+
hideWorkingIndicator();
|
|
880
929
|
clearQueue(); // discard any queued prompts — new session = clean slate
|
|
881
930
|
|
|
882
931
|
// Show archive toast — lets user jump directly to history if they regret it
|
|
@@ -147,6 +147,15 @@ class SymiGateway extends EventTarget {
|
|
|
147
147
|
return;
|
|
148
148
|
}
|
|
149
149
|
|
|
150
|
+
if (type === "subagent") {
|
|
151
|
+
this.dispatchEvent(
|
|
152
|
+
new CustomEvent("event", {
|
|
153
|
+
detail: { event: "subagent", payload: msg.payload },
|
|
154
|
+
}),
|
|
155
|
+
);
|
|
156
|
+
return;
|
|
157
|
+
}
|
|
158
|
+
|
|
150
159
|
if (type === "rpc.response") {
|
|
151
160
|
const pending = this._pending.get(msg.id);
|
|
152
161
|
if (pending) {
|
|
@@ -5,7 +5,7 @@ import { c as getActivePluginRegistry, v as createInternalHookEvent, y as trigge
|
|
|
5
5
|
import { t as createSubsystemLogger } from "./subsystem-CZixfwU8.js";
|
|
6
6
|
import { a as isSilentReplyText, n as SILENT_REPLY_TOKEN } from "./tokens-Cn6drXx2.js";
|
|
7
7
|
import { r as normalizeChannelId, t as getChannelPlugin } from "./plugins-71oIavrF.js";
|
|
8
|
-
import { B as resolveMirroredTranscriptText, i as isMessagingToolDuplicate, z as appendAssistantMessageToSessionTranscript } from "./pi-embedded-helpers-
|
|
8
|
+
import { B as resolveMirroredTranscriptText, i as isMessagingToolDuplicate, z as appendAssistantMessageToSessionTranscript } from "./pi-embedded-helpers-xjO9noTy.js";
|
|
9
9
|
import { d as getChannelDock } from "./thinking-W85Rb32m.js";
|
|
10
10
|
import { c as resolveChunkMode, f as parseFenceSpans, i as chunkMarkdownTextWithMode, l as resolveTextChunkLimit, n as chunkByParagraph } from "./chunk-DTMTDXwE.js";
|
|
11
11
|
import { n as resolveMarkdownTableMode } from "./markdown-tables-DawaaZEe.js";
|
|
@@ -5,7 +5,7 @@ import { c as getActivePluginRegistry, v as createInternalHookEvent, x as trigge
|
|
|
5
5
|
import { t as createSubsystemLogger } from "./subsystem-Bs9YvKLa.js";
|
|
6
6
|
import { a as isSilentReplyText, n as SILENT_REPLY_TOKEN } from "./tokens-H1H1LiSQ.js";
|
|
7
7
|
import { r as normalizeChannelId, t as getChannelPlugin } from "./plugins-DQYI3Fr-.js";
|
|
8
|
-
import { B as resolveMirroredTranscriptText, i as isMessagingToolDuplicate, z as appendAssistantMessageToSessionTranscript } from "./pi-embedded-helpers-
|
|
8
|
+
import { B as resolveMirroredTranscriptText, i as isMessagingToolDuplicate, z as appendAssistantMessageToSessionTranscript } from "./pi-embedded-helpers-B86ZS0eB.js";
|
|
9
9
|
import { d as getChannelDock } from "./thinking-CdlENGRW.js";
|
|
10
10
|
import { c as resolveChunkMode, f as parseFenceSpans, i as chunkMarkdownTextWithMode, l as resolveTextChunkLimit, n as chunkByParagraph } from "./chunk-BW5f05BR.js";
|
|
11
11
|
import { n as resolveMarkdownTableMode } from "./markdown-tables-iMQQZu4Q.js";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { t as resolveSymiPackageRoot } from "./symi-root-CrGJbkzf.js";
|
|
2
2
|
import { r as resolveCliName } from "./command-format-COaS-S7B.js";
|
|
3
3
|
import { t as note } from "./note-DeHoW7xO.js";
|
|
4
|
-
import { a as resolveCompletionCachePath, i as isCompletionInstalled, o as resolveShellFromEnv, r as installCompletion, s as usesSlowDynamicCompletion, t as completionCacheExists } from "./completion-cli-
|
|
4
|
+
import { a as resolveCompletionCachePath, i as isCompletionInstalled, o as resolveShellFromEnv, r as installCompletion, s as usesSlowDynamicCompletion, t as completionCacheExists } from "./completion-cli-CtOpZu6z.js";
|
|
5
5
|
import path from "node:path";
|
|
6
6
|
import { spawnSync } from "node:child_process";
|
|
7
7
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { r as resolveCliName } from "./command-format-BtYOfWxC.js";
|
|
2
2
|
import { t as resolveSymiPackageRoot } from "./symi-root-BNuQ4lAT.js";
|
|
3
3
|
import { t as note } from "./note-DDecZomM.js";
|
|
4
|
-
import { a as resolveCompletionCachePath, i as isCompletionInstalled, o as resolveShellFromEnv, r as installCompletion, s as usesSlowDynamicCompletion, t as completionCacheExists } from "./completion-cli-
|
|
4
|
+
import { a as resolveCompletionCachePath, i as isCompletionInstalled, o as resolveShellFromEnv, r as installCompletion, s as usesSlowDynamicCompletion, t as completionCacheExists } from "./completion-cli-1m5OvbnB.js";
|
|
5
5
|
import { spawnSync } from "node:child_process";
|
|
6
6
|
import path from "node:path";
|
|
7
7
|
|
package/dist/entry.js
CHANGED
|
@@ -2500,7 +2500,7 @@ if (!ensureExperimentalWarningSuppressed()) {
|
|
|
2500
2500
|
applyCliProfileEnv({ profile: parsed.profile });
|
|
2501
2501
|
process$1.argv = parsed.argv;
|
|
2502
2502
|
}
|
|
2503
|
-
import("./run-main-
|
|
2503
|
+
import("./run-main-g9-g4T_a.js").then(({ runCli }) => runCli(process$1.argv)).catch((error) => {
|
|
2504
2504
|
console.error("[symi] Failed to start CLI:", error instanceof Error ? error.stack ?? error.message : error);
|
|
2505
2505
|
process$1.exitCode = 1;
|
|
2506
2506
|
});
|
package/dist/extensionAPI.js
CHANGED
|
@@ -7,13 +7,13 @@ import { a as resolveAgentIdentity } from "./reply-prefix-K_J_nfgx.js";
|
|
|
7
7
|
import "./github-copilot-token-BbsJ0Qbo.js";
|
|
8
8
|
import "./env-CQ_DQOwT.js";
|
|
9
9
|
import "./tokens-Cn6drXx2.js";
|
|
10
|
-
import { D as resolveAgentTimeoutMs, t as runEmbeddedPiAgent } from "./pi-embedded-
|
|
10
|
+
import { D as resolveAgentTimeoutMs, t as runEmbeddedPiAgent } from "./pi-embedded-Cd7Gd0Am.js";
|
|
11
11
|
import "./plugins-71oIavrF.js";
|
|
12
12
|
import "./accounts-DDEyGwby.js";
|
|
13
13
|
import "./bindings-DYVakimr.js";
|
|
14
14
|
import "./send-DoiQ-lVY.js";
|
|
15
15
|
import "./send-C1DE47RQ.js";
|
|
16
|
-
import "./deliver-
|
|
16
|
+
import "./deliver-CBVqE05W.js";
|
|
17
17
|
import "./diagnostic-D0xmLpej.js";
|
|
18
18
|
import "./diagnostic-session-state-C1vRJs5w.js";
|
|
19
19
|
import "./accounts-8zZqL37v.js";
|
|
@@ -21,10 +21,10 @@ import "./send-CdxBNofn.js";
|
|
|
21
21
|
import "./image-ops-ByaQt43P.js";
|
|
22
22
|
import "./pi-model-discovery-j5tVLINv.js";
|
|
23
23
|
import "./message-channel-BQINJQIT.js";
|
|
24
|
-
import { G as saveSessionStore, H as loadSessionStore } from "./pi-embedded-helpers-
|
|
24
|
+
import { G as saveSessionStore, H as loadSessionStore } from "./pi-embedded-helpers-xjO9noTy.js";
|
|
25
25
|
import "./config-Btm9gODl.js";
|
|
26
26
|
import "./manifest-registry-D-mTF1cj.js";
|
|
27
|
-
import "./chrome-
|
|
27
|
+
import "./chrome-Bf5N4gMh.js";
|
|
28
28
|
import "./skills-BNpGMnp-.js";
|
|
29
29
|
import "./redact-1NGYV_8p.js";
|
|
30
30
|
import "./errors-CPfngF0S.js";
|
|
@@ -34,7 +34,7 @@ import "./thinking-W85Rb32m.js";
|
|
|
34
34
|
import "./accounts-DImOt9jX.js";
|
|
35
35
|
import { n as resolveSessionFilePath, s as resolveStorePath } from "./paths-DkMamAQ-.js";
|
|
36
36
|
import "./tool-images-ChC2CXaN.js";
|
|
37
|
-
import "./image-
|
|
37
|
+
import "./image-Crdjqg8r.js";
|
|
38
38
|
import "./manager-jpn5vRTY.js";
|
|
39
39
|
import "./gemini-auth-CSlZZ1Pw.js";
|
|
40
40
|
import "./sqlite-BNh23mUR.js";
|
|
@@ -47,7 +47,7 @@ import "./ir-F0moAwIl.js";
|
|
|
47
47
|
import "./render-B1VqYyvo.js";
|
|
48
48
|
import "./commands-registry-C_aYUwpl.js";
|
|
49
49
|
import "./skill-commands-DklY7Cj7.js";
|
|
50
|
-
import "./runner-
|
|
50
|
+
import "./runner-DFFbD4Jj.js";
|
|
51
51
|
import "./fetch-DtLn7YU3.js";
|
|
52
52
|
import "./channel-activity-D9q-fIPB.js";
|
|
53
53
|
import "./tables-COnZ169v.js";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { _ as expandHomePrefix, g as resolveStateDir, i as isNixMode, l as resolveGatewayLockDir, o as resolveConfigPath, r as STATE_DIR, t as CONFIG_PATH, u as resolveGatewayPort } from "./paths-Cqn-zk3M.js";
|
|
2
2
|
import { B as theme, E as truncateUtf16Safe, H as getLogger, P as setVerbose, R as colorize, S as shortenHomePath, U as getResolvedLoggerSettings, V as getChildLogger, c as ensureDir, t as CONFIG_DIR, y as resolveUserPath, z as isRich } from "./utils-B-0b9bGM.js";
|
|
3
3
|
import { d as supportsXHighThinking, l as normalizeVerboseLevel, s as normalizeThinkLevel } from "./thinking-EAliFiVK.js";
|
|
4
|
-
import { $ as normalizeOptionalText, $
|
|
4
|
+
import { $ as normalizeOptionalText, $t as buildSafeExternalPrompt, A as resetDirectoryCache, An as listDescendantRunsForRequester, Ar as normalizeMimeList, At as agentCommand, B as consumeRestartSentinel, Dn as countActiveDescendantRuns, Dr as DEFAULT_INPUT_TIMEOUT_MS, Dt as requestBodyErrorToText, Er as DEFAULT_INPUT_MAX_REDIRECTS, Et as readJsonBodyWithLimit, F as isGatewaySigusr1RestartExternallyAllowed, Fn as clearAgentRunContext, Gt as setCliSessionId, H as formatRestartSentinelMessage, I as markGatewaySigusr1RestartHandled, In as emitAgentEvent, It as resolveOutboundTarget, Kt as runCliAgent, Ln as getAgentRunContext, Lt as resolveSessionDeliveryTarget, M as consumeGatewaySigusr1RestartAuthorization, N as deferGatewayRestartUntilIdle, Nn as runSubagentAnnounceFlow, Nr as resolveAgentTimeoutMs, O as resolveOutboundSessionRoute, On as countActiveRunsForSession, Or as extractFileContentFromSource, Ot as computeBackoff, P as emitGatewayRestart, Pn as readLatestAssistantReply, Q as normalizeOptionalSessionKey, R as setGatewaySigusr1RestartPolicy, Rn as onAgentEvent, Rt as createOutboundSendDeps, S as loadSessionEntry, Tr as DEFAULT_INPUT_IMAGE_MIMES, Tt as handleSlackHttpRequest, Ut as runWithModelFallback, Vt as createDefaultDeps, W as summarizeRestartSentinel, Wt as getCliSessionId, X as inferLegacyName, Yt as resolveAgentAvatar, Z as normalizeOptionalAgentId, ar as waitForActiveTasks, at as stripLegacyDeliveryFields, br as enqueueSystemEvent, d as getActiveEmbeddedRunCount, dr as stripHeartbeatToken, dt as requestHeartbeatNow, en as detectSuspiciousPatterns, er as getActiveTaskCount, et as normalizePayloadToSystemText, fr as lookupContextTokens, g as resolveAnnounceTargetFromKey, gt as loadSymiPlugins, h as createSymiTools, i as resolveCronStyleNow, ir as setCommandLaneConcurrency, it as hasLegacyDeliveryHints, jr as resolveInputFileLimits, kn as initSubagentRegistry, kr as extractImageContentFromSource, kt as sleepWithAbort, l as runEmbeddedPiAgent, m as buildDefaultToolPolicyPipelineSteps, mn as getTotalPendingReplies, mt as getPluginToolMeta, nn as isExternalHookSession, nr as getTotalQueueSize, nt as migrateLegacyCronPayload, or as CommandLane, p as applyToolPolicyPipeline, q as normalizeHttpWebhookUrl, rr as resetAllLanes, rt as buildDeliveryFromLegacyPayload, sn as buildHistoryContextFromEntries, sr as DEFAULT_HEARTBEAT_ACK_MAX_CHARS, tn as getHookType, tt as normalizeRequiredName, wr as DEFAULT_INPUT_IMAGE_MAX_BYTES, z as setPreRestartDeferralCheck, zn as registerAgentRunContext } from "./reply-BnAPNcvn.js";
|
|
5
5
|
import { S as parseAgentSessionKey, c as normalizeMainKey, f as toAgentRequestSessionKey, l as resolveAgentIdFromSessionKey, m as DEFAULT_ACCOUNT_ID, p as toAgentStoreSessionKey, r as buildAgentMainSessionKey, s as normalizeAgentId, t as DEFAULT_AGENT_ID, x as isSubagentSessionKey, y as isCronRunSessionKey } from "./session-key-DCt45XZa.js";
|
|
6
6
|
import { r as matchesSkillFilter, t as resolveSymiPackageRoot } from "./symi-root-CrGJbkzf.js";
|
|
7
7
|
import { C as createInternalHookEvent, S as clearInternalHooks, T as triggerInternalHook, m as createEmptyPluginRegistry, r as DEFAULT_CHAT_CHANNEL, w as registerInternalHook } from "./registry-Cja8eT7G.js";
|
|
@@ -135,20 +135,20 @@ import { n as resolveWideAreaDiscoveryDomain, r as writeWideAreaGatewayZone } fr
|
|
|
135
135
|
import { i as toOptionString, n as extractGatewayMiskeys, r as maybeExplainGatewayServiceStop, t as describeUnknownError } from "./shared-BJvwnR5z.js";
|
|
136
136
|
import { c as probeGateway, s as resolveNodeCommandAllowlist } from "./audit-CbxXbquQ.js";
|
|
137
137
|
import { t as discoverGatewayBeacons } from "./bonjour-discovery-BHTF5p0X.js";
|
|
138
|
-
import { r as pickGatewaySelfPresence } from "./status-
|
|
139
|
-
import { c as startHeartbeatRunner, i as styleHealthChannelLine, n as getHealthSnapshot, o as runHeartbeatOnce, t as formatHealthChannelLines } from "./health-
|
|
138
|
+
import { r as pickGatewaySelfPresence } from "./status-CCrlpUEA.js";
|
|
139
|
+
import { c as startHeartbeatRunner, i as styleHealthChannelLine, n as getHealthSnapshot, o as runHeartbeatOnce, t as formatHealthChannelLines } from "./health-6atzBDlL.js";
|
|
140
140
|
import { a as resolveControlUiRootSync, i as resolveControlUiRootOverrideSync, t as ensureControlUiAssetsBuilt } from "./control-ui-assets-Z947tKLt.js";
|
|
141
141
|
import { a as resolveNpmChannelTag, c as DEFAULT_PACKAGE_CHANNEL, m as normalizeUpdateChannel, n as compareSemverStrings, t as checkUpdateStatus } from "./update-check-CtckACbb.js";
|
|
142
|
-
import { t as runOnboardingWizard } from "./onboarding-
|
|
143
|
-
import { _ as getHandshakeTimeoutMs, a as DEFAULT_ASSISTANT_IDENTITY, b as resolveCronRunLogPath, c as upsertPresence, d as DEDUPE_MAX, f as DEDUPE_TTL_MS, g as TICK_INTERVAL_MS, h as MAX_PAYLOAD_BYTES, i as safeParseJson, l as formatError, m as MAX_BUFFERED_BYTES, n as handleGatewayRequest, o as resolveAssistantIdentity, p as HEALTH_REFRESH_INTERVAL_MS, r as broadcastPresenceSnapshot, s as listSystemPresence, t as coreGatewayHandlers, u as loadVoiceWakeConfig, v as abortChatRunById, x as startGatewayConfigReloader, y as appendCronRunLog } from "./server-methods-
|
|
144
|
-
import { d as shouldLogWs, f as summarizeAgentEventForWsLog, l as formatForLog, p as setGatewayWsLogStyle, u as logWs } from "./push-apns-
|
|
142
|
+
import { t as runOnboardingWizard } from "./onboarding-m_e9LePg.js";
|
|
143
|
+
import { _ as getHandshakeTimeoutMs, a as DEFAULT_ASSISTANT_IDENTITY, b as resolveCronRunLogPath, c as upsertPresence, d as DEDUPE_MAX, f as DEDUPE_TTL_MS, g as TICK_INTERVAL_MS, h as MAX_PAYLOAD_BYTES, i as safeParseJson, l as formatError, m as MAX_BUFFERED_BYTES, n as handleGatewayRequest, o as resolveAssistantIdentity, p as HEALTH_REFRESH_INTERVAL_MS, r as broadcastPresenceSnapshot, s as listSystemPresence, t as coreGatewayHandlers, u as loadVoiceWakeConfig, v as abortChatRunById, x as startGatewayConfigReloader, y as appendCronRunLog } from "./server-methods-CYVVBHwG.js";
|
|
144
|
+
import { d as shouldLogWs, f as summarizeAgentEventForWsLog, l as formatForLog, p as setGatewayWsLogStyle, u as logWs } from "./push-apns-CpUJIlI7.js";
|
|
145
145
|
import { T as resolveGmailHookRuntimeConfig, _ as buildGogWatchServeArgs, i as ensureTailscaleEndpoint, v as buildGogWatchStartArgs } from "./gmail-setup-utils-Bv0M7ka7.js";
|
|
146
|
-
import "./agents.config-
|
|
146
|
+
import "./agents.config-qyBeLoW5.js";
|
|
147
147
|
import "./dm-policy-shared-Bh3TbexU.js";
|
|
148
148
|
import "./node-service-Cxz4e-Qd.js";
|
|
149
149
|
import "./status.update-Cu6R3wwz.js";
|
|
150
150
|
import "./skills-install-D67isO1L.js";
|
|
151
|
-
import "./update-runner-
|
|
151
|
+
import "./update-runner-Dm7EwGFW.js";
|
|
152
152
|
import { t as resolveAgentSessionDirs } from "./session-dirs-DWgIYmAt.js";
|
|
153
153
|
import { i as shouldIncludeHook, r as resolveHookConfig, t as loadWorkspaceHookEntries } from "./workspace-CYxdoAlY.js";
|
|
154
154
|
import { fileURLToPath, pathToFileURL } from "node:url";
|
|
@@ -2055,6 +2055,7 @@ function createAgentEventHandler({ broadcast, broadcastToConnIds, nodeSendToSess
|
|
|
2055
2055
|
sessionKey,
|
|
2056
2056
|
seq,
|
|
2057
2057
|
state: "final",
|
|
2058
|
+
activeSubagentCount: countActiveRunsForSession(sessionKey),
|
|
2058
2059
|
...heartbeatCtx?.isHeartbeat ? { isHeartbeat: true } : {},
|
|
2059
2060
|
message: text && !shouldSuppressSilent ? {
|
|
2060
2061
|
role: "assistant",
|
|
@@ -2140,6 +2141,18 @@ function createAgentEventHandler({ broadcast, broadcastToConnIds, nodeSendToSess
|
|
|
2140
2141
|
if (recipients && recipients.size > 0) broadcastToConnIds("agent", toolPayload, recipients);
|
|
2141
2142
|
} else broadcast("agent", agentPayload);
|
|
2142
2143
|
const lifecyclePhase = evt.stream === "lifecycle" && typeof evt.data?.phase === "string" ? evt.data.phase : null;
|
|
2144
|
+
if (lifecyclePhase && sessionKey && sessionKey.includes(":subagent:")) {
|
|
2145
|
+
if (lifecyclePhase === "start") broadcast("subagent", {
|
|
2146
|
+
phase: "started",
|
|
2147
|
+
sessionKey,
|
|
2148
|
+
runId: clientRunId
|
|
2149
|
+
});
|
|
2150
|
+
else if (lifecyclePhase === "end" || lifecyclePhase === "error") broadcast("subagent", {
|
|
2151
|
+
phase: "completed",
|
|
2152
|
+
sessionKey,
|
|
2153
|
+
runId: clientRunId
|
|
2154
|
+
});
|
|
2155
|
+
}
|
|
2143
2156
|
if (sessionKey) {
|
|
2144
2157
|
if (!isToolEvent || toolVerbose !== "off") nodeSendToSession(sessionKey, "agent", isToolEvent ? toolPayload : agentPayload);
|
|
2145
2158
|
if (!isAborted && evt.stream === "assistant" && typeof evt.data?.text === "string") emitChatDelta(sessionKey, clientRunId, evt.runId, evt.seq, evt.data.text);
|
|
@@ -11637,7 +11650,7 @@ async function startGatewayServer(port = 18789, opts = {}) {
|
|
|
11637
11650
|
});
|
|
11638
11651
|
let glassUiBridgeCleanup = null;
|
|
11639
11652
|
if (!minimalTestGateway) {
|
|
11640
|
-
const { createGlassUiBridge } = await import("./glass-ui-ws
|
|
11653
|
+
const { createGlassUiBridge } = await import("./glass-ui-ws-BxliIaQO.js");
|
|
11641
11654
|
glassUiBridgeCleanup = createGlassUiBridge({
|
|
11642
11655
|
wss: glassUiWss,
|
|
11643
11656
|
context: gatewayRequestContext,
|
|
@@ -21,7 +21,7 @@ import "./pairing-token-Byh6drgn.js";
|
|
|
21
21
|
import { t as safeEqualSecret } from "./secret-equal-CbntzRkh.js";
|
|
22
22
|
import { a as isValidIPv4, c as resolveClientIp, d as resolveHostName, f as rawDataToString, i as isTrustedProxyAddress, l as resolveGatewayBindHost, n as isLoopbackHost, o as normalizeHostHeader, t as isLoopbackAddress, u as resolveGatewayListenHosts } from "./net-DZ5Ayk-W.js";
|
|
23
23
|
import { n as pickPrimaryTailnetIPv4, r as pickPrimaryTailnetIPv6 } from "./tailnet-Cmumpn76.js";
|
|
24
|
-
import { $ as
|
|
24
|
+
import { $ as setCliSessionId, A as createDefaultDeps, An as extractFileContentFromSource, At as normalizeOptionalText, Bt as detectSuspiciousPatterns, C as computeBackoff, Cr as registerAgentRunContext, Dn as DEFAULT_INPUT_IMAGE_MIMES, Dt as inferLegacyName, En as DEFAULT_INPUT_IMAGE_MAX_BYTES, Fn as resolveAgentTimeoutMs, Ft as hasLegacyDeliveryHints, Gt as consumeGatewaySigusr1RestartAuthorization, Ht as isExternalHookSession, It as stripLegacyDeliveryFields, Jt as isGatewaySigusr1RestartExternallyAllowed, K as getTotalPendingReplies, Kt as deferGatewayRestartUntilIdle, M as resolveAgentAvatar, Mn as normalizeMimeList, Mt as normalizeRequiredName, Nn as resolveInputFileLimits, Nt as migrateLegacyCronPayload, On as DEFAULT_INPUT_MAX_REDIRECTS, Ot as normalizeOptionalAgentId, Pt as buildDeliveryFromLegacyPayload, Q as getCliSessionId, Qt as setPreRestartDeferralCheck, S as requestBodyErrorToText, Sn as enqueueSystemEvent, Sr as onAgentEvent, T as agentCommand, Vt as getHookType, Yt as markGatewaySigusr1RestartHandled, Z as resolveCronStyleNow, Zt as setGatewaySigusr1RestartPolicy, _t as consumeRestartSentinel, b as handleSlackHttpRequest, br as emitAgentEvent, d as getActiveEmbeddedRunCount, dr as setCommandLaneConcurrency, dt as resolveSessionDeliveryTarget, et as runCliAgent, fr as waitForActiveTasks, g as getPluginToolMeta, ht as runWithModelFallback, i as listDescendantRunsForRequester, it as resolveAnnounceTargetFromKey, jn as extractImageContentFromSource, jt as normalizePayloadToSystemText, k as createOutboundSendDeps, kn as DEFAULT_INPUT_TIMEOUT_MS, kt as normalizeOptionalSessionKey, l as runEmbeddedPiAgent, lr as getTotalQueueSize, m as buildDefaultToolPolicyPipelineSteps, mr as DEFAULT_HEARTBEAT_ACK_MAX_CHARS, n as countActiveRunsForSession, nt as createSymiTools, p as applyToolPolicyPipeline, pr as CommandLane, pt as resetDirectoryCache, qt as emitGatewayRestart, r as initSubagentRegistry, rt as readLatestAssistantReply, s as runSubagentAnnounceFlow, sr as getActiveTaskCount, st as resolveOutboundSessionRoute, t as countActiveDescendantRuns, un as requestHeartbeatNow, ur as resetAllLanes, ut as resolveOutboundTarget, v as loadSymiPlugins, vr as stripHeartbeatToken, w as sleepWithAbort, wt as normalizeHttpWebhookUrl, x as readJsonBodyWithLimit, xr as getAgentRunContext, xt as summarizeRestartSentinel, yr as clearAgentRunContext, yt as formatRestartSentinelMessage, z as buildHistoryContextFromEntries, zt as buildSafeExternalPrompt } from "./subagent-registry-BSgPGZxs.js";
|
|
25
25
|
import { D as resolveSessionResetPolicy, F as resolveMainSessionKey, H as cleanStaleLockFiles, I as resolveMainSessionKeyFromConfig, K as mergeDeliveryContext, M as canonicalizeMainSessionAlias, N as resolveAgentMainSessionKey, T as evaluateSessionFreshness, W as deliveryContextFromSession, d as updateSessionStore, n as parseSessionThreadInfo, o as loadSessionStore } from "./sessions-Cb4Hj78H.js";
|
|
26
26
|
import { a as isSilentReplyText, n as SILENT_REPLY_TOKEN } from "./tokens-Csntmwwn.js";
|
|
27
27
|
import { n as listChannelPlugins, o as normalizeWhatsAppTarget, r as normalizeChannelId, t as getChannelPlugin } from "./plugins-CwSlLxM8.js";
|
|
@@ -130,20 +130,20 @@ import { n as resolveWideAreaDiscoveryDomain, r as writeWideAreaGatewayZone } fr
|
|
|
130
130
|
import { i as toOptionString, n as extractGatewayMiskeys, r as maybeExplainGatewayServiceStop, t as describeUnknownError } from "./shared-BtG9rny3.js";
|
|
131
131
|
import { c as probeGateway, s as resolveNodeCommandAllowlist } from "./audit-F6tyY79q.js";
|
|
132
132
|
import { t as discoverGatewayBeacons } from "./bonjour-discovery-CA_XIzr_.js";
|
|
133
|
-
import { i as pickGatewaySelfPresence } from "./status-
|
|
134
|
-
import { a as styleHealthChannelLine, l as startHeartbeatRunner, n as getHealthSnapshot, s as runHeartbeatOnce, t as formatHealthChannelLines } from "./health-
|
|
133
|
+
import { i as pickGatewaySelfPresence } from "./status-B7VIwi53.js";
|
|
134
|
+
import { a as styleHealthChannelLine, l as startHeartbeatRunner, n as getHealthSnapshot, s as runHeartbeatOnce, t as formatHealthChannelLines } from "./health-BpVkd1NR.js";
|
|
135
135
|
import { a as resolveControlUiRootSync, i as resolveControlUiRootOverrideSync, t as ensureControlUiAssetsBuilt } from "./control-ui-assets-BseSWee1.js";
|
|
136
136
|
import { a as resolveNpmChannelTag, c as DEFAULT_PACKAGE_CHANNEL, m as normalizeUpdateChannel, n as compareSemverStrings, t as checkUpdateStatus } from "./update-check-ZdimP1aU.js";
|
|
137
|
-
import { t as runOnboardingWizard } from "./onboarding-
|
|
138
|
-
import { _ as getHandshakeTimeoutMs, a as DEFAULT_ASSISTANT_IDENTITY, b as resolveCronRunLogPath, c as upsertPresence, d as DEDUPE_MAX, f as DEDUPE_TTL_MS, g as TICK_INTERVAL_MS, h as MAX_PAYLOAD_BYTES, i as safeParseJson, l as formatError, m as MAX_BUFFERED_BYTES, n as handleGatewayRequest, o as resolveAssistantIdentity, p as HEALTH_REFRESH_INTERVAL_MS, r as broadcastPresenceSnapshot, s as listSystemPresence, t as coreGatewayHandlers, u as loadVoiceWakeConfig, v as abortChatRunById, x as startGatewayConfigReloader, y as appendCronRunLog } from "./server-methods-
|
|
139
|
-
import { d as shouldLogWs, f as summarizeAgentEventForWsLog, l as formatForLog, p as setGatewayWsLogStyle, u as logWs } from "./push-apns-
|
|
137
|
+
import { t as runOnboardingWizard } from "./onboarding-HJJedJ3u.js";
|
|
138
|
+
import { _ as getHandshakeTimeoutMs, a as DEFAULT_ASSISTANT_IDENTITY, b as resolveCronRunLogPath, c as upsertPresence, d as DEDUPE_MAX, f as DEDUPE_TTL_MS, g as TICK_INTERVAL_MS, h as MAX_PAYLOAD_BYTES, i as safeParseJson, l as formatError, m as MAX_BUFFERED_BYTES, n as handleGatewayRequest, o as resolveAssistantIdentity, p as HEALTH_REFRESH_INTERVAL_MS, r as broadcastPresenceSnapshot, s as listSystemPresence, t as coreGatewayHandlers, u as loadVoiceWakeConfig, v as abortChatRunById, x as startGatewayConfigReloader, y as appendCronRunLog } from "./server-methods-1TVNg0k5.js";
|
|
139
|
+
import { d as shouldLogWs, f as summarizeAgentEventForWsLog, l as formatForLog, p as setGatewayWsLogStyle, u as logWs } from "./push-apns-DtKC_-eP.js";
|
|
140
140
|
import { T as resolveGmailHookRuntimeConfig, _ as buildGogWatchServeArgs, i as ensureTailscaleEndpoint, v as buildGogWatchStartArgs } from "./gmail-setup-utils-CzWeiE-Y.js";
|
|
141
|
-
import "./agents.config-
|
|
141
|
+
import "./agents.config-D4WnZfkE.js";
|
|
142
142
|
import "./dm-policy-shared-DJ-61hCT.js";
|
|
143
143
|
import "./node-service-fcZExd22.js";
|
|
144
144
|
import "./status.update-D8lzj5TK.js";
|
|
145
145
|
import "./skills-install-1ZdwGTnh.js";
|
|
146
|
-
import "./update-runner-
|
|
146
|
+
import "./update-runner-ChoWv-od.js";
|
|
147
147
|
import { t as resolveAgentSessionDirs } from "./session-dirs-DWgIYmAt.js";
|
|
148
148
|
import { i as shouldIncludeHook, r as resolveHookConfig, t as loadWorkspaceHookEntries } from "./workspace-B51TF6q3.js";
|
|
149
149
|
import { n as forceFreePortAndWait } from "./ports-Dn122MUd.js";
|
|
@@ -2051,6 +2051,7 @@ function createAgentEventHandler({ broadcast, broadcastToConnIds, nodeSendToSess
|
|
|
2051
2051
|
sessionKey,
|
|
2052
2052
|
seq,
|
|
2053
2053
|
state: "final",
|
|
2054
|
+
activeSubagentCount: countActiveRunsForSession(sessionKey),
|
|
2054
2055
|
...heartbeatCtx?.isHeartbeat ? { isHeartbeat: true } : {},
|
|
2055
2056
|
message: text && !shouldSuppressSilent ? {
|
|
2056
2057
|
role: "assistant",
|
|
@@ -2136,6 +2137,18 @@ function createAgentEventHandler({ broadcast, broadcastToConnIds, nodeSendToSess
|
|
|
2136
2137
|
if (recipients && recipients.size > 0) broadcastToConnIds("agent", toolPayload, recipients);
|
|
2137
2138
|
} else broadcast("agent", agentPayload);
|
|
2138
2139
|
const lifecyclePhase = evt.stream === "lifecycle" && typeof evt.data?.phase === "string" ? evt.data.phase : null;
|
|
2140
|
+
if (lifecyclePhase && sessionKey && sessionKey.includes(":subagent:")) {
|
|
2141
|
+
if (lifecyclePhase === "start") broadcast("subagent", {
|
|
2142
|
+
phase: "started",
|
|
2143
|
+
sessionKey,
|
|
2144
|
+
runId: clientRunId
|
|
2145
|
+
});
|
|
2146
|
+
else if (lifecyclePhase === "end" || lifecyclePhase === "error") broadcast("subagent", {
|
|
2147
|
+
phase: "completed",
|
|
2148
|
+
sessionKey,
|
|
2149
|
+
runId: clientRunId
|
|
2150
|
+
});
|
|
2151
|
+
}
|
|
2139
2152
|
if (sessionKey) {
|
|
2140
2153
|
if (!isToolEvent || toolVerbose !== "off") nodeSendToSession(sessionKey, "agent", isToolEvent ? toolPayload : agentPayload);
|
|
2141
2154
|
if (!isAborted && evt.stream === "assistant" && typeof evt.data?.text === "string") emitChatDelta(sessionKey, clientRunId, evt.runId, evt.seq, evt.data.text);
|
|
@@ -11633,7 +11646,7 @@ async function startGatewayServer(port = 18789, opts = {}) {
|
|
|
11633
11646
|
});
|
|
11634
11647
|
let glassUiBridgeCleanup = null;
|
|
11635
11648
|
if (!minimalTestGateway) {
|
|
11636
|
-
const { createGlassUiBridge } = await import("./glass-ui-ws-
|
|
11649
|
+
const { createGlassUiBridge } = await import("./glass-ui-ws-BvSaDLuk.js");
|
|
11637
11650
|
glassUiBridgeCleanup = createGlassUiBridge({
|
|
11638
11651
|
wss: glassUiWss,
|
|
11639
11652
|
context: gatewayRequestContext,
|
|
@@ -13,7 +13,7 @@ import "./client-DMBZpU6X.js";
|
|
|
13
13
|
import "./call-C7OJzLEL.js";
|
|
14
14
|
import "./message-channel-C9dERklz.js";
|
|
15
15
|
import "./pairing-token-Byh6drgn.js";
|
|
16
|
-
import "./subagent-registry-
|
|
16
|
+
import "./subagent-registry-BSgPGZxs.js";
|
|
17
17
|
import "./sessions-Cb4Hj78H.js";
|
|
18
18
|
import "./tokens-Csntmwwn.js";
|
|
19
19
|
import "./plugins-CwSlLxM8.js";
|
|
@@ -108,18 +108,18 @@ import "./service-Cm9j9WzQ.js";
|
|
|
108
108
|
import "./diagnostics-CS1ov_hH.js";
|
|
109
109
|
import "./table-D01d2GuY.js";
|
|
110
110
|
import "./audit-F6tyY79q.js";
|
|
111
|
-
import "./status-
|
|
112
|
-
import "./health-
|
|
111
|
+
import "./status-B7VIwi53.js";
|
|
112
|
+
import "./health-BpVkd1NR.js";
|
|
113
113
|
import "./control-ui-assets-BseSWee1.js";
|
|
114
114
|
import "./update-check-ZdimP1aU.js";
|
|
115
|
-
import { n as handleGatewayRequest } from "./server-methods-
|
|
116
|
-
import "./push-apns-
|
|
117
|
-
import "./agents.config-
|
|
115
|
+
import { n as handleGatewayRequest } from "./server-methods-1TVNg0k5.js";
|
|
116
|
+
import "./push-apns-DtKC_-eP.js";
|
|
117
|
+
import "./agents.config-D4WnZfkE.js";
|
|
118
118
|
import "./dm-policy-shared-DJ-61hCT.js";
|
|
119
119
|
import "./node-service-fcZExd22.js";
|
|
120
120
|
import "./status.update-D8lzj5TK.js";
|
|
121
121
|
import "./skills-install-1ZdwGTnh.js";
|
|
122
|
-
import "./update-runner-
|
|
122
|
+
import "./update-runner-ChoWv-od.js";
|
|
123
123
|
|
|
124
124
|
//#region src/gateway/glass-ui-ws.ts
|
|
125
125
|
const SESSION_KEY = "agent:main:main";
|
|
@@ -163,6 +163,10 @@ function createGlassUiBridge(opts) {
|
|
|
163
163
|
type: "agent",
|
|
164
164
|
payload
|
|
165
165
|
});
|
|
166
|
+
else if (event === "subagent") broadcastToBrowsers({
|
|
167
|
+
type: "subagent",
|
|
168
|
+
payload
|
|
169
|
+
});
|
|
166
170
|
});
|
|
167
171
|
/** Dispatch an RPC method through the gateway's internal handler. */
|
|
168
172
|
async function dispatchRpc(method, params) {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import "./paths-Cqn-zk3M.js";
|
|
2
2
|
import "./utils-B-0b9bGM.js";
|
|
3
3
|
import "./thinking-EAliFiVK.js";
|
|
4
|
-
import "./reply-
|
|
4
|
+
import "./reply-BnAPNcvn.js";
|
|
5
5
|
import "./registry-Cja8eT7G.js";
|
|
6
6
|
import "./subsystem-D9vIQve0.js";
|
|
7
7
|
import "./exec-CWkblSrI.js";
|
|
@@ -113,18 +113,18 @@ import "./service-Cl74hx8J.js";
|
|
|
113
113
|
import "./diagnostics-BAMlsVVX.js";
|
|
114
114
|
import "./table-BTgkRafz.js";
|
|
115
115
|
import "./audit-CbxXbquQ.js";
|
|
116
|
-
import "./status-
|
|
117
|
-
import "./health-
|
|
116
|
+
import "./status-CCrlpUEA.js";
|
|
117
|
+
import "./health-6atzBDlL.js";
|
|
118
118
|
import "./control-ui-assets-Z947tKLt.js";
|
|
119
119
|
import "./update-check-CtckACbb.js";
|
|
120
|
-
import { n as handleGatewayRequest } from "./server-methods-
|
|
121
|
-
import "./push-apns-
|
|
122
|
-
import "./agents.config-
|
|
120
|
+
import { n as handleGatewayRequest } from "./server-methods-CYVVBHwG.js";
|
|
121
|
+
import "./push-apns-CpUJIlI7.js";
|
|
122
|
+
import "./agents.config-qyBeLoW5.js";
|
|
123
123
|
import "./dm-policy-shared-Bh3TbexU.js";
|
|
124
124
|
import "./node-service-Cxz4e-Qd.js";
|
|
125
125
|
import "./status.update-Cu6R3wwz.js";
|
|
126
126
|
import "./skills-install-D67isO1L.js";
|
|
127
|
-
import "./update-runner-
|
|
127
|
+
import "./update-runner-Dm7EwGFW.js";
|
|
128
128
|
|
|
129
129
|
//#region src/gateway/glass-ui-ws.ts
|
|
130
130
|
const SESSION_KEY = "agent:main:main";
|
|
@@ -168,6 +168,10 @@ function createGlassUiBridge(opts) {
|
|
|
168
168
|
type: "agent",
|
|
169
169
|
payload
|
|
170
170
|
});
|
|
171
|
+
else if (event === "subagent") broadcastToBrowsers({
|
|
172
|
+
type: "subagent",
|
|
173
|
+
payload
|
|
174
|
+
});
|
|
171
175
|
});
|
|
172
176
|
/** Dispatch an RPC method through the gateway's internal handler. */
|
|
173
177
|
async function dispatchRpc(method, params) {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { B as theme, k as info, l as escapeRegExp, z as isRich } from "./utils-B-0b9bGM.js";
|
|
2
|
-
import { Ft as resolveHeartbeatSenderContext, Pt as resolveHeartbeatDeliveryTarget,
|
|
2
|
+
import { Bn as resolveUserTimezone, Ft as resolveHeartbeatSenderContext, Pt as resolveHeartbeatDeliveryTarget, Sr as peekSystemEventEntries, cr as DEFAULT_HEARTBEAT_EVERY, dr as stripHeartbeatToken, dt as requestHeartbeatNow, ft as setHeartbeatWakeHandler, lr as isHeartbeatContentEffectivelyEmpty, or as CommandLane, pt as resolveHeartbeatReasonKind, r as appendCronStyleCurrentTimeLine, sr as DEFAULT_HEARTBEAT_ACK_MAX_CHARS, t as getReplyFromConfig, tr as getQueueSize, ur as resolveHeartbeatPrompt$1 } from "./reply-BnAPNcvn.js";
|
|
3
3
|
import { l as resolveAgentIdFromSessionKey, p as toAgentStoreSessionKey, s as normalizeAgentId } from "./session-key-DCt45XZa.js";
|
|
4
4
|
import { f as defaultRuntime, t as createSubsystemLogger } from "./subsystem-D9vIQve0.js";
|
|
5
5
|
import { b as DEFAULT_SYMIPULSE_FILENAME, c as resolveAgentWorkspaceDir, l as resolveDefaultAgentId, r as resolveAgentConfig } from "./agent-scope-CgUHAtCo.js";
|
|
@@ -4,7 +4,7 @@ import { l as resolveAgentIdFromSessionKey, p as toAgentStoreSessionKey, s as no
|
|
|
4
4
|
import { b as DEFAULT_SYMIPULSE_FILENAME, c as resolveAgentWorkspaceDir, l as resolveDefaultAgentId, r as resolveAgentConfig } from "./agent-scope-D-jRCY0d.js";
|
|
5
5
|
import { C as parseDurationMs, i as loadConfig } from "./config-CJigbfdK.js";
|
|
6
6
|
import { n as callGateway, t as buildGatewayConnectionDetails } from "./call-C7OJzLEL.js";
|
|
7
|
-
import {
|
|
7
|
+
import { J as getReplyFromConfig, X as appendCronStyleCurrentTimeLine, _r as resolveHeartbeatPrompt$1, cr as getQueueSize, ct as resolveHeartbeatDeliveryTarget, dn as setHeartbeatWakeHandler, fn as resolveHeartbeatReasonKind, gr as isHeartbeatContentEffectivelyEmpty, hr as DEFAULT_HEARTBEAT_EVERY, lt as resolveHeartbeatSenderContext, mr as DEFAULT_HEARTBEAT_ACK_MAX_CHARS, pr as CommandLane, qn as resolveUserTimezone, un as requestHeartbeatNow, vr as stripHeartbeatToken, wn as peekSystemEventEntries } from "./subagent-registry-BSgPGZxs.js";
|
|
8
8
|
import { M as canonicalizeMainSessionAlias, N as resolveAgentMainSessionKey, d as updateSessionStore, l as saveSessionStore, o as loadSessionStore } from "./sessions-Cb4Hj78H.js";
|
|
9
9
|
import { r as SYMIPULSE_TOKEN } from "./tokens-Csntmwwn.js";
|
|
10
10
|
import { n as listChannelPlugins, t as getChannelPlugin } from "./plugins-CwSlLxM8.js";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import "./paths-Cqn-zk3M.js";
|
|
2
2
|
import { B as theme, S as shortenHomePath, t as CONFIG_DIR, y as resolveUserPath } from "./utils-B-0b9bGM.js";
|
|
3
3
|
import "./thinking-EAliFiVK.js";
|
|
4
|
-
import "./reply-
|
|
4
|
+
import "./reply-BnAPNcvn.js";
|
|
5
5
|
import "./registry-Cja8eT7G.js";
|
|
6
6
|
import { f as defaultRuntime } from "./subsystem-D9vIQve0.js";
|
|
7
7
|
import "./exec-CWkblSrI.js";
|
|
@@ -108,7 +108,7 @@ import { a as installPackageDir, i as withTempDir, n as installFromNpmSpecArchiv
|
|
|
108
108
|
import { t as renderTable } from "./table-BTgkRafz.js";
|
|
109
109
|
import { a as parseFrontmatter, t as loadWorkspaceHookEntries } from "./workspace-CYxdoAlY.js";
|
|
110
110
|
import { t as buildWorkspaceHookStatus } from "./hooks-status-BqLZtMLa.js";
|
|
111
|
-
import { t as buildPluginStatusReport } from "./status-
|
|
111
|
+
import { t as buildPluginStatusReport } from "./status-BS3y9HjF.js";
|
|
112
112
|
import fs from "node:fs";
|
|
113
113
|
import path from "node:path";
|
|
114
114
|
import fs$1 from "node:fs/promises";
|