@symerian/symi 2.0.11 → 2.0.13
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 +38 -1
- package/dist/control-ui/js/render.js +225 -1
- 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
|
+
672cb3c8c92589ea6ad8d66e7e37a211d844d784fc6c1b6f14fbb6200cd487d7
|
|
@@ -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,19 +246,26 @@ 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) {
|
|
249
256
|
continue;
|
|
250
257
|
}
|
|
251
258
|
const hasContent = Array.isArray(m.content)
|
|
252
|
-
? m.content.some((b) =>
|
|
259
|
+
? m.content.some((b) => b.type === "text" && (b.text ?? "").trim())
|
|
253
260
|
: extractText(m.content).trim();
|
|
254
261
|
if (!hasContent) {
|
|
255
262
|
continue;
|
|
256
263
|
}
|
|
257
264
|
|
|
258
265
|
const el = window.renderMessage(m);
|
|
266
|
+
if (!el) {
|
|
267
|
+
continue;
|
|
268
|
+
}
|
|
259
269
|
responseArea.appendChild(el);
|
|
260
270
|
window.applyHighlighting(el);
|
|
261
271
|
}
|
|
@@ -301,9 +311,18 @@ function handleGatewayEvent(event) {
|
|
|
301
311
|
if (text) {
|
|
302
312
|
updateStream(text);
|
|
303
313
|
}
|
|
314
|
+
// Stream thinking deltas live to the Reasoning Panel
|
|
315
|
+
const thinkingText =
|
|
316
|
+
typeof window.extractThinkingText === "function" ? window.extractThinkingText(p.message) : "";
|
|
317
|
+
if (thinkingText && typeof window.updateLiveThinking === "function") {
|
|
318
|
+
window.updateLiveThinking(thinkingText);
|
|
319
|
+
}
|
|
304
320
|
} else if (p.state === "final") {
|
|
305
321
|
stopElapsedTimer();
|
|
306
322
|
clearWatchdog();
|
|
323
|
+
if (typeof window.closeLiveThinking === "function") {
|
|
324
|
+
window.closeLiveThinking();
|
|
325
|
+
}
|
|
307
326
|
closeStreamBubble();
|
|
308
327
|
setAgentStatus("done");
|
|
309
328
|
isStreaming = false;
|
|
@@ -316,6 +335,9 @@ function handleGatewayEvent(event) {
|
|
|
316
335
|
// Clean abort (user-initiated or model decided to stop) — not an error
|
|
317
336
|
stopElapsedTimer();
|
|
318
337
|
clearWatchdog();
|
|
338
|
+
if (typeof window.closeLiveThinking === "function") {
|
|
339
|
+
window.closeLiveThinking();
|
|
340
|
+
}
|
|
319
341
|
if (streamBubble) {
|
|
320
342
|
closeStreamBubble();
|
|
321
343
|
}
|
|
@@ -371,6 +393,13 @@ function setAgentStatus(key) {
|
|
|
371
393
|
asoSub.textContent = s.sub;
|
|
372
394
|
}
|
|
373
395
|
|
|
396
|
+
// Pulse the reasoning live-dot while agent is actively thinking/streaming
|
|
397
|
+
const reasoningDot = document.getElementById("reasoning-live-dot");
|
|
398
|
+
if (reasoningDot) {
|
|
399
|
+
const active = key === "thinking" || key === "streaming" || key === "waiting";
|
|
400
|
+
reasoningDot.classList.toggle("active", active);
|
|
401
|
+
}
|
|
402
|
+
|
|
374
403
|
// ── Elapsed timer management ──────────────────────────────────
|
|
375
404
|
if (key === "thinking") {
|
|
376
405
|
// Start elapsed timer and watchdog when processing begins
|
|
@@ -476,6 +505,11 @@ async function sendText(text) {
|
|
|
476
505
|
addUserMessage(text);
|
|
477
506
|
await sleep(200);
|
|
478
507
|
|
|
508
|
+
// Mark the start of this run in the Reasoning Panel
|
|
509
|
+
if (typeof window.injectReasoningRunSeparator === "function") {
|
|
510
|
+
window.injectReasoningRunSeparator();
|
|
511
|
+
}
|
|
512
|
+
|
|
479
513
|
setAgentStatus("waiting");
|
|
480
514
|
thinkingEl = createThinkingBubble();
|
|
481
515
|
setAgentStatus("thinking");
|
|
@@ -532,6 +566,9 @@ async function handleNewSession() {
|
|
|
532
566
|
|
|
533
567
|
responseArea.innerHTML = "";
|
|
534
568
|
responseArea.style.opacity = "1";
|
|
569
|
+
if (typeof window.clearReasoningPanel === "function") {
|
|
570
|
+
window.clearReasoningPanel();
|
|
571
|
+
}
|
|
535
572
|
|
|
536
573
|
// Show empty-state indicator
|
|
537
574
|
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,15 +733,29 @@ 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);
|
|
532
748
|
}
|
|
533
749
|
}
|
|
534
750
|
|
|
751
|
+
// If the bubble has no visible content (only copy button), skip it entirely
|
|
752
|
+
const visibleChildren = bubble.querySelectorAll(
|
|
753
|
+
".msg-text, .msg-image, .msg-thinking, .msg-tool-card, .msg-tool-result",
|
|
754
|
+
);
|
|
755
|
+
if (!isUser && visibleChildren.length === 0) {
|
|
756
|
+
return null;
|
|
757
|
+
}
|
|
758
|
+
|
|
535
759
|
// Timestamp
|
|
536
760
|
if (timestamp) {
|
|
537
761
|
const ts = document.createElement("div");
|
|
@@ -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";
|