@kingsoftcloud/ksadk-web 0.2.17 → 0.2.19
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/CHANGELOG.md +14 -0
- package/dist-ksadk/assets/{ArtifactsPanel-xCGwbyKe.js → ArtifactsPanel-D-SSn2ee.js} +1 -1
- package/dist-ksadk/assets/{CodeBlock-_d8IhXK6.js → CodeBlock-P16VOLYi.js} +1 -1
- package/dist-ksadk/assets/{MathMessageMarkdown-Dq5U0t0L.js → MathMessageMarkdown-CdGiQWHR.js} +1 -1
- package/dist-ksadk/assets/{MermaidBlock-BGEGRy9j.js → MermaidBlock-IOcal8cm.js} +6 -6
- package/dist-ksadk/assets/{NativeTerminalPanel-D9YIBBoT.js → NativeTerminalPanel-DGSDWsei.js} +1 -1
- package/dist-ksadk/assets/{arc-C-aJXEEz.js → arc-BA13sHc9.js} +1 -1
- package/dist-ksadk/assets/architecture-7EHR7CIX-BvUlsA6l.js +1 -0
- package/dist-ksadk/assets/{architectureDiagram-3BPJPVTR-BS__hbBP.js → architectureDiagram-3BPJPVTR-DzJzgVoL.js} +1 -1
- package/dist-ksadk/assets/{blockDiagram-GPEHLZMM-BL-uLGOT.js → blockDiagram-GPEHLZMM-UTdVcZhn.js} +1 -1
- package/dist-ksadk/assets/{c4Diagram-AAUBKEIU-BY64KkO8.js → c4Diagram-AAUBKEIU-Dix0GD4m.js} +1 -1
- package/dist-ksadk/assets/channel-CTuydARX.js +1 -0
- package/dist-ksadk/assets/{chunk-2J33WTMH-DFgsEcc7.js → chunk-2J33WTMH-C2JxuZ42.js} +1 -1
- package/dist-ksadk/assets/{chunk-4BX2VUAB-Dk1XGsDg.js → chunk-4BX2VUAB-Be57QPgD.js} +1 -1
- package/dist-ksadk/assets/{chunk-55IACEB6-CyYG08Ez.js → chunk-55IACEB6-WjSuy4nv.js} +1 -1
- package/dist-ksadk/assets/{chunk-727SXJPM-Dj-o0foT.js → chunk-727SXJPM-BOovP-b5.js} +1 -1
- package/dist-ksadk/assets/{chunk-AQP2D5EJ-M8cDZrZQ.js → chunk-AQP2D5EJ-DOmZNmWj.js} +1 -1
- package/dist-ksadk/assets/{chunk-FMBD7UC4-Mceczy0j.js → chunk-FMBD7UC4-DzwlodkU.js} +1 -1
- package/dist-ksadk/assets/{chunk-ND2GUHAM-dwTxQ3uL.js → chunk-ND2GUHAM-DMqAikEU.js} +1 -1
- package/dist-ksadk/assets/chunk-QZHKN3VN-BnCydivS.js +1 -0
- package/dist-ksadk/assets/classDiagram-4FO5ZUOK-BNHg45Be.js +1 -0
- package/dist-ksadk/assets/classDiagram-v2-Q7XG4LA2-BNHg45Be.js +1 -0
- package/dist-ksadk/assets/{cose-bilkent-S5V4N54A-Ch6hia5Y.js → cose-bilkent-S5V4N54A-Zhy2GBnP.js} +1 -1
- package/dist-ksadk/assets/{dagre-BM42HDAG-nrh587vF.js → dagre-BM42HDAG-CbKrtIUz.js} +1 -1
- package/dist-ksadk/assets/{diagram-2AECGRRQ-DgNb_Tw5.js → diagram-2AECGRRQ-BRApgQRK.js} +1 -1
- package/dist-ksadk/assets/{diagram-5GNKFQAL-ND5Lir8O.js → diagram-5GNKFQAL-D0xbnDiK.js} +1 -1
- package/dist-ksadk/assets/{diagram-KO2AKTUF-CLrPFWcy.js → diagram-KO2AKTUF-CVugVI9L.js} +1 -1
- package/dist-ksadk/assets/{diagram-LMA3HP47-D_Sgy27v.js → diagram-LMA3HP47-DozUGgee.js} +1 -1
- package/dist-ksadk/assets/{diagram-OG6HWLK6-QbrzvyWM.js → diagram-OG6HWLK6-ZOYsKlru.js} +1 -1
- package/dist-ksadk/assets/{dist-DzZB5tor.js → dist-2hInLS_J.js} +1 -1
- package/dist-ksadk/assets/{dist-CVN4jSSW.js → dist-8EEyGgDx.js} +1 -1
- package/dist-ksadk/assets/{dist-CPRGtEH9.js → dist-8_SfK1IP.js} +1 -1
- package/dist-ksadk/assets/{dist-CMLwqcZ6.js → dist-B0NP_Z0z.js} +1 -1
- package/dist-ksadk/assets/{dist-CKb66fZP.js → dist-BIJVDMuB.js} +1 -1
- package/dist-ksadk/assets/{dist-DsvaqR-b.js → dist-BmlMPsCc.js} +1 -1
- package/dist-ksadk/assets/{dist-BbS7HTJp.js → dist-BrCcQ47T.js} +1 -1
- package/dist-ksadk/assets/{dist-D_ZZ4fV3.js → dist-BssVmjIo.js} +1 -1
- package/dist-ksadk/assets/{dist-DbpuiQKj.js → dist-C3HIIaN5.js} +1 -1
- package/dist-ksadk/assets/{dist-TIHF8jeZ.js → dist-CPBtqRTW.js} +1 -1
- package/dist-ksadk/assets/{dist-Q9_gg2Vb.js → dist-CkEKJFtk.js} +1 -1
- package/dist-ksadk/assets/{dist-ClZgJL0A.js → dist-D-JMdWPQ.js} +1 -1
- package/dist-ksadk/assets/{dist-DRYY8roY.js → dist-D-xOD048.js} +1 -1
- package/dist-ksadk/assets/{dist-Ldf-oz8Y.js → dist-D57wnGWd.js} +1 -1
- package/dist-ksadk/assets/{dist-EhrdTAKL.js → dist-DL_NKc_z.js} +1 -1
- package/dist-ksadk/assets/{dist-Dy6ODCG9.js → dist-DMezvBGJ.js} +1 -1
- package/dist-ksadk/assets/{dist-DEJYL3UK.js → dist-DmFaq_Iy.js} +1 -1
- package/dist-ksadk/assets/{dist-haZBFH4L.js → dist-Dp0k7bWI.js} +1 -1
- package/dist-ksadk/assets/{dist-JBDG5w09.js → dist-DpKtt4Bo.js} +1 -1
- package/dist-ksadk/assets/{dist-B98JDMe6.js → dist-DyOkZmze.js} +1 -1
- package/dist-ksadk/assets/{dist-DRSyDPdG.js → dist-DyWsb78Q.js} +1 -1
- package/dist-ksadk/assets/{dist-B7Z2ybmq.js → dist-gX6GOLKq.js} +1 -1
- package/dist-ksadk/assets/{erDiagram-TEJ5UH35-DWsi2HhW.js → erDiagram-TEJ5UH35-Bk-9bgE5.js} +1 -1
- package/dist-ksadk/assets/eventmodeling-FCH6USID-DsAgWnlf.js +1 -0
- package/dist-ksadk/assets/{flowDiagram-I6XJVG4X-BAtVSiaU.js → flowDiagram-I6XJVG4X-Dn9kZVuZ.js} +1 -1
- package/dist-ksadk/assets/{ganttDiagram-6RSMTGT7-jI1A45Ie.js → ganttDiagram-6RSMTGT7-BGxXlJqm.js} +1 -1
- package/dist-ksadk/assets/gitGraph-WXDBUCRP-BIao9Yjg.js +1 -0
- package/dist-ksadk/assets/{gitGraphDiagram-PVQCEYII-C3fW-u3c.js → gitGraphDiagram-PVQCEYII-C7Q0X-wi.js} +1 -1
- package/dist-ksadk/assets/index-C00Lwg3L.js +165 -0
- package/dist-ksadk/assets/info-J43DQDTF-CyipqGxU.js +1 -0
- package/dist-ksadk/assets/{infoDiagram-5YYISTIA-7Fgxfiew.js → infoDiagram-5YYISTIA-BO_CSqq5.js} +1 -1
- package/dist-ksadk/assets/{ishikawaDiagram-YF4QCWOH-dXkKN_2f.js → ishikawaDiagram-YF4QCWOH-eYLPLd46.js} +1 -1
- package/dist-ksadk/assets/{journeyDiagram-JHISSGLW-Noo-i6Co.js → journeyDiagram-JHISSGLW-De9geSb0.js} +1 -1
- package/dist-ksadk/assets/{kanban-definition-UN3LZRKU-C-qkrNz8.js → kanban-definition-UN3LZRKU-Cs80kQto.js} +1 -1
- package/dist-ksadk/assets/{katex-B907dXuX.js → katex-DSrCFD8n.js} +1 -1
- package/dist-ksadk/assets/{linear-CiSItak9.js → linear-CN9sbKTF.js} +1 -1
- package/dist-ksadk/assets/{mermaid-parser.core-g7ZK2XzV.js → mermaid-parser.core-DlgSBU8l.js} +2 -2
- package/dist-ksadk/assets/{mindmap-definition-RKZ34NQL-KEpzYVDW.js → mindmap-definition-RKZ34NQL-9afz7Oug.js} +1 -1
- package/dist-ksadk/assets/packet-YPE3B663-CGkyRxlg.js +1 -0
- package/dist-ksadk/assets/pie-LRSECV5Y-M0uWAf4n.js +1 -0
- package/dist-ksadk/assets/{pieDiagram-4H26LBE5-BetRBqce.js → pieDiagram-4H26LBE5-DPv_VstN.js} +1 -1
- package/dist-ksadk/assets/{quadrantDiagram-W4KKPZXB-NTMW-2JW.js → quadrantDiagram-W4KKPZXB-o77wZ1XK.js} +1 -1
- package/dist-ksadk/assets/radar-GUYGQ44K-Bdbm24-x.js +1 -0
- package/dist-ksadk/assets/{requirementDiagram-4Y6WPE33-DGz7kAYq.js → requirementDiagram-4Y6WPE33-BYVw81VC.js} +1 -1
- package/dist-ksadk/assets/{sankeyDiagram-5OEKKPKP-B1npa6g0.js → sankeyDiagram-5OEKKPKP-B7nZFMKT.js} +1 -1
- package/dist-ksadk/assets/{sequenceDiagram-3UESZ5HK-CiiQg1kp.js → sequenceDiagram-3UESZ5HK-BGRRrFw5.js} +1 -1
- package/dist-ksadk/assets/{stateDiagram-AJRCARHV-DeEoMo9D.js → stateDiagram-AJRCARHV-BUfHCoPs.js} +1 -1
- package/dist-ksadk/assets/stateDiagram-v2-BHNVJYJU-8xBN_gLM.js +1 -0
- package/dist-ksadk/assets/{timeline-definition-PNZ67QCA-C4KoD7P2.js → timeline-definition-PNZ67QCA-FbCTGrf9.js} +1 -1
- package/dist-ksadk/assets/treeView-BLDUP644-npMo0ak1.js +1 -0
- package/dist-ksadk/assets/treemap-LRROVOQU-CHdzrrdo.js +1 -0
- package/dist-ksadk/assets/{vennDiagram-CIIHVFJN-DuDr8-7R.js → vennDiagram-CIIHVFJN-DWgwtPsJ.js} +1 -1
- package/dist-ksadk/assets/wardley-L42UT6IY-BEQz7wyy.js +1 -0
- package/dist-ksadk/assets/{wardleyDiagram-YWT4CUSO-C6phy1Vu.js → wardleyDiagram-YWT4CUSO-2x8G-tTM.js} +1 -1
- package/dist-ksadk/assets/{xychartDiagram-2RQKCTM6-Cx6jCs70.js → xychartDiagram-2RQKCTM6-Drma3AYl.js} +1 -1
- package/dist-ksadk/index.html +1 -1
- package/dist-lib/{ArtifactsPanel-D3AiN69_.js → ArtifactsPanel-DCn5q1OB.js} +1 -1
- package/dist-lib/{CodeBlock-CWHejqEk.js → CodeBlock-BGJr6bCf.js} +1 -1
- package/dist-lib/{MathMessageMarkdown-BlZXusY6.js → MathMessageMarkdown-DQPFplDT.js} +2 -2
- package/dist-lib/{NativeTerminalPanel-mQwtEFvo.js → NativeTerminalPanel-CjyPyYC4.js} +1 -1
- package/dist-lib/{WorkspacePanelContainer-D5WLGlO_.js → WorkspacePanelContainer-fvYVV4lp.js} +15 -17
- package/dist-lib/api/messages.d.ts +51 -0
- package/dist-lib/api/messages.d.ts.map +1 -0
- package/dist-lib/api/session.d.ts +20 -0
- package/dist-lib/api/session.d.ts.map +1 -1
- package/dist-lib/components/chat/ConnectedMessageList.d.ts.map +1 -1
- package/dist-lib/components.js +2 -2
- package/dist-lib/core/api/facade.d.ts +12 -0
- package/dist-lib/core/api/facade.d.ts.map +1 -1
- package/dist-lib/core/api/types.d.ts +38 -0
- package/dist-lib/core/api/types.d.ts.map +1 -1
- package/dist-lib/hooks/useSessionLifecycle.d.ts.map +1 -1
- package/dist-lib/runtime.js +572 -549
- package/dist-lib/utils/messages.d.ts +17 -0
- package/dist-lib/utils/messages.d.ts.map +1 -0
- package/package.json +1 -1
- package/dist-ksadk/assets/architecture-7EHR7CIX-ElkGISgr.js +0 -1
- package/dist-ksadk/assets/channel-95jCPDn-.js +0 -1
- package/dist-ksadk/assets/chunk-QZHKN3VN-DJz-BVY8.js +0 -1
- package/dist-ksadk/assets/classDiagram-4FO5ZUOK-DQhxN0zQ.js +0 -1
- package/dist-ksadk/assets/classDiagram-v2-Q7XG4LA2-DQhxN0zQ.js +0 -1
- package/dist-ksadk/assets/eventmodeling-FCH6USID-R5MOzX8B.js +0 -1
- package/dist-ksadk/assets/gitGraph-WXDBUCRP-ycpCtFsu.js +0 -1
- package/dist-ksadk/assets/index-Bbbbu0em.js +0 -165
- package/dist-ksadk/assets/info-J43DQDTF-BG5UaFoK.js +0 -1
- package/dist-ksadk/assets/packet-YPE3B663-B4R_RXtl.js +0 -1
- package/dist-ksadk/assets/pie-LRSECV5Y-ZvqONtr7.js +0 -1
- package/dist-ksadk/assets/radar-GUYGQ44K-MPUTAFuT.js +0 -1
- package/dist-ksadk/assets/stateDiagram-v2-BHNVJYJU-DdnBxj5o.js +0 -1
- package/dist-ksadk/assets/treeView-BLDUP644-BVT3-ekB.js +0 -1
- package/dist-ksadk/assets/treemap-LRROVOQU-DwsRqHk_.js +0 -1
- package/dist-ksadk/assets/wardley-L42UT6IY-Btn2OWZX.js +0 -1
- package/dist-lib/utils/run-state.d.ts +0 -3
- package/dist-lib/utils/run-state.d.ts.map +0 -1
package/dist-lib/runtime.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { i as e, t } from "./capabilities-CiyyeRQ9.js";
|
|
2
|
-
import { C as n, D as r, E as i, O as a, T as o, _ as s, b as c, c as l, f as u, g as d, h as f, k as p, l as m, m as h, n as g, o as _, p as v, r as y, s as b, t as ee, u as te, v as x, w as S, y as C } from "./WorkspacePanelContainer-
|
|
2
|
+
import { C as n, D as r, E as i, O as a, T as o, _ as s, b as c, c as l, f as u, g as d, h as f, k as p, l as m, m as h, n as g, o as _, p as v, r as y, s as b, t as ee, u as te, v as x, w as S, y as C } from "./WorkspacePanelContainer-fvYVV4lp.js";
|
|
3
3
|
import { t as w } from "./artifact-BfFsPe5A.js";
|
|
4
4
|
import { X as T } from "lucide-react";
|
|
5
5
|
import { Fragment as ne, jsx as E, jsxs as D } from "react/jsx-runtime";
|
|
@@ -314,16 +314,16 @@ var z = P()((e) => ({
|
|
|
314
314
|
return delete n[t], { eventCache: n };
|
|
315
315
|
})
|
|
316
316
|
})), B = .28;
|
|
317
|
-
function
|
|
317
|
+
function ge(e, t = 768) {
|
|
318
318
|
return Number(e) <= t;
|
|
319
319
|
}
|
|
320
|
-
function
|
|
320
|
+
function _e({ isMobile: e, desktopSidebarOpen: t, mobileSidebarOpen: n }) {
|
|
321
321
|
return {
|
|
322
322
|
desktopSidebarVisible: !e && !!t,
|
|
323
323
|
mobileDrawerVisible: !!(e && n)
|
|
324
324
|
};
|
|
325
325
|
}
|
|
326
|
-
function
|
|
326
|
+
function ve({ isMobile: e, viewportHeight: t, desktopMaxHeight: n = 160 }) {
|
|
327
327
|
if (!e) return n;
|
|
328
328
|
let r = Number(t);
|
|
329
329
|
if (!Number.isFinite(r) || r <= 0) return n;
|
|
@@ -332,33 +332,33 @@ function _e({ isMobile: e, viewportHeight: t, desktopMaxHeight: n = 160 }) {
|
|
|
332
332
|
}
|
|
333
333
|
//#endregion
|
|
334
334
|
//#region src/utils/session.js
|
|
335
|
-
var
|
|
336
|
-
function
|
|
335
|
+
var ye = "ksadk:webui:selected-session:";
|
|
336
|
+
function be(e) {
|
|
337
337
|
return String(e || "").trim() || "default-agent";
|
|
338
338
|
}
|
|
339
|
-
function
|
|
339
|
+
function xe(e) {
|
|
340
340
|
if (e && typeof e.getItem == "function") return e;
|
|
341
341
|
try {
|
|
342
342
|
if (typeof window < "u" && window.localStorage) return window.localStorage;
|
|
343
343
|
} catch {}
|
|
344
344
|
return null;
|
|
345
345
|
}
|
|
346
|
-
function
|
|
347
|
-
return `${
|
|
346
|
+
function Se(e) {
|
|
347
|
+
return `${ye}${be(e)}`;
|
|
348
348
|
}
|
|
349
|
-
function
|
|
350
|
-
let n =
|
|
349
|
+
function Ce(e, t) {
|
|
350
|
+
let n = xe(t);
|
|
351
351
|
if (!n) return null;
|
|
352
352
|
try {
|
|
353
|
-
return String(n.getItem(
|
|
353
|
+
return String(n.getItem(Se(e)) || "").trim() || null;
|
|
354
354
|
} catch {
|
|
355
355
|
return null;
|
|
356
356
|
}
|
|
357
357
|
}
|
|
358
|
-
function
|
|
359
|
-
let r =
|
|
358
|
+
function we(e, t, n) {
|
|
359
|
+
let r = xe(n);
|
|
360
360
|
if (!r) return;
|
|
361
|
-
let i =
|
|
361
|
+
let i = Se(e), a = String(t || "").trim();
|
|
362
362
|
try {
|
|
363
363
|
if (a) {
|
|
364
364
|
r.setItem(i, a);
|
|
@@ -367,7 +367,7 @@ function Ce(e, t, n) {
|
|
|
367
367
|
r.removeItem(i);
|
|
368
368
|
} catch {}
|
|
369
369
|
}
|
|
370
|
-
function
|
|
370
|
+
function Te(e, t) {
|
|
371
371
|
if (!Array.isArray(e) || e.length === 0) return null;
|
|
372
372
|
let n = String(t || "").trim();
|
|
373
373
|
if (n && e.some((e) => String(e?.SessionId || "").trim() === n)) return n;
|
|
@@ -379,66 +379,66 @@ function we(e, t) {
|
|
|
379
379
|
}
|
|
380
380
|
//#endregion
|
|
381
381
|
//#region src/utils/native-platform.js
|
|
382
|
-
var
|
|
383
|
-
function Ee(e) {
|
|
384
|
-
return String(e || "").trim().toLowerCase();
|
|
385
|
-
}
|
|
382
|
+
var Ee = new Map([["openclaw", "OpenClaw"], ["hermes", "Hermes"]]);
|
|
386
383
|
function De(e) {
|
|
387
384
|
return String(e || "").trim().toLowerCase();
|
|
388
385
|
}
|
|
389
386
|
function Oe(e) {
|
|
387
|
+
return String(e || "").trim().toLowerCase();
|
|
388
|
+
}
|
|
389
|
+
function ke(e) {
|
|
390
390
|
try {
|
|
391
391
|
return new URL("/", e).toString();
|
|
392
392
|
} catch {
|
|
393
393
|
return "/";
|
|
394
394
|
}
|
|
395
395
|
}
|
|
396
|
-
function
|
|
397
|
-
let i =
|
|
396
|
+
function Ae({ capability: e, agentFramework: t, accessMode: n, origin: r }) {
|
|
397
|
+
let i = De(n);
|
|
398
398
|
if (i !== "owner" && i !== "private" || !e?.Enabled) return null;
|
|
399
|
-
let a =
|
|
399
|
+
let a = Ee.get(Oe(t)) || "运行时";
|
|
400
400
|
return {
|
|
401
|
-
href: typeof e.Href == "string" && e.Href ? new URL(e.Href,
|
|
401
|
+
href: typeof e.Href == "string" && e.Href ? new URL(e.Href, ke(r)).toString() : ke(r),
|
|
402
402
|
label: typeof e.Label == "string" && e.Label ? e.Label : "管理平台",
|
|
403
403
|
title: `打开 ${a} 原生管理平台`
|
|
404
404
|
};
|
|
405
405
|
}
|
|
406
406
|
//#endregion
|
|
407
407
|
//#region src/utils/model-options.js
|
|
408
|
-
var
|
|
408
|
+
var je = new Set([
|
|
409
409
|
"auto",
|
|
410
410
|
"enabled",
|
|
411
411
|
"disabled"
|
|
412
412
|
]);
|
|
413
|
-
function
|
|
413
|
+
function Me(e) {
|
|
414
414
|
let t = String(e || "").trim().toLowerCase();
|
|
415
|
-
return
|
|
415
|
+
return je.has(t) ? t : "auto";
|
|
416
416
|
}
|
|
417
|
-
function
|
|
418
|
-
let t =
|
|
417
|
+
function Ne(e) {
|
|
418
|
+
let t = Me(e);
|
|
419
419
|
if (t === "disabled") return { thinking: { type: "disabled" } };
|
|
420
420
|
if (t === "enabled") return { thinking: { type: "enabled" } };
|
|
421
421
|
}
|
|
422
422
|
//#endregion
|
|
423
423
|
//#region src/hooks/useResponsiveViewport.ts
|
|
424
|
-
function
|
|
424
|
+
function Pe() {
|
|
425
425
|
return typeof window > "u" ? 900 : Math.round(window.visualViewport?.height || window.innerHeight || 900);
|
|
426
426
|
}
|
|
427
|
-
function
|
|
427
|
+
function V() {
|
|
428
428
|
return typeof window > "u" ? {
|
|
429
429
|
isMobile: !1,
|
|
430
430
|
viewportHeight: 900
|
|
431
431
|
} : {
|
|
432
|
-
isMobile:
|
|
433
|
-
viewportHeight:
|
|
432
|
+
isMobile: ge(window.innerWidth, 768),
|
|
433
|
+
viewportHeight: Pe()
|
|
434
434
|
};
|
|
435
435
|
}
|
|
436
|
-
function
|
|
437
|
-
let [e, t] = ae(() =>
|
|
436
|
+
function Fe() {
|
|
437
|
+
let [e, t] = ae(() => V());
|
|
438
438
|
return j(() => {
|
|
439
439
|
if (typeof window > "u") return;
|
|
440
440
|
let e = window.matchMedia("(max-width: 768px)"), n = () => {
|
|
441
|
-
t(
|
|
441
|
+
t(V());
|
|
442
442
|
};
|
|
443
443
|
n();
|
|
444
444
|
let r = typeof e.addEventListener == "function" ? (e.addEventListener("change", n), () => e.removeEventListener("change", n)) : (e.addListener(n), () => e.removeListener(n));
|
|
@@ -449,76 +449,76 @@ function Pe() {
|
|
|
449
449
|
}
|
|
450
450
|
//#endregion
|
|
451
451
|
//#region src/api/client.ts
|
|
452
|
-
var
|
|
452
|
+
var H = class extends Error {
|
|
453
453
|
code;
|
|
454
454
|
detail;
|
|
455
455
|
constructor(e, t, n) {
|
|
456
456
|
super(t), this.name = "ApiError", this.code = e, this.detail = n;
|
|
457
457
|
}
|
|
458
|
-
},
|
|
458
|
+
}, U = class extends Error {
|
|
459
459
|
constructor(e = "请求已取消") {
|
|
460
460
|
super(e), this.name = "CancelledError";
|
|
461
461
|
}
|
|
462
|
-
},
|
|
463
|
-
async function
|
|
462
|
+
}, W = "/agentengine/api/v1";
|
|
463
|
+
async function Ie(e) {
|
|
464
464
|
let t;
|
|
465
465
|
try {
|
|
466
466
|
t = await e.json();
|
|
467
467
|
} catch {
|
|
468
|
-
throw new
|
|
468
|
+
throw new H(-2, "响应格式异常");
|
|
469
469
|
}
|
|
470
|
-
if (!e.ok) throw new
|
|
471
|
-
if (t?.Code !== void 0 && t.Code !== 0) throw new
|
|
470
|
+
if (!e.ok) throw new H(e.status, t?.Message || `HTTP ${e.status}`, t);
|
|
471
|
+
if (t?.Code !== void 0 && t.Code !== 0) throw new H(t.Code, t.Message || "请求失败", t);
|
|
472
472
|
return t.Data;
|
|
473
473
|
}
|
|
474
|
-
function
|
|
475
|
-
throw e instanceof DOMException && e.name === "AbortError" ? new
|
|
474
|
+
function G(e) {
|
|
475
|
+
throw e instanceof DOMException && e.name === "AbortError" ? new U() : e;
|
|
476
476
|
}
|
|
477
|
-
async function
|
|
477
|
+
async function K(e, t, n) {
|
|
478
478
|
let r;
|
|
479
479
|
try {
|
|
480
|
-
r = await fetch(`${
|
|
480
|
+
r = await fetch(`${W}/${e}`, {
|
|
481
481
|
method: "POST",
|
|
482
482
|
headers: { "Content-Type": "application/json" },
|
|
483
483
|
body: JSON.stringify(t),
|
|
484
484
|
signal: n?.signal
|
|
485
485
|
});
|
|
486
486
|
} catch (e) {
|
|
487
|
-
throw
|
|
487
|
+
throw G(e);
|
|
488
488
|
}
|
|
489
|
-
return
|
|
489
|
+
return Ie(r);
|
|
490
490
|
}
|
|
491
|
-
async function
|
|
491
|
+
async function Le(e, t, n) {
|
|
492
492
|
let r;
|
|
493
493
|
try {
|
|
494
|
-
r = await fetch(`${
|
|
494
|
+
r = await fetch(`${W}/${e}`, {
|
|
495
495
|
method: "POST",
|
|
496
496
|
body: t,
|
|
497
497
|
signal: n?.signal
|
|
498
498
|
});
|
|
499
499
|
} catch (e) {
|
|
500
|
-
throw
|
|
500
|
+
throw G(e);
|
|
501
501
|
}
|
|
502
|
-
return
|
|
502
|
+
return Ie(r);
|
|
503
503
|
}
|
|
504
|
-
async function
|
|
505
|
-
let r = new URLSearchParams(t).toString(), i = r ? `${
|
|
504
|
+
async function Re(e, t, n) {
|
|
505
|
+
let r = new URLSearchParams(t).toString(), i = r ? `${W}/${e}?${r}` : `${W}/${e}`, a;
|
|
506
506
|
try {
|
|
507
507
|
a = await fetch(i, { signal: n?.signal });
|
|
508
508
|
} catch (e) {
|
|
509
|
-
throw
|
|
509
|
+
throw G(e);
|
|
510
510
|
}
|
|
511
|
-
if (!a.ok) throw new
|
|
511
|
+
if (!a.ok) throw new H(a.status, `资源获取失败: ${a.statusText}`);
|
|
512
512
|
try {
|
|
513
513
|
return n?.asText ? await a.text() : await a.blob();
|
|
514
514
|
} catch {
|
|
515
|
-
throw new
|
|
515
|
+
throw new H(-3, "文件读取失败");
|
|
516
516
|
}
|
|
517
517
|
}
|
|
518
|
-
async function
|
|
518
|
+
async function ze(e, t, n) {
|
|
519
519
|
let r;
|
|
520
520
|
try {
|
|
521
|
-
r = await fetch(`${
|
|
521
|
+
r = await fetch(`${W}/${e}`, {
|
|
522
522
|
method: "POST",
|
|
523
523
|
headers: {
|
|
524
524
|
"Content-Type": "application/json",
|
|
@@ -528,46 +528,46 @@ async function Re(e, t, n) {
|
|
|
528
528
|
signal: n?.signal
|
|
529
529
|
});
|
|
530
530
|
} catch (e) {
|
|
531
|
-
throw
|
|
531
|
+
throw G(e);
|
|
532
532
|
}
|
|
533
|
-
if (!r.ok) throw new
|
|
534
|
-
if (!r.body) throw new
|
|
533
|
+
if (!r.ok) throw new H(r.status, `流式请求失败: ${r.statusText}`);
|
|
534
|
+
if (!r.body) throw new H(-1, "无法获取响应流");
|
|
535
535
|
return r.body;
|
|
536
536
|
}
|
|
537
|
-
async function
|
|
538
|
-
let r = new URLSearchParams(t).toString(), i = r ? `${
|
|
537
|
+
async function Be(e, t, n) {
|
|
538
|
+
let r = new URLSearchParams(t).toString(), i = r ? `${W}/${e}?${r}` : `${W}/${e}`, a;
|
|
539
539
|
try {
|
|
540
540
|
a = await fetch(i, {
|
|
541
541
|
headers: { Accept: "text/event-stream" },
|
|
542
542
|
signal: n?.signal
|
|
543
543
|
});
|
|
544
544
|
} catch (e) {
|
|
545
|
-
throw
|
|
545
|
+
throw G(e);
|
|
546
546
|
}
|
|
547
|
-
if (!a.ok) throw new
|
|
548
|
-
if (!a.body) throw new
|
|
547
|
+
if (!a.ok) throw new H(a.status, `流式订阅失败: ${a.statusText}`);
|
|
548
|
+
if (!a.body) throw new H(-1, "无法获取响应流");
|
|
549
549
|
return a.body;
|
|
550
550
|
}
|
|
551
551
|
//#endregion
|
|
552
552
|
//#region src/api/bootstrap.ts
|
|
553
|
-
async function
|
|
554
|
-
return
|
|
553
|
+
async function Ve() {
|
|
554
|
+
return K("GetAgentUiBootstrap", {});
|
|
555
555
|
}
|
|
556
556
|
//#endregion
|
|
557
557
|
//#region src/api/model.ts
|
|
558
|
-
async function
|
|
559
|
-
return
|
|
558
|
+
async function He(e) {
|
|
559
|
+
return K("ListAgentModels", { AgentId: e });
|
|
560
560
|
}
|
|
561
561
|
//#endregion
|
|
562
562
|
//#region src/hooks/useBootstrap.ts
|
|
563
|
-
function
|
|
563
|
+
function Ue(e) {
|
|
564
564
|
if (!Array.isArray(e)) return ["responses", "chat_completions"];
|
|
565
565
|
let t = e.filter((e) => e === "responses" || e === "chat_completions");
|
|
566
566
|
return t.length > 0 ? t : ["responses", "chat_completions"];
|
|
567
567
|
}
|
|
568
|
-
async function
|
|
568
|
+
async function We(e) {
|
|
569
569
|
try {
|
|
570
|
-
let t = await
|
|
570
|
+
let t = await He(e), n = t?.Models;
|
|
571
571
|
Array.isArray(n) && I.getState().upsertModels(n);
|
|
572
572
|
let r = t;
|
|
573
573
|
r?.Current && !I.getState().selectedModel && I.getState().setSelectedModel(String(r.Current)), r?.Source && I.getState().setModelSource(String(r.Source));
|
|
@@ -577,11 +577,11 @@ async function Ue(e) {
|
|
|
577
577
|
I.getState().setModelCatalogLoaded(!0);
|
|
578
578
|
}
|
|
579
579
|
}
|
|
580
|
-
function
|
|
580
|
+
function Ge(n) {
|
|
581
581
|
j(() => {
|
|
582
582
|
(async () => {
|
|
583
583
|
try {
|
|
584
|
-
let r = await
|
|
584
|
+
let r = await Ve(), i = r, a = i?.Agent, o = String(a?.AgentId || "default-agent");
|
|
585
585
|
if (F.getState().setAgentId(o), a?.Name) {
|
|
586
586
|
let e = String(a.Name);
|
|
587
587
|
F.getState().setAgentName(e), document.title = e;
|
|
@@ -589,31 +589,31 @@ function We(n) {
|
|
|
589
589
|
let s = String(a?.Framework || "").trim().toLowerCase();
|
|
590
590
|
F.getState().setAgentFramework(s);
|
|
591
591
|
let c = e(r);
|
|
592
|
-
F.getState().setCapabilities(c), F.getState().setApiFormats(
|
|
592
|
+
F.getState().setCapabilities(c), F.getState().setApiFormats(Ue(c.HostedChat.ApiFormats)), F.getState().setAccessMode(String(i?.AccessMode || "Owner"));
|
|
593
593
|
let l = c.WorkspaceFiles && i?.WorkspaceFiles ? i.WorkspaceFiles : null;
|
|
594
|
-
F.getState().setWorkspaceFiles(l), l || _.getState().setWorkspacePanelOpen(!1), t(c) && n.fetchSessions(o,
|
|
594
|
+
F.getState().setWorkspaceFiles(l), l || _.getState().setWorkspacePanelOpen(!1), t(c) && n.fetchSessions(o, Ce(o));
|
|
595
595
|
let u = i?.Model;
|
|
596
|
-
u?.id && (I.getState().setSelectedModel(u.id), I.getState().upsertModels([u]), I.getState().setModelSource(u.source || "")),
|
|
596
|
+
u?.id && (I.getState().setSelectedModel(u.id), I.getState().upsertModels([u]), I.getState().setModelSource(u.source || "")), We(o);
|
|
597
597
|
} catch (t) {
|
|
598
598
|
console.error("Failed to fetch bootstrap:", t), F.getState().setCapabilities(e({ Data: {
|
|
599
599
|
Agent: { Framework: "" },
|
|
600
600
|
ApiFormats: ["responses", "chat_completions"],
|
|
601
601
|
Capabilities: {}
|
|
602
|
-
} })), n.fetchSessions("default-agent",
|
|
602
|
+
} })), n.fetchSessions("default-agent", Ce("default-agent")), We("default-agent");
|
|
603
603
|
}
|
|
604
604
|
})();
|
|
605
605
|
}, []);
|
|
606
606
|
}
|
|
607
607
|
//#endregion
|
|
608
608
|
//#region src/stores/message.ts
|
|
609
|
-
var
|
|
609
|
+
var q = P()((e) => ({
|
|
610
610
|
messages: [],
|
|
611
611
|
setMessages: (t) => e({ messages: t }),
|
|
612
612
|
patchMessages: (t) => e((e) => ({ messages: t(e.messages) }))
|
|
613
613
|
}));
|
|
614
614
|
//#endregion
|
|
615
615
|
//#region src/utils/responses-stream.js
|
|
616
|
-
function
|
|
616
|
+
function Ke() {
|
|
617
617
|
return {
|
|
618
618
|
toolNames: /* @__PURE__ */ new Map(),
|
|
619
619
|
toolArguments: /* @__PURE__ */ new Map(),
|
|
@@ -621,55 +621,55 @@ function Ge() {
|
|
|
621
621
|
currentResponseId: ""
|
|
622
622
|
};
|
|
623
623
|
}
|
|
624
|
-
function
|
|
624
|
+
function qe(e) {
|
|
625
625
|
return typeof e == "string" ? e : Array.isArray(e) ? e.map((e) => typeof e == "string" ? e : e && typeof e == "object" && typeof e.text == "string" ? e.text : "").join("") : e && typeof e == "object" && typeof e.text == "string" ? e.text : "";
|
|
626
626
|
}
|
|
627
|
-
function
|
|
627
|
+
function J(e) {
|
|
628
628
|
return e == null ? "" : typeof e == "string" ? e : typeof e == "object" ? JSON.stringify(e, null, 2) : String(e);
|
|
629
629
|
}
|
|
630
|
-
function
|
|
630
|
+
function Y(...e) {
|
|
631
631
|
for (let t of e) {
|
|
632
|
-
let e =
|
|
632
|
+
let e = qe(t);
|
|
633
633
|
if (e) return e;
|
|
634
634
|
}
|
|
635
635
|
return "";
|
|
636
636
|
}
|
|
637
|
-
function
|
|
637
|
+
function Je(e, t) {
|
|
638
638
|
return String(e?.id || e?.item_id || e?.call_id || t?.item_id || t?.call_id || t?.output_index || "");
|
|
639
639
|
}
|
|
640
|
-
function
|
|
640
|
+
function Ye(e, t, n, r, i) {
|
|
641
641
|
t && (e.toolNames.set(t, r), e.toolArguments.set(t, i));
|
|
642
642
|
let a = String(n?.call_id || "");
|
|
643
643
|
a && (e.callIds.set(a, t || r), e.toolNames.set(a, r), e.toolArguments.set(a, i));
|
|
644
644
|
}
|
|
645
|
-
function
|
|
645
|
+
function Xe(e, t, n, r = "tool") {
|
|
646
646
|
let i = String(n?.call_id || "");
|
|
647
647
|
return String(n?.name || n?.tool_name || (t ? e.toolNames.get(t) : "") || (i ? e.toolNames.get(i) : "") || r);
|
|
648
648
|
}
|
|
649
|
-
function
|
|
649
|
+
function Ze(e) {
|
|
650
650
|
if (!e || typeof e != "object") return "";
|
|
651
|
-
let t =
|
|
652
|
-
return
|
|
651
|
+
let t = qe(e.content);
|
|
652
|
+
return Y(e.output_text, e.text, e.summary_text, e.summary, e.delta, t);
|
|
653
653
|
}
|
|
654
|
-
function
|
|
655
|
-
let t = e?.response && typeof e.response == "object" ? e.response : e, n =
|
|
654
|
+
function Qe(e) {
|
|
655
|
+
let t = e?.response && typeof e.response == "object" ? e.response : e, n = Y(t?.output_text, t?.text);
|
|
656
656
|
if (n) return n;
|
|
657
657
|
let r = Array.isArray(t?.output) ? t.output : [];
|
|
658
658
|
for (let e of r) {
|
|
659
|
-
let t =
|
|
659
|
+
let t = Ze(e);
|
|
660
660
|
if (t) return t;
|
|
661
661
|
}
|
|
662
662
|
return "";
|
|
663
663
|
}
|
|
664
|
-
function
|
|
664
|
+
function $e(e) {
|
|
665
665
|
let t = e?.response && typeof e.response == "object" ? e.response : e;
|
|
666
666
|
return Array.isArray(t?.output) ? t.output : [];
|
|
667
667
|
}
|
|
668
|
-
function
|
|
669
|
-
let r = e?.item || e?.output_item || e || {}, i = String(r.type || "").trim(), a =
|
|
668
|
+
function et({ data: e, state: t, status: n }) {
|
|
669
|
+
let r = e?.item || e?.output_item || e || {}, i = String(r.type || "").trim(), a = Je(r, e);
|
|
670
670
|
if (i === "function_call") {
|
|
671
|
-
let e =
|
|
672
|
-
return
|
|
671
|
+
let e = Xe(t, a, r), i = J(r.arguments ?? r.args ?? r.input);
|
|
672
|
+
return Ye(t, a, r, e, i), [{
|
|
673
673
|
type: "tool_upsert",
|
|
674
674
|
name: e,
|
|
675
675
|
args: i,
|
|
@@ -678,27 +678,27 @@ function $e({ data: e, state: t, status: n }) {
|
|
|
678
678
|
}
|
|
679
679
|
if (i === "function_call_output") return [{
|
|
680
680
|
type: "tool_result",
|
|
681
|
-
name:
|
|
682
|
-
output:
|
|
681
|
+
name: Xe(t, a, r),
|
|
682
|
+
output: J(r.output ?? r.result ?? r.content)
|
|
683
683
|
}];
|
|
684
684
|
if (i === "mcp_approval_request") return [{
|
|
685
685
|
type: "tool_upsert",
|
|
686
686
|
name: String(r.name || "approval"),
|
|
687
|
-
args:
|
|
687
|
+
args: J(r.arguments ?? r.args),
|
|
688
688
|
status: "paused",
|
|
689
689
|
approvalRequestId: String(r.id || r.approval_request_id || ""),
|
|
690
690
|
previousResponseId: String(e?.response_id || t.currentResponseId || ""),
|
|
691
691
|
serverLabel: String(r.server_label || "")
|
|
692
692
|
}];
|
|
693
693
|
if (i === "reasoning" || i === "reasoning_summary" || i === "reasoning_summary_text") {
|
|
694
|
-
let e =
|
|
694
|
+
let e = Ze(r);
|
|
695
695
|
return e ? [{
|
|
696
696
|
type: "reasoning_delta",
|
|
697
697
|
text: e
|
|
698
698
|
}] : [];
|
|
699
699
|
}
|
|
700
700
|
if (i === "message") {
|
|
701
|
-
let e =
|
|
701
|
+
let e = Ze(r);
|
|
702
702
|
return e ? [{
|
|
703
703
|
type: n === "completed" ? "text_final" : "text_delta",
|
|
704
704
|
text: e
|
|
@@ -706,31 +706,31 @@ function $e({ data: e, state: t, status: n }) {
|
|
|
706
706
|
}
|
|
707
707
|
return [];
|
|
708
708
|
}
|
|
709
|
-
function
|
|
709
|
+
function tt({ eventName: e, data: t, state: n }) {
|
|
710
710
|
let r = String(t?.type || e || "").trim(), i = String(t?.id || t?.response?.id || t?.response_id || "");
|
|
711
711
|
if (i.startsWith("resp_") && (n.currentResponseId = i), r === "response.tool_call") return [{
|
|
712
712
|
type: "tool_upsert",
|
|
713
713
|
name: String(t?.name || t?.tool_name || "tool"),
|
|
714
|
-
args:
|
|
714
|
+
args: J(t?.args ?? t?.arguments),
|
|
715
715
|
status: "running"
|
|
716
716
|
}];
|
|
717
717
|
if (r === "response.tool_result" || r === "response.ksadk.tool_result") return [{
|
|
718
718
|
type: "tool_result",
|
|
719
719
|
name: String(t?.name || t?.tool_name || "tool"),
|
|
720
|
-
output:
|
|
720
|
+
output: J(t?.output ?? t?.result)
|
|
721
721
|
}];
|
|
722
|
-
if (r === "response.output_item.added") return
|
|
722
|
+
if (r === "response.output_item.added") return et({
|
|
723
723
|
data: t,
|
|
724
724
|
state: n,
|
|
725
725
|
status: "running"
|
|
726
726
|
});
|
|
727
|
-
if (r === "response.output_item.done") return
|
|
727
|
+
if (r === "response.output_item.done") return et({
|
|
728
728
|
data: t,
|
|
729
729
|
state: n,
|
|
730
730
|
status: "completed"
|
|
731
731
|
});
|
|
732
732
|
if (r === "response.function_call_arguments.delta") {
|
|
733
|
-
let e = String(t?.item_id || t?.call_id || ""), r =
|
|
733
|
+
let e = String(t?.item_id || t?.call_id || ""), r = Xe(n, e, t), i = `${n.toolArguments.get(e) || ""}${String(t?.delta || "")}`;
|
|
734
734
|
return n.toolArguments.set(e, i), [{
|
|
735
735
|
type: "tool_upsert",
|
|
736
736
|
name: r,
|
|
@@ -739,7 +739,7 @@ function et({ eventName: e, data: t, state: n }) {
|
|
|
739
739
|
}];
|
|
740
740
|
}
|
|
741
741
|
if (r === "response.function_call_arguments.done") {
|
|
742
|
-
let e = String(t?.item_id || t?.call_id || ""), r =
|
|
742
|
+
let e = String(t?.item_id || t?.call_id || ""), r = Xe(n, e, t), i = J(t?.arguments ?? n.toolArguments.get(e));
|
|
743
743
|
return n.toolArguments.set(e, i), [{
|
|
744
744
|
type: "tool_upsert",
|
|
745
745
|
name: r,
|
|
@@ -748,28 +748,28 @@ function et({ eventName: e, data: t, state: n }) {
|
|
|
748
748
|
}];
|
|
749
749
|
}
|
|
750
750
|
if (r === "response.reasoning.delta" || r === "response.reasoning_text.delta" || r === "response.reasoning_summary.delta" || r === "response.reasoning_summary_text.delta") {
|
|
751
|
-
let e =
|
|
751
|
+
let e = Y(t?.delta, t?.text);
|
|
752
752
|
return e ? [{
|
|
753
753
|
type: "reasoning_delta",
|
|
754
754
|
text: e
|
|
755
755
|
}] : [];
|
|
756
756
|
}
|
|
757
757
|
if (r === "response.output_text.delta") {
|
|
758
|
-
let e =
|
|
758
|
+
let e = Y(t?.delta, t?.text);
|
|
759
759
|
return e ? [{
|
|
760
760
|
type: "text_delta",
|
|
761
761
|
text: e
|
|
762
762
|
}] : [];
|
|
763
763
|
}
|
|
764
764
|
if (r === "response.output_text.done") {
|
|
765
|
-
let e =
|
|
765
|
+
let e = Y(t?.text, t?.delta);
|
|
766
766
|
return e ? [{
|
|
767
767
|
type: "text_final",
|
|
768
768
|
text: e
|
|
769
769
|
}] : [];
|
|
770
770
|
}
|
|
771
771
|
if (r === "response.content_part.delta") {
|
|
772
|
-
let e = String(t?.part?.type || t?.delta?.type || t?.content_type || ""), n =
|
|
772
|
+
let e = String(t?.part?.type || t?.delta?.type || t?.content_type || ""), n = Y(t?.delta?.text, t?.delta, t?.text);
|
|
773
773
|
return n ? e.includes("reasoning") ? [{
|
|
774
774
|
type: "reasoning_delta",
|
|
775
775
|
text: n
|
|
@@ -779,7 +779,7 @@ function et({ eventName: e, data: t, state: n }) {
|
|
|
779
779
|
}] : [];
|
|
780
780
|
}
|
|
781
781
|
if (r === "response.completed") {
|
|
782
|
-
let e =
|
|
782
|
+
let e = Qe(t), r = $e(t).flatMap((e) => et({
|
|
783
783
|
data: {
|
|
784
784
|
...t,
|
|
785
785
|
item: e
|
|
@@ -830,13 +830,13 @@ function et({ eventName: e, data: t, state: n }) {
|
|
|
830
830
|
}
|
|
831
831
|
//#endregion
|
|
832
832
|
//#region src/core/stream/responses-protocol.ts
|
|
833
|
-
var
|
|
833
|
+
var nt = class {
|
|
834
834
|
id = "responses";
|
|
835
835
|
createState() {
|
|
836
|
-
return
|
|
836
|
+
return Ke();
|
|
837
837
|
}
|
|
838
838
|
parse(e, t) {
|
|
839
|
-
return
|
|
839
|
+
return tt({
|
|
840
840
|
eventName: e.eventName,
|
|
841
841
|
data: e.data,
|
|
842
842
|
state: t
|
|
@@ -858,23 +858,23 @@ var tt = class {
|
|
|
858
858
|
};
|
|
859
859
|
//#endregion
|
|
860
860
|
//#region src/utils/stream-parsing.ts
|
|
861
|
-
function
|
|
861
|
+
function rt(e) {
|
|
862
862
|
return typeof e == "string" ? e : Array.isArray(e) ? e.map((e) => typeof e == "string" ? e : e && typeof e == "object" && "text" in e && typeof e.text == "string" ? e.text : "").join("") : "";
|
|
863
863
|
}
|
|
864
|
-
function
|
|
864
|
+
function it(e) {
|
|
865
865
|
return e && typeof e == "object" ? e : {};
|
|
866
866
|
}
|
|
867
|
-
function
|
|
868
|
-
let t =
|
|
867
|
+
function at(e) {
|
|
868
|
+
let t = it(e).choices, n = it(Array.isArray(t) ? t[0] : null), r = it(n.delta), i = it(n.message);
|
|
869
869
|
return {
|
|
870
|
-
content:
|
|
871
|
-
reasoning:
|
|
872
|
-
finalText:
|
|
870
|
+
content: rt(r.content),
|
|
871
|
+
reasoning: rt(r.reasoning_content),
|
|
872
|
+
finalText: rt(i.content)
|
|
873
873
|
};
|
|
874
874
|
}
|
|
875
875
|
//#endregion
|
|
876
876
|
//#region src/core/stream/chat-completions-protocol.ts
|
|
877
|
-
var
|
|
877
|
+
var ot = class {
|
|
878
878
|
id = "chat_completions";
|
|
879
879
|
createState() {
|
|
880
880
|
return {};
|
|
@@ -882,7 +882,7 @@ var at = class {
|
|
|
882
882
|
parse(e) {
|
|
883
883
|
let t = e.data;
|
|
884
884
|
if (typeof t != "object" || !t) return [];
|
|
885
|
-
let n =
|
|
885
|
+
let n = at(t), r = [];
|
|
886
886
|
return n.reasoning && r.push({
|
|
887
887
|
type: "reasoning_delta",
|
|
888
888
|
text: n.reasoning
|
|
@@ -894,14 +894,14 @@ var at = class {
|
|
|
894
894
|
text: n.finalText
|
|
895
895
|
}), r;
|
|
896
896
|
}
|
|
897
|
-
},
|
|
898
|
-
|
|
899
|
-
function
|
|
900
|
-
return
|
|
897
|
+
}, st = /* @__PURE__ */ new Map();
|
|
898
|
+
st.set("responses", new nt()), st.set("chat_completions", new ot());
|
|
899
|
+
function ct(e) {
|
|
900
|
+
return st.get(e) || st.get("responses");
|
|
901
901
|
}
|
|
902
902
|
//#endregion
|
|
903
903
|
//#region src/utils/stream-control.js
|
|
904
|
-
function
|
|
904
|
+
function lt(e = []) {
|
|
905
905
|
return e.some((e) => {
|
|
906
906
|
if (e?.type !== "terminal") return !1;
|
|
907
907
|
let t = String(e.status || "").toLowerCase();
|
|
@@ -910,7 +910,7 @@ function ct(e = []) {
|
|
|
910
910
|
}
|
|
911
911
|
//#endregion
|
|
912
912
|
//#region src/core/transport/sse-parser.ts
|
|
913
|
-
function
|
|
913
|
+
function ut(e) {
|
|
914
914
|
let t = [], n = e.trim();
|
|
915
915
|
if (!n) return t;
|
|
916
916
|
let r = n.split("\n");
|
|
@@ -940,7 +940,7 @@ function lt(e) {
|
|
|
940
940
|
}
|
|
941
941
|
return t;
|
|
942
942
|
}
|
|
943
|
-
function
|
|
943
|
+
function dt(e) {
|
|
944
944
|
let t = e.split("\n\n");
|
|
945
945
|
return {
|
|
946
946
|
chunks: t,
|
|
@@ -949,21 +949,21 @@ function ut(e) {
|
|
|
949
949
|
}
|
|
950
950
|
//#endregion
|
|
951
951
|
//#region src/utils/error.ts
|
|
952
|
-
function
|
|
952
|
+
function ft(e) {
|
|
953
953
|
return e instanceof Error ? e.message : String(e);
|
|
954
954
|
}
|
|
955
|
-
var
|
|
956
|
-
function
|
|
955
|
+
var pt = 1280;
|
|
956
|
+
function mt(e) {
|
|
957
957
|
let { apiFormats: t } = e;
|
|
958
958
|
return t.includes("responses") ? "responses" : t.includes("chat_completions") ? "chat_completions" : "responses";
|
|
959
959
|
}
|
|
960
|
-
function
|
|
961
|
-
let r = Math.min(
|
|
960
|
+
function ht(e, t, n) {
|
|
961
|
+
let r = Math.min(pt, Math.max(420, t - n - 360));
|
|
962
962
|
return Math.min(Math.max(e, 420), r);
|
|
963
963
|
}
|
|
964
964
|
//#endregion
|
|
965
965
|
//#region src/core/run/engine.ts
|
|
966
|
-
var
|
|
966
|
+
var gt = new Set([
|
|
967
967
|
"completed",
|
|
968
968
|
"failed",
|
|
969
969
|
"error",
|
|
@@ -973,12 +973,12 @@ var ht = new Set([
|
|
|
973
973
|
"interrupted",
|
|
974
974
|
"resume_failed"
|
|
975
975
|
]);
|
|
976
|
-
function
|
|
976
|
+
function _t(e) {
|
|
977
977
|
if (e.EventType !== "run_status") return null;
|
|
978
978
|
let t = String(e.Content?.status || "").trim().toLowerCase();
|
|
979
|
-
return
|
|
979
|
+
return gt.has(t) ? t : null;
|
|
980
980
|
}
|
|
981
|
-
function
|
|
981
|
+
function vt(e, t) {
|
|
982
982
|
let n = String(t?.type || e || "").trim();
|
|
983
983
|
if (n === "response.created") return {
|
|
984
984
|
phase: "运行已创建",
|
|
@@ -1024,11 +1024,11 @@ function _t(e, t) {
|
|
|
1024
1024
|
status: "failed"
|
|
1025
1025
|
} : null;
|
|
1026
1026
|
}
|
|
1027
|
-
function
|
|
1027
|
+
function yt() {
|
|
1028
1028
|
let e = globalThis.crypto;
|
|
1029
1029
|
return e && typeof e.randomUUID == "function" ? `run_${e.randomUUID()}` : `run_${Date.now()}_${Math.random().toString(16).slice(2)}`;
|
|
1030
1030
|
}
|
|
1031
|
-
var
|
|
1031
|
+
var bt = {
|
|
1032
1032
|
idle: [
|
|
1033
1033
|
"creating-session",
|
|
1034
1034
|
"uploading-files",
|
|
@@ -1066,7 +1066,7 @@ var yt = {
|
|
|
1066
1066
|
],
|
|
1067
1067
|
error: ["connecting", "idle"],
|
|
1068
1068
|
cancelled: ["idle"]
|
|
1069
|
-
},
|
|
1069
|
+
}, xt = class {
|
|
1070
1070
|
_stage = "idle";
|
|
1071
1071
|
listeners = /* @__PURE__ */ new Set();
|
|
1072
1072
|
abortController = null;
|
|
@@ -1100,7 +1100,7 @@ var yt = {
|
|
|
1100
1100
|
for (let e of this.listeners) e(t);
|
|
1101
1101
|
}
|
|
1102
1102
|
setStage(e) {
|
|
1103
|
-
let t =
|
|
1103
|
+
let t = bt[this._stage];
|
|
1104
1104
|
t && !t.includes(e) && console.warn(`[RunEngine] Invalid transition: ${this._stage} → ${e}`), this._stage = e, this.emit({
|
|
1105
1105
|
type: "stage_changed",
|
|
1106
1106
|
stage: e
|
|
@@ -1127,10 +1127,10 @@ var yt = {
|
|
|
1127
1127
|
status: "connecting",
|
|
1128
1128
|
countEvent: !1
|
|
1129
1129
|
});
|
|
1130
|
-
let a = t ? "responses" :
|
|
1130
|
+
let a = t ? "responses" : mt({
|
|
1131
1131
|
agentFramework: this.config.agentFramework,
|
|
1132
1132
|
apiFormats: this.config.apiFormats
|
|
1133
|
-
}), o =
|
|
1133
|
+
}), o = ct(a), s = o.createState(), c = yt();
|
|
1134
1134
|
L.getState().setCurrentRunId(c);
|
|
1135
1135
|
let l = this.buildRequestBody(n, a, t, e, i, c), u = await this.api.runAgent(l, { signal: this.abortController?.signal });
|
|
1136
1136
|
this.setStage("streaming"), this.emit({
|
|
@@ -1243,11 +1243,11 @@ var yt = {
|
|
|
1243
1243
|
let { value: e, done: n } = await r.read();
|
|
1244
1244
|
if (n) break;
|
|
1245
1245
|
a += i.decode(e, { stream: !0 });
|
|
1246
|
-
let { chunks: o, remainder: s } =
|
|
1246
|
+
let { chunks: o, remainder: s } = dt(a);
|
|
1247
1247
|
a = s;
|
|
1248
1248
|
for (let e of o) {
|
|
1249
1249
|
if (!e.trim()) continue;
|
|
1250
|
-
let n =
|
|
1250
|
+
let n = ut(e);
|
|
1251
1251
|
for (let e of n) e.eventName !== "__done__" && (this.emit({
|
|
1252
1252
|
type: "activity",
|
|
1253
1253
|
phase: "收到恢复事件",
|
|
@@ -1255,7 +1255,7 @@ var yt = {
|
|
|
1255
1255
|
}), this.emit({
|
|
1256
1256
|
type: "stream_event",
|
|
1257
1257
|
event: e.data
|
|
1258
|
-
}), t =
|
|
1258
|
+
}), t = _t(e.data) || t);
|
|
1259
1259
|
}
|
|
1260
1260
|
}
|
|
1261
1261
|
this.setStage("completing"), t === "cancelled" || t === "canceled" || t === "aborted" ? this.emit({
|
|
@@ -1294,7 +1294,7 @@ var yt = {
|
|
|
1294
1294
|
resumeCheckpoint(e) {
|
|
1295
1295
|
if (this._stage !== "idle") return !1;
|
|
1296
1296
|
this.abortController = new AbortController(), this.activeSessionId = e.sessionId;
|
|
1297
|
-
let t =
|
|
1297
|
+
let t = yt();
|
|
1298
1298
|
return L.getState().setCurrentRunId(t), (async () => {
|
|
1299
1299
|
try {
|
|
1300
1300
|
if (this.setStage("connecting"), this.emit({
|
|
@@ -1327,7 +1327,7 @@ var yt = {
|
|
|
1327
1327
|
checkpointId: e.checkpointId,
|
|
1328
1328
|
resumeAttemptId: e.resumeAttemptId,
|
|
1329
1329
|
invocationId: t
|
|
1330
|
-
}, { signal: this.abortController?.signal }), r =
|
|
1330
|
+
}, { signal: this.abortController?.signal }), r = ct("responses"), i = r.createState();
|
|
1331
1331
|
this.setStage("streaming"), this.emit({
|
|
1332
1332
|
type: "activity",
|
|
1333
1333
|
source: "restore",
|
|
@@ -1403,7 +1403,7 @@ var yt = {
|
|
|
1403
1403
|
} catch (e) {
|
|
1404
1404
|
this.emit({
|
|
1405
1405
|
type: "system_message",
|
|
1406
|
-
content: `【系统提示】图片 ${t.name} 读取失败,原因: ${
|
|
1406
|
+
content: `【系统提示】图片 ${t.name} 读取失败,原因: ${ft(e)}`
|
|
1407
1407
|
});
|
|
1408
1408
|
}
|
|
1409
1409
|
continue;
|
|
@@ -1420,7 +1420,7 @@ var yt = {
|
|
|
1420
1420
|
} catch (e) {
|
|
1421
1421
|
this.emit({
|
|
1422
1422
|
type: "system_message",
|
|
1423
|
-
content: `【系统提示】文件 ${t.name} 上传失败,原因: ${
|
|
1423
|
+
content: `【系统提示】文件 ${t.name} 上传失败,原因: ${ft(e)}`
|
|
1424
1424
|
});
|
|
1425
1425
|
}
|
|
1426
1426
|
}
|
|
@@ -1440,7 +1440,7 @@ var yt = {
|
|
|
1440
1440
|
ApiFormat: t,
|
|
1441
1441
|
Model: this.config.selectedModel || void 0,
|
|
1442
1442
|
ModelMetadata: this.config.selectedModelMetadata || void 0,
|
|
1443
|
-
ModelOptions: Me(
|
|
1443
|
+
ModelOptions: Ne(Me(this.config.thinkingMode))
|
|
1444
1444
|
};
|
|
1445
1445
|
if (n) o.ResponsesInput = r.responsesInput, o.PreviousResponseId = r.previousResponseId;
|
|
1446
1446
|
else {
|
|
@@ -1468,32 +1468,32 @@ var yt = {
|
|
|
1468
1468
|
type: "assistant_message_created",
|
|
1469
1469
|
messageId: r
|
|
1470
1470
|
})), o += a.decode(e, { stream: !0 });
|
|
1471
|
-
let { chunks: u, remainder: d } =
|
|
1471
|
+
let { chunks: u, remainder: d } = dt(o);
|
|
1472
1472
|
o = d;
|
|
1473
1473
|
for (let e of u) {
|
|
1474
1474
|
if (!e.trim()) continue;
|
|
1475
1475
|
if (this.isCompactionChunk(e)) {
|
|
1476
|
-
let t =
|
|
1476
|
+
let t = ut(e);
|
|
1477
1477
|
for (let e of t) e.eventName.startsWith("response.compaction") && this.upsertCompactionMessage({
|
|
1478
1478
|
...e.data,
|
|
1479
1479
|
phase: e.eventName.split(".").pop()
|
|
1480
1480
|
});
|
|
1481
1481
|
continue;
|
|
1482
1482
|
}
|
|
1483
|
-
let a =
|
|
1483
|
+
let a = ut(e), o = !1, c;
|
|
1484
1484
|
for (let e of a) {
|
|
1485
1485
|
if (e.eventName === "__done__") {
|
|
1486
1486
|
o = !0;
|
|
1487
1487
|
continue;
|
|
1488
1488
|
}
|
|
1489
|
-
let i =
|
|
1489
|
+
let i = vt(e.eventName, e.data);
|
|
1490
1490
|
i && this.emit({
|
|
1491
1491
|
type: "activity",
|
|
1492
1492
|
...i
|
|
1493
1493
|
});
|
|
1494
1494
|
let a = t.parse(e, n);
|
|
1495
1495
|
for (let e of a) this.dispatchAction(e, r);
|
|
1496
|
-
if (
|
|
1496
|
+
if (lt(a)) {
|
|
1497
1497
|
o = !0;
|
|
1498
1498
|
let e = a.find((e) => e.type === "terminal");
|
|
1499
1499
|
c = e && "status" in e ? String(e.status || "") : void 0;
|
|
@@ -1604,18 +1604,18 @@ var yt = {
|
|
|
1604
1604
|
phase: "failed"
|
|
1605
1605
|
}), null);
|
|
1606
1606
|
}
|
|
1607
|
-
},
|
|
1608
|
-
function
|
|
1607
|
+
}, St = [], Ct = [];
|
|
1608
|
+
function X(e) {
|
|
1609
1609
|
return typeof e == "string" ? e.trim() : "";
|
|
1610
1610
|
}
|
|
1611
|
-
function
|
|
1611
|
+
function wt(e) {
|
|
1612
1612
|
let t = typeof e == "number" ? e : Number(e);
|
|
1613
1613
|
return Number.isFinite(t) ? t : void 0;
|
|
1614
1614
|
}
|
|
1615
|
-
function
|
|
1615
|
+
function Tt(e) {
|
|
1616
1616
|
return typeof e == "string" || typeof e == "number" ? e : void 0;
|
|
1617
1617
|
}
|
|
1618
|
-
function
|
|
1618
|
+
function Z(e) {
|
|
1619
1619
|
return e && typeof e == "object" && !Array.isArray(e) ? e : void 0;
|
|
1620
1620
|
}
|
|
1621
1621
|
function Et(e) {
|
|
@@ -1644,44 +1644,44 @@ function jt(e) {
|
|
|
1644
1644
|
return t ? e.filter((e) => e.runId === t) : [];
|
|
1645
1645
|
}
|
|
1646
1646
|
function Mt(e) {
|
|
1647
|
-
let t =
|
|
1647
|
+
let t = Z(e);
|
|
1648
1648
|
if (!t) return null;
|
|
1649
|
-
let n =
|
|
1649
|
+
let n = Z(t.Metadata ?? t.metadata), r = Z(t.Content ?? t.content), i = X(t.CheckpointId ?? t.checkpointId ?? t.checkpoint_id ?? n?.checkpoint_id ?? n?.checkpointId ?? r?.checkpoint_id ?? r?.checkpointId), a = X(t.RunId ?? t.runId ?? t.run_id ?? n?.run_id ?? n?.runId ?? r?.run_id ?? r?.runId);
|
|
1650
1650
|
return !i || !a ? null : {
|
|
1651
1651
|
checkpointId: i,
|
|
1652
1652
|
runId: a,
|
|
1653
|
-
sessionId:
|
|
1654
|
-
invocationId:
|
|
1655
|
-
seqId:
|
|
1656
|
-
timestamp:
|
|
1657
|
-
framework:
|
|
1658
|
-
frameworkRef:
|
|
1659
|
-
phase:
|
|
1660
|
-
stage:
|
|
1661
|
-
summary:
|
|
1662
|
-
nextAction:
|
|
1663
|
-
status:
|
|
1653
|
+
sessionId: X(t.SessionId ?? t.sessionId ?? t.session_id) || void 0,
|
|
1654
|
+
invocationId: X(t.InvocationId ?? t.invocationId ?? t.invocation_id) || void 0,
|
|
1655
|
+
seqId: wt(t.SeqId ?? t.seqId ?? t.seq_id),
|
|
1656
|
+
timestamp: Tt(t.Timestamp ?? t.timestamp ?? t.CreatedAt ?? t.createdAt),
|
|
1657
|
+
framework: X(t.Framework ?? t.framework ?? n?.framework ?? r?.framework) || void 0,
|
|
1658
|
+
frameworkRef: Z(t.FrameworkRef ?? t.frameworkRef ?? t.framework_ref ?? n?.framework_ref ?? n?.frameworkRef),
|
|
1659
|
+
phase: X(t.Phase ?? t.phase ?? n?.phase ?? r?.phase) || void 0,
|
|
1660
|
+
stage: X(t.Stage ?? t.stage ?? n?.stage ?? n?.title) || void 0,
|
|
1661
|
+
summary: X(t.Summary ?? t.summary ?? n?.summary ?? n?.description) || void 0,
|
|
1662
|
+
nextAction: X(t.NextAction ?? t.nextAction ?? t.next_action ?? n?.nextAction ?? n?.next_action) || void 0,
|
|
1663
|
+
status: X(t.Status ?? t.status ?? n?.status ?? r?.status) || void 0,
|
|
1664
1664
|
metadata: n
|
|
1665
1665
|
};
|
|
1666
1666
|
}
|
|
1667
1667
|
function Nt(e) {
|
|
1668
|
-
let t =
|
|
1668
|
+
let t = Z(e);
|
|
1669
1669
|
if (!t) return null;
|
|
1670
|
-
let n =
|
|
1670
|
+
let n = X(t.ReceiptId ?? t.receiptId ?? t.receipt_id), r = X(t.IdempotencyKey ?? t.idempotencyKey ?? t.idempotency_key), i = X(t.ToolName ?? t.toolName ?? t.tool_name);
|
|
1671
1671
|
return !n || !r || !i ? null : {
|
|
1672
1672
|
receiptId: n,
|
|
1673
1673
|
idempotencyKey: r,
|
|
1674
1674
|
toolName: i,
|
|
1675
|
-
toolCallId:
|
|
1676
|
-
runId:
|
|
1677
|
-
checkpointId:
|
|
1678
|
-
sessionId:
|
|
1679
|
-
invocationId:
|
|
1680
|
-
seqId:
|
|
1681
|
-
timestamp:
|
|
1682
|
-
status:
|
|
1675
|
+
toolCallId: X(t.ToolCallId ?? t.toolCallId ?? t.tool_call_id) || void 0,
|
|
1676
|
+
runId: X(t.RunId ?? t.runId ?? t.run_id) || void 0,
|
|
1677
|
+
checkpointId: X(t.CheckpointId ?? t.checkpointId ?? t.checkpoint_id) || void 0,
|
|
1678
|
+
sessionId: X(t.SessionId ?? t.sessionId ?? t.session_id) || void 0,
|
|
1679
|
+
invocationId: X(t.InvocationId ?? t.invocationId ?? t.invocation_id) || void 0,
|
|
1680
|
+
seqId: wt(t.SeqId ?? t.seqId ?? t.seq_id),
|
|
1681
|
+
timestamp: Tt(t.Timestamp ?? t.timestamp ?? t.CreatedAt ?? t.createdAt),
|
|
1682
|
+
status: X(t.Status ?? t.status) || void 0,
|
|
1683
1683
|
replayed: !!(t.Replayed ?? t.replayed),
|
|
1684
|
-
metadata:
|
|
1684
|
+
metadata: Z(t.Metadata ?? t.metadata)
|
|
1685
1685
|
};
|
|
1686
1686
|
}
|
|
1687
1687
|
var Q = P()((e, t) => ({
|
|
@@ -1713,7 +1713,7 @@ var Q = P()((e, t) => ({
|
|
|
1713
1713
|
},
|
|
1714
1714
|
getSessionCheckpoints: (e) => {
|
|
1715
1715
|
let n = String(e || "");
|
|
1716
|
-
return n && t().checkpointsBySessionId[n] ||
|
|
1716
|
+
return n && t().checkpointsBySessionId[n] || St;
|
|
1717
1717
|
},
|
|
1718
1718
|
setSessionToolReceipts: (t, n) => e((e) => ({ toolReceiptsBySessionId: {
|
|
1719
1719
|
...e.toolReceiptsBySessionId,
|
|
@@ -1724,7 +1724,7 @@ var Q = P()((e, t) => ({
|
|
|
1724
1724
|
} })),
|
|
1725
1725
|
getSessionToolReceipts: (e) => {
|
|
1726
1726
|
let n = String(e || "");
|
|
1727
|
-
return n && t().toolReceiptsBySessionId[n] ||
|
|
1727
|
+
return n && t().toolReceiptsBySessionId[n] || Ct;
|
|
1728
1728
|
},
|
|
1729
1729
|
clearSessionCheckpoints: (t) => e((e) => {
|
|
1730
1730
|
let n = String(t || "");
|
|
@@ -1841,7 +1841,7 @@ function Bt(e) {
|
|
|
1841
1841
|
function Vt(e) {
|
|
1842
1842
|
let t = e?.Metadata?.responses_output;
|
|
1843
1843
|
if (!Array.isArray(t)) return {};
|
|
1844
|
-
let n =
|
|
1844
|
+
let n = Ke(), r = tt({
|
|
1845
1845
|
eventName: "response.completed",
|
|
1846
1846
|
data: { response: {
|
|
1847
1847
|
id: String(e.Metadata?.response_id || ""),
|
|
@@ -2226,18 +2226,12 @@ function rn(e = [], t = []) {
|
|
|
2226
2226
|
return Number.isFinite(n) && Number.isFinite(r) && n !== r ? n - r : Number(e?.Timestamp || 0) - Number(t?.Timestamp || 0);
|
|
2227
2227
|
});
|
|
2228
2228
|
}
|
|
2229
|
-
function an(e
|
|
2230
|
-
return (Array.isArray(e) ? e : []).reduce((e, t) => {
|
|
2231
|
-
let n = Number(t.SeqId || 0);
|
|
2232
|
-
return Number.isFinite(n) ? Math.max(e, n) : e;
|
|
2233
|
-
}, 0);
|
|
2234
|
-
}
|
|
2235
|
-
function on(e) {
|
|
2229
|
+
function an(e) {
|
|
2236
2230
|
return e?.EventType === "run_status" ? Pt.has(String(e.Content?.status || "").trim().toLowerCase()) : !1;
|
|
2237
2231
|
}
|
|
2238
2232
|
//#endregion
|
|
2239
2233
|
//#region src/core/run/dispatcher.ts
|
|
2240
|
-
var $ = !1,
|
|
2234
|
+
var $ = !1, on = new Set(["completed"]), sn = new Set([
|
|
2241
2235
|
"failed",
|
|
2242
2236
|
"error",
|
|
2243
2237
|
"cancelled",
|
|
@@ -2245,8 +2239,8 @@ var $ = !1, sn = new Set(["completed"]), cn = new Set([
|
|
|
2245
2239
|
"aborted",
|
|
2246
2240
|
"incomplete"
|
|
2247
2241
|
]);
|
|
2248
|
-
function
|
|
2249
|
-
$ || ($ = !0,
|
|
2242
|
+
function cn(e) {
|
|
2243
|
+
$ || ($ = !0, q.getState().patchMessages((t) => [...t, {
|
|
2250
2244
|
id: e,
|
|
2251
2245
|
role: "model",
|
|
2252
2246
|
content: "",
|
|
@@ -2254,9 +2248,9 @@ function ln(e) {
|
|
|
2254
2248
|
reasoning: ""
|
|
2255
2249
|
}]));
|
|
2256
2250
|
}
|
|
2257
|
-
function
|
|
2258
|
-
let t = String(e || "").trim().toLowerCase(), n =
|
|
2259
|
-
n &&
|
|
2251
|
+
function ln(e) {
|
|
2252
|
+
let t = String(e || "").trim().toLowerCase(), n = on.has(t) ? "completed" : sn.has(t) ? "error" : null;
|
|
2253
|
+
n && q.getState().patchMessages((e) => e.map((e) => {
|
|
2260
2254
|
if (!e.tools) return e;
|
|
2261
2255
|
let t = !1, r = Object.fromEntries(Object.entries(e.tools).map(([e, r]) => r.status === "running" ? (t = !0, [e, {
|
|
2262
2256
|
...r,
|
|
@@ -2268,12 +2262,12 @@ function un(e) {
|
|
|
2268
2262
|
} : e;
|
|
2269
2263
|
}));
|
|
2270
2264
|
}
|
|
2271
|
-
function
|
|
2265
|
+
function un(e) {
|
|
2272
2266
|
if (e.sessionId && z.getState().currentSessionId !== e.sessionId) {
|
|
2273
2267
|
e.type === "stage_changed" && (e.stage === "completing" || e.stage === "error" || e.stage === "cancelled") && ($ = !1);
|
|
2274
2268
|
return;
|
|
2275
2269
|
}
|
|
2276
|
-
let t =
|
|
2270
|
+
let t = q.getState();
|
|
2277
2271
|
switch (e.type) {
|
|
2278
2272
|
case "activity":
|
|
2279
2273
|
L.getState().updateActivity({
|
|
@@ -2294,28 +2288,28 @@ function dn(e) {
|
|
|
2294
2288
|
}]);
|
|
2295
2289
|
break;
|
|
2296
2290
|
case "assistant_message_created":
|
|
2297
|
-
|
|
2291
|
+
cn(e.messageId);
|
|
2298
2292
|
break;
|
|
2299
2293
|
case "text_delta":
|
|
2300
|
-
|
|
2294
|
+
cn(e.messageId), t.patchMessages((t) => t.map((t) => t.id === e.messageId ? {
|
|
2301
2295
|
...t,
|
|
2302
2296
|
content: t.content + e.delta
|
|
2303
2297
|
} : t));
|
|
2304
2298
|
break;
|
|
2305
2299
|
case "text_final":
|
|
2306
|
-
|
|
2300
|
+
cn(e.messageId), t.patchMessages((t) => t.map((t) => t.id === e.messageId ? {
|
|
2307
2301
|
...t,
|
|
2308
2302
|
content: e.text
|
|
2309
2303
|
} : t));
|
|
2310
2304
|
break;
|
|
2311
2305
|
case "reasoning_delta":
|
|
2312
|
-
|
|
2306
|
+
cn(e.messageId), t.patchMessages((t) => t.map((t) => t.id === e.messageId ? {
|
|
2313
2307
|
...t,
|
|
2314
2308
|
reasoning: (t.reasoning || "") + e.delta
|
|
2315
2309
|
} : t));
|
|
2316
2310
|
break;
|
|
2317
2311
|
case "tool_upsert":
|
|
2318
|
-
|
|
2312
|
+
cn(e.messageId), t.patchMessages((t) => t.map((t) => t.id === e.messageId ? {
|
|
2319
2313
|
...t,
|
|
2320
2314
|
tools: {
|
|
2321
2315
|
...t.tools || {},
|
|
@@ -2334,7 +2328,7 @@ function dn(e) {
|
|
|
2334
2328
|
} : t));
|
|
2335
2329
|
break;
|
|
2336
2330
|
case "tool_result":
|
|
2337
|
-
|
|
2331
|
+
cn(e.messageId), t.patchMessages((t) => t.map((t) => t.id === e.messageId ? {
|
|
2338
2332
|
...t,
|
|
2339
2333
|
tools: {
|
|
2340
2334
|
...t.tools || {},
|
|
@@ -2394,7 +2388,7 @@ function dn(e) {
|
|
|
2394
2388
|
}]), $ = !1;
|
|
2395
2389
|
break;
|
|
2396
2390
|
case "terminal":
|
|
2397
|
-
|
|
2391
|
+
ln(e.status);
|
|
2398
2392
|
break;
|
|
2399
2393
|
case "stream_event": {
|
|
2400
2394
|
let t = e.sessionId || e.event.SessionId;
|
|
@@ -2421,12 +2415,12 @@ function dn(e) {
|
|
|
2421
2415
|
}
|
|
2422
2416
|
}
|
|
2423
2417
|
}
|
|
2424
|
-
function
|
|
2418
|
+
function dn() {
|
|
2425
2419
|
$ = !1;
|
|
2426
2420
|
}
|
|
2427
2421
|
//#endregion
|
|
2428
2422
|
//#region src/hooks/useRunAgent.ts
|
|
2429
|
-
function
|
|
2423
|
+
function fn(e) {
|
|
2430
2424
|
let t = M(/* @__PURE__ */ new Map()), n = M(() => {}), { agentId: r, apiFormats: i, agentFramework: a, selectedModel: o, selectedModelMetadata: s, thinkingMode: c, currentSessionIdRef: l, queuedDraftRef: u, onRunSettled: d, uiCapabilities: f } = e, p = A((e) => {
|
|
2431
2425
|
e.updateConfig({
|
|
2432
2426
|
agentId: r,
|
|
@@ -2447,7 +2441,7 @@ function pn(e) {
|
|
|
2447
2441
|
f.RunLifecycle?.CheckpointResumePreview
|
|
2448
2442
|
]), m = A((n) => {
|
|
2449
2443
|
let r = String(n || "new-session"), i = t.current.get(r);
|
|
2450
|
-
return i ? p(i) : (i = new
|
|
2444
|
+
return i ? p(i) : (i = new xt(e.api), p(i), i.subscribe(un), t.current.set(r, i)), i;
|
|
2451
2445
|
}, [e.api, p]);
|
|
2452
2446
|
j(() => {
|
|
2453
2447
|
for (let e of t.current.values()) p(e);
|
|
@@ -2457,13 +2451,13 @@ function pn(e) {
|
|
|
2457
2451
|
}, [u]), g = A((e) => {
|
|
2458
2452
|
let i = l.current, a = m(i);
|
|
2459
2453
|
if (a.stage !== "idle") return !1;
|
|
2460
|
-
|
|
2454
|
+
dn(), _.getState().setMobileActionsOpen(!1), L.getState().setSessionStreaming(i, !0);
|
|
2461
2455
|
let o = e.text.trim(), s = String(Date.now()), c = e.attachments.map((e) => ({
|
|
2462
2456
|
name: e.name,
|
|
2463
2457
|
url: URL.createObjectURL(e),
|
|
2464
2458
|
type: e.type || "application/octet-stream"
|
|
2465
2459
|
}));
|
|
2466
|
-
(o || c.length > 0) &&
|
|
2460
|
+
(o || c.length > 0) && q.getState().patchMessages((e) => [...e, {
|
|
2467
2461
|
id: s,
|
|
2468
2462
|
role: "user",
|
|
2469
2463
|
content: o,
|
|
@@ -2480,7 +2474,7 @@ function pn(e) {
|
|
|
2480
2474
|
z.getState().upsertSessions([{
|
|
2481
2475
|
SessionId: e,
|
|
2482
2476
|
UpdatedAt: (/* @__PURE__ */ new Date()).toISOString()
|
|
2483
|
-
}]), l.current = e,
|
|
2477
|
+
}]), l.current = e, we(r, e), z.getState().setCurrentSessionId(e), i !== e && t.current.set(e, a);
|
|
2484
2478
|
},
|
|
2485
2479
|
onSessionUpsert: () => {},
|
|
2486
2480
|
onSettled: (e) => {
|
|
@@ -2539,7 +2533,7 @@ function pn(e) {
|
|
|
2539
2533
|
resumeCheckpoint: A((e) => {
|
|
2540
2534
|
let t = m(e.sessionId);
|
|
2541
2535
|
if (t.stage !== "idle") return !1;
|
|
2542
|
-
|
|
2536
|
+
dn(), _.getState().setMobileActionsOpen(!1), L.getState().setSessionStreaming(e.sessionId, !0);
|
|
2543
2537
|
let r = t.resumeCheckpoint({
|
|
2544
2538
|
...e,
|
|
2545
2539
|
onSettled: (e) => {
|
|
@@ -2549,19 +2543,19 @@ function pn(e) {
|
|
|
2549
2543
|
return r || L.getState().setSessionStreaming(e.sessionId, !1), r;
|
|
2550
2544
|
}, [m, d]),
|
|
2551
2545
|
resetCompaction: A(() => {
|
|
2552
|
-
|
|
2546
|
+
dn();
|
|
2553
2547
|
}, [])
|
|
2554
2548
|
};
|
|
2555
2549
|
}
|
|
2556
2550
|
//#endregion
|
|
2557
2551
|
//#region src/hooks/useFeedback.ts
|
|
2558
|
-
function
|
|
2552
|
+
function pn(e) {
|
|
2559
2553
|
let { agentId: t, currentSessionId: n, isStreaming: r, api: i, submitDraft: a } = e;
|
|
2560
2554
|
return {
|
|
2561
2555
|
submitResponseFeedback: A(async (e) => {
|
|
2562
2556
|
if (!n) return;
|
|
2563
2557
|
let r = null;
|
|
2564
|
-
|
|
2558
|
+
q.getState().patchMessages((t) => {
|
|
2565
2559
|
let n = v(t, {
|
|
2566
2560
|
messageId: e.message.id,
|
|
2567
2561
|
rating: e.rating,
|
|
@@ -2577,12 +2571,12 @@ function mn(e) {
|
|
|
2577
2571
|
rating: e.rating,
|
|
2578
2572
|
comment: e.comment || ""
|
|
2579
2573
|
})))?.Feedback);
|
|
2580
|
-
r &&
|
|
2574
|
+
r && q.getState().patchMessages((t) => s(t, {
|
|
2581
2575
|
messageId: e.message.id,
|
|
2582
2576
|
feedback: r
|
|
2583
2577
|
}));
|
|
2584
2578
|
} catch (t) {
|
|
2585
|
-
console.error("Failed to submit response feedback:", t),
|
|
2579
|
+
console.error("Failed to submit response feedback:", t), q.getState().patchMessages((t) => C(t, {
|
|
2586
2580
|
messageId: e.message.id,
|
|
2587
2581
|
previousFeedback: r
|
|
2588
2582
|
}));
|
|
@@ -2595,7 +2589,7 @@ function mn(e) {
|
|
|
2595
2589
|
deleteResponseFeedback: A(async (e) => {
|
|
2596
2590
|
if (!n) return;
|
|
2597
2591
|
let r = e.feedback ? { ...e.feedback } : null;
|
|
2598
|
-
|
|
2592
|
+
q.getState().patchMessages((t) => d(t, { messageId: e.id }));
|
|
2599
2593
|
try {
|
|
2600
2594
|
await i.deleteResponseFeedback(h({
|
|
2601
2595
|
agentId: t,
|
|
@@ -2603,7 +2597,7 @@ function mn(e) {
|
|
|
2603
2597
|
message: e
|
|
2604
2598
|
}));
|
|
2605
2599
|
} catch (t) {
|
|
2606
|
-
console.error("Failed to delete response feedback:", t),
|
|
2600
|
+
console.error("Failed to delete response feedback:", t), q.getState().patchMessages((t) => C(t, {
|
|
2607
2601
|
messageId: e.id,
|
|
2608
2602
|
previousFeedback: r
|
|
2609
2603
|
}));
|
|
@@ -2614,13 +2608,13 @@ function mn(e) {
|
|
|
2614
2608
|
i
|
|
2615
2609
|
]),
|
|
2616
2610
|
respondToApproval: A((e) => {
|
|
2617
|
-
!e.approvalRequestId || r || (
|
|
2611
|
+
!e.approvalRequestId || r || (q.getState().patchMessages((t) => t.map((t) => ({
|
|
2618
2612
|
...t,
|
|
2619
2613
|
tools: t.tools ? Object.fromEntries(Object.entries(t.tools).map(([t, n]) => [t, n.approvalRequestId === e.approvalRequestId ? {
|
|
2620
2614
|
...n,
|
|
2621
2615
|
approvalStatus: e.approve ? "approved" : "rejected"
|
|
2622
2616
|
} : n])) : t.tools
|
|
2623
|
-
}))),
|
|
2617
|
+
}))), q.getState().patchMessages((t) => [...t, {
|
|
2624
2618
|
id: String(Date.now() + Math.random()),
|
|
2625
2619
|
role: "system",
|
|
2626
2620
|
content: e.approve ? "已批准工具调用,正在继续运行。" : "已拒绝工具调用,正在通知运行时。",
|
|
@@ -2634,102 +2628,90 @@ function mn(e) {
|
|
|
2634
2628
|
};
|
|
2635
2629
|
}
|
|
2636
2630
|
//#endregion
|
|
2637
|
-
//#region src/utils/
|
|
2638
|
-
|
|
2639
|
-
|
|
2640
|
-
|
|
2631
|
+
//#region src/utils/messages.js
|
|
2632
|
+
var mn = {
|
|
2633
|
+
running: "running",
|
|
2634
|
+
completed: "completed",
|
|
2635
|
+
failed: "error",
|
|
2636
|
+
paused: "paused",
|
|
2637
|
+
approved: "completed",
|
|
2638
|
+
denied: "completed"
|
|
2639
|
+
}, hn = {
|
|
2640
|
+
paused: "pending",
|
|
2641
|
+
approved: "approved",
|
|
2642
|
+
denied: "rejected"
|
|
2643
|
+
};
|
|
2641
2644
|
function gn(e) {
|
|
2642
|
-
|
|
2643
|
-
if (typeof
|
|
2644
|
-
|
|
2645
|
-
|
|
2646
|
-
return Number.isNaN(e) ? 0 : e;
|
|
2645
|
+
if (typeof e == "number") return e;
|
|
2646
|
+
if (typeof e == "string") {
|
|
2647
|
+
let t = Date.parse(e);
|
|
2648
|
+
if (Number.isFinite(t)) return t;
|
|
2647
2649
|
}
|
|
2648
|
-
return
|
|
2650
|
+
return Date.now();
|
|
2649
2651
|
}
|
|
2650
|
-
|
|
2651
|
-
"
|
|
2652
|
-
"
|
|
2653
|
-
|
|
2654
|
-
|
|
2655
|
-
|
|
2656
|
-
"
|
|
2657
|
-
]);
|
|
2658
|
-
function vn(e) {
|
|
2659
|
-
return String(e?.EventType || e?.event_type || "").trim();
|
|
2652
|
+
function _n(e) {
|
|
2653
|
+
if (typeof e == "string") return e;
|
|
2654
|
+
if (e && typeof e == "object") {
|
|
2655
|
+
if (typeof e.text == "string") return e.text;
|
|
2656
|
+
if (Array.isArray(e.parts)) return e.parts.map((e) => e && typeof e == "object" && typeof e.text == "string" ? e.text : "").join("");
|
|
2657
|
+
}
|
|
2658
|
+
return "";
|
|
2660
2659
|
}
|
|
2661
|
-
function
|
|
2662
|
-
let
|
|
2663
|
-
for (let
|
|
2664
|
-
|
|
2665
|
-
|
|
2666
|
-
|
|
2667
|
-
|
|
2660
|
+
function vn(e) {
|
|
2661
|
+
let t = {};
|
|
2662
|
+
for (let n of e ?? []) {
|
|
2663
|
+
if (!n?.Name) continue;
|
|
2664
|
+
let e = mn[String(n.Status ?? "completed").toLowerCase()] ?? "completed", r = {
|
|
2665
|
+
name: n.Name,
|
|
2666
|
+
args: n.Args === void 0 ? "" : typeof n.Args == "string" ? n.Args : JSON.stringify(n.Args),
|
|
2667
|
+
status: e
|
|
2668
|
+
};
|
|
2669
|
+
n.Result !== void 0 && (r.output = typeof n.Result == "string" ? n.Result : JSON.stringify(n.Result)), n.ApprovalRequestId && (r.approvalRequestId = n.ApprovalRequestId, r.approvalStatus = hn[String(n.Status ?? "paused").toLowerCase()] ?? "pending"), n.ToolCallId && (r.previousResponseId = n.ToolCallId), t[n.Name] = r;
|
|
2668
2670
|
}
|
|
2669
|
-
return
|
|
2670
|
-
|
|
2671
|
-
|
|
2672
|
-
|
|
2671
|
+
return t;
|
|
2672
|
+
}
|
|
2673
|
+
function yn(e) {
|
|
2674
|
+
if (Array.isArray(e)) return e.map((e) => ({
|
|
2675
|
+
name: e.name || "",
|
|
2676
|
+
url: e.url || "",
|
|
2677
|
+
type: e.mime || "",
|
|
2678
|
+
fileUri: e.file_uri
|
|
2679
|
+
}));
|
|
2680
|
+
}
|
|
2681
|
+
function bn(e) {
|
|
2682
|
+
let t = e.Role === "assistant" ? "model" : e.Role || "user", n = e.ToolEvents?.length ? vn(e.ToolEvents) : void 0, r = yn(e.Attachments), i = e.Reasoning?.length ? e.Reasoning.map((e) => e.text).join("") : void 0, a = {
|
|
2683
|
+
id: e.MessageId || `msg-${e.SeqId ?? Math.random().toString(36).slice(2)}`,
|
|
2684
|
+
role: t,
|
|
2685
|
+
content: _n(e.Content),
|
|
2686
|
+
timestamp: gn(e.Timestamp),
|
|
2687
|
+
eventType: t === "user" ? "user_message" : "assistant_message",
|
|
2688
|
+
reasoning: i,
|
|
2689
|
+
tools: n,
|
|
2690
|
+
attachments: r
|
|
2691
|
+
};
|
|
2692
|
+
return e.MessageId && (a.eventId = e.MessageId), e.ResponseId && (a.responseId = e.ResponseId), e.TraceId && (a.traceId = e.TraceId), e.RootSpanId && (a.rootSpanId = e.RootSpanId), a;
|
|
2693
|
+
}
|
|
2694
|
+
function xn(e) {
|
|
2695
|
+
return e.map(bn);
|
|
2673
2696
|
}
|
|
2674
2697
|
//#endregion
|
|
2675
2698
|
//#region src/utils/session-event-history.ts
|
|
2676
|
-
function
|
|
2699
|
+
function Sn(e, t) {
|
|
2677
2700
|
let n = Math.max(0, Number(e.offset) || 0), r = Math.max(0, Number(e.total) || 0);
|
|
2678
2701
|
return n >= r ? null : {
|
|
2679
2702
|
offset: n,
|
|
2680
2703
|
limit: Math.min(Math.max(1, Number(t) || 1), r - n)
|
|
2681
2704
|
};
|
|
2682
2705
|
}
|
|
2683
|
-
async function xn(e, t, n) {
|
|
2684
|
-
let r = Math.max(1, Number(n?.pageSize) || 50), i = n?.shouldContinue || (() => !0), a = () => !i(), o = await t(e, {
|
|
2685
|
-
offset: 0,
|
|
2686
|
-
limit: 1
|
|
2687
|
-
});
|
|
2688
|
-
if (a()) return null;
|
|
2689
|
-
let s = Math.max(0, Number(o.Total ?? o.Events?.length ?? 0) || 0);
|
|
2690
|
-
if (s <= 1) return {
|
|
2691
|
-
events: o.Events || [],
|
|
2692
|
-
total: s,
|
|
2693
|
-
offset: Number(o.Offset ?? 0),
|
|
2694
|
-
limit: Number(o.Limit ?? o.Events?.length ?? 0)
|
|
2695
|
-
};
|
|
2696
|
-
let c = bn({
|
|
2697
|
-
offset: 0,
|
|
2698
|
-
total: s
|
|
2699
|
-
}, r);
|
|
2700
|
-
if (!c) return {
|
|
2701
|
-
events: [],
|
|
2702
|
-
total: s,
|
|
2703
|
-
offset: 0,
|
|
2704
|
-
limit: 0
|
|
2705
|
-
};
|
|
2706
|
-
let l = await t(e, c);
|
|
2707
|
-
if (a()) return null;
|
|
2708
|
-
let u = l.Events || [], d = u.length;
|
|
2709
|
-
for (; d < s;) {
|
|
2710
|
-
let n = bn({
|
|
2711
|
-
offset: d,
|
|
2712
|
-
total: s
|
|
2713
|
-
}, r);
|
|
2714
|
-
if (!n) break;
|
|
2715
|
-
let i = await t(e, n);
|
|
2716
|
-
if (a()) return null;
|
|
2717
|
-
u = rn(i.Events || [], u), d += (i.Events || []).length;
|
|
2718
|
-
}
|
|
2719
|
-
return {
|
|
2720
|
-
events: u,
|
|
2721
|
-
total: s,
|
|
2722
|
-
offset: d,
|
|
2723
|
-
limit: u.length
|
|
2724
|
-
};
|
|
2725
|
-
}
|
|
2726
2706
|
//#endregion
|
|
2727
2707
|
//#region src/hooks/useSessionLifecycle.ts
|
|
2728
|
-
var
|
|
2729
|
-
|
|
2730
|
-
|
|
2731
|
-
|
|
2732
|
-
|
|
2708
|
+
var Cn = 9e4, wn = 30, Tn = 50, En = 500, Dn = new Set([
|
|
2709
|
+
"in_progress",
|
|
2710
|
+
"running",
|
|
2711
|
+
"resuming",
|
|
2712
|
+
"starting"
|
|
2713
|
+
]);
|
|
2714
|
+
function On(e) {
|
|
2733
2715
|
if (e.EventType !== "run_status") return null;
|
|
2734
2716
|
let t = String(e.Content?.status || "").trim().toLowerCase();
|
|
2735
2717
|
return t === "completed" ? {
|
|
@@ -2749,7 +2731,7 @@ function Dn(e) {
|
|
|
2749
2731
|
phase: "后台长任务恢复失败"
|
|
2750
2732
|
} : null;
|
|
2751
2733
|
}
|
|
2752
|
-
function
|
|
2734
|
+
function kn(e) {
|
|
2753
2735
|
let { agentId: t, api: n, isMobile: r, resetCompaction: i, uiCapabilities: a, disconnectRun: o } = e, s = M(e.currentSessionId), l = M(e.agentId), u = M(null), d = M(null), f = M(null), p = A(async (e, t, r) => {
|
|
2754
2736
|
let i = r.filter((e) => c(e, !1, !1));
|
|
2755
2737
|
if (!i.length) return;
|
|
@@ -2771,7 +2753,7 @@ function On(e) {
|
|
|
2771
2753
|
}));
|
|
2772
2754
|
if (s.current !== t) return;
|
|
2773
2755
|
let o = new Map(a.filter((e) => !!e).map((e) => [e.messageId, e.feedback]));
|
|
2774
|
-
o.size &&
|
|
2756
|
+
o.size && q.getState().patchMessages((e) => e.map((e) => o.has(e.id) ? {
|
|
2775
2757
|
...e,
|
|
2776
2758
|
feedback: o.get(e.id)
|
|
2777
2759
|
} : e));
|
|
@@ -2783,7 +2765,7 @@ function On(e) {
|
|
|
2783
2765
|
u.current !== t || t.signal.aborted || t.abort();
|
|
2784
2766
|
}, o = globalThis.setTimeout(() => {
|
|
2785
2767
|
a();
|
|
2786
|
-
},
|
|
2768
|
+
}, Cn);
|
|
2787
2769
|
try {
|
|
2788
2770
|
let o = (await n.subscribeRunEvents({
|
|
2789
2771
|
sessionId: e.sessionId,
|
|
@@ -2813,8 +2795,8 @@ function On(e) {
|
|
|
2813
2795
|
}
|
|
2814
2796
|
try {
|
|
2815
2797
|
let t = JSON.parse(o);
|
|
2816
|
-
u = rn(u, [t]), i ||=
|
|
2817
|
-
let n =
|
|
2798
|
+
u = rn(u, [t]), i ||= an(t), r ||= i, t.EventType === "run_checkpoint" && Q.getState().upsertSessionCheckpoint(e.sessionId, t);
|
|
2799
|
+
let n = On(t);
|
|
2818
2800
|
if (n && L.getState().updateActivity({
|
|
2819
2801
|
sessionId: e.sessionId,
|
|
2820
2802
|
status: n.status,
|
|
@@ -2825,8 +2807,6 @@ function On(e) {
|
|
|
2825
2807
|
a();
|
|
2826
2808
|
break;
|
|
2827
2809
|
}
|
|
2828
|
-
let c = nn(u);
|
|
2829
|
-
En(c, J.getState().messages) && J.getState().setMessages(c);
|
|
2830
2810
|
} catch (e) {
|
|
2831
2811
|
console.warn("Failed to parse run event data", o, e);
|
|
2832
2812
|
}
|
|
@@ -2842,18 +2822,29 @@ function On(e) {
|
|
|
2842
2822
|
let t = () => s.current === e;
|
|
2843
2823
|
z.getState().setCurrentSessionId(e), i(), u.current?.abort(), r && _.getState().setMobileSidebarOpen(!1);
|
|
2844
2824
|
try {
|
|
2845
|
-
let r = await
|
|
2846
|
-
|
|
2847
|
-
|
|
2825
|
+
let r = await n.listSessionMessages(e, {
|
|
2826
|
+
includeReasoning: !0,
|
|
2827
|
+
includeToolEvents: !0,
|
|
2828
|
+
includeAttachments: !0
|
|
2829
|
+
});
|
|
2830
|
+
if (!t()) return;
|
|
2831
|
+
let i = xn(r.Messages);
|
|
2832
|
+
q.getState().setMessages(i), p(l.current, e, i);
|
|
2833
|
+
let o = r.LatestSeqId || 0;
|
|
2834
|
+
n.listSessionEvents(e, { limit: En }).then((n) => {
|
|
2835
|
+
if (!t()) return;
|
|
2836
|
+
let r = n.Events || [];
|
|
2837
|
+
z.getState().setSessionEventCache(e, {
|
|
2838
|
+
events: r,
|
|
2839
|
+
total: n.Total ?? 0,
|
|
2840
|
+
offset: (n.Offset ?? 0) + r.length,
|
|
2841
|
+
limit: n.Limit ?? 0
|
|
2842
|
+
});
|
|
2843
|
+
}).catch((e) => {
|
|
2844
|
+
console.warn("[SessionLifecycle] event cache load failed:", e);
|
|
2848
2845
|
});
|
|
2849
|
-
|
|
2850
|
-
|
|
2851
|
-
total: r.total,
|
|
2852
|
-
offset: r.offset,
|
|
2853
|
-
limit: r.limit
|
|
2854
|
-
}), !t())) return;
|
|
2855
|
-
let i = F.getState().capabilities || a;
|
|
2856
|
-
if (i.RunLifecycle.Enabled && i.RunLifecycle.Checkpoints ? (n.listSessionCheckpoints({
|
|
2846
|
+
let s = F.getState().capabilities || a;
|
|
2847
|
+
if (s.RunLifecycle.Enabled && s.RunLifecycle.Checkpoints ? (n.listSessionCheckpoints({
|
|
2857
2848
|
agentId: l.current,
|
|
2858
2849
|
sessionId: e
|
|
2859
2850
|
}).then((t) => {
|
|
@@ -2867,26 +2858,21 @@ function On(e) {
|
|
|
2867
2858
|
Q.getState().setSessionToolReceipts(e, t.ToolReceipts || []);
|
|
2868
2859
|
}).catch((t) => {
|
|
2869
2860
|
console.warn("[SessionLifecycle] tool receipt load failed:", t), Q.getState().setSessionToolReceipts(e, []);
|
|
2870
|
-
})) : Q.getState().clearSessionCheckpoints(e),
|
|
2871
|
-
let
|
|
2861
|
+
})) : Q.getState().clearSessionCheckpoints(e), s.RunLifecycle.Enabled && s.RunLifecycle.Resume) try {
|
|
2862
|
+
let r = await n.getSession(e);
|
|
2872
2863
|
if (!t()) return;
|
|
2873
|
-
|
|
2874
|
-
|
|
2875
|
-
now: Date.now(),
|
|
2876
|
-
staleAfterMs: 1800 * 1e3
|
|
2877
|
-
}), s = an(n);
|
|
2878
|
-
i.RunLifecycle.Enabled && i.RunLifecycle.Resume && o[0] && m({
|
|
2864
|
+
let i = String(r.ActiveRunStatus || "").toLowerCase();
|
|
2865
|
+
Dn.has(i) && r.ActiveInvocationId && m({
|
|
2879
2866
|
sessionId: e,
|
|
2880
|
-
invocationId:
|
|
2881
|
-
afterSeqId:
|
|
2882
|
-
initialEvents:
|
|
2867
|
+
invocationId: r.ActiveInvocationId,
|
|
2868
|
+
afterSeqId: o,
|
|
2869
|
+
initialEvents: []
|
|
2883
2870
|
});
|
|
2884
|
-
}
|
|
2885
|
-
|
|
2886
|
-
J.getState().setMessages([]), Q.getState().setSessionCheckpoints(e, []), Q.getState().setSessionToolReceipts(e, []);
|
|
2871
|
+
} catch (e) {
|
|
2872
|
+
console.warn("[SessionLifecycle] getSession for reconnect failed:", e);
|
|
2887
2873
|
}
|
|
2888
2874
|
} catch (e) {
|
|
2889
|
-
console.error("Failed to load session
|
|
2875
|
+
console.error("Failed to load session messages:", e);
|
|
2890
2876
|
}
|
|
2891
2877
|
}, [
|
|
2892
2878
|
n,
|
|
@@ -2901,19 +2887,19 @@ function On(e) {
|
|
|
2901
2887
|
r.sessionsAgentId && r.sessionsAgentId !== e && r.resetSessionPagination(e), z.getState().setLoadingSessions(!0);
|
|
2902
2888
|
let i = await n.listSessions(e, {
|
|
2903
2889
|
page: 1,
|
|
2904
|
-
pageSize:
|
|
2890
|
+
pageSize: wn
|
|
2905
2891
|
});
|
|
2906
2892
|
z.getState().upsertSessions(i.Sessions || [], {
|
|
2907
2893
|
agentId: e,
|
|
2908
2894
|
total: Number(i.Total ?? i.Sessions?.length ?? 0),
|
|
2909
2895
|
page: Number(i.Page ?? 1),
|
|
2910
|
-
pageSize: Number(i.PageSize ??
|
|
2896
|
+
pageSize: Number(i.PageSize ?? wn),
|
|
2911
2897
|
replace: !0
|
|
2912
2898
|
});
|
|
2913
|
-
let a = z.getState().sessions, o = s.current, c =
|
|
2914
|
-
c && c !== o ? h(c) : !c && o && (s.current = null, z.getState().setCurrentSessionId(null),
|
|
2899
|
+
let a = z.getState().sessions, o = s.current, c = Te(a, o || t || Ce(e));
|
|
2900
|
+
c && c !== o ? h(c) : !c && o && (s.current = null, z.getState().setCurrentSessionId(null), q.getState().setMessages([]), Q.getState().clearSessionCheckpoints());
|
|
2915
2901
|
} catch (e) {
|
|
2916
|
-
if (e instanceof
|
|
2902
|
+
if (e instanceof U) return;
|
|
2917
2903
|
console.error("Failed to fetch sessions:", e);
|
|
2918
2904
|
} finally {
|
|
2919
2905
|
z.getState().setLoadingSessions(!1);
|
|
@@ -2923,11 +2909,11 @@ function On(e) {
|
|
|
2923
2909
|
if (e.isLoadingSessions || !e.hasMoreSessions) return;
|
|
2924
2910
|
let t = le({
|
|
2925
2911
|
total: e.sessionsTotal,
|
|
2926
|
-
pageSize: e.sessionsPageSize ||
|
|
2912
|
+
pageSize: e.sessionsPageSize || wn,
|
|
2927
2913
|
loadedPages: e.loadedPages
|
|
2928
2914
|
});
|
|
2929
2915
|
if (!t) return;
|
|
2930
|
-
let r = e.sessionsPageSize ||
|
|
2916
|
+
let r = e.sessionsPageSize || wn, i = e.sessionsAgentId || l.current || "default-agent";
|
|
2931
2917
|
try {
|
|
2932
2918
|
z.getState().setLoadingSessions(!0);
|
|
2933
2919
|
let a = await n.listSessions(i, {
|
|
@@ -2941,7 +2927,7 @@ function On(e) {
|
|
|
2941
2927
|
pageSize: Number(a.PageSize ?? r)
|
|
2942
2928
|
});
|
|
2943
2929
|
} catch (e) {
|
|
2944
|
-
if (e instanceof
|
|
2930
|
+
if (e instanceof U) return;
|
|
2945
2931
|
console.error("Failed to load more sessions:", e);
|
|
2946
2932
|
} finally {
|
|
2947
2933
|
z.getState().setLoadingSessions(!1);
|
|
@@ -2959,9 +2945,9 @@ function On(e) {
|
|
|
2959
2945
|
e && (z.getState().upsertSessions([{
|
|
2960
2946
|
SessionId: e,
|
|
2961
2947
|
UpdatedAt: (/* @__PURE__ */ new Date()).toISOString()
|
|
2962
|
-
}]), s.current = e, z.getState().setCurrentSessionId(e),
|
|
2948
|
+
}]), s.current = e, z.getState().setCurrentSessionId(e), q.getState().setMessages([]), Q.getState().setSessionCheckpoints(e, []), Q.getState().setSessionToolReceipts(e, []), r && (_.getState().setMobileSidebarOpen(!1), _.getState().setMobileActionsOpen(!1)), g(t, e));
|
|
2963
2949
|
} catch (e) {
|
|
2964
|
-
if (e instanceof
|
|
2950
|
+
if (e instanceof U) return;
|
|
2965
2951
|
console.error("Failed to create session:", e);
|
|
2966
2952
|
}
|
|
2967
2953
|
}, [
|
|
@@ -2972,9 +2958,9 @@ function On(e) {
|
|
|
2972
2958
|
r
|
|
2973
2959
|
]), b = A(async (e) => {
|
|
2974
2960
|
try {
|
|
2975
|
-
await n.deleteSession(e), z.getState().removeSession(e), z.getState().clearSessionEventCache(e), s.current === e && (s.current = null,
|
|
2961
|
+
await n.deleteSession(e), z.getState().removeSession(e), z.getState().clearSessionEventCache(e), s.current === e && (s.current = null, q.getState().setMessages([]), Q.getState().clearSessionCheckpoints(e), z.getState().setCurrentSessionId(null), g(t));
|
|
2976
2962
|
} catch (e) {
|
|
2977
|
-
if (e instanceof
|
|
2963
|
+
if (e instanceof U) return;
|
|
2978
2964
|
console.error("Failed to delete session", e);
|
|
2979
2965
|
}
|
|
2980
2966
|
}, [
|
|
@@ -2989,7 +2975,7 @@ function On(e) {
|
|
|
2989
2975
|
loadOlderSessionEvents: A(async (e) => {
|
|
2990
2976
|
let t = z.getState().eventCache[e];
|
|
2991
2977
|
if (!t || t.isLoadingOlder) return;
|
|
2992
|
-
let r =
|
|
2978
|
+
let r = Sn(t, Tn);
|
|
2993
2979
|
if (r) try {
|
|
2994
2980
|
z.getState().setSessionEventLoadingOlder(e, !0);
|
|
2995
2981
|
let i = await n.listSessionEvents(e, r), a = i.Events || [], o = rn(a, t.events), c = t.offset + a.length;
|
|
@@ -3000,10 +2986,10 @@ function On(e) {
|
|
|
3000
2986
|
limit: o.length
|
|
3001
2987
|
}), s.current === e) {
|
|
3002
2988
|
let t = nn(o);
|
|
3003
|
-
|
|
2989
|
+
q.getState().setMessages(t), p(l.current, e, t);
|
|
3004
2990
|
}
|
|
3005
2991
|
} catch (e) {
|
|
3006
|
-
e instanceof
|
|
2992
|
+
e instanceof U || console.error("Failed to load older session events:", e);
|
|
3007
2993
|
} finally {
|
|
3008
2994
|
z.getState().setSessionEventLoadingOlder(e, !1);
|
|
3009
2995
|
}
|
|
@@ -3017,8 +3003,8 @@ function On(e) {
|
|
|
3017
3003
|
}
|
|
3018
3004
|
//#endregion
|
|
3019
3005
|
//#region src/components/chat/ConnectedSidebar.tsx
|
|
3020
|
-
function
|
|
3021
|
-
let u = z((e) => e.sessions), d = z((e) => e.currentSessionId), f = z((e) => e.pinnedSessionIds), m = z((e) => e.isLoadingSessions), h = z((e) => e.hasMoreSessions), g = _((e) => e.sidebarOpen), v = _((e) => e.mobileSidebarOpen), { isMobile: y } =
|
|
3006
|
+
function An({ uiCapabilities: e, createNewSession: n, deleteSession: a, loadSession: s, loadMoreSessions: c }) {
|
|
3007
|
+
let u = z((e) => e.sessions), d = z((e) => e.currentSessionId), f = z((e) => e.pinnedSessionIds), m = z((e) => e.isLoadingSessions), h = z((e) => e.hasMoreSessions), g = _((e) => e.sidebarOpen), v = _((e) => e.mobileSidebarOpen), { isMobile: y } = Fe(), b = t(e), { desktopSidebarVisible: ee } = _e({
|
|
3022
3008
|
isMobile: y,
|
|
3023
3009
|
desktopSidebarOpen: g,
|
|
3024
3010
|
mobileSidebarOpen: v
|
|
@@ -3080,13 +3066,13 @@ function kn({ uiCapabilities: e, createNewSession: n, deleteSession: a, loadSess
|
|
|
3080
3066
|
}
|
|
3081
3067
|
//#endregion
|
|
3082
3068
|
//#region src/components/ui/dialog.tsx
|
|
3083
|
-
var
|
|
3069
|
+
var jn = N.Root, Mn = N.Portal, Nn = O.forwardRef(({ className: e, ...t }, n) => /* @__PURE__ */ E(N.Overlay, {
|
|
3084
3070
|
ref: n,
|
|
3085
3071
|
className: p("fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0", e),
|
|
3086
3072
|
...t
|
|
3087
3073
|
}));
|
|
3088
|
-
|
|
3089
|
-
var
|
|
3074
|
+
Nn.displayName = N.Overlay.displayName;
|
|
3075
|
+
var Pn = O.forwardRef(({ className: e, children: t, ...n }, r) => /* @__PURE__ */ D(Mn, { children: [/* @__PURE__ */ E(Nn, {}), /* @__PURE__ */ D(N.Content, {
|
|
3090
3076
|
ref: r,
|
|
3091
3077
|
className: p("fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg", e),
|
|
3092
3078
|
...n,
|
|
@@ -3098,50 +3084,50 @@ var Nn = O.forwardRef(({ className: e, children: t, ...n }, r) => /* @__PURE__ *
|
|
|
3098
3084
|
})]
|
|
3099
3085
|
})]
|
|
3100
3086
|
})] }));
|
|
3101
|
-
|
|
3102
|
-
var
|
|
3087
|
+
Pn.displayName = N.Content.displayName;
|
|
3088
|
+
var Fn = ({ className: e, ...t }) => /* @__PURE__ */ E("div", {
|
|
3103
3089
|
className: p("flex flex-col space-y-1.5 text-center sm:text-left", e),
|
|
3104
3090
|
...t
|
|
3105
3091
|
});
|
|
3106
|
-
|
|
3107
|
-
var
|
|
3092
|
+
Fn.displayName = "DialogHeader";
|
|
3093
|
+
var In = ({ className: e, ...t }) => /* @__PURE__ */ E("div", {
|
|
3108
3094
|
className: p("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2", e),
|
|
3109
3095
|
...t
|
|
3110
3096
|
});
|
|
3111
|
-
|
|
3112
|
-
var
|
|
3097
|
+
In.displayName = "DialogFooter";
|
|
3098
|
+
var Ln = O.forwardRef(({ className: e, ...t }, n) => /* @__PURE__ */ E(N.Title, {
|
|
3113
3099
|
ref: n,
|
|
3114
3100
|
className: p("text-lg font-semibold leading-none tracking-tight", e),
|
|
3115
3101
|
...t
|
|
3116
3102
|
}));
|
|
3117
|
-
|
|
3118
|
-
var
|
|
3103
|
+
Ln.displayName = N.Title.displayName;
|
|
3104
|
+
var Rn = O.forwardRef(({ className: e, ...t }, n) => /* @__PURE__ */ E(N.Description, {
|
|
3119
3105
|
ref: n,
|
|
3120
3106
|
className: p("text-sm text-muted-foreground", e),
|
|
3121
3107
|
...t
|
|
3122
3108
|
}));
|
|
3123
|
-
|
|
3109
|
+
Rn.displayName = N.Description.displayName;
|
|
3124
3110
|
//#endregion
|
|
3125
3111
|
//#region src/components/chat/AttachmentPreview.tsx
|
|
3126
|
-
function
|
|
3112
|
+
function zn(e, t) {
|
|
3127
3113
|
if (!(!t || e)) return {
|
|
3128
3114
|
width: `min(${t.width}px, calc(100vw - 5rem))`,
|
|
3129
3115
|
height: `min(${t.height}px, calc(100vh - 9rem))`
|
|
3130
3116
|
};
|
|
3131
3117
|
}
|
|
3132
|
-
function
|
|
3118
|
+
function Bn(e, t) {
|
|
3133
3119
|
if (!(!t || e)) return { width: `min(${t.width + 32}px, calc(100vw - 3rem))` };
|
|
3134
3120
|
}
|
|
3135
|
-
function
|
|
3136
|
-
return /* @__PURE__ */ E(
|
|
3121
|
+
function Vn({ attachment: e, isMobile: t, previewImageSize: n, onClose: r, onImageLoad: i }) {
|
|
3122
|
+
return /* @__PURE__ */ E(jn, {
|
|
3137
3123
|
open: !!e?.url,
|
|
3138
3124
|
onOpenChange: (e) => !e && r(),
|
|
3139
|
-
children: /* @__PURE__ */ D(
|
|
3125
|
+
children: /* @__PURE__ */ D(Pn, {
|
|
3140
3126
|
className: p("gap-0 overflow-hidden border-slate-700 bg-slate-950 p-0 text-slate-100 shadow-2xl [&>button]:right-3 [&>button]:top-3 [&>button]:rounded-md [&>button]:border [&>button]:border-slate-700 [&>button]:bg-slate-900/70 [&>button]:p-1.5 [&>button]:text-slate-200 [&>button]:opacity-100", t ? "left-0 top-0 h-[var(--app-height)] max-h-[var(--app-height)] w-screen max-w-none translate-x-0 translate-y-0 rounded-none border-0" : "max-h-[calc(100vh-2rem)] max-w-[calc(100vw-2rem)] rounded-2xl"),
|
|
3141
|
-
style:
|
|
3127
|
+
style: Bn(t, n),
|
|
3142
3128
|
children: [/* @__PURE__ */ E("div", {
|
|
3143
3129
|
className: "flex items-center gap-3 border-b border-slate-800 px-4 py-3 pr-16",
|
|
3144
|
-
children: /* @__PURE__ */ E(
|
|
3130
|
+
children: /* @__PURE__ */ E(Ln, {
|
|
3145
3131
|
className: "truncate text-sm font-medium",
|
|
3146
3132
|
children: e?.name || "附件预览"
|
|
3147
3133
|
})
|
|
@@ -3151,7 +3137,7 @@ function Bn({ attachment: e, isMobile: t, previewImageSize: n, onClose: r, onIma
|
|
|
3151
3137
|
src: e.url,
|
|
3152
3138
|
alt: e.name,
|
|
3153
3139
|
className: p("object-contain", t ? "h-auto max-h-full w-full max-w-full" : "h-auto w-auto max-h-[calc(100vh-9rem)] max-w-[calc(100vw-5rem)]"),
|
|
3154
|
-
style:
|
|
3140
|
+
style: zn(t, n),
|
|
3155
3141
|
onLoad: (e) => {
|
|
3156
3142
|
let t = e.currentTarget;
|
|
3157
3143
|
i({
|
|
@@ -3170,7 +3156,7 @@ function Bn({ attachment: e, isMobile: t, previewImageSize: n, onClose: r, onIma
|
|
|
3170
3156
|
}
|
|
3171
3157
|
//#endregion
|
|
3172
3158
|
//#region src/utils/context.js
|
|
3173
|
-
function
|
|
3159
|
+
function Hn(e) {
|
|
3174
3160
|
if (typeof e == "number" && Number.isFinite(e) && e > 0) return e;
|
|
3175
3161
|
if (typeof e == "string" && e.trim()) {
|
|
3176
3162
|
let t = Number(e);
|
|
@@ -3178,15 +3164,15 @@ function Vn(e) {
|
|
|
3178
3164
|
}
|
|
3179
3165
|
return null;
|
|
3180
3166
|
}
|
|
3181
|
-
function
|
|
3167
|
+
function Un(e) {
|
|
3182
3168
|
return /[\u3400-\u4DBF\u4E00-\u9FFF\uF900-\uFAFF]/u.test(e);
|
|
3183
3169
|
}
|
|
3184
|
-
function
|
|
3170
|
+
function Wn(e) {
|
|
3185
3171
|
let t = String(e || "").trim();
|
|
3186
3172
|
if (!t) return 0;
|
|
3187
3173
|
let n = 0, r = 0;
|
|
3188
3174
|
for (let e of t) {
|
|
3189
|
-
if (
|
|
3175
|
+
if (Un(e)) {
|
|
3190
3176
|
n += 1;
|
|
3191
3177
|
continue;
|
|
3192
3178
|
}
|
|
@@ -3194,24 +3180,24 @@ function Un(e) {
|
|
|
3194
3180
|
}
|
|
3195
3181
|
return Math.max(1, n + Math.ceil(r / 4));
|
|
3196
3182
|
}
|
|
3197
|
-
function Wn(e) {
|
|
3198
|
-
if (!e) return 0;
|
|
3199
|
-
if (e.role === "system") return e.eventType === "context_checkpoint" ? Un(e.summary || "") : 0;
|
|
3200
|
-
let t = Un(e.content || "");
|
|
3201
|
-
return e.tools && (t += Object.values(e.tools).reduce((e, t) => e + Un(t?.name || "") + Un(t?.args || "") + Un(t?.output || ""), 0)), t;
|
|
3202
|
-
}
|
|
3203
3183
|
function Gn(e) {
|
|
3204
|
-
|
|
3184
|
+
if (!e) return 0;
|
|
3185
|
+
if (e.role === "system") return e.eventType === "context_checkpoint" ? Wn(e.summary || "") : 0;
|
|
3186
|
+
let t = Wn(e.content || "");
|
|
3187
|
+
return e.tools && (t += Object.values(e.tools).reduce((e, t) => e + Wn(t?.name || "") + Wn(t?.args || "") + Wn(t?.output || ""), 0)), t;
|
|
3205
3188
|
}
|
|
3206
3189
|
function Kn(e) {
|
|
3207
|
-
return e ?
|
|
3190
|
+
return e ? Hn(e.context_window_tokens) ?? Hn(e?.limits?.context_window_tokens) : null;
|
|
3208
3191
|
}
|
|
3209
|
-
function qn(
|
|
3210
|
-
|
|
3192
|
+
function qn(e) {
|
|
3193
|
+
return e ? Hn(e.auto_compact_threshold_percentage) ?? 84 : 84;
|
|
3194
|
+
}
|
|
3195
|
+
function Jn({ messages: e, draftInput: t, selectedModel: n }) {
|
|
3196
|
+
let r = Kn(n);
|
|
3211
3197
|
if (!r) return null;
|
|
3212
3198
|
let i = [...e || []].reverse().find((e) => e?.role === "system" && e?.eventType === "context_checkpoint" && e?.status === "running");
|
|
3213
3199
|
if (i) {
|
|
3214
|
-
let e =
|
|
3200
|
+
let e = Gn(i);
|
|
3215
3201
|
return {
|
|
3216
3202
|
label: "正在压缩上下文…",
|
|
3217
3203
|
phase: "compressing",
|
|
@@ -3220,10 +3206,10 @@ function qn({ messages: e, draftInput: t, selectedModel: n }) {
|
|
|
3220
3206
|
percent: Math.min(100, Math.max(0, Math.round(e / r * 100)))
|
|
3221
3207
|
};
|
|
3222
3208
|
}
|
|
3223
|
-
let a = (e || []).reduce((e, t) => e +
|
|
3209
|
+
let a = (e || []).reduce((e, t) => e + Gn(t), 0) + Wn(t || "");
|
|
3224
3210
|
if (a <= 0) return null;
|
|
3225
3211
|
let o = Math.min(100, Math.max(0, Math.round(a / r * 100)));
|
|
3226
|
-
return o >=
|
|
3212
|
+
return o >= qn(n) ? {
|
|
3227
3213
|
label: `估算上下文 ${o}% · 即将压缩`,
|
|
3228
3214
|
phase: "warning",
|
|
3229
3215
|
percent: o,
|
|
@@ -3239,8 +3225,8 @@ function qn({ messages: e, draftInput: t, selectedModel: n }) {
|
|
|
3239
3225
|
}
|
|
3240
3226
|
//#endregion
|
|
3241
3227
|
//#region src/components/chat/ConnectedMessageList.tsx
|
|
3242
|
-
function
|
|
3243
|
-
let u =
|
|
3228
|
+
function Yn({ agentName: e, isMobile: t, onDeleteFeedback: n, onSubmitFeedback: r, onRespondToApproval: i, onStopGeneration: a, onCancelRemote: o, checkpointResumeEnabled: s = !1, onResumeCheckpoint: c, onLoadOlderSessionEvents: l }) {
|
|
3229
|
+
let u = q((e) => e.messages), d = z((e) => e.currentSessionId), f = L((e) => !!(e.getSessionActivity(d) && e.isSessionStreaming(d))), p = L((e) => e.getSessionActivity(d)), h = Q((e) => e.getSessionCheckpoints(d)), g = z((e) => d ? e.eventCache[d] : null), v = _((e) => e.input), y = I((e) => e.availableModels), b = I((e) => e.selectedModel), ee = _((e) => e.previewAttachment), te = _((e) => e.previewImageSize), x = M(null), S = M(!0), C = M(!1), w = M(0), T = M(f), O = M(!1), k = M(!0), re = ie(() => y.find((e) => e.id === b) || null, [y, b]), A = ie(() => Jn({
|
|
3244
3230
|
messages: u,
|
|
3245
3231
|
draftInput: v,
|
|
3246
3232
|
selectedModel: re
|
|
@@ -3291,19 +3277,28 @@ function Jn({ agentName: e, isMobile: t, onDeleteFeedback: n, onSubmitFeedback:
|
|
|
3291
3277
|
let e = x.current;
|
|
3292
3278
|
if (e) {
|
|
3293
3279
|
if (u.length > 0 && k.current) {
|
|
3294
|
-
let e = z.getState().currentSessionId, t =
|
|
3295
|
-
|
|
3296
|
-
|
|
3297
|
-
|
|
3298
|
-
|
|
3299
|
-
|
|
3280
|
+
let e = z.getState().currentSessionId, t = x.current, n = t ? t.style.scrollBehavior : "";
|
|
3281
|
+
t && (t.style.scrollBehavior = "auto", t.scrollTop = t.scrollHeight, w.current = t.scrollTop);
|
|
3282
|
+
let r = 0, i = t?.scrollHeight ?? -1, a = !1, o = 0, s = () => {
|
|
3283
|
+
a || (a = !0, t && (t.style.scrollBehavior = n), S.current = !0, C.current = !1, k.current = !1);
|
|
3284
|
+
}, c = () => {
|
|
3285
|
+
if (a) return;
|
|
3286
|
+
if (z.getState().currentSessionId !== e) {
|
|
3287
|
+
a = !0;
|
|
3288
|
+
return;
|
|
3289
|
+
}
|
|
3290
|
+
let t = x.current;
|
|
3291
|
+
if (t) {
|
|
3292
|
+
if (t.scrollHeight !== i) i = t.scrollHeight, t.scrollTop = t.scrollHeight, w.current = t.scrollTop, r = 0;
|
|
3293
|
+
else if (r += 1, r >= 3) {
|
|
3294
|
+
s();
|
|
3300
3295
|
return;
|
|
3301
3296
|
}
|
|
3302
|
-
|
|
3297
|
+
o = requestAnimationFrame(c);
|
|
3303
3298
|
}
|
|
3304
|
-
};
|
|
3305
|
-
return
|
|
3306
|
-
cancelAnimationFrame(
|
|
3299
|
+
}, l = window.setTimeout(s, 2e3);
|
|
3300
|
+
return o = requestAnimationFrame(c), () => {
|
|
3301
|
+
cancelAnimationFrame(o), window.clearTimeout(l), s();
|
|
3307
3302
|
};
|
|
3308
3303
|
}
|
|
3309
3304
|
S.current && (e.scrollTop = e.scrollHeight, w.current = e.scrollTop);
|
|
@@ -3326,7 +3321,7 @@ function Jn({ agentName: e, isMobile: t, onDeleteFeedback: n, onSubmitFeedback:
|
|
|
3326
3321
|
checkpoints: s ? h : [],
|
|
3327
3322
|
onResumeCheckpoint: c,
|
|
3328
3323
|
scrollRef: x
|
|
3329
|
-
}), /* @__PURE__ */ E(
|
|
3324
|
+
}), /* @__PURE__ */ E(Vn, {
|
|
3330
3325
|
attachment: ee,
|
|
3331
3326
|
isMobile: t,
|
|
3332
3327
|
previewImageSize: te,
|
|
@@ -3338,7 +3333,7 @@ function Jn({ agentName: e, isMobile: t, onDeleteFeedback: n, onSubmitFeedback:
|
|
|
3338
3333
|
}
|
|
3339
3334
|
//#endregion
|
|
3340
3335
|
//#region src/utils/attachment.ts
|
|
3341
|
-
function
|
|
3336
|
+
function Xn(e) {
|
|
3342
3337
|
return [
|
|
3343
3338
|
e.name,
|
|
3344
3339
|
e.size,
|
|
@@ -3346,19 +3341,19 @@ function Yn(e) {
|
|
|
3346
3341
|
e.type
|
|
3347
3342
|
].join(":");
|
|
3348
3343
|
}
|
|
3349
|
-
function
|
|
3344
|
+
function Zn(e, t) {
|
|
3350
3345
|
let n = /* @__PURE__ */ new Map();
|
|
3351
|
-
for (let t of e) n.set(
|
|
3352
|
-
for (let e of t) n.set(
|
|
3346
|
+
for (let t of e) n.set(Xn(t), t);
|
|
3347
|
+
for (let e of t) n.set(Xn(e), e);
|
|
3353
3348
|
return Array.from(n.values());
|
|
3354
3349
|
}
|
|
3355
|
-
function
|
|
3350
|
+
function Qn(e) {
|
|
3356
3351
|
return Array.from(e.clipboardData.items || []).filter((e) => e.kind === "file").map((e) => e.getAsFile()).filter((e) => !!e);
|
|
3357
3352
|
}
|
|
3358
3353
|
//#endregion
|
|
3359
3354
|
//#region src/components/chat/ConnectedComposer.tsx
|
|
3360
|
-
function
|
|
3361
|
-
let o = _((e) => e.input), s = _((e) => e.attachments), c = z((e) => e.currentSessionId), l = L((e) => !!(e.getSessionActivity(c) && e.isSessionStreaming(c))), u = _((e) => e.queuedDrafts), d =
|
|
3355
|
+
function $n({ composerMaxHeight: e, submitDraft: t, stopGeneration: n, cancelRemote: r, isMobile: i }) {
|
|
3356
|
+
let o = _((e) => e.input), s = _((e) => e.attachments), c = z((e) => e.currentSessionId), l = L((e) => !!(e.getSessionActivity(c) && e.isSessionStreaming(c))), u = _((e) => e.queuedDrafts), d = q((e) => e.messages), f = I((e) => e.availableModels), p = I((e) => e.selectedModel), m = M(null), h = M(null), g = ie(() => f.find((e) => e.id === p) || null, [f, p]), v = ie(() => Jn({
|
|
3362
3357
|
messages: d,
|
|
3363
3358
|
draftInput: o,
|
|
3364
3359
|
selectedModel: g
|
|
@@ -3375,7 +3370,7 @@ function Qn({ composerMaxHeight: e, submitDraft: t, stopGeneration: n, cancelRem
|
|
|
3375
3370
|
let b = (t) => {
|
|
3376
3371
|
_.getState().setInput(t.target.value), t.target.style.height = "auto", t.target.style.height = `${Math.min(t.target.scrollHeight, e)}px`;
|
|
3377
3372
|
}, ee = (e) => {
|
|
3378
|
-
e.length && _.getState().setAttachments((t) =>
|
|
3373
|
+
e.length && _.getState().setAttachments((t) => Zn(t, e));
|
|
3379
3374
|
};
|
|
3380
3375
|
return /* @__PURE__ */ E(a, {
|
|
3381
3376
|
attachments: s,
|
|
@@ -3389,7 +3384,7 @@ function Qn({ composerMaxHeight: e, submitDraft: t, stopGeneration: n, cancelRem
|
|
|
3389
3384
|
onAppendAttachments: ee,
|
|
3390
3385
|
onInputChange: b,
|
|
3391
3386
|
onPaste: (e) => {
|
|
3392
|
-
let t =
|
|
3387
|
+
let t = Qn(e);
|
|
3393
3388
|
t.length && (e.preventDefault(), e.stopPropagation(), ee(t));
|
|
3394
3389
|
},
|
|
3395
3390
|
onRemoveAttachment: (e) => _.getState().setAttachments((t) => t.filter((t, n) => n !== e)),
|
|
@@ -3401,8 +3396,8 @@ function Qn({ composerMaxHeight: e, submitDraft: t, stopGeneration: n, cancelRem
|
|
|
3401
3396
|
}
|
|
3402
3397
|
//#endregion
|
|
3403
3398
|
//#region src/api/session.ts
|
|
3404
|
-
async function
|
|
3405
|
-
let n = await
|
|
3399
|
+
async function er(e, t) {
|
|
3400
|
+
let n = await K("ListSessions", {
|
|
3406
3401
|
AgentId: e,
|
|
3407
3402
|
Page: t?.page,
|
|
3408
3403
|
PageSize: t?.pageSize
|
|
@@ -3414,16 +3409,19 @@ async function $n(e, t) {
|
|
|
3414
3409
|
PageSize: Number.isFinite(Number(n.PageSize)) ? Number(n.PageSize) : t?.pageSize ?? n.Sessions?.length ?? 0
|
|
3415
3410
|
};
|
|
3416
3411
|
}
|
|
3417
|
-
async function er(e, t) {
|
|
3418
|
-
return (await q("CreateSession", { AgentId: e }, t)).Session;
|
|
3419
|
-
}
|
|
3420
3412
|
async function tr(e, t) {
|
|
3421
|
-
await
|
|
3413
|
+
return (await K("CreateSession", { AgentId: e }, t)).Session;
|
|
3414
|
+
}
|
|
3415
|
+
async function nr(e, t) {
|
|
3416
|
+
await K("DeleteSession", { SessionId: e }, t);
|
|
3417
|
+
}
|
|
3418
|
+
async function rr(e, t) {
|
|
3419
|
+
return (await K("GetSession", { SessionId: e }, t)).Session;
|
|
3422
3420
|
}
|
|
3423
3421
|
//#endregion
|
|
3424
3422
|
//#region src/api/events.ts
|
|
3425
|
-
async function
|
|
3426
|
-
let n = await
|
|
3423
|
+
async function ir(e, t) {
|
|
3424
|
+
let n = await K("ListSessionEvents", {
|
|
3427
3425
|
SessionId: e,
|
|
3428
3426
|
Offset: t?.offset,
|
|
3429
3427
|
Limit: t?.limit
|
|
@@ -3436,35 +3434,54 @@ async function nr(e, t) {
|
|
|
3436
3434
|
};
|
|
3437
3435
|
}
|
|
3438
3436
|
//#endregion
|
|
3437
|
+
//#region src/api/messages.ts
|
|
3438
|
+
async function ar(e, t) {
|
|
3439
|
+
let n = await K("ListSessionMessages", {
|
|
3440
|
+
AgentId: t?.agentId,
|
|
3441
|
+
SessionId: e,
|
|
3442
|
+
AfterSeqId: t?.afterSeqId,
|
|
3443
|
+
Limit: t?.limit,
|
|
3444
|
+
IncludeReasoning: t?.includeReasoning,
|
|
3445
|
+
IncludeToolEvents: t?.includeToolEvents,
|
|
3446
|
+
IncludeAttachments: t?.includeAttachments
|
|
3447
|
+
}, t);
|
|
3448
|
+
return {
|
|
3449
|
+
Messages: n.Messages ?? [],
|
|
3450
|
+
LatestSeqId: Number.isFinite(Number(n.LatestSeqId)) ? Number(n.LatestSeqId) : 0,
|
|
3451
|
+
HasMore: !!n.HasMore,
|
|
3452
|
+
NextCursor: Number.isFinite(Number(n.NextCursor)) ? Number(n.NextCursor) : null
|
|
3453
|
+
};
|
|
3454
|
+
}
|
|
3455
|
+
//#endregion
|
|
3439
3456
|
//#region src/api/run.ts
|
|
3440
|
-
async function
|
|
3441
|
-
return
|
|
3457
|
+
async function or(e, t) {
|
|
3458
|
+
return ze("RunAgent", e, t);
|
|
3442
3459
|
}
|
|
3443
3460
|
//#endregion
|
|
3444
3461
|
//#region src/api/checkpoints.ts
|
|
3445
|
-
async function
|
|
3462
|
+
async function sr(e, t) {
|
|
3446
3463
|
let n = {
|
|
3447
3464
|
AgentId: e.agentId,
|
|
3448
3465
|
SessionId: e.sessionId
|
|
3449
3466
|
};
|
|
3450
|
-
return e.runId && (n.RunId = e.runId),
|
|
3467
|
+
return e.runId && (n.RunId = e.runId), K("ListSessionCheckpoints", n, t);
|
|
3451
3468
|
}
|
|
3452
|
-
async function
|
|
3453
|
-
return
|
|
3469
|
+
async function cr(e, t) {
|
|
3470
|
+
return K("GetCheckpointResumePreview", {
|
|
3454
3471
|
AgentId: e.agentId,
|
|
3455
3472
|
SessionId: e.sessionId,
|
|
3456
3473
|
RunId: e.runId,
|
|
3457
3474
|
CheckpointId: e.checkpointId
|
|
3458
3475
|
}, t);
|
|
3459
3476
|
}
|
|
3460
|
-
async function
|
|
3477
|
+
async function lr(e, t) {
|
|
3461
3478
|
let n = {
|
|
3462
3479
|
AgentId: e.agentId,
|
|
3463
3480
|
SessionId: e.sessionId
|
|
3464
3481
|
};
|
|
3465
|
-
return e.runId && (n.RunId = e.runId), e.checkpointId && (n.CheckpointId = e.checkpointId),
|
|
3482
|
+
return e.runId && (n.RunId = e.runId), e.checkpointId && (n.CheckpointId = e.checkpointId), K("ListToolReceipts", n, t);
|
|
3466
3483
|
}
|
|
3467
|
-
async function
|
|
3484
|
+
async function ur(e, t) {
|
|
3468
3485
|
let n = {
|
|
3469
3486
|
AgentId: e.agentId,
|
|
3470
3487
|
SessionId: e.sessionId,
|
|
@@ -3472,28 +3489,28 @@ async function sr(e, t) {
|
|
|
3472
3489
|
CheckpointId: e.checkpointId,
|
|
3473
3490
|
Stream: !0
|
|
3474
3491
|
};
|
|
3475
|
-
return e.resumeAttemptId && (n.ResumeAttemptId = e.resumeAttemptId), e.invocationId && (n.InvocationId = e.invocationId),
|
|
3492
|
+
return e.resumeAttemptId && (n.ResumeAttemptId = e.resumeAttemptId), e.invocationId && (n.InvocationId = e.invocationId), ze("ResumeRun", n, t);
|
|
3476
3493
|
}
|
|
3477
3494
|
//#endregion
|
|
3478
3495
|
//#region src/api/workspace.ts
|
|
3479
|
-
async function
|
|
3480
|
-
return
|
|
3496
|
+
async function dr(e, t, n) {
|
|
3497
|
+
return K("ListWorkspaceFiles", {
|
|
3481
3498
|
AgentId: e,
|
|
3482
3499
|
Path: t,
|
|
3483
3500
|
Recursive: n
|
|
3484
3501
|
});
|
|
3485
3502
|
}
|
|
3486
|
-
async function
|
|
3487
|
-
return
|
|
3503
|
+
async function fr(e) {
|
|
3504
|
+
return Le("AddWorkspaceFile", e);
|
|
3488
3505
|
}
|
|
3489
|
-
async function
|
|
3490
|
-
return
|
|
3506
|
+
async function pr(e, t) {
|
|
3507
|
+
return K("DeleteWorkspaceFile", {
|
|
3491
3508
|
AgentId: e,
|
|
3492
3509
|
Path: t
|
|
3493
3510
|
});
|
|
3494
3511
|
}
|
|
3495
|
-
async function
|
|
3496
|
-
return
|
|
3512
|
+
async function mr(e, t, n) {
|
|
3513
|
+
return Re("GetWorkspaceFileContent", {
|
|
3497
3514
|
AgentId: e,
|
|
3498
3515
|
FilePath: t
|
|
3499
3516
|
}, {
|
|
@@ -3503,88 +3520,94 @@ async function dr(e, t, n) {
|
|
|
3503
3520
|
}
|
|
3504
3521
|
//#endregion
|
|
3505
3522
|
//#region src/api/upload.ts
|
|
3506
|
-
async function
|
|
3507
|
-
return
|
|
3523
|
+
async function hr(e, t) {
|
|
3524
|
+
return Le("UploadFile", e, t);
|
|
3508
3525
|
}
|
|
3509
3526
|
//#endregion
|
|
3510
3527
|
//#region src/core/api/facade.ts
|
|
3511
|
-
var
|
|
3528
|
+
var gr = class {
|
|
3512
3529
|
async listSessions(e, t) {
|
|
3513
|
-
return
|
|
3530
|
+
return er(e, t);
|
|
3514
3531
|
}
|
|
3515
3532
|
async createSession(e, t) {
|
|
3516
|
-
return { SessionId: (await
|
|
3533
|
+
return { SessionId: (await tr(e, t)).SessionId };
|
|
3517
3534
|
}
|
|
3518
3535
|
async deleteSession(e, t) {
|
|
3519
|
-
await
|
|
3536
|
+
await nr(e, t);
|
|
3537
|
+
}
|
|
3538
|
+
async getSession(e, t) {
|
|
3539
|
+
return rr(e, t);
|
|
3520
3540
|
}
|
|
3521
3541
|
async listSessionEvents(e, t) {
|
|
3522
|
-
return
|
|
3542
|
+
return ir(e, t);
|
|
3543
|
+
}
|
|
3544
|
+
async listSessionMessages(e, t) {
|
|
3545
|
+
return ar(e, t);
|
|
3523
3546
|
}
|
|
3524
3547
|
async listSessionCheckpoints(e, t) {
|
|
3525
|
-
return
|
|
3548
|
+
return sr(e, t);
|
|
3526
3549
|
}
|
|
3527
3550
|
async previewCheckpointResume(e, t) {
|
|
3528
|
-
return
|
|
3551
|
+
return cr(e, t);
|
|
3529
3552
|
}
|
|
3530
3553
|
async listToolReceipts(e, t) {
|
|
3531
|
-
return
|
|
3554
|
+
return lr(e, t);
|
|
3532
3555
|
}
|
|
3533
3556
|
async runAgent(e, t) {
|
|
3534
|
-
return
|
|
3557
|
+
return or(e, t);
|
|
3535
3558
|
}
|
|
3536
3559
|
async resumeRun(e, t) {
|
|
3537
|
-
return
|
|
3560
|
+
return ur(e, t);
|
|
3538
3561
|
}
|
|
3539
3562
|
async subscribeRunEvents(e, t) {
|
|
3540
|
-
return
|
|
3563
|
+
return Be("SubscribeRunEvents", {
|
|
3541
3564
|
SessionId: e.sessionId,
|
|
3542
3565
|
InvocationId: e.invocationId,
|
|
3543
3566
|
AfterSeqId: String(e.afterSeqId)
|
|
3544
3567
|
}, t);
|
|
3545
3568
|
}
|
|
3546
3569
|
async cancelRun(e, t, n) {
|
|
3547
|
-
return
|
|
3570
|
+
return K("CancelRun", {
|
|
3548
3571
|
AgentId: e,
|
|
3549
3572
|
InvocationId: t
|
|
3550
3573
|
}, n);
|
|
3551
3574
|
}
|
|
3552
3575
|
async getResponseFeedback(e, t) {
|
|
3553
|
-
return
|
|
3576
|
+
return K("GetResponseFeedback", e, t);
|
|
3554
3577
|
}
|
|
3555
3578
|
async upsertResponseFeedback(e, t) {
|
|
3556
|
-
return
|
|
3579
|
+
return K("UpsertResponseFeedback", e, t);
|
|
3557
3580
|
}
|
|
3558
3581
|
async deleteResponseFeedback(e, t) {
|
|
3559
|
-
await
|
|
3582
|
+
await K("DeleteResponseFeedback", e, t);
|
|
3560
3583
|
}
|
|
3561
3584
|
async listWorkspaceFiles(e, t, n) {
|
|
3562
|
-
return
|
|
3585
|
+
return dr(e, t, n);
|
|
3563
3586
|
}
|
|
3564
3587
|
async addWorkspaceFile(e) {
|
|
3565
|
-
return
|
|
3588
|
+
return fr(e);
|
|
3566
3589
|
}
|
|
3567
3590
|
async deleteWorkspaceFile(e, t) {
|
|
3568
|
-
await
|
|
3591
|
+
await pr(e, t);
|
|
3569
3592
|
}
|
|
3570
3593
|
async getWorkspaceFileContent(e, t, n) {
|
|
3571
|
-
return
|
|
3594
|
+
return mr(e, t, n);
|
|
3572
3595
|
}
|
|
3573
3596
|
async listAgentModels(e) {
|
|
3574
|
-
return
|
|
3597
|
+
return He(e);
|
|
3575
3598
|
}
|
|
3576
3599
|
async getAgentUiBootstrap() {
|
|
3577
|
-
return
|
|
3600
|
+
return Ve();
|
|
3578
3601
|
}
|
|
3579
3602
|
async uploadFile(e, t) {
|
|
3580
|
-
return
|
|
3603
|
+
return hr(e, t);
|
|
3581
3604
|
}
|
|
3582
|
-
},
|
|
3583
|
-
function
|
|
3584
|
-
let a = e ||
|
|
3605
|
+
}, _r = new gr(), vr = k.lazy(() => import("./ArtifactsPanel-DCn5q1OB.js").then((e) => ({ default: e.ArtifactsPanel }))), yr = k.lazy(() => import("./NativeTerminalPanel-CjyPyYC4.js").then((e) => e.n).then((e) => ({ default: e.NativeTerminalPanel })));
|
|
3606
|
+
function br({ apiAdapter: e, initialSurface: r = "chat", routeShell: i } = {}) {
|
|
3607
|
+
let a = e || _r, o = F((e) => e.agentId), s = z((e) => e.currentSessionId), c = L((e) => e.isStreaming), l = _((e) => e.sidebarOpen), u = _((e) => e.mobileSidebarOpen), d = _((e) => e.mobileActionsOpen), f = F((e) => e.agentName), p = I((e) => e.selectedModel), m = I((e) => e.availableModels), h = I((e) => e.modelSource), v = I((e) => e.modelCatalogLoaded), te = I((e) => e.thinkingMode), x = F((e) => e.agentFramework), S = F((e) => e.workspaceFiles), C = F((e) => e.accessMode), T = _((e) => e.workspacePanelOpen), O = _((e) => e.workspacePanelWidth), k = _((e) => e.workspacePanelFullscreen), ie = F((e) => e.apiFormats), N = F((e) => e.capabilities), P = w((e) => e.visible && !!e.content), oe = M([]), se = M(null), { isMobile: R, viewportHeight: ce } = Fe(), le = ve({
|
|
3585
3608
|
isMobile: R,
|
|
3586
3609
|
viewportHeight: ce
|
|
3587
|
-
}), { fetchSessions: ue, loadMoreSessions: de, loadSession: fe, loadOlderSessionEvents: pe, createNewSession: me, deleteSession: he, currentSessionIdRef: B, agentIdRef:
|
|
3610
|
+
}), { fetchSessions: ue, loadMoreSessions: de, loadSession: fe, loadOlderSessionEvents: pe, createNewSession: me, deleteSession: he, currentSessionIdRef: B, agentIdRef: ge, runSubscriptionAbortRef: _e } = kn({
|
|
3588
3611
|
agentId: o,
|
|
3589
3612
|
currentSessionId: s,
|
|
3590
3613
|
isMobile: R,
|
|
@@ -3592,39 +3615,39 @@ function _r({ apiAdapter: e, initialSurface: r = "chat", routeShell: i } = {}) {
|
|
|
3592
3615
|
api: a,
|
|
3593
3616
|
resetCompaction: () => {},
|
|
3594
3617
|
disconnectRun: () => se.current?.()
|
|
3595
|
-
}),
|
|
3618
|
+
}), ye = A((e) => {
|
|
3596
3619
|
if (!e) return;
|
|
3597
3620
|
let t = () => {
|
|
3598
|
-
z.getState().clearSessionEventCache(e), ue(
|
|
3621
|
+
z.getState().clearSessionEventCache(e), ue(ge.current, e);
|
|
3599
3622
|
};
|
|
3600
3623
|
queueMicrotask(t), window.setTimeout(t, 1800), window.setTimeout(t, 5e3);
|
|
3601
|
-
}, [
|
|
3624
|
+
}, [ge, ue]), be = m.find((e) => e.id === p) || null, { submitDraft: xe, stopGeneration: Se, disconnectRun: Ce, resumeCheckpoint: Te } = fn({
|
|
3602
3625
|
agentId: o,
|
|
3603
3626
|
currentSessionId: s,
|
|
3604
3627
|
agentFramework: x,
|
|
3605
3628
|
apiFormats: ie,
|
|
3606
3629
|
selectedModel: p,
|
|
3607
|
-
selectedModelMetadata:
|
|
3630
|
+
selectedModelMetadata: be,
|
|
3608
3631
|
thinkingMode: te,
|
|
3609
3632
|
uiCapabilities: N,
|
|
3610
3633
|
isMobile: R,
|
|
3611
3634
|
api: a,
|
|
3612
3635
|
currentSessionIdRef: B,
|
|
3613
|
-
agentIdRef:
|
|
3636
|
+
agentIdRef: ge,
|
|
3614
3637
|
queuedDraftRef: oe,
|
|
3615
|
-
onRunSettled:
|
|
3638
|
+
onRunSettled: ye
|
|
3616
3639
|
});
|
|
3617
3640
|
j(() => {
|
|
3618
|
-
se.current =
|
|
3619
|
-
}, [
|
|
3620
|
-
let
|
|
3641
|
+
se.current = Ce;
|
|
3642
|
+
}, [Ce]);
|
|
3643
|
+
let Ee = A(() => {
|
|
3621
3644
|
let e = B.current;
|
|
3622
|
-
|
|
3645
|
+
_e.current?.abort(), L.getState().stopActivity(), L.getState().stopSessionActivity(e), Se();
|
|
3623
3646
|
}, [
|
|
3624
3647
|
B,
|
|
3625
|
-
|
|
3626
|
-
|
|
3627
|
-
]),
|
|
3648
|
+
_e,
|
|
3649
|
+
Se
|
|
3650
|
+
]), De = A(async () => {
|
|
3628
3651
|
let e = B.current, t = L.getState(), n = t.currentRunId || t.getSessionActivity(e)?.runId || "";
|
|
3629
3652
|
if (n) try {
|
|
3630
3653
|
await a.cancelRun(o, n), L.getState().stopSessionActivity(e, "取消请求已发送,后台运行会停在最近 checkpoint。");
|
|
@@ -3637,49 +3660,49 @@ function _r({ apiAdapter: e, initialSurface: r = "chat", routeShell: i } = {}) {
|
|
|
3637
3660
|
countEvent: !1
|
|
3638
3661
|
});
|
|
3639
3662
|
}
|
|
3640
|
-
|
|
3663
|
+
ye(e);
|
|
3641
3664
|
}, [
|
|
3642
3665
|
a,
|
|
3643
3666
|
o,
|
|
3644
3667
|
B,
|
|
3645
|
-
|
|
3646
|
-
]), { submitResponseFeedback:
|
|
3668
|
+
ye
|
|
3669
|
+
]), { submitResponseFeedback: Oe, deleteResponseFeedback: ke, respondToApproval: je } = pn({
|
|
3647
3670
|
agentId: o,
|
|
3648
3671
|
currentSessionId: s,
|
|
3649
3672
|
isStreaming: c,
|
|
3650
3673
|
api: a,
|
|
3651
|
-
submitDraft:
|
|
3674
|
+
submitDraft: xe
|
|
3652
3675
|
});
|
|
3653
|
-
|
|
3654
|
-
|
|
3676
|
+
Ge({ fetchSessions: ue }), j(() => {
|
|
3677
|
+
ge.current = o, B.current = s, we(o, s);
|
|
3655
3678
|
}, [
|
|
3656
3679
|
o,
|
|
3657
3680
|
s,
|
|
3658
|
-
|
|
3681
|
+
ge,
|
|
3659
3682
|
B
|
|
3660
3683
|
]), j(() => {
|
|
3661
3684
|
R ? _.getState().setWorkspacePanelFullscreen(!1) : (_.getState().setMobileSidebarOpen(!1), _.getState().setMobileActionsOpen(!1));
|
|
3662
3685
|
}, [R]), j(() => {
|
|
3663
3686
|
T || _.getState().setWorkspacePanelFullscreen(!1);
|
|
3664
3687
|
}, [T]), j(() => () => {
|
|
3665
|
-
|
|
3666
|
-
}, [
|
|
3667
|
-
let
|
|
3688
|
+
_e.current?.abort();
|
|
3689
|
+
}, [_e]);
|
|
3690
|
+
let Ne = t(N), Pe = !!N.Thinking, V = g({
|
|
3668
3691
|
workspaceFiles: S,
|
|
3669
3692
|
accessMode: C
|
|
3670
|
-
}),
|
|
3693
|
+
}), H = y({ isMobile: R }), U = Ae({
|
|
3671
3694
|
capability: N.NativeDashboard,
|
|
3672
3695
|
agentFramework: x,
|
|
3673
3696
|
accessMode: C,
|
|
3674
3697
|
origin: window.location.origin
|
|
3675
|
-
}),
|
|
3698
|
+
}), W = !Ne, Ie = x === "openclaw" ? "OpenClaw" : x === "hermes" ? "Hermes" : "原生运行时", G = be?.display_name || p || "", K = !R && l && Ne, Le = M(!1), [Re, ze] = ae(r === "tui"), Be = Re && !!N.NativeTerminal?.Enabled;
|
|
3676
3699
|
j(() => {
|
|
3677
|
-
|
|
3678
|
-
}, [r,
|
|
3679
|
-
let
|
|
3700
|
+
Le.current || r !== "workspace" || !V || (Le.current = !0, _.getState().setWorkspacePanelOpen(!0), _.getState().setWorkspacePanelFullscreen(!0));
|
|
3701
|
+
}, [r, V]);
|
|
3702
|
+
let Ve = /* @__PURE__ */ D("div", {
|
|
3680
3703
|
className: "flex h-[var(--app-height)] min-h-[var(--app-height)] overflow-hidden bg-white font-sans text-slate-800 dark:bg-slate-900 dark:text-slate-200",
|
|
3681
3704
|
children: [
|
|
3682
|
-
/* @__PURE__ */ E(
|
|
3705
|
+
/* @__PURE__ */ E(An, {
|
|
3683
3706
|
uiCapabilities: N,
|
|
3684
3707
|
createNewSession: me,
|
|
3685
3708
|
deleteSession: he,
|
|
@@ -3691,7 +3714,7 @@ function _r({ apiAdapter: e, initialSurface: r = "chat", routeShell: i } = {}) {
|
|
|
3691
3714
|
children: [/* @__PURE__ */ E(n, {
|
|
3692
3715
|
agentName: f,
|
|
3693
3716
|
currentSessionId: s,
|
|
3694
|
-
nativeLauncherMode:
|
|
3717
|
+
nativeLauncherMode: W,
|
|
3695
3718
|
isMobile: R,
|
|
3696
3719
|
sidebarOpen: l,
|
|
3697
3720
|
mobileSidebarOpen: u,
|
|
@@ -3703,40 +3726,40 @@ function _r({ apiAdapter: e, initialSurface: r = "chat", routeShell: i } = {}) {
|
|
|
3703
3726
|
onSelectModel: (e) => {
|
|
3704
3727
|
I.getState().setSelectedModel(e), R && _.getState().setMobileActionsOpen(!1);
|
|
3705
3728
|
},
|
|
3706
|
-
selectedModelLabel:
|
|
3729
|
+
selectedModelLabel: G,
|
|
3707
3730
|
modelCatalogLoaded: v,
|
|
3708
3731
|
modelSource: h,
|
|
3709
|
-
thinkingEnabled:
|
|
3732
|
+
thinkingEnabled: Pe,
|
|
3710
3733
|
thinkingMode: te,
|
|
3711
|
-
onSelectThinkingMode: (e) => I.getState().setThinkingMode(
|
|
3734
|
+
onSelectThinkingMode: (e) => I.getState().setThinkingMode(Me(e)),
|
|
3712
3735
|
mobileActionsOpen: d,
|
|
3713
3736
|
onMobileActionsOpenChange: (e) => _.getState().setMobileActionsOpen(e),
|
|
3714
|
-
workspaceEnabled:
|
|
3737
|
+
workspaceEnabled: V,
|
|
3715
3738
|
onOpenWorkspace: () => _.getState().setWorkspacePanelOpen(!0),
|
|
3716
|
-
nativeManagementLink:
|
|
3739
|
+
nativeManagementLink: U,
|
|
3717
3740
|
nativeTerminal: N.NativeTerminal
|
|
3718
|
-
}),
|
|
3719
|
-
productLabel:
|
|
3720
|
-
nativeManagementLink:
|
|
3741
|
+
}), W ? /* @__PURE__ */ E(b, {
|
|
3742
|
+
productLabel: Ie,
|
|
3743
|
+
nativeManagementLink: U,
|
|
3721
3744
|
nativeTerminal: N.NativeTerminal,
|
|
3722
|
-
workspaceEnabled:
|
|
3745
|
+
workspaceEnabled: V,
|
|
3723
3746
|
onOpenWorkspace: () => _.getState().setWorkspacePanelOpen(!0)
|
|
3724
|
-
}) : /* @__PURE__ */ D(ne, { children: [/* @__PURE__ */ E(
|
|
3747
|
+
}) : /* @__PURE__ */ D(ne, { children: [/* @__PURE__ */ E(Yn, {
|
|
3725
3748
|
agentName: f,
|
|
3726
3749
|
isMobile: R,
|
|
3727
|
-
onDeleteFeedback:
|
|
3728
|
-
onSubmitFeedback:
|
|
3729
|
-
onRespondToApproval:
|
|
3730
|
-
onStopGeneration:
|
|
3731
|
-
onCancelRemote: N.StopRun ?
|
|
3750
|
+
onDeleteFeedback: ke,
|
|
3751
|
+
onSubmitFeedback: Oe,
|
|
3752
|
+
onRespondToApproval: je,
|
|
3753
|
+
onStopGeneration: Ee,
|
|
3754
|
+
onCancelRemote: N.StopRun ? De : void 0,
|
|
3732
3755
|
checkpointResumeEnabled: N.RunLifecycle.Enabled && N.RunLifecycle.Checkpoints && N.RunLifecycle.CheckpointResume,
|
|
3733
|
-
onResumeCheckpoint:
|
|
3756
|
+
onResumeCheckpoint: Te,
|
|
3734
3757
|
onLoadOlderSessionEvents: pe
|
|
3735
|
-
}), /* @__PURE__ */ E(
|
|
3758
|
+
}), /* @__PURE__ */ E($n, {
|
|
3736
3759
|
composerMaxHeight: le,
|
|
3737
|
-
submitDraft:
|
|
3738
|
-
stopGeneration:
|
|
3739
|
-
cancelRemote: N.StopRun ?
|
|
3760
|
+
submitDraft: xe,
|
|
3761
|
+
stopGeneration: Ee,
|
|
3762
|
+
cancelRemote: N.StopRun ? De : void 0,
|
|
3740
3763
|
isMobile: R
|
|
3741
3764
|
})] })]
|
|
3742
3765
|
}),
|
|
@@ -3747,20 +3770,20 @@ function _r({ apiAdapter: e, initialSurface: r = "chat", routeShell: i } = {}) {
|
|
|
3747
3770
|
workspacePanelWidth: O,
|
|
3748
3771
|
workspacePanelFullscreen: k,
|
|
3749
3772
|
isMobile: R,
|
|
3750
|
-
workspaceEnabled:
|
|
3773
|
+
workspaceEnabled: V,
|
|
3751
3774
|
workspaceFiles: S,
|
|
3752
|
-
workspacePanelPresentation:
|
|
3775
|
+
workspacePanelPresentation: H,
|
|
3753
3776
|
closeWorkspacePanel: () => {
|
|
3754
3777
|
_.getState().setWorkspacePanelFullscreen(!1), _.getState().setWorkspacePanelOpen(!1);
|
|
3755
3778
|
},
|
|
3756
3779
|
handleWorkspacePanelResizeStart: (e) => {
|
|
3757
3780
|
if (k || R) return;
|
|
3758
3781
|
e.preventDefault();
|
|
3759
|
-
let t = e.clientX, n = O, r =
|
|
3782
|
+
let t = e.clientX, n = O, r = Ne && K ? 280 : 0, i = document.body.style.cursor, a = document.body.style.userSelect;
|
|
3760
3783
|
document.body.style.cursor = "col-resize", document.body.style.userSelect = "none";
|
|
3761
3784
|
let o = (e) => {
|
|
3762
3785
|
let i = n + t - e.clientX;
|
|
3763
|
-
_.getState().setWorkspacePanelWidth(
|
|
3786
|
+
_.getState().setWorkspacePanelWidth(ht(i, window.innerWidth, r));
|
|
3764
3787
|
}, s = () => {
|
|
3765
3788
|
document.body.style.cursor = i, document.body.style.userSelect = a, window.removeEventListener("pointermove", o), window.removeEventListener("pointerup", s), window.removeEventListener("pointercancel", s);
|
|
3766
3789
|
};
|
|
@@ -3770,51 +3793,51 @@ function _r({ apiAdapter: e, initialSurface: r = "chat", routeShell: i } = {}) {
|
|
|
3770
3793
|
}),
|
|
3771
3794
|
P && /* @__PURE__ */ E(re, {
|
|
3772
3795
|
fallback: null,
|
|
3773
|
-
children: /* @__PURE__ */ E(
|
|
3796
|
+
children: /* @__PURE__ */ E(vr, {})
|
|
3774
3797
|
}),
|
|
3775
|
-
|
|
3798
|
+
Be ? /* @__PURE__ */ E(re, {
|
|
3776
3799
|
fallback: null,
|
|
3777
|
-
children: /* @__PURE__ */ E(
|
|
3800
|
+
children: /* @__PURE__ */ E(yr, {
|
|
3778
3801
|
capability: N.NativeTerminal,
|
|
3779
3802
|
open: !0,
|
|
3780
3803
|
sessionId: s,
|
|
3781
|
-
onClose: () =>
|
|
3804
|
+
onClose: () => ze(!1)
|
|
3782
3805
|
})
|
|
3783
3806
|
}) : null
|
|
3784
3807
|
]
|
|
3785
3808
|
});
|
|
3786
|
-
return i ? /* @__PURE__ */ E(i, { children:
|
|
3809
|
+
return i ? /* @__PURE__ */ E(i, { children: Ve }) : Ve;
|
|
3787
3810
|
}
|
|
3788
3811
|
//#endregion
|
|
3789
3812
|
//#region src/core/transport/sse-transport.ts
|
|
3790
|
-
function
|
|
3813
|
+
function xr(e, t) {
|
|
3791
3814
|
if (e.eventName === "__ping__") {
|
|
3792
3815
|
L.getState().updateActivity({ countEvent: !1 });
|
|
3793
3816
|
return;
|
|
3794
3817
|
}
|
|
3795
3818
|
t.onEvent(e);
|
|
3796
3819
|
}
|
|
3797
|
-
var
|
|
3820
|
+
var Sr = class {
|
|
3798
3821
|
protocol = "sse-post";
|
|
3799
3822
|
async connect(e, t) {
|
|
3800
|
-
let n = (await
|
|
3823
|
+
let n = (await ze(e.action, e.body || {}, { signal: e.signal })).getReader(), r = new TextDecoder(), i = "", a = !1;
|
|
3801
3824
|
return (async () => {
|
|
3802
3825
|
try {
|
|
3803
3826
|
for (; !a;) {
|
|
3804
3827
|
let { value: e, done: a } = await n.read();
|
|
3805
3828
|
if (a) break;
|
|
3806
3829
|
i += r.decode(e, { stream: !0 });
|
|
3807
|
-
let { chunks: o, remainder: s } =
|
|
3830
|
+
let { chunks: o, remainder: s } = dt(i);
|
|
3808
3831
|
i = s;
|
|
3809
3832
|
for (let e of o) {
|
|
3810
3833
|
if (!e.trim()) continue;
|
|
3811
|
-
let n =
|
|
3834
|
+
let n = ut(e);
|
|
3812
3835
|
for (let e of n) {
|
|
3813
3836
|
if (e.eventName === "__done__") {
|
|
3814
3837
|
t.onComplete();
|
|
3815
3838
|
return;
|
|
3816
3839
|
}
|
|
3817
|
-
|
|
3840
|
+
xr(e, t);
|
|
3818
3841
|
}
|
|
3819
3842
|
}
|
|
3820
3843
|
}
|
|
@@ -3826,27 +3849,27 @@ var yr = class {
|
|
|
3826
3849
|
a = !0, n.cancel().catch(() => {});
|
|
3827
3850
|
};
|
|
3828
3851
|
}
|
|
3829
|
-
},
|
|
3852
|
+
}, Cr = class {
|
|
3830
3853
|
protocol = "sse-get";
|
|
3831
3854
|
async connect(e, t) {
|
|
3832
|
-
let n = (await
|
|
3855
|
+
let n = (await Be(e.action, e.params || {}, { signal: e.signal })).getReader(), r = new TextDecoder(), i = "", a = !1;
|
|
3833
3856
|
return (async () => {
|
|
3834
3857
|
try {
|
|
3835
3858
|
for (; !a;) {
|
|
3836
3859
|
let { value: e, done: a } = await n.read();
|
|
3837
3860
|
if (a) break;
|
|
3838
3861
|
i += r.decode(e, { stream: !0 });
|
|
3839
|
-
let { chunks: o, remainder: s } =
|
|
3862
|
+
let { chunks: o, remainder: s } = dt(i);
|
|
3840
3863
|
i = s;
|
|
3841
3864
|
for (let e of o) {
|
|
3842
3865
|
if (!e.trim()) continue;
|
|
3843
|
-
let n =
|
|
3866
|
+
let n = ut(e);
|
|
3844
3867
|
for (let e of n) {
|
|
3845
3868
|
if (e.eventName === "__done__") {
|
|
3846
3869
|
t.onComplete();
|
|
3847
3870
|
return;
|
|
3848
3871
|
}
|
|
3849
|
-
|
|
3872
|
+
xr(e, t);
|
|
3850
3873
|
}
|
|
3851
3874
|
}
|
|
3852
3875
|
}
|
|
@@ -3860,4 +3883,4 @@ var yr = class {
|
|
|
3860
3883
|
}
|
|
3861
3884
|
};
|
|
3862
3885
|
//#endregion
|
|
3863
|
-
export {
|
|
3886
|
+
export { br as AgentWorkbench, gr as ApiFacadeImpl, xt as RunEngineImpl, Cr as SseGetTransport, Sr as SsePostTransport, ct as createProtocol };
|