@kingsoftcloud/ksadk-web 0.2.9 → 0.2.10
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 +16 -0
- package/dist-ksadk/assets/{ArtifactsPanel-SSyx1aCo.js → ArtifactsPanel-DWKSsYb9.js} +1 -1
- package/dist-ksadk/assets/{CodeBlock-YQ5vXzYH.js → CodeBlock-CTxzE2VS.js} +1 -1
- package/dist-ksadk/assets/{MathMessageMarkdown-CflwKEe7.js → MathMessageMarkdown-BQEjyzo5.js} +1 -1
- package/dist-ksadk/assets/{MermaidBlock-nbjqLbuu.js → MermaidBlock-CDmk7TDv.js} +6 -6
- package/dist-ksadk/assets/NativeTerminalPanel-DEfOlZBW.js +1 -0
- package/dist-ksadk/assets/{arc-QSfvB8Et.js → arc-DsDFn-pM.js} +1 -1
- package/dist-ksadk/assets/architecture-7EHR7CIX-DXMaR0JR.js +1 -0
- package/dist-ksadk/assets/{architectureDiagram-3BPJPVTR-CILqFpDC.js → architectureDiagram-3BPJPVTR-CXQLDPo9.js} +1 -1
- package/dist-ksadk/assets/{blockDiagram-GPEHLZMM-DD53Zgkb.js → blockDiagram-GPEHLZMM-ByJsJcrt.js} +1 -1
- package/dist-ksadk/assets/{c4Diagram-AAUBKEIU-DjS3CJER.js → c4Diagram-AAUBKEIU-D5eKWwvF.js} +1 -1
- package/dist-ksadk/assets/channel-Be4GcfhN.js +1 -0
- package/dist-ksadk/assets/{chunk-2J33WTMH-CBEtb1wr.js → chunk-2J33WTMH-CmLQ3DD9.js} +1 -1
- package/dist-ksadk/assets/{chunk-4BX2VUAB-CqF_-u4a.js → chunk-4BX2VUAB-BhRYlJwh.js} +1 -1
- package/dist-ksadk/assets/{chunk-55IACEB6-lR2vu_yR.js → chunk-55IACEB6-B60wcTiu.js} +1 -1
- package/dist-ksadk/assets/{chunk-727SXJPM-DvjC_wor.js → chunk-727SXJPM-BGlb7ll1.js} +1 -1
- package/dist-ksadk/assets/{chunk-AQP2D5EJ-BVUaV9p1.js → chunk-AQP2D5EJ-C5QUv7XG.js} +1 -1
- package/dist-ksadk/assets/{chunk-FMBD7UC4-Cc8_1XC_.js → chunk-FMBD7UC4-Du4tdup0.js} +1 -1
- package/dist-ksadk/assets/{chunk-ND2GUHAM-CAHh5eAF.js → chunk-ND2GUHAM-BsLG8760.js} +1 -1
- package/dist-ksadk/assets/chunk-QZHKN3VN-D07X2ALj.js +1 -0
- package/dist-ksadk/assets/classDiagram-4FO5ZUOK-CcD88kyq.js +1 -0
- package/dist-ksadk/assets/classDiagram-v2-Q7XG4LA2-CcD88kyq.js +1 -0
- package/dist-ksadk/assets/{cose-bilkent-S5V4N54A-CW6wiY80.js → cose-bilkent-S5V4N54A-JMKU0kQi.js} +1 -1
- package/dist-ksadk/assets/{dagre-BM42HDAG-BH_tWldy.js → dagre-BM42HDAG-P3phXbyY.js} +1 -1
- package/dist-ksadk/assets/{diagram-2AECGRRQ-ljY0ga-3.js → diagram-2AECGRRQ-C6ifXc81.js} +1 -1
- package/dist-ksadk/assets/{diagram-5GNKFQAL-BjZ8yg4e.js → diagram-5GNKFQAL-BLkF21oh.js} +1 -1
- package/dist-ksadk/assets/{diagram-KO2AKTUF-D5-e50p6.js → diagram-KO2AKTUF-A9gkeGco.js} +1 -1
- package/dist-ksadk/assets/{diagram-LMA3HP47-CIMbgA2R.js → diagram-LMA3HP47-Bqa8UV5s.js} +1 -1
- package/dist-ksadk/assets/{diagram-OG6HWLK6-CHAv8n8N.js → diagram-OG6HWLK6-GRe4pokR.js} +1 -1
- package/dist-ksadk/assets/{dist-B-8AvGwU.js → dist-4wlqrTld.js} +1 -1
- package/dist-ksadk/assets/{dist-C-TuGFEP.js → dist-BVtcRB6j.js} +1 -1
- package/dist-ksadk/assets/{dist-CwcMj9TX.js → dist-Bb2GBx-1.js} +1 -1
- package/dist-ksadk/assets/{dist-DplOU2XC.js → dist-Bg1jewnS.js} +1 -1
- package/dist-ksadk/assets/{dist-DxbIq1y9.js → dist-BicfrzOs.js} +1 -1
- package/dist-ksadk/assets/{dist-miJcQ_QT.js → dist-CIwg1HaJ.js} +1 -1
- package/dist-ksadk/assets/{dist-8fhwk8tR.js → dist-CJmGJ-_Y.js} +1 -1
- package/dist-ksadk/assets/{dist-CjTwd1ba.js → dist-CNP2pf7G.js} +1 -1
- package/dist-ksadk/assets/{dist-DHqMtxSi.js → dist-CQy3m9R-.js} +1 -1
- package/dist-ksadk/assets/{dist-CH8X1hMv.js → dist-CTVErq35.js} +1 -1
- package/dist-ksadk/assets/{dist-DkE5j5qa.js → dist-CejVKm1n.js} +1 -1
- package/dist-ksadk/assets/{dist-CSdL9G4U.js → dist-Cy6uew5t.js} +1 -1
- package/dist-ksadk/assets/{dist-BFWeVh8Y.js → dist-Cybdu3nb.js} +1 -1
- package/dist-ksadk/assets/{dist-Bh8Jo1Hy.js → dist-D2JPG7pC.js} +1 -1
- package/dist-ksadk/assets/{dist-CA7FMnEq.js → dist-DBDWFC2P.js} +1 -1
- package/dist-ksadk/assets/{dist-k2YXzXki.js → dist-DELPkMrm.js} +1 -1
- package/dist-ksadk/assets/{dist-CPGAEeVO.js → dist-DIe_LuNr.js} +1 -1
- package/dist-ksadk/assets/{dist-BQFXkYCL.js → dist-DjQKJaGi.js} +1 -1
- package/dist-ksadk/assets/{dist-lBacVcOX.js → dist-DpijsPsZ.js} +1 -1
- package/dist-ksadk/assets/{dist-Gtm38p17.js → dist-DqTi4q3N.js} +1 -1
- package/dist-ksadk/assets/{dist-CefsMd33.js → dist-Q6a4_tgv.js} +1 -1
- package/dist-ksadk/assets/{dist-YCkBmRQg.js → dist-f5z7EOt1.js} +1 -1
- package/dist-ksadk/assets/{erDiagram-TEJ5UH35-Buxp9SL_.js → erDiagram-TEJ5UH35-B8oH_MaS.js} +1 -1
- package/dist-ksadk/assets/eventmodeling-FCH6USID-Dl1-sbst.js +1 -0
- package/dist-ksadk/assets/{flowDiagram-I6XJVG4X-CNQ7RUqk.js → flowDiagram-I6XJVG4X-BhXAWO91.js} +1 -1
- package/dist-ksadk/assets/{ganttDiagram-6RSMTGT7-BR4K2g25.js → ganttDiagram-6RSMTGT7-BHNcInuv.js} +1 -1
- package/dist-ksadk/assets/gitGraph-WXDBUCRP-BH52bHVm.js +1 -0
- package/dist-ksadk/assets/{gitGraphDiagram-PVQCEYII-D5xJeGM-.js → gitGraphDiagram-PVQCEYII-B82aMrtH.js} +1 -1
- package/dist-ksadk/assets/{index-CAl5bzeo.css → index-DAURbCsP.css} +1 -1
- package/dist-ksadk/assets/index-DZFhFnmx.js +165 -0
- package/dist-ksadk/assets/info-J43DQDTF-DpbRzclW.js +1 -0
- package/dist-ksadk/assets/{infoDiagram-5YYISTIA-Dx3WJJ7c.js → infoDiagram-5YYISTIA-b_Hi36OA.js} +1 -1
- package/dist-ksadk/assets/{ishikawaDiagram-YF4QCWOH-CinAgPok.js → ishikawaDiagram-YF4QCWOH-CpiHSyNA.js} +1 -1
- package/dist-ksadk/assets/{journeyDiagram-JHISSGLW-CvHK1ISY.js → journeyDiagram-JHISSGLW-BHxHdRl7.js} +1 -1
- package/dist-ksadk/assets/{kanban-definition-UN3LZRKU-CdVmYG0i.js → kanban-definition-UN3LZRKU-kTk8cylz.js} +1 -1
- package/dist-ksadk/assets/{katex-j3gWbtq2.js → katex-D_Tkj1sg.js} +1 -1
- package/dist-ksadk/assets/{linear-CSzugA0M.js → linear-Dc1T6HuL.js} +1 -1
- package/dist-ksadk/assets/{mermaid-parser.core-x5RuQqLN.js → mermaid-parser.core-Cfv6TRDT.js} +2 -2
- package/dist-ksadk/assets/{mindmap-definition-RKZ34NQL-DHeHLEl4.js → mindmap-definition-RKZ34NQL-BsWFIVwR.js} +1 -1
- package/dist-ksadk/assets/packet-YPE3B663-DCpFrt65.js +1 -0
- package/dist-ksadk/assets/pie-LRSECV5Y-BcSHuNj-.js +1 -0
- package/dist-ksadk/assets/{pieDiagram-4H26LBE5-Bn-CBt6T.js → pieDiagram-4H26LBE5-CAMt3yXs.js} +1 -1
- package/dist-ksadk/assets/{quadrantDiagram-W4KKPZXB-DvSMM3_k.js → quadrantDiagram-W4KKPZXB-D-fXOUis.js} +1 -1
- package/dist-ksadk/assets/radar-GUYGQ44K-DR1bSSMx.js +1 -0
- package/dist-ksadk/assets/{requirementDiagram-4Y6WPE33-Bs1Umaod.js → requirementDiagram-4Y6WPE33-on5TsZ__.js} +1 -1
- package/dist-ksadk/assets/{sankeyDiagram-5OEKKPKP-uM4nwFIR.js → sankeyDiagram-5OEKKPKP-DJVzeVPc.js} +1 -1
- package/dist-ksadk/assets/{sequenceDiagram-3UESZ5HK-CUM1cPop.js → sequenceDiagram-3UESZ5HK-DHLjjUuy.js} +1 -1
- package/dist-ksadk/assets/{stateDiagram-AJRCARHV-BMhsQxg0.js → stateDiagram-AJRCARHV-CS1svOV-.js} +1 -1
- package/dist-ksadk/assets/stateDiagram-v2-BHNVJYJU-BXQTiPGY.js +1 -0
- package/dist-ksadk/assets/{timeline-definition-PNZ67QCA-DqOyQzFY.js → timeline-definition-PNZ67QCA-CzEM0jEl.js} +1 -1
- package/dist-ksadk/assets/treeView-BLDUP644-94CTmjJu.js +1 -0
- package/dist-ksadk/assets/treemap-LRROVOQU-Cjv6ruUS.js +1 -0
- package/dist-ksadk/assets/{vennDiagram-CIIHVFJN-CL6ie2Ap.js → vennDiagram-CIIHVFJN-CX4PRvMt.js} +1 -1
- package/dist-ksadk/assets/wardley-L42UT6IY-B-RIUQEs.js +1 -0
- package/dist-ksadk/assets/{wardleyDiagram-YWT4CUSO-CoLkaHQx.js → wardleyDiagram-YWT4CUSO-C_uFCiox.js} +1 -1
- package/dist-ksadk/assets/{xychartDiagram-2RQKCTM6-D3W-LOH6.js → xychartDiagram-2RQKCTM6-C0jIrQJj.js} +1 -1
- package/dist-ksadk/index.html +2 -2
- package/dist-lib/App.d.ts +3 -1
- package/dist-lib/App.d.ts.map +1 -1
- package/dist-lib/{ArtifactsPanel--CQyb4ZY.js → ArtifactsPanel-Bwj57S63.js} +4 -4
- package/dist-lib/{CodeBlock-Bwiebu9v.js → CodeBlock-CqZR-NBE.js} +1 -1
- package/dist-lib/{MathMessageMarkdown-BYzR9y8h.js → MathMessageMarkdown-D-CXaxIx.js} +2 -2
- package/dist-lib/{NativeTerminalPanel-BctkNn1k.js → NativeTerminalPanel-DASBHcE0.js} +77 -68
- package/dist-lib/{WorkspacePanelContainer-CtS_M-Qt.js → WorkspacePanelContainer-DLWLtZRG.js} +925 -833
- package/dist-lib/api/events.d.ts +12 -1
- package/dist-lib/api/events.d.ts.map +1 -1
- package/dist-lib/api/session.d.ts +11 -2
- package/dist-lib/api/session.d.ts.map +1 -1
- package/dist-lib/components/chat/ChatMessageList.d.ts.map +1 -1
- package/dist-lib/components/chat/ChatSidebar.d.ts +6 -1
- package/dist-lib/components/chat/ChatSidebar.d.ts.map +1 -1
- package/dist-lib/components/chat/ConnectedMessageList.d.ts +2 -1
- package/dist-lib/components/chat/ConnectedMessageList.d.ts.map +1 -1
- package/dist-lib/components/chat/ConnectedSidebar.d.ts +2 -1
- package/dist-lib/components/chat/ConnectedSidebar.d.ts.map +1 -1
- package/dist-lib/components/native/NativeTerminalPanel.d.ts +2 -1
- package/dist-lib/components/native/NativeTerminalPanel.d.ts.map +1 -1
- package/dist-lib/components.js +3 -3
- package/dist-lib/core/api/facade.d.ts +13 -4
- package/dist-lib/core/api/facade.d.ts.map +1 -1
- package/dist-lib/core/api/types.d.ts +13 -1
- package/dist-lib/core/api/types.d.ts.map +1 -1
- package/dist-lib/hooks/useSessionLifecycle.d.ts +2 -0
- package/dist-lib/hooks/useSessionLifecycle.d.ts.map +1 -1
- package/dist-lib/runtime.js +1107 -817
- package/dist-lib/stores/checkpoint.d.ts.map +1 -1
- package/dist-lib/stores/session.d.ts +35 -1
- package/dist-lib/stores/session.d.ts.map +1 -1
- package/dist-lib/styles.css +1 -1
- package/dist-lib/utils/message-virtualization.d.ts +21 -0
- package/dist-lib/utils/message-virtualization.d.ts.map +1 -0
- package/dist-lib/utils/session-list.d.ts.map +1 -1
- package/dist-lib/utils/session-pagination.d.ts +20 -0
- package/dist-lib/utils/session-pagination.d.ts.map +1 -0
- package/package.json +1 -1
- package/dist-ksadk/assets/NativeTerminalPanel-DxAh9H8z.js +0 -1
- package/dist-ksadk/assets/architecture-7EHR7CIX-C19PcYz-.js +0 -1
- package/dist-ksadk/assets/channel-eJj5zetk.js +0 -1
- package/dist-ksadk/assets/chunk-QZHKN3VN-D4mip6Il.js +0 -1
- package/dist-ksadk/assets/classDiagram-4FO5ZUOK-33PbfFSW.js +0 -1
- package/dist-ksadk/assets/classDiagram-v2-Q7XG4LA2-33PbfFSW.js +0 -1
- package/dist-ksadk/assets/eventmodeling-FCH6USID-DmbjPnMI.js +0 -1
- package/dist-ksadk/assets/gitGraph-WXDBUCRP-Bc_9dlTu.js +0 -1
- package/dist-ksadk/assets/index-B6Jvzl61.js +0 -165
- package/dist-ksadk/assets/info-J43DQDTF-B8Y6xmyb.js +0 -1
- package/dist-ksadk/assets/packet-YPE3B663-BrYG7omE.js +0 -1
- package/dist-ksadk/assets/pie-LRSECV5Y-_wNpvHX3.js +0 -1
- package/dist-ksadk/assets/radar-GUYGQ44K-BaVGJTci.js +0 -1
- package/dist-ksadk/assets/stateDiagram-v2-BHNVJYJU-B1hvuTKv.js +0 -1
- package/dist-ksadk/assets/treeView-BLDUP644-SGPboZ5y.js +0 -1
- package/dist-ksadk/assets/treemap-LRROVOQU-DuxD3lqD.js +0 -1
- package/dist-ksadk/assets/wardley-L42UT6IY-D9w6kgpb.js +0 -1
package/dist-lib/runtime.js
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import { i as e, t } from "./capabilities-CiyyeRQ9.js";
|
|
2
|
-
import {
|
|
3
|
-
import { t as
|
|
4
|
-
import { X as
|
|
5
|
-
import { Fragment as
|
|
6
|
-
import * as
|
|
7
|
-
import
|
|
8
|
-
import * as
|
|
9
|
-
import { create as
|
|
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-DLWLtZRG.js";
|
|
3
|
+
import { t as ne } from "./artifact-BfFsPe5A.js";
|
|
4
|
+
import { X as w } from "lucide-react";
|
|
5
|
+
import { Fragment as re, jsx as T, jsxs as E } from "react/jsx-runtime";
|
|
6
|
+
import * as D from "react";
|
|
7
|
+
import O, { Suspense as ie, useCallback as k, useEffect as A, useMemo as ae, useRef as j, useState as oe } from "react";
|
|
8
|
+
import * as M from "@radix-ui/react-dialog";
|
|
9
|
+
import { create as N } from "zustand";
|
|
10
10
|
//#region src/stores/bootstrap.ts
|
|
11
|
-
var
|
|
11
|
+
var P = N()((t) => ({
|
|
12
12
|
agentId: "default-agent",
|
|
13
13
|
agentName: "Agent",
|
|
14
14
|
agentFramework: "",
|
|
@@ -26,7 +26,7 @@ var N = M()((t) => ({
|
|
|
26
26
|
}));
|
|
27
27
|
//#endregion
|
|
28
28
|
//#region src/stores/model.ts
|
|
29
|
-
function
|
|
29
|
+
function se(e, t) {
|
|
30
30
|
let n = /* @__PURE__ */ new Map();
|
|
31
31
|
for (let t of e) t?.id && n.set(t.id, t);
|
|
32
32
|
for (let e of t) e?.id && n.set(e.id, {
|
|
@@ -35,18 +35,18 @@ function le(e, t) {
|
|
|
35
35
|
});
|
|
36
36
|
return Array.from(n.values()).sort((e, t) => e.id.localeCompare(t.id));
|
|
37
37
|
}
|
|
38
|
-
var
|
|
38
|
+
var F = N()((e) => ({
|
|
39
39
|
availableModels: [],
|
|
40
40
|
selectedModel: "",
|
|
41
41
|
modelSource: "",
|
|
42
42
|
modelCatalogLoaded: !1,
|
|
43
43
|
thinkingMode: "auto",
|
|
44
|
-
upsertModels: (t) => e((e) => ({ availableModels:
|
|
44
|
+
upsertModels: (t) => e((e) => ({ availableModels: se(e.availableModels, t) })),
|
|
45
45
|
setSelectedModel: (t) => e({ selectedModel: t }),
|
|
46
46
|
setModelSource: (t) => e({ modelSource: t }),
|
|
47
47
|
setModelCatalogLoaded: (t) => e({ modelCatalogLoaded: t }),
|
|
48
48
|
setThinkingMode: (t) => e({ thinkingMode: t })
|
|
49
|
-
})),
|
|
49
|
+
})), ce = (e) => !!(e && e.status !== "completed" && e.status !== "failed" && e.status !== "stopped"), I = N()((e, t) => ({
|
|
50
50
|
isStreaming: !1,
|
|
51
51
|
currentRunId: "",
|
|
52
52
|
stopRequested: !1,
|
|
@@ -55,9 +55,9 @@ var P = M()((e) => ({
|
|
|
55
55
|
setStreaming: (t) => e({ isStreaming: t }),
|
|
56
56
|
setSessionStreaming: (t, n) => e((e) => {
|
|
57
57
|
let r = String(t || "");
|
|
58
|
-
return r ? n ? { isStreaming: !0 } : e.sessionActivities[r] ? { isStreaming: Object.entries(e.sessionActivities).some(([e, t]) => e !== r &&
|
|
58
|
+
return r ? n ? { isStreaming: !0 } : e.sessionActivities[r] ? { isStreaming: Object.entries(e.sessionActivities).some(([e, t]) => e !== r && ce(t)) } : { isStreaming: Object.values(e.sessionActivities).some(ce) } : { isStreaming: n };
|
|
59
59
|
}),
|
|
60
|
-
isSessionStreaming: (e) =>
|
|
60
|
+
isSessionStreaming: (e) => ce(t().getSessionActivity(e)),
|
|
61
61
|
getSessionActivity: (e) => {
|
|
62
62
|
let n = String(e || "");
|
|
63
63
|
return n && t().sessionActivities[n] || null;
|
|
@@ -156,6 +156,33 @@ var P = M()((e) => ({
|
|
|
156
156
|
})
|
|
157
157
|
}));
|
|
158
158
|
//#endregion
|
|
159
|
+
//#region src/utils/session-pagination.js
|
|
160
|
+
function L(e = /* @__PURE__ */ new Set(), t = []) {
|
|
161
|
+
let n = new Set(e);
|
|
162
|
+
for (let e of t) {
|
|
163
|
+
let t = Number(e);
|
|
164
|
+
Number.isFinite(t) && t > 0 && n.add(t);
|
|
165
|
+
}
|
|
166
|
+
return new Set(Array.from(n).sort((e, t) => e - t));
|
|
167
|
+
}
|
|
168
|
+
function le({ sessionsLength: e = 0, total: t = 0, page: n = 0, pageSize: r = 30, loadedPages: i = /* @__PURE__ */ new Set() } = {}) {
|
|
169
|
+
let a = Math.max(0, Number(t) || 0), o = Math.max(0, Number(e) || 0);
|
|
170
|
+
return {
|
|
171
|
+
total: a,
|
|
172
|
+
page: Math.max(0, Number(n) || 0),
|
|
173
|
+
pageSize: Math.max(1, Number(r) || 30),
|
|
174
|
+
loadedPages: L(i),
|
|
175
|
+
hasMore: o < a
|
|
176
|
+
};
|
|
177
|
+
}
|
|
178
|
+
function ue({ total: e = 0, pageSize: t = 30, loadedPages: n = /* @__PURE__ */ new Set() } = {}) {
|
|
179
|
+
let r = Math.max(0, Number(e) || 0), i = Math.max(1, Number(t) || 30);
|
|
180
|
+
if (r <= 0) return null;
|
|
181
|
+
let a = Math.ceil(r / i);
|
|
182
|
+
for (let e = 1; e <= a; e += 1) if (!n.has(e)) return e;
|
|
183
|
+
return null;
|
|
184
|
+
}
|
|
185
|
+
//#endregion
|
|
159
186
|
//#region src/stores/session.ts
|
|
160
187
|
function de(e) {
|
|
161
188
|
let t = e.UpdatedAt;
|
|
@@ -165,68 +192,173 @@ function de(e) {
|
|
|
165
192
|
}
|
|
166
193
|
return typeof t == "number" ? t : 0;
|
|
167
194
|
}
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
195
|
+
var fe = "ksadk.pinnedSessionIds";
|
|
196
|
+
function pe() {
|
|
197
|
+
try {
|
|
198
|
+
let e = globalThis.localStorage?.getItem(fe), t = e ? JSON.parse(e) : [];
|
|
199
|
+
return Array.isArray(t) ? t.filter((e) => typeof e == "string") : [];
|
|
200
|
+
} catch {
|
|
201
|
+
return [];
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
function me(e) {
|
|
205
|
+
try {
|
|
206
|
+
globalThis.localStorage?.setItem(fe, JSON.stringify(e));
|
|
207
|
+
} catch {}
|
|
208
|
+
}
|
|
209
|
+
function he(e, t) {
|
|
210
|
+
let n = new Set(t);
|
|
211
|
+
return e.slice().sort((e, t) => {
|
|
212
|
+
let r = +!!n.has(e.SessionId), i = +!!n.has(t.SessionId);
|
|
213
|
+
return r === i ? de(t) - de(e) : i - r;
|
|
214
|
+
});
|
|
215
|
+
}
|
|
216
|
+
function ge(e, t, n) {
|
|
217
|
+
let r = /* @__PURE__ */ new Map();
|
|
218
|
+
for (let t of e) t?.SessionId && r.set(t.SessionId, t);
|
|
219
|
+
for (let e of t) e?.SessionId && r.set(e.SessionId, {
|
|
220
|
+
...r.get(e.SessionId) || {},
|
|
173
221
|
...e
|
|
174
222
|
});
|
|
175
|
-
return Array.from(
|
|
223
|
+
return he(Array.from(r.values()), n);
|
|
176
224
|
}
|
|
177
|
-
var
|
|
225
|
+
var R = N()((e) => ({
|
|
178
226
|
sessions: [],
|
|
179
227
|
currentSessionId: null,
|
|
180
|
-
|
|
228
|
+
sessionsAgentId: "",
|
|
229
|
+
sessionsTotal: 0,
|
|
230
|
+
sessionsPage: 0,
|
|
231
|
+
sessionsPageSize: 30,
|
|
232
|
+
loadedPages: /* @__PURE__ */ new Set(),
|
|
233
|
+
hasMoreSessions: !1,
|
|
234
|
+
isLoadingSessions: !1,
|
|
235
|
+
pinnedSessionIds: pe(),
|
|
236
|
+
eventCache: {},
|
|
237
|
+
setSessions: (t) => e((e) => ({ sessions: he(t, e.pinnedSessionIds) })),
|
|
181
238
|
setCurrentSessionId: (t) => e({ currentSessionId: t }),
|
|
182
|
-
upsertSessions: (t) => e((e) =>
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
239
|
+
upsertSessions: (t, n) => e((e) => {
|
|
240
|
+
let r = ge(n?.replace ? [] : e.sessions, t, e.pinnedSessionIds), i = n?.page ?? e.sessionsPage, a = n?.pageSize ?? e.sessionsPageSize, o = n?.total ?? Math.max(e.sessionsTotal, r.length), s = n?.replace ? L(/* @__PURE__ */ new Set(), [i]) : L(e.loadedPages, [i]), c = le({
|
|
241
|
+
sessionsLength: r.length,
|
|
242
|
+
total: o,
|
|
243
|
+
page: i,
|
|
244
|
+
pageSize: a,
|
|
245
|
+
loadedPages: s
|
|
246
|
+
});
|
|
247
|
+
return {
|
|
248
|
+
sessions: r,
|
|
249
|
+
sessionsAgentId: n?.agentId ?? e.sessionsAgentId,
|
|
250
|
+
sessionsTotal: c.total,
|
|
251
|
+
sessionsPage: c.page,
|
|
252
|
+
sessionsPageSize: c.pageSize,
|
|
253
|
+
loadedPages: c.loadedPages,
|
|
254
|
+
hasMoreSessions: c.hasMore
|
|
255
|
+
};
|
|
256
|
+
}),
|
|
257
|
+
removeSession: (t) => e((e) => {
|
|
258
|
+
let n = e.sessions.filter((e) => e.SessionId !== t), r = Math.max(0, e.sessionsTotal - 1);
|
|
259
|
+
return {
|
|
260
|
+
sessions: n,
|
|
261
|
+
sessionsTotal: r,
|
|
262
|
+
hasMoreSessions: le({
|
|
263
|
+
sessionsLength: n.length,
|
|
264
|
+
total: r,
|
|
265
|
+
page: e.sessionsPage,
|
|
266
|
+
pageSize: e.sessionsPageSize,
|
|
267
|
+
loadedPages: e.loadedPages
|
|
268
|
+
}).hasMore,
|
|
269
|
+
pinnedSessionIds: e.pinnedSessionIds.filter((e) => e !== t)
|
|
270
|
+
};
|
|
271
|
+
}),
|
|
272
|
+
setLoadingSessions: (t) => e({ isLoadingSessions: t }),
|
|
273
|
+
resetSessionPagination: (t) => e({
|
|
274
|
+
sessions: [],
|
|
275
|
+
sessionsAgentId: t,
|
|
276
|
+
sessionsTotal: 0,
|
|
277
|
+
sessionsPage: 0,
|
|
278
|
+
loadedPages: /* @__PURE__ */ new Set(),
|
|
279
|
+
hasMoreSessions: !1,
|
|
280
|
+
isLoadingSessions: !1
|
|
281
|
+
}),
|
|
282
|
+
togglePinnedSession: (t) => e((e) => {
|
|
283
|
+
let n = new Set(e.pinnedSessionIds);
|
|
284
|
+
n.has(t) ? n.delete(t) : n.add(t);
|
|
285
|
+
let r = Array.from(n);
|
|
286
|
+
return me(r), {
|
|
287
|
+
pinnedSessionIds: r,
|
|
288
|
+
sessions: he(e.sessions, r)
|
|
289
|
+
};
|
|
290
|
+
}),
|
|
291
|
+
setSessionEventCache: (t, n) => e((e) => ({ eventCache: {
|
|
292
|
+
...e.eventCache,
|
|
293
|
+
[t]: {
|
|
294
|
+
events: n.events,
|
|
295
|
+
total: n.total,
|
|
296
|
+
offset: n.offset,
|
|
297
|
+
limit: n.limit,
|
|
298
|
+
isLoadingOlder: n.isLoadingOlder ?? !1
|
|
299
|
+
}
|
|
300
|
+
} })),
|
|
301
|
+
setSessionEventLoadingOlder: (t, n) => e((e) => {
|
|
302
|
+
let r = e.eventCache[t];
|
|
303
|
+
return r ? { eventCache: {
|
|
304
|
+
...e.eventCache,
|
|
305
|
+
[t]: {
|
|
306
|
+
...r,
|
|
307
|
+
isLoadingOlder: n
|
|
308
|
+
}
|
|
309
|
+
} } : {};
|
|
310
|
+
}),
|
|
311
|
+
clearSessionEventCache: (t) => e((e) => {
|
|
312
|
+
if (!t) return { eventCache: {} };
|
|
313
|
+
let n = { ...e.eventCache };
|
|
314
|
+
return delete n[t], { eventCache: n };
|
|
315
|
+
})
|
|
316
|
+
})), z = .28;
|
|
317
|
+
function B(e, t = 768) {
|
|
186
318
|
return Number(e) <= t;
|
|
187
319
|
}
|
|
188
|
-
function
|
|
320
|
+
function _e({ isMobile: e, desktopSidebarOpen: t, mobileSidebarOpen: n }) {
|
|
189
321
|
return {
|
|
190
322
|
desktopSidebarVisible: !e && !!t,
|
|
191
323
|
mobileDrawerVisible: !!(e && n)
|
|
192
324
|
};
|
|
193
325
|
}
|
|
194
|
-
function
|
|
326
|
+
function ve({ isMobile: e, viewportHeight: t, desktopMaxHeight: n = 160 }) {
|
|
195
327
|
if (!e) return n;
|
|
196
328
|
let r = Number(t);
|
|
197
329
|
if (!Number.isFinite(r) || r <= 0) return n;
|
|
198
|
-
let i = Math.floor(r *
|
|
330
|
+
let i = Math.floor(r * z);
|
|
199
331
|
return Math.max(120, Math.min(n, i));
|
|
200
332
|
}
|
|
201
333
|
//#endregion
|
|
202
334
|
//#region src/utils/session.js
|
|
203
|
-
var
|
|
204
|
-
function
|
|
335
|
+
var ye = "ksadk:webui:selected-session:";
|
|
336
|
+
function be(e) {
|
|
205
337
|
return String(e || "").trim() || "default-agent";
|
|
206
338
|
}
|
|
207
|
-
function
|
|
339
|
+
function xe(e) {
|
|
208
340
|
if (e && typeof e.getItem == "function") return e;
|
|
209
341
|
try {
|
|
210
342
|
if (typeof window < "u" && window.localStorage) return window.localStorage;
|
|
211
343
|
} catch {}
|
|
212
344
|
return null;
|
|
213
345
|
}
|
|
214
|
-
function
|
|
215
|
-
return `${
|
|
346
|
+
function Se(e) {
|
|
347
|
+
return `${ye}${be(e)}`;
|
|
216
348
|
}
|
|
217
|
-
function
|
|
218
|
-
let n =
|
|
349
|
+
function Ce(e, t) {
|
|
350
|
+
let n = xe(t);
|
|
219
351
|
if (!n) return null;
|
|
220
352
|
try {
|
|
221
|
-
return String(n.getItem(
|
|
353
|
+
return String(n.getItem(Se(e)) || "").trim() || null;
|
|
222
354
|
} catch {
|
|
223
355
|
return null;
|
|
224
356
|
}
|
|
225
357
|
}
|
|
226
|
-
function
|
|
227
|
-
let r =
|
|
358
|
+
function we(e, t, n) {
|
|
359
|
+
let r = xe(n);
|
|
228
360
|
if (!r) return;
|
|
229
|
-
let i =
|
|
361
|
+
let i = Se(e), a = String(t || "").trim();
|
|
230
362
|
try {
|
|
231
363
|
if (a) {
|
|
232
364
|
r.setItem(i, a);
|
|
@@ -235,7 +367,7 @@ function ve(e, t, n) {
|
|
|
235
367
|
r.removeItem(i);
|
|
236
368
|
} catch {}
|
|
237
369
|
}
|
|
238
|
-
function
|
|
370
|
+
function Te(e, t) {
|
|
239
371
|
if (!Array.isArray(e) || e.length === 0) return null;
|
|
240
372
|
let n = String(t || "").trim();
|
|
241
373
|
if (n && e.some((e) => String(e?.SessionId || "").trim() === n)) return n;
|
|
@@ -247,66 +379,66 @@ function ye(e, t) {
|
|
|
247
379
|
}
|
|
248
380
|
//#endregion
|
|
249
381
|
//#region src/utils/native-platform.js
|
|
250
|
-
var
|
|
251
|
-
function
|
|
382
|
+
var Ee = new Map([["openclaw", "OpenClaw"], ["hermes", "Hermes"]]);
|
|
383
|
+
function De(e) {
|
|
252
384
|
return String(e || "").trim().toLowerCase();
|
|
253
385
|
}
|
|
254
|
-
function
|
|
386
|
+
function Oe(e) {
|
|
255
387
|
return String(e || "").trim().toLowerCase();
|
|
256
388
|
}
|
|
257
|
-
function
|
|
389
|
+
function ke(e) {
|
|
258
390
|
try {
|
|
259
391
|
return new URL("/", e).toString();
|
|
260
392
|
} catch {
|
|
261
393
|
return "/";
|
|
262
394
|
}
|
|
263
395
|
}
|
|
264
|
-
function
|
|
265
|
-
let i =
|
|
396
|
+
function Ae({ capability: e, agentFramework: t, accessMode: n, origin: r }) {
|
|
397
|
+
let i = De(n);
|
|
266
398
|
if (i !== "owner" && i !== "private" || !e?.Enabled) return null;
|
|
267
|
-
let a =
|
|
399
|
+
let a = Ee.get(Oe(t)) || "运行时";
|
|
268
400
|
return {
|
|
269
|
-
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),
|
|
270
402
|
label: typeof e.Label == "string" && e.Label ? e.Label : "管理平台",
|
|
271
403
|
title: `打开 ${a} 原生管理平台`
|
|
272
404
|
};
|
|
273
405
|
}
|
|
274
406
|
//#endregion
|
|
275
407
|
//#region src/utils/model-options.js
|
|
276
|
-
var
|
|
408
|
+
var je = new Set([
|
|
277
409
|
"auto",
|
|
278
410
|
"enabled",
|
|
279
411
|
"disabled"
|
|
280
412
|
]);
|
|
281
|
-
function
|
|
413
|
+
function Me(e) {
|
|
282
414
|
let t = String(e || "").trim().toLowerCase();
|
|
283
|
-
return
|
|
415
|
+
return je.has(t) ? t : "auto";
|
|
284
416
|
}
|
|
285
|
-
function
|
|
286
|
-
let t =
|
|
417
|
+
function Ne(e) {
|
|
418
|
+
let t = Me(e);
|
|
287
419
|
if (t === "disabled") return { thinking: { type: "disabled" } };
|
|
288
420
|
if (t === "enabled") return { thinking: { type: "enabled" } };
|
|
289
421
|
}
|
|
290
422
|
//#endregion
|
|
291
423
|
//#region src/hooks/useResponsiveViewport.ts
|
|
292
|
-
function
|
|
424
|
+
function V() {
|
|
293
425
|
return typeof window > "u" ? 900 : Math.round(window.visualViewport?.height || window.innerHeight || 900);
|
|
294
426
|
}
|
|
295
|
-
function
|
|
427
|
+
function Pe() {
|
|
296
428
|
return typeof window > "u" ? {
|
|
297
429
|
isMobile: !1,
|
|
298
430
|
viewportHeight: 900
|
|
299
431
|
} : {
|
|
300
|
-
isMobile:
|
|
301
|
-
viewportHeight:
|
|
432
|
+
isMobile: B(window.innerWidth, 768),
|
|
433
|
+
viewportHeight: V()
|
|
302
434
|
};
|
|
303
435
|
}
|
|
304
|
-
function
|
|
305
|
-
let [e, t] =
|
|
306
|
-
return
|
|
436
|
+
function Fe() {
|
|
437
|
+
let [e, t] = oe(() => Pe());
|
|
438
|
+
return A(() => {
|
|
307
439
|
if (typeof window > "u") return;
|
|
308
440
|
let e = window.matchMedia("(max-width: 768px)"), n = () => {
|
|
309
|
-
t(
|
|
441
|
+
t(Pe());
|
|
310
442
|
};
|
|
311
443
|
n();
|
|
312
444
|
let r = typeof e.addEventListener == "function" ? (e.addEventListener("change", n), () => e.removeEventListener("change", n)) : (e.addListener(n), () => e.removeListener(n));
|
|
@@ -317,76 +449,76 @@ function Ae() {
|
|
|
317
449
|
}
|
|
318
450
|
//#endregion
|
|
319
451
|
//#region src/api/client.ts
|
|
320
|
-
var
|
|
452
|
+
var H = class extends Error {
|
|
321
453
|
code;
|
|
322
454
|
detail;
|
|
323
455
|
constructor(e, t, n) {
|
|
324
456
|
super(t), this.name = "ApiError", this.code = e, this.detail = n;
|
|
325
457
|
}
|
|
326
|
-
},
|
|
458
|
+
}, U = class extends Error {
|
|
327
459
|
constructor(e = "请求已取消") {
|
|
328
460
|
super(e), this.name = "CancelledError";
|
|
329
461
|
}
|
|
330
|
-
},
|
|
331
|
-
async function
|
|
462
|
+
}, W = "/agentengine/api/v1";
|
|
463
|
+
async function Ie(e) {
|
|
332
464
|
let t;
|
|
333
465
|
try {
|
|
334
466
|
t = await e.json();
|
|
335
467
|
} catch {
|
|
336
|
-
throw new
|
|
468
|
+
throw new H(-2, "响应格式异常");
|
|
337
469
|
}
|
|
338
|
-
if (!e.ok) throw new
|
|
339
|
-
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);
|
|
340
472
|
return t.Data;
|
|
341
473
|
}
|
|
342
|
-
function
|
|
343
|
-
throw e instanceof DOMException && e.name === "AbortError" ? new
|
|
474
|
+
function G(e) {
|
|
475
|
+
throw e instanceof DOMException && e.name === "AbortError" ? new U() : e;
|
|
344
476
|
}
|
|
345
|
-
async function
|
|
477
|
+
async function K(e, t, n) {
|
|
346
478
|
let r;
|
|
347
479
|
try {
|
|
348
|
-
r = await fetch(`${
|
|
480
|
+
r = await fetch(`${W}/${e}`, {
|
|
349
481
|
method: "POST",
|
|
350
482
|
headers: { "Content-Type": "application/json" },
|
|
351
483
|
body: JSON.stringify(t),
|
|
352
484
|
signal: n?.signal
|
|
353
485
|
});
|
|
354
486
|
} catch (e) {
|
|
355
|
-
throw
|
|
487
|
+
throw G(e);
|
|
356
488
|
}
|
|
357
|
-
return
|
|
489
|
+
return Ie(r);
|
|
358
490
|
}
|
|
359
|
-
async function
|
|
491
|
+
async function Le(e, t, n) {
|
|
360
492
|
let r;
|
|
361
493
|
try {
|
|
362
|
-
r = await fetch(`${
|
|
494
|
+
r = await fetch(`${W}/${e}`, {
|
|
363
495
|
method: "POST",
|
|
364
496
|
body: t,
|
|
365
497
|
signal: n?.signal
|
|
366
498
|
});
|
|
367
499
|
} catch (e) {
|
|
368
|
-
throw
|
|
500
|
+
throw G(e);
|
|
369
501
|
}
|
|
370
|
-
return
|
|
502
|
+
return Ie(r);
|
|
371
503
|
}
|
|
372
|
-
async function
|
|
373
|
-
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;
|
|
374
506
|
try {
|
|
375
507
|
a = await fetch(i, { signal: n?.signal });
|
|
376
508
|
} catch (e) {
|
|
377
|
-
throw
|
|
509
|
+
throw G(e);
|
|
378
510
|
}
|
|
379
|
-
if (!a.ok) throw new
|
|
511
|
+
if (!a.ok) throw new H(a.status, `资源获取失败: ${a.statusText}`);
|
|
380
512
|
try {
|
|
381
513
|
return n?.asText ? await a.text() : await a.blob();
|
|
382
514
|
} catch {
|
|
383
|
-
throw new
|
|
515
|
+
throw new H(-3, "文件读取失败");
|
|
384
516
|
}
|
|
385
517
|
}
|
|
386
|
-
async function
|
|
518
|
+
async function ze(e, t, n) {
|
|
387
519
|
let r;
|
|
388
520
|
try {
|
|
389
|
-
r = await fetch(`${
|
|
521
|
+
r = await fetch(`${W}/${e}`, {
|
|
390
522
|
method: "POST",
|
|
391
523
|
headers: {
|
|
392
524
|
"Content-Type": "application/json",
|
|
@@ -396,92 +528,92 @@ async function Fe(e, t, n) {
|
|
|
396
528
|
signal: n?.signal
|
|
397
529
|
});
|
|
398
530
|
} catch (e) {
|
|
399
|
-
throw
|
|
531
|
+
throw G(e);
|
|
400
532
|
}
|
|
401
|
-
if (!r.ok) throw new
|
|
402
|
-
if (!r.body) throw new
|
|
533
|
+
if (!r.ok) throw new H(r.status, `流式请求失败: ${r.statusText}`);
|
|
534
|
+
if (!r.body) throw new H(-1, "无法获取响应流");
|
|
403
535
|
return r.body;
|
|
404
536
|
}
|
|
405
|
-
async function
|
|
406
|
-
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;
|
|
407
539
|
try {
|
|
408
540
|
a = await fetch(i, {
|
|
409
541
|
headers: { Accept: "text/event-stream" },
|
|
410
542
|
signal: n?.signal
|
|
411
543
|
});
|
|
412
544
|
} catch (e) {
|
|
413
|
-
throw
|
|
545
|
+
throw G(e);
|
|
414
546
|
}
|
|
415
|
-
if (!a.ok) throw new
|
|
416
|
-
if (!a.body) throw new
|
|
547
|
+
if (!a.ok) throw new H(a.status, `流式订阅失败: ${a.statusText}`);
|
|
548
|
+
if (!a.body) throw new H(-1, "无法获取响应流");
|
|
417
549
|
return a.body;
|
|
418
550
|
}
|
|
419
551
|
//#endregion
|
|
420
552
|
//#region src/api/bootstrap.ts
|
|
421
|
-
async function
|
|
422
|
-
return
|
|
553
|
+
async function Ve() {
|
|
554
|
+
return K("GetAgentUiBootstrap", {});
|
|
423
555
|
}
|
|
424
556
|
//#endregion
|
|
425
557
|
//#region src/api/model.ts
|
|
426
|
-
async function
|
|
427
|
-
return
|
|
558
|
+
async function He(e) {
|
|
559
|
+
return K("ListAgentModels", { AgentId: e });
|
|
428
560
|
}
|
|
429
561
|
//#endregion
|
|
430
562
|
//#region src/hooks/useBootstrap.ts
|
|
431
|
-
function
|
|
563
|
+
function Ue(e) {
|
|
432
564
|
if (!Array.isArray(e)) return ["responses", "chat_completions"];
|
|
433
565
|
let t = e.filter((e) => e === "responses" || e === "chat_completions");
|
|
434
566
|
return t.length > 0 ? t : ["responses", "chat_completions"];
|
|
435
567
|
}
|
|
436
|
-
async function
|
|
568
|
+
async function We(e) {
|
|
437
569
|
try {
|
|
438
|
-
let t = await
|
|
439
|
-
Array.isArray(n) &&
|
|
570
|
+
let t = await He(e), n = t?.Models;
|
|
571
|
+
Array.isArray(n) && F.getState().upsertModels(n);
|
|
440
572
|
let r = t;
|
|
441
|
-
r?.Current &&
|
|
573
|
+
r?.Current && F.getState().setSelectedModel(String(r.Current)), r?.Source && F.getState().setModelSource(String(r.Source));
|
|
442
574
|
} catch (e) {
|
|
443
575
|
console.error("Failed to fetch models:", e);
|
|
444
576
|
} finally {
|
|
445
|
-
|
|
577
|
+
F.getState().setModelCatalogLoaded(!0);
|
|
446
578
|
}
|
|
447
579
|
}
|
|
448
|
-
function
|
|
449
|
-
|
|
580
|
+
function Ge(n) {
|
|
581
|
+
A(() => {
|
|
450
582
|
(async () => {
|
|
451
583
|
try {
|
|
452
|
-
let r = await
|
|
453
|
-
if (
|
|
584
|
+
let r = await Ve(), i = r, a = i?.Agent, o = String(a?.AgentId || "default-agent");
|
|
585
|
+
if (P.getState().setAgentId(o), a?.Name) {
|
|
454
586
|
let e = String(a.Name);
|
|
455
|
-
|
|
587
|
+
P.getState().setAgentName(e), document.title = e;
|
|
456
588
|
}
|
|
457
589
|
let s = String(a?.Framework || "").trim().toLowerCase();
|
|
458
|
-
|
|
590
|
+
P.getState().setAgentFramework(s);
|
|
459
591
|
let c = e(r);
|
|
460
|
-
|
|
592
|
+
P.getState().setCapabilities(c), P.getState().setApiFormats(Ue(c.HostedChat.ApiFormats)), P.getState().setAccessMode(String(i?.AccessMode || "Owner"));
|
|
461
593
|
let l = c.WorkspaceFiles && i?.WorkspaceFiles ? i.WorkspaceFiles : null;
|
|
462
|
-
|
|
594
|
+
P.getState().setWorkspaceFiles(l), l || _.getState().setWorkspacePanelOpen(!1), t(c) && n.fetchSessions(o, Ce(o));
|
|
463
595
|
let u = i?.Model;
|
|
464
|
-
u?.id && (
|
|
596
|
+
u?.id && (F.getState().setSelectedModel(u.id), F.getState().upsertModels([u]), F.getState().setModelSource(u.source || "")), We(o);
|
|
465
597
|
} catch (t) {
|
|
466
|
-
console.error("Failed to fetch bootstrap:", t),
|
|
598
|
+
console.error("Failed to fetch bootstrap:", t), P.getState().setCapabilities(e({ Data: {
|
|
467
599
|
Agent: { Framework: "" },
|
|
468
600
|
ApiFormats: ["responses", "chat_completions"],
|
|
469
601
|
Capabilities: {}
|
|
470
|
-
} })), n.fetchSessions("default-agent",
|
|
602
|
+
} })), n.fetchSessions("default-agent", Ce("default-agent")), We("default-agent");
|
|
471
603
|
}
|
|
472
604
|
})();
|
|
473
605
|
}, []);
|
|
474
606
|
}
|
|
475
607
|
//#endregion
|
|
476
608
|
//#region src/stores/message.ts
|
|
477
|
-
var
|
|
609
|
+
var q = N()((e) => ({
|
|
478
610
|
messages: [],
|
|
479
611
|
setMessages: (t) => e({ messages: t }),
|
|
480
612
|
patchMessages: (t) => e((e) => ({ messages: t(e.messages) }))
|
|
481
613
|
}));
|
|
482
614
|
//#endregion
|
|
483
615
|
//#region src/utils/responses-stream.js
|
|
484
|
-
function
|
|
616
|
+
function Ke() {
|
|
485
617
|
return {
|
|
486
618
|
toolNames: /* @__PURE__ */ new Map(),
|
|
487
619
|
toolArguments: /* @__PURE__ */ new Map(),
|
|
@@ -489,55 +621,55 @@ function He() {
|
|
|
489
621
|
currentResponseId: ""
|
|
490
622
|
};
|
|
491
623
|
}
|
|
492
|
-
function
|
|
624
|
+
function qe(e) {
|
|
493
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 : "";
|
|
494
626
|
}
|
|
495
|
-
function
|
|
627
|
+
function J(e) {
|
|
496
628
|
return e == null ? "" : typeof e == "string" ? e : typeof e == "object" ? JSON.stringify(e, null, 2) : String(e);
|
|
497
629
|
}
|
|
498
|
-
function
|
|
630
|
+
function Y(...e) {
|
|
499
631
|
for (let t of e) {
|
|
500
|
-
let e =
|
|
632
|
+
let e = qe(t);
|
|
501
633
|
if (e) return e;
|
|
502
634
|
}
|
|
503
635
|
return "";
|
|
504
636
|
}
|
|
505
|
-
function
|
|
637
|
+
function Je(e, t) {
|
|
506
638
|
return String(e?.id || e?.item_id || e?.call_id || t?.item_id || t?.call_id || t?.output_index || "");
|
|
507
639
|
}
|
|
508
|
-
function
|
|
640
|
+
function Ye(e, t, n, r, i) {
|
|
509
641
|
t && (e.toolNames.set(t, r), e.toolArguments.set(t, i));
|
|
510
642
|
let a = String(n?.call_id || "");
|
|
511
643
|
a && (e.callIds.set(a, t || r), e.toolNames.set(a, r), e.toolArguments.set(a, i));
|
|
512
644
|
}
|
|
513
|
-
function
|
|
645
|
+
function Xe(e, t, n, r = "tool") {
|
|
514
646
|
let i = String(n?.call_id || "");
|
|
515
647
|
return String(n?.name || n?.tool_name || (t ? e.toolNames.get(t) : "") || (i ? e.toolNames.get(i) : "") || r);
|
|
516
648
|
}
|
|
517
|
-
function
|
|
649
|
+
function Ze(e) {
|
|
518
650
|
if (!e || typeof e != "object") return "";
|
|
519
|
-
let t =
|
|
520
|
-
return
|
|
651
|
+
let t = qe(e.content);
|
|
652
|
+
return Y(e.output_text, e.text, e.summary_text, e.summary, e.delta, t);
|
|
521
653
|
}
|
|
522
|
-
function
|
|
523
|
-
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);
|
|
524
656
|
if (n) return n;
|
|
525
657
|
let r = Array.isArray(t?.output) ? t.output : [];
|
|
526
658
|
for (let e of r) {
|
|
527
|
-
let t =
|
|
659
|
+
let t = Ze(e);
|
|
528
660
|
if (t) return t;
|
|
529
661
|
}
|
|
530
662
|
return "";
|
|
531
663
|
}
|
|
532
|
-
function
|
|
664
|
+
function $e(e) {
|
|
533
665
|
let t = e?.response && typeof e.response == "object" ? e.response : e;
|
|
534
666
|
return Array.isArray(t?.output) ? t.output : [];
|
|
535
667
|
}
|
|
536
|
-
function
|
|
537
|
-
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);
|
|
538
670
|
if (i === "function_call") {
|
|
539
|
-
let e =
|
|
540
|
-
return
|
|
671
|
+
let e = Xe(t, a, r), i = J(r.arguments ?? r.args ?? r.input);
|
|
672
|
+
return Ye(t, a, r, e, i), [{
|
|
541
673
|
type: "tool_upsert",
|
|
542
674
|
name: e,
|
|
543
675
|
args: i,
|
|
@@ -546,27 +678,27 @@ function Xe({ data: e, state: t, status: n }) {
|
|
|
546
678
|
}
|
|
547
679
|
if (i === "function_call_output") return [{
|
|
548
680
|
type: "tool_result",
|
|
549
|
-
name:
|
|
550
|
-
output:
|
|
681
|
+
name: Xe(t, a, r),
|
|
682
|
+
output: J(r.output ?? r.result ?? r.content)
|
|
551
683
|
}];
|
|
552
684
|
if (i === "mcp_approval_request") return [{
|
|
553
685
|
type: "tool_upsert",
|
|
554
686
|
name: String(r.name || "approval"),
|
|
555
|
-
args:
|
|
687
|
+
args: J(r.arguments ?? r.args),
|
|
556
688
|
status: "paused",
|
|
557
689
|
approvalRequestId: String(r.id || r.approval_request_id || ""),
|
|
558
690
|
previousResponseId: String(e?.response_id || t.currentResponseId || ""),
|
|
559
691
|
serverLabel: String(r.server_label || "")
|
|
560
692
|
}];
|
|
561
693
|
if (i === "reasoning" || i === "reasoning_summary" || i === "reasoning_summary_text") {
|
|
562
|
-
let e =
|
|
694
|
+
let e = Ze(r);
|
|
563
695
|
return e ? [{
|
|
564
696
|
type: "reasoning_delta",
|
|
565
697
|
text: e
|
|
566
698
|
}] : [];
|
|
567
699
|
}
|
|
568
700
|
if (i === "message") {
|
|
569
|
-
let e =
|
|
701
|
+
let e = Ze(r);
|
|
570
702
|
return e ? [{
|
|
571
703
|
type: n === "completed" ? "text_final" : "text_delta",
|
|
572
704
|
text: e
|
|
@@ -574,31 +706,31 @@ function Xe({ data: e, state: t, status: n }) {
|
|
|
574
706
|
}
|
|
575
707
|
return [];
|
|
576
708
|
}
|
|
577
|
-
function
|
|
709
|
+
function tt({ eventName: e, data: t, state: n }) {
|
|
578
710
|
let r = String(t?.type || e || "").trim(), i = String(t?.id || t?.response?.id || t?.response_id || "");
|
|
579
711
|
if (i.startsWith("resp_") && (n.currentResponseId = i), r === "response.tool_call") return [{
|
|
580
712
|
type: "tool_upsert",
|
|
581
713
|
name: String(t?.name || t?.tool_name || "tool"),
|
|
582
|
-
args:
|
|
714
|
+
args: J(t?.args ?? t?.arguments),
|
|
583
715
|
status: "running"
|
|
584
716
|
}];
|
|
585
717
|
if (r === "response.tool_result" || r === "response.ksadk.tool_result") return [{
|
|
586
718
|
type: "tool_result",
|
|
587
719
|
name: String(t?.name || t?.tool_name || "tool"),
|
|
588
|
-
output:
|
|
720
|
+
output: J(t?.output ?? t?.result)
|
|
589
721
|
}];
|
|
590
|
-
if (r === "response.output_item.added") return
|
|
722
|
+
if (r === "response.output_item.added") return et({
|
|
591
723
|
data: t,
|
|
592
724
|
state: n,
|
|
593
725
|
status: "running"
|
|
594
726
|
});
|
|
595
|
-
if (r === "response.output_item.done") return
|
|
727
|
+
if (r === "response.output_item.done") return et({
|
|
596
728
|
data: t,
|
|
597
729
|
state: n,
|
|
598
730
|
status: "completed"
|
|
599
731
|
});
|
|
600
732
|
if (r === "response.function_call_arguments.delta") {
|
|
601
|
-
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 || "")}`;
|
|
602
734
|
return n.toolArguments.set(e, i), [{
|
|
603
735
|
type: "tool_upsert",
|
|
604
736
|
name: r,
|
|
@@ -607,7 +739,7 @@ function Ze({ eventName: e, data: t, state: n }) {
|
|
|
607
739
|
}];
|
|
608
740
|
}
|
|
609
741
|
if (r === "response.function_call_arguments.done") {
|
|
610
|
-
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));
|
|
611
743
|
return n.toolArguments.set(e, i), [{
|
|
612
744
|
type: "tool_upsert",
|
|
613
745
|
name: r,
|
|
@@ -616,28 +748,28 @@ function Ze({ eventName: e, data: t, state: n }) {
|
|
|
616
748
|
}];
|
|
617
749
|
}
|
|
618
750
|
if (r === "response.reasoning.delta" || r === "response.reasoning_text.delta" || r === "response.reasoning_summary.delta" || r === "response.reasoning_summary_text.delta") {
|
|
619
|
-
let e =
|
|
751
|
+
let e = Y(t?.delta, t?.text);
|
|
620
752
|
return e ? [{
|
|
621
753
|
type: "reasoning_delta",
|
|
622
754
|
text: e
|
|
623
755
|
}] : [];
|
|
624
756
|
}
|
|
625
757
|
if (r === "response.output_text.delta") {
|
|
626
|
-
let e =
|
|
758
|
+
let e = Y(t?.delta, t?.text);
|
|
627
759
|
return e ? [{
|
|
628
760
|
type: "text_delta",
|
|
629
761
|
text: e
|
|
630
762
|
}] : [];
|
|
631
763
|
}
|
|
632
764
|
if (r === "response.output_text.done") {
|
|
633
|
-
let e =
|
|
765
|
+
let e = Y(t?.text, t?.delta);
|
|
634
766
|
return e ? [{
|
|
635
767
|
type: "text_final",
|
|
636
768
|
text: e
|
|
637
769
|
}] : [];
|
|
638
770
|
}
|
|
639
771
|
if (r === "response.content_part.delta") {
|
|
640
|
-
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);
|
|
641
773
|
return n ? e.includes("reasoning") ? [{
|
|
642
774
|
type: "reasoning_delta",
|
|
643
775
|
text: n
|
|
@@ -647,7 +779,7 @@ function Ze({ eventName: e, data: t, state: n }) {
|
|
|
647
779
|
}] : [];
|
|
648
780
|
}
|
|
649
781
|
if (r === "response.completed") {
|
|
650
|
-
let e =
|
|
782
|
+
let e = Qe(t), r = $e(t).flatMap((e) => et({
|
|
651
783
|
data: {
|
|
652
784
|
...t,
|
|
653
785
|
item: e
|
|
@@ -698,13 +830,13 @@ function Ze({ eventName: e, data: t, state: n }) {
|
|
|
698
830
|
}
|
|
699
831
|
//#endregion
|
|
700
832
|
//#region src/core/stream/responses-protocol.ts
|
|
701
|
-
var
|
|
833
|
+
var nt = class {
|
|
702
834
|
id = "responses";
|
|
703
835
|
createState() {
|
|
704
|
-
return
|
|
836
|
+
return Ke();
|
|
705
837
|
}
|
|
706
838
|
parse(e, t) {
|
|
707
|
-
return
|
|
839
|
+
return tt({
|
|
708
840
|
eventName: e.eventName,
|
|
709
841
|
data: e.data,
|
|
710
842
|
state: t
|
|
@@ -726,23 +858,23 @@ var Qe = class {
|
|
|
726
858
|
};
|
|
727
859
|
//#endregion
|
|
728
860
|
//#region src/utils/stream-parsing.ts
|
|
729
|
-
function
|
|
861
|
+
function rt(e) {
|
|
730
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("") : "";
|
|
731
863
|
}
|
|
732
|
-
function
|
|
864
|
+
function it(e) {
|
|
733
865
|
return e && typeof e == "object" ? e : {};
|
|
734
866
|
}
|
|
735
|
-
function
|
|
736
|
-
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);
|
|
737
869
|
return {
|
|
738
|
-
content:
|
|
739
|
-
reasoning:
|
|
740
|
-
finalText:
|
|
870
|
+
content: rt(r.content),
|
|
871
|
+
reasoning: rt(r.reasoning_content),
|
|
872
|
+
finalText: rt(i.content)
|
|
741
873
|
};
|
|
742
874
|
}
|
|
743
875
|
//#endregion
|
|
744
876
|
//#region src/core/stream/chat-completions-protocol.ts
|
|
745
|
-
var
|
|
877
|
+
var ot = class {
|
|
746
878
|
id = "chat_completions";
|
|
747
879
|
createState() {
|
|
748
880
|
return {};
|
|
@@ -750,7 +882,7 @@ var nt = class {
|
|
|
750
882
|
parse(e) {
|
|
751
883
|
let t = e.data;
|
|
752
884
|
if (typeof t != "object" || !t) return [];
|
|
753
|
-
let n =
|
|
885
|
+
let n = at(t), r = [];
|
|
754
886
|
return n.reasoning && r.push({
|
|
755
887
|
type: "reasoning_delta",
|
|
756
888
|
text: n.reasoning
|
|
@@ -762,14 +894,14 @@ var nt = class {
|
|
|
762
894
|
text: n.finalText
|
|
763
895
|
}), r;
|
|
764
896
|
}
|
|
765
|
-
},
|
|
766
|
-
|
|
767
|
-
function
|
|
768
|
-
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");
|
|
769
901
|
}
|
|
770
902
|
//#endregion
|
|
771
903
|
//#region src/utils/stream-control.js
|
|
772
|
-
function
|
|
904
|
+
function lt(e = []) {
|
|
773
905
|
return e.some((e) => {
|
|
774
906
|
if (e?.type !== "terminal") return !1;
|
|
775
907
|
let t = String(e.status || "").toLowerCase();
|
|
@@ -778,7 +910,7 @@ function at(e = []) {
|
|
|
778
910
|
}
|
|
779
911
|
//#endregion
|
|
780
912
|
//#region src/core/transport/sse-parser.ts
|
|
781
|
-
function
|
|
913
|
+
function ut(e) {
|
|
782
914
|
let t = [], n = e.trim();
|
|
783
915
|
if (!n) return t;
|
|
784
916
|
let r = n.split("\n");
|
|
@@ -808,7 +940,7 @@ function ot(e) {
|
|
|
808
940
|
}
|
|
809
941
|
return t;
|
|
810
942
|
}
|
|
811
|
-
function
|
|
943
|
+
function dt(e) {
|
|
812
944
|
let t = e.split("\n\n");
|
|
813
945
|
return {
|
|
814
946
|
chunks: t,
|
|
@@ -817,21 +949,21 @@ function st(e) {
|
|
|
817
949
|
}
|
|
818
950
|
//#endregion
|
|
819
951
|
//#region src/utils/error.ts
|
|
820
|
-
function
|
|
952
|
+
function ft(e) {
|
|
821
953
|
return e instanceof Error ? e.message : String(e);
|
|
822
954
|
}
|
|
823
|
-
var
|
|
824
|
-
function
|
|
955
|
+
var pt = 1280;
|
|
956
|
+
function mt(e) {
|
|
825
957
|
let { apiFormats: t } = e;
|
|
826
958
|
return t.includes("responses") ? "responses" : t.includes("chat_completions") ? "chat_completions" : "responses";
|
|
827
959
|
}
|
|
828
|
-
function
|
|
829
|
-
let r = Math.min(
|
|
960
|
+
function ht(e, t, n) {
|
|
961
|
+
let r = Math.min(pt, Math.max(420, t - n - 360));
|
|
830
962
|
return Math.min(Math.max(e, 420), r);
|
|
831
963
|
}
|
|
832
964
|
//#endregion
|
|
833
965
|
//#region src/core/run/engine.ts
|
|
834
|
-
var
|
|
966
|
+
var gt = new Set([
|
|
835
967
|
"completed",
|
|
836
968
|
"failed",
|
|
837
969
|
"error",
|
|
@@ -839,12 +971,12 @@ var ft = new Set([
|
|
|
839
971
|
"canceled",
|
|
840
972
|
"aborted"
|
|
841
973
|
]);
|
|
842
|
-
function
|
|
974
|
+
function _t(e) {
|
|
843
975
|
if (e.EventType !== "run_status") return null;
|
|
844
976
|
let t = String(e.Content?.status || "").trim().toLowerCase();
|
|
845
|
-
return
|
|
977
|
+
return gt.has(t) ? t : null;
|
|
846
978
|
}
|
|
847
|
-
function
|
|
979
|
+
function vt(e, t) {
|
|
848
980
|
let n = String(t?.type || e || "").trim();
|
|
849
981
|
if (n === "response.created") return {
|
|
850
982
|
phase: "运行已创建",
|
|
@@ -890,11 +1022,11 @@ function mt(e, t) {
|
|
|
890
1022
|
status: "failed"
|
|
891
1023
|
} : null;
|
|
892
1024
|
}
|
|
893
|
-
function
|
|
1025
|
+
function yt() {
|
|
894
1026
|
let e = globalThis.crypto;
|
|
895
1027
|
return e && typeof e.randomUUID == "function" ? `run_${e.randomUUID()}` : `run_${Date.now()}_${Math.random().toString(16).slice(2)}`;
|
|
896
1028
|
}
|
|
897
|
-
var
|
|
1029
|
+
var bt = {
|
|
898
1030
|
idle: [
|
|
899
1031
|
"creating-session",
|
|
900
1032
|
"uploading-files",
|
|
@@ -932,7 +1064,7 @@ var gt = {
|
|
|
932
1064
|
],
|
|
933
1065
|
error: ["connecting", "idle"],
|
|
934
1066
|
cancelled: ["idle"]
|
|
935
|
-
},
|
|
1067
|
+
}, xt = class {
|
|
936
1068
|
_stage = "idle";
|
|
937
1069
|
listeners = /* @__PURE__ */ new Set();
|
|
938
1070
|
abortController = null;
|
|
@@ -966,7 +1098,7 @@ var gt = {
|
|
|
966
1098
|
for (let e of this.listeners) e(t);
|
|
967
1099
|
}
|
|
968
1100
|
setStage(e) {
|
|
969
|
-
let t =
|
|
1101
|
+
let t = bt[this._stage];
|
|
970
1102
|
t && !t.includes(e) && console.warn(`[RunEngine] Invalid transition: ${this._stage} → ${e}`), this._stage = e, this.emit({
|
|
971
1103
|
type: "stage_changed",
|
|
972
1104
|
stage: e
|
|
@@ -993,11 +1125,11 @@ var gt = {
|
|
|
993
1125
|
status: "connecting",
|
|
994
1126
|
countEvent: !1
|
|
995
1127
|
});
|
|
996
|
-
let a = t ? "responses" :
|
|
1128
|
+
let a = t ? "responses" : mt({
|
|
997
1129
|
agentFramework: this.config.agentFramework,
|
|
998
1130
|
apiFormats: this.config.apiFormats
|
|
999
|
-
}), o =
|
|
1000
|
-
|
|
1131
|
+
}), o = ct(a), s = o.createState(), c = yt();
|
|
1132
|
+
I.getState().setCurrentRunId(c);
|
|
1001
1133
|
let l = this.buildRequestBody(n, a, t, e, i, c), u = await this.api.runAgent(l, { signal: this.abortController?.signal });
|
|
1002
1134
|
this.setStage("streaming"), this.emit({
|
|
1003
1135
|
type: "activity",
|
|
@@ -1024,7 +1156,7 @@ var gt = {
|
|
|
1024
1156
|
f.terminalStatus = (await this.consumeStream(e, o, s, t)).terminalStatus;
|
|
1025
1157
|
}
|
|
1026
1158
|
if (f.terminalStatus === "cancelled") {
|
|
1027
|
-
this.setStage("stopping"),
|
|
1159
|
+
this.setStage("stopping"), I.getState().stopActivity("运行时已取消本次执行。"), this.emit({
|
|
1028
1160
|
type: "activity",
|
|
1029
1161
|
phase: "运行已取消",
|
|
1030
1162
|
status: "stopped",
|
|
@@ -1058,18 +1190,18 @@ var gt = {
|
|
|
1058
1190
|
error: e instanceof Error ? e : Error(String(e))
|
|
1059
1191
|
})));
|
|
1060
1192
|
} finally {
|
|
1061
|
-
|
|
1193
|
+
I.getState().setStreaming(!1), this.setStage("idle"), this.activeCompactionId = null, this.activeSessionId = null, e.onSettled?.(n);
|
|
1062
1194
|
}
|
|
1063
1195
|
})(), !0;
|
|
1064
1196
|
}
|
|
1065
1197
|
stop() {
|
|
1066
|
-
this._stage !== "idle" && (this.setStage("stopping"), this.abortController?.abort(),
|
|
1198
|
+
this._stage !== "idle" && (this.setStage("stopping"), this.abortController?.abort(), I.getState().stopActivity(), I.getState().setCurrentRunId(""), this.setStage("cancelled"), this.emit({
|
|
1067
1199
|
type: "system_message",
|
|
1068
1200
|
content: "已停止接收本次输出;如果运行时不支持取消,后台执行可能仍会继续。"
|
|
1069
1201
|
}));
|
|
1070
1202
|
}
|
|
1071
1203
|
disconnect() {
|
|
1072
|
-
this._stage !== "idle" && (this.abortController?.abort(),
|
|
1204
|
+
this._stage !== "idle" && (this.abortController?.abort(), I.getState().setStreaming(!1), I.getState().clearActivity(), this._stage = "idle", this.activeCompactionId = null, this.activeSessionId = null);
|
|
1073
1205
|
}
|
|
1074
1206
|
async cancelRemote(e) {
|
|
1075
1207
|
try {
|
|
@@ -1080,7 +1212,7 @@ var gt = {
|
|
|
1080
1212
|
this.stop();
|
|
1081
1213
|
}
|
|
1082
1214
|
resumeRun(e) {
|
|
1083
|
-
this.abortController?.abort(), this.abortController = new AbortController(), this.activeSessionId = e.sessionId,
|
|
1215
|
+
this.abortController?.abort(), this.abortController = new AbortController(), this.activeSessionId = e.sessionId, I.getState().setCurrentRunId(e.invocationId), this.setStage("connecting"), this.emit({
|
|
1084
1216
|
type: "activity",
|
|
1085
1217
|
phase: "恢复运行事件订阅",
|
|
1086
1218
|
status: "connecting",
|
|
@@ -1104,11 +1236,11 @@ var gt = {
|
|
|
1104
1236
|
let { value: e, done: n } = await r.read();
|
|
1105
1237
|
if (n) break;
|
|
1106
1238
|
a += i.decode(e, { stream: !0 });
|
|
1107
|
-
let { chunks: o, remainder: s } =
|
|
1239
|
+
let { chunks: o, remainder: s } = dt(a);
|
|
1108
1240
|
a = s;
|
|
1109
1241
|
for (let e of o) {
|
|
1110
1242
|
if (!e.trim()) continue;
|
|
1111
|
-
let n =
|
|
1243
|
+
let n = ut(e);
|
|
1112
1244
|
for (let e of n) e.eventName !== "__done__" && (this.emit({
|
|
1113
1245
|
type: "activity",
|
|
1114
1246
|
phase: "收到恢复事件",
|
|
@@ -1116,7 +1248,7 @@ var gt = {
|
|
|
1116
1248
|
}), this.emit({
|
|
1117
1249
|
type: "stream_event",
|
|
1118
1250
|
event: e.data
|
|
1119
|
-
}), t =
|
|
1251
|
+
}), t = _t(e.data) || t);
|
|
1120
1252
|
}
|
|
1121
1253
|
}
|
|
1122
1254
|
this.setStage("completing"), t === "cancelled" || t === "canceled" || t === "aborted" ? this.emit({
|
|
@@ -1138,15 +1270,15 @@ var gt = {
|
|
|
1138
1270
|
} catch (e) {
|
|
1139
1271
|
e instanceof DOMException && e.name === "AbortError" || console.error("Failed to subscribe to run events:", e);
|
|
1140
1272
|
} finally {
|
|
1141
|
-
|
|
1273
|
+
I.getState().setStreaming(!1), I.getState().setCurrentRunId(""), this.setStage("idle"), this.activeSessionId = null;
|
|
1142
1274
|
}
|
|
1143
1275
|
})();
|
|
1144
1276
|
}
|
|
1145
1277
|
resumeCheckpoint(e) {
|
|
1146
1278
|
if (this._stage !== "idle") return !1;
|
|
1147
1279
|
this.abortController = new AbortController(), this.activeSessionId = e.sessionId;
|
|
1148
|
-
let t =
|
|
1149
|
-
return
|
|
1280
|
+
let t = yt();
|
|
1281
|
+
return I.getState().setCurrentRunId(t), (async () => {
|
|
1150
1282
|
try {
|
|
1151
1283
|
if (this.setStage("connecting"), this.emit({
|
|
1152
1284
|
type: "activity",
|
|
@@ -1178,7 +1310,7 @@ var gt = {
|
|
|
1178
1310
|
checkpointId: e.checkpointId,
|
|
1179
1311
|
resumeAttemptId: e.resumeAttemptId,
|
|
1180
1312
|
invocationId: t
|
|
1181
|
-
}, { signal: this.abortController?.signal }), r =
|
|
1313
|
+
}, { signal: this.abortController?.signal }), r = ct("responses"), i = r.createState();
|
|
1182
1314
|
this.setStage("streaming"), this.emit({
|
|
1183
1315
|
type: "activity",
|
|
1184
1316
|
source: "restore",
|
|
@@ -1189,7 +1321,7 @@ var gt = {
|
|
|
1189
1321
|
let a = `msg-${Date.now()}`, o = await this.consumeStream(n, r, i, a);
|
|
1190
1322
|
if (o.terminalStatus && o.terminalStatus !== "completed") {
|
|
1191
1323
|
if (o.terminalStatus === "cancelled") {
|
|
1192
|
-
this.setStage("stopping"),
|
|
1324
|
+
this.setStage("stopping"), I.getState().stopActivity("运行时已取消本次恢复。"), this.emit({
|
|
1193
1325
|
type: "activity",
|
|
1194
1326
|
source: "restore",
|
|
1195
1327
|
phase: "恢复已取消",
|
|
@@ -1220,7 +1352,7 @@ var gt = {
|
|
|
1220
1352
|
error: e instanceof Error ? e : Error(String(e))
|
|
1221
1353
|
}));
|
|
1222
1354
|
} finally {
|
|
1223
|
-
|
|
1355
|
+
I.getState().setStreaming(!1), I.getState().setCurrentRunId(""), this.setStage("idle"), this.activeSessionId = null, e.onSettled?.(e.sessionId);
|
|
1224
1356
|
}
|
|
1225
1357
|
})(), !0;
|
|
1226
1358
|
}
|
|
@@ -1254,7 +1386,7 @@ var gt = {
|
|
|
1254
1386
|
} catch (e) {
|
|
1255
1387
|
this.emit({
|
|
1256
1388
|
type: "system_message",
|
|
1257
|
-
content: `【系统提示】图片 ${t.name} 读取失败,原因: ${
|
|
1389
|
+
content: `【系统提示】图片 ${t.name} 读取失败,原因: ${ft(e)}`
|
|
1258
1390
|
});
|
|
1259
1391
|
}
|
|
1260
1392
|
continue;
|
|
@@ -1271,7 +1403,7 @@ var gt = {
|
|
|
1271
1403
|
} catch (e) {
|
|
1272
1404
|
this.emit({
|
|
1273
1405
|
type: "system_message",
|
|
1274
|
-
content: `【系统提示】文件 ${t.name} 上传失败,原因: ${
|
|
1406
|
+
content: `【系统提示】文件 ${t.name} 上传失败,原因: ${ft(e)}`
|
|
1275
1407
|
});
|
|
1276
1408
|
}
|
|
1277
1409
|
}
|
|
@@ -1290,7 +1422,7 @@ var gt = {
|
|
|
1290
1422
|
Stream: !0,
|
|
1291
1423
|
ApiFormat: t,
|
|
1292
1424
|
Model: this.config.selectedModel || void 0,
|
|
1293
|
-
ModelOptions:
|
|
1425
|
+
ModelOptions: Ne(Me(this.config.thinkingMode))
|
|
1294
1426
|
};
|
|
1295
1427
|
if (n) o.ResponsesInput = r.responsesInput, o.PreviousResponseId = r.previousResponseId;
|
|
1296
1428
|
else {
|
|
@@ -1318,32 +1450,32 @@ var gt = {
|
|
|
1318
1450
|
type: "assistant_message_created",
|
|
1319
1451
|
messageId: r
|
|
1320
1452
|
})), o += a.decode(e, { stream: !0 });
|
|
1321
|
-
let { chunks: u, remainder: d } =
|
|
1453
|
+
let { chunks: u, remainder: d } = dt(o);
|
|
1322
1454
|
o = d;
|
|
1323
1455
|
for (let e of u) {
|
|
1324
1456
|
if (!e.trim()) continue;
|
|
1325
1457
|
if (this.isCompactionChunk(e)) {
|
|
1326
|
-
let t =
|
|
1458
|
+
let t = ut(e);
|
|
1327
1459
|
for (let e of t) e.eventName.startsWith("response.compaction") && this.upsertCompactionMessage({
|
|
1328
1460
|
...e.data,
|
|
1329
1461
|
phase: e.eventName.split(".").pop()
|
|
1330
1462
|
});
|
|
1331
1463
|
continue;
|
|
1332
1464
|
}
|
|
1333
|
-
let a =
|
|
1465
|
+
let a = ut(e), o = !1, c;
|
|
1334
1466
|
for (let e of a) {
|
|
1335
1467
|
if (e.eventName === "__done__") {
|
|
1336
1468
|
o = !0;
|
|
1337
1469
|
continue;
|
|
1338
1470
|
}
|
|
1339
|
-
let i =
|
|
1471
|
+
let i = vt(e.eventName, e.data);
|
|
1340
1472
|
i && this.emit({
|
|
1341
1473
|
type: "activity",
|
|
1342
1474
|
...i
|
|
1343
1475
|
});
|
|
1344
1476
|
let a = t.parse(e, n);
|
|
1345
1477
|
for (let e of a) this.dispatchAction(e, r);
|
|
1346
|
-
if (
|
|
1478
|
+
if (lt(a)) {
|
|
1347
1479
|
o = !0;
|
|
1348
1480
|
let e = a.find((e) => e.type === "terminal");
|
|
1349
1481
|
c = e && "status" in e ? String(e.status || "") : void 0;
|
|
@@ -1454,98 +1586,98 @@ var gt = {
|
|
|
1454
1586
|
phase: "failed"
|
|
1455
1587
|
}), null);
|
|
1456
1588
|
}
|
|
1457
|
-
},
|
|
1458
|
-
function
|
|
1589
|
+
}, St = [], Ct = [];
|
|
1590
|
+
function X(e) {
|
|
1459
1591
|
return typeof e == "string" ? e.trim() : "";
|
|
1460
1592
|
}
|
|
1461
|
-
function
|
|
1593
|
+
function wt(e) {
|
|
1462
1594
|
let t = typeof e == "number" ? e : Number(e);
|
|
1463
1595
|
return Number.isFinite(t) ? t : void 0;
|
|
1464
1596
|
}
|
|
1465
|
-
function
|
|
1597
|
+
function Tt(e) {
|
|
1466
1598
|
return typeof e == "string" || typeof e == "number" ? e : void 0;
|
|
1467
1599
|
}
|
|
1468
|
-
function
|
|
1600
|
+
function Et(e) {
|
|
1469
1601
|
return e && typeof e == "object" && !Array.isArray(e) ? e : void 0;
|
|
1470
1602
|
}
|
|
1471
|
-
function
|
|
1603
|
+
function Dt(e) {
|
|
1472
1604
|
return e !== null;
|
|
1473
1605
|
}
|
|
1474
|
-
function
|
|
1606
|
+
function Ot(e) {
|
|
1475
1607
|
return e !== null;
|
|
1476
1608
|
}
|
|
1477
|
-
function
|
|
1609
|
+
function kt(e) {
|
|
1478
1610
|
return [...e].sort((e, t) => {
|
|
1479
1611
|
let n = t.seqId ?? -1, r = e.seqId ?? -1;
|
|
1480
1612
|
return n === r ? (Date.parse(String(t.timestamp || "")) || 0) - (Date.parse(String(e.timestamp || "")) || 0) : n - r;
|
|
1481
1613
|
});
|
|
1482
1614
|
}
|
|
1483
|
-
function
|
|
1615
|
+
function At(e) {
|
|
1484
1616
|
return [...e].sort((e, t) => {
|
|
1485
1617
|
let n = t.seqId ?? -1, r = e.seqId ?? -1;
|
|
1486
1618
|
return n === r ? (Date.parse(String(t.timestamp || "")) || 0) - (Date.parse(String(e.timestamp || "")) || 0) : n - r;
|
|
1487
1619
|
});
|
|
1488
1620
|
}
|
|
1489
|
-
function
|
|
1490
|
-
return
|
|
1621
|
+
function jt(e) {
|
|
1622
|
+
return kt(e)[0]?.runId || "";
|
|
1491
1623
|
}
|
|
1492
|
-
function
|
|
1493
|
-
let t =
|
|
1624
|
+
function Mt(e) {
|
|
1625
|
+
let t = jt(e);
|
|
1494
1626
|
return t ? e.filter((e) => e.runId === t) : [];
|
|
1495
1627
|
}
|
|
1496
|
-
function
|
|
1497
|
-
let t =
|
|
1628
|
+
function Nt(e) {
|
|
1629
|
+
let t = Et(e);
|
|
1498
1630
|
if (!t) return null;
|
|
1499
|
-
let n =
|
|
1631
|
+
let n = Et(t.Metadata ?? t.metadata), r = Et(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);
|
|
1500
1632
|
return !i || !a ? null : {
|
|
1501
1633
|
checkpointId: i,
|
|
1502
1634
|
runId: a,
|
|
1503
|
-
sessionId:
|
|
1504
|
-
invocationId:
|
|
1505
|
-
seqId:
|
|
1506
|
-
timestamp:
|
|
1507
|
-
framework:
|
|
1508
|
-
frameworkRef:
|
|
1509
|
-
phase:
|
|
1510
|
-
stage:
|
|
1511
|
-
summary:
|
|
1512
|
-
nextAction:
|
|
1513
|
-
status:
|
|
1635
|
+
sessionId: X(t.SessionId ?? t.sessionId ?? t.session_id) || void 0,
|
|
1636
|
+
invocationId: X(t.InvocationId ?? t.invocationId ?? t.invocation_id) || void 0,
|
|
1637
|
+
seqId: wt(t.SeqId ?? t.seqId ?? t.seq_id),
|
|
1638
|
+
timestamp: Tt(t.Timestamp ?? t.timestamp ?? t.CreatedAt ?? t.createdAt),
|
|
1639
|
+
framework: X(t.Framework ?? t.framework ?? n?.framework ?? r?.framework) || void 0,
|
|
1640
|
+
frameworkRef: Et(t.FrameworkRef ?? t.frameworkRef ?? t.framework_ref ?? n?.framework_ref ?? n?.frameworkRef),
|
|
1641
|
+
phase: X(t.Phase ?? t.phase ?? n?.phase ?? r?.phase) || void 0,
|
|
1642
|
+
stage: X(t.Stage ?? t.stage ?? n?.stage ?? n?.title) || void 0,
|
|
1643
|
+
summary: X(t.Summary ?? t.summary ?? n?.summary ?? n?.description) || void 0,
|
|
1644
|
+
nextAction: X(t.NextAction ?? t.nextAction ?? t.next_action ?? n?.nextAction ?? n?.next_action) || void 0,
|
|
1645
|
+
status: X(t.Status ?? t.status ?? n?.status ?? r?.status) || void 0,
|
|
1514
1646
|
metadata: n
|
|
1515
1647
|
};
|
|
1516
1648
|
}
|
|
1517
|
-
function
|
|
1518
|
-
let t =
|
|
1649
|
+
function Pt(e) {
|
|
1650
|
+
let t = Et(e);
|
|
1519
1651
|
if (!t) return null;
|
|
1520
|
-
let n =
|
|
1652
|
+
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);
|
|
1521
1653
|
return !n || !r || !i ? null : {
|
|
1522
1654
|
receiptId: n,
|
|
1523
1655
|
idempotencyKey: r,
|
|
1524
1656
|
toolName: i,
|
|
1525
|
-
toolCallId:
|
|
1526
|
-
runId:
|
|
1527
|
-
checkpointId:
|
|
1528
|
-
sessionId:
|
|
1529
|
-
invocationId:
|
|
1530
|
-
seqId:
|
|
1531
|
-
timestamp:
|
|
1532
|
-
status:
|
|
1657
|
+
toolCallId: X(t.ToolCallId ?? t.toolCallId ?? t.tool_call_id) || void 0,
|
|
1658
|
+
runId: X(t.RunId ?? t.runId ?? t.run_id) || void 0,
|
|
1659
|
+
checkpointId: X(t.CheckpointId ?? t.checkpointId ?? t.checkpoint_id) || void 0,
|
|
1660
|
+
sessionId: X(t.SessionId ?? t.sessionId ?? t.session_id) || void 0,
|
|
1661
|
+
invocationId: X(t.InvocationId ?? t.invocationId ?? t.invocation_id) || void 0,
|
|
1662
|
+
seqId: wt(t.SeqId ?? t.seqId ?? t.seq_id),
|
|
1663
|
+
timestamp: Tt(t.Timestamp ?? t.timestamp ?? t.CreatedAt ?? t.createdAt),
|
|
1664
|
+
status: X(t.Status ?? t.status) || void 0,
|
|
1533
1665
|
replayed: !!(t.Replayed ?? t.replayed),
|
|
1534
|
-
metadata:
|
|
1666
|
+
metadata: Et(t.Metadata ?? t.metadata)
|
|
1535
1667
|
};
|
|
1536
1668
|
}
|
|
1537
|
-
var
|
|
1669
|
+
var Z = N()((e, t) => ({
|
|
1538
1670
|
checkpointsBySessionId: {},
|
|
1539
1671
|
toolReceiptsBySessionId: {},
|
|
1540
1672
|
setSessionCheckpoints: (t, n) => e((e) => ({ checkpointsBySessionId: {
|
|
1541
1673
|
...e.checkpointsBySessionId,
|
|
1542
|
-
[t]:
|
|
1674
|
+
[t]: kt(Mt(n.map(Nt).filter(Dt).map((e) => ({
|
|
1543
1675
|
...e,
|
|
1544
1676
|
sessionId: e.sessionId || t
|
|
1545
1677
|
}))))
|
|
1546
1678
|
} })),
|
|
1547
1679
|
upsertSessionCheckpoint: (t, n) => {
|
|
1548
|
-
let r =
|
|
1680
|
+
let r = Nt(n);
|
|
1549
1681
|
r && e((e) => {
|
|
1550
1682
|
let n = e.checkpointsBySessionId[t] || [];
|
|
1551
1683
|
r.sessionId = r.sessionId || t;
|
|
@@ -1554,27 +1686,27 @@ var X = M()((e, t) => ({
|
|
|
1554
1686
|
...i.get(r.checkpointId),
|
|
1555
1687
|
...r
|
|
1556
1688
|
});
|
|
1557
|
-
let a =
|
|
1689
|
+
let a = Mt([...i.values()]);
|
|
1558
1690
|
return { checkpointsBySessionId: {
|
|
1559
1691
|
...e.checkpointsBySessionId,
|
|
1560
|
-
[t]:
|
|
1692
|
+
[t]: kt(a)
|
|
1561
1693
|
} };
|
|
1562
1694
|
});
|
|
1563
1695
|
},
|
|
1564
1696
|
getSessionCheckpoints: (e) => {
|
|
1565
1697
|
let n = String(e || "");
|
|
1566
|
-
return n && t().checkpointsBySessionId[n] ||
|
|
1698
|
+
return n && t().checkpointsBySessionId[n] || St;
|
|
1567
1699
|
},
|
|
1568
1700
|
setSessionToolReceipts: (t, n) => e((e) => ({ toolReceiptsBySessionId: {
|
|
1569
1701
|
...e.toolReceiptsBySessionId,
|
|
1570
|
-
[t]:
|
|
1702
|
+
[t]: At(n.map(Pt).filter(Ot).map((e) => ({
|
|
1571
1703
|
...e,
|
|
1572
1704
|
sessionId: e.sessionId || t
|
|
1573
1705
|
})))
|
|
1574
1706
|
} })),
|
|
1575
1707
|
getSessionToolReceipts: (e) => {
|
|
1576
1708
|
let n = String(e || "");
|
|
1577
|
-
return n && t().toolReceiptsBySessionId[n] ||
|
|
1709
|
+
return n && t().toolReceiptsBySessionId[n] || Ct;
|
|
1578
1710
|
},
|
|
1579
1711
|
clearSessionCheckpoints: (t) => e((e) => {
|
|
1580
1712
|
let n = String(t || "");
|
|
@@ -1582,13 +1714,13 @@ var X = M()((e, t) => ({
|
|
|
1582
1714
|
checkpointsBySessionId: {},
|
|
1583
1715
|
toolReceiptsBySessionId: {}
|
|
1584
1716
|
};
|
|
1585
|
-
let
|
|
1586
|
-
return {
|
|
1587
|
-
checkpointsBySessionId:
|
|
1588
|
-
toolReceiptsBySessionId:
|
|
1717
|
+
let r = { ...e.checkpointsBySessionId }, i = { ...e.toolReceiptsBySessionId };
|
|
1718
|
+
return delete r[n], delete i[n], {
|
|
1719
|
+
checkpointsBySessionId: r,
|
|
1720
|
+
toolReceiptsBySessionId: i
|
|
1589
1721
|
};
|
|
1590
1722
|
})
|
|
1591
|
-
})),
|
|
1723
|
+
})), Ft = new Set([
|
|
1592
1724
|
"completed",
|
|
1593
1725
|
"failed",
|
|
1594
1726
|
"error",
|
|
@@ -1596,21 +1728,21 @@ var X = M()((e, t) => ({
|
|
|
1596
1728
|
"canceled",
|
|
1597
1729
|
"aborted"
|
|
1598
1730
|
]);
|
|
1599
|
-
function
|
|
1731
|
+
function It(e) {
|
|
1600
1732
|
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("") : "";
|
|
1601
1733
|
}
|
|
1602
|
-
function
|
|
1734
|
+
function Lt(e) {
|
|
1603
1735
|
let t = String(e || "").trim();
|
|
1604
1736
|
return t ? `/agentengine/api/v1/AttachmentContent?FileUri=${encodeURIComponent(t)}` : "";
|
|
1605
1737
|
}
|
|
1606
|
-
function
|
|
1738
|
+
function Rt(e) {
|
|
1607
1739
|
return String(e || "").match(/^data:([^;,]+)/)?.[1] || "";
|
|
1608
1740
|
}
|
|
1609
|
-
function
|
|
1741
|
+
function zt(e, t) {
|
|
1610
1742
|
let n = String(e || "").trim(), r = String(t || "").trim();
|
|
1611
1743
|
return !n || !r || n === r ? !0 : n.endsWith("/*") ? r.startsWith(n.slice(0, -1)) : r.endsWith("/*") ? n.startsWith(r.slice(0, -1)) : !1;
|
|
1612
1744
|
}
|
|
1613
|
-
function
|
|
1745
|
+
function Bt(e) {
|
|
1614
1746
|
let t = e?.Content?.parts || [], n = [], r = /* @__PURE__ */ new Map(), i = (e) => {
|
|
1615
1747
|
let t = `${e.fileUri || e.url || e.name}|${e.type}`;
|
|
1616
1748
|
r.has(t) || r.set(t, e);
|
|
@@ -1640,7 +1772,7 @@ function Ft(e) {
|
|
|
1640
1772
|
let t = e.file_url.trim();
|
|
1641
1773
|
i({
|
|
1642
1774
|
name: e.filename || e.displayName || e.display_name || "attachment",
|
|
1643
|
-
url:
|
|
1775
|
+
url: Lt(t),
|
|
1644
1776
|
type: e.mime_type || e.mimeType || "application/octet-stream",
|
|
1645
1777
|
fileUri: t
|
|
1646
1778
|
});
|
|
@@ -1651,7 +1783,7 @@ function Ft(e) {
|
|
|
1651
1783
|
t && i({
|
|
1652
1784
|
name: e.filename || e.displayName || e.display_name || "uploaded_image",
|
|
1653
1785
|
url: t,
|
|
1654
|
-
type: e.mime_type || e.mimeType ||
|
|
1786
|
+
type: e.mime_type || e.mimeType || Rt(t) || "image/*"
|
|
1655
1787
|
});
|
|
1656
1788
|
continue;
|
|
1657
1789
|
}
|
|
@@ -1659,7 +1791,7 @@ function Ft(e) {
|
|
|
1659
1791
|
let t = String(e.fileData.fileUri || "").trim();
|
|
1660
1792
|
i({
|
|
1661
1793
|
name: e.fileData.displayName || "attachment",
|
|
1662
|
-
url:
|
|
1794
|
+
url: Lt(t),
|
|
1663
1795
|
type: e.fileData.mimeType || "application/octet-stream",
|
|
1664
1796
|
fileUri: t
|
|
1665
1797
|
});
|
|
@@ -1669,11 +1801,11 @@ function Ft(e) {
|
|
|
1669
1801
|
for (let e of a) {
|
|
1670
1802
|
let t = String(e.file_uri || "").trim(), n = {
|
|
1671
1803
|
name: e.display_name || "attachment",
|
|
1672
|
-
url:
|
|
1804
|
+
url: Lt(t),
|
|
1673
1805
|
type: e.mime_type || "application/octet-stream",
|
|
1674
1806
|
fileUri: t
|
|
1675
1807
|
};
|
|
1676
|
-
!n.url && !n.fileUri && Array.from(r.values()).some((e) => e.name === n.name &&
|
|
1808
|
+
!n.url && !n.fileUri && Array.from(r.values()).some((e) => e.name === n.name && zt(e.type, n.type) && (e.url || e.fileUri)) || i(n);
|
|
1677
1809
|
}
|
|
1678
1810
|
let o = Array.from(r.values());
|
|
1679
1811
|
return {
|
|
@@ -1681,10 +1813,10 @@ function Ft(e) {
|
|
|
1681
1813
|
attachments: o.length > 0 ? o : void 0
|
|
1682
1814
|
};
|
|
1683
1815
|
}
|
|
1684
|
-
function
|
|
1816
|
+
function Vt(e) {
|
|
1685
1817
|
let t = e?.Metadata?.responses_output;
|
|
1686
1818
|
if (!Array.isArray(t)) return {};
|
|
1687
|
-
let n =
|
|
1819
|
+
let n = Ke(), r = tt({
|
|
1688
1820
|
eventName: "response.completed",
|
|
1689
1821
|
data: { response: {
|
|
1690
1822
|
id: String(e.Metadata?.response_id || ""),
|
|
@@ -1720,7 +1852,7 @@ function It(e) {
|
|
|
1720
1852
|
},
|
|
1721
1853
|
name: e.name,
|
|
1722
1854
|
output: e.output,
|
|
1723
|
-
status:
|
|
1855
|
+
status: u(e.output) ? "error" : "completed"
|
|
1724
1856
|
});
|
|
1725
1857
|
}
|
|
1726
1858
|
return {
|
|
@@ -1728,22 +1860,22 @@ function It(e) {
|
|
|
1728
1860
|
...Object.keys(a).length > 0 ? { tools: a } : {}
|
|
1729
1861
|
};
|
|
1730
1862
|
}
|
|
1731
|
-
function
|
|
1863
|
+
function Ht(e, t, n) {
|
|
1732
1864
|
return t === "running" ? e === "prompt_too_long" ? "检测到上下文过长,正在自动压缩历史后重试" : "正在自动压缩上下文" : n ? e === "prompt_too_long" ? "上下文过长,系统已自动压缩历史并重试" : "系统已自动压缩较早的对话上下文" : t === "failed" ? "自动压缩上下文未完成" : e === "prompt_too_long" ? "已完成上下文压缩,并继续当前回复" : "已完成上下文压缩";
|
|
1733
1865
|
}
|
|
1734
|
-
function
|
|
1866
|
+
function Ut(e, t) {
|
|
1735
1867
|
return [
|
|
1736
1868
|
e,
|
|
1737
1869
|
t.content || "",
|
|
1738
1870
|
t.reasoning || ""
|
|
1739
1871
|
].join("\0");
|
|
1740
1872
|
}
|
|
1741
|
-
function
|
|
1873
|
+
function Wt(e) {
|
|
1742
1874
|
return e?.Metadata?.responses_mirror === !0 || String(e?.Metadata?.responses_mirror || "").trim().toLowerCase() === "true";
|
|
1743
1875
|
}
|
|
1744
|
-
function
|
|
1876
|
+
function Gt(e) {
|
|
1745
1877
|
if (e?.EventType !== "user_message") return "";
|
|
1746
|
-
let t =
|
|
1878
|
+
let t = Bt(e), n = (t.attachments || []).map((e) => [
|
|
1747
1879
|
e.name || "",
|
|
1748
1880
|
e.fileUri || "",
|
|
1749
1881
|
e.url || "",
|
|
@@ -1751,16 +1883,16 @@ function Bt(e) {
|
|
|
1751
1883
|
].join("")).sort().join("");
|
|
1752
1884
|
return [String(t.text || "").trim(), n].join("\0");
|
|
1753
1885
|
}
|
|
1754
|
-
function
|
|
1886
|
+
function Kt(e) {
|
|
1755
1887
|
return e?.EventType === "assistant_stream_snapshot";
|
|
1756
1888
|
}
|
|
1757
|
-
function
|
|
1889
|
+
function qt(e) {
|
|
1758
1890
|
let t = Number(e?.SeqId || 0);
|
|
1759
1891
|
if (Number.isFinite(t) && t > 0) return t;
|
|
1760
1892
|
let n = Number(e?.Timestamp || 0);
|
|
1761
1893
|
return Number.isFinite(n) ? n : 0;
|
|
1762
1894
|
}
|
|
1763
|
-
function
|
|
1895
|
+
function Jt(e) {
|
|
1764
1896
|
if (typeof e == "string") return e;
|
|
1765
1897
|
if (e == null) return "";
|
|
1766
1898
|
try {
|
|
@@ -1769,23 +1901,23 @@ function Ut(e) {
|
|
|
1769
1901
|
return String(e);
|
|
1770
1902
|
}
|
|
1771
1903
|
}
|
|
1772
|
-
function
|
|
1904
|
+
function Yt(e) {
|
|
1773
1905
|
let t = String(e?.EventType || "");
|
|
1774
1906
|
if (t !== "tool_call" && t !== "tool_result") return null;
|
|
1775
|
-
let n = String(e.Metadata?.tool_name || e.Metadata?.name || e.Metadata?.function_name ||
|
|
1907
|
+
let n = String(e.Metadata?.tool_name || e.Metadata?.name || e.Metadata?.function_name || It(e.Content?.parts) || "tool").trim() || "tool", r = {
|
|
1776
1908
|
name: n,
|
|
1777
1909
|
args: "",
|
|
1778
1910
|
status: "running"
|
|
1779
1911
|
}, i = t === "tool_result" ? (() => {
|
|
1780
|
-
let t =
|
|
1912
|
+
let t = Jt(e.Metadata?.tool_output ?? e.Metadata?.output ?? e.Metadata?.result ?? It(e.Content?.parts));
|
|
1781
1913
|
return {
|
|
1782
1914
|
...r,
|
|
1783
1915
|
output: t,
|
|
1784
|
-
status:
|
|
1916
|
+
status: u(t) ? "error" : "completed"
|
|
1785
1917
|
};
|
|
1786
1918
|
})() : {
|
|
1787
1919
|
...r,
|
|
1788
|
-
args:
|
|
1920
|
+
args: Jt(e.Metadata?.tool_args ?? e.Metadata?.arguments ?? e.Metadata?.args ?? {})
|
|
1789
1921
|
};
|
|
1790
1922
|
return {
|
|
1791
1923
|
id: e.EventId || String(Date.now() + Math.random()),
|
|
@@ -1796,7 +1928,7 @@ function Wt(e) {
|
|
|
1796
1928
|
tools: { [n]: i }
|
|
1797
1929
|
};
|
|
1798
1930
|
}
|
|
1799
|
-
function
|
|
1931
|
+
function Xt(e = {}, t = {}) {
|
|
1800
1932
|
let n = { ...e || {} };
|
|
1801
1933
|
for (let [e, r] of Object.entries(t || {})) n[e] = {
|
|
1802
1934
|
...n[e] || {},
|
|
@@ -1806,8 +1938,8 @@ function Gt(e = {}, t = {}) {
|
|
|
1806
1938
|
};
|
|
1807
1939
|
return n;
|
|
1808
1940
|
}
|
|
1809
|
-
function
|
|
1810
|
-
let n = String(t || "").trim().toLowerCase(), r = n === "completed" ? "completed" :
|
|
1941
|
+
function Zt(e = {}, t = "") {
|
|
1942
|
+
let n = String(t || "").trim().toLowerCase(), r = n === "completed" ? "completed" : Ft.has(n) ? "error" : "";
|
|
1811
1943
|
if (!r) return e;
|
|
1812
1944
|
let i = !1, a = {};
|
|
1813
1945
|
for (let [t, n] of Object.entries(e || {})) n?.status === "running" ? (i = !0, a[t] = {
|
|
@@ -1816,10 +1948,10 @@ function Kt(e = {}, t = "") {
|
|
|
1816
1948
|
}) : a[t] = n;
|
|
1817
1949
|
return i ? a : e;
|
|
1818
1950
|
}
|
|
1819
|
-
function
|
|
1951
|
+
function Qt(e, t) {
|
|
1820
1952
|
return {
|
|
1821
1953
|
...e,
|
|
1822
|
-
reasoning:
|
|
1954
|
+
reasoning: $t(e.reasoning, t.reasoning),
|
|
1823
1955
|
tools: {
|
|
1824
1956
|
...e.tools || {},
|
|
1825
1957
|
...t.tools || {}
|
|
@@ -1832,11 +1964,11 @@ function qt(e, t) {
|
|
|
1832
1964
|
id: t.responseId || t.reasoning || t.tools ? t.id : e.id
|
|
1833
1965
|
};
|
|
1834
1966
|
}
|
|
1835
|
-
function
|
|
1967
|
+
function $t(e = "", t = "") {
|
|
1836
1968
|
let n = String(e || ""), r = String(t || "");
|
|
1837
1969
|
return n ? !r || n.endsWith(r) ? n : r.startsWith(n) ? r : `${n}${r}` : r;
|
|
1838
1970
|
}
|
|
1839
|
-
function
|
|
1971
|
+
function en(e) {
|
|
1840
1972
|
return {
|
|
1841
1973
|
id: e.id,
|
|
1842
1974
|
role: "system",
|
|
@@ -1847,10 +1979,10 @@ function Yt(e) {
|
|
|
1847
1979
|
summary: e.summary,
|
|
1848
1980
|
historical: e.historical,
|
|
1849
1981
|
timestamp: e.timestamp,
|
|
1850
|
-
content:
|
|
1982
|
+
content: Ht(e.trigger, e.status, e.historical)
|
|
1851
1983
|
};
|
|
1852
1984
|
}
|
|
1853
|
-
function
|
|
1985
|
+
function tn(e) {
|
|
1854
1986
|
let t = e?.EventType || "";
|
|
1855
1987
|
if (t === "run_status") return e.Content?.status === "failed" ? {
|
|
1856
1988
|
id: e.EventId || String(Date.now() + Math.random()),
|
|
@@ -1868,8 +2000,8 @@ function Xt(e) {
|
|
|
1868
2000
|
timestamp: e.Timestamp || Date.now()
|
|
1869
2001
|
} : null;
|
|
1870
2002
|
if (t === "context_checkpoint") {
|
|
1871
|
-
let t =
|
|
1872
|
-
return
|
|
2003
|
+
let t = Bt(e);
|
|
2004
|
+
return en({
|
|
1873
2005
|
id: e.EventId || String(Date.now() + Math.random()),
|
|
1874
2006
|
timestamp: e.Timestamp || Date.now(),
|
|
1875
2007
|
status: "completed",
|
|
@@ -1880,7 +2012,7 @@ function Xt(e) {
|
|
|
1880
2012
|
});
|
|
1881
2013
|
}
|
|
1882
2014
|
if (t === "reasoning") {
|
|
1883
|
-
let n =
|
|
2015
|
+
let n = Bt(e).text || It(e.Metadata?.reasoning);
|
|
1884
2016
|
return n ? {
|
|
1885
2017
|
id: e.EventId || String(Date.now() + Math.random()),
|
|
1886
2018
|
role: "model",
|
|
@@ -1890,9 +2022,9 @@ function Xt(e) {
|
|
|
1890
2022
|
eventType: t
|
|
1891
2023
|
} : null;
|
|
1892
2024
|
}
|
|
1893
|
-
if (t === "tool_call" || t === "tool_result") return
|
|
2025
|
+
if (t === "tool_call" || t === "tool_result") return Yt(e);
|
|
1894
2026
|
if (t !== "user_message" && t !== "assistant_message" && t !== "assistant_stream_snapshot") return null;
|
|
1895
|
-
let n =
|
|
2027
|
+
let n = Bt(e), r = t === "assistant_message" ? Vt(e) : {};
|
|
1896
2028
|
if (!n.text && !n.attachments?.length && !r.reasoning && !r.tools) return null;
|
|
1897
2029
|
let i = String(e.Metadata?.response_id || e.Metadata?.ResponseId || "").trim(), a = String(e.Metadata?.trace_id || e.Metadata?.TraceId || "").trim(), o = String(e.Metadata?.root_span_id || e.Metadata?.rootSpanId || e.Metadata?.RootSpanId || "").trim();
|
|
1898
2030
|
return {
|
|
@@ -1909,7 +2041,7 @@ function Xt(e) {
|
|
|
1909
2041
|
...r
|
|
1910
2042
|
};
|
|
1911
2043
|
}
|
|
1912
|
-
function
|
|
2044
|
+
function nn(e = []) {
|
|
1913
2045
|
let t = /* @__PURE__ */ new Map(), n = /* @__PURE__ */ new Map(), r = /* @__PURE__ */ new Set(), i = /* @__PURE__ */ new Set(), a = /* @__PURE__ */ new Set(), o = /* @__PURE__ */ new Set(), s = Array.isArray(e) ? e : [], c = [];
|
|
1914
2046
|
for (let e of s) {
|
|
1915
2047
|
let t = String(e?.EventId || "").trim();
|
|
@@ -1921,30 +2053,30 @@ function Zt(e = []) {
|
|
|
1921
2053
|
}
|
|
1922
2054
|
let l = /* @__PURE__ */ new Set(), u = /* @__PURE__ */ new Set(), d = /* @__PURE__ */ new Map();
|
|
1923
2055
|
for (let e of c) {
|
|
1924
|
-
if (e?.EventType !== "user_message" ||
|
|
2056
|
+
if (e?.EventType !== "user_message" || Wt(e)) {
|
|
1925
2057
|
if (e?.EventType === "assistant_message") {
|
|
1926
2058
|
let t = String(e.InvocationId || "").trim();
|
|
1927
2059
|
t && u.add(t);
|
|
1928
2060
|
}
|
|
1929
|
-
if (
|
|
2061
|
+
if (Kt(e)) {
|
|
1930
2062
|
let t = String(e.InvocationId || "").trim();
|
|
1931
2063
|
if (t) {
|
|
1932
2064
|
let n = d.get(t);
|
|
1933
|
-
(!n ||
|
|
2065
|
+
(!n || qt(e) >= qt(n)) && d.set(t, e);
|
|
1934
2066
|
}
|
|
1935
2067
|
}
|
|
1936
2068
|
continue;
|
|
1937
2069
|
}
|
|
1938
|
-
let t =
|
|
2070
|
+
let t = Gt(e);
|
|
1939
2071
|
t && l.add(t);
|
|
1940
2072
|
}
|
|
1941
2073
|
let f = c.filter((e) => {
|
|
1942
|
-
if (
|
|
2074
|
+
if (Kt(e)) {
|
|
1943
2075
|
let t = String(e.InvocationId || "").trim();
|
|
1944
2076
|
return t ? u.has(t) ? !1 : d.get(t) === e : !0;
|
|
1945
2077
|
}
|
|
1946
|
-
if (e?.EventType !== "user_message" || !
|
|
1947
|
-
let t =
|
|
2078
|
+
if (e?.EventType !== "user_message" || !Wt(e)) return !0;
|
|
2079
|
+
let t = Gt(e);
|
|
1948
2080
|
return !t || !l.has(t);
|
|
1949
2081
|
});
|
|
1950
2082
|
for (let e of f) {
|
|
@@ -1959,21 +2091,21 @@ function Zt(e = []) {
|
|
|
1959
2091
|
let p = [], m = /* @__PURE__ */ new Map(), h = null, g = /* @__PURE__ */ new Map(), _ = (e) => {
|
|
1960
2092
|
let t = String(e?.responseId || "").trim(), n = t ? m.get(t) : void 0;
|
|
1961
2093
|
if (n !== void 0) {
|
|
1962
|
-
p[n] =
|
|
2094
|
+
p[n] = Qt(p[n], e);
|
|
1963
2095
|
return;
|
|
1964
2096
|
}
|
|
1965
2097
|
t && m.set(t, p.length), p.push(e);
|
|
1966
2098
|
}, v = () => {
|
|
1967
2099
|
h &&= (_(h), null);
|
|
1968
|
-
},
|
|
2100
|
+
}, y = (e) => {
|
|
1969
2101
|
let n = String(e || "").trim();
|
|
1970
2102
|
if (!n) return {};
|
|
1971
2103
|
let r = g.get(n);
|
|
1972
|
-
return r ? (g.delete(n), { tools:
|
|
2104
|
+
return r ? (g.delete(n), { tools: Zt(r.tools, t.get(n)) }) : {};
|
|
1973
2105
|
};
|
|
1974
2106
|
for (let e of f) {
|
|
1975
2107
|
if (e.EventType === "run_status") continue;
|
|
1976
|
-
let t =
|
|
2108
|
+
let t = tn(e);
|
|
1977
2109
|
if (!t) continue;
|
|
1978
2110
|
if (t.eventType === "tool_call" || t.eventType === "tool_result") {
|
|
1979
2111
|
let n = String(e.InvocationId || "").trim();
|
|
@@ -1991,7 +2123,7 @@ function Zt(e = []) {
|
|
|
1991
2123
|
invocationId: n
|
|
1992
2124
|
},
|
|
1993
2125
|
timestamp: Math.max(Number(r?.timestamp || 0), Number(t.timestamp || 0)),
|
|
1994
|
-
tools:
|
|
2126
|
+
tools: Xt(r?.tools, t.tools)
|
|
1995
2127
|
});
|
|
1996
2128
|
continue;
|
|
1997
2129
|
}
|
|
@@ -2009,24 +2141,24 @@ function Zt(e = []) {
|
|
|
2009
2141
|
}
|
|
2010
2142
|
let n = t.eventType === "assistant_message" || t.eventType === "assistant_stream_snapshot";
|
|
2011
2143
|
if (n && h) {
|
|
2012
|
-
let n = String(e.InvocationId || "").trim(), r =
|
|
2144
|
+
let n = String(e.InvocationId || "").trim(), r = Ut(n, t);
|
|
2013
2145
|
if (t.eventType === "assistant_message" && n && a.has(r)) {
|
|
2014
2146
|
h = null;
|
|
2015
2147
|
continue;
|
|
2016
2148
|
}
|
|
2017
2149
|
t.eventType === "assistant_message" && n && a.add(r), _({
|
|
2018
2150
|
...t,
|
|
2019
|
-
...
|
|
2020
|
-
reasoning:
|
|
2151
|
+
...y(n),
|
|
2152
|
+
reasoning: $t(h.reasoning, t.reasoning)
|
|
2021
2153
|
}), h = null;
|
|
2022
2154
|
continue;
|
|
2023
2155
|
}
|
|
2024
2156
|
if (v(), n) {
|
|
2025
|
-
let n = String(e.InvocationId || "").trim(), r =
|
|
2157
|
+
let n = String(e.InvocationId || "").trim(), r = Ut(n, t);
|
|
2026
2158
|
if (t.eventType === "assistant_message" && n && a.has(r)) continue;
|
|
2027
2159
|
t.eventType === "assistant_message" && n && a.add(r), _({
|
|
2028
2160
|
...t,
|
|
2029
|
-
...
|
|
2161
|
+
...y(n)
|
|
2030
2162
|
});
|
|
2031
2163
|
continue;
|
|
2032
2164
|
}
|
|
@@ -2035,7 +2167,7 @@ function Zt(e = []) {
|
|
|
2035
2167
|
v();
|
|
2036
2168
|
for (let [e, n] of g.entries()) _({
|
|
2037
2169
|
...n,
|
|
2038
|
-
tools:
|
|
2170
|
+
tools: Zt(n.tools, t.get(e))
|
|
2039
2171
|
});
|
|
2040
2172
|
for (let [e, a] of t.entries()) {
|
|
2041
2173
|
if (a !== "in_progress" || r.has(e) || !i.has(e)) continue;
|
|
@@ -2051,7 +2183,7 @@ function Zt(e = []) {
|
|
|
2051
2183
|
}
|
|
2052
2184
|
return p.map(({ invocationId: e, ...t }) => t);
|
|
2053
2185
|
}
|
|
2054
|
-
function
|
|
2186
|
+
function rn(e = [], t = []) {
|
|
2055
2187
|
let n = [], r = /* @__PURE__ */ new Set();
|
|
2056
2188
|
for (let i of [...Array.isArray(e) ? e : [], ...Array.isArray(t) ? t : []]) {
|
|
2057
2189
|
let e = String(i?.EventId || "").trim();
|
|
@@ -2066,18 +2198,18 @@ function Qt(e = [], t = []) {
|
|
|
2066
2198
|
return Number.isFinite(n) && Number.isFinite(r) && n !== r ? n - r : Number(e?.Timestamp || 0) - Number(t?.Timestamp || 0);
|
|
2067
2199
|
});
|
|
2068
2200
|
}
|
|
2069
|
-
function
|
|
2201
|
+
function an(e = []) {
|
|
2070
2202
|
return (Array.isArray(e) ? e : []).reduce((e, t) => {
|
|
2071
2203
|
let n = Number(t.SeqId || 0);
|
|
2072
2204
|
return Number.isFinite(n) ? Math.max(e, n) : e;
|
|
2073
2205
|
}, 0);
|
|
2074
2206
|
}
|
|
2075
|
-
function
|
|
2076
|
-
return e?.EventType === "run_status" ?
|
|
2207
|
+
function on(e) {
|
|
2208
|
+
return e?.EventType === "run_status" ? Ft.has(String(e.Content?.status || "").trim().toLowerCase()) : !1;
|
|
2077
2209
|
}
|
|
2078
2210
|
//#endregion
|
|
2079
2211
|
//#region src/core/run/dispatcher.ts
|
|
2080
|
-
var
|
|
2212
|
+
var Q = !1, sn = new Set(["completed"]), cn = new Set([
|
|
2081
2213
|
"failed",
|
|
2082
2214
|
"error",
|
|
2083
2215
|
"cancelled",
|
|
@@ -2085,8 +2217,8 @@ var Z = !1, tn = new Set(["completed"]), nn = new Set([
|
|
|
2085
2217
|
"aborted",
|
|
2086
2218
|
"incomplete"
|
|
2087
2219
|
]);
|
|
2088
|
-
function
|
|
2089
|
-
|
|
2220
|
+
function ln(e) {
|
|
2221
|
+
Q || (Q = !0, q.getState().patchMessages((t) => [...t, {
|
|
2090
2222
|
id: e,
|
|
2091
2223
|
role: "model",
|
|
2092
2224
|
content: "",
|
|
@@ -2094,9 +2226,9 @@ function Q(e) {
|
|
|
2094
2226
|
reasoning: ""
|
|
2095
2227
|
}]));
|
|
2096
2228
|
}
|
|
2097
|
-
function
|
|
2098
|
-
let t = String(e || "").trim().toLowerCase(), n =
|
|
2099
|
-
n &&
|
|
2229
|
+
function un(e) {
|
|
2230
|
+
let t = String(e || "").trim().toLowerCase(), n = sn.has(t) ? "completed" : cn.has(t) ? "error" : null;
|
|
2231
|
+
n && q.getState().patchMessages((e) => e.map((e) => {
|
|
2100
2232
|
if (!e.tools) return e;
|
|
2101
2233
|
let t = !1, r = Object.fromEntries(Object.entries(e.tools).map(([e, r]) => r.status === "running" ? (t = !0, [e, {
|
|
2102
2234
|
...r,
|
|
@@ -2108,15 +2240,15 @@ function rn(e) {
|
|
|
2108
2240
|
} : e;
|
|
2109
2241
|
}));
|
|
2110
2242
|
}
|
|
2111
|
-
function
|
|
2112
|
-
if (e.sessionId &&
|
|
2113
|
-
e.type === "stage_changed" && (e.stage === "completing" || e.stage === "error" || e.stage === "cancelled") && (
|
|
2243
|
+
function dn(e) {
|
|
2244
|
+
if (e.sessionId && R.getState().currentSessionId !== e.sessionId) {
|
|
2245
|
+
e.type === "stage_changed" && (e.stage === "completing" || e.stage === "error" || e.stage === "cancelled") && (Q = !1);
|
|
2114
2246
|
return;
|
|
2115
2247
|
}
|
|
2116
|
-
let t =
|
|
2248
|
+
let t = q.getState();
|
|
2117
2249
|
switch (e.type) {
|
|
2118
2250
|
case "activity":
|
|
2119
|
-
|
|
2251
|
+
I.getState().updateActivity({
|
|
2120
2252
|
sessionId: e.sessionId,
|
|
2121
2253
|
source: e.source,
|
|
2122
2254
|
status: e.status,
|
|
@@ -2134,28 +2266,28 @@ function an(e) {
|
|
|
2134
2266
|
}]);
|
|
2135
2267
|
break;
|
|
2136
2268
|
case "assistant_message_created":
|
|
2137
|
-
|
|
2269
|
+
ln(e.messageId);
|
|
2138
2270
|
break;
|
|
2139
2271
|
case "text_delta":
|
|
2140
|
-
|
|
2272
|
+
ln(e.messageId), t.patchMessages((t) => t.map((t) => t.id === e.messageId ? {
|
|
2141
2273
|
...t,
|
|
2142
2274
|
content: t.content + e.delta
|
|
2143
2275
|
} : t));
|
|
2144
2276
|
break;
|
|
2145
2277
|
case "text_final":
|
|
2146
|
-
|
|
2278
|
+
ln(e.messageId), t.patchMessages((t) => t.map((t) => t.id === e.messageId ? {
|
|
2147
2279
|
...t,
|
|
2148
2280
|
content: e.text
|
|
2149
2281
|
} : t));
|
|
2150
2282
|
break;
|
|
2151
2283
|
case "reasoning_delta":
|
|
2152
|
-
|
|
2284
|
+
ln(e.messageId), t.patchMessages((t) => t.map((t) => t.id === e.messageId ? {
|
|
2153
2285
|
...t,
|
|
2154
2286
|
reasoning: (t.reasoning || "") + e.delta
|
|
2155
2287
|
} : t));
|
|
2156
2288
|
break;
|
|
2157
2289
|
case "tool_upsert":
|
|
2158
|
-
|
|
2290
|
+
ln(e.messageId), t.patchMessages((t) => t.map((t) => t.id === e.messageId ? {
|
|
2159
2291
|
...t,
|
|
2160
2292
|
tools: {
|
|
2161
2293
|
...t.tools || {},
|
|
@@ -2174,7 +2306,7 @@ function an(e) {
|
|
|
2174
2306
|
} : t));
|
|
2175
2307
|
break;
|
|
2176
2308
|
case "tool_result":
|
|
2177
|
-
|
|
2309
|
+
ln(e.messageId), t.patchMessages((t) => t.map((t) => t.id === e.messageId ? {
|
|
2178
2310
|
...t,
|
|
2179
2311
|
tools: {
|
|
2180
2312
|
...t.tools || {},
|
|
@@ -2184,7 +2316,7 @@ function an(e) {
|
|
|
2184
2316
|
args: ""
|
|
2185
2317
|
},
|
|
2186
2318
|
output: e.output,
|
|
2187
|
-
status:
|
|
2319
|
+
status: u(e.output) ? "error" : "completed"
|
|
2188
2320
|
}
|
|
2189
2321
|
}
|
|
2190
2322
|
} : t));
|
|
@@ -2198,7 +2330,7 @@ function an(e) {
|
|
|
2198
2330
|
}]);
|
|
2199
2331
|
break;
|
|
2200
2332
|
case "compaction": {
|
|
2201
|
-
let n = `compaction-${Date.now()}`, r = e.phase === "start" ? "running" : e.phase === "failed" ? "failed" : "completed", i =
|
|
2333
|
+
let n = `compaction-${Date.now()}`, r = e.phase === "start" ? "running" : e.phase === "failed" ? "failed" : "completed", i = en({
|
|
2202
2334
|
id: n,
|
|
2203
2335
|
timestamp: Date.now(),
|
|
2204
2336
|
status: r,
|
|
@@ -2212,16 +2344,16 @@ function an(e) {
|
|
|
2212
2344
|
break;
|
|
2213
2345
|
}
|
|
2214
2346
|
case "stage_changed":
|
|
2215
|
-
e.stage === "streaming" || e.stage === "connecting" ?
|
|
2347
|
+
e.stage === "streaming" || e.stage === "connecting" ? I.getState().setSessionStreaming(e.sessionId, !0) : (e.stage === "completing" || e.stage === "error" || e.stage === "cancelled") && (I.getState().setSessionStreaming(e.sessionId, !1), Q = !1);
|
|
2216
2348
|
break;
|
|
2217
2349
|
case "stream_ended":
|
|
2218
|
-
|
|
2219
|
-
let t =
|
|
2350
|
+
I.getState().setSessionStreaming(e.sessionId, !1), globalThis.setTimeout(() => {
|
|
2351
|
+
let t = I.getState();
|
|
2220
2352
|
t.getSessionActivity(e.sessionId)?.status === "completed" && t.clearSessionActivity(e.sessionId);
|
|
2221
|
-
}, 2400),
|
|
2353
|
+
}, 2400), Q = !1;
|
|
2222
2354
|
break;
|
|
2223
2355
|
case "error":
|
|
2224
|
-
|
|
2356
|
+
I.getState().setSessionStreaming(e.sessionId, !1), I.getState().updateActivity({
|
|
2225
2357
|
sessionId: e.sessionId,
|
|
2226
2358
|
status: "failed",
|
|
2227
2359
|
phase: "连接断开或生成出错",
|
|
@@ -2231,25 +2363,25 @@ function an(e) {
|
|
|
2231
2363
|
role: "model",
|
|
2232
2364
|
content: "连接断开或生成出错。",
|
|
2233
2365
|
timestamp: Date.now()
|
|
2234
|
-
}]),
|
|
2366
|
+
}]), Q = !1;
|
|
2235
2367
|
break;
|
|
2236
2368
|
case "terminal":
|
|
2237
|
-
|
|
2369
|
+
un(e.status);
|
|
2238
2370
|
break;
|
|
2239
2371
|
case "stream_event":
|
|
2240
|
-
if (e.event.EventType === "run_checkpoint" &&
|
|
2372
|
+
if (e.event.EventType === "run_checkpoint" && Z.getState().upsertSessionCheckpoint(e.sessionId || e.event.SessionId, e.event), e.event.EventType === "run_status") {
|
|
2241
2373
|
let t = String(e.event.Content?.status || "").trim().toLowerCase();
|
|
2242
|
-
t === "completed" ?
|
|
2374
|
+
t === "completed" ? I.getState().updateActivity({
|
|
2243
2375
|
sessionId: e.sessionId || e.event.SessionId,
|
|
2244
2376
|
status: "completed",
|
|
2245
2377
|
phase: "后台长任务已完成",
|
|
2246
2378
|
countEvent: !1
|
|
2247
|
-
}) : t === "cancelled" || t === "canceled" || t === "aborted" ?
|
|
2379
|
+
}) : t === "cancelled" || t === "canceled" || t === "aborted" ? I.getState().updateActivity({
|
|
2248
2380
|
sessionId: e.sessionId || e.event.SessionId,
|
|
2249
2381
|
status: "stopped",
|
|
2250
2382
|
phase: "后台长任务已取消",
|
|
2251
2383
|
countEvent: !1
|
|
2252
|
-
}) : (t === "failed" || t === "error") &&
|
|
2384
|
+
}) : (t === "failed" || t === "error") && I.getState().updateActivity({
|
|
2253
2385
|
sessionId: e.sessionId || e.event.SessionId,
|
|
2254
2386
|
status: "failed",
|
|
2255
2387
|
phase: "后台长任务失败",
|
|
@@ -2259,13 +2391,13 @@ function an(e) {
|
|
|
2259
2391
|
break;
|
|
2260
2392
|
}
|
|
2261
2393
|
}
|
|
2262
|
-
function
|
|
2263
|
-
|
|
2394
|
+
function fn() {
|
|
2395
|
+
Q = !1;
|
|
2264
2396
|
}
|
|
2265
2397
|
//#endregion
|
|
2266
2398
|
//#region src/hooks/useRunAgent.ts
|
|
2267
|
-
function
|
|
2268
|
-
let t =
|
|
2399
|
+
function pn(e) {
|
|
2400
|
+
let t = j(/* @__PURE__ */ new Map()), n = j(() => {}), { agentId: r, apiFormats: i, agentFramework: a, selectedModel: o, thinkingMode: s, currentSessionIdRef: c, queuedDraftRef: l, onRunSettled: u, uiCapabilities: d } = e, f = k((e) => {
|
|
2269
2401
|
e.updateConfig({
|
|
2270
2402
|
agentId: r,
|
|
2271
2403
|
apiFormats: i,
|
|
@@ -2281,25 +2413,25 @@ function sn(e) {
|
|
|
2281
2413
|
o,
|
|
2282
2414
|
s,
|
|
2283
2415
|
d.RunLifecycle?.CheckpointResumePreview
|
|
2284
|
-
]), p =
|
|
2416
|
+
]), p = k((n) => {
|
|
2285
2417
|
let r = String(n || "new-session"), i = t.current.get(r);
|
|
2286
|
-
return i ? f(i) : (i = new
|
|
2418
|
+
return i ? f(i) : (i = new xt(e.api), f(i), i.subscribe(dn), t.current.set(r, i)), i;
|
|
2287
2419
|
}, [e.api, f]);
|
|
2288
|
-
|
|
2420
|
+
A(() => {
|
|
2289
2421
|
for (let e of t.current.values()) f(e);
|
|
2290
2422
|
}, [f]);
|
|
2291
|
-
let m =
|
|
2423
|
+
let m = k((e) => {
|
|
2292
2424
|
l.current.push(e), _.getState().setQueuedDrafts((t) => [...t, e]);
|
|
2293
|
-
}, [l]), h =
|
|
2425
|
+
}, [l]), h = k((e) => {
|
|
2294
2426
|
let i = c.current, a = p(i);
|
|
2295
2427
|
if (a.stage !== "idle") return !1;
|
|
2296
|
-
|
|
2428
|
+
fn(), _.getState().setMobileActionsOpen(!1), I.getState().setSessionStreaming(i, !0);
|
|
2297
2429
|
let o = e.text.trim(), s = String(Date.now()), l = e.attachments.map((e) => ({
|
|
2298
2430
|
name: e.name,
|
|
2299
2431
|
url: URL.createObjectURL(e),
|
|
2300
2432
|
type: e.type || "application/octet-stream"
|
|
2301
2433
|
}));
|
|
2302
|
-
(o || l.length > 0) &&
|
|
2434
|
+
(o || l.length > 0) && q.getState().patchMessages((e) => [...e, {
|
|
2303
2435
|
id: s,
|
|
2304
2436
|
role: "user",
|
|
2305
2437
|
content: o,
|
|
@@ -2313,24 +2445,24 @@ function sn(e) {
|
|
|
2313
2445
|
previousResponseId: e.previousResponseId,
|
|
2314
2446
|
sessionId: i,
|
|
2315
2447
|
onSessionCreated: (e) => {
|
|
2316
|
-
|
|
2448
|
+
R.getState().upsertSessions([{
|
|
2317
2449
|
SessionId: e,
|
|
2318
2450
|
UpdatedAt: (/* @__PURE__ */ new Date()).toISOString()
|
|
2319
|
-
}]), c.current = e,
|
|
2451
|
+
}]), c.current = e, we(r, e), R.getState().setCurrentSessionId(e), i !== e && t.current.set(e, a);
|
|
2320
2452
|
},
|
|
2321
2453
|
onSessionUpsert: () => {},
|
|
2322
2454
|
onSettled: (e) => {
|
|
2323
2455
|
u?.(e), n.current();
|
|
2324
2456
|
}
|
|
2325
2457
|
});
|
|
2326
|
-
return d ||
|
|
2458
|
+
return d || I.getState().setSessionStreaming(i, !1), d;
|
|
2327
2459
|
}, [
|
|
2328
2460
|
r,
|
|
2329
2461
|
c,
|
|
2330
2462
|
p,
|
|
2331
2463
|
u
|
|
2332
2464
|
]);
|
|
2333
|
-
return
|
|
2465
|
+
return A(() => {
|
|
2334
2466
|
n.current = () => {
|
|
2335
2467
|
let e = l.current.shift();
|
|
2336
2468
|
if (!e) {
|
|
@@ -2342,14 +2474,14 @@ function sn(e) {
|
|
|
2342
2474
|
});
|
|
2343
2475
|
};
|
|
2344
2476
|
}, [l, h]), {
|
|
2345
|
-
submitDraft:
|
|
2477
|
+
submitDraft: k(async (e, t, n, r) => {
|
|
2346
2478
|
let i = {
|
|
2347
2479
|
text: e,
|
|
2348
2480
|
attachments: t,
|
|
2349
2481
|
responsesInput: n,
|
|
2350
2482
|
previousResponseId: r
|
|
2351
2483
|
};
|
|
2352
|
-
if (p(c.current).stage !== "idle" &&
|
|
2484
|
+
if (p(c.current).stage !== "idle" && I.getState().isSessionStreaming(c.current)) {
|
|
2353
2485
|
n === void 0 && m({
|
|
2354
2486
|
text: e,
|
|
2355
2487
|
attachments: t
|
|
@@ -2366,39 +2498,39 @@ function sn(e) {
|
|
|
2366
2498
|
p,
|
|
2367
2499
|
h
|
|
2368
2500
|
]),
|
|
2369
|
-
stopGeneration:
|
|
2501
|
+
stopGeneration: k(() => {
|
|
2370
2502
|
p(c.current).stop();
|
|
2371
2503
|
}, [c, p]),
|
|
2372
|
-
disconnectRun:
|
|
2504
|
+
disconnectRun: k(() => {
|
|
2373
2505
|
p(c.current).disconnect();
|
|
2374
2506
|
}, [c, p]),
|
|
2375
|
-
resumeCheckpoint:
|
|
2507
|
+
resumeCheckpoint: k((e) => {
|
|
2376
2508
|
let t = p(e.sessionId);
|
|
2377
2509
|
if (t.stage !== "idle") return !1;
|
|
2378
|
-
|
|
2510
|
+
fn(), _.getState().setMobileActionsOpen(!1), I.getState().setSessionStreaming(e.sessionId, !0);
|
|
2379
2511
|
let r = t.resumeCheckpoint({
|
|
2380
2512
|
...e,
|
|
2381
2513
|
onSettled: (e) => {
|
|
2382
2514
|
u?.(e), n.current();
|
|
2383
2515
|
}
|
|
2384
2516
|
});
|
|
2385
|
-
return r ||
|
|
2517
|
+
return r || I.getState().setSessionStreaming(e.sessionId, !1), r;
|
|
2386
2518
|
}, [p, u]),
|
|
2387
|
-
resetCompaction:
|
|
2388
|
-
|
|
2519
|
+
resetCompaction: k(() => {
|
|
2520
|
+
fn();
|
|
2389
2521
|
}, [])
|
|
2390
2522
|
};
|
|
2391
2523
|
}
|
|
2392
2524
|
//#endregion
|
|
2393
2525
|
//#region src/hooks/useFeedback.ts
|
|
2394
|
-
function
|
|
2526
|
+
function mn(e) {
|
|
2395
2527
|
let { agentId: t, currentSessionId: n, isStreaming: r, api: i, submitDraft: a } = e;
|
|
2396
2528
|
return {
|
|
2397
|
-
submitResponseFeedback:
|
|
2529
|
+
submitResponseFeedback: k(async (e) => {
|
|
2398
2530
|
if (!n) return;
|
|
2399
2531
|
let r = null;
|
|
2400
|
-
|
|
2401
|
-
let n =
|
|
2532
|
+
q.getState().patchMessages((t) => {
|
|
2533
|
+
let n = v(t, {
|
|
2402
2534
|
messageId: e.message.id,
|
|
2403
2535
|
rating: e.rating,
|
|
2404
2536
|
comment: e.comment || ""
|
|
@@ -2406,19 +2538,19 @@ function cn(e) {
|
|
|
2406
2538
|
return r = n.previousFeedback, n.nextMessages;
|
|
2407
2539
|
});
|
|
2408
2540
|
try {
|
|
2409
|
-
let r =
|
|
2541
|
+
let r = x((await i.upsertResponseFeedback(f({
|
|
2410
2542
|
agentId: t,
|
|
2411
2543
|
sessionId: n,
|
|
2412
2544
|
message: e.message,
|
|
2413
2545
|
rating: e.rating,
|
|
2414
2546
|
comment: e.comment || ""
|
|
2415
2547
|
})))?.Feedback);
|
|
2416
|
-
r &&
|
|
2548
|
+
r && q.getState().patchMessages((t) => s(t, {
|
|
2417
2549
|
messageId: e.message.id,
|
|
2418
2550
|
feedback: r
|
|
2419
2551
|
}));
|
|
2420
2552
|
} catch (t) {
|
|
2421
|
-
console.error("Failed to submit response feedback:", t),
|
|
2553
|
+
console.error("Failed to submit response feedback:", t), q.getState().patchMessages((t) => C(t, {
|
|
2422
2554
|
messageId: e.message.id,
|
|
2423
2555
|
previousFeedback: r
|
|
2424
2556
|
}));
|
|
@@ -2428,18 +2560,18 @@ function cn(e) {
|
|
|
2428
2560
|
n,
|
|
2429
2561
|
i
|
|
2430
2562
|
]),
|
|
2431
|
-
deleteResponseFeedback:
|
|
2563
|
+
deleteResponseFeedback: k(async (e) => {
|
|
2432
2564
|
if (!n) return;
|
|
2433
2565
|
let r = e.feedback ? { ...e.feedback } : null;
|
|
2434
|
-
|
|
2566
|
+
q.getState().patchMessages((t) => d(t, { messageId: e.id }));
|
|
2435
2567
|
try {
|
|
2436
|
-
await i.deleteResponseFeedback(
|
|
2568
|
+
await i.deleteResponseFeedback(h({
|
|
2437
2569
|
agentId: t,
|
|
2438
2570
|
sessionId: n,
|
|
2439
2571
|
message: e
|
|
2440
2572
|
}));
|
|
2441
2573
|
} catch (t) {
|
|
2442
|
-
console.error("Failed to delete response feedback:", t),
|
|
2574
|
+
console.error("Failed to delete response feedback:", t), q.getState().patchMessages((t) => C(t, {
|
|
2443
2575
|
messageId: e.id,
|
|
2444
2576
|
previousFeedback: r
|
|
2445
2577
|
}));
|
|
@@ -2449,14 +2581,14 @@ function cn(e) {
|
|
|
2449
2581
|
n,
|
|
2450
2582
|
i
|
|
2451
2583
|
]),
|
|
2452
|
-
respondToApproval:
|
|
2453
|
-
!e.approvalRequestId || r || (
|
|
2584
|
+
respondToApproval: k((e) => {
|
|
2585
|
+
!e.approvalRequestId || r || (q.getState().patchMessages((t) => t.map((t) => ({
|
|
2454
2586
|
...t,
|
|
2455
2587
|
tools: t.tools ? Object.fromEntries(Object.entries(t.tools).map(([t, n]) => [t, n.approvalRequestId === e.approvalRequestId ? {
|
|
2456
2588
|
...n,
|
|
2457
2589
|
approvalStatus: e.approve ? "approved" : "rejected"
|
|
2458
2590
|
} : n])) : t.tools
|
|
2459
|
-
}))),
|
|
2591
|
+
}))), q.getState().patchMessages((t) => [...t, {
|
|
2460
2592
|
id: String(Date.now() + Math.random()),
|
|
2461
2593
|
role: "system",
|
|
2462
2594
|
content: e.approve ? "已批准工具调用,正在继续运行。" : "已拒绝工具调用,正在通知运行时。",
|
|
@@ -2471,10 +2603,10 @@ function cn(e) {
|
|
|
2471
2603
|
}
|
|
2472
2604
|
//#endregion
|
|
2473
2605
|
//#region src/utils/run-state.js
|
|
2474
|
-
function
|
|
2606
|
+
function hn(e) {
|
|
2475
2607
|
return String(e?.InvocationId || e?.invocation_id || e?.invocationId || "").trim();
|
|
2476
2608
|
}
|
|
2477
|
-
function
|
|
2609
|
+
function gn(e) {
|
|
2478
2610
|
let t = e?.Timestamp ?? e?.timestamp ?? e?.created_at ?? e?.CreatedAt;
|
|
2479
2611
|
if (typeof t == "number" && Number.isFinite(t)) return t > 1e11 ? t : t * 1e3;
|
|
2480
2612
|
if (typeof t == "string") {
|
|
@@ -2483,16 +2615,16 @@ function un(e) {
|
|
|
2483
2615
|
}
|
|
2484
2616
|
return 0;
|
|
2485
2617
|
}
|
|
2486
|
-
function
|
|
2618
|
+
function _n(e) {
|
|
2487
2619
|
return String(e?.EventType || e?.event_type || "").trim();
|
|
2488
2620
|
}
|
|
2489
|
-
function
|
|
2621
|
+
function vn(e = [], t = {}) {
|
|
2490
2622
|
let n = /* @__PURE__ */ new Map(), r = /* @__PURE__ */ new Map(), i = Array.isArray(e) ? e : [], a = Number.isFinite(Number(t.now)) ? Number(t.now) : Date.now(), o = Number.isFinite(Number(t.staleAfterMs)) ? Number(t.staleAfterMs) : 1800 * 1e3;
|
|
2491
2623
|
for (let e of i) {
|
|
2492
|
-
let t =
|
|
2624
|
+
let t = hn(e);
|
|
2493
2625
|
if (!t) continue;
|
|
2494
|
-
let i =
|
|
2495
|
-
i && r.set(t, Math.max(r.get(t) || 0, i)),
|
|
2626
|
+
let i = gn(e);
|
|
2627
|
+
i && r.set(t, Math.max(r.get(t) || 0, i)), _n(e) === "run_status" && n.set(t, String(e?.Content?.status || e?.content?.status || "").trim());
|
|
2496
2628
|
}
|
|
2497
2629
|
return Array.from(n.entries()).filter(([e, t]) => {
|
|
2498
2630
|
let n = r.get(e) || 0, i = n > 0 && a - n > o;
|
|
@@ -2501,8 +2633,8 @@ function fn(e = [], t = {}) {
|
|
|
2501
2633
|
}
|
|
2502
2634
|
//#endregion
|
|
2503
2635
|
//#region src/hooks/useSessionLifecycle.ts
|
|
2504
|
-
var
|
|
2505
|
-
function
|
|
2636
|
+
var yn = 9e4, bn = 30, xn = 50;
|
|
2637
|
+
function Sn(e) {
|
|
2506
2638
|
if (e.EventType !== "run_status") return null;
|
|
2507
2639
|
let t = String(e.Content?.status || "").trim().toLowerCase();
|
|
2508
2640
|
return t === "completed" ? {
|
|
@@ -2516,9 +2648,9 @@ function mn(e) {
|
|
|
2516
2648
|
phase: "后台长任务失败"
|
|
2517
2649
|
} : null;
|
|
2518
2650
|
}
|
|
2519
|
-
function
|
|
2520
|
-
let { agentId: t, api: n, isMobile: r, resetCompaction: i, uiCapabilities: a, disconnectRun: o } = e, s =
|
|
2521
|
-
let i = r.filter((e) =>
|
|
2651
|
+
function Cn(e) {
|
|
2652
|
+
let { agentId: t, api: n, isMobile: r, resetCompaction: i, uiCapabilities: a, disconnectRun: o } = e, s = j(e.currentSessionId), l = j(e.agentId), u = j(null), d = j(null), f = j(null), p = k(async (e, t, r) => {
|
|
2653
|
+
let i = r.filter((e) => c(e, !1, !1));
|
|
2522
2654
|
if (!i.length) return;
|
|
2523
2655
|
let a = await Promise.all(i.map(async (r) => {
|
|
2524
2656
|
try {
|
|
@@ -2527,7 +2659,7 @@ function hn(e) {
|
|
|
2527
2659
|
SessionId: t,
|
|
2528
2660
|
ResponseId: r.responseId,
|
|
2529
2661
|
EventId: r.eventId
|
|
2530
|
-
}), a = i?.Feedback ?
|
|
2662
|
+
}), a = i?.Feedback ? x(i.Feedback) : null;
|
|
2531
2663
|
return a ? {
|
|
2532
2664
|
messageId: r.id,
|
|
2533
2665
|
feedback: a
|
|
@@ -2538,26 +2670,26 @@ function hn(e) {
|
|
|
2538
2670
|
}));
|
|
2539
2671
|
if (s.current !== t) return;
|
|
2540
2672
|
let o = new Map(a.filter((e) => !!e).map((e) => [e.messageId, e.feedback]));
|
|
2541
|
-
o.size &&
|
|
2673
|
+
o.size && q.getState().patchMessages((e) => e.map((e) => o.has(e.id) ? {
|
|
2542
2674
|
...e,
|
|
2543
2675
|
feedback: o.get(e.id)
|
|
2544
2676
|
} : e));
|
|
2545
|
-
}, [n]), m =
|
|
2546
|
-
|
|
2677
|
+
}, [n]), m = k(async (e) => {
|
|
2678
|
+
u.current?.abort();
|
|
2547
2679
|
let t = new AbortController();
|
|
2548
|
-
|
|
2680
|
+
u.current = t;
|
|
2549
2681
|
let r = !1, i = !1, a = () => {
|
|
2550
|
-
|
|
2682
|
+
u.current !== t || t.signal.aborted || t.abort();
|
|
2551
2683
|
}, o = globalThis.setTimeout(() => {
|
|
2552
2684
|
a();
|
|
2553
|
-
},
|
|
2685
|
+
}, yn);
|
|
2554
2686
|
try {
|
|
2555
2687
|
let a = (await n.subscribeRunEvents({
|
|
2556
2688
|
sessionId: e.sessionId,
|
|
2557
2689
|
invocationId: e.invocationId,
|
|
2558
2690
|
afterSeqId: e.afterSeqId
|
|
2559
2691
|
}, { signal: t.signal })).getReader(), o = new TextDecoder(), s = "", c = Array.isArray(e.initialEvents) ? e.initialEvents : [];
|
|
2560
|
-
for (
|
|
2692
|
+
for (I.getState().setCurrentRunId(e.invocationId), I.getState().updateActivity({
|
|
2561
2693
|
sessionId: e.sessionId,
|
|
2562
2694
|
status: "running",
|
|
2563
2695
|
phase: "后台长任务运行中",
|
|
@@ -2580,17 +2712,17 @@ function hn(e) {
|
|
|
2580
2712
|
}
|
|
2581
2713
|
try {
|
|
2582
2714
|
let t = JSON.parse(a);
|
|
2583
|
-
c =
|
|
2584
|
-
let n =
|
|
2585
|
-
n &&
|
|
2715
|
+
c = rn(c, [t]), i ||= on(t), r ||= i, t.EventType === "run_checkpoint" && Z.getState().upsertSessionCheckpoint(e.sessionId, t);
|
|
2716
|
+
let n = Sn(t);
|
|
2717
|
+
n && I.getState().updateActivity({
|
|
2586
2718
|
sessionId: e.sessionId,
|
|
2587
2719
|
status: n.status,
|
|
2588
2720
|
phase: n.phase,
|
|
2589
2721
|
detail: e.invocationId,
|
|
2590
2722
|
countEvent: !1
|
|
2591
2723
|
});
|
|
2592
|
-
let o =
|
|
2593
|
-
|
|
2724
|
+
let o = nn(c);
|
|
2725
|
+
q.getState().setMessages(o);
|
|
2594
2726
|
} catch (e) {
|
|
2595
2727
|
console.warn("Failed to parse run event data", a, e);
|
|
2596
2728
|
}
|
|
@@ -2599,42 +2731,64 @@ function hn(e) {
|
|
|
2599
2731
|
} catch (e) {
|
|
2600
2732
|
e instanceof DOMException && e.name === "AbortError" || console.error("Failed to subscribe run events:", e);
|
|
2601
2733
|
} finally {
|
|
2602
|
-
globalThis.clearTimeout(o),
|
|
2734
|
+
globalThis.clearTimeout(o), u.current === t && (u.current = null), I.getState().setCurrentRunId(""), r && s.current === e.sessionId && d.current?.(e.sessionId), f.current?.(l.current, e.sessionId);
|
|
2603
2735
|
}
|
|
2604
|
-
}, [n]), h =
|
|
2605
|
-
s.current = e,
|
|
2736
|
+
}, [n]), h = k(async (e) => {
|
|
2737
|
+
s.current = e, R.getState().setCurrentSessionId(e), i(), u.current?.abort(), r && _.getState().setMobileSidebarOpen(!1);
|
|
2606
2738
|
try {
|
|
2607
|
-
let t =
|
|
2608
|
-
|
|
2609
|
-
|
|
2739
|
+
let t = R.getState().eventCache[e], r;
|
|
2740
|
+
if (t) r = {
|
|
2741
|
+
Events: t.events,
|
|
2742
|
+
Total: t.total,
|
|
2743
|
+
Offset: t.offset,
|
|
2744
|
+
Limit: t.limit
|
|
2745
|
+
};
|
|
2746
|
+
else {
|
|
2747
|
+
let t = await n.listSessionEvents(e, {
|
|
2748
|
+
offset: 0,
|
|
2749
|
+
limit: 1
|
|
2750
|
+
}), i = Number(t.Total ?? t.Events?.length ?? 0), a = Math.max(0, i - xn);
|
|
2751
|
+
r = i <= 1 ? t : await n.listSessionEvents(e, {
|
|
2752
|
+
offset: a,
|
|
2753
|
+
limit: xn
|
|
2754
|
+
}), R.getState().setSessionEventCache(e, {
|
|
2755
|
+
events: r.Events || [],
|
|
2756
|
+
total: i,
|
|
2757
|
+
offset: Number(r.Offset ?? a),
|
|
2758
|
+
limit: Number(r.Limit ?? r.Events?.length ?? 0)
|
|
2759
|
+
});
|
|
2760
|
+
}
|
|
2761
|
+
let i = P.getState().capabilities || a;
|
|
2762
|
+
i.RunLifecycle.Enabled && i.RunLifecycle.Checkpoints ? (n.listSessionCheckpoints({
|
|
2763
|
+
agentId: l.current,
|
|
2610
2764
|
sessionId: e
|
|
2611
2765
|
}).then((t) => {
|
|
2612
|
-
|
|
2766
|
+
Z.getState().setSessionCheckpoints(e, t.Checkpoints || []);
|
|
2613
2767
|
}).catch((t) => {
|
|
2614
|
-
console.warn("[SessionLifecycle] checkpoint load failed:", t),
|
|
2768
|
+
console.warn("[SessionLifecycle] checkpoint load failed:", t), Z.getState().setSessionCheckpoints(e, []);
|
|
2615
2769
|
}), n.listToolReceipts({
|
|
2616
|
-
agentId:
|
|
2770
|
+
agentId: l.current,
|
|
2617
2771
|
sessionId: e
|
|
2618
2772
|
}).then((t) => {
|
|
2619
|
-
|
|
2773
|
+
Z.getState().setSessionToolReceipts(e, t.ToolReceipts || []);
|
|
2620
2774
|
}).catch((t) => {
|
|
2621
|
-
console.warn("[SessionLifecycle] tool receipt load failed:", t),
|
|
2622
|
-
})) :
|
|
2623
|
-
let
|
|
2624
|
-
if (
|
|
2625
|
-
let t =
|
|
2626
|
-
|
|
2627
|
-
let
|
|
2775
|
+
console.warn("[SessionLifecycle] tool receipt load failed:", t), Z.getState().setSessionToolReceipts(e, []);
|
|
2776
|
+
})) : Z.getState().clearSessionCheckpoints(e);
|
|
2777
|
+
let o = r;
|
|
2778
|
+
if (o?.Events) {
|
|
2779
|
+
let t = o.Events, n = nn(t);
|
|
2780
|
+
q.getState().setMessages(n), p(l.current, e, n);
|
|
2781
|
+
let r = vn(t, {
|
|
2628
2782
|
now: Date.now(),
|
|
2629
2783
|
staleAfterMs: 1800 * 1e3
|
|
2630
|
-
}),
|
|
2631
|
-
|
|
2784
|
+
}), a = an(t);
|
|
2785
|
+
i.RunLifecycle.Enabled && i.RunLifecycle.Resume && r[0] && m({
|
|
2632
2786
|
sessionId: e,
|
|
2633
|
-
invocationId:
|
|
2634
|
-
afterSeqId:
|
|
2787
|
+
invocationId: r[0],
|
|
2788
|
+
afterSeqId: a,
|
|
2635
2789
|
initialEvents: t
|
|
2636
2790
|
});
|
|
2637
|
-
} else
|
|
2791
|
+
} else q.getState().setMessages([]), Z.getState().setSessionCheckpoints(e, []), Z.getState().setSessionToolReceipts(e, []);
|
|
2638
2792
|
} catch (e) {
|
|
2639
2793
|
console.error("Failed to load session events:", e);
|
|
2640
2794
|
}
|
|
@@ -2644,190 +2798,275 @@ function hn(e) {
|
|
|
2644
2798
|
p,
|
|
2645
2799
|
i,
|
|
2646
2800
|
m,
|
|
2647
|
-
a
|
|
2648
|
-
|
|
2649
|
-
a.RunLifecycle.Resume
|
|
2650
|
-
]), g = O(async (e = "default-agent", t = null) => {
|
|
2801
|
+
a
|
|
2802
|
+
]), g = k(async (e = "default-agent", t = null) => {
|
|
2651
2803
|
try {
|
|
2652
|
-
let r =
|
|
2653
|
-
|
|
2654
|
-
let
|
|
2655
|
-
|
|
2804
|
+
let r = R.getState();
|
|
2805
|
+
r.sessionsAgentId && r.sessionsAgentId !== e && r.resetSessionPagination(e), R.getState().setLoadingSessions(!0);
|
|
2806
|
+
let i = await n.listSessions(e, {
|
|
2807
|
+
page: 1,
|
|
2808
|
+
pageSize: bn
|
|
2809
|
+
});
|
|
2810
|
+
R.getState().upsertSessions(i.Sessions || [], {
|
|
2811
|
+
agentId: e,
|
|
2812
|
+
total: Number(i.Total ?? i.Sessions?.length ?? 0),
|
|
2813
|
+
page: Number(i.Page ?? 1),
|
|
2814
|
+
pageSize: Number(i.PageSize ?? bn),
|
|
2815
|
+
replace: !0
|
|
2816
|
+
});
|
|
2817
|
+
let a = R.getState().sessions, o = s.current, c = Te(a, o || t || Ce(e));
|
|
2818
|
+
c && c !== o ? h(c) : !c && o && (s.current = null, R.getState().setCurrentSessionId(null), q.getState().setMessages([]), Z.getState().clearSessionCheckpoints());
|
|
2656
2819
|
} catch (e) {
|
|
2657
|
-
if (e instanceof
|
|
2820
|
+
if (e instanceof U) return;
|
|
2658
2821
|
console.error("Failed to fetch sessions:", e);
|
|
2822
|
+
} finally {
|
|
2823
|
+
R.getState().setLoadingSessions(!1);
|
|
2824
|
+
}
|
|
2825
|
+
}, [n, h]), v = k(async () => {
|
|
2826
|
+
let e = R.getState();
|
|
2827
|
+
if (e.isLoadingSessions || !e.hasMoreSessions) return;
|
|
2828
|
+
let t = ue({
|
|
2829
|
+
total: e.sessionsTotal,
|
|
2830
|
+
pageSize: e.sessionsPageSize || bn,
|
|
2831
|
+
loadedPages: e.loadedPages
|
|
2832
|
+
});
|
|
2833
|
+
if (!t) return;
|
|
2834
|
+
let r = e.sessionsPageSize || bn, i = e.sessionsAgentId || l.current || "default-agent";
|
|
2835
|
+
try {
|
|
2836
|
+
R.getState().setLoadingSessions(!0);
|
|
2837
|
+
let a = await n.listSessions(i, {
|
|
2838
|
+
page: t,
|
|
2839
|
+
pageSize: r
|
|
2840
|
+
});
|
|
2841
|
+
R.getState().upsertSessions(a.Sessions || [], {
|
|
2842
|
+
agentId: i,
|
|
2843
|
+
total: Number(a.Total ?? e.sessionsTotal),
|
|
2844
|
+
page: Number(a.Page ?? t),
|
|
2845
|
+
pageSize: Number(a.PageSize ?? r)
|
|
2846
|
+
});
|
|
2847
|
+
} catch (e) {
|
|
2848
|
+
if (e instanceof U) return;
|
|
2849
|
+
console.error("Failed to load more sessions:", e);
|
|
2850
|
+
} finally {
|
|
2851
|
+
R.getState().setLoadingSessions(!1);
|
|
2659
2852
|
}
|
|
2660
|
-
}, [n
|
|
2661
|
-
|
|
2853
|
+
}, [n]);
|
|
2854
|
+
A(() => {
|
|
2662
2855
|
d.current = h;
|
|
2663
|
-
}, [h]),
|
|
2856
|
+
}, [h]), A(() => {
|
|
2664
2857
|
f.current = g;
|
|
2665
|
-
}, [g])
|
|
2858
|
+
}, [g]);
|
|
2859
|
+
let y = k(async () => {
|
|
2860
|
+
try {
|
|
2861
|
+
o?.();
|
|
2862
|
+
let e = (await n.createSession(t)).SessionId;
|
|
2863
|
+
e && (R.getState().upsertSessions([{
|
|
2864
|
+
SessionId: e,
|
|
2865
|
+
UpdatedAt: (/* @__PURE__ */ new Date()).toISOString()
|
|
2866
|
+
}]), s.current = e, R.getState().setCurrentSessionId(e), q.getState().setMessages([]), Z.getState().setSessionCheckpoints(e, []), Z.getState().setSessionToolReceipts(e, []), r && (_.getState().setMobileSidebarOpen(!1), _.getState().setMobileActionsOpen(!1)), g(t, e));
|
|
2867
|
+
} catch (e) {
|
|
2868
|
+
if (e instanceof U) return;
|
|
2869
|
+
console.error("Failed to create session:", e);
|
|
2870
|
+
}
|
|
2871
|
+
}, [
|
|
2872
|
+
t,
|
|
2873
|
+
n,
|
|
2874
|
+
o,
|
|
2875
|
+
g,
|
|
2876
|
+
r
|
|
2877
|
+
]), b = k(async (e) => {
|
|
2878
|
+
try {
|
|
2879
|
+
await n.deleteSession(e), R.getState().removeSession(e), R.getState().clearSessionEventCache(e), s.current === e && (s.current = null, q.getState().setMessages([]), Z.getState().clearSessionCheckpoints(e), R.getState().setCurrentSessionId(null), g(t));
|
|
2880
|
+
} catch (e) {
|
|
2881
|
+
if (e instanceof U) return;
|
|
2882
|
+
console.error("Failed to delete session", e);
|
|
2883
|
+
}
|
|
2884
|
+
}, [
|
|
2885
|
+
t,
|
|
2886
|
+
n,
|
|
2887
|
+
g
|
|
2888
|
+
]);
|
|
2889
|
+
return {
|
|
2666
2890
|
fetchSessions: g,
|
|
2891
|
+
loadMoreSessions: v,
|
|
2667
2892
|
loadSession: h,
|
|
2668
|
-
|
|
2893
|
+
loadOlderSessionEvents: k(async (e) => {
|
|
2894
|
+
let t = R.getState().eventCache[e];
|
|
2895
|
+
if (!t || t.offset <= 0 || t.isLoadingOlder) return;
|
|
2896
|
+
let r = Math.max(0, t.offset - xn), i = t.offset - r;
|
|
2669
2897
|
try {
|
|
2670
|
-
|
|
2671
|
-
let
|
|
2672
|
-
|
|
2673
|
-
|
|
2674
|
-
|
|
2675
|
-
|
|
2676
|
-
|
|
2677
|
-
|
|
2678
|
-
|
|
2679
|
-
|
|
2680
|
-
|
|
2681
|
-
|
|
2682
|
-
|
|
2683
|
-
|
|
2684
|
-
g,
|
|
2685
|
-
r
|
|
2686
|
-
]),
|
|
2687
|
-
deleteSession: O(async (e) => {
|
|
2688
|
-
try {
|
|
2689
|
-
await n.deleteSession(e), I.getState().removeSession(e), s.current === e && (s.current = null, G.getState().setMessages([]), X.getState().clearSessionCheckpoints(e), I.getState().setCurrentSessionId(null), g(t));
|
|
2898
|
+
R.getState().setSessionEventLoadingOlder(e, !0);
|
|
2899
|
+
let a = await n.listSessionEvents(e, {
|
|
2900
|
+
offset: r,
|
|
2901
|
+
limit: i
|
|
2902
|
+
}), o = rn(a.Events || [], t.events);
|
|
2903
|
+
if (R.getState().setSessionEventCache(e, {
|
|
2904
|
+
events: o,
|
|
2905
|
+
total: Number(a.Total ?? t.total),
|
|
2906
|
+
offset: Number(a.Offset ?? r),
|
|
2907
|
+
limit: o.length
|
|
2908
|
+
}), s.current === e) {
|
|
2909
|
+
let t = nn(o);
|
|
2910
|
+
q.getState().setMessages(t), p(l.current, e, t);
|
|
2911
|
+
}
|
|
2690
2912
|
} catch (e) {
|
|
2691
|
-
|
|
2692
|
-
|
|
2913
|
+
e instanceof U || console.error("Failed to load older session events:", e);
|
|
2914
|
+
} finally {
|
|
2915
|
+
R.getState().setSessionEventLoadingOlder(e, !1);
|
|
2693
2916
|
}
|
|
2694
|
-
}, [
|
|
2695
|
-
|
|
2696
|
-
|
|
2697
|
-
g
|
|
2698
|
-
]),
|
|
2917
|
+
}, [n, p]),
|
|
2918
|
+
createNewSession: y,
|
|
2919
|
+
deleteSession: b,
|
|
2699
2920
|
currentSessionIdRef: s,
|
|
2700
|
-
agentIdRef:
|
|
2701
|
-
runSubscriptionAbortRef:
|
|
2921
|
+
agentIdRef: l,
|
|
2922
|
+
runSubscriptionAbortRef: u
|
|
2702
2923
|
};
|
|
2703
2924
|
}
|
|
2704
2925
|
//#endregion
|
|
2705
2926
|
//#region src/components/chat/ConnectedSidebar.tsx
|
|
2706
|
-
function
|
|
2707
|
-
let
|
|
2708
|
-
isMobile:
|
|
2709
|
-
desktopSidebarOpen:
|
|
2710
|
-
mobileSidebarOpen:
|
|
2927
|
+
function wn({ uiCapabilities: e, createNewSession: n, deleteSession: a, loadSession: s, loadMoreSessions: c }) {
|
|
2928
|
+
let u = R((e) => e.sessions), d = R((e) => e.currentSessionId), f = R((e) => e.pinnedSessionIds), m = R((e) => e.isLoadingSessions), h = R((e) => e.hasMoreSessions), g = _((e) => e.sidebarOpen), v = _((e) => e.mobileSidebarOpen), { isMobile: y } = Fe(), b = t(e), { desktopSidebarVisible: ee } = _e({
|
|
2929
|
+
isMobile: y,
|
|
2930
|
+
desktopSidebarOpen: g,
|
|
2931
|
+
mobileSidebarOpen: v
|
|
2711
2932
|
});
|
|
2712
|
-
return
|
|
2713
|
-
open:
|
|
2933
|
+
return b ? y ? /* @__PURE__ */ T(S, {
|
|
2934
|
+
open: v,
|
|
2714
2935
|
onOpenChange: (e) => _.getState().setMobileSidebarOpen(e),
|
|
2715
|
-
children: /* @__PURE__ */
|
|
2936
|
+
children: /* @__PURE__ */ E(o, {
|
|
2716
2937
|
side: "left",
|
|
2717
2938
|
className: "w-[88vw] max-w-sm border-slate-200 bg-slate-50 p-0 dark:border-slate-800 dark:bg-slate-950",
|
|
2718
2939
|
children: [
|
|
2719
|
-
/* @__PURE__ */
|
|
2940
|
+
/* @__PURE__ */ T(r, {
|
|
2720
2941
|
className: "sr-only",
|
|
2721
2942
|
children: "历史记录"
|
|
2722
2943
|
}),
|
|
2723
|
-
/* @__PURE__ */
|
|
2944
|
+
/* @__PURE__ */ T(i, {
|
|
2724
2945
|
className: "sr-only",
|
|
2725
2946
|
children: "查看和切换历史对话。"
|
|
2726
2947
|
}),
|
|
2727
|
-
/* @__PURE__ */
|
|
2728
|
-
sessions:
|
|
2729
|
-
currentSessionId:
|
|
2730
|
-
onCreateNewSession:
|
|
2731
|
-
onSelectSession:
|
|
2732
|
-
onDeleteSession:
|
|
2733
|
-
|
|
2948
|
+
/* @__PURE__ */ T(l, {
|
|
2949
|
+
sessions: u,
|
|
2950
|
+
currentSessionId: d,
|
|
2951
|
+
onCreateNewSession: n,
|
|
2952
|
+
onSelectSession: s,
|
|
2953
|
+
onDeleteSession: (e, t) => {
|
|
2954
|
+
t.stopPropagation(), a(e);
|
|
2955
|
+
},
|
|
2956
|
+
onTogglePinSession: (e, t) => {
|
|
2957
|
+
t.stopPropagation(), R.getState().togglePinnedSession(e);
|
|
2958
|
+
},
|
|
2959
|
+
onLoadMoreSessions: c,
|
|
2960
|
+
sessionTitle: te,
|
|
2961
|
+
pinnedSessionIds: f,
|
|
2962
|
+
hasMoreSessions: h,
|
|
2963
|
+
isLoadingSessions: m
|
|
2734
2964
|
})
|
|
2735
2965
|
]
|
|
2736
2966
|
})
|
|
2737
|
-
}) : /* @__PURE__ */
|
|
2738
|
-
className:
|
|
2739
|
-
children: /* @__PURE__ */
|
|
2740
|
-
sessions:
|
|
2741
|
-
currentSessionId:
|
|
2742
|
-
onCreateNewSession:
|
|
2743
|
-
onSelectSession:
|
|
2744
|
-
onDeleteSession:
|
|
2745
|
-
|
|
2967
|
+
}) : /* @__PURE__ */ T("aside", {
|
|
2968
|
+
className: p("flex-shrink-0 overflow-hidden border-r border-slate-200 transition-[width] duration-300 ease-in-out dark:border-slate-800", ee ? "w-[280px]" : "w-0 border-r-0"),
|
|
2969
|
+
children: /* @__PURE__ */ T(l, {
|
|
2970
|
+
sessions: u,
|
|
2971
|
+
currentSessionId: d,
|
|
2972
|
+
onCreateNewSession: n,
|
|
2973
|
+
onSelectSession: s,
|
|
2974
|
+
onDeleteSession: (e, t) => {
|
|
2975
|
+
t.stopPropagation(), a(e);
|
|
2976
|
+
},
|
|
2977
|
+
onTogglePinSession: (e, t) => {
|
|
2978
|
+
t.stopPropagation(), R.getState().togglePinnedSession(e);
|
|
2979
|
+
},
|
|
2980
|
+
onLoadMoreSessions: c,
|
|
2981
|
+
sessionTitle: te,
|
|
2982
|
+
pinnedSessionIds: f,
|
|
2983
|
+
hasMoreSessions: h,
|
|
2984
|
+
isLoadingSessions: m
|
|
2746
2985
|
})
|
|
2747
2986
|
}) : null;
|
|
2748
2987
|
}
|
|
2749
2988
|
//#endregion
|
|
2750
2989
|
//#region src/components/ui/dialog.tsx
|
|
2751
|
-
var
|
|
2752
|
-
ref:
|
|
2753
|
-
className:
|
|
2990
|
+
var Tn = M.Root, En = M.Portal, Dn = D.forwardRef(({ className: e, ...t }, n) => /* @__PURE__ */ T(M.Overlay, {
|
|
2991
|
+
ref: n,
|
|
2992
|
+
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),
|
|
2754
2993
|
...t
|
|
2755
2994
|
}));
|
|
2756
|
-
|
|
2757
|
-
var
|
|
2758
|
-
ref:
|
|
2759
|
-
className:
|
|
2760
|
-
...
|
|
2761
|
-
children: [t, /* @__PURE__ */
|
|
2995
|
+
Dn.displayName = M.Overlay.displayName;
|
|
2996
|
+
var On = D.forwardRef(({ className: e, children: t, ...n }, r) => /* @__PURE__ */ E(En, { children: [/* @__PURE__ */ T(Dn, {}), /* @__PURE__ */ E(M.Content, {
|
|
2997
|
+
ref: r,
|
|
2998
|
+
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),
|
|
2999
|
+
...n,
|
|
3000
|
+
children: [t, /* @__PURE__ */ E(M.Close, {
|
|
2762
3001
|
className: "absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground",
|
|
2763
|
-
children: [/* @__PURE__ */ w
|
|
3002
|
+
children: [/* @__PURE__ */ T(w, { className: "h-4 w-4" }), /* @__PURE__ */ T("span", {
|
|
2764
3003
|
className: "sr-only",
|
|
2765
3004
|
children: "Close"
|
|
2766
3005
|
})]
|
|
2767
3006
|
})]
|
|
2768
3007
|
})] }));
|
|
2769
|
-
|
|
2770
|
-
var
|
|
2771
|
-
className:
|
|
3008
|
+
On.displayName = M.Content.displayName;
|
|
3009
|
+
var kn = ({ className: e, ...t }) => /* @__PURE__ */ T("div", {
|
|
3010
|
+
className: p("flex flex-col space-y-1.5 text-center sm:text-left", e),
|
|
2772
3011
|
...t
|
|
2773
3012
|
});
|
|
2774
|
-
|
|
2775
|
-
var
|
|
2776
|
-
className:
|
|
3013
|
+
kn.displayName = "DialogHeader";
|
|
3014
|
+
var An = ({ className: e, ...t }) => /* @__PURE__ */ T("div", {
|
|
3015
|
+
className: p("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2", e),
|
|
2777
3016
|
...t
|
|
2778
3017
|
});
|
|
2779
|
-
|
|
2780
|
-
var
|
|
2781
|
-
ref:
|
|
2782
|
-
className:
|
|
3018
|
+
An.displayName = "DialogFooter";
|
|
3019
|
+
var jn = D.forwardRef(({ className: e, ...t }, n) => /* @__PURE__ */ T(M.Title, {
|
|
3020
|
+
ref: n,
|
|
3021
|
+
className: p("text-lg font-semibold leading-none tracking-tight", e),
|
|
2783
3022
|
...t
|
|
2784
3023
|
}));
|
|
2785
|
-
|
|
2786
|
-
var
|
|
2787
|
-
ref:
|
|
2788
|
-
className:
|
|
3024
|
+
jn.displayName = M.Title.displayName;
|
|
3025
|
+
var Mn = D.forwardRef(({ className: e, ...t }, n) => /* @__PURE__ */ T(M.Description, {
|
|
3026
|
+
ref: n,
|
|
3027
|
+
className: p("text-sm text-muted-foreground", e),
|
|
2789
3028
|
...t
|
|
2790
3029
|
}));
|
|
2791
|
-
|
|
3030
|
+
Mn.displayName = M.Description.displayName;
|
|
2792
3031
|
//#endregion
|
|
2793
3032
|
//#region src/components/chat/AttachmentPreview.tsx
|
|
2794
|
-
function
|
|
3033
|
+
function Nn(e, t) {
|
|
2795
3034
|
if (!(!t || e)) return {
|
|
2796
3035
|
width: `min(${t.width}px, calc(100vw - 5rem))`,
|
|
2797
3036
|
height: `min(${t.height}px, calc(100vh - 9rem))`
|
|
2798
3037
|
};
|
|
2799
3038
|
}
|
|
2800
|
-
function
|
|
3039
|
+
function Pn(e, t) {
|
|
2801
3040
|
if (!(!t || e)) return { width: `min(${t.width + 32}px, calc(100vw - 3rem))` };
|
|
2802
3041
|
}
|
|
2803
|
-
function
|
|
2804
|
-
return /* @__PURE__ */
|
|
3042
|
+
function Fn({ attachment: e, isMobile: t, previewImageSize: n, onClose: r, onImageLoad: i }) {
|
|
3043
|
+
return /* @__PURE__ */ T(Tn, {
|
|
2805
3044
|
open: !!e?.url,
|
|
2806
|
-
onOpenChange: (e) => !e &&
|
|
2807
|
-
children: /* @__PURE__ */
|
|
2808
|
-
className:
|
|
2809
|
-
style:
|
|
2810
|
-
children: [/* @__PURE__ */
|
|
3045
|
+
onOpenChange: (e) => !e && r(),
|
|
3046
|
+
children: /* @__PURE__ */ E(On, {
|
|
3047
|
+
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"),
|
|
3048
|
+
style: Pn(t, n),
|
|
3049
|
+
children: [/* @__PURE__ */ T("div", {
|
|
2811
3050
|
className: "flex items-center gap-3 border-b border-slate-800 px-4 py-3 pr-16",
|
|
2812
|
-
children: /* @__PURE__ */
|
|
3051
|
+
children: /* @__PURE__ */ T(jn, {
|
|
2813
3052
|
className: "truncate text-sm font-medium",
|
|
2814
3053
|
children: e?.name || "附件预览"
|
|
2815
3054
|
})
|
|
2816
|
-
}), /* @__PURE__ */
|
|
2817
|
-
className:
|
|
2818
|
-
children: e ? e.type.startsWith("image/") ? /* @__PURE__ */
|
|
3055
|
+
}), /* @__PURE__ */ T("div", {
|
|
3056
|
+
className: p("flex items-center justify-center overflow-auto bg-slate-950", t ? "h-full p-4 pb-[calc(var(--safe-area-bottom)+1rem)]" : "max-h-[calc(100vh-7rem)] p-4"),
|
|
3057
|
+
children: e ? e.type.startsWith("image/") ? /* @__PURE__ */ T("img", {
|
|
2819
3058
|
src: e.url,
|
|
2820
3059
|
alt: e.name,
|
|
2821
|
-
className:
|
|
2822
|
-
style:
|
|
3060
|
+
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)]"),
|
|
3061
|
+
style: Nn(t, n),
|
|
2823
3062
|
onLoad: (e) => {
|
|
2824
3063
|
let t = e.currentTarget;
|
|
2825
|
-
|
|
3064
|
+
i({
|
|
2826
3065
|
width: t.naturalWidth,
|
|
2827
3066
|
height: t.naturalHeight
|
|
2828
3067
|
});
|
|
2829
3068
|
}
|
|
2830
|
-
}) : /* @__PURE__ */
|
|
3069
|
+
}) : /* @__PURE__ */ T("iframe", {
|
|
2831
3070
|
src: e.url,
|
|
2832
3071
|
title: e.name,
|
|
2833
3072
|
className: "h-full min-h-[24rem] w-full rounded-xl border border-slate-800 bg-white"
|
|
@@ -2838,7 +3077,7 @@ function Dn({ attachment: e, isMobile: t, previewImageSize: r, onClose: i, onIma
|
|
|
2838
3077
|
}
|
|
2839
3078
|
//#endregion
|
|
2840
3079
|
//#region src/utils/context.js
|
|
2841
|
-
function
|
|
3080
|
+
function In(e) {
|
|
2842
3081
|
if (typeof e == "number" && Number.isFinite(e) && e > 0) return e;
|
|
2843
3082
|
if (typeof e == "string" && e.trim()) {
|
|
2844
3083
|
let t = Number(e);
|
|
@@ -2846,7 +3085,7 @@ function On(e) {
|
|
|
2846
3085
|
}
|
|
2847
3086
|
return null;
|
|
2848
3087
|
}
|
|
2849
|
-
function
|
|
3088
|
+
function Ln(e) {
|
|
2850
3089
|
return /[\u3400-\u4DBF\u4E00-\u9FFF\uF900-\uFAFF]/u.test(e);
|
|
2851
3090
|
}
|
|
2852
3091
|
function $(e) {
|
|
@@ -2854,7 +3093,7 @@ function $(e) {
|
|
|
2854
3093
|
if (!t) return 0;
|
|
2855
3094
|
let n = 0, r = 0;
|
|
2856
3095
|
for (let e of t) {
|
|
2857
|
-
if (
|
|
3096
|
+
if (Ln(e)) {
|
|
2858
3097
|
n += 1;
|
|
2859
3098
|
continue;
|
|
2860
3099
|
}
|
|
@@ -2862,24 +3101,24 @@ function $(e) {
|
|
|
2862
3101
|
}
|
|
2863
3102
|
return Math.max(1, n + Math.ceil(r / 4));
|
|
2864
3103
|
}
|
|
2865
|
-
function
|
|
3104
|
+
function Rn(e) {
|
|
2866
3105
|
if (!e) return 0;
|
|
2867
3106
|
if (e.role === "system") return e.eventType === "context_checkpoint" ? $(e.summary || "") : 0;
|
|
2868
3107
|
let t = $(e.content || "");
|
|
2869
3108
|
return e.tools && (t += Object.values(e.tools).reduce((e, t) => e + $(t?.name || "") + $(t?.args || "") + $(t?.output || ""), 0)), t;
|
|
2870
3109
|
}
|
|
2871
|
-
function
|
|
2872
|
-
return e ?
|
|
3110
|
+
function zn(e) {
|
|
3111
|
+
return e ? In(e.context_window_tokens) ?? In(e?.limits?.context_window_tokens) : null;
|
|
2873
3112
|
}
|
|
2874
|
-
function
|
|
2875
|
-
return e ?
|
|
3113
|
+
function Bn(e) {
|
|
3114
|
+
return e ? In(e.auto_compact_threshold_percentage) ?? 84 : 84;
|
|
2876
3115
|
}
|
|
2877
|
-
function
|
|
2878
|
-
let r =
|
|
3116
|
+
function Vn({ messages: e, draftInput: t, selectedModel: n }) {
|
|
3117
|
+
let r = zn(n);
|
|
2879
3118
|
if (!r) return null;
|
|
2880
3119
|
let i = [...e || []].reverse().find((e) => e?.role === "system" && e?.eventType === "context_checkpoint" && e?.status === "running");
|
|
2881
3120
|
if (i) {
|
|
2882
|
-
let e =
|
|
3121
|
+
let e = Rn(i);
|
|
2883
3122
|
return {
|
|
2884
3123
|
label: "正在压缩上下文…",
|
|
2885
3124
|
phase: "compressing",
|
|
@@ -2888,10 +3127,10 @@ function Nn({ messages: e, draftInput: t, selectedModel: n }) {
|
|
|
2888
3127
|
percent: Math.min(100, Math.max(0, Math.round(e / r * 100)))
|
|
2889
3128
|
};
|
|
2890
3129
|
}
|
|
2891
|
-
let a = (e || []).reduce((e, t) => e +
|
|
3130
|
+
let a = (e || []).reduce((e, t) => e + Rn(t), 0) + $(t || "");
|
|
2892
3131
|
if (a <= 0) return null;
|
|
2893
3132
|
let o = Math.min(100, Math.max(0, Math.round(a / r * 100)));
|
|
2894
|
-
return o >=
|
|
3133
|
+
return o >= Bn(n) ? {
|
|
2895
3134
|
label: `估算上下文 ${o}% · 即将压缩`,
|
|
2896
3135
|
phase: "warning",
|
|
2897
3136
|
percent: o,
|
|
@@ -2907,45 +3146,62 @@ function Nn({ messages: e, draftInput: t, selectedModel: n }) {
|
|
|
2907
3146
|
}
|
|
2908
3147
|
//#endregion
|
|
2909
3148
|
//#region src/components/chat/ConnectedMessageList.tsx
|
|
2910
|
-
function
|
|
2911
|
-
let
|
|
2912
|
-
messages:
|
|
2913
|
-
draftInput:
|
|
2914
|
-
selectedModel:
|
|
3149
|
+
function Hn({ agentName: e, isMobile: t, onDeleteFeedback: n, onSubmitFeedback: r, onRespondToApproval: i, onStopGeneration: a, onCancelRemote: o, checkpointResumeEnabled: s = !1, onResumeCheckpoint: c, onLoadOlderSessionEvents: l }) {
|
|
3150
|
+
let u = q((e) => e.messages), d = R((e) => e.currentSessionId), f = I((e) => !!(e.getSessionActivity(d) && e.isSessionStreaming(d))), p = I((e) => e.getSessionActivity(d)), h = Z((e) => e.getSessionCheckpoints(d)), g = R((e) => d ? e.eventCache[d] : null), v = _((e) => e.input), y = F((e) => e.availableModels), b = F((e) => e.selectedModel), ee = _((e) => e.previewAttachment), te = _((e) => e.previewImageSize), x = j(null), S = j(!0), C = j(!1), ne = j(0), w = j(f), D = j(!1), O = ae(() => y.find((e) => e.id === b) || null, [y, b]), ie = ae(() => Vn({
|
|
3151
|
+
messages: u,
|
|
3152
|
+
draftInput: v,
|
|
3153
|
+
selectedModel: O
|
|
2915
3154
|
}), [
|
|
2916
|
-
|
|
2917
|
-
|
|
2918
|
-
|
|
3155
|
+
v,
|
|
3156
|
+
u,
|
|
3157
|
+
O
|
|
2919
3158
|
]);
|
|
2920
|
-
return
|
|
2921
|
-
|
|
2922
|
-
}, [
|
|
2923
|
-
let e =
|
|
3159
|
+
return A(() => {
|
|
3160
|
+
w.current = f;
|
|
3161
|
+
}, [f]), A(() => {
|
|
3162
|
+
let e = x.current;
|
|
2924
3163
|
if (!e) return;
|
|
2925
3164
|
let t = () => {
|
|
2926
3165
|
let t = e.scrollHeight - e.scrollTop - e.clientHeight, n = e.scrollTop < ne.current - 2;
|
|
2927
|
-
if (ne.current = e.scrollTop,
|
|
2928
|
-
|
|
3166
|
+
if (ne.current = e.scrollTop, e.scrollTop < 200 && d && g && g.offset > 0 && !g.isLoadingOlder && !D.current && l) {
|
|
3167
|
+
let t = e.scrollHeight;
|
|
3168
|
+
D.current = !0, l(d).then(() => {
|
|
3169
|
+
requestAnimationFrame(() => {
|
|
3170
|
+
let e = x.current;
|
|
3171
|
+
if (!e) return;
|
|
3172
|
+
let n = e.scrollHeight - t;
|
|
3173
|
+
e.scrollTop += n, ne.current = e.scrollTop;
|
|
3174
|
+
});
|
|
3175
|
+
}).finally(() => {
|
|
3176
|
+
D.current = !1;
|
|
3177
|
+
});
|
|
3178
|
+
}
|
|
3179
|
+
if (w.current && n) {
|
|
3180
|
+
C.current = !0, S.current = !1;
|
|
2929
3181
|
return;
|
|
2930
3182
|
}
|
|
2931
|
-
if (
|
|
3183
|
+
if (C.current) {
|
|
2932
3184
|
let e = t <= 12;
|
|
2933
|
-
|
|
3185
|
+
C.current = !e, S.current = e;
|
|
2934
3186
|
return;
|
|
2935
3187
|
}
|
|
2936
|
-
|
|
3188
|
+
S.current = t < 96;
|
|
2937
3189
|
};
|
|
2938
3190
|
return t(), e.addEventListener("scroll", t, { passive: !0 }), () => e.removeEventListener("scroll", t);
|
|
2939
|
-
}, [
|
|
2940
|
-
|
|
2941
|
-
|
|
2942
|
-
|
|
3191
|
+
}, [
|
|
3192
|
+
g,
|
|
3193
|
+
d,
|
|
3194
|
+
l
|
|
3195
|
+
]), A(() => {
|
|
3196
|
+
let e = x.current;
|
|
3197
|
+
!e || !S.current || (e.scrollTop = e.scrollHeight, ne.current = e.scrollTop);
|
|
3198
|
+
}, [u, f]), /* @__PURE__ */ E(re, { children: [/* @__PURE__ */ T(m, {
|
|
2943
3199
|
agentName: e,
|
|
2944
3200
|
isMobile: t,
|
|
2945
|
-
isStreaming:
|
|
2946
|
-
activity:
|
|
2947
|
-
contextIndicator:
|
|
2948
|
-
messages:
|
|
3201
|
+
isStreaming: f,
|
|
3202
|
+
activity: p,
|
|
3203
|
+
contextIndicator: ie,
|
|
3204
|
+
messages: u,
|
|
2949
3205
|
onDeleteFeedback: n,
|
|
2950
3206
|
onOpenAttachmentPreview: (e) => {
|
|
2951
3207
|
_.getState().setPreviewAttachment(e), _.getState().setPreviewImageSize(null);
|
|
@@ -2954,10 +3210,10 @@ function Pn({ agentName: e, isMobile: t, onDeleteFeedback: n, onSubmitFeedback:
|
|
|
2954
3210
|
onSubmitFeedback: r,
|
|
2955
3211
|
onStopGeneration: a,
|
|
2956
3212
|
onCancelRemote: o,
|
|
2957
|
-
checkpoints: s ?
|
|
3213
|
+
checkpoints: s ? h : [],
|
|
2958
3214
|
onResumeCheckpoint: c,
|
|
2959
|
-
scrollRef:
|
|
2960
|
-
}), /* @__PURE__ */
|
|
3215
|
+
scrollRef: x
|
|
3216
|
+
}), /* @__PURE__ */ T(Fn, {
|
|
2961
3217
|
attachment: ee,
|
|
2962
3218
|
isMobile: t,
|
|
2963
3219
|
previewImageSize: te,
|
|
@@ -2969,7 +3225,7 @@ function Pn({ agentName: e, isMobile: t, onDeleteFeedback: n, onSubmitFeedback:
|
|
|
2969
3225
|
}
|
|
2970
3226
|
//#endregion
|
|
2971
3227
|
//#region src/utils/attachment.ts
|
|
2972
|
-
function
|
|
3228
|
+
function Un(e) {
|
|
2973
3229
|
return [
|
|
2974
3230
|
e.name,
|
|
2975
3231
|
e.size,
|
|
@@ -2977,105 +3233,125 @@ function Fn(e) {
|
|
|
2977
3233
|
e.type
|
|
2978
3234
|
].join(":");
|
|
2979
3235
|
}
|
|
2980
|
-
function
|
|
3236
|
+
function Wn(e, t) {
|
|
2981
3237
|
let n = /* @__PURE__ */ new Map();
|
|
2982
|
-
for (let t of e) n.set(
|
|
2983
|
-
for (let e of t) n.set(
|
|
3238
|
+
for (let t of e) n.set(Un(t), t);
|
|
3239
|
+
for (let e of t) n.set(Un(e), e);
|
|
2984
3240
|
return Array.from(n.values());
|
|
2985
3241
|
}
|
|
2986
|
-
function
|
|
3242
|
+
function Gn(e) {
|
|
2987
3243
|
return Array.from(e.clipboardData.items || []).filter((e) => e.kind === "file").map((e) => e.getAsFile()).filter((e) => !!e);
|
|
2988
3244
|
}
|
|
2989
3245
|
//#endregion
|
|
2990
3246
|
//#region src/components/chat/ConnectedComposer.tsx
|
|
2991
|
-
function
|
|
2992
|
-
let
|
|
2993
|
-
messages:
|
|
2994
|
-
draftInput:
|
|
3247
|
+
function Kn({ composerMaxHeight: e, submitDraft: t, stopGeneration: n, cancelRemote: r, isMobile: i }) {
|
|
3248
|
+
let o = _((e) => e.input), s = _((e) => e.attachments), c = R((e) => e.currentSessionId), l = I((e) => !!(e.getSessionActivity(c) && e.isSessionStreaming(c))), u = _((e) => e.queuedDrafts), d = q((e) => e.messages), f = F((e) => e.availableModels), p = F((e) => e.selectedModel), m = j(null), h = j(null), g = ae(() => f.find((e) => e.id === p) || null, [f, p]), v = ae(() => Vn({
|
|
3249
|
+
messages: d,
|
|
3250
|
+
draftInput: o,
|
|
2995
3251
|
selectedModel: g
|
|
2996
3252
|
}), [
|
|
2997
|
-
|
|
2998
|
-
|
|
3253
|
+
o,
|
|
3254
|
+
d,
|
|
2999
3255
|
g
|
|
3000
|
-
]),
|
|
3256
|
+
]), y = k((e, n) => {
|
|
3001
3257
|
!e && n.length === 0 || (_.getState().setInput(""), _.getState().setAttachments([]), t(e, n));
|
|
3002
3258
|
}, [t]);
|
|
3003
|
-
|
|
3259
|
+
A(() => {
|
|
3004
3260
|
h.current && (h.current.style.height = "auto", h.current.style.height = `${Math.min(h.current.scrollHeight, e)}px`);
|
|
3005
|
-
}, [
|
|
3006
|
-
let
|
|
3261
|
+
}, [o, e]);
|
|
3262
|
+
let b = (t) => {
|
|
3007
3263
|
_.getState().setInput(t.target.value), t.target.style.height = "auto", t.target.style.height = `${Math.min(t.target.scrollHeight, e)}px`;
|
|
3008
|
-
},
|
|
3009
|
-
e.length && _.getState().setAttachments((t) =>
|
|
3264
|
+
}, ee = (e) => {
|
|
3265
|
+
e.length && _.getState().setAttachments((t) => Wn(t, e));
|
|
3010
3266
|
};
|
|
3011
|
-
return /* @__PURE__ */
|
|
3012
|
-
attachments:
|
|
3267
|
+
return /* @__PURE__ */ T(a, {
|
|
3268
|
+
attachments: s,
|
|
3013
3269
|
composerContextIndicator: v,
|
|
3014
3270
|
composerMaxHeight: e,
|
|
3015
3271
|
fileInputRef: m,
|
|
3016
|
-
input:
|
|
3272
|
+
input: o,
|
|
3017
3273
|
isMobile: i,
|
|
3018
|
-
isStreaming:
|
|
3019
|
-
queuedDrafts:
|
|
3020
|
-
onAppendAttachments:
|
|
3021
|
-
onInputChange:
|
|
3274
|
+
isStreaming: l,
|
|
3275
|
+
queuedDrafts: u,
|
|
3276
|
+
onAppendAttachments: ee,
|
|
3277
|
+
onInputChange: b,
|
|
3022
3278
|
onPaste: (e) => {
|
|
3023
|
-
let t =
|
|
3024
|
-
t.length && (e.preventDefault(), e.stopPropagation(),
|
|
3279
|
+
let t = Gn(e);
|
|
3280
|
+
t.length && (e.preventDefault(), e.stopPropagation(), ee(t));
|
|
3025
3281
|
},
|
|
3026
3282
|
onRemoveAttachment: (e) => _.getState().setAttachments((t) => t.filter((t, n) => n !== e)),
|
|
3027
3283
|
onStopGeneration: n,
|
|
3028
3284
|
onCancelRemote: r,
|
|
3029
|
-
onSubmit:
|
|
3285
|
+
onSubmit: y,
|
|
3030
3286
|
textareaRef: h
|
|
3031
3287
|
});
|
|
3032
3288
|
}
|
|
3033
3289
|
//#endregion
|
|
3034
3290
|
//#region src/api/session.ts
|
|
3035
|
-
async function
|
|
3036
|
-
|
|
3291
|
+
async function qn(e, t) {
|
|
3292
|
+
let n = await K("ListSessions", {
|
|
3293
|
+
AgentId: e,
|
|
3294
|
+
Page: t?.page,
|
|
3295
|
+
PageSize: t?.pageSize
|
|
3296
|
+
}, t);
|
|
3297
|
+
return {
|
|
3298
|
+
Sessions: n.Sessions ?? [],
|
|
3299
|
+
Total: Number.isFinite(Number(n.Total)) ? Number(n.Total) : n.Sessions?.length ?? 0,
|
|
3300
|
+
Page: Number.isFinite(Number(n.Page)) ? Number(n.Page) : t?.page ?? 1,
|
|
3301
|
+
PageSize: Number.isFinite(Number(n.PageSize)) ? Number(n.PageSize) : t?.pageSize ?? n.Sessions?.length ?? 0
|
|
3302
|
+
};
|
|
3037
3303
|
}
|
|
3038
|
-
async function
|
|
3039
|
-
return (await
|
|
3304
|
+
async function Jn(e, t) {
|
|
3305
|
+
return (await K("CreateSession", { AgentId: e }, t)).Session;
|
|
3040
3306
|
}
|
|
3041
|
-
async function
|
|
3042
|
-
await
|
|
3307
|
+
async function Yn(e, t) {
|
|
3308
|
+
await K("DeleteSession", { SessionId: e }, t);
|
|
3043
3309
|
}
|
|
3044
3310
|
//#endregion
|
|
3045
3311
|
//#region src/api/events.ts
|
|
3046
|
-
async function
|
|
3047
|
-
|
|
3312
|
+
async function Xn(e, t) {
|
|
3313
|
+
let n = await K("ListSessionEvents", {
|
|
3314
|
+
SessionId: e,
|
|
3315
|
+
Offset: t?.offset,
|
|
3316
|
+
Limit: t?.limit
|
|
3317
|
+
}, t);
|
|
3318
|
+
return {
|
|
3319
|
+
Events: n.Events ?? [],
|
|
3320
|
+
Total: Number.isFinite(Number(n.Total)) ? Number(n.Total) : n.Events?.length ?? 0,
|
|
3321
|
+
Offset: Number.isFinite(Number(n.Offset)) ? Number(n.Offset) : t?.offset ?? 0,
|
|
3322
|
+
Limit: Number.isFinite(Number(n.Limit)) ? Number(n.Limit) : t?.limit ?? n.Events?.length ?? 0
|
|
3323
|
+
};
|
|
3048
3324
|
}
|
|
3049
3325
|
//#endregion
|
|
3050
3326
|
//#region src/api/run.ts
|
|
3051
|
-
async function
|
|
3052
|
-
return
|
|
3327
|
+
async function Zn(e, t) {
|
|
3328
|
+
return ze("RunAgent", e, t);
|
|
3053
3329
|
}
|
|
3054
3330
|
//#endregion
|
|
3055
3331
|
//#region src/api/checkpoints.ts
|
|
3056
|
-
async function
|
|
3332
|
+
async function Qn(e, t) {
|
|
3057
3333
|
let n = {
|
|
3058
3334
|
AgentId: e.agentId,
|
|
3059
3335
|
SessionId: e.sessionId
|
|
3060
3336
|
};
|
|
3061
|
-
return e.runId && (n.RunId = e.runId),
|
|
3337
|
+
return e.runId && (n.RunId = e.runId), K("ListSessionCheckpoints", n, t);
|
|
3062
3338
|
}
|
|
3063
|
-
async function
|
|
3064
|
-
return
|
|
3339
|
+
async function $n(e, t) {
|
|
3340
|
+
return K("PreviewCheckpointResume", {
|
|
3065
3341
|
AgentId: e.agentId,
|
|
3066
3342
|
SessionId: e.sessionId,
|
|
3067
3343
|
RunId: e.runId,
|
|
3068
3344
|
CheckpointId: e.checkpointId
|
|
3069
3345
|
}, t);
|
|
3070
3346
|
}
|
|
3071
|
-
async function
|
|
3347
|
+
async function er(e, t) {
|
|
3072
3348
|
let n = {
|
|
3073
3349
|
AgentId: e.agentId,
|
|
3074
3350
|
SessionId: e.sessionId
|
|
3075
3351
|
};
|
|
3076
|
-
return e.runId && (n.RunId = e.runId), e.checkpointId && (n.CheckpointId = e.checkpointId),
|
|
3352
|
+
return e.runId && (n.RunId = e.runId), e.checkpointId && (n.CheckpointId = e.checkpointId), K("ListToolReceipts", n, t);
|
|
3077
3353
|
}
|
|
3078
|
-
async function
|
|
3354
|
+
async function tr(e, t) {
|
|
3079
3355
|
let n = {
|
|
3080
3356
|
AgentId: e.agentId,
|
|
3081
3357
|
SessionId: e.sessionId,
|
|
@@ -3083,28 +3359,28 @@ async function qn(e, t) {
|
|
|
3083
3359
|
CheckpointId: e.checkpointId,
|
|
3084
3360
|
Stream: !0
|
|
3085
3361
|
};
|
|
3086
|
-
return e.resumeAttemptId && (n.ResumeAttemptId = e.resumeAttemptId), e.invocationId && (n.InvocationId = e.invocationId),
|
|
3362
|
+
return e.resumeAttemptId && (n.ResumeAttemptId = e.resumeAttemptId), e.invocationId && (n.InvocationId = e.invocationId), ze("ResumeRun", n, t);
|
|
3087
3363
|
}
|
|
3088
3364
|
//#endregion
|
|
3089
3365
|
//#region src/api/workspace.ts
|
|
3090
|
-
async function
|
|
3091
|
-
return
|
|
3366
|
+
async function nr(e, t, n) {
|
|
3367
|
+
return K("ListWorkspaceFiles", {
|
|
3092
3368
|
AgentId: e,
|
|
3093
3369
|
Path: t,
|
|
3094
3370
|
Recursive: n
|
|
3095
3371
|
});
|
|
3096
3372
|
}
|
|
3097
|
-
async function
|
|
3098
|
-
return
|
|
3373
|
+
async function rr(e) {
|
|
3374
|
+
return Le("AddWorkspaceFile", e);
|
|
3099
3375
|
}
|
|
3100
|
-
async function
|
|
3101
|
-
return
|
|
3376
|
+
async function ir(e, t) {
|
|
3377
|
+
return K("DeleteWorkspaceFile", {
|
|
3102
3378
|
AgentId: e,
|
|
3103
3379
|
Path: t
|
|
3104
3380
|
});
|
|
3105
3381
|
}
|
|
3106
|
-
async function
|
|
3107
|
-
return
|
|
3382
|
+
async function ar(e, t, n) {
|
|
3383
|
+
return Re("GetWorkspaceFileContent", {
|
|
3108
3384
|
AgentId: e,
|
|
3109
3385
|
FilePath: t
|
|
3110
3386
|
}, {
|
|
@@ -3114,137 +3390,137 @@ async function Zn(e, t, n) {
|
|
|
3114
3390
|
}
|
|
3115
3391
|
//#endregion
|
|
3116
3392
|
//#region src/api/upload.ts
|
|
3117
|
-
async function
|
|
3118
|
-
return
|
|
3393
|
+
async function or(e, t) {
|
|
3394
|
+
return Le("UploadFile", e, t);
|
|
3119
3395
|
}
|
|
3120
3396
|
//#endregion
|
|
3121
3397
|
//#region src/core/api/facade.ts
|
|
3122
|
-
var
|
|
3398
|
+
var sr = class {
|
|
3123
3399
|
async listSessions(e, t) {
|
|
3124
|
-
return
|
|
3400
|
+
return qn(e, t);
|
|
3125
3401
|
}
|
|
3126
3402
|
async createSession(e, t) {
|
|
3127
|
-
return { SessionId: (await
|
|
3403
|
+
return { SessionId: (await Jn(e, t)).SessionId };
|
|
3128
3404
|
}
|
|
3129
3405
|
async deleteSession(e, t) {
|
|
3130
|
-
await
|
|
3406
|
+
await Yn(e, t);
|
|
3131
3407
|
}
|
|
3132
|
-
async listSessionEvents(e) {
|
|
3133
|
-
return
|
|
3408
|
+
async listSessionEvents(e, t) {
|
|
3409
|
+
return Xn(e, t);
|
|
3134
3410
|
}
|
|
3135
3411
|
async listSessionCheckpoints(e, t) {
|
|
3136
|
-
return
|
|
3412
|
+
return Qn(e, t);
|
|
3137
3413
|
}
|
|
3138
3414
|
async previewCheckpointResume(e, t) {
|
|
3139
|
-
return
|
|
3415
|
+
return $n(e, t);
|
|
3140
3416
|
}
|
|
3141
3417
|
async listToolReceipts(e, t) {
|
|
3142
|
-
return
|
|
3418
|
+
return er(e, t);
|
|
3143
3419
|
}
|
|
3144
3420
|
async runAgent(e, t) {
|
|
3145
|
-
return
|
|
3421
|
+
return Zn(e, t);
|
|
3146
3422
|
}
|
|
3147
3423
|
async resumeRun(e, t) {
|
|
3148
|
-
return
|
|
3424
|
+
return tr(e, t);
|
|
3149
3425
|
}
|
|
3150
3426
|
async subscribeRunEvents(e, t) {
|
|
3151
|
-
return
|
|
3427
|
+
return Be("SubscribeRunEvents", {
|
|
3152
3428
|
SessionId: e.sessionId,
|
|
3153
3429
|
InvocationId: e.invocationId,
|
|
3154
3430
|
AfterSeqId: String(e.afterSeqId)
|
|
3155
3431
|
}, t);
|
|
3156
3432
|
}
|
|
3157
3433
|
async cancelRun(e, t, n) {
|
|
3158
|
-
return
|
|
3434
|
+
return K("CancelRun", {
|
|
3159
3435
|
AgentId: e,
|
|
3160
3436
|
InvocationId: t
|
|
3161
3437
|
}, n);
|
|
3162
3438
|
}
|
|
3163
3439
|
async getResponseFeedback(e, t) {
|
|
3164
|
-
return
|
|
3440
|
+
return K("GetResponseFeedback", e, t);
|
|
3165
3441
|
}
|
|
3166
3442
|
async upsertResponseFeedback(e, t) {
|
|
3167
|
-
return
|
|
3443
|
+
return K("UpsertResponseFeedback", e, t);
|
|
3168
3444
|
}
|
|
3169
3445
|
async deleteResponseFeedback(e, t) {
|
|
3170
|
-
await
|
|
3446
|
+
await K("DeleteResponseFeedback", e, t);
|
|
3171
3447
|
}
|
|
3172
3448
|
async listWorkspaceFiles(e, t, n) {
|
|
3173
|
-
return
|
|
3449
|
+
return nr(e, t, n);
|
|
3174
3450
|
}
|
|
3175
3451
|
async addWorkspaceFile(e) {
|
|
3176
|
-
return
|
|
3452
|
+
return rr(e);
|
|
3177
3453
|
}
|
|
3178
3454
|
async deleteWorkspaceFile(e, t) {
|
|
3179
|
-
await
|
|
3455
|
+
await ir(e, t);
|
|
3180
3456
|
}
|
|
3181
3457
|
async getWorkspaceFileContent(e, t, n) {
|
|
3182
|
-
return
|
|
3458
|
+
return ar(e, t, n);
|
|
3183
3459
|
}
|
|
3184
3460
|
async listAgentModels(e) {
|
|
3185
|
-
return
|
|
3461
|
+
return He(e);
|
|
3186
3462
|
}
|
|
3187
3463
|
async getAgentUiBootstrap() {
|
|
3188
|
-
return
|
|
3464
|
+
return Ve();
|
|
3189
3465
|
}
|
|
3190
3466
|
async uploadFile(e, t) {
|
|
3191
|
-
return
|
|
3467
|
+
return or(e, t);
|
|
3192
3468
|
}
|
|
3193
|
-
},
|
|
3194
|
-
function
|
|
3195
|
-
let
|
|
3196
|
-
isMobile:
|
|
3469
|
+
}, cr = new sr(), lr = O.lazy(() => import("./ArtifactsPanel-Bwj57S63.js").then((e) => ({ default: e.ArtifactsPanel }))), ur = O.lazy(() => import("./NativeTerminalPanel-DASBHcE0.js").then((e) => e.n).then((e) => ({ default: e.NativeTerminalPanel })));
|
|
3470
|
+
function dr({ apiAdapter: e, initialSurface: r = "chat", routeShell: i } = {}) {
|
|
3471
|
+
let a = e || cr, o = P((e) => e.agentId), s = R((e) => e.currentSessionId), c = I((e) => e.isStreaming), l = _((e) => e.sidebarOpen), u = _((e) => e.mobileSidebarOpen), d = _((e) => e.mobileActionsOpen), f = P((e) => e.agentName), p = F((e) => e.selectedModel), m = F((e) => e.availableModels), h = F((e) => e.modelSource), v = F((e) => e.modelCatalogLoaded), te = F((e) => e.thinkingMode), x = P((e) => e.agentFramework), S = P((e) => e.workspaceFiles), C = P((e) => e.accessMode), w = _((e) => e.workspacePanelOpen), D = _((e) => e.workspacePanelWidth), O = _((e) => e.workspacePanelFullscreen), ae = P((e) => e.apiFormats), M = P((e) => e.capabilities), N = ne((e) => e.visible && !!e.content), se = j([]), ce = j(null), { isMobile: L, viewportHeight: le } = Fe(), ue = ve({
|
|
3472
|
+
isMobile: L,
|
|
3197
3473
|
viewportHeight: le
|
|
3198
|
-
}), { fetchSessions: de,
|
|
3199
|
-
agentId:
|
|
3200
|
-
currentSessionId:
|
|
3201
|
-
isMobile:
|
|
3202
|
-
uiCapabilities:
|
|
3203
|
-
api:
|
|
3474
|
+
}), { fetchSessions: de, loadMoreSessions: fe, loadSession: pe, loadOlderSessionEvents: me, createNewSession: he, deleteSession: ge, currentSessionIdRef: z, agentIdRef: B, runSubscriptionAbortRef: _e } = Cn({
|
|
3475
|
+
agentId: o,
|
|
3476
|
+
currentSessionId: s,
|
|
3477
|
+
isMobile: L,
|
|
3478
|
+
uiCapabilities: M,
|
|
3479
|
+
api: a,
|
|
3204
3480
|
resetCompaction: () => {},
|
|
3205
|
-
disconnectRun: () =>
|
|
3206
|
-
}),
|
|
3481
|
+
disconnectRun: () => ce.current?.()
|
|
3482
|
+
}), ye = k((e) => {
|
|
3207
3483
|
if (!e) return;
|
|
3208
3484
|
let t = () => {
|
|
3209
|
-
de(
|
|
3485
|
+
de(B.current, e), z.current === e && !I.getState().isStreaming && pe(e);
|
|
3210
3486
|
};
|
|
3211
3487
|
queueMicrotask(t), window.setTimeout(t, 1800), window.setTimeout(t, 5e3);
|
|
3212
3488
|
}, [
|
|
3213
|
-
|
|
3214
|
-
|
|
3489
|
+
B,
|
|
3490
|
+
z,
|
|
3215
3491
|
de,
|
|
3216
|
-
|
|
3217
|
-
]), { submitDraft:
|
|
3218
|
-
agentId:
|
|
3219
|
-
currentSessionId:
|
|
3220
|
-
agentFramework:
|
|
3221
|
-
apiFormats:
|
|
3222
|
-
selectedModel:
|
|
3223
|
-
thinkingMode:
|
|
3224
|
-
uiCapabilities:
|
|
3225
|
-
isMobile:
|
|
3226
|
-
api:
|
|
3227
|
-
currentSessionIdRef:
|
|
3228
|
-
agentIdRef:
|
|
3229
|
-
queuedDraftRef:
|
|
3230
|
-
onRunSettled:
|
|
3492
|
+
pe
|
|
3493
|
+
]), { submitDraft: be, stopGeneration: xe, disconnectRun: Se, resumeCheckpoint: Ce } = pn({
|
|
3494
|
+
agentId: o,
|
|
3495
|
+
currentSessionId: s,
|
|
3496
|
+
agentFramework: x,
|
|
3497
|
+
apiFormats: ae,
|
|
3498
|
+
selectedModel: p,
|
|
3499
|
+
thinkingMode: te,
|
|
3500
|
+
uiCapabilities: M,
|
|
3501
|
+
isMobile: L,
|
|
3502
|
+
api: a,
|
|
3503
|
+
currentSessionIdRef: z,
|
|
3504
|
+
agentIdRef: B,
|
|
3505
|
+
queuedDraftRef: se,
|
|
3506
|
+
onRunSettled: ye
|
|
3231
3507
|
});
|
|
3232
|
-
|
|
3233
|
-
|
|
3234
|
-
}, [
|
|
3235
|
-
let
|
|
3236
|
-
let e =
|
|
3237
|
-
|
|
3508
|
+
A(() => {
|
|
3509
|
+
ce.current = Se;
|
|
3510
|
+
}, [Se]);
|
|
3511
|
+
let Te = k(() => {
|
|
3512
|
+
let e = z.current;
|
|
3513
|
+
_e.current?.abort(), I.getState().stopActivity(), I.getState().stopSessionActivity(e), xe();
|
|
3238
3514
|
}, [
|
|
3239
|
-
L,
|
|
3240
3515
|
z,
|
|
3241
|
-
_e
|
|
3242
|
-
|
|
3243
|
-
|
|
3516
|
+
_e,
|
|
3517
|
+
xe
|
|
3518
|
+
]), Ee = k(async () => {
|
|
3519
|
+
let e = z.current, t = I.getState(), n = t.currentRunId || t.getSessionActivity(e)?.runId || "";
|
|
3244
3520
|
if (n) try {
|
|
3245
|
-
await
|
|
3521
|
+
await a.cancelRun(o, n), I.getState().stopSessionActivity(e, "取消请求已发送,后台运行会停在最近 checkpoint。");
|
|
3246
3522
|
} catch (t) {
|
|
3247
|
-
console.warn("[App] cancelRun failed:", t),
|
|
3523
|
+
console.warn("[App] cancelRun failed:", t), I.getState().updateActivity({
|
|
3248
3524
|
sessionId: e,
|
|
3249
3525
|
status: "failed",
|
|
3250
3526
|
phase: "取消请求失败",
|
|
@@ -3252,169 +3528,183 @@ function nr({ apiAdapter: e, routeShell: n } = {}) {
|
|
|
3252
3528
|
countEvent: !1
|
|
3253
3529
|
});
|
|
3254
3530
|
}
|
|
3255
|
-
|
|
3531
|
+
ye(e);
|
|
3256
3532
|
}, [
|
|
3257
|
-
|
|
3258
|
-
|
|
3259
|
-
|
|
3260
|
-
|
|
3261
|
-
]), { submitResponseFeedback:
|
|
3262
|
-
agentId:
|
|
3263
|
-
currentSessionId:
|
|
3264
|
-
isStreaming:
|
|
3265
|
-
api:
|
|
3266
|
-
submitDraft:
|
|
3533
|
+
a,
|
|
3534
|
+
o,
|
|
3535
|
+
z,
|
|
3536
|
+
ye
|
|
3537
|
+
]), { submitResponseFeedback: De, deleteResponseFeedback: Oe, respondToApproval: ke } = mn({
|
|
3538
|
+
agentId: o,
|
|
3539
|
+
currentSessionId: s,
|
|
3540
|
+
isStreaming: c,
|
|
3541
|
+
api: a,
|
|
3542
|
+
submitDraft: be
|
|
3267
3543
|
});
|
|
3268
|
-
|
|
3269
|
-
|
|
3544
|
+
Ge({ fetchSessions: de }), A(() => {
|
|
3545
|
+
B.current = o, z.current = s, we(o, s);
|
|
3270
3546
|
}, [
|
|
3271
|
-
|
|
3272
|
-
|
|
3273
|
-
|
|
3274
|
-
|
|
3275
|
-
]),
|
|
3276
|
-
|
|
3277
|
-
}, [
|
|
3278
|
-
|
|
3279
|
-
}, [
|
|
3280
|
-
|
|
3281
|
-
}, [
|
|
3282
|
-
let
|
|
3283
|
-
workspaceFiles:
|
|
3284
|
-
accessMode:
|
|
3285
|
-
}),
|
|
3286
|
-
capability:
|
|
3287
|
-
agentFramework:
|
|
3288
|
-
accessMode:
|
|
3547
|
+
o,
|
|
3548
|
+
s,
|
|
3549
|
+
B,
|
|
3550
|
+
z
|
|
3551
|
+
]), A(() => {
|
|
3552
|
+
L ? _.getState().setWorkspacePanelFullscreen(!1) : (_.getState().setMobileSidebarOpen(!1), _.getState().setMobileActionsOpen(!1));
|
|
3553
|
+
}, [L]), A(() => {
|
|
3554
|
+
w || _.getState().setWorkspacePanelFullscreen(!1);
|
|
3555
|
+
}, [w]), A(() => () => {
|
|
3556
|
+
_e.current?.abort();
|
|
3557
|
+
}, [_e]);
|
|
3558
|
+
let je = t(M), Ne = !!M.Thinking, V = g({
|
|
3559
|
+
workspaceFiles: S,
|
|
3560
|
+
accessMode: C
|
|
3561
|
+
}), Pe = y({ isMobile: L }), H = Ae({
|
|
3562
|
+
capability: M.NativeDashboard,
|
|
3563
|
+
agentFramework: x,
|
|
3564
|
+
accessMode: C,
|
|
3289
3565
|
origin: window.location.origin
|
|
3290
|
-
}),
|
|
3566
|
+
}), U = !je, W = x === "openclaw" ? "OpenClaw" : x === "hermes" ? "Hermes" : "原生运行时", Ie = (m.find((e) => e.id === p) || null)?.display_name || p || "", G = !L && l && je, K = j(!1), [Le, Re] = oe(r === "tui"), ze = Le && !!M.NativeTerminal?.Enabled;
|
|
3567
|
+
A(() => {
|
|
3568
|
+
K.current || r !== "workspace" || !V || (K.current = !0, _.getState().setWorkspacePanelOpen(!0), _.getState().setWorkspacePanelFullscreen(!0));
|
|
3569
|
+
}, [r, V]);
|
|
3570
|
+
let Be = /* @__PURE__ */ E("div", {
|
|
3291
3571
|
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",
|
|
3292
3572
|
children: [
|
|
3293
|
-
/* @__PURE__ */
|
|
3294
|
-
uiCapabilities:
|
|
3295
|
-
createNewSession:
|
|
3296
|
-
deleteSession:
|
|
3297
|
-
loadSession:
|
|
3573
|
+
/* @__PURE__ */ T(wn, {
|
|
3574
|
+
uiCapabilities: M,
|
|
3575
|
+
createNewSession: he,
|
|
3576
|
+
deleteSession: ge,
|
|
3577
|
+
loadSession: pe,
|
|
3578
|
+
loadMoreSessions: fe
|
|
3298
3579
|
}),
|
|
3299
|
-
/* @__PURE__ */
|
|
3580
|
+
/* @__PURE__ */ E("main", {
|
|
3300
3581
|
className: "relative flex min-w-0 flex-1 flex-col bg-white dark:bg-slate-900",
|
|
3301
|
-
children: [/* @__PURE__ */
|
|
3302
|
-
agentName:
|
|
3303
|
-
currentSessionId:
|
|
3304
|
-
nativeLauncherMode:
|
|
3305
|
-
isMobile:
|
|
3306
|
-
sidebarOpen:
|
|
3307
|
-
mobileSidebarOpen:
|
|
3582
|
+
children: [/* @__PURE__ */ T(n, {
|
|
3583
|
+
agentName: f,
|
|
3584
|
+
currentSessionId: s,
|
|
3585
|
+
nativeLauncherMode: U,
|
|
3586
|
+
isMobile: L,
|
|
3587
|
+
sidebarOpen: l,
|
|
3588
|
+
mobileSidebarOpen: u,
|
|
3308
3589
|
onToggleSidebar: () => {
|
|
3309
|
-
|
|
3590
|
+
L ? _.getState().toggleMobileSidebar() : _.getState().toggleSidebar();
|
|
3310
3591
|
},
|
|
3311
|
-
availableModels:
|
|
3312
|
-
selectedModel:
|
|
3592
|
+
availableModels: m,
|
|
3593
|
+
selectedModel: p,
|
|
3313
3594
|
onSelectModel: (e) => {
|
|
3314
|
-
|
|
3595
|
+
F.getState().setSelectedModel(e), L && _.getState().setMobileActionsOpen(!1);
|
|
3315
3596
|
},
|
|
3316
|
-
selectedModelLabel:
|
|
3317
|
-
modelCatalogLoaded:
|
|
3318
|
-
modelSource:
|
|
3319
|
-
thinkingEnabled:
|
|
3320
|
-
thinkingMode:
|
|
3321
|
-
onSelectThinkingMode: (e) =>
|
|
3322
|
-
mobileActionsOpen:
|
|
3597
|
+
selectedModelLabel: Ie,
|
|
3598
|
+
modelCatalogLoaded: v,
|
|
3599
|
+
modelSource: h,
|
|
3600
|
+
thinkingEnabled: Ne,
|
|
3601
|
+
thinkingMode: te,
|
|
3602
|
+
onSelectThinkingMode: (e) => F.getState().setThinkingMode(Me(e)),
|
|
3603
|
+
mobileActionsOpen: d,
|
|
3323
3604
|
onMobileActionsOpenChange: (e) => _.getState().setMobileActionsOpen(e),
|
|
3324
3605
|
workspaceEnabled: V,
|
|
3325
3606
|
onOpenWorkspace: () => _.getState().setWorkspacePanelOpen(!0),
|
|
3326
3607
|
nativeManagementLink: H,
|
|
3327
|
-
nativeTerminal:
|
|
3328
|
-
}),
|
|
3329
|
-
productLabel:
|
|
3608
|
+
nativeTerminal: M.NativeTerminal
|
|
3609
|
+
}), U ? /* @__PURE__ */ T(b, {
|
|
3610
|
+
productLabel: W,
|
|
3330
3611
|
nativeManagementLink: H,
|
|
3331
|
-
nativeTerminal:
|
|
3612
|
+
nativeTerminal: M.NativeTerminal,
|
|
3332
3613
|
workspaceEnabled: V,
|
|
3333
3614
|
onOpenWorkspace: () => _.getState().setWorkspacePanelOpen(!0)
|
|
3334
|
-
}) : /* @__PURE__ */
|
|
3335
|
-
agentName:
|
|
3336
|
-
isMobile:
|
|
3337
|
-
onDeleteFeedback:
|
|
3338
|
-
onSubmitFeedback:
|
|
3339
|
-
onRespondToApproval:
|
|
3340
|
-
onStopGeneration:
|
|
3341
|
-
onCancelRemote:
|
|
3342
|
-
checkpointResumeEnabled:
|
|
3343
|
-
onResumeCheckpoint:
|
|
3344
|
-
|
|
3615
|
+
}) : /* @__PURE__ */ E(re, { children: [/* @__PURE__ */ T(Hn, {
|
|
3616
|
+
agentName: f,
|
|
3617
|
+
isMobile: L,
|
|
3618
|
+
onDeleteFeedback: Oe,
|
|
3619
|
+
onSubmitFeedback: De,
|
|
3620
|
+
onRespondToApproval: ke,
|
|
3621
|
+
onStopGeneration: Te,
|
|
3622
|
+
onCancelRemote: M.StopRun ? Ee : void 0,
|
|
3623
|
+
checkpointResumeEnabled: M.RunLifecycle.Enabled && M.RunLifecycle.Checkpoints && M.RunLifecycle.CheckpointResume,
|
|
3624
|
+
onResumeCheckpoint: Ce,
|
|
3625
|
+
onLoadOlderSessionEvents: me
|
|
3626
|
+
}), /* @__PURE__ */ T(Kn, {
|
|
3345
3627
|
composerMaxHeight: ue,
|
|
3346
|
-
submitDraft:
|
|
3347
|
-
stopGeneration:
|
|
3348
|
-
cancelRemote:
|
|
3349
|
-
isMobile:
|
|
3628
|
+
submitDraft: be,
|
|
3629
|
+
stopGeneration: Te,
|
|
3630
|
+
cancelRemote: M.StopRun ? Ee : void 0,
|
|
3631
|
+
isMobile: L
|
|
3350
3632
|
})] })]
|
|
3351
3633
|
}),
|
|
3352
|
-
/* @__PURE__ */
|
|
3353
|
-
agentId:
|
|
3354
|
-
capability:
|
|
3355
|
-
workspacePanelOpen:
|
|
3356
|
-
workspacePanelWidth:
|
|
3357
|
-
workspacePanelFullscreen:
|
|
3358
|
-
isMobile:
|
|
3634
|
+
/* @__PURE__ */ T(ee, {
|
|
3635
|
+
agentId: o,
|
|
3636
|
+
capability: S,
|
|
3637
|
+
workspacePanelOpen: w,
|
|
3638
|
+
workspacePanelWidth: D,
|
|
3639
|
+
workspacePanelFullscreen: O,
|
|
3640
|
+
isMobile: L,
|
|
3359
3641
|
workspaceEnabled: V,
|
|
3360
|
-
workspaceFiles:
|
|
3361
|
-
workspacePanelPresentation:
|
|
3642
|
+
workspaceFiles: S,
|
|
3643
|
+
workspacePanelPresentation: Pe,
|
|
3362
3644
|
closeWorkspacePanel: () => {
|
|
3363
3645
|
_.getState().setWorkspacePanelFullscreen(!1), _.getState().setWorkspacePanelOpen(!1);
|
|
3364
3646
|
},
|
|
3365
3647
|
handleWorkspacePanelResizeStart: (e) => {
|
|
3366
|
-
if (
|
|
3648
|
+
if (O || L) return;
|
|
3367
3649
|
e.preventDefault();
|
|
3368
|
-
let t = e.clientX, n =
|
|
3650
|
+
let t = e.clientX, n = D, r = je && G ? 280 : 0, i = document.body.style.cursor, a = document.body.style.userSelect;
|
|
3369
3651
|
document.body.style.cursor = "col-resize", document.body.style.userSelect = "none";
|
|
3370
3652
|
let o = (e) => {
|
|
3371
3653
|
let i = n + t - e.clientX;
|
|
3372
|
-
_.getState().setWorkspacePanelWidth(
|
|
3654
|
+
_.getState().setWorkspacePanelWidth(ht(i, window.innerWidth, r));
|
|
3373
3655
|
}, s = () => {
|
|
3374
3656
|
document.body.style.cursor = i, document.body.style.userSelect = a, window.removeEventListener("pointermove", o), window.removeEventListener("pointerup", s), window.removeEventListener("pointercancel", s);
|
|
3375
3657
|
};
|
|
3376
3658
|
window.addEventListener("pointermove", o), window.addEventListener("pointerup", s), window.addEventListener("pointercancel", s);
|
|
3377
3659
|
},
|
|
3378
|
-
api:
|
|
3660
|
+
api: a
|
|
3379
3661
|
}),
|
|
3380
|
-
|
|
3662
|
+
N && /* @__PURE__ */ T(ie, {
|
|
3381
3663
|
fallback: null,
|
|
3382
|
-
children: /* @__PURE__ */
|
|
3383
|
-
})
|
|
3664
|
+
children: /* @__PURE__ */ T(lr, {})
|
|
3665
|
+
}),
|
|
3666
|
+
ze ? /* @__PURE__ */ T(ie, {
|
|
3667
|
+
fallback: null,
|
|
3668
|
+
children: /* @__PURE__ */ T(ur, {
|
|
3669
|
+
capability: M.NativeTerminal,
|
|
3670
|
+
open: !0,
|
|
3671
|
+
onClose: () => Re(!1)
|
|
3672
|
+
})
|
|
3673
|
+
}) : null
|
|
3384
3674
|
]
|
|
3385
3675
|
});
|
|
3386
|
-
return
|
|
3676
|
+
return i ? /* @__PURE__ */ T(i, { children: Be }) : Be;
|
|
3387
3677
|
}
|
|
3388
3678
|
//#endregion
|
|
3389
3679
|
//#region src/core/transport/sse-transport.ts
|
|
3390
|
-
function
|
|
3680
|
+
function fr(e, t) {
|
|
3391
3681
|
if (e.eventName === "__ping__") {
|
|
3392
|
-
|
|
3682
|
+
I.getState().updateActivity({ countEvent: !1 });
|
|
3393
3683
|
return;
|
|
3394
3684
|
}
|
|
3395
3685
|
t.onEvent(e);
|
|
3396
3686
|
}
|
|
3397
|
-
var
|
|
3687
|
+
var pr = class {
|
|
3398
3688
|
protocol = "sse-post";
|
|
3399
3689
|
async connect(e, t) {
|
|
3400
|
-
let n = (await
|
|
3690
|
+
let n = (await ze(e.action, e.body || {}, { signal: e.signal })).getReader(), r = new TextDecoder(), i = "", a = !1;
|
|
3401
3691
|
return (async () => {
|
|
3402
3692
|
try {
|
|
3403
3693
|
for (; !a;) {
|
|
3404
3694
|
let { value: e, done: a } = await n.read();
|
|
3405
3695
|
if (a) break;
|
|
3406
3696
|
i += r.decode(e, { stream: !0 });
|
|
3407
|
-
let { chunks: o, remainder: s } =
|
|
3697
|
+
let { chunks: o, remainder: s } = dt(i);
|
|
3408
3698
|
i = s;
|
|
3409
3699
|
for (let e of o) {
|
|
3410
3700
|
if (!e.trim()) continue;
|
|
3411
|
-
let n =
|
|
3701
|
+
let n = ut(e);
|
|
3412
3702
|
for (let e of n) {
|
|
3413
3703
|
if (e.eventName === "__done__") {
|
|
3414
3704
|
t.onComplete();
|
|
3415
3705
|
return;
|
|
3416
3706
|
}
|
|
3417
|
-
|
|
3707
|
+
fr(e, t);
|
|
3418
3708
|
}
|
|
3419
3709
|
}
|
|
3420
3710
|
}
|
|
@@ -3426,27 +3716,27 @@ var ir = class {
|
|
|
3426
3716
|
a = !0, n.cancel().catch(() => {});
|
|
3427
3717
|
};
|
|
3428
3718
|
}
|
|
3429
|
-
},
|
|
3719
|
+
}, mr = class {
|
|
3430
3720
|
protocol = "sse-get";
|
|
3431
3721
|
async connect(e, t) {
|
|
3432
|
-
let n = (await
|
|
3722
|
+
let n = (await Be(e.action, e.params || {}, { signal: e.signal })).getReader(), r = new TextDecoder(), i = "", a = !1;
|
|
3433
3723
|
return (async () => {
|
|
3434
3724
|
try {
|
|
3435
3725
|
for (; !a;) {
|
|
3436
3726
|
let { value: e, done: a } = await n.read();
|
|
3437
3727
|
if (a) break;
|
|
3438
3728
|
i += r.decode(e, { stream: !0 });
|
|
3439
|
-
let { chunks: o, remainder: s } =
|
|
3729
|
+
let { chunks: o, remainder: s } = dt(i);
|
|
3440
3730
|
i = s;
|
|
3441
3731
|
for (let e of o) {
|
|
3442
3732
|
if (!e.trim()) continue;
|
|
3443
|
-
let n =
|
|
3733
|
+
let n = ut(e);
|
|
3444
3734
|
for (let e of n) {
|
|
3445
3735
|
if (e.eventName === "__done__") {
|
|
3446
3736
|
t.onComplete();
|
|
3447
3737
|
return;
|
|
3448
3738
|
}
|
|
3449
|
-
|
|
3739
|
+
fr(e, t);
|
|
3450
3740
|
}
|
|
3451
3741
|
}
|
|
3452
3742
|
}
|
|
@@ -3460,4 +3750,4 @@ var ir = class {
|
|
|
3460
3750
|
}
|
|
3461
3751
|
};
|
|
3462
3752
|
//#endregion
|
|
3463
|
-
export {
|
|
3753
|
+
export { dr as AgentWorkbench, sr as ApiFacadeImpl, xt as RunEngineImpl, mr as SseGetTransport, pr as SsePostTransport, ct as createProtocol };
|