@kingsoftcloud/ksadk-web 0.2.12 → 0.2.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +13 -0
- package/dist-ksadk/assets/{ArtifactsPanel-DSLAubI4.js → ArtifactsPanel-BXcrygCd.js} +1 -1
- package/dist-ksadk/assets/{CodeBlock-pxXnLO20.js → CodeBlock-BcCOwv3F.js} +1 -1
- package/dist-ksadk/assets/{MathMessageMarkdown-vOUxyiqo.js → MathMessageMarkdown-Drzttgxm.js} +1 -1
- package/dist-ksadk/assets/{MermaidBlock-DesVdOvu.js → MermaidBlock-mtRNvScL.js} +6 -6
- package/dist-ksadk/assets/{NativeTerminalPanel-DOlS-2_E.js → NativeTerminalPanel-LnQxyAZB.js} +1 -1
- package/dist-ksadk/assets/{arc-Dy1xS0fu.js → arc-tHdp8jQa.js} +1 -1
- package/dist-ksadk/assets/architecture-7EHR7CIX-ld802pvW.js +1 -0
- package/dist-ksadk/assets/{architectureDiagram-3BPJPVTR-CBjkKkYl.js → architectureDiagram-3BPJPVTR-iz_Q1z15.js} +1 -1
- package/dist-ksadk/assets/{blockDiagram-GPEHLZMM-A8m3qj2U.js → blockDiagram-GPEHLZMM-UGrJbhBA.js} +1 -1
- package/dist-ksadk/assets/{c4Diagram-AAUBKEIU-DpyviLny.js → c4Diagram-AAUBKEIU-CXQpIgbq.js} +1 -1
- package/dist-ksadk/assets/channel-COAU2EGH.js +1 -0
- package/dist-ksadk/assets/{chunk-2J33WTMH-BxgBSaDe.js → chunk-2J33WTMH-BALTkjHL.js} +1 -1
- package/dist-ksadk/assets/{chunk-4BX2VUAB-B5-MRUoY.js → chunk-4BX2VUAB-ljiuFwa0.js} +1 -1
- package/dist-ksadk/assets/{chunk-55IACEB6-p_lPjbBV.js → chunk-55IACEB6-CFNeHQBP.js} +1 -1
- package/dist-ksadk/assets/{chunk-727SXJPM-CCkvnt-w.js → chunk-727SXJPM-C5E5qV45.js} +1 -1
- package/dist-ksadk/assets/{chunk-AQP2D5EJ-CVwRFsQH.js → chunk-AQP2D5EJ-qfoH6flS.js} +1 -1
- package/dist-ksadk/assets/{chunk-FMBD7UC4-CX-pqxDO.js → chunk-FMBD7UC4-DigwjG9R.js} +1 -1
- package/dist-ksadk/assets/{chunk-ND2GUHAM-C3UnR0sJ.js → chunk-ND2GUHAM-XNYKkHA-.js} +1 -1
- package/dist-ksadk/assets/chunk-QZHKN3VN-BvzsW0_z.js +1 -0
- package/dist-ksadk/assets/classDiagram-4FO5ZUOK-DFTBkc62.js +1 -0
- package/dist-ksadk/assets/classDiagram-v2-Q7XG4LA2-DFTBkc62.js +1 -0
- package/dist-ksadk/assets/{cose-bilkent-S5V4N54A-KvsU4x5h.js → cose-bilkent-S5V4N54A-DGqDRX9x.js} +1 -1
- package/dist-ksadk/assets/{dagre-BM42HDAG-Dor0aZOJ.js → dagre-BM42HDAG-CbbJ_rI4.js} +1 -1
- package/dist-ksadk/assets/{diagram-2AECGRRQ-DlHEhTI3.js → diagram-2AECGRRQ-C8n-HBnY.js} +1 -1
- package/dist-ksadk/assets/{diagram-5GNKFQAL-COX0cMU1.js → diagram-5GNKFQAL-BIta1UbQ.js} +1 -1
- package/dist-ksadk/assets/{diagram-KO2AKTUF-BCOXFG8k.js → diagram-KO2AKTUF-CK9z9G5J.js} +1 -1
- package/dist-ksadk/assets/{diagram-LMA3HP47-CMfmsn69.js → diagram-LMA3HP47-Be71txec.js} +1 -1
- package/dist-ksadk/assets/{diagram-OG6HWLK6-dDeGgX0v.js → diagram-OG6HWLK6-DGFaZ5wp.js} +1 -1
- package/dist-ksadk/assets/{dist-Bs03i11H.js → dist-BKUR95NE.js} +1 -1
- package/dist-ksadk/assets/{dist-BENjs6Lb.js → dist-BPECOwEw.js} +1 -1
- package/dist-ksadk/assets/{dist-C_xWNM7J.js → dist-BW5Ld9f-.js} +1 -1
- package/dist-ksadk/assets/{dist-ZNy_TFjx.js → dist-BhIBOiwD.js} +1 -1
- package/dist-ksadk/assets/{dist-BsVBlEZ-.js → dist-BiKbpujX.js} +1 -1
- package/dist-ksadk/assets/{dist-CBtdzJEM.js → dist-C1w53MwT.js} +1 -1
- package/dist-ksadk/assets/{dist-DGhCKjVB.js → dist-C5TwAg32.js} +1 -1
- package/dist-ksadk/assets/{dist-CbFZd4ak.js → dist-CR5MGEiz.js} +1 -1
- package/dist-ksadk/assets/{dist-DEF9mj61.js → dist-CWYvp3zw.js} +1 -1
- package/dist-ksadk/assets/{dist-C4sTOYcS.js → dist-C_Z1-ZmA.js} +1 -1
- package/dist-ksadk/assets/{dist-gpThSr_q.js → dist-CjOZLBw0.js} +1 -1
- package/dist-ksadk/assets/{dist-uU7j34p0.js → dist-CogLyQpT.js} +1 -1
- package/dist-ksadk/assets/{dist-C57vSV86.js → dist-D2IzCbzs.js} +1 -1
- package/dist-ksadk/assets/{dist-UOQFiknI.js → dist-D51ocFDT.js} +1 -1
- package/dist-ksadk/assets/{dist-Q9aY3kIX.js → dist-DW68jH2U.js} +1 -1
- package/dist-ksadk/assets/{dist-CTmbtesv.js → dist-DZH4wrvX.js} +1 -1
- package/dist-ksadk/assets/{dist-CAYJMjuY.js → dist-Da8ivwwd.js} +1 -1
- package/dist-ksadk/assets/{dist-F9T-QRU1.js → dist-Db3ZLHDu.js} +1 -1
- package/dist-ksadk/assets/{dist-PqBiVJVJ.js → dist-DtQF0aK1.js} +1 -1
- package/dist-ksadk/assets/{dist-1zCAwoLz.js → dist-SfWTEVE-.js} +1 -1
- package/dist-ksadk/assets/{dist--gHV8n2o.js → dist-jXQ-bzWe.js} +1 -1
- package/dist-ksadk/assets/{dist-FnmAZ-Xx.js → dist-oiCsxUDb.js} +1 -1
- package/dist-ksadk/assets/{erDiagram-TEJ5UH35-gIf_3lYO.js → erDiagram-TEJ5UH35-DxpQTwOK.js} +1 -1
- package/dist-ksadk/assets/eventmodeling-FCH6USID-CTWi3c6l.js +1 -0
- package/dist-ksadk/assets/{flowDiagram-I6XJVG4X-HKcmvyYs.js → flowDiagram-I6XJVG4X-DtJfiVka.js} +1 -1
- package/dist-ksadk/assets/{ganttDiagram-6RSMTGT7-Tu7c867c.js → ganttDiagram-6RSMTGT7-Cads5zt8.js} +1 -1
- package/dist-ksadk/assets/gitGraph-WXDBUCRP-BUUNILpg.js +1 -0
- package/dist-ksadk/assets/{gitGraphDiagram-PVQCEYII-BrcpuI5k.js → gitGraphDiagram-PVQCEYII-pVBGF0kC.js} +1 -1
- package/dist-ksadk/assets/index-BmYXEuwx.js +165 -0
- package/dist-ksadk/assets/info-J43DQDTF-Bp9uT-J8.js +1 -0
- package/dist-ksadk/assets/{infoDiagram-5YYISTIA-CDU4UHsD.js → infoDiagram-5YYISTIA-DRnfow9x.js} +1 -1
- package/dist-ksadk/assets/{ishikawaDiagram-YF4QCWOH-oloatnes.js → ishikawaDiagram-YF4QCWOH-Cj4f-Vgb.js} +1 -1
- package/dist-ksadk/assets/{journeyDiagram-JHISSGLW-BN7V35oe.js → journeyDiagram-JHISSGLW-CAlm8MAI.js} +1 -1
- package/dist-ksadk/assets/{kanban-definition-UN3LZRKU-U3-ruXcw.js → kanban-definition-UN3LZRKU-Dad-GGF-.js} +1 -1
- package/dist-ksadk/assets/{katex-C2Z3urCp.js → katex-C29J-Smv.js} +1 -1
- package/dist-ksadk/assets/{linear-HlEDIOWb.js → linear-zSHuEM7v.js} +1 -1
- package/dist-ksadk/assets/{mermaid-parser.core-D7S0E4RN.js → mermaid-parser.core-Cc12WCm1.js} +2 -2
- package/dist-ksadk/assets/{mindmap-definition-RKZ34NQL-Clz8TER4.js → mindmap-definition-RKZ34NQL-BaWEag7j.js} +1 -1
- package/dist-ksadk/assets/packet-YPE3B663-BrkZLyQL.js +1 -0
- package/dist-ksadk/assets/pie-LRSECV5Y-DjPUnz6v.js +1 -0
- package/dist-ksadk/assets/{pieDiagram-4H26LBE5-Bq6P4wmH.js → pieDiagram-4H26LBE5-CUweZZ4V.js} +1 -1
- package/dist-ksadk/assets/{quadrantDiagram-W4KKPZXB-DK4HwHPd.js → quadrantDiagram-W4KKPZXB-r6VGrgUe.js} +1 -1
- package/dist-ksadk/assets/radar-GUYGQ44K-B4p0ZaJn.js +1 -0
- package/dist-ksadk/assets/{requirementDiagram-4Y6WPE33-CJa5jzKr.js → requirementDiagram-4Y6WPE33-CODRvc2-.js} +1 -1
- package/dist-ksadk/assets/{sankeyDiagram-5OEKKPKP-BWkAvlqD.js → sankeyDiagram-5OEKKPKP-Bfu8TihS.js} +1 -1
- package/dist-ksadk/assets/{sequenceDiagram-3UESZ5HK-C0CubPXc.js → sequenceDiagram-3UESZ5HK-B0aTqv-7.js} +1 -1
- package/dist-ksadk/assets/{stateDiagram-AJRCARHV-ChiGIi7R.js → stateDiagram-AJRCARHV-C5D586Kc.js} +1 -1
- package/dist-ksadk/assets/stateDiagram-v2-BHNVJYJU-NgpS71EE.js +1 -0
- package/dist-ksadk/assets/{timeline-definition-PNZ67QCA-DpI_se_A.js → timeline-definition-PNZ67QCA-BN9QGovG.js} +1 -1
- package/dist-ksadk/assets/treeView-BLDUP644-D52yTg0v.js +1 -0
- package/dist-ksadk/assets/treemap-LRROVOQU-BXzm9_qc.js +1 -0
- package/dist-ksadk/assets/{vennDiagram-CIIHVFJN-GHKSrJ1N.js → vennDiagram-CIIHVFJN-DD2DPPQK.js} +1 -1
- package/dist-ksadk/assets/wardley-L42UT6IY-jE2fE4jx.js +1 -0
- package/dist-ksadk/assets/{wardleyDiagram-YWT4CUSO-7M8-ddnD.js → wardleyDiagram-YWT4CUSO-BuRKU-mS.js} +1 -1
- package/dist-ksadk/assets/{xychartDiagram-2RQKCTM6-n95Gfz0x.js → xychartDiagram-2RQKCTM6-CRK8qmKq.js} +1 -1
- package/dist-ksadk/index.html +1 -1
- package/dist-lib/App.d.ts.map +1 -1
- package/dist-lib/{ArtifactsPanel-yLxSIEFw.js → ArtifactsPanel-BCjpJZ9m.js} +1 -1
- package/dist-lib/{CodeBlock-CKy7sFkN.js → CodeBlock-CnIj5U9o.js} +1 -1
- package/dist-lib/{MathMessageMarkdown-D0fGt004.js → MathMessageMarkdown-DdjmAxKr.js} +2 -2
- package/dist-lib/{NativeTerminalPanel-Bzdmm_Au.js → NativeTerminalPanel-C1LtiwB7.js} +1 -1
- package/dist-lib/{WorkspacePanelContainer-BTxXY3RS.js → WorkspacePanelContainer-DyFPcWsD.js} +18 -13
- package/dist-lib/components.js +2 -2
- package/dist-lib/hooks/useSessionLifecycle.d.ts.map +1 -1
- package/dist-lib/runtime.js +719 -710
- package/dist-lib/utils/markdown.d.ts.map +1 -1
- package/package.json +1 -1
- package/dist-ksadk/assets/architecture-7EHR7CIX-CAFeU8Os.js +0 -1
- package/dist-ksadk/assets/channel-C6H4_5PB.js +0 -1
- package/dist-ksadk/assets/chunk-QZHKN3VN-CSopwtUu.js +0 -1
- package/dist-ksadk/assets/classDiagram-4FO5ZUOK-C2HgHAcO.js +0 -1
- package/dist-ksadk/assets/classDiagram-v2-Q7XG4LA2-C2HgHAcO.js +0 -1
- package/dist-ksadk/assets/eventmodeling-FCH6USID-mkGdlnaj.js +0 -1
- package/dist-ksadk/assets/gitGraph-WXDBUCRP-CXH1_IMu.js +0 -1
- package/dist-ksadk/assets/index-C1I1EOOF.js +0 -165
- package/dist-ksadk/assets/info-J43DQDTF-Zhlp1YtP.js +0 -1
- package/dist-ksadk/assets/packet-YPE3B663-DKwY-P6F.js +0 -1
- package/dist-ksadk/assets/pie-LRSECV5Y-2L7YF8aV.js +0 -1
- package/dist-ksadk/assets/radar-GUYGQ44K-DnK94GvU.js +0 -1
- package/dist-ksadk/assets/stateDiagram-v2-BHNVJYJU-PGyfW3uk.js +0 -1
- package/dist-ksadk/assets/treeView-BLDUP644-BDnH669R.js +0 -1
- package/dist-ksadk/assets/treemap-LRROVOQU-D8K5RWbs.js +0 -1
- package/dist-ksadk/assets/wardley-L42UT6IY-DkEQvWva.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 { C as n, D as r, E as i, O as a, T as o, _ as s, b as c, c as l, f as u, g as d, h as f, k as p, l as m, m as h, n as g, o as _, p as v, r as y, s as b, t as ee, u as te, v as x, w as S, y as C } from "./WorkspacePanelContainer-
|
|
2
|
+
import { C as n, D as r, E as i, O as a, T as o, _ as s, b as c, c as l, f as u, g as d, h as f, k as p, l as m, m as h, n as g, o as _, p as v, r as y, s as b, t as ee, u as te, v as x, w as S, y as C } from "./WorkspacePanelContainer-DyFPcWsD.js";
|
|
3
3
|
import { t as ne } from "./artifact-BfFsPe5A.js";
|
|
4
4
|
import { X as w } from "lucide-react";
|
|
5
5
|
import { Fragment as re, jsx as T, jsxs as E } from "react/jsx-runtime";
|
|
6
6
|
import * as D from "react";
|
|
7
|
-
import
|
|
8
|
-
import * as
|
|
9
|
-
import { create as
|
|
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 ce(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;
|
|
@@ -157,7 +157,7 @@ var P = M()((e) => ({
|
|
|
157
157
|
}));
|
|
158
158
|
//#endregion
|
|
159
159
|
//#region src/utils/session-pagination.js
|
|
160
|
-
function
|
|
160
|
+
function L(e = /* @__PURE__ */ new Set(), t = []) {
|
|
161
161
|
let n = new Set(e);
|
|
162
162
|
for (let e of t) {
|
|
163
163
|
let t = Number(e);
|
|
@@ -165,17 +165,17 @@ function I(e = /* @__PURE__ */ new Set(), t = []) {
|
|
|
165
165
|
}
|
|
166
166
|
return new Set(Array.from(n).sort((e, t) => e - t));
|
|
167
167
|
}
|
|
168
|
-
function
|
|
168
|
+
function le({ sessionsLength: e = 0, total: t = 0, page: n = 0, pageSize: r = 30, loadedPages: i = /* @__PURE__ */ new Set() } = {}) {
|
|
169
169
|
let a = Math.max(0, Number(t) || 0), o = Math.max(0, Number(e) || 0);
|
|
170
170
|
return {
|
|
171
171
|
total: a,
|
|
172
172
|
page: Math.max(0, Number(n) || 0),
|
|
173
173
|
pageSize: Math.max(1, Number(r) || 30),
|
|
174
|
-
loadedPages:
|
|
174
|
+
loadedPages: L(i),
|
|
175
175
|
hasMore: o < a
|
|
176
176
|
};
|
|
177
177
|
}
|
|
178
|
-
function
|
|
178
|
+
function ue({ total: e = 0, pageSize: t = 30, loadedPages: n = /* @__PURE__ */ new Set() } = {}) {
|
|
179
179
|
let r = Math.max(0, Number(e) || 0), i = Math.max(1, Number(t) || 30);
|
|
180
180
|
if (r <= 0) return null;
|
|
181
181
|
let a = Math.ceil(r / i);
|
|
@@ -184,7 +184,7 @@ function de({ total: e = 0, pageSize: t = 30, loadedPages: n = /* @__PURE__ */ n
|
|
|
184
184
|
}
|
|
185
185
|
//#endregion
|
|
186
186
|
//#region src/stores/session.ts
|
|
187
|
-
function
|
|
187
|
+
function de(e) {
|
|
188
188
|
let t = e.UpdatedAt;
|
|
189
189
|
if (typeof t == "string") {
|
|
190
190
|
let e = Date.parse(t);
|
|
@@ -192,37 +192,37 @@ function fe(e) {
|
|
|
192
192
|
}
|
|
193
193
|
return typeof t == "number" ? t : 0;
|
|
194
194
|
}
|
|
195
|
-
var
|
|
196
|
-
function
|
|
195
|
+
var fe = "ksadk.pinnedSessionIds";
|
|
196
|
+
function pe() {
|
|
197
197
|
try {
|
|
198
|
-
let e = globalThis.localStorage?.getItem(
|
|
198
|
+
let e = globalThis.localStorage?.getItem(fe), t = e ? JSON.parse(e) : [];
|
|
199
199
|
return Array.isArray(t) ? t.filter((e) => typeof e == "string") : [];
|
|
200
200
|
} catch {
|
|
201
201
|
return [];
|
|
202
202
|
}
|
|
203
203
|
}
|
|
204
|
-
function
|
|
204
|
+
function me(e) {
|
|
205
205
|
try {
|
|
206
|
-
globalThis.localStorage?.setItem(
|
|
206
|
+
globalThis.localStorage?.setItem(fe, JSON.stringify(e));
|
|
207
207
|
} catch {}
|
|
208
208
|
}
|
|
209
|
-
function
|
|
209
|
+
function he(e, t) {
|
|
210
210
|
let n = new Set(t);
|
|
211
211
|
return e.slice().sort((e, t) => {
|
|
212
212
|
let r = +!!n.has(e.SessionId), i = +!!n.has(t.SessionId);
|
|
213
|
-
return r === i ?
|
|
213
|
+
return r === i ? de(t) - de(e) : i - r;
|
|
214
214
|
});
|
|
215
215
|
}
|
|
216
|
-
function
|
|
216
|
+
function ge(e, t, n) {
|
|
217
217
|
let r = /* @__PURE__ */ new Map();
|
|
218
218
|
for (let t of e) t?.SessionId && r.set(t.SessionId, t);
|
|
219
219
|
for (let e of t) e?.SessionId && r.set(e.SessionId, {
|
|
220
220
|
...r.get(e.SessionId) || {},
|
|
221
221
|
...e
|
|
222
222
|
});
|
|
223
|
-
return
|
|
223
|
+
return he(Array.from(r.values()), n);
|
|
224
224
|
}
|
|
225
|
-
var
|
|
225
|
+
var R = N()((e) => ({
|
|
226
226
|
sessions: [],
|
|
227
227
|
currentSessionId: null,
|
|
228
228
|
sessionsAgentId: "",
|
|
@@ -232,12 +232,12 @@ var L = M()((e) => ({
|
|
|
232
232
|
loadedPages: /* @__PURE__ */ new Set(),
|
|
233
233
|
hasMoreSessions: !1,
|
|
234
234
|
isLoadingSessions: !1,
|
|
235
|
-
pinnedSessionIds:
|
|
235
|
+
pinnedSessionIds: pe(),
|
|
236
236
|
eventCache: {},
|
|
237
|
-
setSessions: (t) => e((e) => ({ sessions:
|
|
237
|
+
setSessions: (t) => e((e) => ({ sessions: he(t, e.pinnedSessionIds) })),
|
|
238
238
|
setCurrentSessionId: (t) => e({ currentSessionId: t }),
|
|
239
239
|
upsertSessions: (t, n) => e((e) => {
|
|
240
|
-
let r =
|
|
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
241
|
sessionsLength: r.length,
|
|
242
242
|
total: o,
|
|
243
243
|
page: i,
|
|
@@ -259,7 +259,7 @@ var L = M()((e) => ({
|
|
|
259
259
|
return {
|
|
260
260
|
sessions: n,
|
|
261
261
|
sessionsTotal: r,
|
|
262
|
-
hasMoreSessions:
|
|
262
|
+
hasMoreSessions: le({
|
|
263
263
|
sessionsLength: n.length,
|
|
264
264
|
total: r,
|
|
265
265
|
page: e.sessionsPage,
|
|
@@ -283,9 +283,9 @@ var L = M()((e) => ({
|
|
|
283
283
|
let n = new Set(e.pinnedSessionIds);
|
|
284
284
|
n.has(t) ? n.delete(t) : n.add(t);
|
|
285
285
|
let r = Array.from(n);
|
|
286
|
-
return
|
|
286
|
+
return me(r), {
|
|
287
287
|
pinnedSessionIds: r,
|
|
288
|
-
sessions:
|
|
288
|
+
sessions: he(e.sessions, r)
|
|
289
289
|
};
|
|
290
290
|
}),
|
|
291
291
|
setSessionEventCache: (t, n) => e((e) => ({ eventCache: {
|
|
@@ -313,52 +313,52 @@ var L = M()((e) => ({
|
|
|
313
313
|
let n = { ...e.eventCache };
|
|
314
314
|
return delete n[t], { eventCache: n };
|
|
315
315
|
})
|
|
316
|
-
})),
|
|
317
|
-
function
|
|
316
|
+
})), z = .28;
|
|
317
|
+
function B(e, t = 768) {
|
|
318
318
|
return Number(e) <= t;
|
|
319
319
|
}
|
|
320
|
-
function
|
|
320
|
+
function _e({ isMobile: e, desktopSidebarOpen: t, mobileSidebarOpen: n }) {
|
|
321
321
|
return {
|
|
322
322
|
desktopSidebarVisible: !e && !!t,
|
|
323
323
|
mobileDrawerVisible: !!(e && n)
|
|
324
324
|
};
|
|
325
325
|
}
|
|
326
|
-
function
|
|
326
|
+
function ve({ isMobile: e, viewportHeight: t, desktopMaxHeight: n = 160 }) {
|
|
327
327
|
if (!e) return n;
|
|
328
328
|
let r = Number(t);
|
|
329
329
|
if (!Number.isFinite(r) || r <= 0) return n;
|
|
330
|
-
let i = Math.floor(r *
|
|
330
|
+
let i = Math.floor(r * z);
|
|
331
331
|
return Math.max(120, Math.min(n, i));
|
|
332
332
|
}
|
|
333
333
|
//#endregion
|
|
334
334
|
//#region src/utils/session.js
|
|
335
|
-
var
|
|
336
|
-
function
|
|
335
|
+
var ye = "ksadk:webui:selected-session:";
|
|
336
|
+
function be(e) {
|
|
337
337
|
return String(e || "").trim() || "default-agent";
|
|
338
338
|
}
|
|
339
|
-
function
|
|
339
|
+
function xe(e) {
|
|
340
340
|
if (e && typeof e.getItem == "function") return e;
|
|
341
341
|
try {
|
|
342
342
|
if (typeof window < "u" && window.localStorage) return window.localStorage;
|
|
343
343
|
} catch {}
|
|
344
344
|
return null;
|
|
345
345
|
}
|
|
346
|
-
function
|
|
347
|
-
return `${
|
|
346
|
+
function Se(e) {
|
|
347
|
+
return `${ye}${be(e)}`;
|
|
348
348
|
}
|
|
349
|
-
function
|
|
350
|
-
let n =
|
|
349
|
+
function Ce(e, t) {
|
|
350
|
+
let n = xe(t);
|
|
351
351
|
if (!n) return null;
|
|
352
352
|
try {
|
|
353
|
-
return String(n.getItem(
|
|
353
|
+
return String(n.getItem(Se(e)) || "").trim() || null;
|
|
354
354
|
} catch {
|
|
355
355
|
return null;
|
|
356
356
|
}
|
|
357
357
|
}
|
|
358
|
-
function
|
|
359
|
-
let r =
|
|
358
|
+
function we(e, t, n) {
|
|
359
|
+
let r = xe(n);
|
|
360
360
|
if (!r) return;
|
|
361
|
-
let i =
|
|
361
|
+
let i = Se(e), a = String(t || "").trim();
|
|
362
362
|
try {
|
|
363
363
|
if (a) {
|
|
364
364
|
r.setItem(i, a);
|
|
@@ -367,7 +367,7 @@ function Te(e, t, n) {
|
|
|
367
367
|
r.removeItem(i);
|
|
368
368
|
} catch {}
|
|
369
369
|
}
|
|
370
|
-
function
|
|
370
|
+
function Te(e, t) {
|
|
371
371
|
if (!Array.isArray(e) || e.length === 0) return null;
|
|
372
372
|
let n = String(t || "").trim();
|
|
373
373
|
if (n && e.some((e) => String(e?.SessionId || "").trim() === n)) return n;
|
|
@@ -379,66 +379,66 @@ function Ee(e, t) {
|
|
|
379
379
|
}
|
|
380
380
|
//#endregion
|
|
381
381
|
//#region src/utils/native-platform.js
|
|
382
|
-
var
|
|
383
|
-
function
|
|
382
|
+
var Ee = new Map([["openclaw", "OpenClaw"], ["hermes", "Hermes"]]);
|
|
383
|
+
function De(e) {
|
|
384
384
|
return String(e || "").trim().toLowerCase();
|
|
385
385
|
}
|
|
386
|
-
function
|
|
386
|
+
function Oe(e) {
|
|
387
387
|
return String(e || "").trim().toLowerCase();
|
|
388
388
|
}
|
|
389
|
-
function
|
|
389
|
+
function ke(e) {
|
|
390
390
|
try {
|
|
391
391
|
return new URL("/", e).toString();
|
|
392
392
|
} catch {
|
|
393
393
|
return "/";
|
|
394
394
|
}
|
|
395
395
|
}
|
|
396
|
-
function
|
|
397
|
-
let i =
|
|
396
|
+
function Ae({ capability: e, agentFramework: t, accessMode: n, origin: r }) {
|
|
397
|
+
let i = De(n);
|
|
398
398
|
if (i !== "owner" && i !== "private" || !e?.Enabled) return null;
|
|
399
|
-
let a =
|
|
399
|
+
let a = Ee.get(Oe(t)) || "运行时";
|
|
400
400
|
return {
|
|
401
|
-
href: typeof e.Href == "string" && e.Href ? new URL(e.Href,
|
|
401
|
+
href: typeof e.Href == "string" && e.Href ? new URL(e.Href, ke(r)).toString() : ke(r),
|
|
402
402
|
label: typeof e.Label == "string" && e.Label ? e.Label : "管理平台",
|
|
403
403
|
title: `打开 ${a} 原生管理平台`
|
|
404
404
|
};
|
|
405
405
|
}
|
|
406
406
|
//#endregion
|
|
407
407
|
//#region src/utils/model-options.js
|
|
408
|
-
var
|
|
408
|
+
var je = new Set([
|
|
409
409
|
"auto",
|
|
410
410
|
"enabled",
|
|
411
411
|
"disabled"
|
|
412
412
|
]);
|
|
413
|
-
function
|
|
413
|
+
function Me(e) {
|
|
414
414
|
let t = String(e || "").trim().toLowerCase();
|
|
415
|
-
return
|
|
415
|
+
return je.has(t) ? t : "auto";
|
|
416
416
|
}
|
|
417
|
-
function
|
|
418
|
-
let t =
|
|
417
|
+
function Ne(e) {
|
|
418
|
+
let t = Me(e);
|
|
419
419
|
if (t === "disabled") return { thinking: { type: "disabled" } };
|
|
420
420
|
if (t === "enabled") return { thinking: { type: "enabled" } };
|
|
421
421
|
}
|
|
422
422
|
//#endregion
|
|
423
423
|
//#region src/hooks/useResponsiveViewport.ts
|
|
424
|
-
function
|
|
424
|
+
function Pe() {
|
|
425
425
|
return typeof window > "u" ? 900 : Math.round(window.visualViewport?.height || window.innerHeight || 900);
|
|
426
426
|
}
|
|
427
|
-
function
|
|
427
|
+
function V() {
|
|
428
428
|
return typeof window > "u" ? {
|
|
429
429
|
isMobile: !1,
|
|
430
430
|
viewportHeight: 900
|
|
431
431
|
} : {
|
|
432
|
-
isMobile:
|
|
433
|
-
viewportHeight:
|
|
432
|
+
isMobile: B(window.innerWidth, 768),
|
|
433
|
+
viewportHeight: Pe()
|
|
434
434
|
};
|
|
435
435
|
}
|
|
436
|
-
function
|
|
437
|
-
let [e, t] =
|
|
438
|
-
return
|
|
436
|
+
function Fe() {
|
|
437
|
+
let [e, t] = oe(() => V());
|
|
438
|
+
return A(() => {
|
|
439
439
|
if (typeof window > "u") return;
|
|
440
440
|
let e = window.matchMedia("(max-width: 768px)"), n = () => {
|
|
441
|
-
t(
|
|
441
|
+
t(V());
|
|
442
442
|
};
|
|
443
443
|
n();
|
|
444
444
|
let r = typeof e.addEventListener == "function" ? (e.addEventListener("change", n), () => e.removeEventListener("change", n)) : (e.addListener(n), () => e.removeListener(n));
|
|
@@ -449,76 +449,76 @@ function Ie() {
|
|
|
449
449
|
}
|
|
450
450
|
//#endregion
|
|
451
451
|
//#region src/api/client.ts
|
|
452
|
-
var
|
|
452
|
+
var H = class extends Error {
|
|
453
453
|
code;
|
|
454
454
|
detail;
|
|
455
455
|
constructor(e, t, n) {
|
|
456
456
|
super(t), this.name = "ApiError", this.code = e, this.detail = n;
|
|
457
457
|
}
|
|
458
|
-
},
|
|
458
|
+
}, U = class extends Error {
|
|
459
459
|
constructor(e = "请求已取消") {
|
|
460
460
|
super(e), this.name = "CancelledError";
|
|
461
461
|
}
|
|
462
|
-
},
|
|
463
|
-
async function
|
|
462
|
+
}, W = "/agentengine/api/v1";
|
|
463
|
+
async function Ie(e) {
|
|
464
464
|
let t;
|
|
465
465
|
try {
|
|
466
466
|
t = await e.json();
|
|
467
467
|
} catch {
|
|
468
|
-
throw new
|
|
468
|
+
throw new H(-2, "响应格式异常");
|
|
469
469
|
}
|
|
470
|
-
if (!e.ok) throw new
|
|
471
|
-
if (t?.Code !== void 0 && t.Code !== 0) throw new
|
|
470
|
+
if (!e.ok) throw new H(e.status, t?.Message || `HTTP ${e.status}`, t);
|
|
471
|
+
if (t?.Code !== void 0 && t.Code !== 0) throw new H(t.Code, t.Message || "请求失败", t);
|
|
472
472
|
return t.Data;
|
|
473
473
|
}
|
|
474
|
-
function
|
|
475
|
-
throw e instanceof DOMException && e.name === "AbortError" ? new
|
|
474
|
+
function G(e) {
|
|
475
|
+
throw e instanceof DOMException && e.name === "AbortError" ? new U() : e;
|
|
476
476
|
}
|
|
477
|
-
async function
|
|
477
|
+
async function K(e, t, n) {
|
|
478
478
|
let r;
|
|
479
479
|
try {
|
|
480
|
-
r = await fetch(`${
|
|
480
|
+
r = await fetch(`${W}/${e}`, {
|
|
481
481
|
method: "POST",
|
|
482
482
|
headers: { "Content-Type": "application/json" },
|
|
483
483
|
body: JSON.stringify(t),
|
|
484
484
|
signal: n?.signal
|
|
485
485
|
});
|
|
486
486
|
} catch (e) {
|
|
487
|
-
throw
|
|
487
|
+
throw G(e);
|
|
488
488
|
}
|
|
489
|
-
return
|
|
489
|
+
return Ie(r);
|
|
490
490
|
}
|
|
491
|
-
async function
|
|
491
|
+
async function Le(e, t, n) {
|
|
492
492
|
let r;
|
|
493
493
|
try {
|
|
494
|
-
r = await fetch(`${
|
|
494
|
+
r = await fetch(`${W}/${e}`, {
|
|
495
495
|
method: "POST",
|
|
496
496
|
body: t,
|
|
497
497
|
signal: n?.signal
|
|
498
498
|
});
|
|
499
499
|
} catch (e) {
|
|
500
|
-
throw
|
|
500
|
+
throw G(e);
|
|
501
501
|
}
|
|
502
|
-
return
|
|
502
|
+
return Ie(r);
|
|
503
503
|
}
|
|
504
|
-
async function
|
|
505
|
-
let r = new URLSearchParams(t).toString(), i = r ? `${
|
|
504
|
+
async function Re(e, t, n) {
|
|
505
|
+
let r = new URLSearchParams(t).toString(), i = r ? `${W}/${e}?${r}` : `${W}/${e}`, a;
|
|
506
506
|
try {
|
|
507
507
|
a = await fetch(i, { signal: n?.signal });
|
|
508
508
|
} catch (e) {
|
|
509
|
-
throw
|
|
509
|
+
throw G(e);
|
|
510
510
|
}
|
|
511
|
-
if (!a.ok) throw new
|
|
511
|
+
if (!a.ok) throw new H(a.status, `资源获取失败: ${a.statusText}`);
|
|
512
512
|
try {
|
|
513
513
|
return n?.asText ? await a.text() : await a.blob();
|
|
514
514
|
} catch {
|
|
515
|
-
throw new
|
|
515
|
+
throw new H(-3, "文件读取失败");
|
|
516
516
|
}
|
|
517
517
|
}
|
|
518
|
-
async function
|
|
518
|
+
async function ze(e, t, n) {
|
|
519
519
|
let r;
|
|
520
520
|
try {
|
|
521
|
-
r = await fetch(`${
|
|
521
|
+
r = await fetch(`${W}/${e}`, {
|
|
522
522
|
method: "POST",
|
|
523
523
|
headers: {
|
|
524
524
|
"Content-Type": "application/json",
|
|
@@ -528,92 +528,92 @@ async function Be(e, t, n) {
|
|
|
528
528
|
signal: n?.signal
|
|
529
529
|
});
|
|
530
530
|
} catch (e) {
|
|
531
|
-
throw
|
|
531
|
+
throw G(e);
|
|
532
532
|
}
|
|
533
|
-
if (!r.ok) throw new
|
|
534
|
-
if (!r.body) throw new
|
|
533
|
+
if (!r.ok) throw new H(r.status, `流式请求失败: ${r.statusText}`);
|
|
534
|
+
if (!r.body) throw new H(-1, "无法获取响应流");
|
|
535
535
|
return r.body;
|
|
536
536
|
}
|
|
537
|
-
async function
|
|
538
|
-
let r = new URLSearchParams(t).toString(), i = r ? `${
|
|
537
|
+
async function Be(e, t, n) {
|
|
538
|
+
let r = new URLSearchParams(t).toString(), i = r ? `${W}/${e}?${r}` : `${W}/${e}`, a;
|
|
539
539
|
try {
|
|
540
540
|
a = await fetch(i, {
|
|
541
541
|
headers: { Accept: "text/event-stream" },
|
|
542
542
|
signal: n?.signal
|
|
543
543
|
});
|
|
544
544
|
} catch (e) {
|
|
545
|
-
throw
|
|
545
|
+
throw G(e);
|
|
546
546
|
}
|
|
547
|
-
if (!a.ok) throw new
|
|
548
|
-
if (!a.body) throw new
|
|
547
|
+
if (!a.ok) throw new H(a.status, `流式订阅失败: ${a.statusText}`);
|
|
548
|
+
if (!a.body) throw new H(-1, "无法获取响应流");
|
|
549
549
|
return a.body;
|
|
550
550
|
}
|
|
551
551
|
//#endregion
|
|
552
552
|
//#region src/api/bootstrap.ts
|
|
553
|
-
async function
|
|
554
|
-
return
|
|
553
|
+
async function Ve() {
|
|
554
|
+
return K("GetAgentUiBootstrap", {});
|
|
555
555
|
}
|
|
556
556
|
//#endregion
|
|
557
557
|
//#region src/api/model.ts
|
|
558
|
-
async function
|
|
559
|
-
return
|
|
558
|
+
async function He(e) {
|
|
559
|
+
return K("ListAgentModels", { AgentId: e });
|
|
560
560
|
}
|
|
561
561
|
//#endregion
|
|
562
562
|
//#region src/hooks/useBootstrap.ts
|
|
563
|
-
function
|
|
563
|
+
function Ue(e) {
|
|
564
564
|
if (!Array.isArray(e)) return ["responses", "chat_completions"];
|
|
565
565
|
let t = e.filter((e) => e === "responses" || e === "chat_completions");
|
|
566
566
|
return t.length > 0 ? t : ["responses", "chat_completions"];
|
|
567
567
|
}
|
|
568
|
-
async function
|
|
568
|
+
async function We(e) {
|
|
569
569
|
try {
|
|
570
|
-
let t = await
|
|
571
|
-
Array.isArray(n) &&
|
|
570
|
+
let t = await He(e), n = t?.Models;
|
|
571
|
+
Array.isArray(n) && F.getState().upsertModels(n);
|
|
572
572
|
let r = t;
|
|
573
|
-
r?.Current && !
|
|
573
|
+
r?.Current && !F.getState().selectedModel && F.getState().setSelectedModel(String(r.Current)), r?.Source && F.getState().setModelSource(String(r.Source));
|
|
574
574
|
} catch (e) {
|
|
575
575
|
console.error("Failed to fetch models:", e);
|
|
576
576
|
} finally {
|
|
577
|
-
|
|
577
|
+
F.getState().setModelCatalogLoaded(!0);
|
|
578
578
|
}
|
|
579
579
|
}
|
|
580
|
-
function
|
|
581
|
-
|
|
580
|
+
function Ge(n) {
|
|
581
|
+
A(() => {
|
|
582
582
|
(async () => {
|
|
583
583
|
try {
|
|
584
|
-
let r = await
|
|
585
|
-
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) {
|
|
586
586
|
let e = String(a.Name);
|
|
587
|
-
|
|
587
|
+
P.getState().setAgentName(e), document.title = e;
|
|
588
588
|
}
|
|
589
589
|
let s = String(a?.Framework || "").trim().toLowerCase();
|
|
590
|
-
|
|
590
|
+
P.getState().setAgentFramework(s);
|
|
591
591
|
let c = e(r);
|
|
592
|
-
|
|
592
|
+
P.getState().setCapabilities(c), P.getState().setApiFormats(Ue(c.HostedChat.ApiFormats)), P.getState().setAccessMode(String(i?.AccessMode || "Owner"));
|
|
593
593
|
let l = c.WorkspaceFiles && i?.WorkspaceFiles ? i.WorkspaceFiles : null;
|
|
594
|
-
|
|
594
|
+
P.getState().setWorkspaceFiles(l), l || _.getState().setWorkspacePanelOpen(!1), t(c) && n.fetchSessions(o, Ce(o));
|
|
595
595
|
let u = i?.Model;
|
|
596
|
-
u?.id && (
|
|
596
|
+
u?.id && (F.getState().setSelectedModel(u.id), F.getState().upsertModels([u]), F.getState().setModelSource(u.source || "")), We(o);
|
|
597
597
|
} catch (t) {
|
|
598
|
-
console.error("Failed to fetch bootstrap:", t),
|
|
598
|
+
console.error("Failed to fetch bootstrap:", t), P.getState().setCapabilities(e({ Data: {
|
|
599
599
|
Agent: { Framework: "" },
|
|
600
600
|
ApiFormats: ["responses", "chat_completions"],
|
|
601
601
|
Capabilities: {}
|
|
602
|
-
} })), n.fetchSessions("default-agent",
|
|
602
|
+
} })), n.fetchSessions("default-agent", Ce("default-agent")), We("default-agent");
|
|
603
603
|
}
|
|
604
604
|
})();
|
|
605
605
|
}, []);
|
|
606
606
|
}
|
|
607
607
|
//#endregion
|
|
608
608
|
//#region src/stores/message.ts
|
|
609
|
-
var
|
|
609
|
+
var q = N()((e) => ({
|
|
610
610
|
messages: [],
|
|
611
611
|
setMessages: (t) => e({ messages: t }),
|
|
612
612
|
patchMessages: (t) => e((e) => ({ messages: t(e.messages) }))
|
|
613
613
|
}));
|
|
614
614
|
//#endregion
|
|
615
615
|
//#region src/utils/responses-stream.js
|
|
616
|
-
function
|
|
616
|
+
function Ke() {
|
|
617
617
|
return {
|
|
618
618
|
toolNames: /* @__PURE__ */ new Map(),
|
|
619
619
|
toolArguments: /* @__PURE__ */ new Map(),
|
|
@@ -621,55 +621,55 @@ function qe() {
|
|
|
621
621
|
currentResponseId: ""
|
|
622
622
|
};
|
|
623
623
|
}
|
|
624
|
-
function
|
|
624
|
+
function qe(e) {
|
|
625
625
|
return typeof e == "string" ? e : Array.isArray(e) ? e.map((e) => typeof e == "string" ? e : e && typeof e == "object" && typeof e.text == "string" ? e.text : "").join("") : e && typeof e == "object" && typeof e.text == "string" ? e.text : "";
|
|
626
626
|
}
|
|
627
|
-
function
|
|
627
|
+
function J(e) {
|
|
628
628
|
return e == null ? "" : typeof e == "string" ? e : typeof e == "object" ? JSON.stringify(e, null, 2) : String(e);
|
|
629
629
|
}
|
|
630
|
-
function
|
|
630
|
+
function Y(...e) {
|
|
631
631
|
for (let t of e) {
|
|
632
|
-
let e =
|
|
632
|
+
let e = qe(t);
|
|
633
633
|
if (e) return e;
|
|
634
634
|
}
|
|
635
635
|
return "";
|
|
636
636
|
}
|
|
637
|
-
function
|
|
637
|
+
function Je(e, t) {
|
|
638
638
|
return String(e?.id || e?.item_id || e?.call_id || t?.item_id || t?.call_id || t?.output_index || "");
|
|
639
639
|
}
|
|
640
|
-
function
|
|
640
|
+
function Ye(e, t, n, r, i) {
|
|
641
641
|
t && (e.toolNames.set(t, r), e.toolArguments.set(t, i));
|
|
642
642
|
let a = String(n?.call_id || "");
|
|
643
643
|
a && (e.callIds.set(a, t || r), e.toolNames.set(a, r), e.toolArguments.set(a, i));
|
|
644
644
|
}
|
|
645
|
-
function
|
|
645
|
+
function Xe(e, t, n, r = "tool") {
|
|
646
646
|
let i = String(n?.call_id || "");
|
|
647
647
|
return String(n?.name || n?.tool_name || (t ? e.toolNames.get(t) : "") || (i ? e.toolNames.get(i) : "") || r);
|
|
648
648
|
}
|
|
649
|
-
function
|
|
649
|
+
function Ze(e) {
|
|
650
650
|
if (!e || typeof e != "object") return "";
|
|
651
|
-
let t =
|
|
652
|
-
return
|
|
651
|
+
let t = qe(e.content);
|
|
652
|
+
return Y(e.output_text, e.text, e.summary_text, e.summary, e.delta, t);
|
|
653
653
|
}
|
|
654
|
-
function
|
|
655
|
-
let t = e?.response && typeof e.response == "object" ? e.response : e, n =
|
|
654
|
+
function Qe(e) {
|
|
655
|
+
let t = e?.response && typeof e.response == "object" ? e.response : e, n = Y(t?.output_text, t?.text);
|
|
656
656
|
if (n) return n;
|
|
657
657
|
let r = Array.isArray(t?.output) ? t.output : [];
|
|
658
658
|
for (let e of r) {
|
|
659
|
-
let t =
|
|
659
|
+
let t = Ze(e);
|
|
660
660
|
if (t) return t;
|
|
661
661
|
}
|
|
662
662
|
return "";
|
|
663
663
|
}
|
|
664
|
-
function
|
|
664
|
+
function $e(e) {
|
|
665
665
|
let t = e?.response && typeof e.response == "object" ? e.response : e;
|
|
666
666
|
return Array.isArray(t?.output) ? t.output : [];
|
|
667
667
|
}
|
|
668
|
-
function
|
|
669
|
-
let r = e?.item || e?.output_item || e || {}, i = String(r.type || "").trim(), a =
|
|
668
|
+
function et({ data: e, state: t, status: n }) {
|
|
669
|
+
let r = e?.item || e?.output_item || e || {}, i = String(r.type || "").trim(), a = Je(r, e);
|
|
670
670
|
if (i === "function_call") {
|
|
671
|
-
let e =
|
|
672
|
-
return
|
|
671
|
+
let e = Xe(t, a, r), i = J(r.arguments ?? r.args ?? r.input);
|
|
672
|
+
return Ye(t, a, r, e, i), [{
|
|
673
673
|
type: "tool_upsert",
|
|
674
674
|
name: e,
|
|
675
675
|
args: i,
|
|
@@ -678,27 +678,27 @@ function tt({ data: e, state: t, status: n }) {
|
|
|
678
678
|
}
|
|
679
679
|
if (i === "function_call_output") return [{
|
|
680
680
|
type: "tool_result",
|
|
681
|
-
name:
|
|
682
|
-
output:
|
|
681
|
+
name: Xe(t, a, r),
|
|
682
|
+
output: J(r.output ?? r.result ?? r.content)
|
|
683
683
|
}];
|
|
684
684
|
if (i === "mcp_approval_request") return [{
|
|
685
685
|
type: "tool_upsert",
|
|
686
686
|
name: String(r.name || "approval"),
|
|
687
|
-
args:
|
|
687
|
+
args: J(r.arguments ?? r.args),
|
|
688
688
|
status: "paused",
|
|
689
689
|
approvalRequestId: String(r.id || r.approval_request_id || ""),
|
|
690
690
|
previousResponseId: String(e?.response_id || t.currentResponseId || ""),
|
|
691
691
|
serverLabel: String(r.server_label || "")
|
|
692
692
|
}];
|
|
693
693
|
if (i === "reasoning" || i === "reasoning_summary" || i === "reasoning_summary_text") {
|
|
694
|
-
let e =
|
|
694
|
+
let e = Ze(r);
|
|
695
695
|
return e ? [{
|
|
696
696
|
type: "reasoning_delta",
|
|
697
697
|
text: e
|
|
698
698
|
}] : [];
|
|
699
699
|
}
|
|
700
700
|
if (i === "message") {
|
|
701
|
-
let e =
|
|
701
|
+
let e = Ze(r);
|
|
702
702
|
return e ? [{
|
|
703
703
|
type: n === "completed" ? "text_final" : "text_delta",
|
|
704
704
|
text: e
|
|
@@ -706,31 +706,31 @@ function tt({ data: e, state: t, status: n }) {
|
|
|
706
706
|
}
|
|
707
707
|
return [];
|
|
708
708
|
}
|
|
709
|
-
function
|
|
709
|
+
function tt({ eventName: e, data: t, state: n }) {
|
|
710
710
|
let r = String(t?.type || e || "").trim(), i = String(t?.id || t?.response?.id || t?.response_id || "");
|
|
711
711
|
if (i.startsWith("resp_") && (n.currentResponseId = i), r === "response.tool_call") return [{
|
|
712
712
|
type: "tool_upsert",
|
|
713
713
|
name: String(t?.name || t?.tool_name || "tool"),
|
|
714
|
-
args:
|
|
714
|
+
args: J(t?.args ?? t?.arguments),
|
|
715
715
|
status: "running"
|
|
716
716
|
}];
|
|
717
717
|
if (r === "response.tool_result" || r === "response.ksadk.tool_result") return [{
|
|
718
718
|
type: "tool_result",
|
|
719
719
|
name: String(t?.name || t?.tool_name || "tool"),
|
|
720
|
-
output:
|
|
720
|
+
output: J(t?.output ?? t?.result)
|
|
721
721
|
}];
|
|
722
|
-
if (r === "response.output_item.added") return
|
|
722
|
+
if (r === "response.output_item.added") return et({
|
|
723
723
|
data: t,
|
|
724
724
|
state: n,
|
|
725
725
|
status: "running"
|
|
726
726
|
});
|
|
727
|
-
if (r === "response.output_item.done") return
|
|
727
|
+
if (r === "response.output_item.done") return et({
|
|
728
728
|
data: t,
|
|
729
729
|
state: n,
|
|
730
730
|
status: "completed"
|
|
731
731
|
});
|
|
732
732
|
if (r === "response.function_call_arguments.delta") {
|
|
733
|
-
let e = String(t?.item_id || t?.call_id || ""), r =
|
|
733
|
+
let e = String(t?.item_id || t?.call_id || ""), r = Xe(n, e, t), i = `${n.toolArguments.get(e) || ""}${String(t?.delta || "")}`;
|
|
734
734
|
return n.toolArguments.set(e, i), [{
|
|
735
735
|
type: "tool_upsert",
|
|
736
736
|
name: r,
|
|
@@ -739,7 +739,7 @@ function nt({ eventName: e, data: t, state: n }) {
|
|
|
739
739
|
}];
|
|
740
740
|
}
|
|
741
741
|
if (r === "response.function_call_arguments.done") {
|
|
742
|
-
let e = String(t?.item_id || t?.call_id || ""), r =
|
|
742
|
+
let e = String(t?.item_id || t?.call_id || ""), r = Xe(n, e, t), i = J(t?.arguments ?? n.toolArguments.get(e));
|
|
743
743
|
return n.toolArguments.set(e, i), [{
|
|
744
744
|
type: "tool_upsert",
|
|
745
745
|
name: r,
|
|
@@ -748,28 +748,28 @@ function nt({ eventName: e, data: t, state: n }) {
|
|
|
748
748
|
}];
|
|
749
749
|
}
|
|
750
750
|
if (r === "response.reasoning.delta" || r === "response.reasoning_text.delta" || r === "response.reasoning_summary.delta" || r === "response.reasoning_summary_text.delta") {
|
|
751
|
-
let e =
|
|
751
|
+
let e = Y(t?.delta, t?.text);
|
|
752
752
|
return e ? [{
|
|
753
753
|
type: "reasoning_delta",
|
|
754
754
|
text: e
|
|
755
755
|
}] : [];
|
|
756
756
|
}
|
|
757
757
|
if (r === "response.output_text.delta") {
|
|
758
|
-
let e =
|
|
758
|
+
let e = Y(t?.delta, t?.text);
|
|
759
759
|
return e ? [{
|
|
760
760
|
type: "text_delta",
|
|
761
761
|
text: e
|
|
762
762
|
}] : [];
|
|
763
763
|
}
|
|
764
764
|
if (r === "response.output_text.done") {
|
|
765
|
-
let e =
|
|
765
|
+
let e = Y(t?.text, t?.delta);
|
|
766
766
|
return e ? [{
|
|
767
767
|
type: "text_final",
|
|
768
768
|
text: e
|
|
769
769
|
}] : [];
|
|
770
770
|
}
|
|
771
771
|
if (r === "response.content_part.delta") {
|
|
772
|
-
let e = String(t?.part?.type || t?.delta?.type || t?.content_type || ""), n =
|
|
772
|
+
let e = String(t?.part?.type || t?.delta?.type || t?.content_type || ""), n = Y(t?.delta?.text, t?.delta, t?.text);
|
|
773
773
|
return n ? e.includes("reasoning") ? [{
|
|
774
774
|
type: "reasoning_delta",
|
|
775
775
|
text: n
|
|
@@ -779,7 +779,7 @@ function nt({ eventName: e, data: t, state: n }) {
|
|
|
779
779
|
}] : [];
|
|
780
780
|
}
|
|
781
781
|
if (r === "response.completed") {
|
|
782
|
-
let e =
|
|
782
|
+
let e = Qe(t), r = $e(t).flatMap((e) => et({
|
|
783
783
|
data: {
|
|
784
784
|
...t,
|
|
785
785
|
item: e
|
|
@@ -830,13 +830,13 @@ function nt({ eventName: e, data: t, state: n }) {
|
|
|
830
830
|
}
|
|
831
831
|
//#endregion
|
|
832
832
|
//#region src/core/stream/responses-protocol.ts
|
|
833
|
-
var
|
|
833
|
+
var nt = class {
|
|
834
834
|
id = "responses";
|
|
835
835
|
createState() {
|
|
836
|
-
return
|
|
836
|
+
return Ke();
|
|
837
837
|
}
|
|
838
838
|
parse(e, t) {
|
|
839
|
-
return
|
|
839
|
+
return tt({
|
|
840
840
|
eventName: e.eventName,
|
|
841
841
|
data: e.data,
|
|
842
842
|
state: t
|
|
@@ -858,23 +858,23 @@ var rt = class {
|
|
|
858
858
|
};
|
|
859
859
|
//#endregion
|
|
860
860
|
//#region src/utils/stream-parsing.ts
|
|
861
|
-
function
|
|
861
|
+
function rt(e) {
|
|
862
862
|
return typeof e == "string" ? e : Array.isArray(e) ? e.map((e) => typeof e == "string" ? e : e && typeof e == "object" && "text" in e && typeof e.text == "string" ? e.text : "").join("") : "";
|
|
863
863
|
}
|
|
864
|
-
function
|
|
864
|
+
function it(e) {
|
|
865
865
|
return e && typeof e == "object" ? e : {};
|
|
866
866
|
}
|
|
867
|
-
function
|
|
868
|
-
let t =
|
|
867
|
+
function at(e) {
|
|
868
|
+
let t = it(e).choices, n = it(Array.isArray(t) ? t[0] : null), r = it(n.delta), i = it(n.message);
|
|
869
869
|
return {
|
|
870
|
-
content:
|
|
871
|
-
reasoning:
|
|
872
|
-
finalText:
|
|
870
|
+
content: rt(r.content),
|
|
871
|
+
reasoning: rt(r.reasoning_content),
|
|
872
|
+
finalText: rt(i.content)
|
|
873
873
|
};
|
|
874
874
|
}
|
|
875
875
|
//#endregion
|
|
876
876
|
//#region src/core/stream/chat-completions-protocol.ts
|
|
877
|
-
var
|
|
877
|
+
var ot = class {
|
|
878
878
|
id = "chat_completions";
|
|
879
879
|
createState() {
|
|
880
880
|
return {};
|
|
@@ -882,7 +882,7 @@ var st = class {
|
|
|
882
882
|
parse(e) {
|
|
883
883
|
let t = e.data;
|
|
884
884
|
if (typeof t != "object" || !t) return [];
|
|
885
|
-
let n =
|
|
885
|
+
let n = at(t), r = [];
|
|
886
886
|
return n.reasoning && r.push({
|
|
887
887
|
type: "reasoning_delta",
|
|
888
888
|
text: n.reasoning
|
|
@@ -894,14 +894,14 @@ var st = class {
|
|
|
894
894
|
text: n.finalText
|
|
895
895
|
}), r;
|
|
896
896
|
}
|
|
897
|
-
},
|
|
898
|
-
|
|
899
|
-
function
|
|
900
|
-
return
|
|
897
|
+
}, st = /* @__PURE__ */ new Map();
|
|
898
|
+
st.set("responses", new nt()), st.set("chat_completions", new ot());
|
|
899
|
+
function ct(e) {
|
|
900
|
+
return st.get(e) || st.get("responses");
|
|
901
901
|
}
|
|
902
902
|
//#endregion
|
|
903
903
|
//#region src/utils/stream-control.js
|
|
904
|
-
function
|
|
904
|
+
function lt(e = []) {
|
|
905
905
|
return e.some((e) => {
|
|
906
906
|
if (e?.type !== "terminal") return !1;
|
|
907
907
|
let t = String(e.status || "").toLowerCase();
|
|
@@ -910,7 +910,7 @@ function ut(e = []) {
|
|
|
910
910
|
}
|
|
911
911
|
//#endregion
|
|
912
912
|
//#region src/core/transport/sse-parser.ts
|
|
913
|
-
function
|
|
913
|
+
function ut(e) {
|
|
914
914
|
let t = [], n = e.trim();
|
|
915
915
|
if (!n) return t;
|
|
916
916
|
let r = n.split("\n");
|
|
@@ -940,7 +940,7 @@ function dt(e) {
|
|
|
940
940
|
}
|
|
941
941
|
return t;
|
|
942
942
|
}
|
|
943
|
-
function
|
|
943
|
+
function dt(e) {
|
|
944
944
|
let t = e.split("\n\n");
|
|
945
945
|
return {
|
|
946
946
|
chunks: t,
|
|
@@ -949,21 +949,21 @@ function ft(e) {
|
|
|
949
949
|
}
|
|
950
950
|
//#endregion
|
|
951
951
|
//#region src/utils/error.ts
|
|
952
|
-
function
|
|
952
|
+
function ft(e) {
|
|
953
953
|
return e instanceof Error ? e.message : String(e);
|
|
954
954
|
}
|
|
955
|
-
var
|
|
956
|
-
function
|
|
955
|
+
var pt = 1280;
|
|
956
|
+
function mt(e) {
|
|
957
957
|
let { apiFormats: t } = e;
|
|
958
958
|
return t.includes("responses") ? "responses" : t.includes("chat_completions") ? "chat_completions" : "responses";
|
|
959
959
|
}
|
|
960
|
-
function
|
|
961
|
-
let r = Math.min(
|
|
960
|
+
function ht(e, t, n) {
|
|
961
|
+
let r = Math.min(pt, Math.max(420, t - n - 360));
|
|
962
962
|
return Math.min(Math.max(e, 420), r);
|
|
963
963
|
}
|
|
964
964
|
//#endregion
|
|
965
965
|
//#region src/core/run/engine.ts
|
|
966
|
-
var
|
|
966
|
+
var gt = new Set([
|
|
967
967
|
"completed",
|
|
968
968
|
"failed",
|
|
969
969
|
"error",
|
|
@@ -971,12 +971,12 @@ var _t = new Set([
|
|
|
971
971
|
"canceled",
|
|
972
972
|
"aborted"
|
|
973
973
|
]);
|
|
974
|
-
function
|
|
974
|
+
function _t(e) {
|
|
975
975
|
if (e.EventType !== "run_status") return null;
|
|
976
976
|
let t = String(e.Content?.status || "").trim().toLowerCase();
|
|
977
|
-
return
|
|
977
|
+
return gt.has(t) ? t : null;
|
|
978
978
|
}
|
|
979
|
-
function
|
|
979
|
+
function vt(e, t) {
|
|
980
980
|
let n = String(t?.type || e || "").trim();
|
|
981
981
|
if (n === "response.created") return {
|
|
982
982
|
phase: "运行已创建",
|
|
@@ -1022,11 +1022,11 @@ function yt(e, t) {
|
|
|
1022
1022
|
status: "failed"
|
|
1023
1023
|
} : null;
|
|
1024
1024
|
}
|
|
1025
|
-
function
|
|
1025
|
+
function yt() {
|
|
1026
1026
|
let e = globalThis.crypto;
|
|
1027
1027
|
return e && typeof e.randomUUID == "function" ? `run_${e.randomUUID()}` : `run_${Date.now()}_${Math.random().toString(16).slice(2)}`;
|
|
1028
1028
|
}
|
|
1029
|
-
var
|
|
1029
|
+
var bt = {
|
|
1030
1030
|
idle: [
|
|
1031
1031
|
"creating-session",
|
|
1032
1032
|
"uploading-files",
|
|
@@ -1064,7 +1064,7 @@ var xt = {
|
|
|
1064
1064
|
],
|
|
1065
1065
|
error: ["connecting", "idle"],
|
|
1066
1066
|
cancelled: ["idle"]
|
|
1067
|
-
},
|
|
1067
|
+
}, xt = class {
|
|
1068
1068
|
_stage = "idle";
|
|
1069
1069
|
listeners = /* @__PURE__ */ new Set();
|
|
1070
1070
|
abortController = null;
|
|
@@ -1098,7 +1098,7 @@ var xt = {
|
|
|
1098
1098
|
for (let e of this.listeners) e(t);
|
|
1099
1099
|
}
|
|
1100
1100
|
setStage(e) {
|
|
1101
|
-
let t =
|
|
1101
|
+
let t = bt[this._stage];
|
|
1102
1102
|
t && !t.includes(e) && console.warn(`[RunEngine] Invalid transition: ${this._stage} → ${e}`), this._stage = e, this.emit({
|
|
1103
1103
|
type: "stage_changed",
|
|
1104
1104
|
stage: e
|
|
@@ -1125,11 +1125,11 @@ var xt = {
|
|
|
1125
1125
|
status: "connecting",
|
|
1126
1126
|
countEvent: !1
|
|
1127
1127
|
});
|
|
1128
|
-
let a = t ? "responses" :
|
|
1128
|
+
let a = t ? "responses" : mt({
|
|
1129
1129
|
agentFramework: this.config.agentFramework,
|
|
1130
1130
|
apiFormats: this.config.apiFormats
|
|
1131
|
-
}), o =
|
|
1132
|
-
|
|
1131
|
+
}), o = ct(a), s = o.createState(), c = yt();
|
|
1132
|
+
I.getState().setCurrentRunId(c);
|
|
1133
1133
|
let l = this.buildRequestBody(n, a, t, e, i, c), u = await this.api.runAgent(l, { signal: this.abortController?.signal });
|
|
1134
1134
|
this.setStage("streaming"), this.emit({
|
|
1135
1135
|
type: "activity",
|
|
@@ -1156,7 +1156,7 @@ var xt = {
|
|
|
1156
1156
|
f.terminalStatus = (await this.consumeStream(e, o, s, t)).terminalStatus;
|
|
1157
1157
|
}
|
|
1158
1158
|
if (f.terminalStatus === "cancelled") {
|
|
1159
|
-
this.setStage("stopping"),
|
|
1159
|
+
this.setStage("stopping"), I.getState().stopActivity("运行时已取消本次执行。"), this.emit({
|
|
1160
1160
|
type: "activity",
|
|
1161
1161
|
phase: "运行已取消",
|
|
1162
1162
|
status: "stopped",
|
|
@@ -1190,18 +1190,18 @@ var xt = {
|
|
|
1190
1190
|
error: e instanceof Error ? e : Error(String(e))
|
|
1191
1191
|
})));
|
|
1192
1192
|
} finally {
|
|
1193
|
-
|
|
1193
|
+
I.getState().setStreaming(!1), this.setStage("idle"), this.activeCompactionId = null, this.activeSessionId = null, e.onSettled?.(n);
|
|
1194
1194
|
}
|
|
1195
1195
|
})(), !0;
|
|
1196
1196
|
}
|
|
1197
1197
|
stop() {
|
|
1198
|
-
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({
|
|
1199
1199
|
type: "system_message",
|
|
1200
1200
|
content: "已停止接收本次输出;如果运行时不支持取消,后台执行可能仍会继续。"
|
|
1201
1201
|
}));
|
|
1202
1202
|
}
|
|
1203
1203
|
disconnect() {
|
|
1204
|
-
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);
|
|
1205
1205
|
}
|
|
1206
1206
|
async cancelRemote(e) {
|
|
1207
1207
|
try {
|
|
@@ -1212,7 +1212,7 @@ var xt = {
|
|
|
1212
1212
|
this.stop();
|
|
1213
1213
|
}
|
|
1214
1214
|
resumeRun(e) {
|
|
1215
|
-
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({
|
|
1216
1216
|
type: "activity",
|
|
1217
1217
|
phase: "恢复运行事件订阅",
|
|
1218
1218
|
status: "connecting",
|
|
@@ -1236,11 +1236,11 @@ var xt = {
|
|
|
1236
1236
|
let { value: e, done: n } = await r.read();
|
|
1237
1237
|
if (n) break;
|
|
1238
1238
|
a += i.decode(e, { stream: !0 });
|
|
1239
|
-
let { chunks: o, remainder: s } =
|
|
1239
|
+
let { chunks: o, remainder: s } = dt(a);
|
|
1240
1240
|
a = s;
|
|
1241
1241
|
for (let e of o) {
|
|
1242
1242
|
if (!e.trim()) continue;
|
|
1243
|
-
let n =
|
|
1243
|
+
let n = ut(e);
|
|
1244
1244
|
for (let e of n) e.eventName !== "__done__" && (this.emit({
|
|
1245
1245
|
type: "activity",
|
|
1246
1246
|
phase: "收到恢复事件",
|
|
@@ -1248,7 +1248,7 @@ var xt = {
|
|
|
1248
1248
|
}), this.emit({
|
|
1249
1249
|
type: "stream_event",
|
|
1250
1250
|
event: e.data
|
|
1251
|
-
}), t =
|
|
1251
|
+
}), t = _t(e.data) || t);
|
|
1252
1252
|
}
|
|
1253
1253
|
}
|
|
1254
1254
|
this.setStage("completing"), t === "cancelled" || t === "canceled" || t === "aborted" ? this.emit({
|
|
@@ -1270,15 +1270,15 @@ var xt = {
|
|
|
1270
1270
|
} catch (e) {
|
|
1271
1271
|
e instanceof DOMException && e.name === "AbortError" || console.error("Failed to subscribe to run events:", e);
|
|
1272
1272
|
} finally {
|
|
1273
|
-
|
|
1273
|
+
I.getState().setStreaming(!1), I.getState().setCurrentRunId(""), this.setStage("idle"), this.activeSessionId = null;
|
|
1274
1274
|
}
|
|
1275
1275
|
})();
|
|
1276
1276
|
}
|
|
1277
1277
|
resumeCheckpoint(e) {
|
|
1278
1278
|
if (this._stage !== "idle") return !1;
|
|
1279
1279
|
this.abortController = new AbortController(), this.activeSessionId = e.sessionId;
|
|
1280
|
-
let t =
|
|
1281
|
-
return
|
|
1280
|
+
let t = yt();
|
|
1281
|
+
return I.getState().setCurrentRunId(t), (async () => {
|
|
1282
1282
|
try {
|
|
1283
1283
|
if (this.setStage("connecting"), this.emit({
|
|
1284
1284
|
type: "activity",
|
|
@@ -1310,7 +1310,7 @@ var xt = {
|
|
|
1310
1310
|
checkpointId: e.checkpointId,
|
|
1311
1311
|
resumeAttemptId: e.resumeAttemptId,
|
|
1312
1312
|
invocationId: t
|
|
1313
|
-
}, { signal: this.abortController?.signal }), r =
|
|
1313
|
+
}, { signal: this.abortController?.signal }), r = ct("responses"), i = r.createState();
|
|
1314
1314
|
this.setStage("streaming"), this.emit({
|
|
1315
1315
|
type: "activity",
|
|
1316
1316
|
source: "restore",
|
|
@@ -1321,7 +1321,7 @@ var xt = {
|
|
|
1321
1321
|
let a = `msg-${Date.now()}`, o = await this.consumeStream(n, r, i, a);
|
|
1322
1322
|
if (o.terminalStatus && o.terminalStatus !== "completed") {
|
|
1323
1323
|
if (o.terminalStatus === "cancelled") {
|
|
1324
|
-
this.setStage("stopping"),
|
|
1324
|
+
this.setStage("stopping"), I.getState().stopActivity("运行时已取消本次恢复。"), this.emit({
|
|
1325
1325
|
type: "activity",
|
|
1326
1326
|
source: "restore",
|
|
1327
1327
|
phase: "恢复已取消",
|
|
@@ -1352,7 +1352,7 @@ var xt = {
|
|
|
1352
1352
|
error: e instanceof Error ? e : Error(String(e))
|
|
1353
1353
|
}));
|
|
1354
1354
|
} finally {
|
|
1355
|
-
|
|
1355
|
+
I.getState().setStreaming(!1), I.getState().setCurrentRunId(""), this.setStage("idle"), this.activeSessionId = null, e.onSettled?.(e.sessionId);
|
|
1356
1356
|
}
|
|
1357
1357
|
})(), !0;
|
|
1358
1358
|
}
|
|
@@ -1386,7 +1386,7 @@ var xt = {
|
|
|
1386
1386
|
} catch (e) {
|
|
1387
1387
|
this.emit({
|
|
1388
1388
|
type: "system_message",
|
|
1389
|
-
content: `【系统提示】图片 ${t.name} 读取失败,原因: ${
|
|
1389
|
+
content: `【系统提示】图片 ${t.name} 读取失败,原因: ${ft(e)}`
|
|
1390
1390
|
});
|
|
1391
1391
|
}
|
|
1392
1392
|
continue;
|
|
@@ -1403,7 +1403,7 @@ var xt = {
|
|
|
1403
1403
|
} catch (e) {
|
|
1404
1404
|
this.emit({
|
|
1405
1405
|
type: "system_message",
|
|
1406
|
-
content: `【系统提示】文件 ${t.name} 上传失败,原因: ${
|
|
1406
|
+
content: `【系统提示】文件 ${t.name} 上传失败,原因: ${ft(e)}`
|
|
1407
1407
|
});
|
|
1408
1408
|
}
|
|
1409
1409
|
}
|
|
@@ -1423,7 +1423,7 @@ var xt = {
|
|
|
1423
1423
|
ApiFormat: t,
|
|
1424
1424
|
Model: this.config.selectedModel || void 0,
|
|
1425
1425
|
ModelMetadata: this.config.selectedModelMetadata || void 0,
|
|
1426
|
-
ModelOptions:
|
|
1426
|
+
ModelOptions: Ne(Me(this.config.thinkingMode))
|
|
1427
1427
|
};
|
|
1428
1428
|
if (n) o.ResponsesInput = r.responsesInput, o.PreviousResponseId = r.previousResponseId;
|
|
1429
1429
|
else {
|
|
@@ -1451,32 +1451,32 @@ var xt = {
|
|
|
1451
1451
|
type: "assistant_message_created",
|
|
1452
1452
|
messageId: r
|
|
1453
1453
|
})), o += a.decode(e, { stream: !0 });
|
|
1454
|
-
let { chunks: u, remainder: d } =
|
|
1454
|
+
let { chunks: u, remainder: d } = dt(o);
|
|
1455
1455
|
o = d;
|
|
1456
1456
|
for (let e of u) {
|
|
1457
1457
|
if (!e.trim()) continue;
|
|
1458
1458
|
if (this.isCompactionChunk(e)) {
|
|
1459
|
-
let t =
|
|
1459
|
+
let t = ut(e);
|
|
1460
1460
|
for (let e of t) e.eventName.startsWith("response.compaction") && this.upsertCompactionMessage({
|
|
1461
1461
|
...e.data,
|
|
1462
1462
|
phase: e.eventName.split(".").pop()
|
|
1463
1463
|
});
|
|
1464
1464
|
continue;
|
|
1465
1465
|
}
|
|
1466
|
-
let a =
|
|
1466
|
+
let a = ut(e), o = !1, c;
|
|
1467
1467
|
for (let e of a) {
|
|
1468
1468
|
if (e.eventName === "__done__") {
|
|
1469
1469
|
o = !0;
|
|
1470
1470
|
continue;
|
|
1471
1471
|
}
|
|
1472
|
-
let i =
|
|
1472
|
+
let i = vt(e.eventName, e.data);
|
|
1473
1473
|
i && this.emit({
|
|
1474
1474
|
type: "activity",
|
|
1475
1475
|
...i
|
|
1476
1476
|
});
|
|
1477
1477
|
let a = t.parse(e, n);
|
|
1478
1478
|
for (let e of a) this.dispatchAction(e, r);
|
|
1479
|
-
if (
|
|
1479
|
+
if (lt(a)) {
|
|
1480
1480
|
o = !0;
|
|
1481
1481
|
let e = a.find((e) => e.type === "terminal");
|
|
1482
1482
|
c = e && "status" in e ? String(e.status || "") : void 0;
|
|
@@ -1587,98 +1587,98 @@ var xt = {
|
|
|
1587
1587
|
phase: "failed"
|
|
1588
1588
|
}), null);
|
|
1589
1589
|
}
|
|
1590
|
-
},
|
|
1591
|
-
function
|
|
1590
|
+
}, St = [], Ct = [];
|
|
1591
|
+
function X(e) {
|
|
1592
1592
|
return typeof e == "string" ? e.trim() : "";
|
|
1593
1593
|
}
|
|
1594
|
-
function
|
|
1594
|
+
function wt(e) {
|
|
1595
1595
|
let t = typeof e == "number" ? e : Number(e);
|
|
1596
1596
|
return Number.isFinite(t) ? t : void 0;
|
|
1597
1597
|
}
|
|
1598
|
-
function
|
|
1598
|
+
function Tt(e) {
|
|
1599
1599
|
return typeof e == "string" || typeof e == "number" ? e : void 0;
|
|
1600
1600
|
}
|
|
1601
|
-
function
|
|
1601
|
+
function Z(e) {
|
|
1602
1602
|
return e && typeof e == "object" && !Array.isArray(e) ? e : void 0;
|
|
1603
1603
|
}
|
|
1604
|
-
function
|
|
1604
|
+
function Et(e) {
|
|
1605
1605
|
return e !== null;
|
|
1606
1606
|
}
|
|
1607
|
-
function
|
|
1607
|
+
function Dt(e) {
|
|
1608
1608
|
return e !== null;
|
|
1609
1609
|
}
|
|
1610
|
-
function
|
|
1610
|
+
function Ot(e) {
|
|
1611
1611
|
return [...e].sort((e, t) => {
|
|
1612
1612
|
let n = t.seqId ?? -1, r = e.seqId ?? -1;
|
|
1613
1613
|
return n === r ? (Date.parse(String(t.timestamp || "")) || 0) - (Date.parse(String(e.timestamp || "")) || 0) : n - r;
|
|
1614
1614
|
});
|
|
1615
1615
|
}
|
|
1616
|
-
function
|
|
1616
|
+
function kt(e) {
|
|
1617
1617
|
return [...e].sort((e, t) => {
|
|
1618
1618
|
let n = t.seqId ?? -1, r = e.seqId ?? -1;
|
|
1619
1619
|
return n === r ? (Date.parse(String(t.timestamp || "")) || 0) - (Date.parse(String(e.timestamp || "")) || 0) : n - r;
|
|
1620
1620
|
});
|
|
1621
1621
|
}
|
|
1622
|
-
function
|
|
1623
|
-
return
|
|
1622
|
+
function At(e) {
|
|
1623
|
+
return Ot(e)[0]?.runId || "";
|
|
1624
1624
|
}
|
|
1625
|
-
function
|
|
1626
|
-
let t =
|
|
1625
|
+
function jt(e) {
|
|
1626
|
+
let t = At(e);
|
|
1627
1627
|
return t ? e.filter((e) => e.runId === t) : [];
|
|
1628
1628
|
}
|
|
1629
|
-
function
|
|
1630
|
-
let t =
|
|
1629
|
+
function Mt(e) {
|
|
1630
|
+
let t = Z(e);
|
|
1631
1631
|
if (!t) return null;
|
|
1632
|
-
let n =
|
|
1632
|
+
let n = Z(t.Metadata ?? t.metadata), r = Z(t.Content ?? t.content), i = X(t.CheckpointId ?? t.checkpointId ?? t.checkpoint_id ?? n?.checkpoint_id ?? n?.checkpointId ?? r?.checkpoint_id ?? r?.checkpointId), a = X(t.RunId ?? t.runId ?? t.run_id ?? n?.run_id ?? n?.runId ?? r?.run_id ?? r?.runId);
|
|
1633
1633
|
return !i || !a ? null : {
|
|
1634
1634
|
checkpointId: i,
|
|
1635
1635
|
runId: a,
|
|
1636
|
-
sessionId:
|
|
1637
|
-
invocationId:
|
|
1638
|
-
seqId:
|
|
1639
|
-
timestamp:
|
|
1640
|
-
framework:
|
|
1641
|
-
frameworkRef:
|
|
1642
|
-
phase:
|
|
1643
|
-
stage:
|
|
1644
|
-
summary:
|
|
1645
|
-
nextAction:
|
|
1646
|
-
status:
|
|
1636
|
+
sessionId: X(t.SessionId ?? t.sessionId ?? t.session_id) || void 0,
|
|
1637
|
+
invocationId: X(t.InvocationId ?? t.invocationId ?? t.invocation_id) || void 0,
|
|
1638
|
+
seqId: wt(t.SeqId ?? t.seqId ?? t.seq_id),
|
|
1639
|
+
timestamp: Tt(t.Timestamp ?? t.timestamp ?? t.CreatedAt ?? t.createdAt),
|
|
1640
|
+
framework: X(t.Framework ?? t.framework ?? n?.framework ?? r?.framework) || void 0,
|
|
1641
|
+
frameworkRef: Z(t.FrameworkRef ?? t.frameworkRef ?? t.framework_ref ?? n?.framework_ref ?? n?.frameworkRef),
|
|
1642
|
+
phase: X(t.Phase ?? t.phase ?? n?.phase ?? r?.phase) || void 0,
|
|
1643
|
+
stage: X(t.Stage ?? t.stage ?? n?.stage ?? n?.title) || void 0,
|
|
1644
|
+
summary: X(t.Summary ?? t.summary ?? n?.summary ?? n?.description) || void 0,
|
|
1645
|
+
nextAction: X(t.NextAction ?? t.nextAction ?? t.next_action ?? n?.nextAction ?? n?.next_action) || void 0,
|
|
1646
|
+
status: X(t.Status ?? t.status ?? n?.status ?? r?.status) || void 0,
|
|
1647
1647
|
metadata: n
|
|
1648
1648
|
};
|
|
1649
1649
|
}
|
|
1650
|
-
function
|
|
1651
|
-
let t =
|
|
1650
|
+
function Nt(e) {
|
|
1651
|
+
let t = Z(e);
|
|
1652
1652
|
if (!t) return null;
|
|
1653
|
-
let n =
|
|
1653
|
+
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);
|
|
1654
1654
|
return !n || !r || !i ? null : {
|
|
1655
1655
|
receiptId: n,
|
|
1656
1656
|
idempotencyKey: r,
|
|
1657
1657
|
toolName: i,
|
|
1658
|
-
toolCallId:
|
|
1659
|
-
runId:
|
|
1660
|
-
checkpointId:
|
|
1661
|
-
sessionId:
|
|
1662
|
-
invocationId:
|
|
1663
|
-
seqId:
|
|
1664
|
-
timestamp:
|
|
1665
|
-
status:
|
|
1658
|
+
toolCallId: X(t.ToolCallId ?? t.toolCallId ?? t.tool_call_id) || void 0,
|
|
1659
|
+
runId: X(t.RunId ?? t.runId ?? t.run_id) || void 0,
|
|
1660
|
+
checkpointId: X(t.CheckpointId ?? t.checkpointId ?? t.checkpoint_id) || void 0,
|
|
1661
|
+
sessionId: X(t.SessionId ?? t.sessionId ?? t.session_id) || void 0,
|
|
1662
|
+
invocationId: X(t.InvocationId ?? t.invocationId ?? t.invocation_id) || void 0,
|
|
1663
|
+
seqId: wt(t.SeqId ?? t.seqId ?? t.seq_id),
|
|
1664
|
+
timestamp: Tt(t.Timestamp ?? t.timestamp ?? t.CreatedAt ?? t.createdAt),
|
|
1665
|
+
status: X(t.Status ?? t.status) || void 0,
|
|
1666
1666
|
replayed: !!(t.Replayed ?? t.replayed),
|
|
1667
|
-
metadata:
|
|
1667
|
+
metadata: Z(t.Metadata ?? t.metadata)
|
|
1668
1668
|
};
|
|
1669
1669
|
}
|
|
1670
|
-
var
|
|
1670
|
+
var Q = N()((e, t) => ({
|
|
1671
1671
|
checkpointsBySessionId: {},
|
|
1672
1672
|
toolReceiptsBySessionId: {},
|
|
1673
1673
|
setSessionCheckpoints: (t, n) => e((e) => ({ checkpointsBySessionId: {
|
|
1674
1674
|
...e.checkpointsBySessionId,
|
|
1675
|
-
[t]:
|
|
1675
|
+
[t]: Ot(jt(n.map(Mt).filter(Et).map((e) => ({
|
|
1676
1676
|
...e,
|
|
1677
1677
|
sessionId: e.sessionId || t
|
|
1678
1678
|
}))))
|
|
1679
1679
|
} })),
|
|
1680
1680
|
upsertSessionCheckpoint: (t, n) => {
|
|
1681
|
-
let r =
|
|
1681
|
+
let r = Mt(n);
|
|
1682
1682
|
r && e((e) => {
|
|
1683
1683
|
let n = e.checkpointsBySessionId[t] || [];
|
|
1684
1684
|
r.sessionId = r.sessionId || t;
|
|
@@ -1687,27 +1687,27 @@ var Z = M()((e, t) => ({
|
|
|
1687
1687
|
...i.get(r.checkpointId),
|
|
1688
1688
|
...r
|
|
1689
1689
|
});
|
|
1690
|
-
let a =
|
|
1690
|
+
let a = jt([...i.values()]);
|
|
1691
1691
|
return { checkpointsBySessionId: {
|
|
1692
1692
|
...e.checkpointsBySessionId,
|
|
1693
|
-
[t]:
|
|
1693
|
+
[t]: Ot(a)
|
|
1694
1694
|
} };
|
|
1695
1695
|
});
|
|
1696
1696
|
},
|
|
1697
1697
|
getSessionCheckpoints: (e) => {
|
|
1698
1698
|
let n = String(e || "");
|
|
1699
|
-
return n && t().checkpointsBySessionId[n] ||
|
|
1699
|
+
return n && t().checkpointsBySessionId[n] || St;
|
|
1700
1700
|
},
|
|
1701
1701
|
setSessionToolReceipts: (t, n) => e((e) => ({ toolReceiptsBySessionId: {
|
|
1702
1702
|
...e.toolReceiptsBySessionId,
|
|
1703
|
-
[t]:
|
|
1703
|
+
[t]: kt(n.map(Nt).filter(Dt).map((e) => ({
|
|
1704
1704
|
...e,
|
|
1705
1705
|
sessionId: e.sessionId || t
|
|
1706
1706
|
})))
|
|
1707
1707
|
} })),
|
|
1708
1708
|
getSessionToolReceipts: (e) => {
|
|
1709
1709
|
let n = String(e || "");
|
|
1710
|
-
return n && t().toolReceiptsBySessionId[n] ||
|
|
1710
|
+
return n && t().toolReceiptsBySessionId[n] || Ct;
|
|
1711
1711
|
},
|
|
1712
1712
|
clearSessionCheckpoints: (t) => e((e) => {
|
|
1713
1713
|
let n = String(t || "");
|
|
@@ -1721,7 +1721,7 @@ var Z = M()((e, t) => ({
|
|
|
1721
1721
|
toolReceiptsBySessionId: i
|
|
1722
1722
|
};
|
|
1723
1723
|
})
|
|
1724
|
-
})),
|
|
1724
|
+
})), Pt = new Set([
|
|
1725
1725
|
"completed",
|
|
1726
1726
|
"failed",
|
|
1727
1727
|
"error",
|
|
@@ -1729,21 +1729,21 @@ var Z = M()((e, t) => ({
|
|
|
1729
1729
|
"canceled",
|
|
1730
1730
|
"aborted"
|
|
1731
1731
|
]);
|
|
1732
|
-
function
|
|
1732
|
+
function Ft(e) {
|
|
1733
1733
|
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("") : "";
|
|
1734
1734
|
}
|
|
1735
|
-
function
|
|
1735
|
+
function It(e) {
|
|
1736
1736
|
let t = String(e || "").trim();
|
|
1737
1737
|
return t ? `/agentengine/api/v1/AttachmentContent?FileUri=${encodeURIComponent(t)}` : "";
|
|
1738
1738
|
}
|
|
1739
|
-
function
|
|
1739
|
+
function Lt(e) {
|
|
1740
1740
|
return String(e || "").match(/^data:([^;,]+)/)?.[1] || "";
|
|
1741
1741
|
}
|
|
1742
|
-
function
|
|
1742
|
+
function Rt(e, t) {
|
|
1743
1743
|
let n = String(e || "").trim(), r = String(t || "").trim();
|
|
1744
1744
|
return !n || !r || n === r ? !0 : n.endsWith("/*") ? r.startsWith(n.slice(0, -1)) : r.endsWith("/*") ? n.startsWith(r.slice(0, -1)) : !1;
|
|
1745
1745
|
}
|
|
1746
|
-
function
|
|
1746
|
+
function zt(e) {
|
|
1747
1747
|
let t = e?.Content?.parts || [], n = [], r = /* @__PURE__ */ new Map(), i = (e) => {
|
|
1748
1748
|
let t = `${e.fileUri || e.url || e.name}|${e.type}`;
|
|
1749
1749
|
r.has(t) || r.set(t, e);
|
|
@@ -1773,7 +1773,7 @@ function Bt(e) {
|
|
|
1773
1773
|
let t = e.file_url.trim();
|
|
1774
1774
|
i({
|
|
1775
1775
|
name: e.filename || e.displayName || e.display_name || "attachment",
|
|
1776
|
-
url:
|
|
1776
|
+
url: It(t),
|
|
1777
1777
|
type: e.mime_type || e.mimeType || "application/octet-stream",
|
|
1778
1778
|
fileUri: t
|
|
1779
1779
|
});
|
|
@@ -1784,7 +1784,7 @@ function Bt(e) {
|
|
|
1784
1784
|
t && i({
|
|
1785
1785
|
name: e.filename || e.displayName || e.display_name || "uploaded_image",
|
|
1786
1786
|
url: t,
|
|
1787
|
-
type: e.mime_type || e.mimeType ||
|
|
1787
|
+
type: e.mime_type || e.mimeType || Lt(t) || "image/*"
|
|
1788
1788
|
});
|
|
1789
1789
|
continue;
|
|
1790
1790
|
}
|
|
@@ -1792,7 +1792,7 @@ function Bt(e) {
|
|
|
1792
1792
|
let t = String(e.fileData.fileUri || "").trim();
|
|
1793
1793
|
i({
|
|
1794
1794
|
name: e.fileData.displayName || "attachment",
|
|
1795
|
-
url:
|
|
1795
|
+
url: It(t),
|
|
1796
1796
|
type: e.fileData.mimeType || "application/octet-stream",
|
|
1797
1797
|
fileUri: t
|
|
1798
1798
|
});
|
|
@@ -1802,11 +1802,11 @@ function Bt(e) {
|
|
|
1802
1802
|
for (let e of a) {
|
|
1803
1803
|
let t = String(e.file_uri || "").trim(), n = {
|
|
1804
1804
|
name: e.display_name || "attachment",
|
|
1805
|
-
url:
|
|
1805
|
+
url: It(t),
|
|
1806
1806
|
type: e.mime_type || "application/octet-stream",
|
|
1807
1807
|
fileUri: t
|
|
1808
1808
|
};
|
|
1809
|
-
!n.url && !n.fileUri && Array.from(r.values()).some((e) => e.name === n.name &&
|
|
1809
|
+
!n.url && !n.fileUri && Array.from(r.values()).some((e) => e.name === n.name && Rt(e.type, n.type) && (e.url || e.fileUri)) || i(n);
|
|
1810
1810
|
}
|
|
1811
1811
|
let o = Array.from(r.values());
|
|
1812
1812
|
return {
|
|
@@ -1814,10 +1814,10 @@ function Bt(e) {
|
|
|
1814
1814
|
attachments: o.length > 0 ? o : void 0
|
|
1815
1815
|
};
|
|
1816
1816
|
}
|
|
1817
|
-
function
|
|
1817
|
+
function Bt(e) {
|
|
1818
1818
|
let t = e?.Metadata?.responses_output;
|
|
1819
1819
|
if (!Array.isArray(t)) return {};
|
|
1820
|
-
let n =
|
|
1820
|
+
let n = Ke(), r = tt({
|
|
1821
1821
|
eventName: "response.completed",
|
|
1822
1822
|
data: { response: {
|
|
1823
1823
|
id: String(e.Metadata?.response_id || ""),
|
|
@@ -1861,22 +1861,22 @@ function Vt(e) {
|
|
|
1861
1861
|
...Object.keys(a).length > 0 ? { tools: a } : {}
|
|
1862
1862
|
};
|
|
1863
1863
|
}
|
|
1864
|
-
function
|
|
1864
|
+
function Vt(e, t, n) {
|
|
1865
1865
|
return t === "running" ? e === "prompt_too_long" ? "检测到上下文过长,正在自动压缩历史后重试" : "正在自动压缩上下文" : n ? e === "prompt_too_long" ? "上下文过长,系统已自动压缩历史并重试" : "系统已自动压缩较早的对话上下文" : t === "failed" ? "自动压缩上下文未完成" : e === "prompt_too_long" ? "已完成上下文压缩,并继续当前回复" : "已完成上下文压缩";
|
|
1866
1866
|
}
|
|
1867
|
-
function
|
|
1867
|
+
function Ht(e, t) {
|
|
1868
1868
|
return [
|
|
1869
1869
|
e,
|
|
1870
1870
|
t.content || "",
|
|
1871
1871
|
t.reasoning || ""
|
|
1872
1872
|
].join("\0");
|
|
1873
1873
|
}
|
|
1874
|
-
function
|
|
1874
|
+
function Ut(e) {
|
|
1875
1875
|
return e?.Metadata?.responses_mirror === !0 || String(e?.Metadata?.responses_mirror || "").trim().toLowerCase() === "true";
|
|
1876
1876
|
}
|
|
1877
|
-
function
|
|
1877
|
+
function Wt(e) {
|
|
1878
1878
|
if (e?.EventType !== "user_message") return "";
|
|
1879
|
-
let t =
|
|
1879
|
+
let t = zt(e), n = (t.attachments || []).map((e) => [
|
|
1880
1880
|
e.name || "",
|
|
1881
1881
|
e.fileUri || "",
|
|
1882
1882
|
e.url || "",
|
|
@@ -1884,16 +1884,16 @@ function Gt(e) {
|
|
|
1884
1884
|
].join("")).sort().join("");
|
|
1885
1885
|
return [String(t.text || "").trim(), n].join("\0");
|
|
1886
1886
|
}
|
|
1887
|
-
function
|
|
1887
|
+
function Gt(e) {
|
|
1888
1888
|
return e?.EventType === "assistant_stream_snapshot";
|
|
1889
1889
|
}
|
|
1890
|
-
function
|
|
1890
|
+
function Kt(e) {
|
|
1891
1891
|
let t = Number(e?.SeqId || 0);
|
|
1892
1892
|
if (Number.isFinite(t) && t > 0) return t;
|
|
1893
1893
|
let n = Number(e?.Timestamp || 0);
|
|
1894
1894
|
return Number.isFinite(n) ? n : 0;
|
|
1895
1895
|
}
|
|
1896
|
-
function
|
|
1896
|
+
function qt(e) {
|
|
1897
1897
|
if (typeof e == "string") return e;
|
|
1898
1898
|
if (e == null) return "";
|
|
1899
1899
|
try {
|
|
@@ -1902,15 +1902,15 @@ function Jt(e) {
|
|
|
1902
1902
|
return String(e);
|
|
1903
1903
|
}
|
|
1904
1904
|
}
|
|
1905
|
-
function
|
|
1905
|
+
function Jt(e) {
|
|
1906
1906
|
let t = String(e?.EventType || "");
|
|
1907
1907
|
if (t !== "tool_call" && t !== "tool_result") return null;
|
|
1908
|
-
let n = String(e.Metadata?.tool_name || e.Metadata?.name || e.Metadata?.function_name ||
|
|
1908
|
+
let n = String(e.Metadata?.tool_name || e.Metadata?.name || e.Metadata?.function_name || Ft(e.Content?.parts) || "tool").trim() || "tool", r = {
|
|
1909
1909
|
name: n,
|
|
1910
1910
|
args: "",
|
|
1911
1911
|
status: "running"
|
|
1912
1912
|
}, i = t === "tool_result" ? (() => {
|
|
1913
|
-
let t =
|
|
1913
|
+
let t = qt(e.Metadata?.tool_output ?? e.Metadata?.output ?? e.Metadata?.result ?? Ft(e.Content?.parts));
|
|
1914
1914
|
return {
|
|
1915
1915
|
...r,
|
|
1916
1916
|
output: t,
|
|
@@ -1918,7 +1918,7 @@ function Yt(e) {
|
|
|
1918
1918
|
};
|
|
1919
1919
|
})() : {
|
|
1920
1920
|
...r,
|
|
1921
|
-
args:
|
|
1921
|
+
args: qt(e.Metadata?.tool_args ?? e.Metadata?.arguments ?? e.Metadata?.args ?? {})
|
|
1922
1922
|
};
|
|
1923
1923
|
return {
|
|
1924
1924
|
id: e.EventId || String(Date.now() + Math.random()),
|
|
@@ -1929,7 +1929,7 @@ function Yt(e) {
|
|
|
1929
1929
|
tools: { [n]: i }
|
|
1930
1930
|
};
|
|
1931
1931
|
}
|
|
1932
|
-
function
|
|
1932
|
+
function Yt(e = {}, t = {}) {
|
|
1933
1933
|
let n = { ...e || {} };
|
|
1934
1934
|
for (let [e, r] of Object.entries(t || {})) n[e] = {
|
|
1935
1935
|
...n[e] || {},
|
|
@@ -1939,8 +1939,8 @@ function Xt(e = {}, t = {}) {
|
|
|
1939
1939
|
};
|
|
1940
1940
|
return n;
|
|
1941
1941
|
}
|
|
1942
|
-
function
|
|
1943
|
-
let n = String(t || "").trim().toLowerCase(), r = n === "completed" ? "completed" :
|
|
1942
|
+
function Xt(e = {}, t = "") {
|
|
1943
|
+
let n = String(t || "").trim().toLowerCase(), r = n === "completed" ? "completed" : Pt.has(n) ? "error" : "";
|
|
1944
1944
|
if (!r) return e;
|
|
1945
1945
|
let i = !1, a = {};
|
|
1946
1946
|
for (let [t, n] of Object.entries(e || {})) n?.status === "running" ? (i = !0, a[t] = {
|
|
@@ -1949,10 +1949,10 @@ function Zt(e = {}, t = "") {
|
|
|
1949
1949
|
}) : a[t] = n;
|
|
1950
1950
|
return i ? a : e;
|
|
1951
1951
|
}
|
|
1952
|
-
function
|
|
1952
|
+
function Zt(e, t) {
|
|
1953
1953
|
return {
|
|
1954
1954
|
...e,
|
|
1955
|
-
reasoning:
|
|
1955
|
+
reasoning: Qt(e.reasoning, t.reasoning),
|
|
1956
1956
|
tools: {
|
|
1957
1957
|
...e.tools || {},
|
|
1958
1958
|
...t.tools || {}
|
|
@@ -1965,11 +1965,11 @@ function Qt(e, t) {
|
|
|
1965
1965
|
id: t.responseId || t.reasoning || t.tools ? t.id : e.id
|
|
1966
1966
|
};
|
|
1967
1967
|
}
|
|
1968
|
-
function
|
|
1968
|
+
function Qt(e = "", t = "") {
|
|
1969
1969
|
let n = String(e || ""), r = String(t || "");
|
|
1970
1970
|
return n ? !r || n.endsWith(r) ? n : r.startsWith(n) ? r : `${n}${r}` : r;
|
|
1971
1971
|
}
|
|
1972
|
-
function
|
|
1972
|
+
function $t(e) {
|
|
1973
1973
|
return {
|
|
1974
1974
|
id: e.id,
|
|
1975
1975
|
role: "system",
|
|
@@ -1980,10 +1980,10 @@ function en(e) {
|
|
|
1980
1980
|
summary: e.summary,
|
|
1981
1981
|
historical: e.historical,
|
|
1982
1982
|
timestamp: e.timestamp,
|
|
1983
|
-
content:
|
|
1983
|
+
content: Vt(e.trigger, e.status, e.historical)
|
|
1984
1984
|
};
|
|
1985
1985
|
}
|
|
1986
|
-
function
|
|
1986
|
+
function en(e) {
|
|
1987
1987
|
let t = e?.EventType || "";
|
|
1988
1988
|
if (t === "run_status") return e.Content?.status === "failed" ? {
|
|
1989
1989
|
id: e.EventId || String(Date.now() + Math.random()),
|
|
@@ -2001,8 +2001,8 @@ function tn(e) {
|
|
|
2001
2001
|
timestamp: e.Timestamp || Date.now()
|
|
2002
2002
|
} : null;
|
|
2003
2003
|
if (t === "context_checkpoint") {
|
|
2004
|
-
let t =
|
|
2005
|
-
return
|
|
2004
|
+
let t = zt(e);
|
|
2005
|
+
return $t({
|
|
2006
2006
|
id: e.EventId || String(Date.now() + Math.random()),
|
|
2007
2007
|
timestamp: e.Timestamp || Date.now(),
|
|
2008
2008
|
status: "completed",
|
|
@@ -2013,7 +2013,7 @@ function tn(e) {
|
|
|
2013
2013
|
});
|
|
2014
2014
|
}
|
|
2015
2015
|
if (t === "reasoning") {
|
|
2016
|
-
let n =
|
|
2016
|
+
let n = zt(e).text || Ft(e.Metadata?.reasoning);
|
|
2017
2017
|
return n ? {
|
|
2018
2018
|
id: e.EventId || String(Date.now() + Math.random()),
|
|
2019
2019
|
role: "model",
|
|
@@ -2023,9 +2023,9 @@ function tn(e) {
|
|
|
2023
2023
|
eventType: t
|
|
2024
2024
|
} : null;
|
|
2025
2025
|
}
|
|
2026
|
-
if (t === "tool_call" || t === "tool_result") return
|
|
2026
|
+
if (t === "tool_call" || t === "tool_result") return Jt(e);
|
|
2027
2027
|
if (t !== "user_message" && t !== "assistant_message" && t !== "assistant_stream_snapshot") return null;
|
|
2028
|
-
let n =
|
|
2028
|
+
let n = zt(e), r = t === "assistant_message" ? Bt(e) : {};
|
|
2029
2029
|
if (!n.text && !n.attachments?.length && !r.reasoning && !r.tools) return null;
|
|
2030
2030
|
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();
|
|
2031
2031
|
return {
|
|
@@ -2042,7 +2042,7 @@ function tn(e) {
|
|
|
2042
2042
|
...r
|
|
2043
2043
|
};
|
|
2044
2044
|
}
|
|
2045
|
-
function
|
|
2045
|
+
function tn(e = []) {
|
|
2046
2046
|
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 = [];
|
|
2047
2047
|
for (let e of s) {
|
|
2048
2048
|
let t = String(e?.EventId || "").trim();
|
|
@@ -2054,30 +2054,30 @@ function nn(e = []) {
|
|
|
2054
2054
|
}
|
|
2055
2055
|
let l = /* @__PURE__ */ new Set(), u = /* @__PURE__ */ new Set(), d = /* @__PURE__ */ new Map();
|
|
2056
2056
|
for (let e of c) {
|
|
2057
|
-
if (e?.EventType !== "user_message" ||
|
|
2057
|
+
if (e?.EventType !== "user_message" || Ut(e)) {
|
|
2058
2058
|
if (e?.EventType === "assistant_message") {
|
|
2059
2059
|
let t = String(e.InvocationId || "").trim();
|
|
2060
2060
|
t && u.add(t);
|
|
2061
2061
|
}
|
|
2062
|
-
if (
|
|
2062
|
+
if (Gt(e)) {
|
|
2063
2063
|
let t = String(e.InvocationId || "").trim();
|
|
2064
2064
|
if (t) {
|
|
2065
2065
|
let n = d.get(t);
|
|
2066
|
-
(!n ||
|
|
2066
|
+
(!n || Kt(e) >= Kt(n)) && d.set(t, e);
|
|
2067
2067
|
}
|
|
2068
2068
|
}
|
|
2069
2069
|
continue;
|
|
2070
2070
|
}
|
|
2071
|
-
let t =
|
|
2071
|
+
let t = Wt(e);
|
|
2072
2072
|
t && l.add(t);
|
|
2073
2073
|
}
|
|
2074
2074
|
let f = c.filter((e) => {
|
|
2075
|
-
if (
|
|
2075
|
+
if (Gt(e)) {
|
|
2076
2076
|
let t = String(e.InvocationId || "").trim();
|
|
2077
2077
|
return t ? u.has(t) ? !1 : d.get(t) === e : !0;
|
|
2078
2078
|
}
|
|
2079
|
-
if (e?.EventType !== "user_message" || !
|
|
2080
|
-
let t =
|
|
2079
|
+
if (e?.EventType !== "user_message" || !Ut(e)) return !0;
|
|
2080
|
+
let t = Wt(e);
|
|
2081
2081
|
return !t || !l.has(t);
|
|
2082
2082
|
});
|
|
2083
2083
|
for (let e of f) {
|
|
@@ -2092,7 +2092,7 @@ function nn(e = []) {
|
|
|
2092
2092
|
let p = [], m = /* @__PURE__ */ new Map(), h = null, g = /* @__PURE__ */ new Map(), _ = (e) => {
|
|
2093
2093
|
let t = String(e?.responseId || "").trim(), n = t ? m.get(t) : void 0;
|
|
2094
2094
|
if (n !== void 0) {
|
|
2095
|
-
p[n] =
|
|
2095
|
+
p[n] = Zt(p[n], e);
|
|
2096
2096
|
return;
|
|
2097
2097
|
}
|
|
2098
2098
|
t && m.set(t, p.length), p.push(e);
|
|
@@ -2102,11 +2102,11 @@ function nn(e = []) {
|
|
|
2102
2102
|
let n = String(e || "").trim();
|
|
2103
2103
|
if (!n) return {};
|
|
2104
2104
|
let r = g.get(n);
|
|
2105
|
-
return r ? (g.delete(n), { tools:
|
|
2105
|
+
return r ? (g.delete(n), { tools: Xt(r.tools, t.get(n)) }) : {};
|
|
2106
2106
|
};
|
|
2107
2107
|
for (let e of f) {
|
|
2108
2108
|
if (e.EventType === "run_status") continue;
|
|
2109
|
-
let t =
|
|
2109
|
+
let t = en(e);
|
|
2110
2110
|
if (!t) continue;
|
|
2111
2111
|
if (t.eventType === "tool_call" || t.eventType === "tool_result") {
|
|
2112
2112
|
let n = String(e.InvocationId || "").trim();
|
|
@@ -2124,7 +2124,7 @@ function nn(e = []) {
|
|
|
2124
2124
|
invocationId: n
|
|
2125
2125
|
},
|
|
2126
2126
|
timestamp: Math.max(Number(r?.timestamp || 0), Number(t.timestamp || 0)),
|
|
2127
|
-
tools:
|
|
2127
|
+
tools: Yt(r?.tools, t.tools)
|
|
2128
2128
|
});
|
|
2129
2129
|
continue;
|
|
2130
2130
|
}
|
|
@@ -2142,7 +2142,7 @@ function nn(e = []) {
|
|
|
2142
2142
|
}
|
|
2143
2143
|
let n = t.eventType === "assistant_message" || t.eventType === "assistant_stream_snapshot";
|
|
2144
2144
|
if (n && h) {
|
|
2145
|
-
let n = String(e.InvocationId || "").trim(), r =
|
|
2145
|
+
let n = String(e.InvocationId || "").trim(), r = Ht(n, t);
|
|
2146
2146
|
if (t.eventType === "assistant_message" && n && a.has(r)) {
|
|
2147
2147
|
h = null;
|
|
2148
2148
|
continue;
|
|
@@ -2150,12 +2150,12 @@ function nn(e = []) {
|
|
|
2150
2150
|
t.eventType === "assistant_message" && n && a.add(r), _({
|
|
2151
2151
|
...t,
|
|
2152
2152
|
...y(n),
|
|
2153
|
-
reasoning:
|
|
2153
|
+
reasoning: Qt(h.reasoning, t.reasoning)
|
|
2154
2154
|
}), h = null;
|
|
2155
2155
|
continue;
|
|
2156
2156
|
}
|
|
2157
2157
|
if (v(), n) {
|
|
2158
|
-
let n = String(e.InvocationId || "").trim(), r =
|
|
2158
|
+
let n = String(e.InvocationId || "").trim(), r = Ht(n, t);
|
|
2159
2159
|
if (t.eventType === "assistant_message" && n && a.has(r)) continue;
|
|
2160
2160
|
t.eventType === "assistant_message" && n && a.add(r), _({
|
|
2161
2161
|
...t,
|
|
@@ -2168,7 +2168,7 @@ function nn(e = []) {
|
|
|
2168
2168
|
v();
|
|
2169
2169
|
for (let [e, n] of g.entries()) _({
|
|
2170
2170
|
...n,
|
|
2171
|
-
tools:
|
|
2171
|
+
tools: Xt(n.tools, t.get(e))
|
|
2172
2172
|
});
|
|
2173
2173
|
for (let [e, a] of t.entries()) {
|
|
2174
2174
|
if (a !== "in_progress" || r.has(e) || !i.has(e)) continue;
|
|
@@ -2184,7 +2184,7 @@ function nn(e = []) {
|
|
|
2184
2184
|
}
|
|
2185
2185
|
return p.map(({ invocationId: e, ...t }) => t);
|
|
2186
2186
|
}
|
|
2187
|
-
function
|
|
2187
|
+
function nn(e = [], t = []) {
|
|
2188
2188
|
let n = [], r = /* @__PURE__ */ new Set();
|
|
2189
2189
|
for (let i of [...Array.isArray(e) ? e : [], ...Array.isArray(t) ? t : []]) {
|
|
2190
2190
|
let e = String(i?.EventId || "").trim();
|
|
@@ -2199,18 +2199,18 @@ function rn(e = [], t = []) {
|
|
|
2199
2199
|
return Number.isFinite(n) && Number.isFinite(r) && n !== r ? n - r : Number(e?.Timestamp || 0) - Number(t?.Timestamp || 0);
|
|
2200
2200
|
});
|
|
2201
2201
|
}
|
|
2202
|
-
function
|
|
2202
|
+
function rn(e = []) {
|
|
2203
2203
|
return (Array.isArray(e) ? e : []).reduce((e, t) => {
|
|
2204
2204
|
let n = Number(t.SeqId || 0);
|
|
2205
2205
|
return Number.isFinite(n) ? Math.max(e, n) : e;
|
|
2206
2206
|
}, 0);
|
|
2207
2207
|
}
|
|
2208
|
-
function
|
|
2209
|
-
return e?.EventType === "run_status" ?
|
|
2208
|
+
function an(e) {
|
|
2209
|
+
return e?.EventType === "run_status" ? Pt.has(String(e.Content?.status || "").trim().toLowerCase()) : !1;
|
|
2210
2210
|
}
|
|
2211
2211
|
//#endregion
|
|
2212
2212
|
//#region src/core/run/dispatcher.ts
|
|
2213
|
-
var
|
|
2213
|
+
var $ = !1, on = new Set(["completed"]), sn = new Set([
|
|
2214
2214
|
"failed",
|
|
2215
2215
|
"error",
|
|
2216
2216
|
"cancelled",
|
|
@@ -2218,8 +2218,8 @@ var Q = !1, sn = new Set(["completed"]), cn = new Set([
|
|
|
2218
2218
|
"aborted",
|
|
2219
2219
|
"incomplete"
|
|
2220
2220
|
]);
|
|
2221
|
-
function
|
|
2222
|
-
|
|
2221
|
+
function cn(e) {
|
|
2222
|
+
$ || ($ = !0, q.getState().patchMessages((t) => [...t, {
|
|
2223
2223
|
id: e,
|
|
2224
2224
|
role: "model",
|
|
2225
2225
|
content: "",
|
|
@@ -2228,8 +2228,8 @@ function $(e) {
|
|
|
2228
2228
|
}]));
|
|
2229
2229
|
}
|
|
2230
2230
|
function ln(e) {
|
|
2231
|
-
let t = String(e || "").trim().toLowerCase(), n =
|
|
2232
|
-
n &&
|
|
2231
|
+
let t = String(e || "").trim().toLowerCase(), n = on.has(t) ? "completed" : sn.has(t) ? "error" : null;
|
|
2232
|
+
n && q.getState().patchMessages((e) => e.map((e) => {
|
|
2233
2233
|
if (!e.tools) return e;
|
|
2234
2234
|
let t = !1, r = Object.fromEntries(Object.entries(e.tools).map(([e, r]) => r.status === "running" ? (t = !0, [e, {
|
|
2235
2235
|
...r,
|
|
@@ -2242,14 +2242,14 @@ function ln(e) {
|
|
|
2242
2242
|
}));
|
|
2243
2243
|
}
|
|
2244
2244
|
function un(e) {
|
|
2245
|
-
if (e.sessionId &&
|
|
2246
|
-
e.type === "stage_changed" && (e.stage === "completing" || e.stage === "error" || e.stage === "cancelled") && (
|
|
2245
|
+
if (e.sessionId && R.getState().currentSessionId !== e.sessionId) {
|
|
2246
|
+
e.type === "stage_changed" && (e.stage === "completing" || e.stage === "error" || e.stage === "cancelled") && ($ = !1);
|
|
2247
2247
|
return;
|
|
2248
2248
|
}
|
|
2249
|
-
let t =
|
|
2249
|
+
let t = q.getState();
|
|
2250
2250
|
switch (e.type) {
|
|
2251
2251
|
case "activity":
|
|
2252
|
-
|
|
2252
|
+
I.getState().updateActivity({
|
|
2253
2253
|
sessionId: e.sessionId,
|
|
2254
2254
|
source: e.source,
|
|
2255
2255
|
status: e.status,
|
|
@@ -2267,28 +2267,28 @@ function un(e) {
|
|
|
2267
2267
|
}]);
|
|
2268
2268
|
break;
|
|
2269
2269
|
case "assistant_message_created":
|
|
2270
|
-
|
|
2270
|
+
cn(e.messageId);
|
|
2271
2271
|
break;
|
|
2272
2272
|
case "text_delta":
|
|
2273
|
-
|
|
2273
|
+
cn(e.messageId), t.patchMessages((t) => t.map((t) => t.id === e.messageId ? {
|
|
2274
2274
|
...t,
|
|
2275
2275
|
content: t.content + e.delta
|
|
2276
2276
|
} : t));
|
|
2277
2277
|
break;
|
|
2278
2278
|
case "text_final":
|
|
2279
|
-
|
|
2279
|
+
cn(e.messageId), t.patchMessages((t) => t.map((t) => t.id === e.messageId ? {
|
|
2280
2280
|
...t,
|
|
2281
2281
|
content: e.text
|
|
2282
2282
|
} : t));
|
|
2283
2283
|
break;
|
|
2284
2284
|
case "reasoning_delta":
|
|
2285
|
-
|
|
2285
|
+
cn(e.messageId), t.patchMessages((t) => t.map((t) => t.id === e.messageId ? {
|
|
2286
2286
|
...t,
|
|
2287
2287
|
reasoning: (t.reasoning || "") + e.delta
|
|
2288
2288
|
} : t));
|
|
2289
2289
|
break;
|
|
2290
2290
|
case "tool_upsert":
|
|
2291
|
-
|
|
2291
|
+
cn(e.messageId), t.patchMessages((t) => t.map((t) => t.id === e.messageId ? {
|
|
2292
2292
|
...t,
|
|
2293
2293
|
tools: {
|
|
2294
2294
|
...t.tools || {},
|
|
@@ -2307,7 +2307,7 @@ function un(e) {
|
|
|
2307
2307
|
} : t));
|
|
2308
2308
|
break;
|
|
2309
2309
|
case "tool_result":
|
|
2310
|
-
|
|
2310
|
+
cn(e.messageId), t.patchMessages((t) => t.map((t) => t.id === e.messageId ? {
|
|
2311
2311
|
...t,
|
|
2312
2312
|
tools: {
|
|
2313
2313
|
...t.tools || {},
|
|
@@ -2331,7 +2331,7 @@ function un(e) {
|
|
|
2331
2331
|
}]);
|
|
2332
2332
|
break;
|
|
2333
2333
|
case "compaction": {
|
|
2334
|
-
let n = `compaction-${Date.now()}`, r = e.phase === "start" ? "running" : e.phase === "failed" ? "failed" : "completed", i =
|
|
2334
|
+
let n = `compaction-${Date.now()}`, r = e.phase === "start" ? "running" : e.phase === "failed" ? "failed" : "completed", i = $t({
|
|
2335
2335
|
id: n,
|
|
2336
2336
|
timestamp: Date.now(),
|
|
2337
2337
|
status: r,
|
|
@@ -2345,16 +2345,16 @@ function un(e) {
|
|
|
2345
2345
|
break;
|
|
2346
2346
|
}
|
|
2347
2347
|
case "stage_changed":
|
|
2348
|
-
e.stage === "streaming" || e.stage === "connecting" ?
|
|
2348
|
+
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), $ = !1);
|
|
2349
2349
|
break;
|
|
2350
2350
|
case "stream_ended":
|
|
2351
|
-
|
|
2352
|
-
let t =
|
|
2351
|
+
I.getState().setSessionStreaming(e.sessionId, !1), globalThis.setTimeout(() => {
|
|
2352
|
+
let t = I.getState();
|
|
2353
2353
|
t.getSessionActivity(e.sessionId)?.status === "completed" && t.clearSessionActivity(e.sessionId);
|
|
2354
|
-
}, 2400),
|
|
2354
|
+
}, 2400), $ = !1;
|
|
2355
2355
|
break;
|
|
2356
2356
|
case "error":
|
|
2357
|
-
|
|
2357
|
+
I.getState().setSessionStreaming(e.sessionId, !1), I.getState().updateActivity({
|
|
2358
2358
|
sessionId: e.sessionId,
|
|
2359
2359
|
status: "failed",
|
|
2360
2360
|
phase: "连接断开或生成出错",
|
|
@@ -2364,25 +2364,25 @@ function un(e) {
|
|
|
2364
2364
|
role: "model",
|
|
2365
2365
|
content: "连接断开或生成出错。",
|
|
2366
2366
|
timestamp: Date.now()
|
|
2367
|
-
}]),
|
|
2367
|
+
}]), $ = !1;
|
|
2368
2368
|
break;
|
|
2369
2369
|
case "terminal":
|
|
2370
2370
|
ln(e.status);
|
|
2371
2371
|
break;
|
|
2372
2372
|
case "stream_event":
|
|
2373
|
-
if (e.event.EventType === "run_checkpoint" &&
|
|
2373
|
+
if (e.event.EventType === "run_checkpoint" && Q.getState().upsertSessionCheckpoint(e.sessionId || e.event.SessionId, e.event), e.event.EventType === "run_status") {
|
|
2374
2374
|
let t = String(e.event.Content?.status || "").trim().toLowerCase();
|
|
2375
|
-
t === "completed" ?
|
|
2375
|
+
t === "completed" ? I.getState().updateActivity({
|
|
2376
2376
|
sessionId: e.sessionId || e.event.SessionId,
|
|
2377
2377
|
status: "completed",
|
|
2378
2378
|
phase: "后台长任务已完成",
|
|
2379
2379
|
countEvent: !1
|
|
2380
|
-
}) : t === "cancelled" || t === "canceled" || t === "aborted" ?
|
|
2380
|
+
}) : t === "cancelled" || t === "canceled" || t === "aborted" ? I.getState().updateActivity({
|
|
2381
2381
|
sessionId: e.sessionId || e.event.SessionId,
|
|
2382
2382
|
status: "stopped",
|
|
2383
2383
|
phase: "后台长任务已取消",
|
|
2384
2384
|
countEvent: !1
|
|
2385
|
-
}) : (t === "failed" || t === "error") &&
|
|
2385
|
+
}) : (t === "failed" || t === "error") && I.getState().updateActivity({
|
|
2386
2386
|
sessionId: e.sessionId || e.event.SessionId,
|
|
2387
2387
|
status: "failed",
|
|
2388
2388
|
phase: "后台长任务失败",
|
|
@@ -2393,12 +2393,12 @@ function un(e) {
|
|
|
2393
2393
|
}
|
|
2394
2394
|
}
|
|
2395
2395
|
function dn() {
|
|
2396
|
-
|
|
2396
|
+
$ = !1;
|
|
2397
2397
|
}
|
|
2398
2398
|
//#endregion
|
|
2399
2399
|
//#region src/hooks/useRunAgent.ts
|
|
2400
2400
|
function fn(e) {
|
|
2401
|
-
let t =
|
|
2401
|
+
let t = j(/* @__PURE__ */ new Map()), n = j(() => {}), { agentId: r, apiFormats: i, agentFramework: a, selectedModel: o, selectedModelMetadata: s, thinkingMode: c, currentSessionIdRef: l, queuedDraftRef: u, onRunSettled: d, uiCapabilities: f } = e, p = k((e) => {
|
|
2402
2402
|
e.updateConfig({
|
|
2403
2403
|
agentId: r,
|
|
2404
2404
|
apiFormats: i,
|
|
@@ -2416,25 +2416,25 @@ function fn(e) {
|
|
|
2416
2416
|
s,
|
|
2417
2417
|
c,
|
|
2418
2418
|
f.RunLifecycle?.CheckpointResumePreview
|
|
2419
|
-
]), m =
|
|
2419
|
+
]), m = k((n) => {
|
|
2420
2420
|
let r = String(n || "new-session"), i = t.current.get(r);
|
|
2421
|
-
return i ? p(i) : (i = new
|
|
2421
|
+
return i ? p(i) : (i = new xt(e.api), p(i), i.subscribe(un), t.current.set(r, i)), i;
|
|
2422
2422
|
}, [e.api, p]);
|
|
2423
|
-
|
|
2423
|
+
A(() => {
|
|
2424
2424
|
for (let e of t.current.values()) p(e);
|
|
2425
2425
|
}, [p]);
|
|
2426
|
-
let h =
|
|
2426
|
+
let h = k((e) => {
|
|
2427
2427
|
u.current.push(e), _.getState().setQueuedDrafts((t) => [...t, e]);
|
|
2428
|
-
}, [u]), g =
|
|
2428
|
+
}, [u]), g = k((e) => {
|
|
2429
2429
|
let i = l.current, a = m(i);
|
|
2430
2430
|
if (a.stage !== "idle") return !1;
|
|
2431
|
-
dn(), _.getState().setMobileActionsOpen(!1),
|
|
2431
|
+
dn(), _.getState().setMobileActionsOpen(!1), I.getState().setSessionStreaming(i, !0);
|
|
2432
2432
|
let o = e.text.trim(), s = String(Date.now()), c = e.attachments.map((e) => ({
|
|
2433
2433
|
name: e.name,
|
|
2434
2434
|
url: URL.createObjectURL(e),
|
|
2435
2435
|
type: e.type || "application/octet-stream"
|
|
2436
2436
|
}));
|
|
2437
|
-
(o || c.length > 0) &&
|
|
2437
|
+
(o || c.length > 0) && q.getState().patchMessages((e) => [...e, {
|
|
2438
2438
|
id: s,
|
|
2439
2439
|
role: "user",
|
|
2440
2440
|
content: o,
|
|
@@ -2448,24 +2448,24 @@ function fn(e) {
|
|
|
2448
2448
|
previousResponseId: e.previousResponseId,
|
|
2449
2449
|
sessionId: i,
|
|
2450
2450
|
onSessionCreated: (e) => {
|
|
2451
|
-
|
|
2451
|
+
R.getState().upsertSessions([{
|
|
2452
2452
|
SessionId: e,
|
|
2453
2453
|
UpdatedAt: (/* @__PURE__ */ new Date()).toISOString()
|
|
2454
|
-
}]), l.current = e,
|
|
2454
|
+
}]), l.current = e, we(r, e), R.getState().setCurrentSessionId(e), i !== e && t.current.set(e, a);
|
|
2455
2455
|
},
|
|
2456
2456
|
onSessionUpsert: () => {},
|
|
2457
2457
|
onSettled: (e) => {
|
|
2458
2458
|
d?.(e), n.current();
|
|
2459
2459
|
}
|
|
2460
2460
|
});
|
|
2461
|
-
return u ||
|
|
2461
|
+
return u || I.getState().setSessionStreaming(i, !1), u;
|
|
2462
2462
|
}, [
|
|
2463
2463
|
r,
|
|
2464
2464
|
l,
|
|
2465
2465
|
m,
|
|
2466
2466
|
d
|
|
2467
2467
|
]);
|
|
2468
|
-
return
|
|
2468
|
+
return A(() => {
|
|
2469
2469
|
n.current = () => {
|
|
2470
2470
|
let e = u.current.shift();
|
|
2471
2471
|
if (!e) {
|
|
@@ -2477,14 +2477,14 @@ function fn(e) {
|
|
|
2477
2477
|
});
|
|
2478
2478
|
};
|
|
2479
2479
|
}, [u, g]), {
|
|
2480
|
-
submitDraft:
|
|
2480
|
+
submitDraft: k(async (e, t, n, r) => {
|
|
2481
2481
|
let i = {
|
|
2482
2482
|
text: e,
|
|
2483
2483
|
attachments: t,
|
|
2484
2484
|
responsesInput: n,
|
|
2485
2485
|
previousResponseId: r
|
|
2486
2486
|
};
|
|
2487
|
-
if (m(l.current).stage !== "idle" &&
|
|
2487
|
+
if (m(l.current).stage !== "idle" && I.getState().isSessionStreaming(l.current)) {
|
|
2488
2488
|
n === void 0 && h({
|
|
2489
2489
|
text: e,
|
|
2490
2490
|
attachments: t
|
|
@@ -2501,25 +2501,25 @@ function fn(e) {
|
|
|
2501
2501
|
m,
|
|
2502
2502
|
g
|
|
2503
2503
|
]),
|
|
2504
|
-
stopGeneration:
|
|
2504
|
+
stopGeneration: k(() => {
|
|
2505
2505
|
m(l.current).stop();
|
|
2506
2506
|
}, [l, m]),
|
|
2507
|
-
disconnectRun:
|
|
2507
|
+
disconnectRun: k(() => {
|
|
2508
2508
|
m(l.current).disconnect();
|
|
2509
2509
|
}, [l, m]),
|
|
2510
|
-
resumeCheckpoint:
|
|
2510
|
+
resumeCheckpoint: k((e) => {
|
|
2511
2511
|
let t = m(e.sessionId);
|
|
2512
2512
|
if (t.stage !== "idle") return !1;
|
|
2513
|
-
dn(), _.getState().setMobileActionsOpen(!1),
|
|
2513
|
+
dn(), _.getState().setMobileActionsOpen(!1), I.getState().setSessionStreaming(e.sessionId, !0);
|
|
2514
2514
|
let r = t.resumeCheckpoint({
|
|
2515
2515
|
...e,
|
|
2516
2516
|
onSettled: (e) => {
|
|
2517
2517
|
d?.(e), n.current();
|
|
2518
2518
|
}
|
|
2519
2519
|
});
|
|
2520
|
-
return r ||
|
|
2520
|
+
return r || I.getState().setSessionStreaming(e.sessionId, !1), r;
|
|
2521
2521
|
}, [m, d]),
|
|
2522
|
-
resetCompaction:
|
|
2522
|
+
resetCompaction: k(() => {
|
|
2523
2523
|
dn();
|
|
2524
2524
|
}, [])
|
|
2525
2525
|
};
|
|
@@ -2529,10 +2529,10 @@ function fn(e) {
|
|
|
2529
2529
|
function pn(e) {
|
|
2530
2530
|
let { agentId: t, currentSessionId: n, isStreaming: r, api: i, submitDraft: a } = e;
|
|
2531
2531
|
return {
|
|
2532
|
-
submitResponseFeedback:
|
|
2532
|
+
submitResponseFeedback: k(async (e) => {
|
|
2533
2533
|
if (!n) return;
|
|
2534
2534
|
let r = null;
|
|
2535
|
-
|
|
2535
|
+
q.getState().patchMessages((t) => {
|
|
2536
2536
|
let n = v(t, {
|
|
2537
2537
|
messageId: e.message.id,
|
|
2538
2538
|
rating: e.rating,
|
|
@@ -2548,12 +2548,12 @@ function pn(e) {
|
|
|
2548
2548
|
rating: e.rating,
|
|
2549
2549
|
comment: e.comment || ""
|
|
2550
2550
|
})))?.Feedback);
|
|
2551
|
-
r &&
|
|
2551
|
+
r && q.getState().patchMessages((t) => s(t, {
|
|
2552
2552
|
messageId: e.message.id,
|
|
2553
2553
|
feedback: r
|
|
2554
2554
|
}));
|
|
2555
2555
|
} catch (t) {
|
|
2556
|
-
console.error("Failed to submit response feedback:", t),
|
|
2556
|
+
console.error("Failed to submit response feedback:", t), q.getState().patchMessages((t) => C(t, {
|
|
2557
2557
|
messageId: e.message.id,
|
|
2558
2558
|
previousFeedback: r
|
|
2559
2559
|
}));
|
|
@@ -2563,10 +2563,10 @@ function pn(e) {
|
|
|
2563
2563
|
n,
|
|
2564
2564
|
i
|
|
2565
2565
|
]),
|
|
2566
|
-
deleteResponseFeedback:
|
|
2566
|
+
deleteResponseFeedback: k(async (e) => {
|
|
2567
2567
|
if (!n) return;
|
|
2568
2568
|
let r = e.feedback ? { ...e.feedback } : null;
|
|
2569
|
-
|
|
2569
|
+
q.getState().patchMessages((t) => d(t, { messageId: e.id }));
|
|
2570
2570
|
try {
|
|
2571
2571
|
await i.deleteResponseFeedback(h({
|
|
2572
2572
|
agentId: t,
|
|
@@ -2574,7 +2574,7 @@ function pn(e) {
|
|
|
2574
2574
|
message: e
|
|
2575
2575
|
}));
|
|
2576
2576
|
} catch (t) {
|
|
2577
|
-
console.error("Failed to delete response feedback:", t),
|
|
2577
|
+
console.error("Failed to delete response feedback:", t), q.getState().patchMessages((t) => C(t, {
|
|
2578
2578
|
messageId: e.id,
|
|
2579
2579
|
previousFeedback: r
|
|
2580
2580
|
}));
|
|
@@ -2584,14 +2584,14 @@ function pn(e) {
|
|
|
2584
2584
|
n,
|
|
2585
2585
|
i
|
|
2586
2586
|
]),
|
|
2587
|
-
respondToApproval:
|
|
2588
|
-
!e.approvalRequestId || r || (
|
|
2587
|
+
respondToApproval: k((e) => {
|
|
2588
|
+
!e.approvalRequestId || r || (q.getState().patchMessages((t) => t.map((t) => ({
|
|
2589
2589
|
...t,
|
|
2590
2590
|
tools: t.tools ? Object.fromEntries(Object.entries(t.tools).map(([t, n]) => [t, n.approvalRequestId === e.approvalRequestId ? {
|
|
2591
2591
|
...n,
|
|
2592
2592
|
approvalStatus: e.approve ? "approved" : "rejected"
|
|
2593
2593
|
} : n])) : t.tools
|
|
2594
|
-
}))),
|
|
2594
|
+
}))), q.getState().patchMessages((t) => [...t, {
|
|
2595
2595
|
id: String(Date.now() + Math.random()),
|
|
2596
2596
|
role: "system",
|
|
2597
2597
|
content: e.approve ? "已批准工具调用,正在继续运行。" : "已拒绝工具调用,正在通知运行时。",
|
|
@@ -2637,7 +2637,10 @@ function _n(e = [], t = {}) {
|
|
|
2637
2637
|
//#endregion
|
|
2638
2638
|
//#region src/hooks/useSessionLifecycle.ts
|
|
2639
2639
|
var vn = 9e4, yn = 30, bn = 50;
|
|
2640
|
-
function xn(e) {
|
|
2640
|
+
function xn(e, t) {
|
|
2641
|
+
return t.length ? e.length ? e.length >= t.length : !1 : !0;
|
|
2642
|
+
}
|
|
2643
|
+
function Sn(e) {
|
|
2641
2644
|
if (e.EventType !== "run_status") return null;
|
|
2642
2645
|
let t = String(e.Content?.status || "").trim().toLowerCase();
|
|
2643
2646
|
return t === "completed" ? {
|
|
@@ -2651,8 +2654,8 @@ function xn(e) {
|
|
|
2651
2654
|
phase: "后台长任务失败"
|
|
2652
2655
|
} : null;
|
|
2653
2656
|
}
|
|
2654
|
-
function
|
|
2655
|
-
let { agentId: t, api: n, isMobile: r, resetCompaction: i, uiCapabilities: a, disconnectRun: o } = e, s =
|
|
2657
|
+
function Cn(e) {
|
|
2658
|
+
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) => {
|
|
2656
2659
|
let i = r.filter((e) => c(e, !1, !1));
|
|
2657
2660
|
if (!i.length) return;
|
|
2658
2661
|
let a = await Promise.all(i.map(async (r) => {
|
|
@@ -2673,11 +2676,11 @@ function Sn(e) {
|
|
|
2673
2676
|
}));
|
|
2674
2677
|
if (s.current !== t) return;
|
|
2675
2678
|
let o = new Map(a.filter((e) => !!e).map((e) => [e.messageId, e.feedback]));
|
|
2676
|
-
o.size &&
|
|
2679
|
+
o.size && q.getState().patchMessages((e) => e.map((e) => o.has(e.id) ? {
|
|
2677
2680
|
...e,
|
|
2678
2681
|
feedback: o.get(e.id)
|
|
2679
2682
|
} : e));
|
|
2680
|
-
}, [n]), m =
|
|
2683
|
+
}, [n]), m = k(async (e) => {
|
|
2681
2684
|
u.current?.abort();
|
|
2682
2685
|
let t = new AbortController();
|
|
2683
2686
|
u.current = t;
|
|
@@ -2687,111 +2690,122 @@ function Sn(e) {
|
|
|
2687
2690
|
a();
|
|
2688
2691
|
}, vn);
|
|
2689
2692
|
try {
|
|
2690
|
-
let
|
|
2693
|
+
let o = (await n.subscribeRunEvents({
|
|
2691
2694
|
sessionId: e.sessionId,
|
|
2692
2695
|
invocationId: e.invocationId,
|
|
2693
2696
|
afterSeqId: e.afterSeqId
|
|
2694
|
-
}, { signal: t.signal })).getReader(),
|
|
2695
|
-
for (
|
|
2697
|
+
}, { signal: t.signal })).getReader(), c = new TextDecoder(), l = "", u = Array.isArray(e.initialEvents) ? e.initialEvents : [];
|
|
2698
|
+
for (I.getState().setCurrentRunId(e.invocationId), I.getState().updateActivity({
|
|
2696
2699
|
sessionId: e.sessionId,
|
|
2697
2700
|
status: "running",
|
|
2698
2701
|
phase: "后台长任务运行中",
|
|
2699
2702
|
detail: e.invocationId,
|
|
2700
2703
|
countEvent: !1
|
|
2701
2704
|
}); !i;) {
|
|
2702
|
-
let { value: t, done: n } = await
|
|
2705
|
+
let { value: t, done: n } = await o.read();
|
|
2703
2706
|
if (n) break;
|
|
2704
|
-
|
|
2705
|
-
let
|
|
2706
|
-
|
|
2707
|
-
for (let t of
|
|
2707
|
+
l += c.decode(t, { stream: !0 });
|
|
2708
|
+
let d = l.split("\n\n");
|
|
2709
|
+
l = d.pop() || "";
|
|
2710
|
+
for (let t of d) {
|
|
2708
2711
|
if (!t.trim()) continue;
|
|
2709
2712
|
let n = [];
|
|
2710
2713
|
for (let e of t.split("\n")) e.startsWith("data:") && n.push(e.substring(5).trim());
|
|
2711
|
-
let
|
|
2712
|
-
if (!
|
|
2713
|
-
i =
|
|
2714
|
+
let o = n.join("\n").trim();
|
|
2715
|
+
if (!o || o === "[DONE]") {
|
|
2716
|
+
i = o === "[DONE]", r ||= i;
|
|
2714
2717
|
continue;
|
|
2715
2718
|
}
|
|
2716
2719
|
try {
|
|
2717
|
-
let t = JSON.parse(
|
|
2718
|
-
|
|
2719
|
-
let n =
|
|
2720
|
-
n &&
|
|
2720
|
+
let t = JSON.parse(o);
|
|
2721
|
+
u = nn(u, [t]), i ||= an(t), r ||= i, t.EventType === "run_checkpoint" && Q.getState().upsertSessionCheckpoint(e.sessionId, t);
|
|
2722
|
+
let n = Sn(t);
|
|
2723
|
+
if (n && I.getState().updateActivity({
|
|
2721
2724
|
sessionId: e.sessionId,
|
|
2722
2725
|
status: n.status,
|
|
2723
2726
|
phase: n.phase,
|
|
2724
2727
|
detail: e.invocationId,
|
|
2725
2728
|
countEvent: !1
|
|
2726
|
-
})
|
|
2727
|
-
|
|
2728
|
-
|
|
2729
|
+
}), s.current !== e.sessionId) {
|
|
2730
|
+
a();
|
|
2731
|
+
break;
|
|
2732
|
+
}
|
|
2733
|
+
let c = tn(u);
|
|
2734
|
+
xn(c, q.getState().messages) && q.getState().setMessages(c);
|
|
2729
2735
|
} catch (e) {
|
|
2730
|
-
console.warn("Failed to parse run event data",
|
|
2736
|
+
console.warn("Failed to parse run event data", o, e);
|
|
2731
2737
|
}
|
|
2732
2738
|
}
|
|
2733
2739
|
}
|
|
2734
2740
|
} catch (e) {
|
|
2735
2741
|
e instanceof DOMException && e.name === "AbortError" || console.error("Failed to subscribe run events:", e);
|
|
2736
2742
|
} finally {
|
|
2737
|
-
globalThis.clearTimeout(o), u.current === t && (u.current = null),
|
|
2743
|
+
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);
|
|
2738
2744
|
}
|
|
2739
|
-
}, [n]), h =
|
|
2740
|
-
s.current = e
|
|
2745
|
+
}, [n]), h = k(async (e) => {
|
|
2746
|
+
s.current = e;
|
|
2747
|
+
let t = () => s.current === e;
|
|
2748
|
+
R.getState().setCurrentSessionId(e), i(), u.current?.abort(), r && _.getState().setMobileSidebarOpen(!1);
|
|
2741
2749
|
try {
|
|
2742
|
-
let
|
|
2743
|
-
if (
|
|
2744
|
-
Events:
|
|
2745
|
-
Total:
|
|
2746
|
-
Offset:
|
|
2747
|
-
Limit:
|
|
2750
|
+
let r = R.getState().eventCache[e], i;
|
|
2751
|
+
if (r) i = {
|
|
2752
|
+
Events: r.events,
|
|
2753
|
+
Total: r.total,
|
|
2754
|
+
Offset: r.offset,
|
|
2755
|
+
Limit: r.limit
|
|
2748
2756
|
};
|
|
2749
2757
|
else {
|
|
2750
|
-
let
|
|
2758
|
+
let r = await n.listSessionEvents(e, {
|
|
2751
2759
|
offset: 0,
|
|
2752
2760
|
limit: 1
|
|
2753
|
-
}),
|
|
2754
|
-
|
|
2755
|
-
offset:
|
|
2761
|
+
}), a = Number(r.Total ?? r.Events?.length ?? 0), o = Math.max(0, a - bn);
|
|
2762
|
+
if (i = a <= 1 ? r : await n.listSessionEvents(e, {
|
|
2763
|
+
offset: o,
|
|
2756
2764
|
limit: bn
|
|
2757
|
-
}),
|
|
2758
|
-
|
|
2759
|
-
|
|
2760
|
-
|
|
2761
|
-
|
|
2765
|
+
}), !t()) return;
|
|
2766
|
+
R.getState().setSessionEventCache(e, {
|
|
2767
|
+
events: i.Events || [],
|
|
2768
|
+
total: a,
|
|
2769
|
+
offset: Number(i.Offset ?? o),
|
|
2770
|
+
limit: Number(i.Limit ?? i.Events?.length ?? 0)
|
|
2762
2771
|
});
|
|
2763
2772
|
}
|
|
2764
|
-
|
|
2765
|
-
|
|
2773
|
+
if (!t()) return;
|
|
2774
|
+
let o = P.getState().capabilities || a;
|
|
2775
|
+
o.RunLifecycle.Enabled && o.RunLifecycle.Checkpoints ? (n.listSessionCheckpoints({
|
|
2766
2776
|
agentId: l.current,
|
|
2767
2777
|
sessionId: e
|
|
2768
2778
|
}).then((t) => {
|
|
2769
|
-
|
|
2779
|
+
Q.getState().setSessionCheckpoints(e, t.Checkpoints || []);
|
|
2770
2780
|
}).catch((t) => {
|
|
2771
|
-
console.warn("[SessionLifecycle] checkpoint load failed:", t),
|
|
2781
|
+
console.warn("[SessionLifecycle] checkpoint load failed:", t), Q.getState().setSessionCheckpoints(e, []);
|
|
2772
2782
|
}), n.listToolReceipts({
|
|
2773
2783
|
agentId: l.current,
|
|
2774
2784
|
sessionId: e
|
|
2775
2785
|
}).then((t) => {
|
|
2776
|
-
|
|
2786
|
+
Q.getState().setSessionToolReceipts(e, t.ToolReceipts || []);
|
|
2777
2787
|
}).catch((t) => {
|
|
2778
|
-
console.warn("[SessionLifecycle] tool receipt load failed:", t),
|
|
2779
|
-
})) :
|
|
2780
|
-
let
|
|
2781
|
-
if (
|
|
2782
|
-
let
|
|
2783
|
-
|
|
2784
|
-
|
|
2788
|
+
console.warn("[SessionLifecycle] tool receipt load failed:", t), Q.getState().setSessionToolReceipts(e, []);
|
|
2789
|
+
})) : Q.getState().clearSessionCheckpoints(e);
|
|
2790
|
+
let s = i;
|
|
2791
|
+
if (s?.Events) {
|
|
2792
|
+
let n = s.Events, r = tn(n);
|
|
2793
|
+
if (!t()) return;
|
|
2794
|
+
q.getState().setMessages(r), p(l.current, e, r);
|
|
2795
|
+
let i = _n(n, {
|
|
2785
2796
|
now: Date.now(),
|
|
2786
2797
|
staleAfterMs: 1800 * 1e3
|
|
2787
|
-
}), a =
|
|
2788
|
-
|
|
2798
|
+
}), a = rn(n);
|
|
2799
|
+
o.RunLifecycle.Enabled && o.RunLifecycle.Resume && i[0] && m({
|
|
2789
2800
|
sessionId: e,
|
|
2790
|
-
invocationId:
|
|
2801
|
+
invocationId: i[0],
|
|
2791
2802
|
afterSeqId: a,
|
|
2792
|
-
initialEvents:
|
|
2803
|
+
initialEvents: n
|
|
2793
2804
|
});
|
|
2794
|
-
} else
|
|
2805
|
+
} else {
|
|
2806
|
+
if (!t()) return;
|
|
2807
|
+
q.getState().setMessages([]), Q.getState().setSessionCheckpoints(e, []), Q.getState().setSessionToolReceipts(e, []);
|
|
2808
|
+
}
|
|
2795
2809
|
} catch (e) {
|
|
2796
2810
|
console.error("Failed to load session events:", e);
|
|
2797
2811
|
}
|
|
@@ -2802,33 +2816,33 @@ function Sn(e) {
|
|
|
2802
2816
|
i,
|
|
2803
2817
|
m,
|
|
2804
2818
|
a
|
|
2805
|
-
]), g =
|
|
2819
|
+
]), g = k(async (e = "default-agent", t = null) => {
|
|
2806
2820
|
try {
|
|
2807
|
-
let r =
|
|
2808
|
-
r.sessionsAgentId && r.sessionsAgentId !== e && r.resetSessionPagination(e),
|
|
2821
|
+
let r = R.getState();
|
|
2822
|
+
r.sessionsAgentId && r.sessionsAgentId !== e && r.resetSessionPagination(e), R.getState().setLoadingSessions(!0);
|
|
2809
2823
|
let i = await n.listSessions(e, {
|
|
2810
2824
|
page: 1,
|
|
2811
2825
|
pageSize: yn
|
|
2812
2826
|
});
|
|
2813
|
-
|
|
2827
|
+
R.getState().upsertSessions(i.Sessions || [], {
|
|
2814
2828
|
agentId: e,
|
|
2815
2829
|
total: Number(i.Total ?? i.Sessions?.length ?? 0),
|
|
2816
2830
|
page: Number(i.Page ?? 1),
|
|
2817
2831
|
pageSize: Number(i.PageSize ?? yn),
|
|
2818
2832
|
replace: !0
|
|
2819
2833
|
});
|
|
2820
|
-
let a =
|
|
2821
|
-
c && c !== o ? h(c) : !c && o && (s.current = null,
|
|
2834
|
+
let a = R.getState().sessions, o = s.current, c = Te(a, o || t || Ce(e));
|
|
2835
|
+
c && c !== o ? h(c) : !c && o && (s.current = null, R.getState().setCurrentSessionId(null), q.getState().setMessages([]), Q.getState().clearSessionCheckpoints());
|
|
2822
2836
|
} catch (e) {
|
|
2823
|
-
if (e instanceof
|
|
2837
|
+
if (e instanceof U) return;
|
|
2824
2838
|
console.error("Failed to fetch sessions:", e);
|
|
2825
2839
|
} finally {
|
|
2826
|
-
|
|
2840
|
+
R.getState().setLoadingSessions(!1);
|
|
2827
2841
|
}
|
|
2828
|
-
}, [n, h]), v =
|
|
2829
|
-
let e =
|
|
2842
|
+
}, [n, h]), v = k(async () => {
|
|
2843
|
+
let e = R.getState();
|
|
2830
2844
|
if (e.isLoadingSessions || !e.hasMoreSessions) return;
|
|
2831
|
-
let t =
|
|
2845
|
+
let t = ue({
|
|
2832
2846
|
total: e.sessionsTotal,
|
|
2833
2847
|
pageSize: e.sessionsPageSize || yn,
|
|
2834
2848
|
loadedPages: e.loadedPages
|
|
@@ -2836,39 +2850,39 @@ function Sn(e) {
|
|
|
2836
2850
|
if (!t) return;
|
|
2837
2851
|
let r = e.sessionsPageSize || yn, i = e.sessionsAgentId || l.current || "default-agent";
|
|
2838
2852
|
try {
|
|
2839
|
-
|
|
2853
|
+
R.getState().setLoadingSessions(!0);
|
|
2840
2854
|
let a = await n.listSessions(i, {
|
|
2841
2855
|
page: t,
|
|
2842
2856
|
pageSize: r
|
|
2843
2857
|
});
|
|
2844
|
-
|
|
2858
|
+
R.getState().upsertSessions(a.Sessions || [], {
|
|
2845
2859
|
agentId: i,
|
|
2846
2860
|
total: Number(a.Total ?? e.sessionsTotal),
|
|
2847
2861
|
page: Number(a.Page ?? t),
|
|
2848
2862
|
pageSize: Number(a.PageSize ?? r)
|
|
2849
2863
|
});
|
|
2850
2864
|
} catch (e) {
|
|
2851
|
-
if (e instanceof
|
|
2865
|
+
if (e instanceof U) return;
|
|
2852
2866
|
console.error("Failed to load more sessions:", e);
|
|
2853
2867
|
} finally {
|
|
2854
|
-
|
|
2868
|
+
R.getState().setLoadingSessions(!1);
|
|
2855
2869
|
}
|
|
2856
2870
|
}, [n]);
|
|
2857
|
-
|
|
2871
|
+
A(() => {
|
|
2858
2872
|
d.current = h;
|
|
2859
|
-
}, [h]),
|
|
2873
|
+
}, [h]), A(() => {
|
|
2860
2874
|
f.current = g;
|
|
2861
2875
|
}, [g]);
|
|
2862
|
-
let y =
|
|
2876
|
+
let y = k(async () => {
|
|
2863
2877
|
try {
|
|
2864
2878
|
o?.();
|
|
2865
2879
|
let e = (await n.createSession(t)).SessionId;
|
|
2866
|
-
e && (
|
|
2880
|
+
e && (R.getState().upsertSessions([{
|
|
2867
2881
|
SessionId: e,
|
|
2868
2882
|
UpdatedAt: (/* @__PURE__ */ new Date()).toISOString()
|
|
2869
|
-
}]), s.current = e,
|
|
2883
|
+
}]), s.current = e, R.getState().setCurrentSessionId(e), q.getState().setMessages([]), Q.getState().setSessionCheckpoints(e, []), Q.getState().setSessionToolReceipts(e, []), r && (_.getState().setMobileSidebarOpen(!1), _.getState().setMobileActionsOpen(!1)), g(t, e));
|
|
2870
2884
|
} catch (e) {
|
|
2871
|
-
if (e instanceof
|
|
2885
|
+
if (e instanceof U) return;
|
|
2872
2886
|
console.error("Failed to create session:", e);
|
|
2873
2887
|
}
|
|
2874
2888
|
}, [
|
|
@@ -2877,11 +2891,11 @@ function Sn(e) {
|
|
|
2877
2891
|
o,
|
|
2878
2892
|
g,
|
|
2879
2893
|
r
|
|
2880
|
-
]), b =
|
|
2894
|
+
]), b = k(async (e) => {
|
|
2881
2895
|
try {
|
|
2882
|
-
await n.deleteSession(e),
|
|
2896
|
+
await n.deleteSession(e), R.getState().removeSession(e), R.getState().clearSessionEventCache(e), s.current === e && (s.current = null, q.getState().setMessages([]), Q.getState().clearSessionCheckpoints(e), R.getState().setCurrentSessionId(null), g(t));
|
|
2883
2897
|
} catch (e) {
|
|
2884
|
-
if (e instanceof
|
|
2898
|
+
if (e instanceof U) return;
|
|
2885
2899
|
console.error("Failed to delete session", e);
|
|
2886
2900
|
}
|
|
2887
2901
|
}, [
|
|
@@ -2893,29 +2907,29 @@ function Sn(e) {
|
|
|
2893
2907
|
fetchSessions: g,
|
|
2894
2908
|
loadMoreSessions: v,
|
|
2895
2909
|
loadSession: h,
|
|
2896
|
-
loadOlderSessionEvents:
|
|
2897
|
-
let t =
|
|
2910
|
+
loadOlderSessionEvents: k(async (e) => {
|
|
2911
|
+
let t = R.getState().eventCache[e];
|
|
2898
2912
|
if (!t || t.offset <= 0 || t.isLoadingOlder) return;
|
|
2899
2913
|
let r = Math.max(0, t.offset - bn), i = t.offset - r;
|
|
2900
2914
|
try {
|
|
2901
|
-
|
|
2915
|
+
R.getState().setSessionEventLoadingOlder(e, !0);
|
|
2902
2916
|
let a = await n.listSessionEvents(e, {
|
|
2903
2917
|
offset: r,
|
|
2904
2918
|
limit: i
|
|
2905
|
-
}), o =
|
|
2906
|
-
if (
|
|
2919
|
+
}), o = nn(a.Events || [], t.events);
|
|
2920
|
+
if (R.getState().setSessionEventCache(e, {
|
|
2907
2921
|
events: o,
|
|
2908
2922
|
total: Number(a.Total ?? t.total),
|
|
2909
2923
|
offset: Number(a.Offset ?? r),
|
|
2910
2924
|
limit: o.length
|
|
2911
2925
|
}), s.current === e) {
|
|
2912
|
-
let t =
|
|
2913
|
-
|
|
2926
|
+
let t = tn(o);
|
|
2927
|
+
q.getState().setMessages(t), p(l.current, e, t);
|
|
2914
2928
|
}
|
|
2915
2929
|
} catch (e) {
|
|
2916
|
-
e instanceof
|
|
2930
|
+
e instanceof U || console.error("Failed to load older session events:", e);
|
|
2917
2931
|
} finally {
|
|
2918
|
-
|
|
2932
|
+
R.getState().setSessionEventLoadingOlder(e, !1);
|
|
2919
2933
|
}
|
|
2920
2934
|
}, [n, p]),
|
|
2921
2935
|
createNewSession: y,
|
|
@@ -2927,8 +2941,8 @@ function Sn(e) {
|
|
|
2927
2941
|
}
|
|
2928
2942
|
//#endregion
|
|
2929
2943
|
//#region src/components/chat/ConnectedSidebar.tsx
|
|
2930
|
-
function
|
|
2931
|
-
let u =
|
|
2944
|
+
function wn({ uiCapabilities: e, createNewSession: n, deleteSession: a, loadSession: s, loadMoreSessions: c }) {
|
|
2945
|
+
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({
|
|
2932
2946
|
isMobile: y,
|
|
2933
2947
|
desktopSidebarOpen: g,
|
|
2934
2948
|
mobileSidebarOpen: v
|
|
@@ -2957,7 +2971,7 @@ function Cn({ uiCapabilities: e, createNewSession: n, deleteSession: a, loadSess
|
|
|
2957
2971
|
t.stopPropagation(), a(e);
|
|
2958
2972
|
},
|
|
2959
2973
|
onTogglePinSession: (e, t) => {
|
|
2960
|
-
t.stopPropagation(),
|
|
2974
|
+
t.stopPropagation(), R.getState().togglePinnedSession(e);
|
|
2961
2975
|
},
|
|
2962
2976
|
onLoadMoreSessions: c,
|
|
2963
2977
|
sessionTitle: te,
|
|
@@ -2978,7 +2992,7 @@ function Cn({ uiCapabilities: e, createNewSession: n, deleteSession: a, loadSess
|
|
|
2978
2992
|
t.stopPropagation(), a(e);
|
|
2979
2993
|
},
|
|
2980
2994
|
onTogglePinSession: (e, t) => {
|
|
2981
|
-
t.stopPropagation(),
|
|
2995
|
+
t.stopPropagation(), R.getState().togglePinnedSession(e);
|
|
2982
2996
|
},
|
|
2983
2997
|
onLoadMoreSessions: c,
|
|
2984
2998
|
sessionTitle: te,
|
|
@@ -2990,17 +3004,17 @@ function Cn({ uiCapabilities: e, createNewSession: n, deleteSession: a, loadSess
|
|
|
2990
3004
|
}
|
|
2991
3005
|
//#endregion
|
|
2992
3006
|
//#region src/components/ui/dialog.tsx
|
|
2993
|
-
var
|
|
3007
|
+
var Tn = M.Root, En = M.Portal, Dn = D.forwardRef(({ className: e, ...t }, n) => /* @__PURE__ */ T(M.Overlay, {
|
|
2994
3008
|
ref: n,
|
|
2995
3009
|
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),
|
|
2996
3010
|
...t
|
|
2997
3011
|
}));
|
|
2998
|
-
|
|
2999
|
-
var
|
|
3012
|
+
Dn.displayName = M.Overlay.displayName;
|
|
3013
|
+
var On = D.forwardRef(({ className: e, children: t, ...n }, r) => /* @__PURE__ */ E(En, { children: [/* @__PURE__ */ T(Dn, {}), /* @__PURE__ */ E(M.Content, {
|
|
3000
3014
|
ref: r,
|
|
3001
3015
|
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),
|
|
3002
3016
|
...n,
|
|
3003
|
-
children: [t, /* @__PURE__ */ E(
|
|
3017
|
+
children: [t, /* @__PURE__ */ E(M.Close, {
|
|
3004
3018
|
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",
|
|
3005
3019
|
children: [/* @__PURE__ */ T(w, { className: "h-4 w-4" }), /* @__PURE__ */ T("span", {
|
|
3006
3020
|
className: "sr-only",
|
|
@@ -3008,50 +3022,50 @@ var Dn = D.forwardRef(({ className: e, children: t, ...n }, r) => /* @__PURE__ *
|
|
|
3008
3022
|
})]
|
|
3009
3023
|
})]
|
|
3010
3024
|
})] }));
|
|
3011
|
-
|
|
3012
|
-
var
|
|
3025
|
+
On.displayName = M.Content.displayName;
|
|
3026
|
+
var kn = ({ className: e, ...t }) => /* @__PURE__ */ T("div", {
|
|
3013
3027
|
className: p("flex flex-col space-y-1.5 text-center sm:text-left", e),
|
|
3014
3028
|
...t
|
|
3015
3029
|
});
|
|
3016
|
-
|
|
3017
|
-
var
|
|
3030
|
+
kn.displayName = "DialogHeader";
|
|
3031
|
+
var An = ({ className: e, ...t }) => /* @__PURE__ */ T("div", {
|
|
3018
3032
|
className: p("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2", e),
|
|
3019
3033
|
...t
|
|
3020
3034
|
});
|
|
3021
|
-
|
|
3022
|
-
var
|
|
3035
|
+
An.displayName = "DialogFooter";
|
|
3036
|
+
var jn = D.forwardRef(({ className: e, ...t }, n) => /* @__PURE__ */ T(M.Title, {
|
|
3023
3037
|
ref: n,
|
|
3024
3038
|
className: p("text-lg font-semibold leading-none tracking-tight", e),
|
|
3025
3039
|
...t
|
|
3026
3040
|
}));
|
|
3027
|
-
|
|
3028
|
-
var
|
|
3041
|
+
jn.displayName = M.Title.displayName;
|
|
3042
|
+
var Mn = D.forwardRef(({ className: e, ...t }, n) => /* @__PURE__ */ T(M.Description, {
|
|
3029
3043
|
ref: n,
|
|
3030
3044
|
className: p("text-sm text-muted-foreground", e),
|
|
3031
3045
|
...t
|
|
3032
3046
|
}));
|
|
3033
|
-
|
|
3047
|
+
Mn.displayName = M.Description.displayName;
|
|
3034
3048
|
//#endregion
|
|
3035
3049
|
//#region src/components/chat/AttachmentPreview.tsx
|
|
3036
|
-
function
|
|
3050
|
+
function Nn(e, t) {
|
|
3037
3051
|
if (!(!t || e)) return {
|
|
3038
3052
|
width: `min(${t.width}px, calc(100vw - 5rem))`,
|
|
3039
3053
|
height: `min(${t.height}px, calc(100vh - 9rem))`
|
|
3040
3054
|
};
|
|
3041
3055
|
}
|
|
3042
|
-
function
|
|
3056
|
+
function Pn(e, t) {
|
|
3043
3057
|
if (!(!t || e)) return { width: `min(${t.width + 32}px, calc(100vw - 3rem))` };
|
|
3044
3058
|
}
|
|
3045
|
-
function
|
|
3046
|
-
return /* @__PURE__ */ T(
|
|
3059
|
+
function Fn({ attachment: e, isMobile: t, previewImageSize: n, onClose: r, onImageLoad: i }) {
|
|
3060
|
+
return /* @__PURE__ */ T(Tn, {
|
|
3047
3061
|
open: !!e?.url,
|
|
3048
3062
|
onOpenChange: (e) => !e && r(),
|
|
3049
|
-
children: /* @__PURE__ */ E(
|
|
3063
|
+
children: /* @__PURE__ */ E(On, {
|
|
3050
3064
|
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"),
|
|
3051
|
-
style:
|
|
3065
|
+
style: Pn(t, n),
|
|
3052
3066
|
children: [/* @__PURE__ */ T("div", {
|
|
3053
3067
|
className: "flex items-center gap-3 border-b border-slate-800 px-4 py-3 pr-16",
|
|
3054
|
-
children: /* @__PURE__ */ T(
|
|
3068
|
+
children: /* @__PURE__ */ T(jn, {
|
|
3055
3069
|
className: "truncate text-sm font-medium",
|
|
3056
3070
|
children: e?.name || "附件预览"
|
|
3057
3071
|
})
|
|
@@ -3061,7 +3075,7 @@ function Pn({ attachment: e, isMobile: t, previewImageSize: n, onClose: r, onIma
|
|
|
3061
3075
|
src: e.url,
|
|
3062
3076
|
alt: e.name,
|
|
3063
3077
|
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)]"),
|
|
3064
|
-
style:
|
|
3078
|
+
style: Nn(t, n),
|
|
3065
3079
|
onLoad: (e) => {
|
|
3066
3080
|
let t = e.currentTarget;
|
|
3067
3081
|
i({
|
|
@@ -3080,7 +3094,7 @@ function Pn({ attachment: e, isMobile: t, previewImageSize: n, onClose: r, onIma
|
|
|
3080
3094
|
}
|
|
3081
3095
|
//#endregion
|
|
3082
3096
|
//#region src/utils/context.js
|
|
3083
|
-
function
|
|
3097
|
+
function In(e) {
|
|
3084
3098
|
if (typeof e == "number" && Number.isFinite(e) && e > 0) return e;
|
|
3085
3099
|
if (typeof e == "string" && e.trim()) {
|
|
3086
3100
|
let t = Number(e);
|
|
@@ -3088,15 +3102,15 @@ function Fn(e) {
|
|
|
3088
3102
|
}
|
|
3089
3103
|
return null;
|
|
3090
3104
|
}
|
|
3091
|
-
function
|
|
3105
|
+
function Ln(e) {
|
|
3092
3106
|
return /[\u3400-\u4DBF\u4E00-\u9FFF\uF900-\uFAFF]/u.test(e);
|
|
3093
3107
|
}
|
|
3094
|
-
function
|
|
3108
|
+
function Rn(e) {
|
|
3095
3109
|
let t = String(e || "").trim();
|
|
3096
3110
|
if (!t) return 0;
|
|
3097
3111
|
let n = 0, r = 0;
|
|
3098
3112
|
for (let e of t) {
|
|
3099
|
-
if (
|
|
3113
|
+
if (Ln(e)) {
|
|
3100
3114
|
n += 1;
|
|
3101
3115
|
continue;
|
|
3102
3116
|
}
|
|
@@ -3104,24 +3118,24 @@ function Ln(e) {
|
|
|
3104
3118
|
}
|
|
3105
3119
|
return Math.max(1, n + Math.ceil(r / 4));
|
|
3106
3120
|
}
|
|
3107
|
-
function Rn(e) {
|
|
3108
|
-
if (!e) return 0;
|
|
3109
|
-
if (e.role === "system") return e.eventType === "context_checkpoint" ? Ln(e.summary || "") : 0;
|
|
3110
|
-
let t = Ln(e.content || "");
|
|
3111
|
-
return e.tools && (t += Object.values(e.tools).reduce((e, t) => e + Ln(t?.name || "") + Ln(t?.args || "") + Ln(t?.output || ""), 0)), t;
|
|
3112
|
-
}
|
|
3113
3121
|
function zn(e) {
|
|
3114
|
-
|
|
3122
|
+
if (!e) return 0;
|
|
3123
|
+
if (e.role === "system") return e.eventType === "context_checkpoint" ? Rn(e.summary || "") : 0;
|
|
3124
|
+
let t = Rn(e.content || "");
|
|
3125
|
+
return e.tools && (t += Object.values(e.tools).reduce((e, t) => e + Rn(t?.name || "") + Rn(t?.args || "") + Rn(t?.output || ""), 0)), t;
|
|
3115
3126
|
}
|
|
3116
3127
|
function Bn(e) {
|
|
3117
|
-
return e ?
|
|
3128
|
+
return e ? In(e.context_window_tokens) ?? In(e?.limits?.context_window_tokens) : null;
|
|
3118
3129
|
}
|
|
3119
|
-
function Vn(
|
|
3120
|
-
|
|
3130
|
+
function Vn(e) {
|
|
3131
|
+
return e ? In(e.auto_compact_threshold_percentage) ?? 84 : 84;
|
|
3132
|
+
}
|
|
3133
|
+
function Hn({ messages: e, draftInput: t, selectedModel: n }) {
|
|
3134
|
+
let r = Bn(n);
|
|
3121
3135
|
if (!r) return null;
|
|
3122
3136
|
let i = [...e || []].reverse().find((e) => e?.role === "system" && e?.eventType === "context_checkpoint" && e?.status === "running");
|
|
3123
3137
|
if (i) {
|
|
3124
|
-
let e =
|
|
3138
|
+
let e = zn(i);
|
|
3125
3139
|
return {
|
|
3126
3140
|
label: "正在压缩上下文…",
|
|
3127
3141
|
phase: "compressing",
|
|
@@ -3130,10 +3144,10 @@ function Vn({ messages: e, draftInput: t, selectedModel: n }) {
|
|
|
3130
3144
|
percent: Math.min(100, Math.max(0, Math.round(e / r * 100)))
|
|
3131
3145
|
};
|
|
3132
3146
|
}
|
|
3133
|
-
let a = (e || []).reduce((e, t) => e +
|
|
3147
|
+
let a = (e || []).reduce((e, t) => e + zn(t), 0) + Rn(t || "");
|
|
3134
3148
|
if (a <= 0) return null;
|
|
3135
3149
|
let o = Math.min(100, Math.max(0, Math.round(a / r * 100)));
|
|
3136
|
-
return o >=
|
|
3150
|
+
return o >= Vn(n) ? {
|
|
3137
3151
|
label: `估算上下文 ${o}% · 即将压缩`,
|
|
3138
3152
|
phase: "warning",
|
|
3139
3153
|
percent: o,
|
|
@@ -3149,19 +3163,19 @@ function Vn({ messages: e, draftInput: t, selectedModel: n }) {
|
|
|
3149
3163
|
}
|
|
3150
3164
|
//#endregion
|
|
3151
3165
|
//#region src/components/chat/ConnectedMessageList.tsx
|
|
3152
|
-
function
|
|
3153
|
-
let u =
|
|
3166
|
+
function Un({ agentName: e, isMobile: t, onDeleteFeedback: n, onSubmitFeedback: r, onRespondToApproval: i, onStopGeneration: a, onCancelRemote: o, checkpointResumeEnabled: s = !1, onResumeCheckpoint: c, onLoadOlderSessionEvents: l }) {
|
|
3167
|
+
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 = Q((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(() => Hn({
|
|
3154
3168
|
messages: u,
|
|
3155
3169
|
draftInput: v,
|
|
3156
|
-
selectedModel:
|
|
3170
|
+
selectedModel: O
|
|
3157
3171
|
}), [
|
|
3158
3172
|
v,
|
|
3159
3173
|
u,
|
|
3160
|
-
|
|
3174
|
+
O
|
|
3161
3175
|
]);
|
|
3162
|
-
return
|
|
3176
|
+
return A(() => {
|
|
3163
3177
|
w.current = f;
|
|
3164
|
-
}, [f]),
|
|
3178
|
+
}, [f]), A(() => {
|
|
3165
3179
|
let e = x.current;
|
|
3166
3180
|
if (!e) return;
|
|
3167
3181
|
let t = () => {
|
|
@@ -3195,7 +3209,7 @@ function Hn({ agentName: e, isMobile: t, onDeleteFeedback: n, onSubmitFeedback:
|
|
|
3195
3209
|
g,
|
|
3196
3210
|
d,
|
|
3197
3211
|
l
|
|
3198
|
-
]),
|
|
3212
|
+
]), A(() => {
|
|
3199
3213
|
let e = x.current;
|
|
3200
3214
|
!e || !S.current || (e.scrollTop = e.scrollHeight, ne.current = e.scrollTop);
|
|
3201
3215
|
}, [u, f]), /* @__PURE__ */ E(re, { children: [/* @__PURE__ */ T(m, {
|
|
@@ -3203,7 +3217,7 @@ function Hn({ agentName: e, isMobile: t, onDeleteFeedback: n, onSubmitFeedback:
|
|
|
3203
3217
|
isMobile: t,
|
|
3204
3218
|
isStreaming: f,
|
|
3205
3219
|
activity: p,
|
|
3206
|
-
contextIndicator:
|
|
3220
|
+
contextIndicator: ie,
|
|
3207
3221
|
messages: u,
|
|
3208
3222
|
onDeleteFeedback: n,
|
|
3209
3223
|
onOpenAttachmentPreview: (e) => {
|
|
@@ -3216,7 +3230,7 @@ function Hn({ agentName: e, isMobile: t, onDeleteFeedback: n, onSubmitFeedback:
|
|
|
3216
3230
|
checkpoints: s ? h : [],
|
|
3217
3231
|
onResumeCheckpoint: c,
|
|
3218
3232
|
scrollRef: x
|
|
3219
|
-
}), /* @__PURE__ */ T(
|
|
3233
|
+
}), /* @__PURE__ */ T(Fn, {
|
|
3220
3234
|
attachment: ee,
|
|
3221
3235
|
isMobile: t,
|
|
3222
3236
|
previewImageSize: te,
|
|
@@ -3228,7 +3242,7 @@ function Hn({ agentName: e, isMobile: t, onDeleteFeedback: n, onSubmitFeedback:
|
|
|
3228
3242
|
}
|
|
3229
3243
|
//#endregion
|
|
3230
3244
|
//#region src/utils/attachment.ts
|
|
3231
|
-
function
|
|
3245
|
+
function Wn(e) {
|
|
3232
3246
|
return [
|
|
3233
3247
|
e.name,
|
|
3234
3248
|
e.size,
|
|
@@ -3236,19 +3250,19 @@ function Un(e) {
|
|
|
3236
3250
|
e.type
|
|
3237
3251
|
].join(":");
|
|
3238
3252
|
}
|
|
3239
|
-
function
|
|
3253
|
+
function Gn(e, t) {
|
|
3240
3254
|
let n = /* @__PURE__ */ new Map();
|
|
3241
|
-
for (let t of e) n.set(
|
|
3242
|
-
for (let e of t) n.set(
|
|
3255
|
+
for (let t of e) n.set(Wn(t), t);
|
|
3256
|
+
for (let e of t) n.set(Wn(e), e);
|
|
3243
3257
|
return Array.from(n.values());
|
|
3244
3258
|
}
|
|
3245
|
-
function
|
|
3259
|
+
function Kn(e) {
|
|
3246
3260
|
return Array.from(e.clipboardData.items || []).filter((e) => e.kind === "file").map((e) => e.getAsFile()).filter((e) => !!e);
|
|
3247
3261
|
}
|
|
3248
3262
|
//#endregion
|
|
3249
3263
|
//#region src/components/chat/ConnectedComposer.tsx
|
|
3250
|
-
function
|
|
3251
|
-
let o = _((e) => e.input), s = _((e) => e.attachments), c =
|
|
3264
|
+
function qn({ composerMaxHeight: e, submitDraft: t, stopGeneration: n, cancelRemote: r, isMobile: i }) {
|
|
3265
|
+
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(() => Hn({
|
|
3252
3266
|
messages: d,
|
|
3253
3267
|
draftInput: o,
|
|
3254
3268
|
selectedModel: g
|
|
@@ -3256,16 +3270,16 @@ function Kn({ composerMaxHeight: e, submitDraft: t, stopGeneration: n, cancelRem
|
|
|
3256
3270
|
o,
|
|
3257
3271
|
d,
|
|
3258
3272
|
g
|
|
3259
|
-
]), y =
|
|
3273
|
+
]), y = k((e, n) => {
|
|
3260
3274
|
!e && n.length === 0 || (_.getState().setInput(""), _.getState().setAttachments([]), t(e, n));
|
|
3261
3275
|
}, [t]);
|
|
3262
|
-
|
|
3276
|
+
A(() => {
|
|
3263
3277
|
h.current && (h.current.style.height = "auto", h.current.style.height = `${Math.min(h.current.scrollHeight, e)}px`);
|
|
3264
3278
|
}, [o, e]);
|
|
3265
3279
|
let b = (t) => {
|
|
3266
3280
|
_.getState().setInput(t.target.value), t.target.style.height = "auto", t.target.style.height = `${Math.min(t.target.scrollHeight, e)}px`;
|
|
3267
3281
|
}, ee = (e) => {
|
|
3268
|
-
e.length && _.getState().setAttachments((t) =>
|
|
3282
|
+
e.length && _.getState().setAttachments((t) => Gn(t, e));
|
|
3269
3283
|
};
|
|
3270
3284
|
return /* @__PURE__ */ T(a, {
|
|
3271
3285
|
attachments: s,
|
|
@@ -3279,7 +3293,7 @@ function Kn({ composerMaxHeight: e, submitDraft: t, stopGeneration: n, cancelRem
|
|
|
3279
3293
|
onAppendAttachments: ee,
|
|
3280
3294
|
onInputChange: b,
|
|
3281
3295
|
onPaste: (e) => {
|
|
3282
|
-
let t =
|
|
3296
|
+
let t = Kn(e);
|
|
3283
3297
|
t.length && (e.preventDefault(), e.stopPropagation(), ee(t));
|
|
3284
3298
|
},
|
|
3285
3299
|
onRemoveAttachment: (e) => _.getState().setAttachments((t) => t.filter((t, n) => n !== e)),
|
|
@@ -3291,8 +3305,8 @@ function Kn({ composerMaxHeight: e, submitDraft: t, stopGeneration: n, cancelRem
|
|
|
3291
3305
|
}
|
|
3292
3306
|
//#endregion
|
|
3293
3307
|
//#region src/api/session.ts
|
|
3294
|
-
async function
|
|
3295
|
-
let n = await
|
|
3308
|
+
async function Jn(e, t) {
|
|
3309
|
+
let n = await K("ListSessions", {
|
|
3296
3310
|
AgentId: e,
|
|
3297
3311
|
Page: t?.page,
|
|
3298
3312
|
PageSize: t?.pageSize
|
|
@@ -3304,16 +3318,16 @@ async function qn(e, t) {
|
|
|
3304
3318
|
PageSize: Number.isFinite(Number(n.PageSize)) ? Number(n.PageSize) : t?.pageSize ?? n.Sessions?.length ?? 0
|
|
3305
3319
|
};
|
|
3306
3320
|
}
|
|
3307
|
-
async function Jn(e, t) {
|
|
3308
|
-
return (await G("CreateSession", { AgentId: e }, t)).Session;
|
|
3309
|
-
}
|
|
3310
3321
|
async function Yn(e, t) {
|
|
3311
|
-
await
|
|
3322
|
+
return (await K("CreateSession", { AgentId: e }, t)).Session;
|
|
3323
|
+
}
|
|
3324
|
+
async function Xn(e, t) {
|
|
3325
|
+
await K("DeleteSession", { SessionId: e }, t);
|
|
3312
3326
|
}
|
|
3313
3327
|
//#endregion
|
|
3314
3328
|
//#region src/api/events.ts
|
|
3315
|
-
async function
|
|
3316
|
-
let n = await
|
|
3329
|
+
async function Zn(e, t) {
|
|
3330
|
+
let n = await K("ListSessionEvents", {
|
|
3317
3331
|
SessionId: e,
|
|
3318
3332
|
Offset: t?.offset,
|
|
3319
3333
|
Limit: t?.limit
|
|
@@ -3327,34 +3341,34 @@ async function Xn(e, t) {
|
|
|
3327
3341
|
}
|
|
3328
3342
|
//#endregion
|
|
3329
3343
|
//#region src/api/run.ts
|
|
3330
|
-
async function
|
|
3331
|
-
return
|
|
3344
|
+
async function Qn(e, t) {
|
|
3345
|
+
return ze("RunAgent", e, t);
|
|
3332
3346
|
}
|
|
3333
3347
|
//#endregion
|
|
3334
3348
|
//#region src/api/checkpoints.ts
|
|
3335
|
-
async function
|
|
3349
|
+
async function $n(e, t) {
|
|
3336
3350
|
let n = {
|
|
3337
3351
|
AgentId: e.agentId,
|
|
3338
3352
|
SessionId: e.sessionId
|
|
3339
3353
|
};
|
|
3340
|
-
return e.runId && (n.RunId = e.runId),
|
|
3354
|
+
return e.runId && (n.RunId = e.runId), K("ListSessionCheckpoints", n, t);
|
|
3341
3355
|
}
|
|
3342
|
-
async function
|
|
3343
|
-
return
|
|
3356
|
+
async function er(e, t) {
|
|
3357
|
+
return K("PreviewCheckpointResume", {
|
|
3344
3358
|
AgentId: e.agentId,
|
|
3345
3359
|
SessionId: e.sessionId,
|
|
3346
3360
|
RunId: e.runId,
|
|
3347
3361
|
CheckpointId: e.checkpointId
|
|
3348
3362
|
}, t);
|
|
3349
3363
|
}
|
|
3350
|
-
async function
|
|
3364
|
+
async function tr(e, t) {
|
|
3351
3365
|
let n = {
|
|
3352
3366
|
AgentId: e.agentId,
|
|
3353
3367
|
SessionId: e.sessionId
|
|
3354
3368
|
};
|
|
3355
|
-
return e.runId && (n.RunId = e.runId), e.checkpointId && (n.CheckpointId = e.checkpointId),
|
|
3369
|
+
return e.runId && (n.RunId = e.runId), e.checkpointId && (n.CheckpointId = e.checkpointId), K("ListToolReceipts", n, t);
|
|
3356
3370
|
}
|
|
3357
|
-
async function
|
|
3371
|
+
async function nr(e, t) {
|
|
3358
3372
|
let n = {
|
|
3359
3373
|
AgentId: e.agentId,
|
|
3360
3374
|
SessionId: e.sessionId,
|
|
@@ -3362,28 +3376,28 @@ async function tr(e, t) {
|
|
|
3362
3376
|
CheckpointId: e.checkpointId,
|
|
3363
3377
|
Stream: !0
|
|
3364
3378
|
};
|
|
3365
|
-
return e.resumeAttemptId && (n.ResumeAttemptId = e.resumeAttemptId), e.invocationId && (n.InvocationId = e.invocationId),
|
|
3379
|
+
return e.resumeAttemptId && (n.ResumeAttemptId = e.resumeAttemptId), e.invocationId && (n.InvocationId = e.invocationId), ze("ResumeRun", n, t);
|
|
3366
3380
|
}
|
|
3367
3381
|
//#endregion
|
|
3368
3382
|
//#region src/api/workspace.ts
|
|
3369
|
-
async function
|
|
3370
|
-
return
|
|
3383
|
+
async function rr(e, t, n) {
|
|
3384
|
+
return K("ListWorkspaceFiles", {
|
|
3371
3385
|
AgentId: e,
|
|
3372
3386
|
Path: t,
|
|
3373
3387
|
Recursive: n
|
|
3374
3388
|
});
|
|
3375
3389
|
}
|
|
3376
|
-
async function
|
|
3377
|
-
return
|
|
3390
|
+
async function ir(e) {
|
|
3391
|
+
return Le("AddWorkspaceFile", e);
|
|
3378
3392
|
}
|
|
3379
|
-
async function
|
|
3380
|
-
return
|
|
3393
|
+
async function ar(e, t) {
|
|
3394
|
+
return K("DeleteWorkspaceFile", {
|
|
3381
3395
|
AgentId: e,
|
|
3382
3396
|
Path: t
|
|
3383
3397
|
});
|
|
3384
3398
|
}
|
|
3385
|
-
async function
|
|
3386
|
-
return
|
|
3399
|
+
async function or(e, t, n) {
|
|
3400
|
+
return Re("GetWorkspaceFileContent", {
|
|
3387
3401
|
AgentId: e,
|
|
3388
3402
|
FilePath: t
|
|
3389
3403
|
}, {
|
|
@@ -3393,138 +3407,133 @@ async function ar(e, t, n) {
|
|
|
3393
3407
|
}
|
|
3394
3408
|
//#endregion
|
|
3395
3409
|
//#region src/api/upload.ts
|
|
3396
|
-
async function
|
|
3397
|
-
return
|
|
3410
|
+
async function sr(e, t) {
|
|
3411
|
+
return Le("UploadFile", e, t);
|
|
3398
3412
|
}
|
|
3399
3413
|
//#endregion
|
|
3400
3414
|
//#region src/core/api/facade.ts
|
|
3401
|
-
var
|
|
3415
|
+
var cr = class {
|
|
3402
3416
|
async listSessions(e, t) {
|
|
3403
|
-
return
|
|
3417
|
+
return Jn(e, t);
|
|
3404
3418
|
}
|
|
3405
3419
|
async createSession(e, t) {
|
|
3406
|
-
return { SessionId: (await
|
|
3420
|
+
return { SessionId: (await Yn(e, t)).SessionId };
|
|
3407
3421
|
}
|
|
3408
3422
|
async deleteSession(e, t) {
|
|
3409
|
-
await
|
|
3423
|
+
await Xn(e, t);
|
|
3410
3424
|
}
|
|
3411
3425
|
async listSessionEvents(e, t) {
|
|
3412
|
-
return
|
|
3426
|
+
return Zn(e, t);
|
|
3413
3427
|
}
|
|
3414
3428
|
async listSessionCheckpoints(e, t) {
|
|
3415
|
-
return
|
|
3429
|
+
return $n(e, t);
|
|
3416
3430
|
}
|
|
3417
3431
|
async previewCheckpointResume(e, t) {
|
|
3418
|
-
return
|
|
3432
|
+
return er(e, t);
|
|
3419
3433
|
}
|
|
3420
3434
|
async listToolReceipts(e, t) {
|
|
3421
|
-
return
|
|
3435
|
+
return tr(e, t);
|
|
3422
3436
|
}
|
|
3423
3437
|
async runAgent(e, t) {
|
|
3424
|
-
return
|
|
3438
|
+
return Qn(e, t);
|
|
3425
3439
|
}
|
|
3426
3440
|
async resumeRun(e, t) {
|
|
3427
|
-
return
|
|
3441
|
+
return nr(e, t);
|
|
3428
3442
|
}
|
|
3429
3443
|
async subscribeRunEvents(e, t) {
|
|
3430
|
-
return
|
|
3444
|
+
return Be("SubscribeRunEvents", {
|
|
3431
3445
|
SessionId: e.sessionId,
|
|
3432
3446
|
InvocationId: e.invocationId,
|
|
3433
3447
|
AfterSeqId: String(e.afterSeqId)
|
|
3434
3448
|
}, t);
|
|
3435
3449
|
}
|
|
3436
3450
|
async cancelRun(e, t, n) {
|
|
3437
|
-
return
|
|
3451
|
+
return K("CancelRun", {
|
|
3438
3452
|
AgentId: e,
|
|
3439
3453
|
InvocationId: t
|
|
3440
3454
|
}, n);
|
|
3441
3455
|
}
|
|
3442
3456
|
async getResponseFeedback(e, t) {
|
|
3443
|
-
return
|
|
3457
|
+
return K("GetResponseFeedback", e, t);
|
|
3444
3458
|
}
|
|
3445
3459
|
async upsertResponseFeedback(e, t) {
|
|
3446
|
-
return
|
|
3460
|
+
return K("UpsertResponseFeedback", e, t);
|
|
3447
3461
|
}
|
|
3448
3462
|
async deleteResponseFeedback(e, t) {
|
|
3449
|
-
await
|
|
3463
|
+
await K("DeleteResponseFeedback", e, t);
|
|
3450
3464
|
}
|
|
3451
3465
|
async listWorkspaceFiles(e, t, n) {
|
|
3452
|
-
return
|
|
3466
|
+
return rr(e, t, n);
|
|
3453
3467
|
}
|
|
3454
3468
|
async addWorkspaceFile(e) {
|
|
3455
|
-
return
|
|
3469
|
+
return ir(e);
|
|
3456
3470
|
}
|
|
3457
3471
|
async deleteWorkspaceFile(e, t) {
|
|
3458
|
-
await
|
|
3472
|
+
await ar(e, t);
|
|
3459
3473
|
}
|
|
3460
3474
|
async getWorkspaceFileContent(e, t, n) {
|
|
3461
|
-
return
|
|
3475
|
+
return or(e, t, n);
|
|
3462
3476
|
}
|
|
3463
3477
|
async listAgentModels(e) {
|
|
3464
|
-
return
|
|
3478
|
+
return He(e);
|
|
3465
3479
|
}
|
|
3466
3480
|
async getAgentUiBootstrap() {
|
|
3467
|
-
return
|
|
3481
|
+
return Ve();
|
|
3468
3482
|
}
|
|
3469
3483
|
async uploadFile(e, t) {
|
|
3470
|
-
return
|
|
3471
|
-
}
|
|
3472
|
-
},
|
|
3473
|
-
function
|
|
3474
|
-
let a = e ||
|
|
3475
|
-
isMobile:
|
|
3476
|
-
viewportHeight:
|
|
3477
|
-
}), { fetchSessions:
|
|
3484
|
+
return sr(e, t);
|
|
3485
|
+
}
|
|
3486
|
+
}, lr = new cr(), ur = O.lazy(() => import("./ArtifactsPanel-BCjpJZ9m.js").then((e) => ({ default: e.ArtifactsPanel }))), dr = O.lazy(() => import("./NativeTerminalPanel-C1LtiwB7.js").then((e) => e.n).then((e) => ({ default: e.NativeTerminalPanel })));
|
|
3487
|
+
function fr({ apiAdapter: e, initialSurface: r = "chat", routeShell: i } = {}) {
|
|
3488
|
+
let a = e || lr, 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({
|
|
3489
|
+
isMobile: L,
|
|
3490
|
+
viewportHeight: le
|
|
3491
|
+
}), { fetchSessions: de, loadMoreSessions: fe, loadSession: pe, loadOlderSessionEvents: me, createNewSession: he, deleteSession: ge, currentSessionIdRef: z, agentIdRef: B, runSubscriptionAbortRef: _e } = Cn({
|
|
3478
3492
|
agentId: o,
|
|
3479
3493
|
currentSessionId: s,
|
|
3480
|
-
isMobile:
|
|
3481
|
-
uiCapabilities:
|
|
3494
|
+
isMobile: L,
|
|
3495
|
+
uiCapabilities: M,
|
|
3482
3496
|
api: a,
|
|
3483
3497
|
resetCompaction: () => {},
|
|
3484
|
-
disconnectRun: () =>
|
|
3485
|
-
}),
|
|
3498
|
+
disconnectRun: () => ce.current?.()
|
|
3499
|
+
}), ye = k((e) => {
|
|
3486
3500
|
if (!e) return;
|
|
3487
3501
|
let t = () => {
|
|
3488
|
-
|
|
3502
|
+
R.getState().clearSessionEventCache(e), de(B.current, e);
|
|
3489
3503
|
};
|
|
3490
3504
|
queueMicrotask(t), window.setTimeout(t, 1800), window.setTimeout(t, 5e3);
|
|
3491
|
-
}, [
|
|
3492
|
-
z,
|
|
3493
|
-
R,
|
|
3494
|
-
fe,
|
|
3495
|
-
me
|
|
3496
|
-
]), xe = m.find((e) => e.id === p) || null, { submitDraft: Se, stopGeneration: Ce, disconnectRun: we, resumeCheckpoint: Ee } = fn({
|
|
3505
|
+
}, [B, de]), be = m.find((e) => e.id === p) || null, { submitDraft: xe, stopGeneration: Se, disconnectRun: Ce, resumeCheckpoint: Te } = fn({
|
|
3497
3506
|
agentId: o,
|
|
3498
3507
|
currentSessionId: s,
|
|
3499
3508
|
agentFramework: x,
|
|
3500
|
-
apiFormats:
|
|
3509
|
+
apiFormats: ae,
|
|
3501
3510
|
selectedModel: p,
|
|
3502
|
-
selectedModelMetadata:
|
|
3511
|
+
selectedModelMetadata: be,
|
|
3503
3512
|
thinkingMode: te,
|
|
3504
|
-
uiCapabilities:
|
|
3505
|
-
isMobile:
|
|
3513
|
+
uiCapabilities: M,
|
|
3514
|
+
isMobile: L,
|
|
3506
3515
|
api: a,
|
|
3507
|
-
currentSessionIdRef:
|
|
3508
|
-
agentIdRef:
|
|
3509
|
-
queuedDraftRef:
|
|
3510
|
-
onRunSettled:
|
|
3516
|
+
currentSessionIdRef: z,
|
|
3517
|
+
agentIdRef: B,
|
|
3518
|
+
queuedDraftRef: se,
|
|
3519
|
+
onRunSettled: ye
|
|
3511
3520
|
});
|
|
3512
|
-
|
|
3513
|
-
|
|
3514
|
-
}, [
|
|
3515
|
-
let
|
|
3516
|
-
let e =
|
|
3517
|
-
|
|
3521
|
+
A(() => {
|
|
3522
|
+
ce.current = Ce;
|
|
3523
|
+
}, [Ce]);
|
|
3524
|
+
let Ee = k(() => {
|
|
3525
|
+
let e = z.current;
|
|
3526
|
+
_e.current?.abort(), I.getState().stopActivity(), I.getState().stopSessionActivity(e), Se();
|
|
3518
3527
|
}, [
|
|
3519
|
-
|
|
3520
|
-
|
|
3521
|
-
|
|
3522
|
-
]),
|
|
3523
|
-
let e =
|
|
3528
|
+
z,
|
|
3529
|
+
_e,
|
|
3530
|
+
Se
|
|
3531
|
+
]), De = k(async () => {
|
|
3532
|
+
let e = z.current, t = I.getState(), n = t.currentRunId || t.getSessionActivity(e)?.runId || "";
|
|
3524
3533
|
if (n) try {
|
|
3525
|
-
await a.cancelRun(o, n),
|
|
3534
|
+
await a.cancelRun(o, n), I.getState().stopSessionActivity(e, "取消请求已发送,后台运行会停在最近 checkpoint。");
|
|
3526
3535
|
} catch (t) {
|
|
3527
|
-
console.warn("[App] cancelRun failed:", t),
|
|
3536
|
+
console.warn("[App] cancelRun failed:", t), I.getState().updateActivity({
|
|
3528
3537
|
sessionId: e,
|
|
3529
3538
|
status: "failed",
|
|
3530
3539
|
phase: "取消请求失败",
|
|
@@ -3532,107 +3541,107 @@ function dr({ apiAdapter: e, initialSurface: r = "chat", routeShell: i } = {}) {
|
|
|
3532
3541
|
countEvent: !1
|
|
3533
3542
|
});
|
|
3534
3543
|
}
|
|
3535
|
-
|
|
3544
|
+
ye(e);
|
|
3536
3545
|
}, [
|
|
3537
3546
|
a,
|
|
3538
3547
|
o,
|
|
3539
|
-
|
|
3540
|
-
|
|
3541
|
-
]), { submitResponseFeedback:
|
|
3548
|
+
z,
|
|
3549
|
+
ye
|
|
3550
|
+
]), { submitResponseFeedback: Oe, deleteResponseFeedback: ke, respondToApproval: je } = pn({
|
|
3542
3551
|
agentId: o,
|
|
3543
3552
|
currentSessionId: s,
|
|
3544
3553
|
isStreaming: c,
|
|
3545
3554
|
api: a,
|
|
3546
|
-
submitDraft:
|
|
3555
|
+
submitDraft: xe
|
|
3547
3556
|
});
|
|
3548
|
-
|
|
3549
|
-
|
|
3557
|
+
Ge({ fetchSessions: de }), A(() => {
|
|
3558
|
+
B.current = o, z.current = s, we(o, s);
|
|
3550
3559
|
}, [
|
|
3551
3560
|
o,
|
|
3552
3561
|
s,
|
|
3553
|
-
|
|
3554
|
-
|
|
3555
|
-
]),
|
|
3556
|
-
|
|
3557
|
-
}, [
|
|
3562
|
+
B,
|
|
3563
|
+
z
|
|
3564
|
+
]), A(() => {
|
|
3565
|
+
L ? _.getState().setWorkspacePanelFullscreen(!1) : (_.getState().setMobileSidebarOpen(!1), _.getState().setMobileActionsOpen(!1));
|
|
3566
|
+
}, [L]), A(() => {
|
|
3558
3567
|
w || _.getState().setWorkspacePanelFullscreen(!1);
|
|
3559
|
-
}, [w]),
|
|
3560
|
-
|
|
3561
|
-
}, [
|
|
3562
|
-
let
|
|
3568
|
+
}, [w]), A(() => () => {
|
|
3569
|
+
_e.current?.abort();
|
|
3570
|
+
}, [_e]);
|
|
3571
|
+
let Ne = t(M), Pe = !!M.Thinking, V = g({
|
|
3563
3572
|
workspaceFiles: S,
|
|
3564
3573
|
accessMode: C
|
|
3565
|
-
}),
|
|
3566
|
-
capability:
|
|
3574
|
+
}), H = y({ isMobile: L }), U = Ae({
|
|
3575
|
+
capability: M.NativeDashboard,
|
|
3567
3576
|
agentFramework: x,
|
|
3568
3577
|
accessMode: C,
|
|
3569
3578
|
origin: window.location.origin
|
|
3570
|
-
}),
|
|
3571
|
-
|
|
3572
|
-
|
|
3573
|
-
}, [r,
|
|
3574
|
-
let
|
|
3579
|
+
}), W = !Ne, Ie = x === "openclaw" ? "OpenClaw" : x === "hermes" ? "Hermes" : "原生运行时", G = be?.display_name || p || "", K = !L && l && Ne, Le = j(!1), [Re, ze] = oe(r === "tui"), Be = Re && !!M.NativeTerminal?.Enabled;
|
|
3580
|
+
A(() => {
|
|
3581
|
+
Le.current || r !== "workspace" || !V || (Le.current = !0, _.getState().setWorkspacePanelOpen(!0), _.getState().setWorkspacePanelFullscreen(!0));
|
|
3582
|
+
}, [r, V]);
|
|
3583
|
+
let Ve = /* @__PURE__ */ E("div", {
|
|
3575
3584
|
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",
|
|
3576
3585
|
children: [
|
|
3577
|
-
/* @__PURE__ */ T(
|
|
3578
|
-
uiCapabilities:
|
|
3579
|
-
createNewSession:
|
|
3580
|
-
deleteSession:
|
|
3581
|
-
loadSession:
|
|
3582
|
-
loadMoreSessions:
|
|
3586
|
+
/* @__PURE__ */ T(wn, {
|
|
3587
|
+
uiCapabilities: M,
|
|
3588
|
+
createNewSession: he,
|
|
3589
|
+
deleteSession: ge,
|
|
3590
|
+
loadSession: pe,
|
|
3591
|
+
loadMoreSessions: fe
|
|
3583
3592
|
}),
|
|
3584
3593
|
/* @__PURE__ */ E("main", {
|
|
3585
3594
|
className: "relative flex min-w-0 flex-1 flex-col bg-white dark:bg-slate-900",
|
|
3586
3595
|
children: [/* @__PURE__ */ T(n, {
|
|
3587
3596
|
agentName: f,
|
|
3588
3597
|
currentSessionId: s,
|
|
3589
|
-
nativeLauncherMode:
|
|
3590
|
-
isMobile:
|
|
3598
|
+
nativeLauncherMode: W,
|
|
3599
|
+
isMobile: L,
|
|
3591
3600
|
sidebarOpen: l,
|
|
3592
3601
|
mobileSidebarOpen: u,
|
|
3593
3602
|
onToggleSidebar: () => {
|
|
3594
|
-
|
|
3603
|
+
L ? _.getState().toggleMobileSidebar() : _.getState().toggleSidebar();
|
|
3595
3604
|
},
|
|
3596
3605
|
availableModels: m,
|
|
3597
3606
|
selectedModel: p,
|
|
3598
3607
|
onSelectModel: (e) => {
|
|
3599
|
-
|
|
3608
|
+
F.getState().setSelectedModel(e), L && _.getState().setMobileActionsOpen(!1);
|
|
3600
3609
|
},
|
|
3601
|
-
selectedModelLabel:
|
|
3610
|
+
selectedModelLabel: G,
|
|
3602
3611
|
modelCatalogLoaded: v,
|
|
3603
3612
|
modelSource: h,
|
|
3604
|
-
thinkingEnabled:
|
|
3613
|
+
thinkingEnabled: Pe,
|
|
3605
3614
|
thinkingMode: te,
|
|
3606
|
-
onSelectThinkingMode: (e) =>
|
|
3615
|
+
onSelectThinkingMode: (e) => F.getState().setThinkingMode(Me(e)),
|
|
3607
3616
|
mobileActionsOpen: d,
|
|
3608
3617
|
onMobileActionsOpenChange: (e) => _.getState().setMobileActionsOpen(e),
|
|
3609
|
-
workspaceEnabled:
|
|
3618
|
+
workspaceEnabled: V,
|
|
3610
3619
|
onOpenWorkspace: () => _.getState().setWorkspacePanelOpen(!0),
|
|
3611
|
-
nativeManagementLink:
|
|
3612
|
-
nativeTerminal:
|
|
3613
|
-
}),
|
|
3614
|
-
productLabel:
|
|
3615
|
-
nativeManagementLink:
|
|
3616
|
-
nativeTerminal:
|
|
3617
|
-
workspaceEnabled:
|
|
3620
|
+
nativeManagementLink: U,
|
|
3621
|
+
nativeTerminal: M.NativeTerminal
|
|
3622
|
+
}), W ? /* @__PURE__ */ T(b, {
|
|
3623
|
+
productLabel: Ie,
|
|
3624
|
+
nativeManagementLink: U,
|
|
3625
|
+
nativeTerminal: M.NativeTerminal,
|
|
3626
|
+
workspaceEnabled: V,
|
|
3618
3627
|
onOpenWorkspace: () => _.getState().setWorkspacePanelOpen(!0)
|
|
3619
|
-
}) : /* @__PURE__ */ E(re, { children: [/* @__PURE__ */ T(
|
|
3628
|
+
}) : /* @__PURE__ */ E(re, { children: [/* @__PURE__ */ T(Un, {
|
|
3620
3629
|
agentName: f,
|
|
3621
|
-
isMobile:
|
|
3622
|
-
onDeleteFeedback:
|
|
3623
|
-
onSubmitFeedback:
|
|
3624
|
-
onRespondToApproval:
|
|
3625
|
-
onStopGeneration:
|
|
3626
|
-
onCancelRemote:
|
|
3627
|
-
checkpointResumeEnabled:
|
|
3628
|
-
onResumeCheckpoint:
|
|
3629
|
-
onLoadOlderSessionEvents:
|
|
3630
|
-
}), /* @__PURE__ */ T(
|
|
3631
|
-
composerMaxHeight:
|
|
3632
|
-
submitDraft:
|
|
3633
|
-
stopGeneration:
|
|
3634
|
-
cancelRemote:
|
|
3635
|
-
isMobile:
|
|
3630
|
+
isMobile: L,
|
|
3631
|
+
onDeleteFeedback: ke,
|
|
3632
|
+
onSubmitFeedback: Oe,
|
|
3633
|
+
onRespondToApproval: je,
|
|
3634
|
+
onStopGeneration: Ee,
|
|
3635
|
+
onCancelRemote: M.StopRun ? De : void 0,
|
|
3636
|
+
checkpointResumeEnabled: M.RunLifecycle.Enabled && M.RunLifecycle.Checkpoints && M.RunLifecycle.CheckpointResume,
|
|
3637
|
+
onResumeCheckpoint: Te,
|
|
3638
|
+
onLoadOlderSessionEvents: me
|
|
3639
|
+
}), /* @__PURE__ */ T(qn, {
|
|
3640
|
+
composerMaxHeight: ue,
|
|
3641
|
+
submitDraft: xe,
|
|
3642
|
+
stopGeneration: Ee,
|
|
3643
|
+
cancelRemote: M.StopRun ? De : void 0,
|
|
3644
|
+
isMobile: L
|
|
3636
3645
|
})] })]
|
|
3637
3646
|
}),
|
|
3638
3647
|
/* @__PURE__ */ T(ee, {
|
|
@@ -3640,22 +3649,22 @@ function dr({ apiAdapter: e, initialSurface: r = "chat", routeShell: i } = {}) {
|
|
|
3640
3649
|
capability: S,
|
|
3641
3650
|
workspacePanelOpen: w,
|
|
3642
3651
|
workspacePanelWidth: D,
|
|
3643
|
-
workspacePanelFullscreen:
|
|
3644
|
-
isMobile:
|
|
3645
|
-
workspaceEnabled:
|
|
3652
|
+
workspacePanelFullscreen: O,
|
|
3653
|
+
isMobile: L,
|
|
3654
|
+
workspaceEnabled: V,
|
|
3646
3655
|
workspaceFiles: S,
|
|
3647
|
-
workspacePanelPresentation:
|
|
3656
|
+
workspacePanelPresentation: H,
|
|
3648
3657
|
closeWorkspacePanel: () => {
|
|
3649
3658
|
_.getState().setWorkspacePanelFullscreen(!1), _.getState().setWorkspacePanelOpen(!1);
|
|
3650
3659
|
},
|
|
3651
3660
|
handleWorkspacePanelResizeStart: (e) => {
|
|
3652
|
-
if (
|
|
3661
|
+
if (O || L) return;
|
|
3653
3662
|
e.preventDefault();
|
|
3654
|
-
let t = e.clientX, n = D, r =
|
|
3663
|
+
let t = e.clientX, n = D, r = Ne && K ? 280 : 0, i = document.body.style.cursor, a = document.body.style.userSelect;
|
|
3655
3664
|
document.body.style.cursor = "col-resize", document.body.style.userSelect = "none";
|
|
3656
3665
|
let o = (e) => {
|
|
3657
3666
|
let i = n + t - e.clientX;
|
|
3658
|
-
_.getState().setWorkspacePanelWidth(
|
|
3667
|
+
_.getState().setWorkspacePanelWidth(ht(i, window.innerWidth, r));
|
|
3659
3668
|
}, s = () => {
|
|
3660
3669
|
document.body.style.cursor = i, document.body.style.userSelect = a, window.removeEventListener("pointermove", o), window.removeEventListener("pointerup", s), window.removeEventListener("pointercancel", s);
|
|
3661
3670
|
};
|
|
@@ -3663,53 +3672,53 @@ function dr({ apiAdapter: e, initialSurface: r = "chat", routeShell: i } = {}) {
|
|
|
3663
3672
|
},
|
|
3664
3673
|
api: a
|
|
3665
3674
|
}),
|
|
3666
|
-
|
|
3675
|
+
N && /* @__PURE__ */ T(ie, {
|
|
3667
3676
|
fallback: null,
|
|
3668
|
-
children: /* @__PURE__ */ T(
|
|
3677
|
+
children: /* @__PURE__ */ T(ur, {})
|
|
3669
3678
|
}),
|
|
3670
|
-
|
|
3679
|
+
Be ? /* @__PURE__ */ T(ie, {
|
|
3671
3680
|
fallback: null,
|
|
3672
|
-
children: /* @__PURE__ */ T(
|
|
3673
|
-
capability:
|
|
3681
|
+
children: /* @__PURE__ */ T(dr, {
|
|
3682
|
+
capability: M.NativeTerminal,
|
|
3674
3683
|
open: !0,
|
|
3675
3684
|
sessionId: s,
|
|
3676
|
-
onClose: () =>
|
|
3685
|
+
onClose: () => ze(!1)
|
|
3677
3686
|
})
|
|
3678
3687
|
}) : null
|
|
3679
3688
|
]
|
|
3680
3689
|
});
|
|
3681
|
-
return i ? /* @__PURE__ */ T(i, { children:
|
|
3690
|
+
return i ? /* @__PURE__ */ T(i, { children: Ve }) : Ve;
|
|
3682
3691
|
}
|
|
3683
3692
|
//#endregion
|
|
3684
3693
|
//#region src/core/transport/sse-transport.ts
|
|
3685
|
-
function
|
|
3694
|
+
function pr(e, t) {
|
|
3686
3695
|
if (e.eventName === "__ping__") {
|
|
3687
|
-
|
|
3696
|
+
I.getState().updateActivity({ countEvent: !1 });
|
|
3688
3697
|
return;
|
|
3689
3698
|
}
|
|
3690
3699
|
t.onEvent(e);
|
|
3691
3700
|
}
|
|
3692
|
-
var
|
|
3701
|
+
var mr = class {
|
|
3693
3702
|
protocol = "sse-post";
|
|
3694
3703
|
async connect(e, t) {
|
|
3695
|
-
let n = (await
|
|
3704
|
+
let n = (await ze(e.action, e.body || {}, { signal: e.signal })).getReader(), r = new TextDecoder(), i = "", a = !1;
|
|
3696
3705
|
return (async () => {
|
|
3697
3706
|
try {
|
|
3698
3707
|
for (; !a;) {
|
|
3699
3708
|
let { value: e, done: a } = await n.read();
|
|
3700
3709
|
if (a) break;
|
|
3701
3710
|
i += r.decode(e, { stream: !0 });
|
|
3702
|
-
let { chunks: o, remainder: s } =
|
|
3711
|
+
let { chunks: o, remainder: s } = dt(i);
|
|
3703
3712
|
i = s;
|
|
3704
3713
|
for (let e of o) {
|
|
3705
3714
|
if (!e.trim()) continue;
|
|
3706
|
-
let n =
|
|
3715
|
+
let n = ut(e);
|
|
3707
3716
|
for (let e of n) {
|
|
3708
3717
|
if (e.eventName === "__done__") {
|
|
3709
3718
|
t.onComplete();
|
|
3710
3719
|
return;
|
|
3711
3720
|
}
|
|
3712
|
-
|
|
3721
|
+
pr(e, t);
|
|
3713
3722
|
}
|
|
3714
3723
|
}
|
|
3715
3724
|
}
|
|
@@ -3721,27 +3730,27 @@ var pr = class {
|
|
|
3721
3730
|
a = !0, n.cancel().catch(() => {});
|
|
3722
3731
|
};
|
|
3723
3732
|
}
|
|
3724
|
-
},
|
|
3733
|
+
}, hr = class {
|
|
3725
3734
|
protocol = "sse-get";
|
|
3726
3735
|
async connect(e, t) {
|
|
3727
|
-
let n = (await
|
|
3736
|
+
let n = (await Be(e.action, e.params || {}, { signal: e.signal })).getReader(), r = new TextDecoder(), i = "", a = !1;
|
|
3728
3737
|
return (async () => {
|
|
3729
3738
|
try {
|
|
3730
3739
|
for (; !a;) {
|
|
3731
3740
|
let { value: e, done: a } = await n.read();
|
|
3732
3741
|
if (a) break;
|
|
3733
3742
|
i += r.decode(e, { stream: !0 });
|
|
3734
|
-
let { chunks: o, remainder: s } =
|
|
3743
|
+
let { chunks: o, remainder: s } = dt(i);
|
|
3735
3744
|
i = s;
|
|
3736
3745
|
for (let e of o) {
|
|
3737
3746
|
if (!e.trim()) continue;
|
|
3738
|
-
let n =
|
|
3747
|
+
let n = ut(e);
|
|
3739
3748
|
for (let e of n) {
|
|
3740
3749
|
if (e.eventName === "__done__") {
|
|
3741
3750
|
t.onComplete();
|
|
3742
3751
|
return;
|
|
3743
3752
|
}
|
|
3744
|
-
|
|
3753
|
+
pr(e, t);
|
|
3745
3754
|
}
|
|
3746
3755
|
}
|
|
3747
3756
|
}
|
|
@@ -3755,4 +3764,4 @@ var pr = class {
|
|
|
3755
3764
|
}
|
|
3756
3765
|
};
|
|
3757
3766
|
//#endregion
|
|
3758
|
-
export {
|
|
3767
|
+
export { fr as AgentWorkbench, cr as ApiFacadeImpl, xt as RunEngineImpl, hr as SseGetTransport, mr as SsePostTransport, ct as createProtocol };
|