@symerian/symi 2.0.11 → 2.0.12
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/{audio-preflight-DRQD_nt1.js → audio-preflight-DbUFnPX1.js} +4 -4
- 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/{chrome-LmEyZdbC.js → chrome-BATLK3yK.js} +7 -7
- package/dist/control-ui/css/style.css +199 -0
- package/dist/control-ui/index.html +19 -0
- package/dist/control-ui/js/app.js +34 -0
- package/dist/control-ui/js/render.js +217 -1
- package/dist/daemon-cli.js +6 -6
- package/dist/{deliver-B3UoBZdC.js → deliver-DD3gs9SF.js} +1 -1
- package/dist/{image-RFofsrof.js → image-RLbZ3RUn.js} +1 -1
- package/dist/llm-slug-generator.js +6 -6
- package/dist/{pi-embedded-BjzaB3CT.js → pi-embedded-ZzUH4ioO.js} +16 -16
- package/dist/{pi-embedded-helpers-kB5lBgXk.js → pi-embedded-helpers-x8rJur4F.js} +4 -4
- package/dist/{pw-ai-CAkn033M.js → pw-ai-CCt1nIO-.js} +1 -1
- package/dist/{runner-DOvsNiYz.js → runner-DjHRFXSI.js} +1 -1
- package/dist/{web-BKQnrqo-.js → web-0bP0TLM2.js} +6 -6
- package/package.json +1 -1
|
@@ -14,10 +14,10 @@ import "./model-auth-CeL58m55.js";
|
|
|
14
14
|
import "./github-copilot-token-C_qUP7p5.js";
|
|
15
15
|
import "./pi-model-discovery-DaNAekda.js";
|
|
16
16
|
import "./message-channel-Dz5lr5b0.js";
|
|
17
|
-
import "./pi-embedded-helpers-
|
|
17
|
+
import "./pi-embedded-helpers-x8rJur4F.js";
|
|
18
18
|
import "./config-DM0K7qC1.js";
|
|
19
19
|
import "./manifest-registry-D0IQ3WuX.js";
|
|
20
|
-
import "./chrome-
|
|
20
|
+
import "./chrome-BATLK3yK.js";
|
|
21
21
|
import "./frontmatter-C_bv_0P8.js";
|
|
22
22
|
import "./skills-BFekKL7i.js";
|
|
23
23
|
import "./redact-jSxx6Ep2.js";
|
|
@@ -28,10 +28,10 @@ import "./thinking-CdlENGRW.js";
|
|
|
28
28
|
import "./accounts-qtxJ-6em.js";
|
|
29
29
|
import "./paths-DLyHUt31.js";
|
|
30
30
|
import "./tool-images-DXB7tqWi.js";
|
|
31
|
-
import "./image-
|
|
31
|
+
import "./image-RLbZ3RUn.js";
|
|
32
32
|
import "./gemini-auth-7AWT6JXV.js";
|
|
33
33
|
import "./local-roots-DMwIh5cS.js";
|
|
34
|
-
import { a as resolveMediaAttachmentLocalRoots, n as createMediaAttachmentCache, o as runCapability, r as normalizeMediaAttachments, t as buildProviderRegistry, u as isAudioAttachment } from "./runner-
|
|
34
|
+
import { a as resolveMediaAttachmentLocalRoots, n as createMediaAttachmentCache, o as runCapability, r as normalizeMediaAttachments, t as buildProviderRegistry, u as isAudioAttachment } from "./runner-DjHRFXSI.js";
|
|
35
35
|
|
|
36
36
|
//#region src/media-understanding/audio-preflight.ts
|
|
37
37
|
/**
|
package/dist/build-info.json
CHANGED
|
@@ -5,7 +5,7 @@ import { s as resolveAgentWorkspaceDir, t as listAgentIds } from "../../agent-sc
|
|
|
5
5
|
import { r as defaultRuntime, t as createSubsystemLogger } from "../../subsystem-Bs9YvKLa.js";
|
|
6
6
|
import "../../workspace-wAaHI8-5.js";
|
|
7
7
|
import { n as SILENT_REPLY_TOKEN } from "../../tokens-H1H1LiSQ.js";
|
|
8
|
-
import { a as createDefaultDeps, i as agentCommand } from "../../pi-embedded-
|
|
8
|
+
import { a as createDefaultDeps, i as agentCommand } from "../../pi-embedded-ZzUH4ioO.js";
|
|
9
9
|
import "../../plugins-DQYI3Fr-.js";
|
|
10
10
|
import "../../accounts-tNElYrCH.js";
|
|
11
11
|
import "../../boolean-B8-BqKGQ.js";
|
|
@@ -13,7 +13,7 @@ import "../../command-format-BaxDnULz.js";
|
|
|
13
13
|
import "../../bindings-B7Ke6LJi.js";
|
|
14
14
|
import "../../send-CHOArYFe.js";
|
|
15
15
|
import "../../send-D3M6pMr5.js";
|
|
16
|
-
import "../../deliver-
|
|
16
|
+
import "../../deliver-DD3gs9SF.js";
|
|
17
17
|
import "../../diagnostic-CI0kRQkt.js";
|
|
18
18
|
import "../../diagnostic-session-state-Bxo4UHOL.js";
|
|
19
19
|
import "../../accounts-CWktKM8a.js";
|
|
@@ -23,10 +23,10 @@ import "../../model-auth-CeL58m55.js";
|
|
|
23
23
|
import "../../github-copilot-token-C_qUP7p5.js";
|
|
24
24
|
import "../../pi-model-discovery-DaNAekda.js";
|
|
25
25
|
import "../../message-channel-Dz5lr5b0.js";
|
|
26
|
-
import { H as loadSessionStore, K as updateSessionStore, xt as resolveMainSessionKey, yt as resolveAgentMainSessionKey } from "../../pi-embedded-helpers-
|
|
26
|
+
import { H as loadSessionStore, K as updateSessionStore, xt as resolveMainSessionKey, yt as resolveAgentMainSessionKey } from "../../pi-embedded-helpers-x8rJur4F.js";
|
|
27
27
|
import "../../config-DM0K7qC1.js";
|
|
28
28
|
import "../../manifest-registry-D0IQ3WuX.js";
|
|
29
|
-
import "../../chrome-
|
|
29
|
+
import "../../chrome-BATLK3yK.js";
|
|
30
30
|
import "../../frontmatter-C_bv_0P8.js";
|
|
31
31
|
import "../../skills-BFekKL7i.js";
|
|
32
32
|
import "../../redact-jSxx6Ep2.js";
|
|
@@ -37,7 +37,7 @@ import "../../thinking-CdlENGRW.js";
|
|
|
37
37
|
import "../../accounts-qtxJ-6em.js";
|
|
38
38
|
import { s as resolveStorePath } from "../../paths-DLyHUt31.js";
|
|
39
39
|
import "../../tool-images-DXB7tqWi.js";
|
|
40
|
-
import "../../image-
|
|
40
|
+
import "../../image-RLbZ3RUn.js";
|
|
41
41
|
import "../../reply-prefix-XlyuyChD.js";
|
|
42
42
|
import "../../manager-B5EXdBQV.js";
|
|
43
43
|
import "../../gemini-auth-7AWT6JXV.js";
|
|
@@ -51,7 +51,7 @@ import "../../ir-DccrnjsE.js";
|
|
|
51
51
|
import "../../render-CDCvpfhh.js";
|
|
52
52
|
import "../../commands-registry-C3C4Rv3O.js";
|
|
53
53
|
import "../../skill-commands-B64uavY9.js";
|
|
54
|
-
import "../../runner-
|
|
54
|
+
import "../../runner-DjHRFXSI.js";
|
|
55
55
|
import "../../fetch-Bso4i15F.js";
|
|
56
56
|
import "../../channel-activity-CsM_hJ_s.js";
|
|
57
57
|
import "../../tables-DuZspiBu.js";
|
|
@@ -5,7 +5,7 @@ import { s as resolveAgentWorkspaceDir } from "../../agent-scope-BxoUQqgM.js";
|
|
|
5
5
|
import { t as createSubsystemLogger } from "../../subsystem-Bs9YvKLa.js";
|
|
6
6
|
import "../../workspace-wAaHI8-5.js";
|
|
7
7
|
import "../../tokens-H1H1LiSQ.js";
|
|
8
|
-
import "../../pi-embedded-
|
|
8
|
+
import "../../pi-embedded-ZzUH4ioO.js";
|
|
9
9
|
import "../../plugins-DQYI3Fr-.js";
|
|
10
10
|
import "../../accounts-tNElYrCH.js";
|
|
11
11
|
import "../../boolean-B8-BqKGQ.js";
|
|
@@ -13,7 +13,7 @@ import "../../command-format-BaxDnULz.js";
|
|
|
13
13
|
import "../../bindings-B7Ke6LJi.js";
|
|
14
14
|
import "../../send-CHOArYFe.js";
|
|
15
15
|
import "../../send-D3M6pMr5.js";
|
|
16
|
-
import "../../deliver-
|
|
16
|
+
import "../../deliver-DD3gs9SF.js";
|
|
17
17
|
import "../../diagnostic-CI0kRQkt.js";
|
|
18
18
|
import "../../diagnostic-session-state-Bxo4UHOL.js";
|
|
19
19
|
import "../../accounts-CWktKM8a.js";
|
|
@@ -23,10 +23,10 @@ import "../../model-auth-CeL58m55.js";
|
|
|
23
23
|
import "../../github-copilot-token-C_qUP7p5.js";
|
|
24
24
|
import "../../pi-model-discovery-DaNAekda.js";
|
|
25
25
|
import "../../message-channel-Dz5lr5b0.js";
|
|
26
|
-
import { ct as hasInterSessionUserProvenance } from "../../pi-embedded-helpers-
|
|
26
|
+
import { ct as hasInterSessionUserProvenance } from "../../pi-embedded-helpers-x8rJur4F.js";
|
|
27
27
|
import "../../config-DM0K7qC1.js";
|
|
28
28
|
import "../../manifest-registry-D0IQ3WuX.js";
|
|
29
|
-
import "../../chrome-
|
|
29
|
+
import "../../chrome-BATLK3yK.js";
|
|
30
30
|
import "../../frontmatter-C_bv_0P8.js";
|
|
31
31
|
import "../../skills-BFekKL7i.js";
|
|
32
32
|
import "../../redact-jSxx6Ep2.js";
|
|
@@ -37,7 +37,7 @@ import "../../thinking-CdlENGRW.js";
|
|
|
37
37
|
import "../../accounts-qtxJ-6em.js";
|
|
38
38
|
import "../../paths-DLyHUt31.js";
|
|
39
39
|
import "../../tool-images-DXB7tqWi.js";
|
|
40
|
-
import "../../image-
|
|
40
|
+
import "../../image-RLbZ3RUn.js";
|
|
41
41
|
import "../../reply-prefix-XlyuyChD.js";
|
|
42
42
|
import "../../manager-B5EXdBQV.js";
|
|
43
43
|
import "../../gemini-auth-7AWT6JXV.js";
|
|
@@ -51,7 +51,7 @@ import "../../ir-DccrnjsE.js";
|
|
|
51
51
|
import "../../render-CDCvpfhh.js";
|
|
52
52
|
import "../../commands-registry-C3C4Rv3O.js";
|
|
53
53
|
import "../../skill-commands-B64uavY9.js";
|
|
54
|
-
import "../../runner-
|
|
54
|
+
import "../../runner-DjHRFXSI.js";
|
|
55
55
|
import "../../fetch-Bso4i15F.js";
|
|
56
56
|
import "../../channel-activity-CsM_hJ_s.js";
|
|
57
57
|
import "../../tables-DuZspiBu.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
2fb661e40a01af0991c00286ee43d4cbc9c8f6b1cc4459500dd5826143402576
|
|
@@ -10,7 +10,7 @@ import fs$1 from "node:fs";
|
|
|
10
10
|
import { execFileSync, spawn } from "node:child_process";
|
|
11
11
|
import net from "node:net";
|
|
12
12
|
import { createServer } from "node:http";
|
|
13
|
-
import WebSocket, { WebSocketServer } from "ws";
|
|
13
|
+
import WebSocket$1, { WebSocketServer } from "ws";
|
|
14
14
|
import { Buffer as Buffer$1 } from "node:buffer";
|
|
15
15
|
|
|
16
16
|
//#region src/browser/constants.ts
|
|
@@ -178,7 +178,7 @@ async function ensureChromeExtensionRelayServer(opts) {
|
|
|
178
178
|
let nextExtensionId = 1;
|
|
179
179
|
const sendToExtension = async (payload) => {
|
|
180
180
|
const ws = extensionWs;
|
|
181
|
-
if (!ws || ws.readyState !== WebSocket.OPEN) throw new Error("Chrome extension not connected");
|
|
181
|
+
if (!ws || ws.readyState !== WebSocket$1.OPEN) throw new Error("Chrome extension not connected");
|
|
182
182
|
ws.send(JSON.stringify(payload));
|
|
183
183
|
return await new Promise((resolve, reject) => {
|
|
184
184
|
const timer = setTimeout(() => {
|
|
@@ -195,12 +195,12 @@ async function ensureChromeExtensionRelayServer(opts) {
|
|
|
195
195
|
const broadcastToCdpClients = (evt) => {
|
|
196
196
|
const msg = JSON.stringify(evt);
|
|
197
197
|
for (const ws of cdpClients) {
|
|
198
|
-
if (ws.readyState !== WebSocket.OPEN) continue;
|
|
198
|
+
if (ws.readyState !== WebSocket$1.OPEN) continue;
|
|
199
199
|
ws.send(msg);
|
|
200
200
|
}
|
|
201
201
|
};
|
|
202
202
|
const sendResponseToCdp = (ws, res) => {
|
|
203
|
-
if (ws.readyState !== WebSocket.OPEN) return;
|
|
203
|
+
if (ws.readyState !== WebSocket$1.OPEN) return;
|
|
204
204
|
ws.send(JSON.stringify(res));
|
|
205
205
|
};
|
|
206
206
|
const ensureTargetEventsForClient = (ws, mode) => {
|
|
@@ -425,7 +425,7 @@ async function ensureChromeExtensionRelayServer(opts) {
|
|
|
425
425
|
wssExtension.on("connection", (ws) => {
|
|
426
426
|
extensionWs = ws;
|
|
427
427
|
const ping = setInterval(() => {
|
|
428
|
-
if (ws.readyState !== WebSocket.OPEN) return;
|
|
428
|
+
if (ws.readyState !== WebSocket$1.OPEN) return;
|
|
429
429
|
ws.send(JSON.stringify({ method: "ping" }));
|
|
430
430
|
}, 5e3);
|
|
431
431
|
ws.on("message", (data) => {
|
|
@@ -743,7 +743,7 @@ async function fetchOk(url, timeoutMs = 1500, init) {
|
|
|
743
743
|
}
|
|
744
744
|
async function withCdpSocket(wsUrl, fn, opts) {
|
|
745
745
|
const headers = getHeadersWithAuth(wsUrl, opts?.headers ?? {});
|
|
746
|
-
const ws = new WebSocket(wsUrl, {
|
|
746
|
+
const ws = new WebSocket$1(wsUrl, {
|
|
747
747
|
handshakeTimeout: typeof opts?.handshakeTimeoutMs === "number" && Number.isFinite(opts.handshakeTimeoutMs) ? Math.max(1, Math.floor(opts.handshakeTimeoutMs)) : 5e3,
|
|
748
748
|
...Object.keys(headers).length ? { headers } : {}
|
|
749
749
|
});
|
|
@@ -1637,7 +1637,7 @@ async function getChromeWebSocketUrl(cdpUrl, timeoutMs = 500) {
|
|
|
1637
1637
|
async function canOpenWebSocket(wsUrl, timeoutMs = 800) {
|
|
1638
1638
|
return await new Promise((resolve) => {
|
|
1639
1639
|
const headers = getHeadersWithAuth(wsUrl);
|
|
1640
|
-
const ws = new WebSocket(wsUrl, {
|
|
1640
|
+
const ws = new WebSocket$1(wsUrl, {
|
|
1641
1641
|
handshakeTimeout: timeoutMs,
|
|
1642
1642
|
...Object.keys(headers).length ? { headers } : {}
|
|
1643
1643
|
});
|
|
@@ -3513,3 +3513,202 @@ html, body {
|
|
|
3513
3513
|
background: rgba(52, 211, 153, 0.25);
|
|
3514
3514
|
border-color: rgba(52, 211, 153, 0.5);
|
|
3515
3515
|
}
|
|
3516
|
+
|
|
3517
|
+
/* ── Reasoning Panel ───────────────────────────────────────────────── */
|
|
3518
|
+
.reasoning-panel {
|
|
3519
|
+
display: flex;
|
|
3520
|
+
flex-direction: column;
|
|
3521
|
+
min-height: 120px;
|
|
3522
|
+
max-height: 420px;
|
|
3523
|
+
flex-shrink: 0;
|
|
3524
|
+
}
|
|
3525
|
+
|
|
3526
|
+
.reasoning-live-dot {
|
|
3527
|
+
display: inline-block;
|
|
3528
|
+
width: 6px;
|
|
3529
|
+
height: 6px;
|
|
3530
|
+
border-radius: 50%;
|
|
3531
|
+
background: var(--accent-cyan);
|
|
3532
|
+
margin-left: 6px;
|
|
3533
|
+
vertical-align: middle;
|
|
3534
|
+
opacity: 0;
|
|
3535
|
+
transition: opacity 0.3s ease;
|
|
3536
|
+
}
|
|
3537
|
+
.reasoning-live-dot.active {
|
|
3538
|
+
opacity: 1;
|
|
3539
|
+
animation: pulse 1.2s ease-in-out infinite;
|
|
3540
|
+
}
|
|
3541
|
+
|
|
3542
|
+
.reasoning-feed {
|
|
3543
|
+
flex: 1;
|
|
3544
|
+
overflow-y: auto;
|
|
3545
|
+
scrollbar-width: thin;
|
|
3546
|
+
scrollbar-color: rgba(0, 212, 255, 0.2) transparent;
|
|
3547
|
+
display: flex;
|
|
3548
|
+
flex-direction: column;
|
|
3549
|
+
gap: 6px;
|
|
3550
|
+
padding-right: 2px;
|
|
3551
|
+
}
|
|
3552
|
+
.reasoning-feed::-webkit-scrollbar { width: 3px; }
|
|
3553
|
+
.reasoning-feed::-webkit-scrollbar-track { background: transparent; }
|
|
3554
|
+
.reasoning-feed::-webkit-scrollbar-thumb { background: rgba(0, 212, 255, 0.2); border-radius: 2px; }
|
|
3555
|
+
|
|
3556
|
+
/* Empty state */
|
|
3557
|
+
.reasoning-empty {
|
|
3558
|
+
display: flex;
|
|
3559
|
+
flex-direction: column;
|
|
3560
|
+
align-items: center;
|
|
3561
|
+
justify-content: center;
|
|
3562
|
+
gap: 8px;
|
|
3563
|
+
padding: 20px 0 12px;
|
|
3564
|
+
color: var(--text-dim);
|
|
3565
|
+
}
|
|
3566
|
+
.reasoning-empty-icon {
|
|
3567
|
+
width: 28px;
|
|
3568
|
+
height: 28px;
|
|
3569
|
+
opacity: 0.4;
|
|
3570
|
+
}
|
|
3571
|
+
.reasoning-empty-icon svg {
|
|
3572
|
+
width: 100%;
|
|
3573
|
+
height: 100%;
|
|
3574
|
+
}
|
|
3575
|
+
.reasoning-empty-text {
|
|
3576
|
+
font-size: 11px;
|
|
3577
|
+
font-family: var(--font-mono);
|
|
3578
|
+
opacity: 0.5;
|
|
3579
|
+
text-align: center;
|
|
3580
|
+
}
|
|
3581
|
+
|
|
3582
|
+
/* Run separator */
|
|
3583
|
+
.reasoning-run-sep {
|
|
3584
|
+
display: flex;
|
|
3585
|
+
align-items: center;
|
|
3586
|
+
gap: 8px;
|
|
3587
|
+
margin: 4px 0 2px;
|
|
3588
|
+
}
|
|
3589
|
+
.reasoning-run-sep::before,
|
|
3590
|
+
.reasoning-run-sep::after {
|
|
3591
|
+
content: '';
|
|
3592
|
+
flex: 1;
|
|
3593
|
+
height: 1px;
|
|
3594
|
+
background: rgba(255, 255, 255, 0.06);
|
|
3595
|
+
}
|
|
3596
|
+
.reasoning-run-sep-label {
|
|
3597
|
+
font-size: 9px;
|
|
3598
|
+
font-family: var(--font-mono);
|
|
3599
|
+
font-weight: 600;
|
|
3600
|
+
letter-spacing: 0.1em;
|
|
3601
|
+
color: var(--text-dim);
|
|
3602
|
+
white-space: nowrap;
|
|
3603
|
+
}
|
|
3604
|
+
|
|
3605
|
+
/* Individual reasoning entry */
|
|
3606
|
+
.reasoning-entry {
|
|
3607
|
+
display: flex;
|
|
3608
|
+
flex-direction: column;
|
|
3609
|
+
gap: 4px;
|
|
3610
|
+
padding: 6px 8px;
|
|
3611
|
+
background: rgba(255, 255, 255, 0.02);
|
|
3612
|
+
border: 1px solid rgba(255, 255, 255, 0.05);
|
|
3613
|
+
border-radius: 8px;
|
|
3614
|
+
transition: border-color 0.2s;
|
|
3615
|
+
}
|
|
3616
|
+
.reasoning-entry:hover {
|
|
3617
|
+
border-color: rgba(255, 255, 255, 0.09);
|
|
3618
|
+
}
|
|
3619
|
+
|
|
3620
|
+
/* Entry header row: badge + label */
|
|
3621
|
+
.reasoning-entry-header {
|
|
3622
|
+
display: flex;
|
|
3623
|
+
align-items: center;
|
|
3624
|
+
gap: 6px;
|
|
3625
|
+
}
|
|
3626
|
+
.reasoning-entry-badge {
|
|
3627
|
+
font-size: 9px;
|
|
3628
|
+
font-family: var(--font-mono);
|
|
3629
|
+
font-weight: 700;
|
|
3630
|
+
letter-spacing: 0.1em;
|
|
3631
|
+
padding: 1px 5px;
|
|
3632
|
+
border-radius: 4px;
|
|
3633
|
+
flex-shrink: 0;
|
|
3634
|
+
}
|
|
3635
|
+
/* Thinking badge — cyan tint */
|
|
3636
|
+
.reasoning-entry-badge.badge-think {
|
|
3637
|
+
background: rgba(0, 212, 255, 0.1);
|
|
3638
|
+
color: var(--accent-cyan);
|
|
3639
|
+
border: 1px solid rgba(0, 212, 255, 0.18);
|
|
3640
|
+
}
|
|
3641
|
+
/* Tool call badge — purple tint */
|
|
3642
|
+
.reasoning-entry-badge.badge-tool {
|
|
3643
|
+
background: rgba(139, 92, 246, 0.12);
|
|
3644
|
+
color: var(--accent-purple);
|
|
3645
|
+
border: 1px solid rgba(139, 92, 246, 0.2);
|
|
3646
|
+
}
|
|
3647
|
+
/* Tool result badge — green tint */
|
|
3648
|
+
.reasoning-entry-badge.badge-result {
|
|
3649
|
+
background: rgba(52, 211, 153, 0.1);
|
|
3650
|
+
color: var(--accent-green);
|
|
3651
|
+
border: 1px solid rgba(52, 211, 153, 0.18);
|
|
3652
|
+
}
|
|
3653
|
+
|
|
3654
|
+
.reasoning-entry-name {
|
|
3655
|
+
font-size: 11px;
|
|
3656
|
+
font-family: var(--font-mono);
|
|
3657
|
+
color: var(--text-muted);
|
|
3658
|
+
white-space: nowrap;
|
|
3659
|
+
overflow: hidden;
|
|
3660
|
+
text-overflow: ellipsis;
|
|
3661
|
+
flex: 1;
|
|
3662
|
+
}
|
|
3663
|
+
|
|
3664
|
+
/* Thinking body */
|
|
3665
|
+
.reasoning-think-body {
|
|
3666
|
+
font-size: 10px;
|
|
3667
|
+
font-family: var(--font-mono);
|
|
3668
|
+
color: var(--text-muted);
|
|
3669
|
+
line-height: 1.55;
|
|
3670
|
+
white-space: pre-wrap;
|
|
3671
|
+
word-break: break-word;
|
|
3672
|
+
max-height: 120px;
|
|
3673
|
+
overflow-y: auto;
|
|
3674
|
+
padding: 4px 2px 0;
|
|
3675
|
+
opacity: 0.75;
|
|
3676
|
+
scrollbar-width: thin;
|
|
3677
|
+
scrollbar-color: rgba(0, 212, 255, 0.15) transparent;
|
|
3678
|
+
}
|
|
3679
|
+
.reasoning-think-body::-webkit-scrollbar { width: 2px; }
|
|
3680
|
+
.reasoning-think-body::-webkit-scrollbar-thumb { background: rgba(0, 212, 255, 0.15); border-radius: 2px; }
|
|
3681
|
+
|
|
3682
|
+
/* Tool detail — compact JSON preview, collapsible */
|
|
3683
|
+
.reasoning-tool-preview {
|
|
3684
|
+
font-size: 10px;
|
|
3685
|
+
font-family: var(--font-mono);
|
|
3686
|
+
color: var(--text-muted);
|
|
3687
|
+
opacity: 0.65;
|
|
3688
|
+
white-space: nowrap;
|
|
3689
|
+
overflow: hidden;
|
|
3690
|
+
text-overflow: ellipsis;
|
|
3691
|
+
padding: 2px 0 0;
|
|
3692
|
+
}
|
|
3693
|
+
.reasoning-tool-detail {
|
|
3694
|
+
display: none;
|
|
3695
|
+
font-size: 10px;
|
|
3696
|
+
font-family: var(--font-mono);
|
|
3697
|
+
color: var(--text-muted);
|
|
3698
|
+
white-space: pre-wrap;
|
|
3699
|
+
word-break: break-all;
|
|
3700
|
+
padding: 4px 2px 0;
|
|
3701
|
+
opacity: 0.65;
|
|
3702
|
+
max-height: 100px;
|
|
3703
|
+
overflow-y: auto;
|
|
3704
|
+
}
|
|
3705
|
+
.reasoning-entry.expanded .reasoning-tool-detail { display: block; }
|
|
3706
|
+
.reasoning-entry.expanded .reasoning-tool-preview { display: none; }
|
|
3707
|
+
|
|
3708
|
+
/* Result row */
|
|
3709
|
+
.reasoning-result-meta {
|
|
3710
|
+
font-size: 10px;
|
|
3711
|
+
font-family: var(--font-mono);
|
|
3712
|
+
color: var(--text-dim);
|
|
3713
|
+
padding: 2px 0 0;
|
|
3714
|
+
}
|
|
@@ -138,6 +138,25 @@
|
|
|
138
138
|
</button>
|
|
139
139
|
</div>
|
|
140
140
|
|
|
141
|
+
<!-- Reasoning Panel -->
|
|
142
|
+
<div class="glass-panel reasoning-panel" id="reasoning-panel">
|
|
143
|
+
<div class="panel-label">
|
|
144
|
+
REASONING
|
|
145
|
+
<span class="reasoning-live-dot" id="reasoning-live-dot"></span>
|
|
146
|
+
</div>
|
|
147
|
+
<div class="reasoning-feed" id="reasoning-feed">
|
|
148
|
+
<div class="reasoning-empty" id="reasoning-empty">
|
|
149
|
+
<div class="reasoning-empty-icon">
|
|
150
|
+
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5">
|
|
151
|
+
<circle cx="12" cy="12" r="3"/>
|
|
152
|
+
<path d="M12 2v2M12 20v2M4.93 4.93l1.41 1.41M17.66 17.66l1.41 1.41M2 12h2M20 12h2M4.93 19.07l1.41-1.41M17.66 6.34l1.41-1.41"/>
|
|
153
|
+
</svg>
|
|
154
|
+
</div>
|
|
155
|
+
<div class="reasoning-empty-text">No reasoning yet</div>
|
|
156
|
+
</div>
|
|
157
|
+
</div>
|
|
158
|
+
</div>
|
|
159
|
+
|
|
141
160
|
</aside>
|
|
142
161
|
|
|
143
162
|
<!-- Metrics — Right column -->
|
|
@@ -195,6 +195,9 @@ function handleRunFailure(reason) {
|
|
|
195
195
|
// Stop timers immediately
|
|
196
196
|
stopElapsedTimer();
|
|
197
197
|
clearWatchdog();
|
|
198
|
+
if (typeof window.closeLiveThinking === "function") {
|
|
199
|
+
window.closeLiveThinking();
|
|
200
|
+
}
|
|
198
201
|
|
|
199
202
|
// Clean up any in-flight UI elements
|
|
200
203
|
if (thinkingEl) {
|
|
@@ -243,6 +246,10 @@ function handleRunFailure(reason) {
|
|
|
243
246
|
|
|
244
247
|
// ── Render history (on first connect) ─────────────────────────────
|
|
245
248
|
function renderHistory(messages) {
|
|
249
|
+
// Clear reasoning panel in sync with the feed — prevents double-entries on reconnect
|
|
250
|
+
if (typeof window.clearReasoningPanel === "function") {
|
|
251
|
+
window.clearReasoningPanel();
|
|
252
|
+
}
|
|
246
253
|
responseArea.innerHTML = "";
|
|
247
254
|
for (const m of messages) {
|
|
248
255
|
if (!m || !m.role) {
|
|
@@ -301,9 +308,18 @@ function handleGatewayEvent(event) {
|
|
|
301
308
|
if (text) {
|
|
302
309
|
updateStream(text);
|
|
303
310
|
}
|
|
311
|
+
// Stream thinking deltas live to the Reasoning Panel
|
|
312
|
+
const thinkingText =
|
|
313
|
+
typeof window.extractThinkingText === "function" ? window.extractThinkingText(p.message) : "";
|
|
314
|
+
if (thinkingText && typeof window.updateLiveThinking === "function") {
|
|
315
|
+
window.updateLiveThinking(thinkingText);
|
|
316
|
+
}
|
|
304
317
|
} else if (p.state === "final") {
|
|
305
318
|
stopElapsedTimer();
|
|
306
319
|
clearWatchdog();
|
|
320
|
+
if (typeof window.closeLiveThinking === "function") {
|
|
321
|
+
window.closeLiveThinking();
|
|
322
|
+
}
|
|
307
323
|
closeStreamBubble();
|
|
308
324
|
setAgentStatus("done");
|
|
309
325
|
isStreaming = false;
|
|
@@ -316,6 +332,9 @@ function handleGatewayEvent(event) {
|
|
|
316
332
|
// Clean abort (user-initiated or model decided to stop) — not an error
|
|
317
333
|
stopElapsedTimer();
|
|
318
334
|
clearWatchdog();
|
|
335
|
+
if (typeof window.closeLiveThinking === "function") {
|
|
336
|
+
window.closeLiveThinking();
|
|
337
|
+
}
|
|
319
338
|
if (streamBubble) {
|
|
320
339
|
closeStreamBubble();
|
|
321
340
|
}
|
|
@@ -371,6 +390,13 @@ function setAgentStatus(key) {
|
|
|
371
390
|
asoSub.textContent = s.sub;
|
|
372
391
|
}
|
|
373
392
|
|
|
393
|
+
// Pulse the reasoning live-dot while agent is actively thinking/streaming
|
|
394
|
+
const reasoningDot = document.getElementById("reasoning-live-dot");
|
|
395
|
+
if (reasoningDot) {
|
|
396
|
+
const active = key === "thinking" || key === "streaming" || key === "waiting";
|
|
397
|
+
reasoningDot.classList.toggle("active", active);
|
|
398
|
+
}
|
|
399
|
+
|
|
374
400
|
// ── Elapsed timer management ──────────────────────────────────
|
|
375
401
|
if (key === "thinking") {
|
|
376
402
|
// Start elapsed timer and watchdog when processing begins
|
|
@@ -476,6 +502,11 @@ async function sendText(text) {
|
|
|
476
502
|
addUserMessage(text);
|
|
477
503
|
await sleep(200);
|
|
478
504
|
|
|
505
|
+
// Mark the start of this run in the Reasoning Panel
|
|
506
|
+
if (typeof window.injectReasoningRunSeparator === "function") {
|
|
507
|
+
window.injectReasoningRunSeparator();
|
|
508
|
+
}
|
|
509
|
+
|
|
479
510
|
setAgentStatus("waiting");
|
|
480
511
|
thinkingEl = createThinkingBubble();
|
|
481
512
|
setAgentStatus("thinking");
|
|
@@ -532,6 +563,9 @@ async function handleNewSession() {
|
|
|
532
563
|
|
|
533
564
|
responseArea.innerHTML = "";
|
|
534
565
|
responseArea.style.opacity = "1";
|
|
566
|
+
if (typeof window.clearReasoningPanel === "function") {
|
|
567
|
+
window.clearReasoningPanel();
|
|
568
|
+
}
|
|
535
569
|
|
|
536
570
|
// Show empty-state indicator
|
|
537
571
|
const cleared = document.createElement("div");
|
|
@@ -497,6 +497,216 @@ function formatTime(ts) {
|
|
|
497
497
|
// Expose renderBlock for use in app.js streaming finalization
|
|
498
498
|
window.renderBlock = renderBlock;
|
|
499
499
|
|
|
500
|
+
// ── Reasoning Panel — append a block ─────────────────────────────────
|
|
501
|
+
window.appendToReasoningPanel = function (block) {
|
|
502
|
+
const feed = document.getElementById("reasoning-feed");
|
|
503
|
+
if (!feed) {
|
|
504
|
+
return;
|
|
505
|
+
}
|
|
506
|
+
|
|
507
|
+
// Remove empty-state placeholder on first real entry
|
|
508
|
+
const empty = document.getElementById("reasoning-empty");
|
|
509
|
+
if (empty) {
|
|
510
|
+
empty.remove();
|
|
511
|
+
}
|
|
512
|
+
|
|
513
|
+
const entry = document.createElement("div");
|
|
514
|
+
entry.className = "reasoning-entry";
|
|
515
|
+
|
|
516
|
+
switch (block.type) {
|
|
517
|
+
// ── Thinking block ──────────────────────────────────────────────
|
|
518
|
+
case "thinking": {
|
|
519
|
+
const text = (block.thinking ?? "").trim();
|
|
520
|
+
if (!text) {
|
|
521
|
+
return;
|
|
522
|
+
}
|
|
523
|
+
entry.innerHTML = `
|
|
524
|
+
<div class="reasoning-entry-header">
|
|
525
|
+
<span class="reasoning-entry-badge badge-think">◈ THINK</span>
|
|
526
|
+
<span class="reasoning-entry-name">${escHtml(String(text).split("\n")[0].slice(0, 60))}${text.length > 60 ? "…" : ""}</span>
|
|
527
|
+
</div>
|
|
528
|
+
<div class="reasoning-think-body">${escHtml(text)}</div>
|
|
529
|
+
`;
|
|
530
|
+
break;
|
|
531
|
+
}
|
|
532
|
+
|
|
533
|
+
// ── Tool call ───────────────────────────────────────────────────
|
|
534
|
+
case "tool_use": {
|
|
535
|
+
const name = block.name ?? "tool";
|
|
536
|
+
const inputJson = block.input ? JSON.stringify(block.input, null, 2) : "{}";
|
|
537
|
+
// One-line preview: first key=value pair
|
|
538
|
+
let preview = "";
|
|
539
|
+
try {
|
|
540
|
+
const keys = Object.keys(block.input ?? {});
|
|
541
|
+
if (keys.length) {
|
|
542
|
+
const val = String(block.input[keys[0]]).slice(0, 50);
|
|
543
|
+
preview = `${keys[0]}: ${val}${val.length >= 50 ? "…" : ""}`;
|
|
544
|
+
}
|
|
545
|
+
} catch {
|
|
546
|
+
/* ignore */
|
|
547
|
+
}
|
|
548
|
+
entry.innerHTML = `
|
|
549
|
+
<div class="reasoning-entry-header">
|
|
550
|
+
<span class="reasoning-entry-badge badge-tool">${escHtml(toolIcon(name))} TOOL</span>
|
|
551
|
+
<span class="reasoning-entry-name">${escHtml(formatToolName(name))}</span>
|
|
552
|
+
</div>
|
|
553
|
+
${preview ? `<div class="reasoning-tool-preview">${escHtml(preview)}</div>` : ""}
|
|
554
|
+
<div class="reasoning-tool-detail">${escHtml(inputJson)}</div>
|
|
555
|
+
`;
|
|
556
|
+
// Toggle expand on click
|
|
557
|
+
entry.style.cursor = "pointer";
|
|
558
|
+
entry.addEventListener("click", () => entry.classList.toggle("expanded"));
|
|
559
|
+
break;
|
|
560
|
+
}
|
|
561
|
+
|
|
562
|
+
// ── Tool result ─────────────────────────────────────────────────
|
|
563
|
+
case "tool_result": {
|
|
564
|
+
const content = Array.isArray(block.content)
|
|
565
|
+
? block.content.map((b) => b.text ?? "").join("\n")
|
|
566
|
+
: String(block.content ?? "");
|
|
567
|
+
const chars = content.length;
|
|
568
|
+
const isError = block.is_error === true;
|
|
569
|
+
entry.innerHTML = `
|
|
570
|
+
<div class="reasoning-entry-header">
|
|
571
|
+
<span class="reasoning-entry-badge badge-result">${isError ? "⚠ ERROR" : "↩ RESULT"}</span>
|
|
572
|
+
<span class="reasoning-entry-name">${chars} chars</span>
|
|
573
|
+
</div>
|
|
574
|
+
<div class="reasoning-result-meta">${escHtml(content.slice(0, 80))}${chars > 80 ? "…" : ""}</div>
|
|
575
|
+
`;
|
|
576
|
+
break;
|
|
577
|
+
}
|
|
578
|
+
|
|
579
|
+
default:
|
|
580
|
+
return; // unknown block — skip
|
|
581
|
+
}
|
|
582
|
+
|
|
583
|
+
feed.appendChild(entry);
|
|
584
|
+
feed.scrollTop = feed.scrollHeight;
|
|
585
|
+
};
|
|
586
|
+
|
|
587
|
+
// ── Reasoning Panel — run separator ──────────────────────────────────
|
|
588
|
+
window.injectReasoningRunSeparator = function () {
|
|
589
|
+
const feed = document.getElementById("reasoning-feed");
|
|
590
|
+
if (!feed) {
|
|
591
|
+
return;
|
|
592
|
+
}
|
|
593
|
+
const empty = document.getElementById("reasoning-empty");
|
|
594
|
+
if (empty) {
|
|
595
|
+
empty.remove();
|
|
596
|
+
}
|
|
597
|
+
const now = new Date();
|
|
598
|
+
const hhmm = now.toLocaleTimeString("en-US", {
|
|
599
|
+
hour: "2-digit",
|
|
600
|
+
minute: "2-digit",
|
|
601
|
+
hour12: false,
|
|
602
|
+
});
|
|
603
|
+
const sep = document.createElement("div");
|
|
604
|
+
sep.className = "reasoning-run-sep";
|
|
605
|
+
sep.innerHTML = `<span class="reasoning-run-sep-label">RUN · ${hhmm}</span>`;
|
|
606
|
+
feed.appendChild(sep);
|
|
607
|
+
feed.scrollTop = feed.scrollHeight;
|
|
608
|
+
};
|
|
609
|
+
|
|
610
|
+
// ── Reasoning Panel — clear ───────────────────────────────────────────
|
|
611
|
+
window.clearReasoningPanel = function () {
|
|
612
|
+
const feed = document.getElementById("reasoning-feed");
|
|
613
|
+
if (!feed) {
|
|
614
|
+
return;
|
|
615
|
+
}
|
|
616
|
+
feed.innerHTML = `
|
|
617
|
+
<div class="reasoning-empty" id="reasoning-empty">
|
|
618
|
+
<div class="reasoning-empty-icon">
|
|
619
|
+
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5">
|
|
620
|
+
<circle cx="12" cy="12" r="3"/>
|
|
621
|
+
<path d="M12 2v2M12 20v2M4.93 4.93l1.41 1.41M17.66 17.66l1.41 1.41M2 12h2M20 12h2M4.93 19.07l1.41-1.41M17.66 6.34l1.41-1.41"/>
|
|
622
|
+
</svg>
|
|
623
|
+
</div>
|
|
624
|
+
<div class="reasoning-empty-text">No reasoning yet</div>
|
|
625
|
+
</div>`;
|
|
626
|
+
};
|
|
627
|
+
|
|
628
|
+
// ── Reasoning Panel — live thinking update (streaming) ───────────────
|
|
629
|
+
// Called repeatedly during a run to accumulate thinking text in real-time.
|
|
630
|
+
// Creates a single "live" entry and updates it in-place until finalized.
|
|
631
|
+
let _liveThinkEntry = null;
|
|
632
|
+
let _liveThinkBody = null;
|
|
633
|
+
let _liveThinkBuffer = "";
|
|
634
|
+
|
|
635
|
+
window.openLiveThinking = function () {
|
|
636
|
+
const feed = document.getElementById("reasoning-feed");
|
|
637
|
+
if (!feed) {
|
|
638
|
+
return;
|
|
639
|
+
}
|
|
640
|
+
const empty = document.getElementById("reasoning-empty");
|
|
641
|
+
if (empty) {
|
|
642
|
+
empty.remove();
|
|
643
|
+
}
|
|
644
|
+
_liveThinkBuffer = "";
|
|
645
|
+
const entry = document.createElement("div");
|
|
646
|
+
entry.className = "reasoning-entry";
|
|
647
|
+
entry.id = "reasoning-live-think";
|
|
648
|
+
entry.innerHTML = `
|
|
649
|
+
<div class="reasoning-entry-header">
|
|
650
|
+
<span class="reasoning-entry-badge badge-think">◈ THINK</span>
|
|
651
|
+
<span class="reasoning-entry-name" id="reasoning-live-name">…</span>
|
|
652
|
+
</div>
|
|
653
|
+
<div class="reasoning-think-body" id="reasoning-live-body"></div>
|
|
654
|
+
`;
|
|
655
|
+
feed.appendChild(entry);
|
|
656
|
+
_liveThinkEntry = entry;
|
|
657
|
+
_liveThinkBody = entry.querySelector("#reasoning-live-body");
|
|
658
|
+
feed.scrollTop = feed.scrollHeight;
|
|
659
|
+
};
|
|
660
|
+
|
|
661
|
+
window.updateLiveThinking = function (text) {
|
|
662
|
+
if (!_liveThinkBody) {
|
|
663
|
+
window.openLiveThinking();
|
|
664
|
+
}
|
|
665
|
+
_liveThinkBuffer += text;
|
|
666
|
+
if (_liveThinkBody) {
|
|
667
|
+
_liveThinkBody.textContent = _liveThinkBuffer;
|
|
668
|
+
const feed = document.getElementById("reasoning-feed");
|
|
669
|
+
if (feed) {
|
|
670
|
+
feed.scrollTop = feed.scrollHeight;
|
|
671
|
+
}
|
|
672
|
+
}
|
|
673
|
+
// Update name preview
|
|
674
|
+
const nameEl = _liveThinkEntry?.querySelector("#reasoning-live-name");
|
|
675
|
+
if (nameEl) {
|
|
676
|
+
const firstLine = _liveThinkBuffer.split("\n")[0].slice(0, 60);
|
|
677
|
+
nameEl.textContent = firstLine + (_liveThinkBuffer.length > 60 ? "…" : "");
|
|
678
|
+
}
|
|
679
|
+
};
|
|
680
|
+
|
|
681
|
+
window.closeLiveThinking = function () {
|
|
682
|
+
if (_liveThinkEntry) {
|
|
683
|
+
_liveThinkEntry.removeAttribute("id");
|
|
684
|
+
_liveThinkEntry = null;
|
|
685
|
+
_liveThinkBody = null;
|
|
686
|
+
_liveThinkBuffer = "";
|
|
687
|
+
}
|
|
688
|
+
};
|
|
689
|
+
|
|
690
|
+
// ── Extract thinking text from a content array (for streaming deltas) ─
|
|
691
|
+
window.extractThinkingText = function (content) {
|
|
692
|
+
if (!content) {
|
|
693
|
+
return "";
|
|
694
|
+
}
|
|
695
|
+
if (typeof content === "string") {
|
|
696
|
+
return "";
|
|
697
|
+
}
|
|
698
|
+
if (Array.isArray(content)) {
|
|
699
|
+
return content
|
|
700
|
+
.filter((b) => b?.type === "thinking")
|
|
701
|
+
.map((b) => b.thinking ?? "")
|
|
702
|
+
.join("");
|
|
703
|
+
}
|
|
704
|
+
if (content?.content) {
|
|
705
|
+
return window.extractThinkingText(content.content);
|
|
706
|
+
}
|
|
707
|
+
return "";
|
|
708
|
+
};
|
|
709
|
+
|
|
500
710
|
// ── Main render function — builds a full message element ──────────────
|
|
501
711
|
window.renderMessage = function (message) {
|
|
502
712
|
const { role, content, timestamp } = message;
|
|
@@ -523,9 +733,15 @@ window.renderMessage = function (message) {
|
|
|
523
733
|
bubble.appendChild(copyBtn);
|
|
524
734
|
}
|
|
525
735
|
|
|
526
|
-
// Render each content block
|
|
736
|
+
// Render each content block — route reasoning/tool blocks to the side panel
|
|
737
|
+
const REASONING_TYPES = new Set(["thinking", "tool_use", "tool_result"]);
|
|
527
738
|
const blocks = Array.isArray(content) ? content : [{ type: "text", text: extractText(content) }];
|
|
528
739
|
for (const block of blocks) {
|
|
740
|
+
if (!isUser && REASONING_TYPES.has(block.type)) {
|
|
741
|
+
// Route to Reasoning Panel — keep response bubble clean
|
|
742
|
+
window.appendToReasoningPanel(block);
|
|
743
|
+
continue;
|
|
744
|
+
}
|
|
529
745
|
const el = renderBlock(block);
|
|
530
746
|
if (el.childNodes.length || el.innerHTML) {
|
|
531
747
|
bubble.appendChild(el);
|
package/dist/daemon-cli.js
CHANGED
|
@@ -3,7 +3,7 @@ import fs from "node:fs";
|
|
|
3
3
|
import os from "node:os";
|
|
4
4
|
import path from "node:path";
|
|
5
5
|
import { Logger } from "tslog";
|
|
6
|
-
import
|
|
6
|
+
import json5 from "json5";
|
|
7
7
|
import chalk, { Chalk } from "chalk";
|
|
8
8
|
import fs$1 from "node:fs/promises";
|
|
9
9
|
import { execFile, execFileSync, spawn } from "node:child_process";
|
|
@@ -291,7 +291,7 @@ function readLoggingConfig() {
|
|
|
291
291
|
try {
|
|
292
292
|
if (!fs.existsSync(configPath)) return;
|
|
293
293
|
const raw = fs.readFileSync(configPath, "utf-8");
|
|
294
|
-
const logging =
|
|
294
|
+
const logging = json5.parse(raw)?.logging;
|
|
295
295
|
if (!logging || typeof logging !== "object" || Array.isArray(logging)) return;
|
|
296
296
|
return logging;
|
|
297
297
|
} catch {
|
|
@@ -3063,7 +3063,7 @@ function safeRealpath(target) {
|
|
|
3063
3063
|
}
|
|
3064
3064
|
const defaultResolver = {
|
|
3065
3065
|
readFile: (p) => fs.readFileSync(p, "utf-8"),
|
|
3066
|
-
parseJson: (raw) =>
|
|
3066
|
+
parseJson: (raw) => json5.parse(raw)
|
|
3067
3067
|
};
|
|
3068
3068
|
/**
|
|
3069
3069
|
* Resolves all $include directives in a parsed config object.
|
|
@@ -8346,7 +8346,7 @@ function resolveConfigPathForDeps(deps) {
|
|
|
8346
8346
|
function normalizeDeps(overrides = {}) {
|
|
8347
8347
|
return {
|
|
8348
8348
|
fs: overrides.fs ?? fs,
|
|
8349
|
-
json5: overrides.json5 ??
|
|
8349
|
+
json5: overrides.json5 ?? json5,
|
|
8350
8350
|
env: overrides.env ?? process.env,
|
|
8351
8351
|
homedir: overrides.homedir ?? (() => resolveRequiredHomeDir(overrides.env ?? process.env, os.homedir)),
|
|
8352
8352
|
configPath: overrides.configPath ?? "",
|
|
@@ -8357,11 +8357,11 @@ function maybeLoadDotEnvForConfig(env) {
|
|
|
8357
8357
|
if (env !== process.env) return;
|
|
8358
8358
|
loadDotEnv({ quiet: true });
|
|
8359
8359
|
}
|
|
8360
|
-
function parseConfigJson5(raw, json5 =
|
|
8360
|
+
function parseConfigJson5(raw, json5$1 = json5) {
|
|
8361
8361
|
try {
|
|
8362
8362
|
return {
|
|
8363
8363
|
ok: true,
|
|
8364
|
-
parsed: json5.parse(raw)
|
|
8364
|
+
parsed: json5$1.parse(raw)
|
|
8365
8365
|
};
|
|
8366
8366
|
} catch (err) {
|
|
8367
8367
|
return {
|
|
@@ -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-x8rJur4F.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";
|
|
@@ -2,7 +2,7 @@ import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
|
|
|
2
2
|
import { R as shortenHomeInString, k as isRecord } from "./registry-CK4e9hn8.js";
|
|
3
3
|
import { B as resolveImplicitCopilotProvider, J as normalizeSecretInput, R as normalizeProviders, V as resolveImplicitProviders, r as requireApiKey, t as getApiKeyForModel, y as resolveSymiAgentDir, z as resolveImplicitBedrockProvider } from "./model-auth-CeL58m55.js";
|
|
4
4
|
import { n as discoverModels, t as discoverAuthStorage } from "./pi-model-discovery-DaNAekda.js";
|
|
5
|
-
import { N as sanitizeUserFacingText } from "./pi-embedded-helpers-
|
|
5
|
+
import { N as sanitizeUserFacingText } from "./pi-embedded-helpers-x8rJur4F.js";
|
|
6
6
|
import { n as loadConfig } from "./config-DM0K7qC1.js";
|
|
7
7
|
import { n as redactToolDetail } from "./redact-jSxx6Ep2.js";
|
|
8
8
|
import fs from "node:fs/promises";
|
|
@@ -4,7 +4,7 @@ import { c as resolveDefaultAgentId, r as resolveAgentDir, s as resolveAgentWork
|
|
|
4
4
|
import "./subsystem-Bs9YvKLa.js";
|
|
5
5
|
import "./workspace-wAaHI8-5.js";
|
|
6
6
|
import "./tokens-H1H1LiSQ.js";
|
|
7
|
-
import { t as runEmbeddedPiAgent } from "./pi-embedded-
|
|
7
|
+
import { t as runEmbeddedPiAgent } from "./pi-embedded-ZzUH4ioO.js";
|
|
8
8
|
import "./plugins-DQYI3Fr-.js";
|
|
9
9
|
import "./accounts-tNElYrCH.js";
|
|
10
10
|
import "./boolean-B8-BqKGQ.js";
|
|
@@ -12,7 +12,7 @@ import "./command-format-BaxDnULz.js";
|
|
|
12
12
|
import "./bindings-B7Ke6LJi.js";
|
|
13
13
|
import "./send-CHOArYFe.js";
|
|
14
14
|
import "./send-D3M6pMr5.js";
|
|
15
|
-
import "./deliver-
|
|
15
|
+
import "./deliver-DD3gs9SF.js";
|
|
16
16
|
import "./diagnostic-CI0kRQkt.js";
|
|
17
17
|
import "./diagnostic-session-state-Bxo4UHOL.js";
|
|
18
18
|
import "./accounts-CWktKM8a.js";
|
|
@@ -22,10 +22,10 @@ import "./model-auth-CeL58m55.js";
|
|
|
22
22
|
import "./github-copilot-token-C_qUP7p5.js";
|
|
23
23
|
import "./pi-model-discovery-DaNAekda.js";
|
|
24
24
|
import "./message-channel-Dz5lr5b0.js";
|
|
25
|
-
import "./pi-embedded-helpers-
|
|
25
|
+
import "./pi-embedded-helpers-x8rJur4F.js";
|
|
26
26
|
import "./config-DM0K7qC1.js";
|
|
27
27
|
import "./manifest-registry-D0IQ3WuX.js";
|
|
28
|
-
import "./chrome-
|
|
28
|
+
import "./chrome-BATLK3yK.js";
|
|
29
29
|
import "./frontmatter-C_bv_0P8.js";
|
|
30
30
|
import "./skills-BFekKL7i.js";
|
|
31
31
|
import "./redact-jSxx6Ep2.js";
|
|
@@ -36,7 +36,7 @@ import "./thinking-CdlENGRW.js";
|
|
|
36
36
|
import "./accounts-qtxJ-6em.js";
|
|
37
37
|
import "./paths-DLyHUt31.js";
|
|
38
38
|
import "./tool-images-DXB7tqWi.js";
|
|
39
|
-
import "./image-
|
|
39
|
+
import "./image-RLbZ3RUn.js";
|
|
40
40
|
import "./reply-prefix-XlyuyChD.js";
|
|
41
41
|
import "./manager-B5EXdBQV.js";
|
|
42
42
|
import "./gemini-auth-7AWT6JXV.js";
|
|
@@ -50,7 +50,7 @@ import "./ir-DccrnjsE.js";
|
|
|
50
50
|
import "./render-CDCvpfhh.js";
|
|
51
51
|
import "./commands-registry-C3C4Rv3O.js";
|
|
52
52
|
import "./skill-commands-B64uavY9.js";
|
|
53
|
-
import "./runner-
|
|
53
|
+
import "./runner-DjHRFXSI.js";
|
|
54
54
|
import "./fetch-Bso4i15F.js";
|
|
55
55
|
import "./channel-activity-CsM_hJ_s.js";
|
|
56
56
|
import "./tables-DuZspiBu.js";
|
|
@@ -13,7 +13,7 @@ import { t as parseBooleanValue$1 } from "./boolean-B8-BqKGQ.js";
|
|
|
13
13
|
import { n as resolveCliName, r as isTruthyEnvValue, t as formatCliCommand } from "./command-format-BaxDnULz.js";
|
|
14
14
|
import { a as resolveSlackWebClientOptions, c as buildSlackBlocksFallbackText, i as createSlackWebClient, l as parseSlackTarget, o as parseSlackBlocksInput, s as validateSlackBlocksArray, t as sendMessageSlack, u as resolveSlackChannelId } from "./send-CHOArYFe.js";
|
|
15
15
|
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-D3M6pMr5.js";
|
|
16
|
-
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-
|
|
16
|
+
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-DD3gs9SF.js";
|
|
17
17
|
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-CI0kRQkt.js";
|
|
18
18
|
import { r as getDiagnosticSessionState } from "./diagnostic-session-state-Bxo4UHOL.js";
|
|
19
19
|
import { n as resolveSignalAccount, t as listEnabledSignalAccounts } from "./accounts-CWktKM8a.js";
|
|
@@ -23,10 +23,10 @@ import { A as normalizeProviderId, C as buildAllowedModelSet, D as isCliProvider
|
|
|
23
23
|
import { a as saveJsonFile, i as loadJsonFile } from "./github-copilot-token-C_qUP7p5.js";
|
|
24
24
|
import { n as discoverModels, t as discoverAuthStorage } from "./pi-model-discovery-DaNAekda.js";
|
|
25
25
|
import { a as isMarkdownCapableMessageChannel, c as resolveGatewayMessageChannel, d as GATEWAY_CLIENT_MODES, f as GATEWAY_CLIENT_NAMES, i as isInternalMessageChannel, l as resolveMessageChannel, n as isDeliverableMessageChannel, o as listDeliverableMessageChannels, r as isGatewayMessageChannel, s as normalizeMessageChannel, t as INTERNAL_MESSAGE_CHANNEL, u as GATEWAY_CLIENT_IDS } from "./message-channel-Dz5lr5b0.js";
|
|
26
|
-
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-
|
|
26
|
+
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-x8rJur4F.js";
|
|
27
27
|
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-DM0K7qC1.js";
|
|
28
28
|
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-D0IQ3WuX.js";
|
|
29
|
-
import { C as rawDataToString, O as DEFAULT_AI_SNAPSHOT_MAX_CHARS, T as isSecureWebSocketUrl, x as ensureChromeExtensionRelayServer } from "./chrome-
|
|
29
|
+
import { C as rawDataToString, O as DEFAULT_AI_SNAPSHOT_MAX_CHARS, T as isSecureWebSocketUrl, x as ensureChromeExtensionRelayServer } from "./chrome-BATLK3yK.js";
|
|
30
30
|
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-BFekKL7i.js";
|
|
31
31
|
import { n as formatErrorMessage, r as formatUncaughtError } from "./errors-BoQgnc8X.js";
|
|
32
32
|
import { i as isBlockedHostnameOrIp, o as normalizeHostname, t as SsrFBlockedError } from "./ssrf-BTMDZjHT.js";
|
|
@@ -37,7 +37,7 @@ import { t as resolveIMessageAccount } from "./accounts-qtxJ-6em.js";
|
|
|
37
37
|
import { i as resolveSessionTranscriptPath, n as resolveSessionFilePath, o as resolveSessionTranscriptsDirForAgent, r as resolveSessionFilePathOptions, s as resolveStorePath, t as resolveDefaultSessionStorePath } from "./paths-DLyHUt31.js";
|
|
38
38
|
import { t as emitSessionTranscriptUpdate } from "./transcript-events-DDYvbmRV.js";
|
|
39
39
|
import { i as resolveImageSanitizationLimits, n as sanitizeImageBlocks, r as sanitizeToolResultImages } from "./tool-images-DXB7tqWi.js";
|
|
40
|
-
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-
|
|
40
|
+
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-RLbZ3RUn.js";
|
|
41
41
|
import { a as resolveAgentIdentity, i as resolveAckReaction, o as resolveEffectiveMessagesConfig, r as resolveResponsePrefixTemplate, s as resolveHumanDelayConfig, t as createReplyPrefixOptions } from "./reply-prefix-XlyuyChD.js";
|
|
42
42
|
import { n as resolveMemorySearchConfig } from "./manager-B5EXdBQV.js";
|
|
43
43
|
import { d as listMemoryFiles, f as normalizeExtraMemoryPaths, g as runTasksWithConcurrency } from "./sqlite-DRbx2dhW.js";
|
|
@@ -51,7 +51,7 @@ import { a as loadWebMedia, i as getDefaultLocalRoots } from "./ir-DccrnjsE.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-C3C4Rv3O.js";
|
|
52
52
|
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-B64uavY9.js";
|
|
53
53
|
import { r as normalizeInboundTextNewlines, t as finalizeInboundContext } from "./inbound-context-BlHX0H3E.js";
|
|
54
|
-
import { _ as resolveMediaUnderstandingScope, a as resolveMediaAttachmentLocalRoots, c as loadModelCatalog, d as resolveAttachmentKind, f as buildRandomTempFilePath, g as normalizeMediaUnderstandingChatType, h as resolveTimeoutMs$1, i as resolveAutoImageModel, l as modelSupportsVision, m as resolveConcurrency, n as createMediaAttachmentCache, o as runCapability, p as registerUnhandledRejectionHandler, r as normalizeMediaAttachments, s as findModelInCatalog, t as buildProviderRegistry, v as CLI_OUTPUT_MAX_BUFFER, y as applyTemplate } from "./runner-
|
|
54
|
+
import { _ as resolveMediaUnderstandingScope, a as resolveMediaAttachmentLocalRoots, c as loadModelCatalog, d as resolveAttachmentKind, f as buildRandomTempFilePath, g as normalizeMediaUnderstandingChatType, h as resolveTimeoutMs$1, i as resolveAutoImageModel, l as modelSupportsVision, m as resolveConcurrency, n as createMediaAttachmentCache, o as runCapability, p as registerUnhandledRejectionHandler, r as normalizeMediaAttachments, s as findModelInCatalog, t as buildProviderRegistry, v as CLI_OUTPUT_MAX_BUFFER, y as applyTemplate } from "./runner-DjHRFXSI.js";
|
|
55
55
|
import { n as wrapFetchWithAbortSignal, t as resolveFetch } from "./fetch-Bso4i15F.js";
|
|
56
56
|
import { n as recordCommandPoll, r as resetCommandPollCount } from "./command-poll-backoff-Bup9wS1y.js";
|
|
57
57
|
import { n as recordChannelActivity, r as createDiscordRetryRunner, t as getChannelActivity } from "./channel-activity-CsM_hJ_s.js";
|
|
@@ -81,7 +81,7 @@ import { EdgeTTS } from "node-edge-tts";
|
|
|
81
81
|
import AjvPkg from "ajv";
|
|
82
82
|
import { createServer } from "node:http";
|
|
83
83
|
import { ProxyAgent, fetch as fetch$1 } from "undici";
|
|
84
|
-
import WebSocket, { WebSocket
|
|
84
|
+
import WebSocket$1, { WebSocket } from "ws";
|
|
85
85
|
import { Buffer as Buffer$1 } from "node:buffer";
|
|
86
86
|
import { createJiti } from "jiti";
|
|
87
87
|
import { Type } from "@sinclair/typebox";
|
|
@@ -5715,7 +5715,7 @@ var GatewayClient = class {
|
|
|
5715
5715
|
if (fingerprint !== expected) return /* @__PURE__ */ new Error("gateway tls fingerprint mismatch");
|
|
5716
5716
|
});
|
|
5717
5717
|
}
|
|
5718
|
-
this.ws = new WebSocket
|
|
5718
|
+
this.ws = new WebSocket(url, wsOptions);
|
|
5719
5719
|
this.ws.on("open", () => {
|
|
5720
5720
|
if (url.startsWith("wss://") && this.opts.tlsFingerprint) {
|
|
5721
5721
|
const tlsError = this.validateTlsFingerprint();
|
|
@@ -5934,7 +5934,7 @@ var GatewayClient = class {
|
|
|
5934
5934
|
return null;
|
|
5935
5935
|
}
|
|
5936
5936
|
async request(method, params, opts) {
|
|
5937
|
-
if (!this.ws || this.ws.readyState !== WebSocket
|
|
5937
|
+
if (!this.ws || this.ws.readyState !== WebSocket.OPEN) throw new Error("gateway not connected");
|
|
5938
5938
|
const id = randomUUID();
|
|
5939
5939
|
const frame = {
|
|
5940
5940
|
type: "req",
|
|
@@ -7200,7 +7200,7 @@ async function routeReply(params) {
|
|
|
7200
7200
|
const resolvedReplyToId = replyToId ?? (channelId === "slack" && threadId != null && threadId !== "" ? String(threadId) : void 0);
|
|
7201
7201
|
const resolvedThreadId = channelId === "slack" ? null : threadId ?? null;
|
|
7202
7202
|
try {
|
|
7203
|
-
const { deliverOutboundPayloads } = await import("./deliver-
|
|
7203
|
+
const { deliverOutboundPayloads } = await import("./deliver-DD3gs9SF.js").then((n) => n.n);
|
|
7204
7204
|
return {
|
|
7205
7205
|
ok: true,
|
|
7206
7206
|
messageId: (await deliverOutboundPayloads({
|
|
@@ -41573,7 +41573,7 @@ async function deliverSessionMaintenanceWarning(params) {
|
|
|
41573
41573
|
return;
|
|
41574
41574
|
}
|
|
41575
41575
|
try {
|
|
41576
|
-
const { deliverOutboundPayloads } = await import("./deliver-
|
|
41576
|
+
const { deliverOutboundPayloads } = await import("./deliver-DD3gs9SF.js").then((n) => n.n);
|
|
41577
41577
|
await deliverOutboundPayloads({
|
|
41578
41578
|
cfg: params.cfg,
|
|
41579
41579
|
channel,
|
|
@@ -45016,7 +45016,7 @@ async function describeStickerImage(params) {
|
|
|
45016
45016
|
logVerbose(`telegram: describing sticker with ${provider}/${model}`);
|
|
45017
45017
|
try {
|
|
45018
45018
|
const buffer = await fs.readFile(imagePath);
|
|
45019
|
-
const { describeImageWithModel } = await import("./image-
|
|
45019
|
+
const { describeImageWithModel } = await import("./image-RLbZ3RUn.js").then((n) => n.n);
|
|
45020
45020
|
return (await describeImageWithModel({
|
|
45021
45021
|
buffer,
|
|
45022
45022
|
fileName: "sticker.webp",
|
|
@@ -47477,7 +47477,7 @@ async function preflightDiscordMessage(params) {
|
|
|
47477
47477
|
let preflightTranscript;
|
|
47478
47478
|
const hasAudioAttachment = message.attachments?.some((att) => att.contentType?.startsWith("audio/"));
|
|
47479
47479
|
if (!isDirectMessage && shouldRequireMention && hasAudioAttachment && !baseText && mentionRegexes.length > 0) try {
|
|
47480
|
-
const { transcribeFirstAudio } = await import("./audio-preflight-
|
|
47480
|
+
const { transcribeFirstAudio } = await import("./audio-preflight-DbUFnPX1.js");
|
|
47481
47481
|
const audioPaths = message.attachments?.filter((att) => att.contentType?.startsWith("audio/")).map((att) => att.url) ?? [];
|
|
47482
47482
|
if (audioPaths.length > 0) preflightTranscript = await transcribeFirstAudio({
|
|
47483
47483
|
ctx: {
|
|
@@ -51483,7 +51483,7 @@ function isVoiceChannelType(type) {
|
|
|
51483
51483
|
function createDefaultDeps() {
|
|
51484
51484
|
return {
|
|
51485
51485
|
sendMessageWhatsApp: async (...args) => {
|
|
51486
|
-
const { sendMessageWhatsApp } = await import("./web-
|
|
51486
|
+
const { sendMessageWhatsApp } = await import("./web-0bP0TLM2.js");
|
|
51487
51487
|
return await sendMessageWhatsApp(...args);
|
|
51488
51488
|
},
|
|
51489
51489
|
sendMessageTelegram: async (...args) => {
|
|
@@ -54387,7 +54387,7 @@ function createDiscordGatewayPlugin(params) {
|
|
|
54387
54387
|
super(options);
|
|
54388
54388
|
}
|
|
54389
54389
|
createWebSocket(url) {
|
|
54390
|
-
return new WebSocket(url, { agent });
|
|
54390
|
+
return new WebSocket$1(url, { agent });
|
|
54391
54391
|
}
|
|
54392
54392
|
}
|
|
54393
54393
|
return new ProxyGatewayPlugin();
|
|
@@ -64605,7 +64605,7 @@ const buildTelegramMessageContext = async ({ primaryCtx, allMedia, storeAllowFro
|
|
|
64605
64605
|
const hasAudio = allMedia.some((media) => media.contentType?.startsWith("audio/"));
|
|
64606
64606
|
let preflightTranscript;
|
|
64607
64607
|
if (isGroup && requireMention && hasAudio && !hasUserText && mentionRegexes.length > 0) try {
|
|
64608
|
-
const { transcribeFirstAudio } = await import("./audio-preflight-
|
|
64608
|
+
const { transcribeFirstAudio } = await import("./audio-preflight-DbUFnPX1.js");
|
|
64609
64609
|
preflightTranscript = await transcribeFirstAudio({
|
|
64610
64610
|
ctx: {
|
|
64611
64611
|
MediaPaths: allMedia.length > 0 ? allMedia.map((m) => m.path) : void 0,
|
|
@@ -66762,7 +66762,7 @@ function loadWebLoginQr() {
|
|
|
66762
66762
|
return webLoginQrPromise;
|
|
66763
66763
|
}
|
|
66764
66764
|
function loadWebChannel() {
|
|
66765
|
-
webChannelPromise ??= import("./web-
|
|
66765
|
+
webChannelPromise ??= import("./web-0bP0TLM2.js");
|
|
66766
66766
|
return webChannelPromise;
|
|
66767
66767
|
}
|
|
66768
66768
|
function loadWhatsAppActions() {
|
|
@@ -12,7 +12,7 @@ import { c as SafeOpenError, i as getImageMetadata, l as openFileWithinRoot, n a
|
|
|
12
12
|
import { S as isPidAlive, x as resolveProcessScopedMap } from "./model-auth-CeL58m55.js";
|
|
13
13
|
import { o as listDeliverableMessageChannels, s as normalizeMessageChannel } from "./message-channel-Dz5lr5b0.js";
|
|
14
14
|
import { _ as parseDurationMs, a as writeConfigFile, n as loadConfig, s as parseByteSize, t as createConfigIO } from "./config-DM0K7qC1.js";
|
|
15
|
-
import { A as DEFAULT_BROWSER_EVALUATE_ENABLED, D as DEFAULT_AI_SNAPSHOT_EFFICIENT_MAX_CHARS, E as DEFAULT_AI_SNAPSHOT_EFFICIENT_DEPTH, M as DEFAULT_SYMI_BROWSER_ENABLED, N as DEFAULT_SYMI_BROWSER_PROFILE_NAME, O as DEFAULT_AI_SNAPSHOT_MAX_CHARS, S as stopChromeExtensionRelayServer, _ as fetchJson, a as resolveSymiUserDataDir, c as captureScreenshot, d as normalizeCdpWsUrl, f as snapshotAria, g as appendCdpPath, h as withBrowserNavigationPolicy, i as launchSymiChrome, j as DEFAULT_SYMI_BROWSER_COLOR, k as DEFAULT_BROWSER_DEFAULT_PROFILE_NAME, l as createTargetViaCdp, m as assertBrowserNavigationAllowed, n as isChromeCdpReady, o as stopSymiChrome, p as InvalidBrowserNavigationUrlError, r as isChromeReachable, s as resolveBrowserExecutableForPlatform, v as fetchOk, w as isLoopbackHost, x as ensureChromeExtensionRelayServer } from "./chrome-
|
|
15
|
+
import { A as DEFAULT_BROWSER_EVALUATE_ENABLED, D as DEFAULT_AI_SNAPSHOT_EFFICIENT_MAX_CHARS, E as DEFAULT_AI_SNAPSHOT_EFFICIENT_DEPTH, M as DEFAULT_SYMI_BROWSER_ENABLED, N as DEFAULT_SYMI_BROWSER_PROFILE_NAME, O as DEFAULT_AI_SNAPSHOT_MAX_CHARS, S as stopChromeExtensionRelayServer, _ as fetchJson, a as resolveSymiUserDataDir, c as captureScreenshot, d as normalizeCdpWsUrl, f as snapshotAria, g as appendCdpPath, h as withBrowserNavigationPolicy, i as launchSymiChrome, j as DEFAULT_SYMI_BROWSER_COLOR, k as DEFAULT_BROWSER_DEFAULT_PROFILE_NAME, l as createTargetViaCdp, m as assertBrowserNavigationAllowed, n as isChromeCdpReady, o as stopSymiChrome, p as InvalidBrowserNavigationUrlError, r as isChromeReachable, s as resolveBrowserExecutableForPlatform, v as fetchOk, w as isLoopbackHost, x as ensureChromeExtensionRelayServer } from "./chrome-BATLK3yK.js";
|
|
16
16
|
import { a as syncSkillsToWorkspace, l as resolveSandboxInputPath, m as sanitizeEnvVars, u as resolveSandboxPath } from "./skills-BFekKL7i.js";
|
|
17
17
|
import { n as formatErrorMessage, t as extractErrorCode } from "./errors-BoQgnc8X.js";
|
|
18
18
|
import { t as SsrFBlockedError } from "./ssrf-BTMDZjHT.js";
|
|
@@ -933,7 +933,7 @@ function isModuleNotFoundError(err) {
|
|
|
933
933
|
}
|
|
934
934
|
async function loadPwAiModule(mode) {
|
|
935
935
|
try {
|
|
936
|
-
return await import("./pw-ai-
|
|
936
|
+
return await import("./pw-ai-CCt1nIO-.js");
|
|
937
937
|
} catch (err) {
|
|
938
938
|
if (mode === "soft") return null;
|
|
939
939
|
if (isModuleNotFoundError(err)) return null;
|
|
@@ -3473,11 +3473,11 @@ function createProfileContext(opts, profile) {
|
|
|
3473
3473
|
const userDataDir = resolveSymiUserDataDir(profile.name);
|
|
3474
3474
|
const profileState = getProfileState();
|
|
3475
3475
|
if (await isHttpReachable(300) && !profileState.running) try {
|
|
3476
|
-
await (await import("./pw-ai-
|
|
3476
|
+
await (await import("./pw-ai-CCt1nIO-.js")).closePlaywrightBrowserConnection();
|
|
3477
3477
|
} catch {}
|
|
3478
3478
|
if (profileState.running) await stopRunningBrowser();
|
|
3479
3479
|
try {
|
|
3480
|
-
await (await import("./pw-ai-
|
|
3480
|
+
await (await import("./pw-ai-CCt1nIO-.js")).closePlaywrightBrowserConnection();
|
|
3481
3481
|
} catch {}
|
|
3482
3482
|
if (!fs$1.existsSync(userDataDir)) return {
|
|
3483
3483
|
moved: false,
|
|
@@ -9,7 +9,7 @@ import "./model-auth-CeL58m55.js";
|
|
|
9
9
|
import "./github-copilot-token-C_qUP7p5.js";
|
|
10
10
|
import "./config-DM0K7qC1.js";
|
|
11
11
|
import "./manifest-registry-D0IQ3WuX.js";
|
|
12
|
-
import { _ as fetchJson, b as withCdpSocket, d as normalizeCdpWsUrl, g as appendCdpPath, h as withBrowserNavigationPolicy, m as assertBrowserNavigationAllowed, t as getChromeWebSocketUrl, u as formatAriaSnapshot, y as getHeadersWithAuth } from "./chrome-
|
|
12
|
+
import { _ as fetchJson, b as withCdpSocket, d as normalizeCdpWsUrl, g as appendCdpPath, h as withBrowserNavigationPolicy, m as assertBrowserNavigationAllowed, t as getChromeWebSocketUrl, u as formatAriaSnapshot, y as getHeadersWithAuth } from "./chrome-BATLK3yK.js";
|
|
13
13
|
import "./redact-jSxx6Ep2.js";
|
|
14
14
|
import { n as formatErrorMessage } from "./errors-BoQgnc8X.js";
|
|
15
15
|
import "./ssrf-BTMDZjHT.js";
|
|
@@ -4,7 +4,7 @@ import { t as normalizeChatType } from "./chat-type-C_KiWNAH.js";
|
|
|
4
4
|
import { _ as kindFromMime, d as detectMime, h as isAudioFileName, p as getFileExtension } from "./image-ops-CvJzsyvE.js";
|
|
5
5
|
import { A as normalizeProviderId, L as normalizeGoogleModelId, i as resolveApiKeyForProvider, r as requireApiKey, y as resolveSymiAgentDir } from "./model-auth-CeL58m55.js";
|
|
6
6
|
import { d as DEFAULT_IMESSAGE_ATTACHMENT_ROOTS, f as isInboundPathAllowed, m as resolveIMessageAttachmentRoots, n as loadConfig, p as mergeInboundPathRoots } from "./config-DM0K7qC1.js";
|
|
7
|
-
import { S as ensureSymiModelsJson, t as describeImageWithModel } from "./image-
|
|
7
|
+
import { S as ensureSymiModelsJson, t as describeImageWithModel } from "./image-RLbZ3RUn.js";
|
|
8
8
|
import { n as collectProviderApiKeysForExecution, r as executeWithApiKeyRotation, t as parseGeminiAuth } from "./gemini-auth-7AWT6JXV.js";
|
|
9
9
|
import { n as fetchWithTimeout } from "./fetch-timeout-DL3f_O53.js";
|
|
10
10
|
import { i as fetchRemoteMedia, n as getDefaultMediaLocalRoots, o as fetchWithSsrFGuard, r as MediaFetchError } from "./local-roots-DMwIh5cS.js";
|
|
@@ -5,7 +5,7 @@ import "./agent-scope-BxoUQqgM.js";
|
|
|
5
5
|
import { r as defaultRuntime, t as createSubsystemLogger } from "./subsystem-Bs9YvKLa.js";
|
|
6
6
|
import "./workspace-wAaHI8-5.js";
|
|
7
7
|
import "./tokens-H1H1LiSQ.js";
|
|
8
|
-
import { C as resolveEnvelopeFormatOptions, D as normalizeMentionText, E as buildMentionRegexes, S as formatInboundEnvelope, T as shouldComputeCommandAuthorized, _ as parseActivationCommand, b as createInboundDebouncer, c as DEFAULT_GROUP_HISTORY_LIMIT, d as shouldAckReactionForWhatsApp, f as dispatchReplyWithBufferedBlockDispatcher, g as normalizeGroupActivation, h as getReplyFromConfig, l as buildHistoryContextFromEntries, m as createDedupeCache, n as computeBackoff, o as buildPairingReply, r as sleepWithAbort, s as resolveMentionGating, u as recordPendingHistoryEntryIfEnabled, v as formatDurationPrecise, w as hasControlCommand, x as resolveInboundDebounceMs, y as enqueueSystemEvent } from "./pi-embedded-
|
|
8
|
+
import { C as resolveEnvelopeFormatOptions, D as normalizeMentionText, E as buildMentionRegexes, S as formatInboundEnvelope, T as shouldComputeCommandAuthorized, _ as parseActivationCommand, b as createInboundDebouncer, c as DEFAULT_GROUP_HISTORY_LIMIT, d as shouldAckReactionForWhatsApp, f as dispatchReplyWithBufferedBlockDispatcher, g as normalizeGroupActivation, h as getReplyFromConfig, l as buildHistoryContextFromEntries, m as createDedupeCache, n as computeBackoff, o as buildPairingReply, r as sleepWithAbort, s as resolveMentionGating, u as recordPendingHistoryEntryIfEnabled, v as formatDurationPrecise, w as hasControlCommand, x as resolveInboundDebounceMs, y as enqueueSystemEvent } from "./pi-embedded-ZzUH4ioO.js";
|
|
9
9
|
import "./plugins-DQYI3Fr-.js";
|
|
10
10
|
import { i as logWebSelfId, l as readWebSelfId, n as WA_WEB_AUTH_DIR, p as webAuthExists, r as getWebAuthAgeMs, s as pickWebChannel, t as resolveWhatsAppAccount } from "./accounts-tNElYrCH.js";
|
|
11
11
|
import "./boolean-B8-BqKGQ.js";
|
|
@@ -13,7 +13,7 @@ import { t as formatCliCommand } from "./command-format-BaxDnULz.js";
|
|
|
13
13
|
import "./bindings-B7Ke6LJi.js";
|
|
14
14
|
import "./send-CHOArYFe.js";
|
|
15
15
|
import "./send-D3M6pMr5.js";
|
|
16
|
-
import "./deliver-
|
|
16
|
+
import "./deliver-DD3gs9SF.js";
|
|
17
17
|
import "./diagnostic-CI0kRQkt.js";
|
|
18
18
|
import "./diagnostic-session-state-Bxo4UHOL.js";
|
|
19
19
|
import "./accounts-CWktKM8a.js";
|
|
@@ -23,10 +23,10 @@ import "./model-auth-CeL58m55.js";
|
|
|
23
23
|
import "./github-copilot-token-C_qUP7p5.js";
|
|
24
24
|
import "./pi-model-discovery-DaNAekda.js";
|
|
25
25
|
import "./message-channel-Dz5lr5b0.js";
|
|
26
|
-
import { Ct as resolveGroupSessionKey, G as updateLastRoute, H as loadSessionStore, U as readSessionUpdatedAt, W as recordSessionMetaFromInbound } from "./pi-embedded-helpers-
|
|
26
|
+
import { Ct as resolveGroupSessionKey, G as updateLastRoute, H as loadSessionStore, U as readSessionUpdatedAt, W as recordSessionMetaFromInbound } from "./pi-embedded-helpers-x8rJur4F.js";
|
|
27
27
|
import { n as loadConfig } from "./config-DM0K7qC1.js";
|
|
28
28
|
import "./manifest-registry-D0IQ3WuX.js";
|
|
29
|
-
import "./chrome-
|
|
29
|
+
import "./chrome-BATLK3yK.js";
|
|
30
30
|
import "./frontmatter-C_bv_0P8.js";
|
|
31
31
|
import "./skills-BFekKL7i.js";
|
|
32
32
|
import "./redact-jSxx6Ep2.js";
|
|
@@ -37,7 +37,7 @@ import { h as resolveChannelGroupRequireMention, m as resolveChannelGroupPolicy
|
|
|
37
37
|
import "./accounts-qtxJ-6em.js";
|
|
38
38
|
import { s as resolveStorePath } from "./paths-DLyHUt31.js";
|
|
39
39
|
import "./tool-images-DXB7tqWi.js";
|
|
40
|
-
import "./image-
|
|
40
|
+
import "./image-RLbZ3RUn.js";
|
|
41
41
|
import { c as resolveIdentityNamePrefix, l as resolveMessagePrefix, t as createReplyPrefixOptions } from "./reply-prefix-XlyuyChD.js";
|
|
42
42
|
import "./manager-B5EXdBQV.js";
|
|
43
43
|
import "./gemini-auth-7AWT6JXV.js";
|
|
@@ -52,7 +52,7 @@ import "./render-CDCvpfhh.js";
|
|
|
52
52
|
import "./commands-registry-C3C4Rv3O.js";
|
|
53
53
|
import "./skill-commands-B64uavY9.js";
|
|
54
54
|
import { t as finalizeInboundContext } from "./inbound-context-BlHX0H3E.js";
|
|
55
|
-
import { p as registerUnhandledRejectionHandler } from "./runner-
|
|
55
|
+
import { p as registerUnhandledRejectionHandler } from "./runner-DjHRFXSI.js";
|
|
56
56
|
import "./fetch-Bso4i15F.js";
|
|
57
57
|
import { n as recordChannelActivity } from "./channel-activity-CsM_hJ_s.js";
|
|
58
58
|
import { t as convertMarkdownTables } from "./tables-DuZspiBu.js";
|