@kingsoftcloud/ksadk-web 0.2.12 → 0.2.14
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 +21 -0
- package/dist-ksadk/assets/{ArtifactsPanel-DSLAubI4.js → ArtifactsPanel-CxRqXeFB.js} +1 -1
- package/dist-ksadk/assets/{CodeBlock-pxXnLO20.js → CodeBlock-B5bFiAKG.js} +1 -1
- package/dist-ksadk/assets/{MathMessageMarkdown-vOUxyiqo.js → MathMessageMarkdown-Cakvv8ak.js} +1 -1
- package/dist-ksadk/assets/{MermaidBlock-DesVdOvu.js → MermaidBlock-DjmCTJrc.js} +6 -6
- package/dist-ksadk/assets/{NativeTerminalPanel-DOlS-2_E.js → NativeTerminalPanel-D-sZnV-D.js} +1 -1
- package/dist-ksadk/assets/{arc-Dy1xS0fu.js → arc-dLUDly6v.js} +1 -1
- package/dist-ksadk/assets/architecture-7EHR7CIX-BR8hGnnI.js +1 -0
- package/dist-ksadk/assets/{architectureDiagram-3BPJPVTR-CBjkKkYl.js → architectureDiagram-3BPJPVTR-CXZJNk2O.js} +1 -1
- package/dist-ksadk/assets/{blockDiagram-GPEHLZMM-A8m3qj2U.js → blockDiagram-GPEHLZMM-C0A07SPB.js} +1 -1
- package/dist-ksadk/assets/{c4Diagram-AAUBKEIU-DpyviLny.js → c4Diagram-AAUBKEIU-Ci75QRd7.js} +1 -1
- package/dist-ksadk/assets/channel-CdDcmpAO.js +1 -0
- package/dist-ksadk/assets/{chunk-2J33WTMH-BxgBSaDe.js → chunk-2J33WTMH-DBBOX5G_.js} +1 -1
- package/dist-ksadk/assets/{chunk-4BX2VUAB-B5-MRUoY.js → chunk-4BX2VUAB-BYyES0-U.js} +1 -1
- package/dist-ksadk/assets/{chunk-55IACEB6-p_lPjbBV.js → chunk-55IACEB6-X1wVcZov.js} +1 -1
- package/dist-ksadk/assets/{chunk-727SXJPM-CCkvnt-w.js → chunk-727SXJPM-BcTjFgHJ.js} +1 -1
- package/dist-ksadk/assets/{chunk-AQP2D5EJ-CVwRFsQH.js → chunk-AQP2D5EJ-Bg19U8CG.js} +1 -1
- package/dist-ksadk/assets/{chunk-FMBD7UC4-CX-pqxDO.js → chunk-FMBD7UC4-DOdBG1VM.js} +1 -1
- package/dist-ksadk/assets/{chunk-ND2GUHAM-C3UnR0sJ.js → chunk-ND2GUHAM-CZ7jcUkW.js} +1 -1
- package/dist-ksadk/assets/chunk-QZHKN3VN-BNqAy5Tp.js +1 -0
- package/dist-ksadk/assets/classDiagram-4FO5ZUOK-kJAwmk1I.js +1 -0
- package/dist-ksadk/assets/classDiagram-v2-Q7XG4LA2-kJAwmk1I.js +1 -0
- package/dist-ksadk/assets/{cose-bilkent-S5V4N54A-KvsU4x5h.js → cose-bilkent-S5V4N54A-LImGWpXS.js} +1 -1
- package/dist-ksadk/assets/{dagre-BM42HDAG-Dor0aZOJ.js → dagre-BM42HDAG-LWSiyPO5.js} +1 -1
- package/dist-ksadk/assets/{diagram-2AECGRRQ-DlHEhTI3.js → diagram-2AECGRRQ-BYQ1-uMG.js} +1 -1
- package/dist-ksadk/assets/{diagram-5GNKFQAL-COX0cMU1.js → diagram-5GNKFQAL-CoscR6zV.js} +1 -1
- package/dist-ksadk/assets/{diagram-KO2AKTUF-BCOXFG8k.js → diagram-KO2AKTUF-C_YHGeGz.js} +1 -1
- package/dist-ksadk/assets/{diagram-LMA3HP47-CMfmsn69.js → diagram-LMA3HP47-UA9S7eMh.js} +1 -1
- package/dist-ksadk/assets/{diagram-OG6HWLK6-dDeGgX0v.js → diagram-OG6HWLK6-xb-BIxhQ.js} +1 -1
- package/dist-ksadk/assets/{dist-C_xWNM7J.js → dist-BN67A8Jb.js} +1 -1
- package/dist-ksadk/assets/{dist-F9T-QRU1.js → dist-BO_i3wTp.js} +1 -1
- package/dist-ksadk/assets/{dist-1zCAwoLz.js → dist-BSEaDmB3.js} +1 -1
- package/dist-ksadk/assets/{dist-DEF9mj61.js → dist-BbOk8yab.js} +1 -1
- package/dist-ksadk/assets/{dist-CTmbtesv.js → dist-C-SpQsj4.js} +1 -1
- package/dist-ksadk/assets/{dist-ZNy_TFjx.js → dist-C3dfbJrb.js} +1 -1
- package/dist-ksadk/assets/{dist-PqBiVJVJ.js → dist-C8_rGVba.js} +1 -1
- package/dist-ksadk/assets/{dist-FnmAZ-Xx.js → dist-CEVua9Eb.js} +1 -1
- package/dist-ksadk/assets/{dist-BsVBlEZ-.js → dist-CKJBIiBi.js} +1 -1
- package/dist-ksadk/assets/{dist-DGhCKjVB.js → dist-CVudmOOm.js} +1 -1
- package/dist-ksadk/assets/{dist-CBtdzJEM.js → dist-CdMMvfr6.js} +1 -1
- package/dist-ksadk/assets/{dist-gpThSr_q.js → dist-CyKvrqPM.js} +1 -1
- package/dist-ksadk/assets/{dist-Bs03i11H.js → dist-DQLMpQHj.js} +1 -1
- package/dist-ksadk/assets/{dist--gHV8n2o.js → dist-DcvDWjsp.js} +1 -1
- package/dist-ksadk/assets/{dist-CAYJMjuY.js → dist-DhkdZMPd.js} +1 -1
- package/dist-ksadk/assets/{dist-CbFZd4ak.js → dist-Dnmy_buX.js} +1 -1
- package/dist-ksadk/assets/{dist-Q9aY3kIX.js → dist-Dt5LrVjn.js} +1 -1
- package/dist-ksadk/assets/{dist-C4sTOYcS.js → dist-OO89-qp7.js} +1 -1
- package/dist-ksadk/assets/{dist-uU7j34p0.js → dist-QYwBW_Mf.js} +1 -1
- package/dist-ksadk/assets/{dist-UOQFiknI.js → dist-g4PPpv9n.js} +1 -1
- package/dist-ksadk/assets/{dist-BENjs6Lb.js → dist-hk2k8DQi.js} +1 -1
- package/dist-ksadk/assets/{dist-C57vSV86.js → dist-v8-edRr5.js} +1 -1
- package/dist-ksadk/assets/{erDiagram-TEJ5UH35-gIf_3lYO.js → erDiagram-TEJ5UH35-BfVYHmwK.js} +1 -1
- package/dist-ksadk/assets/eventmodeling-FCH6USID-Dyg6WIdS.js +1 -0
- package/dist-ksadk/assets/{flowDiagram-I6XJVG4X-HKcmvyYs.js → flowDiagram-I6XJVG4X-B0mh3WpY.js} +1 -1
- package/dist-ksadk/assets/{ganttDiagram-6RSMTGT7-Tu7c867c.js → ganttDiagram-6RSMTGT7-Ce9oLqyz.js} +1 -1
- package/dist-ksadk/assets/gitGraph-WXDBUCRP-CJDHEJBG.js +1 -0
- package/dist-ksadk/assets/{gitGraphDiagram-PVQCEYII-BrcpuI5k.js → gitGraphDiagram-PVQCEYII-BW6e6-uy.js} +1 -1
- package/dist-ksadk/assets/index-DAloZguQ.js +165 -0
- package/dist-ksadk/assets/info-J43DQDTF-ckVPO-5m.js +1 -0
- package/dist-ksadk/assets/{infoDiagram-5YYISTIA-CDU4UHsD.js → infoDiagram-5YYISTIA-BwspFfOK.js} +1 -1
- package/dist-ksadk/assets/{ishikawaDiagram-YF4QCWOH-oloatnes.js → ishikawaDiagram-YF4QCWOH-CrkBysug.js} +1 -1
- package/dist-ksadk/assets/{journeyDiagram-JHISSGLW-BN7V35oe.js → journeyDiagram-JHISSGLW-BS1qzm5Q.js} +1 -1
- package/dist-ksadk/assets/{kanban-definition-UN3LZRKU-U3-ruXcw.js → kanban-definition-UN3LZRKU-BSakP2aP.js} +1 -1
- package/dist-ksadk/assets/{katex-C2Z3urCp.js → katex-CQNj0JzG.js} +1 -1
- package/dist-ksadk/assets/{linear-HlEDIOWb.js → linear-KHZ9eUcI.js} +1 -1
- package/dist-ksadk/assets/{mermaid-parser.core-D7S0E4RN.js → mermaid-parser.core-xP6AVGz-.js} +2 -2
- package/dist-ksadk/assets/{mindmap-definition-RKZ34NQL-Clz8TER4.js → mindmap-definition-RKZ34NQL-CKjP2Jfe.js} +1 -1
- package/dist-ksadk/assets/packet-YPE3B663-CelVJ5KC.js +1 -0
- package/dist-ksadk/assets/pie-LRSECV5Y-BQm2YBEx.js +1 -0
- package/dist-ksadk/assets/{pieDiagram-4H26LBE5-Bq6P4wmH.js → pieDiagram-4H26LBE5-CJUDzb-Y.js} +1 -1
- package/dist-ksadk/assets/{quadrantDiagram-W4KKPZXB-DK4HwHPd.js → quadrantDiagram-W4KKPZXB-BLDLN79K.js} +1 -1
- package/dist-ksadk/assets/radar-GUYGQ44K-CiG38998.js +1 -0
- package/dist-ksadk/assets/{requirementDiagram-4Y6WPE33-CJa5jzKr.js → requirementDiagram-4Y6WPE33-DhMP6V-i.js} +1 -1
- package/dist-ksadk/assets/{sankeyDiagram-5OEKKPKP-BWkAvlqD.js → sankeyDiagram-5OEKKPKP-MY_PXr4h.js} +1 -1
- package/dist-ksadk/assets/{sequenceDiagram-3UESZ5HK-C0CubPXc.js → sequenceDiagram-3UESZ5HK-DxKPwAiT.js} +1 -1
- package/dist-ksadk/assets/{stateDiagram-AJRCARHV-ChiGIi7R.js → stateDiagram-AJRCARHV-D-zq5Ly7.js} +1 -1
- package/dist-ksadk/assets/stateDiagram-v2-BHNVJYJU-eUE0VNmH.js +1 -0
- package/dist-ksadk/assets/{timeline-definition-PNZ67QCA-DpI_se_A.js → timeline-definition-PNZ67QCA-DXaT6533.js} +1 -1
- package/dist-ksadk/assets/treeView-BLDUP644-BoPwXqJw.js +1 -0
- package/dist-ksadk/assets/treemap-LRROVOQU-BPFM7kEk.js +1 -0
- package/dist-ksadk/assets/{vennDiagram-CIIHVFJN-GHKSrJ1N.js → vennDiagram-CIIHVFJN-_DkELB7r.js} +1 -1
- package/dist-ksadk/assets/wardley-L42UT6IY-BC_mlbWj.js +1 -0
- package/dist-ksadk/assets/{wardleyDiagram-YWT4CUSO-7M8-ddnD.js → wardleyDiagram-YWT4CUSO-DUfjRpDy.js} +1 -1
- package/dist-ksadk/assets/{xychartDiagram-2RQKCTM6-n95Gfz0x.js → xychartDiagram-2RQKCTM6-DSpH_C9e.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/api/checkpoints.d.ts +2 -2
- package/dist-lib/api/checkpoints.d.ts.map +1 -1
- package/dist-lib/components.js +2 -2
- package/dist-lib/hooks/useSessionLifecycle.d.ts.map +1 -1
- package/dist-lib/runtime.js +695 -678
- package/dist-lib/utils/markdown.d.ts.map +1 -1
- package/dist-lib/utils/session-events.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,13 +1721,18 @@ 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",
|
|
1728
1728
|
"cancelled",
|
|
1729
1729
|
"canceled",
|
|
1730
1730
|
"aborted"
|
|
1731
|
+
]), Ft = new Set([
|
|
1732
|
+
"tool_call",
|
|
1733
|
+
"tool_result",
|
|
1734
|
+
"stage_tool_call",
|
|
1735
|
+
"stage_tool_result"
|
|
1731
1736
|
]);
|
|
1732
1737
|
function It(e) {
|
|
1733
1738
|
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("") : "";
|
|
@@ -1817,7 +1822,7 @@ function Bt(e) {
|
|
|
1817
1822
|
function Vt(e) {
|
|
1818
1823
|
let t = e?.Metadata?.responses_output;
|
|
1819
1824
|
if (!Array.isArray(t)) return {};
|
|
1820
|
-
let n =
|
|
1825
|
+
let n = Ke(), r = tt({
|
|
1821
1826
|
eventName: "response.completed",
|
|
1822
1827
|
data: { response: {
|
|
1823
1828
|
id: String(e.Metadata?.response_id || ""),
|
|
@@ -1904,12 +1909,12 @@ function Jt(e) {
|
|
|
1904
1909
|
}
|
|
1905
1910
|
function Yt(e) {
|
|
1906
1911
|
let t = String(e?.EventType || "");
|
|
1907
|
-
if (t
|
|
1912
|
+
if (!Ft.has(t)) return null;
|
|
1908
1913
|
let n = String(e.Metadata?.tool_name || e.Metadata?.name || e.Metadata?.function_name || It(e.Content?.parts) || "tool").trim() || "tool", r = {
|
|
1909
1914
|
name: n,
|
|
1910
1915
|
args: "",
|
|
1911
1916
|
status: "running"
|
|
1912
|
-
}, i = t === "tool_result" ? (() => {
|
|
1917
|
+
}, i = t === "tool_result" || t === "stage_tool_result" ? (() => {
|
|
1913
1918
|
let t = Jt(e.Metadata?.tool_output ?? e.Metadata?.output ?? e.Metadata?.result ?? It(e.Content?.parts));
|
|
1914
1919
|
return {
|
|
1915
1920
|
...r,
|
|
@@ -1940,7 +1945,7 @@ function Xt(e = {}, t = {}) {
|
|
|
1940
1945
|
return n;
|
|
1941
1946
|
}
|
|
1942
1947
|
function Zt(e = {}, t = "") {
|
|
1943
|
-
let n = String(t || "").trim().toLowerCase(), r = n === "completed" ? "completed" :
|
|
1948
|
+
let n = String(t || "").trim().toLowerCase(), r = n === "completed" ? "completed" : Pt.has(n) ? "error" : "";
|
|
1944
1949
|
if (!r) return e;
|
|
1945
1950
|
let i = !1, a = {};
|
|
1946
1951
|
for (let [t, n] of Object.entries(e || {})) n?.status === "running" ? (i = !0, a[t] = {
|
|
@@ -2023,7 +2028,7 @@ function tn(e) {
|
|
|
2023
2028
|
eventType: t
|
|
2024
2029
|
} : null;
|
|
2025
2030
|
}
|
|
2026
|
-
if (t
|
|
2031
|
+
if (Ft.has(t)) return Yt(e);
|
|
2027
2032
|
if (t !== "user_message" && t !== "assistant_message" && t !== "assistant_stream_snapshot") return null;
|
|
2028
2033
|
let n = Bt(e), r = t === "assistant_message" ? Vt(e) : {};
|
|
2029
2034
|
if (!n.text && !n.attachments?.length && !r.reasoning && !r.tools) return null;
|
|
@@ -2086,7 +2091,10 @@ function nn(e = []) {
|
|
|
2086
2091
|
"assistant_message",
|
|
2087
2092
|
"assistant_stream_snapshot",
|
|
2088
2093
|
"reasoning",
|
|
2089
|
-
"tool_call"
|
|
2094
|
+
"tool_call",
|
|
2095
|
+
"tool_result",
|
|
2096
|
+
"stage_tool_call",
|
|
2097
|
+
"stage_tool_result"
|
|
2090
2098
|
].includes(String(e.EventType || "")) && r.add(a), e.EventType === "run_status" && a && (t.set(a, String(e.Content?.status || "").trim()), n.set(a, e));
|
|
2091
2099
|
}
|
|
2092
2100
|
let p = [], m = /* @__PURE__ */ new Map(), h = null, g = /* @__PURE__ */ new Map(), _ = (e) => {
|
|
@@ -2108,7 +2116,7 @@ function nn(e = []) {
|
|
|
2108
2116
|
if (e.EventType === "run_status") continue;
|
|
2109
2117
|
let t = tn(e);
|
|
2110
2118
|
if (!t) continue;
|
|
2111
|
-
if (
|
|
2119
|
+
if (Ft.has(t.eventType)) {
|
|
2112
2120
|
let n = String(e.InvocationId || "").trim();
|
|
2113
2121
|
if (!n) {
|
|
2114
2122
|
v(), _(t);
|
|
@@ -2206,11 +2214,11 @@ function an(e = []) {
|
|
|
2206
2214
|
}, 0);
|
|
2207
2215
|
}
|
|
2208
2216
|
function on(e) {
|
|
2209
|
-
return e?.EventType === "run_status" ?
|
|
2217
|
+
return e?.EventType === "run_status" ? Pt.has(String(e.Content?.status || "").trim().toLowerCase()) : !1;
|
|
2210
2218
|
}
|
|
2211
2219
|
//#endregion
|
|
2212
2220
|
//#region src/core/run/dispatcher.ts
|
|
2213
|
-
var
|
|
2221
|
+
var $ = !1, sn = new Set(["completed"]), cn = new Set([
|
|
2214
2222
|
"failed",
|
|
2215
2223
|
"error",
|
|
2216
2224
|
"cancelled",
|
|
@@ -2218,8 +2226,8 @@ var Q = !1, sn = new Set(["completed"]), cn = new Set([
|
|
|
2218
2226
|
"aborted",
|
|
2219
2227
|
"incomplete"
|
|
2220
2228
|
]);
|
|
2221
|
-
function
|
|
2222
|
-
|
|
2229
|
+
function ln(e) {
|
|
2230
|
+
$ || ($ = !0, q.getState().patchMessages((t) => [...t, {
|
|
2223
2231
|
id: e,
|
|
2224
2232
|
role: "model",
|
|
2225
2233
|
content: "",
|
|
@@ -2227,9 +2235,9 @@ function $(e) {
|
|
|
2227
2235
|
reasoning: ""
|
|
2228
2236
|
}]));
|
|
2229
2237
|
}
|
|
2230
|
-
function
|
|
2238
|
+
function un(e) {
|
|
2231
2239
|
let t = String(e || "").trim().toLowerCase(), n = sn.has(t) ? "completed" : cn.has(t) ? "error" : null;
|
|
2232
|
-
n &&
|
|
2240
|
+
n && q.getState().patchMessages((e) => e.map((e) => {
|
|
2233
2241
|
if (!e.tools) return e;
|
|
2234
2242
|
let t = !1, r = Object.fromEntries(Object.entries(e.tools).map(([e, r]) => r.status === "running" ? (t = !0, [e, {
|
|
2235
2243
|
...r,
|
|
@@ -2241,15 +2249,15 @@ function ln(e) {
|
|
|
2241
2249
|
} : e;
|
|
2242
2250
|
}));
|
|
2243
2251
|
}
|
|
2244
|
-
function
|
|
2245
|
-
if (e.sessionId &&
|
|
2246
|
-
e.type === "stage_changed" && (e.stage === "completing" || e.stage === "error" || e.stage === "cancelled") && (
|
|
2252
|
+
function dn(e) {
|
|
2253
|
+
if (e.sessionId && R.getState().currentSessionId !== e.sessionId) {
|
|
2254
|
+
e.type === "stage_changed" && (e.stage === "completing" || e.stage === "error" || e.stage === "cancelled") && ($ = !1);
|
|
2247
2255
|
return;
|
|
2248
2256
|
}
|
|
2249
|
-
let t =
|
|
2257
|
+
let t = q.getState();
|
|
2250
2258
|
switch (e.type) {
|
|
2251
2259
|
case "activity":
|
|
2252
|
-
|
|
2260
|
+
I.getState().updateActivity({
|
|
2253
2261
|
sessionId: e.sessionId,
|
|
2254
2262
|
source: e.source,
|
|
2255
2263
|
status: e.status,
|
|
@@ -2267,28 +2275,28 @@ function un(e) {
|
|
|
2267
2275
|
}]);
|
|
2268
2276
|
break;
|
|
2269
2277
|
case "assistant_message_created":
|
|
2270
|
-
|
|
2278
|
+
ln(e.messageId);
|
|
2271
2279
|
break;
|
|
2272
2280
|
case "text_delta":
|
|
2273
|
-
|
|
2281
|
+
ln(e.messageId), t.patchMessages((t) => t.map((t) => t.id === e.messageId ? {
|
|
2274
2282
|
...t,
|
|
2275
2283
|
content: t.content + e.delta
|
|
2276
2284
|
} : t));
|
|
2277
2285
|
break;
|
|
2278
2286
|
case "text_final":
|
|
2279
|
-
|
|
2287
|
+
ln(e.messageId), t.patchMessages((t) => t.map((t) => t.id === e.messageId ? {
|
|
2280
2288
|
...t,
|
|
2281
2289
|
content: e.text
|
|
2282
2290
|
} : t));
|
|
2283
2291
|
break;
|
|
2284
2292
|
case "reasoning_delta":
|
|
2285
|
-
|
|
2293
|
+
ln(e.messageId), t.patchMessages((t) => t.map((t) => t.id === e.messageId ? {
|
|
2286
2294
|
...t,
|
|
2287
2295
|
reasoning: (t.reasoning || "") + e.delta
|
|
2288
2296
|
} : t));
|
|
2289
2297
|
break;
|
|
2290
2298
|
case "tool_upsert":
|
|
2291
|
-
|
|
2299
|
+
ln(e.messageId), t.patchMessages((t) => t.map((t) => t.id === e.messageId ? {
|
|
2292
2300
|
...t,
|
|
2293
2301
|
tools: {
|
|
2294
2302
|
...t.tools || {},
|
|
@@ -2307,7 +2315,7 @@ function un(e) {
|
|
|
2307
2315
|
} : t));
|
|
2308
2316
|
break;
|
|
2309
2317
|
case "tool_result":
|
|
2310
|
-
|
|
2318
|
+
ln(e.messageId), t.patchMessages((t) => t.map((t) => t.id === e.messageId ? {
|
|
2311
2319
|
...t,
|
|
2312
2320
|
tools: {
|
|
2313
2321
|
...t.tools || {},
|
|
@@ -2345,16 +2353,16 @@ function un(e) {
|
|
|
2345
2353
|
break;
|
|
2346
2354
|
}
|
|
2347
2355
|
case "stage_changed":
|
|
2348
|
-
e.stage === "streaming" || e.stage === "connecting" ?
|
|
2356
|
+
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
2357
|
break;
|
|
2350
2358
|
case "stream_ended":
|
|
2351
|
-
|
|
2352
|
-
let t =
|
|
2359
|
+
I.getState().setSessionStreaming(e.sessionId, !1), globalThis.setTimeout(() => {
|
|
2360
|
+
let t = I.getState();
|
|
2353
2361
|
t.getSessionActivity(e.sessionId)?.status === "completed" && t.clearSessionActivity(e.sessionId);
|
|
2354
|
-
}, 2400),
|
|
2362
|
+
}, 2400), $ = !1;
|
|
2355
2363
|
break;
|
|
2356
2364
|
case "error":
|
|
2357
|
-
|
|
2365
|
+
I.getState().setSessionStreaming(e.sessionId, !1), I.getState().updateActivity({
|
|
2358
2366
|
sessionId: e.sessionId,
|
|
2359
2367
|
status: "failed",
|
|
2360
2368
|
phase: "连接断开或生成出错",
|
|
@@ -2364,25 +2372,25 @@ function un(e) {
|
|
|
2364
2372
|
role: "model",
|
|
2365
2373
|
content: "连接断开或生成出错。",
|
|
2366
2374
|
timestamp: Date.now()
|
|
2367
|
-
}]),
|
|
2375
|
+
}]), $ = !1;
|
|
2368
2376
|
break;
|
|
2369
2377
|
case "terminal":
|
|
2370
|
-
|
|
2378
|
+
un(e.status);
|
|
2371
2379
|
break;
|
|
2372
2380
|
case "stream_event":
|
|
2373
|
-
if (e.event.EventType === "run_checkpoint" &&
|
|
2381
|
+
if (e.event.EventType === "run_checkpoint" && Q.getState().upsertSessionCheckpoint(e.sessionId || e.event.SessionId, e.event), e.event.EventType === "run_status") {
|
|
2374
2382
|
let t = String(e.event.Content?.status || "").trim().toLowerCase();
|
|
2375
|
-
t === "completed" ?
|
|
2383
|
+
t === "completed" ? I.getState().updateActivity({
|
|
2376
2384
|
sessionId: e.sessionId || e.event.SessionId,
|
|
2377
2385
|
status: "completed",
|
|
2378
2386
|
phase: "后台长任务已完成",
|
|
2379
2387
|
countEvent: !1
|
|
2380
|
-
}) : t === "cancelled" || t === "canceled" || t === "aborted" ?
|
|
2388
|
+
}) : t === "cancelled" || t === "canceled" || t === "aborted" ? I.getState().updateActivity({
|
|
2381
2389
|
sessionId: e.sessionId || e.event.SessionId,
|
|
2382
2390
|
status: "stopped",
|
|
2383
2391
|
phase: "后台长任务已取消",
|
|
2384
2392
|
countEvent: !1
|
|
2385
|
-
}) : (t === "failed" || t === "error") &&
|
|
2393
|
+
}) : (t === "failed" || t === "error") && I.getState().updateActivity({
|
|
2386
2394
|
sessionId: e.sessionId || e.event.SessionId,
|
|
2387
2395
|
status: "failed",
|
|
2388
2396
|
phase: "后台长任务失败",
|
|
@@ -2392,13 +2400,13 @@ function un(e) {
|
|
|
2392
2400
|
break;
|
|
2393
2401
|
}
|
|
2394
2402
|
}
|
|
2395
|
-
function
|
|
2396
|
-
|
|
2403
|
+
function fn() {
|
|
2404
|
+
$ = !1;
|
|
2397
2405
|
}
|
|
2398
2406
|
//#endregion
|
|
2399
2407
|
//#region src/hooks/useRunAgent.ts
|
|
2400
|
-
function
|
|
2401
|
-
let t =
|
|
2408
|
+
function pn(e) {
|
|
2409
|
+
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
2410
|
e.updateConfig({
|
|
2403
2411
|
agentId: r,
|
|
2404
2412
|
apiFormats: i,
|
|
@@ -2416,25 +2424,25 @@ function fn(e) {
|
|
|
2416
2424
|
s,
|
|
2417
2425
|
c,
|
|
2418
2426
|
f.RunLifecycle?.CheckpointResumePreview
|
|
2419
|
-
]), m =
|
|
2427
|
+
]), m = k((n) => {
|
|
2420
2428
|
let r = String(n || "new-session"), i = t.current.get(r);
|
|
2421
|
-
return i ? p(i) : (i = new
|
|
2429
|
+
return i ? p(i) : (i = new xt(e.api), p(i), i.subscribe(dn), t.current.set(r, i)), i;
|
|
2422
2430
|
}, [e.api, p]);
|
|
2423
|
-
|
|
2431
|
+
A(() => {
|
|
2424
2432
|
for (let e of t.current.values()) p(e);
|
|
2425
2433
|
}, [p]);
|
|
2426
|
-
let h =
|
|
2434
|
+
let h = k((e) => {
|
|
2427
2435
|
u.current.push(e), _.getState().setQueuedDrafts((t) => [...t, e]);
|
|
2428
|
-
}, [u]), g =
|
|
2436
|
+
}, [u]), g = k((e) => {
|
|
2429
2437
|
let i = l.current, a = m(i);
|
|
2430
2438
|
if (a.stage !== "idle") return !1;
|
|
2431
|
-
|
|
2439
|
+
fn(), _.getState().setMobileActionsOpen(!1), I.getState().setSessionStreaming(i, !0);
|
|
2432
2440
|
let o = e.text.trim(), s = String(Date.now()), c = e.attachments.map((e) => ({
|
|
2433
2441
|
name: e.name,
|
|
2434
2442
|
url: URL.createObjectURL(e),
|
|
2435
2443
|
type: e.type || "application/octet-stream"
|
|
2436
2444
|
}));
|
|
2437
|
-
(o || c.length > 0) &&
|
|
2445
|
+
(o || c.length > 0) && q.getState().patchMessages((e) => [...e, {
|
|
2438
2446
|
id: s,
|
|
2439
2447
|
role: "user",
|
|
2440
2448
|
content: o,
|
|
@@ -2448,24 +2456,24 @@ function fn(e) {
|
|
|
2448
2456
|
previousResponseId: e.previousResponseId,
|
|
2449
2457
|
sessionId: i,
|
|
2450
2458
|
onSessionCreated: (e) => {
|
|
2451
|
-
|
|
2459
|
+
R.getState().upsertSessions([{
|
|
2452
2460
|
SessionId: e,
|
|
2453
2461
|
UpdatedAt: (/* @__PURE__ */ new Date()).toISOString()
|
|
2454
|
-
}]), l.current = e,
|
|
2462
|
+
}]), l.current = e, we(r, e), R.getState().setCurrentSessionId(e), i !== e && t.current.set(e, a);
|
|
2455
2463
|
},
|
|
2456
2464
|
onSessionUpsert: () => {},
|
|
2457
2465
|
onSettled: (e) => {
|
|
2458
2466
|
d?.(e), n.current();
|
|
2459
2467
|
}
|
|
2460
2468
|
});
|
|
2461
|
-
return u ||
|
|
2469
|
+
return u || I.getState().setSessionStreaming(i, !1), u;
|
|
2462
2470
|
}, [
|
|
2463
2471
|
r,
|
|
2464
2472
|
l,
|
|
2465
2473
|
m,
|
|
2466
2474
|
d
|
|
2467
2475
|
]);
|
|
2468
|
-
return
|
|
2476
|
+
return A(() => {
|
|
2469
2477
|
n.current = () => {
|
|
2470
2478
|
let e = u.current.shift();
|
|
2471
2479
|
if (!e) {
|
|
@@ -2477,14 +2485,14 @@ function fn(e) {
|
|
|
2477
2485
|
});
|
|
2478
2486
|
};
|
|
2479
2487
|
}, [u, g]), {
|
|
2480
|
-
submitDraft:
|
|
2488
|
+
submitDraft: k(async (e, t, n, r) => {
|
|
2481
2489
|
let i = {
|
|
2482
2490
|
text: e,
|
|
2483
2491
|
attachments: t,
|
|
2484
2492
|
responsesInput: n,
|
|
2485
2493
|
previousResponseId: r
|
|
2486
2494
|
};
|
|
2487
|
-
if (m(l.current).stage !== "idle" &&
|
|
2495
|
+
if (m(l.current).stage !== "idle" && I.getState().isSessionStreaming(l.current)) {
|
|
2488
2496
|
n === void 0 && h({
|
|
2489
2497
|
text: e,
|
|
2490
2498
|
attachments: t
|
|
@@ -2501,38 +2509,38 @@ function fn(e) {
|
|
|
2501
2509
|
m,
|
|
2502
2510
|
g
|
|
2503
2511
|
]),
|
|
2504
|
-
stopGeneration:
|
|
2512
|
+
stopGeneration: k(() => {
|
|
2505
2513
|
m(l.current).stop();
|
|
2506
2514
|
}, [l, m]),
|
|
2507
|
-
disconnectRun:
|
|
2515
|
+
disconnectRun: k(() => {
|
|
2508
2516
|
m(l.current).disconnect();
|
|
2509
2517
|
}, [l, m]),
|
|
2510
|
-
resumeCheckpoint:
|
|
2518
|
+
resumeCheckpoint: k((e) => {
|
|
2511
2519
|
let t = m(e.sessionId);
|
|
2512
2520
|
if (t.stage !== "idle") return !1;
|
|
2513
|
-
|
|
2521
|
+
fn(), _.getState().setMobileActionsOpen(!1), I.getState().setSessionStreaming(e.sessionId, !0);
|
|
2514
2522
|
let r = t.resumeCheckpoint({
|
|
2515
2523
|
...e,
|
|
2516
2524
|
onSettled: (e) => {
|
|
2517
2525
|
d?.(e), n.current();
|
|
2518
2526
|
}
|
|
2519
2527
|
});
|
|
2520
|
-
return r ||
|
|
2528
|
+
return r || I.getState().setSessionStreaming(e.sessionId, !1), r;
|
|
2521
2529
|
}, [m, d]),
|
|
2522
|
-
resetCompaction:
|
|
2523
|
-
|
|
2530
|
+
resetCompaction: k(() => {
|
|
2531
|
+
fn();
|
|
2524
2532
|
}, [])
|
|
2525
2533
|
};
|
|
2526
2534
|
}
|
|
2527
2535
|
//#endregion
|
|
2528
2536
|
//#region src/hooks/useFeedback.ts
|
|
2529
|
-
function
|
|
2537
|
+
function mn(e) {
|
|
2530
2538
|
let { agentId: t, currentSessionId: n, isStreaming: r, api: i, submitDraft: a } = e;
|
|
2531
2539
|
return {
|
|
2532
|
-
submitResponseFeedback:
|
|
2540
|
+
submitResponseFeedback: k(async (e) => {
|
|
2533
2541
|
if (!n) return;
|
|
2534
2542
|
let r = null;
|
|
2535
|
-
|
|
2543
|
+
q.getState().patchMessages((t) => {
|
|
2536
2544
|
let n = v(t, {
|
|
2537
2545
|
messageId: e.message.id,
|
|
2538
2546
|
rating: e.rating,
|
|
@@ -2548,12 +2556,12 @@ function pn(e) {
|
|
|
2548
2556
|
rating: e.rating,
|
|
2549
2557
|
comment: e.comment || ""
|
|
2550
2558
|
})))?.Feedback);
|
|
2551
|
-
r &&
|
|
2559
|
+
r && q.getState().patchMessages((t) => s(t, {
|
|
2552
2560
|
messageId: e.message.id,
|
|
2553
2561
|
feedback: r
|
|
2554
2562
|
}));
|
|
2555
2563
|
} catch (t) {
|
|
2556
|
-
console.error("Failed to submit response feedback:", t),
|
|
2564
|
+
console.error("Failed to submit response feedback:", t), q.getState().patchMessages((t) => C(t, {
|
|
2557
2565
|
messageId: e.message.id,
|
|
2558
2566
|
previousFeedback: r
|
|
2559
2567
|
}));
|
|
@@ -2563,10 +2571,10 @@ function pn(e) {
|
|
|
2563
2571
|
n,
|
|
2564
2572
|
i
|
|
2565
2573
|
]),
|
|
2566
|
-
deleteResponseFeedback:
|
|
2574
|
+
deleteResponseFeedback: k(async (e) => {
|
|
2567
2575
|
if (!n) return;
|
|
2568
2576
|
let r = e.feedback ? { ...e.feedback } : null;
|
|
2569
|
-
|
|
2577
|
+
q.getState().patchMessages((t) => d(t, { messageId: e.id }));
|
|
2570
2578
|
try {
|
|
2571
2579
|
await i.deleteResponseFeedback(h({
|
|
2572
2580
|
agentId: t,
|
|
@@ -2574,7 +2582,7 @@ function pn(e) {
|
|
|
2574
2582
|
message: e
|
|
2575
2583
|
}));
|
|
2576
2584
|
} catch (t) {
|
|
2577
|
-
console.error("Failed to delete response feedback:", t),
|
|
2585
|
+
console.error("Failed to delete response feedback:", t), q.getState().patchMessages((t) => C(t, {
|
|
2578
2586
|
messageId: e.id,
|
|
2579
2587
|
previousFeedback: r
|
|
2580
2588
|
}));
|
|
@@ -2584,14 +2592,14 @@ function pn(e) {
|
|
|
2584
2592
|
n,
|
|
2585
2593
|
i
|
|
2586
2594
|
]),
|
|
2587
|
-
respondToApproval:
|
|
2588
|
-
!e.approvalRequestId || r || (
|
|
2595
|
+
respondToApproval: k((e) => {
|
|
2596
|
+
!e.approvalRequestId || r || (q.getState().patchMessages((t) => t.map((t) => ({
|
|
2589
2597
|
...t,
|
|
2590
2598
|
tools: t.tools ? Object.fromEntries(Object.entries(t.tools).map(([t, n]) => [t, n.approvalRequestId === e.approvalRequestId ? {
|
|
2591
2599
|
...n,
|
|
2592
2600
|
approvalStatus: e.approve ? "approved" : "rejected"
|
|
2593
2601
|
} : n])) : t.tools
|
|
2594
|
-
}))),
|
|
2602
|
+
}))), q.getState().patchMessages((t) => [...t, {
|
|
2595
2603
|
id: String(Date.now() + Math.random()),
|
|
2596
2604
|
role: "system",
|
|
2597
2605
|
content: e.approve ? "已批准工具调用,正在继续运行。" : "已拒绝工具调用,正在通知运行时。",
|
|
@@ -2606,10 +2614,10 @@ function pn(e) {
|
|
|
2606
2614
|
}
|
|
2607
2615
|
//#endregion
|
|
2608
2616
|
//#region src/utils/run-state.js
|
|
2609
|
-
function
|
|
2617
|
+
function hn(e) {
|
|
2610
2618
|
return String(e?.InvocationId || e?.invocation_id || e?.invocationId || "").trim();
|
|
2611
2619
|
}
|
|
2612
|
-
function
|
|
2620
|
+
function gn(e) {
|
|
2613
2621
|
let t = e?.Timestamp ?? e?.timestamp ?? e?.created_at ?? e?.CreatedAt;
|
|
2614
2622
|
if (typeof t == "number" && Number.isFinite(t)) return t > 1e11 ? t : t * 1e3;
|
|
2615
2623
|
if (typeof t == "string") {
|
|
@@ -2618,16 +2626,16 @@ function hn(e) {
|
|
|
2618
2626
|
}
|
|
2619
2627
|
return 0;
|
|
2620
2628
|
}
|
|
2621
|
-
function
|
|
2629
|
+
function _n(e) {
|
|
2622
2630
|
return String(e?.EventType || e?.event_type || "").trim();
|
|
2623
2631
|
}
|
|
2624
|
-
function
|
|
2632
|
+
function vn(e = [], t = {}) {
|
|
2625
2633
|
let n = /* @__PURE__ */ new Map(), r = /* @__PURE__ */ new Map(), i = Array.isArray(e) ? e : [], a = Number.isFinite(Number(t.now)) ? Number(t.now) : Date.now(), o = Number.isFinite(Number(t.staleAfterMs)) ? Number(t.staleAfterMs) : 1800 * 1e3;
|
|
2626
2634
|
for (let e of i) {
|
|
2627
|
-
let t =
|
|
2635
|
+
let t = hn(e);
|
|
2628
2636
|
if (!t) continue;
|
|
2629
|
-
let i =
|
|
2630
|
-
i && r.set(t, Math.max(r.get(t) || 0, i)),
|
|
2637
|
+
let i = gn(e);
|
|
2638
|
+
i && r.set(t, Math.max(r.get(t) || 0, i)), _n(e) === "run_status" && n.set(t, String(e?.Content?.status || e?.content?.status || "").trim());
|
|
2631
2639
|
}
|
|
2632
2640
|
return Array.from(n.entries()).filter(([e, t]) => {
|
|
2633
2641
|
let n = r.get(e) || 0, i = n > 0 && a - n > o;
|
|
@@ -2636,8 +2644,11 @@ function _n(e = [], t = {}) {
|
|
|
2636
2644
|
}
|
|
2637
2645
|
//#endregion
|
|
2638
2646
|
//#region src/hooks/useSessionLifecycle.ts
|
|
2639
|
-
var
|
|
2640
|
-
function
|
|
2647
|
+
var yn = 9e4, bn = 30, xn = 50;
|
|
2648
|
+
function Sn(e, t) {
|
|
2649
|
+
return t.length ? e.length ? e.length >= t.length : !1 : !0;
|
|
2650
|
+
}
|
|
2651
|
+
function Cn(e) {
|
|
2641
2652
|
if (e.EventType !== "run_status") return null;
|
|
2642
2653
|
let t = String(e.Content?.status || "").trim().toLowerCase();
|
|
2643
2654
|
return t === "completed" ? {
|
|
@@ -2651,8 +2662,8 @@ function xn(e) {
|
|
|
2651
2662
|
phase: "后台长任务失败"
|
|
2652
2663
|
} : null;
|
|
2653
2664
|
}
|
|
2654
|
-
function
|
|
2655
|
-
let { agentId: t, api: n, isMobile: r, resetCompaction: i, uiCapabilities: a, disconnectRun: o } = e, s =
|
|
2665
|
+
function wn(e) {
|
|
2666
|
+
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
2667
|
let i = r.filter((e) => c(e, !1, !1));
|
|
2657
2668
|
if (!i.length) return;
|
|
2658
2669
|
let a = await Promise.all(i.map(async (r) => {
|
|
@@ -2673,11 +2684,11 @@ function Sn(e) {
|
|
|
2673
2684
|
}));
|
|
2674
2685
|
if (s.current !== t) return;
|
|
2675
2686
|
let o = new Map(a.filter((e) => !!e).map((e) => [e.messageId, e.feedback]));
|
|
2676
|
-
o.size &&
|
|
2687
|
+
o.size && q.getState().patchMessages((e) => e.map((e) => o.has(e.id) ? {
|
|
2677
2688
|
...e,
|
|
2678
2689
|
feedback: o.get(e.id)
|
|
2679
2690
|
} : e));
|
|
2680
|
-
}, [n]), m =
|
|
2691
|
+
}, [n]), m = k(async (e) => {
|
|
2681
2692
|
u.current?.abort();
|
|
2682
2693
|
let t = new AbortController();
|
|
2683
2694
|
u.current = t;
|
|
@@ -2685,113 +2696,124 @@ function Sn(e) {
|
|
|
2685
2696
|
u.current !== t || t.signal.aborted || t.abort();
|
|
2686
2697
|
}, o = globalThis.setTimeout(() => {
|
|
2687
2698
|
a();
|
|
2688
|
-
},
|
|
2699
|
+
}, yn);
|
|
2689
2700
|
try {
|
|
2690
|
-
let
|
|
2701
|
+
let o = (await n.subscribeRunEvents({
|
|
2691
2702
|
sessionId: e.sessionId,
|
|
2692
2703
|
invocationId: e.invocationId,
|
|
2693
2704
|
afterSeqId: e.afterSeqId
|
|
2694
|
-
}, { signal: t.signal })).getReader(),
|
|
2695
|
-
for (
|
|
2705
|
+
}, { signal: t.signal })).getReader(), c = new TextDecoder(), l = "", u = Array.isArray(e.initialEvents) ? e.initialEvents : [];
|
|
2706
|
+
for (I.getState().setCurrentRunId(e.invocationId), I.getState().updateActivity({
|
|
2696
2707
|
sessionId: e.sessionId,
|
|
2697
2708
|
status: "running",
|
|
2698
2709
|
phase: "后台长任务运行中",
|
|
2699
2710
|
detail: e.invocationId,
|
|
2700
2711
|
countEvent: !1
|
|
2701
2712
|
}); !i;) {
|
|
2702
|
-
let { value: t, done: n } = await
|
|
2713
|
+
let { value: t, done: n } = await o.read();
|
|
2703
2714
|
if (n) break;
|
|
2704
|
-
|
|
2705
|
-
let
|
|
2706
|
-
|
|
2707
|
-
for (let t of
|
|
2715
|
+
l += c.decode(t, { stream: !0 });
|
|
2716
|
+
let d = l.split("\n\n");
|
|
2717
|
+
l = d.pop() || "";
|
|
2718
|
+
for (let t of d) {
|
|
2708
2719
|
if (!t.trim()) continue;
|
|
2709
2720
|
let n = [];
|
|
2710
2721
|
for (let e of t.split("\n")) e.startsWith("data:") && n.push(e.substring(5).trim());
|
|
2711
|
-
let
|
|
2712
|
-
if (!
|
|
2713
|
-
i =
|
|
2722
|
+
let o = n.join("\n").trim();
|
|
2723
|
+
if (!o || o === "[DONE]") {
|
|
2724
|
+
i = o === "[DONE]", r ||= i;
|
|
2714
2725
|
continue;
|
|
2715
2726
|
}
|
|
2716
2727
|
try {
|
|
2717
|
-
let t = JSON.parse(
|
|
2718
|
-
|
|
2719
|
-
let n =
|
|
2720
|
-
n &&
|
|
2728
|
+
let t = JSON.parse(o);
|
|
2729
|
+
u = rn(u, [t]), i ||= on(t), r ||= i, t.EventType === "run_checkpoint" && Q.getState().upsertSessionCheckpoint(e.sessionId, t);
|
|
2730
|
+
let n = Cn(t);
|
|
2731
|
+
if (n && I.getState().updateActivity({
|
|
2721
2732
|
sessionId: e.sessionId,
|
|
2722
2733
|
status: n.status,
|
|
2723
2734
|
phase: n.phase,
|
|
2724
2735
|
detail: e.invocationId,
|
|
2725
2736
|
countEvent: !1
|
|
2726
|
-
})
|
|
2727
|
-
|
|
2728
|
-
|
|
2737
|
+
}), s.current !== e.sessionId) {
|
|
2738
|
+
a();
|
|
2739
|
+
break;
|
|
2740
|
+
}
|
|
2741
|
+
let c = nn(u);
|
|
2742
|
+
Sn(c, q.getState().messages) && q.getState().setMessages(c);
|
|
2729
2743
|
} catch (e) {
|
|
2730
|
-
console.warn("Failed to parse run event data",
|
|
2744
|
+
console.warn("Failed to parse run event data", o, e);
|
|
2731
2745
|
}
|
|
2732
2746
|
}
|
|
2733
2747
|
}
|
|
2734
2748
|
} catch (e) {
|
|
2735
2749
|
e instanceof DOMException && e.name === "AbortError" || console.error("Failed to subscribe run events:", e);
|
|
2736
2750
|
} finally {
|
|
2737
|
-
globalThis.clearTimeout(o), u.current === t && (u.current = null),
|
|
2751
|
+
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
2752
|
}
|
|
2739
|
-
}, [n]), h =
|
|
2740
|
-
s.current = e
|
|
2753
|
+
}, [n]), h = k(async (e) => {
|
|
2754
|
+
s.current = e;
|
|
2755
|
+
let t = () => s.current === e;
|
|
2756
|
+
R.getState().setCurrentSessionId(e), i(), u.current?.abort(), r && _.getState().setMobileSidebarOpen(!1);
|
|
2741
2757
|
try {
|
|
2742
|
-
let
|
|
2743
|
-
if (
|
|
2744
|
-
Events:
|
|
2745
|
-
Total:
|
|
2746
|
-
Offset:
|
|
2747
|
-
Limit:
|
|
2758
|
+
let r = R.getState().eventCache[e], i;
|
|
2759
|
+
if (r) i = {
|
|
2760
|
+
Events: r.events,
|
|
2761
|
+
Total: r.total,
|
|
2762
|
+
Offset: r.offset,
|
|
2763
|
+
Limit: r.limit
|
|
2748
2764
|
};
|
|
2749
2765
|
else {
|
|
2750
|
-
let
|
|
2766
|
+
let r = await n.listSessionEvents(e, {
|
|
2751
2767
|
offset: 0,
|
|
2752
2768
|
limit: 1
|
|
2753
|
-
}),
|
|
2754
|
-
|
|
2755
|
-
offset:
|
|
2756
|
-
limit:
|
|
2757
|
-
}),
|
|
2758
|
-
|
|
2759
|
-
|
|
2760
|
-
|
|
2761
|
-
|
|
2769
|
+
}), a = Number(r.Total ?? r.Events?.length ?? 0), o = Math.max(0, a - xn);
|
|
2770
|
+
if (i = a <= 1 ? r : await n.listSessionEvents(e, {
|
|
2771
|
+
offset: o,
|
|
2772
|
+
limit: xn
|
|
2773
|
+
}), !t()) return;
|
|
2774
|
+
R.getState().setSessionEventCache(e, {
|
|
2775
|
+
events: i.Events || [],
|
|
2776
|
+
total: a,
|
|
2777
|
+
offset: Number(i.Offset ?? o),
|
|
2778
|
+
limit: Number(i.Limit ?? i.Events?.length ?? 0)
|
|
2762
2779
|
});
|
|
2763
2780
|
}
|
|
2764
|
-
|
|
2765
|
-
|
|
2781
|
+
if (!t()) return;
|
|
2782
|
+
let o = P.getState().capabilities || a;
|
|
2783
|
+
o.RunLifecycle.Enabled && o.RunLifecycle.Checkpoints ? (n.listSessionCheckpoints({
|
|
2766
2784
|
agentId: l.current,
|
|
2767
2785
|
sessionId: e
|
|
2768
2786
|
}).then((t) => {
|
|
2769
|
-
|
|
2787
|
+
Q.getState().setSessionCheckpoints(e, t.Checkpoints || []);
|
|
2770
2788
|
}).catch((t) => {
|
|
2771
|
-
console.warn("[SessionLifecycle] checkpoint load failed:", t),
|
|
2789
|
+
console.warn("[SessionLifecycle] checkpoint load failed:", t), Q.getState().setSessionCheckpoints(e, []);
|
|
2772
2790
|
}), n.listToolReceipts({
|
|
2773
2791
|
agentId: l.current,
|
|
2774
2792
|
sessionId: e
|
|
2775
2793
|
}).then((t) => {
|
|
2776
|
-
|
|
2794
|
+
Q.getState().setSessionToolReceipts(e, t.ToolReceipts || []);
|
|
2777
2795
|
}).catch((t) => {
|
|
2778
|
-
console.warn("[SessionLifecycle] tool receipt load failed:", t),
|
|
2779
|
-
})) :
|
|
2780
|
-
let
|
|
2781
|
-
if (
|
|
2782
|
-
let
|
|
2783
|
-
|
|
2784
|
-
|
|
2796
|
+
console.warn("[SessionLifecycle] tool receipt load failed:", t), Q.getState().setSessionToolReceipts(e, []);
|
|
2797
|
+
})) : Q.getState().clearSessionCheckpoints(e);
|
|
2798
|
+
let s = i;
|
|
2799
|
+
if (s?.Events) {
|
|
2800
|
+
let n = s.Events, r = nn(n);
|
|
2801
|
+
if (!t()) return;
|
|
2802
|
+
q.getState().setMessages(r), p(l.current, e, r);
|
|
2803
|
+
let i = vn(n, {
|
|
2785
2804
|
now: Date.now(),
|
|
2786
2805
|
staleAfterMs: 1800 * 1e3
|
|
2787
|
-
}), a = an(
|
|
2788
|
-
|
|
2806
|
+
}), a = an(n);
|
|
2807
|
+
o.RunLifecycle.Enabled && o.RunLifecycle.Resume && i[0] && m({
|
|
2789
2808
|
sessionId: e,
|
|
2790
|
-
invocationId:
|
|
2809
|
+
invocationId: i[0],
|
|
2791
2810
|
afterSeqId: a,
|
|
2792
|
-
initialEvents:
|
|
2811
|
+
initialEvents: n
|
|
2793
2812
|
});
|
|
2794
|
-
} else
|
|
2813
|
+
} else {
|
|
2814
|
+
if (!t()) return;
|
|
2815
|
+
q.getState().setMessages([]), Q.getState().setSessionCheckpoints(e, []), Q.getState().setSessionToolReceipts(e, []);
|
|
2816
|
+
}
|
|
2795
2817
|
} catch (e) {
|
|
2796
2818
|
console.error("Failed to load session events:", e);
|
|
2797
2819
|
}
|
|
@@ -2802,73 +2824,73 @@ function Sn(e) {
|
|
|
2802
2824
|
i,
|
|
2803
2825
|
m,
|
|
2804
2826
|
a
|
|
2805
|
-
]), g =
|
|
2827
|
+
]), g = k(async (e = "default-agent", t = null) => {
|
|
2806
2828
|
try {
|
|
2807
|
-
let r =
|
|
2808
|
-
r.sessionsAgentId && r.sessionsAgentId !== e && r.resetSessionPagination(e),
|
|
2829
|
+
let r = R.getState();
|
|
2830
|
+
r.sessionsAgentId && r.sessionsAgentId !== e && r.resetSessionPagination(e), R.getState().setLoadingSessions(!0);
|
|
2809
2831
|
let i = await n.listSessions(e, {
|
|
2810
2832
|
page: 1,
|
|
2811
|
-
pageSize:
|
|
2833
|
+
pageSize: bn
|
|
2812
2834
|
});
|
|
2813
|
-
|
|
2835
|
+
R.getState().upsertSessions(i.Sessions || [], {
|
|
2814
2836
|
agentId: e,
|
|
2815
2837
|
total: Number(i.Total ?? i.Sessions?.length ?? 0),
|
|
2816
2838
|
page: Number(i.Page ?? 1),
|
|
2817
|
-
pageSize: Number(i.PageSize ??
|
|
2839
|
+
pageSize: Number(i.PageSize ?? bn),
|
|
2818
2840
|
replace: !0
|
|
2819
2841
|
});
|
|
2820
|
-
let a =
|
|
2821
|
-
c && c !== o ? h(c) : !c && o && (s.current = null,
|
|
2842
|
+
let a = R.getState().sessions, o = s.current, c = Te(a, o || t || Ce(e));
|
|
2843
|
+
c && c !== o ? h(c) : !c && o && (s.current = null, R.getState().setCurrentSessionId(null), q.getState().setMessages([]), Q.getState().clearSessionCheckpoints());
|
|
2822
2844
|
} catch (e) {
|
|
2823
|
-
if (e instanceof
|
|
2845
|
+
if (e instanceof U) return;
|
|
2824
2846
|
console.error("Failed to fetch sessions:", e);
|
|
2825
2847
|
} finally {
|
|
2826
|
-
|
|
2848
|
+
R.getState().setLoadingSessions(!1);
|
|
2827
2849
|
}
|
|
2828
|
-
}, [n, h]), v =
|
|
2829
|
-
let e =
|
|
2850
|
+
}, [n, h]), v = k(async () => {
|
|
2851
|
+
let e = R.getState();
|
|
2830
2852
|
if (e.isLoadingSessions || !e.hasMoreSessions) return;
|
|
2831
|
-
let t =
|
|
2853
|
+
let t = ue({
|
|
2832
2854
|
total: e.sessionsTotal,
|
|
2833
|
-
pageSize: e.sessionsPageSize ||
|
|
2855
|
+
pageSize: e.sessionsPageSize || bn,
|
|
2834
2856
|
loadedPages: e.loadedPages
|
|
2835
2857
|
});
|
|
2836
2858
|
if (!t) return;
|
|
2837
|
-
let r = e.sessionsPageSize ||
|
|
2859
|
+
let r = e.sessionsPageSize || bn, i = e.sessionsAgentId || l.current || "default-agent";
|
|
2838
2860
|
try {
|
|
2839
|
-
|
|
2861
|
+
R.getState().setLoadingSessions(!0);
|
|
2840
2862
|
let a = await n.listSessions(i, {
|
|
2841
2863
|
page: t,
|
|
2842
2864
|
pageSize: r
|
|
2843
2865
|
});
|
|
2844
|
-
|
|
2866
|
+
R.getState().upsertSessions(a.Sessions || [], {
|
|
2845
2867
|
agentId: i,
|
|
2846
2868
|
total: Number(a.Total ?? e.sessionsTotal),
|
|
2847
2869
|
page: Number(a.Page ?? t),
|
|
2848
2870
|
pageSize: Number(a.PageSize ?? r)
|
|
2849
2871
|
});
|
|
2850
2872
|
} catch (e) {
|
|
2851
|
-
if (e instanceof
|
|
2873
|
+
if (e instanceof U) return;
|
|
2852
2874
|
console.error("Failed to load more sessions:", e);
|
|
2853
2875
|
} finally {
|
|
2854
|
-
|
|
2876
|
+
R.getState().setLoadingSessions(!1);
|
|
2855
2877
|
}
|
|
2856
2878
|
}, [n]);
|
|
2857
|
-
|
|
2879
|
+
A(() => {
|
|
2858
2880
|
d.current = h;
|
|
2859
|
-
}, [h]),
|
|
2881
|
+
}, [h]), A(() => {
|
|
2860
2882
|
f.current = g;
|
|
2861
2883
|
}, [g]);
|
|
2862
|
-
let y =
|
|
2884
|
+
let y = k(async () => {
|
|
2863
2885
|
try {
|
|
2864
2886
|
o?.();
|
|
2865
2887
|
let e = (await n.createSession(t)).SessionId;
|
|
2866
|
-
e && (
|
|
2888
|
+
e && (R.getState().upsertSessions([{
|
|
2867
2889
|
SessionId: e,
|
|
2868
2890
|
UpdatedAt: (/* @__PURE__ */ new Date()).toISOString()
|
|
2869
|
-
}]), s.current = e,
|
|
2891
|
+
}]), 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
2892
|
} catch (e) {
|
|
2871
|
-
if (e instanceof
|
|
2893
|
+
if (e instanceof U) return;
|
|
2872
2894
|
console.error("Failed to create session:", e);
|
|
2873
2895
|
}
|
|
2874
2896
|
}, [
|
|
@@ -2877,11 +2899,11 @@ function Sn(e) {
|
|
|
2877
2899
|
o,
|
|
2878
2900
|
g,
|
|
2879
2901
|
r
|
|
2880
|
-
]), b =
|
|
2902
|
+
]), b = k(async (e) => {
|
|
2881
2903
|
try {
|
|
2882
|
-
await n.deleteSession(e),
|
|
2904
|
+
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
2905
|
} catch (e) {
|
|
2884
|
-
if (e instanceof
|
|
2906
|
+
if (e instanceof U) return;
|
|
2885
2907
|
console.error("Failed to delete session", e);
|
|
2886
2908
|
}
|
|
2887
2909
|
}, [
|
|
@@ -2893,29 +2915,29 @@ function Sn(e) {
|
|
|
2893
2915
|
fetchSessions: g,
|
|
2894
2916
|
loadMoreSessions: v,
|
|
2895
2917
|
loadSession: h,
|
|
2896
|
-
loadOlderSessionEvents:
|
|
2897
|
-
let t =
|
|
2918
|
+
loadOlderSessionEvents: k(async (e) => {
|
|
2919
|
+
let t = R.getState().eventCache[e];
|
|
2898
2920
|
if (!t || t.offset <= 0 || t.isLoadingOlder) return;
|
|
2899
|
-
let r = Math.max(0, t.offset -
|
|
2921
|
+
let r = Math.max(0, t.offset - xn), i = t.offset - r;
|
|
2900
2922
|
try {
|
|
2901
|
-
|
|
2923
|
+
R.getState().setSessionEventLoadingOlder(e, !0);
|
|
2902
2924
|
let a = await n.listSessionEvents(e, {
|
|
2903
2925
|
offset: r,
|
|
2904
2926
|
limit: i
|
|
2905
2927
|
}), o = rn(a.Events || [], t.events);
|
|
2906
|
-
if (
|
|
2928
|
+
if (R.getState().setSessionEventCache(e, {
|
|
2907
2929
|
events: o,
|
|
2908
2930
|
total: Number(a.Total ?? t.total),
|
|
2909
2931
|
offset: Number(a.Offset ?? r),
|
|
2910
2932
|
limit: o.length
|
|
2911
2933
|
}), s.current === e) {
|
|
2912
2934
|
let t = nn(o);
|
|
2913
|
-
|
|
2935
|
+
q.getState().setMessages(t), p(l.current, e, t);
|
|
2914
2936
|
}
|
|
2915
2937
|
} catch (e) {
|
|
2916
|
-
e instanceof
|
|
2938
|
+
e instanceof U || console.error("Failed to load older session events:", e);
|
|
2917
2939
|
} finally {
|
|
2918
|
-
|
|
2940
|
+
R.getState().setSessionEventLoadingOlder(e, !1);
|
|
2919
2941
|
}
|
|
2920
2942
|
}, [n, p]),
|
|
2921
2943
|
createNewSession: y,
|
|
@@ -2927,8 +2949,8 @@ function Sn(e) {
|
|
|
2927
2949
|
}
|
|
2928
2950
|
//#endregion
|
|
2929
2951
|
//#region src/components/chat/ConnectedSidebar.tsx
|
|
2930
|
-
function
|
|
2931
|
-
let u =
|
|
2952
|
+
function Tn({ uiCapabilities: e, createNewSession: n, deleteSession: a, loadSession: s, loadMoreSessions: c }) {
|
|
2953
|
+
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
2954
|
isMobile: y,
|
|
2933
2955
|
desktopSidebarOpen: g,
|
|
2934
2956
|
mobileSidebarOpen: v
|
|
@@ -2957,7 +2979,7 @@ function Cn({ uiCapabilities: e, createNewSession: n, deleteSession: a, loadSess
|
|
|
2957
2979
|
t.stopPropagation(), a(e);
|
|
2958
2980
|
},
|
|
2959
2981
|
onTogglePinSession: (e, t) => {
|
|
2960
|
-
t.stopPropagation(),
|
|
2982
|
+
t.stopPropagation(), R.getState().togglePinnedSession(e);
|
|
2961
2983
|
},
|
|
2962
2984
|
onLoadMoreSessions: c,
|
|
2963
2985
|
sessionTitle: te,
|
|
@@ -2978,7 +3000,7 @@ function Cn({ uiCapabilities: e, createNewSession: n, deleteSession: a, loadSess
|
|
|
2978
3000
|
t.stopPropagation(), a(e);
|
|
2979
3001
|
},
|
|
2980
3002
|
onTogglePinSession: (e, t) => {
|
|
2981
|
-
t.stopPropagation(),
|
|
3003
|
+
t.stopPropagation(), R.getState().togglePinnedSession(e);
|
|
2982
3004
|
},
|
|
2983
3005
|
onLoadMoreSessions: c,
|
|
2984
3006
|
sessionTitle: te,
|
|
@@ -2990,17 +3012,17 @@ function Cn({ uiCapabilities: e, createNewSession: n, deleteSession: a, loadSess
|
|
|
2990
3012
|
}
|
|
2991
3013
|
//#endregion
|
|
2992
3014
|
//#region src/components/ui/dialog.tsx
|
|
2993
|
-
var
|
|
3015
|
+
var En = M.Root, Dn = M.Portal, On = D.forwardRef(({ className: e, ...t }, n) => /* @__PURE__ */ T(M.Overlay, {
|
|
2994
3016
|
ref: n,
|
|
2995
3017
|
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
3018
|
...t
|
|
2997
3019
|
}));
|
|
2998
|
-
|
|
2999
|
-
var
|
|
3020
|
+
On.displayName = M.Overlay.displayName;
|
|
3021
|
+
var kn = D.forwardRef(({ className: e, children: t, ...n }, r) => /* @__PURE__ */ E(Dn, { children: [/* @__PURE__ */ T(On, {}), /* @__PURE__ */ E(M.Content, {
|
|
3000
3022
|
ref: r,
|
|
3001
3023
|
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
3024
|
...n,
|
|
3003
|
-
children: [t, /* @__PURE__ */ E(
|
|
3025
|
+
children: [t, /* @__PURE__ */ E(M.Close, {
|
|
3004
3026
|
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
3027
|
children: [/* @__PURE__ */ T(w, { className: "h-4 w-4" }), /* @__PURE__ */ T("span", {
|
|
3006
3028
|
className: "sr-only",
|
|
@@ -3008,50 +3030,50 @@ var Dn = D.forwardRef(({ className: e, children: t, ...n }, r) => /* @__PURE__ *
|
|
|
3008
3030
|
})]
|
|
3009
3031
|
})]
|
|
3010
3032
|
})] }));
|
|
3011
|
-
|
|
3012
|
-
var
|
|
3033
|
+
kn.displayName = M.Content.displayName;
|
|
3034
|
+
var An = ({ className: e, ...t }) => /* @__PURE__ */ T("div", {
|
|
3013
3035
|
className: p("flex flex-col space-y-1.5 text-center sm:text-left", e),
|
|
3014
3036
|
...t
|
|
3015
3037
|
});
|
|
3016
|
-
|
|
3017
|
-
var
|
|
3038
|
+
An.displayName = "DialogHeader";
|
|
3039
|
+
var jn = ({ className: e, ...t }) => /* @__PURE__ */ T("div", {
|
|
3018
3040
|
className: p("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2", e),
|
|
3019
3041
|
...t
|
|
3020
3042
|
});
|
|
3021
|
-
|
|
3022
|
-
var
|
|
3043
|
+
jn.displayName = "DialogFooter";
|
|
3044
|
+
var Mn = D.forwardRef(({ className: e, ...t }, n) => /* @__PURE__ */ T(M.Title, {
|
|
3023
3045
|
ref: n,
|
|
3024
3046
|
className: p("text-lg font-semibold leading-none tracking-tight", e),
|
|
3025
3047
|
...t
|
|
3026
3048
|
}));
|
|
3027
|
-
|
|
3028
|
-
var
|
|
3049
|
+
Mn.displayName = M.Title.displayName;
|
|
3050
|
+
var Nn = D.forwardRef(({ className: e, ...t }, n) => /* @__PURE__ */ T(M.Description, {
|
|
3029
3051
|
ref: n,
|
|
3030
3052
|
className: p("text-sm text-muted-foreground", e),
|
|
3031
3053
|
...t
|
|
3032
3054
|
}));
|
|
3033
|
-
|
|
3055
|
+
Nn.displayName = M.Description.displayName;
|
|
3034
3056
|
//#endregion
|
|
3035
3057
|
//#region src/components/chat/AttachmentPreview.tsx
|
|
3036
|
-
function
|
|
3058
|
+
function Pn(e, t) {
|
|
3037
3059
|
if (!(!t || e)) return {
|
|
3038
3060
|
width: `min(${t.width}px, calc(100vw - 5rem))`,
|
|
3039
3061
|
height: `min(${t.height}px, calc(100vh - 9rem))`
|
|
3040
3062
|
};
|
|
3041
3063
|
}
|
|
3042
|
-
function
|
|
3064
|
+
function Fn(e, t) {
|
|
3043
3065
|
if (!(!t || e)) return { width: `min(${t.width + 32}px, calc(100vw - 3rem))` };
|
|
3044
3066
|
}
|
|
3045
|
-
function
|
|
3046
|
-
return /* @__PURE__ */ T(
|
|
3067
|
+
function In({ attachment: e, isMobile: t, previewImageSize: n, onClose: r, onImageLoad: i }) {
|
|
3068
|
+
return /* @__PURE__ */ T(En, {
|
|
3047
3069
|
open: !!e?.url,
|
|
3048
3070
|
onOpenChange: (e) => !e && r(),
|
|
3049
|
-
children: /* @__PURE__ */ E(
|
|
3071
|
+
children: /* @__PURE__ */ E(kn, {
|
|
3050
3072
|
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:
|
|
3073
|
+
style: Fn(t, n),
|
|
3052
3074
|
children: [/* @__PURE__ */ T("div", {
|
|
3053
3075
|
className: "flex items-center gap-3 border-b border-slate-800 px-4 py-3 pr-16",
|
|
3054
|
-
children: /* @__PURE__ */ T(
|
|
3076
|
+
children: /* @__PURE__ */ T(Mn, {
|
|
3055
3077
|
className: "truncate text-sm font-medium",
|
|
3056
3078
|
children: e?.name || "附件预览"
|
|
3057
3079
|
})
|
|
@@ -3061,7 +3083,7 @@ function Pn({ attachment: e, isMobile: t, previewImageSize: n, onClose: r, onIma
|
|
|
3061
3083
|
src: e.url,
|
|
3062
3084
|
alt: e.name,
|
|
3063
3085
|
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:
|
|
3086
|
+
style: Pn(t, n),
|
|
3065
3087
|
onLoad: (e) => {
|
|
3066
3088
|
let t = e.currentTarget;
|
|
3067
3089
|
i({
|
|
@@ -3080,7 +3102,7 @@ function Pn({ attachment: e, isMobile: t, previewImageSize: n, onClose: r, onIma
|
|
|
3080
3102
|
}
|
|
3081
3103
|
//#endregion
|
|
3082
3104
|
//#region src/utils/context.js
|
|
3083
|
-
function
|
|
3105
|
+
function Ln(e) {
|
|
3084
3106
|
if (typeof e == "number" && Number.isFinite(e) && e > 0) return e;
|
|
3085
3107
|
if (typeof e == "string" && e.trim()) {
|
|
3086
3108
|
let t = Number(e);
|
|
@@ -3088,15 +3110,15 @@ function Fn(e) {
|
|
|
3088
3110
|
}
|
|
3089
3111
|
return null;
|
|
3090
3112
|
}
|
|
3091
|
-
function
|
|
3113
|
+
function Rn(e) {
|
|
3092
3114
|
return /[\u3400-\u4DBF\u4E00-\u9FFF\uF900-\uFAFF]/u.test(e);
|
|
3093
3115
|
}
|
|
3094
|
-
function
|
|
3116
|
+
function zn(e) {
|
|
3095
3117
|
let t = String(e || "").trim();
|
|
3096
3118
|
if (!t) return 0;
|
|
3097
3119
|
let n = 0, r = 0;
|
|
3098
3120
|
for (let e of t) {
|
|
3099
|
-
if (
|
|
3121
|
+
if (Rn(e)) {
|
|
3100
3122
|
n += 1;
|
|
3101
3123
|
continue;
|
|
3102
3124
|
}
|
|
@@ -3104,24 +3126,24 @@ function Ln(e) {
|
|
|
3104
3126
|
}
|
|
3105
3127
|
return Math.max(1, n + Math.ceil(r / 4));
|
|
3106
3128
|
}
|
|
3107
|
-
function
|
|
3129
|
+
function Bn(e) {
|
|
3108
3130
|
if (!e) return 0;
|
|
3109
|
-
if (e.role === "system") return e.eventType === "context_checkpoint" ?
|
|
3110
|
-
let t =
|
|
3111
|
-
return e.tools && (t += Object.values(e.tools).reduce((e, t) => e +
|
|
3131
|
+
if (e.role === "system") return e.eventType === "context_checkpoint" ? zn(e.summary || "") : 0;
|
|
3132
|
+
let t = zn(e.content || "");
|
|
3133
|
+
return e.tools && (t += Object.values(e.tools).reduce((e, t) => e + zn(t?.name || "") + zn(t?.args || "") + zn(t?.output || ""), 0)), t;
|
|
3112
3134
|
}
|
|
3113
|
-
function
|
|
3114
|
-
return e ?
|
|
3135
|
+
function Vn(e) {
|
|
3136
|
+
return e ? Ln(e.context_window_tokens) ?? Ln(e?.limits?.context_window_tokens) : null;
|
|
3115
3137
|
}
|
|
3116
|
-
function
|
|
3117
|
-
return e ?
|
|
3138
|
+
function Hn(e) {
|
|
3139
|
+
return e ? Ln(e.auto_compact_threshold_percentage) ?? 84 : 84;
|
|
3118
3140
|
}
|
|
3119
|
-
function
|
|
3120
|
-
let r =
|
|
3141
|
+
function Un({ messages: e, draftInput: t, selectedModel: n }) {
|
|
3142
|
+
let r = Vn(n);
|
|
3121
3143
|
if (!r) return null;
|
|
3122
3144
|
let i = [...e || []].reverse().find((e) => e?.role === "system" && e?.eventType === "context_checkpoint" && e?.status === "running");
|
|
3123
3145
|
if (i) {
|
|
3124
|
-
let e =
|
|
3146
|
+
let e = Bn(i);
|
|
3125
3147
|
return {
|
|
3126
3148
|
label: "正在压缩上下文…",
|
|
3127
3149
|
phase: "compressing",
|
|
@@ -3130,10 +3152,10 @@ function Vn({ messages: e, draftInput: t, selectedModel: n }) {
|
|
|
3130
3152
|
percent: Math.min(100, Math.max(0, Math.round(e / r * 100)))
|
|
3131
3153
|
};
|
|
3132
3154
|
}
|
|
3133
|
-
let a = (e || []).reduce((e, t) => e +
|
|
3155
|
+
let a = (e || []).reduce((e, t) => e + Bn(t), 0) + zn(t || "");
|
|
3134
3156
|
if (a <= 0) return null;
|
|
3135
3157
|
let o = Math.min(100, Math.max(0, Math.round(a / r * 100)));
|
|
3136
|
-
return o >=
|
|
3158
|
+
return o >= Hn(n) ? {
|
|
3137
3159
|
label: `估算上下文 ${o}% · 即将压缩`,
|
|
3138
3160
|
phase: "warning",
|
|
3139
3161
|
percent: o,
|
|
@@ -3149,19 +3171,19 @@ function Vn({ messages: e, draftInput: t, selectedModel: n }) {
|
|
|
3149
3171
|
}
|
|
3150
3172
|
//#endregion
|
|
3151
3173
|
//#region src/components/chat/ConnectedMessageList.tsx
|
|
3152
|
-
function
|
|
3153
|
-
let u =
|
|
3174
|
+
function Wn({ agentName: e, isMobile: t, onDeleteFeedback: n, onSubmitFeedback: r, onRespondToApproval: i, onStopGeneration: a, onCancelRemote: o, checkpointResumeEnabled: s = !1, onResumeCheckpoint: c, onLoadOlderSessionEvents: l }) {
|
|
3175
|
+
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(() => Un({
|
|
3154
3176
|
messages: u,
|
|
3155
3177
|
draftInput: v,
|
|
3156
|
-
selectedModel:
|
|
3178
|
+
selectedModel: O
|
|
3157
3179
|
}), [
|
|
3158
3180
|
v,
|
|
3159
3181
|
u,
|
|
3160
|
-
|
|
3182
|
+
O
|
|
3161
3183
|
]);
|
|
3162
|
-
return
|
|
3184
|
+
return A(() => {
|
|
3163
3185
|
w.current = f;
|
|
3164
|
-
}, [f]),
|
|
3186
|
+
}, [f]), A(() => {
|
|
3165
3187
|
let e = x.current;
|
|
3166
3188
|
if (!e) return;
|
|
3167
3189
|
let t = () => {
|
|
@@ -3195,7 +3217,7 @@ function Hn({ agentName: e, isMobile: t, onDeleteFeedback: n, onSubmitFeedback:
|
|
|
3195
3217
|
g,
|
|
3196
3218
|
d,
|
|
3197
3219
|
l
|
|
3198
|
-
]),
|
|
3220
|
+
]), A(() => {
|
|
3199
3221
|
let e = x.current;
|
|
3200
3222
|
!e || !S.current || (e.scrollTop = e.scrollHeight, ne.current = e.scrollTop);
|
|
3201
3223
|
}, [u, f]), /* @__PURE__ */ E(re, { children: [/* @__PURE__ */ T(m, {
|
|
@@ -3203,7 +3225,7 @@ function Hn({ agentName: e, isMobile: t, onDeleteFeedback: n, onSubmitFeedback:
|
|
|
3203
3225
|
isMobile: t,
|
|
3204
3226
|
isStreaming: f,
|
|
3205
3227
|
activity: p,
|
|
3206
|
-
contextIndicator:
|
|
3228
|
+
contextIndicator: ie,
|
|
3207
3229
|
messages: u,
|
|
3208
3230
|
onDeleteFeedback: n,
|
|
3209
3231
|
onOpenAttachmentPreview: (e) => {
|
|
@@ -3216,7 +3238,7 @@ function Hn({ agentName: e, isMobile: t, onDeleteFeedback: n, onSubmitFeedback:
|
|
|
3216
3238
|
checkpoints: s ? h : [],
|
|
3217
3239
|
onResumeCheckpoint: c,
|
|
3218
3240
|
scrollRef: x
|
|
3219
|
-
}), /* @__PURE__ */ T(
|
|
3241
|
+
}), /* @__PURE__ */ T(In, {
|
|
3220
3242
|
attachment: ee,
|
|
3221
3243
|
isMobile: t,
|
|
3222
3244
|
previewImageSize: te,
|
|
@@ -3228,7 +3250,7 @@ function Hn({ agentName: e, isMobile: t, onDeleteFeedback: n, onSubmitFeedback:
|
|
|
3228
3250
|
}
|
|
3229
3251
|
//#endregion
|
|
3230
3252
|
//#region src/utils/attachment.ts
|
|
3231
|
-
function
|
|
3253
|
+
function Gn(e) {
|
|
3232
3254
|
return [
|
|
3233
3255
|
e.name,
|
|
3234
3256
|
e.size,
|
|
@@ -3236,19 +3258,19 @@ function Un(e) {
|
|
|
3236
3258
|
e.type
|
|
3237
3259
|
].join(":");
|
|
3238
3260
|
}
|
|
3239
|
-
function
|
|
3261
|
+
function Kn(e, t) {
|
|
3240
3262
|
let n = /* @__PURE__ */ new Map();
|
|
3241
|
-
for (let t of e) n.set(
|
|
3242
|
-
for (let e of t) n.set(
|
|
3263
|
+
for (let t of e) n.set(Gn(t), t);
|
|
3264
|
+
for (let e of t) n.set(Gn(e), e);
|
|
3243
3265
|
return Array.from(n.values());
|
|
3244
3266
|
}
|
|
3245
|
-
function
|
|
3267
|
+
function qn(e) {
|
|
3246
3268
|
return Array.from(e.clipboardData.items || []).filter((e) => e.kind === "file").map((e) => e.getAsFile()).filter((e) => !!e);
|
|
3247
3269
|
}
|
|
3248
3270
|
//#endregion
|
|
3249
3271
|
//#region src/components/chat/ConnectedComposer.tsx
|
|
3250
|
-
function
|
|
3251
|
-
let o = _((e) => e.input), s = _((e) => e.attachments), c =
|
|
3272
|
+
function Jn({ composerMaxHeight: e, submitDraft: t, stopGeneration: n, cancelRemote: r, isMobile: i }) {
|
|
3273
|
+
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(() => Un({
|
|
3252
3274
|
messages: d,
|
|
3253
3275
|
draftInput: o,
|
|
3254
3276
|
selectedModel: g
|
|
@@ -3256,16 +3278,16 @@ function Kn({ composerMaxHeight: e, submitDraft: t, stopGeneration: n, cancelRem
|
|
|
3256
3278
|
o,
|
|
3257
3279
|
d,
|
|
3258
3280
|
g
|
|
3259
|
-
]), y =
|
|
3281
|
+
]), y = k((e, n) => {
|
|
3260
3282
|
!e && n.length === 0 || (_.getState().setInput(""), _.getState().setAttachments([]), t(e, n));
|
|
3261
3283
|
}, [t]);
|
|
3262
|
-
|
|
3284
|
+
A(() => {
|
|
3263
3285
|
h.current && (h.current.style.height = "auto", h.current.style.height = `${Math.min(h.current.scrollHeight, e)}px`);
|
|
3264
3286
|
}, [o, e]);
|
|
3265
3287
|
let b = (t) => {
|
|
3266
3288
|
_.getState().setInput(t.target.value), t.target.style.height = "auto", t.target.style.height = `${Math.min(t.target.scrollHeight, e)}px`;
|
|
3267
3289
|
}, ee = (e) => {
|
|
3268
|
-
e.length && _.getState().setAttachments((t) =>
|
|
3290
|
+
e.length && _.getState().setAttachments((t) => Kn(t, e));
|
|
3269
3291
|
};
|
|
3270
3292
|
return /* @__PURE__ */ T(a, {
|
|
3271
3293
|
attachments: s,
|
|
@@ -3279,7 +3301,7 @@ function Kn({ composerMaxHeight: e, submitDraft: t, stopGeneration: n, cancelRem
|
|
|
3279
3301
|
onAppendAttachments: ee,
|
|
3280
3302
|
onInputChange: b,
|
|
3281
3303
|
onPaste: (e) => {
|
|
3282
|
-
let t =
|
|
3304
|
+
let t = qn(e);
|
|
3283
3305
|
t.length && (e.preventDefault(), e.stopPropagation(), ee(t));
|
|
3284
3306
|
},
|
|
3285
3307
|
onRemoveAttachment: (e) => _.getState().setAttachments((t) => t.filter((t, n) => n !== e)),
|
|
@@ -3291,8 +3313,8 @@ function Kn({ composerMaxHeight: e, submitDraft: t, stopGeneration: n, cancelRem
|
|
|
3291
3313
|
}
|
|
3292
3314
|
//#endregion
|
|
3293
3315
|
//#region src/api/session.ts
|
|
3294
|
-
async function
|
|
3295
|
-
let n = await
|
|
3316
|
+
async function Yn(e, t) {
|
|
3317
|
+
let n = await K("ListSessions", {
|
|
3296
3318
|
AgentId: e,
|
|
3297
3319
|
Page: t?.page,
|
|
3298
3320
|
PageSize: t?.pageSize
|
|
@@ -3304,16 +3326,16 @@ async function qn(e, t) {
|
|
|
3304
3326
|
PageSize: Number.isFinite(Number(n.PageSize)) ? Number(n.PageSize) : t?.pageSize ?? n.Sessions?.length ?? 0
|
|
3305
3327
|
};
|
|
3306
3328
|
}
|
|
3307
|
-
async function
|
|
3308
|
-
return (await
|
|
3329
|
+
async function Xn(e, t) {
|
|
3330
|
+
return (await K("CreateSession", { AgentId: e }, t)).Session;
|
|
3309
3331
|
}
|
|
3310
|
-
async function
|
|
3311
|
-
await
|
|
3332
|
+
async function Zn(e, t) {
|
|
3333
|
+
await K("DeleteSession", { SessionId: e }, t);
|
|
3312
3334
|
}
|
|
3313
3335
|
//#endregion
|
|
3314
3336
|
//#region src/api/events.ts
|
|
3315
|
-
async function
|
|
3316
|
-
let n = await
|
|
3337
|
+
async function Qn(e, t) {
|
|
3338
|
+
let n = await K("ListSessionEvents", {
|
|
3317
3339
|
SessionId: e,
|
|
3318
3340
|
Offset: t?.offset,
|
|
3319
3341
|
Limit: t?.limit
|
|
@@ -3327,34 +3349,34 @@ async function Xn(e, t) {
|
|
|
3327
3349
|
}
|
|
3328
3350
|
//#endregion
|
|
3329
3351
|
//#region src/api/run.ts
|
|
3330
|
-
async function
|
|
3331
|
-
return
|
|
3352
|
+
async function $n(e, t) {
|
|
3353
|
+
return ze("RunAgent", e, t);
|
|
3332
3354
|
}
|
|
3333
3355
|
//#endregion
|
|
3334
3356
|
//#region src/api/checkpoints.ts
|
|
3335
|
-
async function
|
|
3357
|
+
async function er(e, t) {
|
|
3336
3358
|
let n = {
|
|
3337
3359
|
AgentId: e.agentId,
|
|
3338
3360
|
SessionId: e.sessionId
|
|
3339
3361
|
};
|
|
3340
|
-
return e.runId && (n.RunId = e.runId),
|
|
3362
|
+
return e.runId && (n.RunId = e.runId), K("ListSessionCheckpoints", n, t);
|
|
3341
3363
|
}
|
|
3342
|
-
async function
|
|
3343
|
-
return
|
|
3364
|
+
async function tr(e, t) {
|
|
3365
|
+
return K("GetCheckpointResumePreview", {
|
|
3344
3366
|
AgentId: e.agentId,
|
|
3345
3367
|
SessionId: e.sessionId,
|
|
3346
3368
|
RunId: e.runId,
|
|
3347
3369
|
CheckpointId: e.checkpointId
|
|
3348
3370
|
}, t);
|
|
3349
3371
|
}
|
|
3350
|
-
async function
|
|
3372
|
+
async function nr(e, t) {
|
|
3351
3373
|
let n = {
|
|
3352
3374
|
AgentId: e.agentId,
|
|
3353
3375
|
SessionId: e.sessionId
|
|
3354
3376
|
};
|
|
3355
|
-
return e.runId && (n.RunId = e.runId), e.checkpointId && (n.CheckpointId = e.checkpointId),
|
|
3377
|
+
return e.runId && (n.RunId = e.runId), e.checkpointId && (n.CheckpointId = e.checkpointId), K("ListToolReceipts", n, t);
|
|
3356
3378
|
}
|
|
3357
|
-
async function
|
|
3379
|
+
async function rr(e, t) {
|
|
3358
3380
|
let n = {
|
|
3359
3381
|
AgentId: e.agentId,
|
|
3360
3382
|
SessionId: e.sessionId,
|
|
@@ -3362,28 +3384,28 @@ async function tr(e, t) {
|
|
|
3362
3384
|
CheckpointId: e.checkpointId,
|
|
3363
3385
|
Stream: !0
|
|
3364
3386
|
};
|
|
3365
|
-
return e.resumeAttemptId && (n.ResumeAttemptId = e.resumeAttemptId), e.invocationId && (n.InvocationId = e.invocationId),
|
|
3387
|
+
return e.resumeAttemptId && (n.ResumeAttemptId = e.resumeAttemptId), e.invocationId && (n.InvocationId = e.invocationId), ze("ResumeRun", n, t);
|
|
3366
3388
|
}
|
|
3367
3389
|
//#endregion
|
|
3368
3390
|
//#region src/api/workspace.ts
|
|
3369
|
-
async function
|
|
3370
|
-
return
|
|
3391
|
+
async function ir(e, t, n) {
|
|
3392
|
+
return K("ListWorkspaceFiles", {
|
|
3371
3393
|
AgentId: e,
|
|
3372
3394
|
Path: t,
|
|
3373
3395
|
Recursive: n
|
|
3374
3396
|
});
|
|
3375
3397
|
}
|
|
3376
|
-
async function
|
|
3377
|
-
return
|
|
3398
|
+
async function ar(e) {
|
|
3399
|
+
return Le("AddWorkspaceFile", e);
|
|
3378
3400
|
}
|
|
3379
|
-
async function
|
|
3380
|
-
return
|
|
3401
|
+
async function or(e, t) {
|
|
3402
|
+
return K("DeleteWorkspaceFile", {
|
|
3381
3403
|
AgentId: e,
|
|
3382
3404
|
Path: t
|
|
3383
3405
|
});
|
|
3384
3406
|
}
|
|
3385
|
-
async function
|
|
3386
|
-
return
|
|
3407
|
+
async function sr(e, t, n) {
|
|
3408
|
+
return Re("GetWorkspaceFileContent", {
|
|
3387
3409
|
AgentId: e,
|
|
3388
3410
|
FilePath: t
|
|
3389
3411
|
}, {
|
|
@@ -3393,138 +3415,133 @@ async function ar(e, t, n) {
|
|
|
3393
3415
|
}
|
|
3394
3416
|
//#endregion
|
|
3395
3417
|
//#region src/api/upload.ts
|
|
3396
|
-
async function
|
|
3397
|
-
return
|
|
3418
|
+
async function cr(e, t) {
|
|
3419
|
+
return Le("UploadFile", e, t);
|
|
3398
3420
|
}
|
|
3399
3421
|
//#endregion
|
|
3400
3422
|
//#region src/core/api/facade.ts
|
|
3401
|
-
var
|
|
3423
|
+
var lr = class {
|
|
3402
3424
|
async listSessions(e, t) {
|
|
3403
|
-
return
|
|
3425
|
+
return Yn(e, t);
|
|
3404
3426
|
}
|
|
3405
3427
|
async createSession(e, t) {
|
|
3406
|
-
return { SessionId: (await
|
|
3428
|
+
return { SessionId: (await Xn(e, t)).SessionId };
|
|
3407
3429
|
}
|
|
3408
3430
|
async deleteSession(e, t) {
|
|
3409
|
-
await
|
|
3431
|
+
await Zn(e, t);
|
|
3410
3432
|
}
|
|
3411
3433
|
async listSessionEvents(e, t) {
|
|
3412
|
-
return
|
|
3434
|
+
return Qn(e, t);
|
|
3413
3435
|
}
|
|
3414
3436
|
async listSessionCheckpoints(e, t) {
|
|
3415
|
-
return
|
|
3437
|
+
return er(e, t);
|
|
3416
3438
|
}
|
|
3417
3439
|
async previewCheckpointResume(e, t) {
|
|
3418
|
-
return
|
|
3440
|
+
return tr(e, t);
|
|
3419
3441
|
}
|
|
3420
3442
|
async listToolReceipts(e, t) {
|
|
3421
|
-
return
|
|
3443
|
+
return nr(e, t);
|
|
3422
3444
|
}
|
|
3423
3445
|
async runAgent(e, t) {
|
|
3424
|
-
return
|
|
3446
|
+
return $n(e, t);
|
|
3425
3447
|
}
|
|
3426
3448
|
async resumeRun(e, t) {
|
|
3427
|
-
return
|
|
3449
|
+
return rr(e, t);
|
|
3428
3450
|
}
|
|
3429
3451
|
async subscribeRunEvents(e, t) {
|
|
3430
|
-
return
|
|
3452
|
+
return Be("SubscribeRunEvents", {
|
|
3431
3453
|
SessionId: e.sessionId,
|
|
3432
3454
|
InvocationId: e.invocationId,
|
|
3433
3455
|
AfterSeqId: String(e.afterSeqId)
|
|
3434
3456
|
}, t);
|
|
3435
3457
|
}
|
|
3436
3458
|
async cancelRun(e, t, n) {
|
|
3437
|
-
return
|
|
3459
|
+
return K("CancelRun", {
|
|
3438
3460
|
AgentId: e,
|
|
3439
3461
|
InvocationId: t
|
|
3440
3462
|
}, n);
|
|
3441
3463
|
}
|
|
3442
3464
|
async getResponseFeedback(e, t) {
|
|
3443
|
-
return
|
|
3465
|
+
return K("GetResponseFeedback", e, t);
|
|
3444
3466
|
}
|
|
3445
3467
|
async upsertResponseFeedback(e, t) {
|
|
3446
|
-
return
|
|
3468
|
+
return K("UpsertResponseFeedback", e, t);
|
|
3447
3469
|
}
|
|
3448
3470
|
async deleteResponseFeedback(e, t) {
|
|
3449
|
-
await
|
|
3471
|
+
await K("DeleteResponseFeedback", e, t);
|
|
3450
3472
|
}
|
|
3451
3473
|
async listWorkspaceFiles(e, t, n) {
|
|
3452
|
-
return
|
|
3474
|
+
return ir(e, t, n);
|
|
3453
3475
|
}
|
|
3454
3476
|
async addWorkspaceFile(e) {
|
|
3455
|
-
return
|
|
3477
|
+
return ar(e);
|
|
3456
3478
|
}
|
|
3457
3479
|
async deleteWorkspaceFile(e, t) {
|
|
3458
|
-
await
|
|
3480
|
+
await or(e, t);
|
|
3459
3481
|
}
|
|
3460
3482
|
async getWorkspaceFileContent(e, t, n) {
|
|
3461
|
-
return
|
|
3483
|
+
return sr(e, t, n);
|
|
3462
3484
|
}
|
|
3463
3485
|
async listAgentModels(e) {
|
|
3464
|
-
return
|
|
3486
|
+
return He(e);
|
|
3465
3487
|
}
|
|
3466
3488
|
async getAgentUiBootstrap() {
|
|
3467
|
-
return
|
|
3489
|
+
return Ve();
|
|
3468
3490
|
}
|
|
3469
3491
|
async uploadFile(e, t) {
|
|
3470
|
-
return
|
|
3471
|
-
}
|
|
3472
|
-
},
|
|
3473
|
-
function
|
|
3474
|
-
let a = e ||
|
|
3475
|
-
isMobile:
|
|
3476
|
-
viewportHeight:
|
|
3477
|
-
}), { fetchSessions:
|
|
3492
|
+
return cr(e, t);
|
|
3493
|
+
}
|
|
3494
|
+
}, ur = new lr(), dr = O.lazy(() => import("./ArtifactsPanel-BCjpJZ9m.js").then((e) => ({ default: e.ArtifactsPanel }))), fr = O.lazy(() => import("./NativeTerminalPanel-C1LtiwB7.js").then((e) => e.n).then((e) => ({ default: e.NativeTerminalPanel })));
|
|
3495
|
+
function pr({ apiAdapter: e, initialSurface: r = "chat", routeShell: i } = {}) {
|
|
3496
|
+
let a = e || ur, 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({
|
|
3497
|
+
isMobile: L,
|
|
3498
|
+
viewportHeight: le
|
|
3499
|
+
}), { fetchSessions: de, loadMoreSessions: fe, loadSession: pe, loadOlderSessionEvents: me, createNewSession: he, deleteSession: ge, currentSessionIdRef: z, agentIdRef: B, runSubscriptionAbortRef: _e } = wn({
|
|
3478
3500
|
agentId: o,
|
|
3479
3501
|
currentSessionId: s,
|
|
3480
|
-
isMobile:
|
|
3481
|
-
uiCapabilities:
|
|
3502
|
+
isMobile: L,
|
|
3503
|
+
uiCapabilities: M,
|
|
3482
3504
|
api: a,
|
|
3483
3505
|
resetCompaction: () => {},
|
|
3484
|
-
disconnectRun: () =>
|
|
3485
|
-
}),
|
|
3506
|
+
disconnectRun: () => ce.current?.()
|
|
3507
|
+
}), ye = k((e) => {
|
|
3486
3508
|
if (!e) return;
|
|
3487
3509
|
let t = () => {
|
|
3488
|
-
|
|
3510
|
+
R.getState().clearSessionEventCache(e), de(B.current, e);
|
|
3489
3511
|
};
|
|
3490
3512
|
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({
|
|
3513
|
+
}, [B, de]), be = m.find((e) => e.id === p) || null, { submitDraft: xe, stopGeneration: Se, disconnectRun: Ce, resumeCheckpoint: Te } = pn({
|
|
3497
3514
|
agentId: o,
|
|
3498
3515
|
currentSessionId: s,
|
|
3499
3516
|
agentFramework: x,
|
|
3500
|
-
apiFormats:
|
|
3517
|
+
apiFormats: ae,
|
|
3501
3518
|
selectedModel: p,
|
|
3502
|
-
selectedModelMetadata:
|
|
3519
|
+
selectedModelMetadata: be,
|
|
3503
3520
|
thinkingMode: te,
|
|
3504
|
-
uiCapabilities:
|
|
3505
|
-
isMobile:
|
|
3521
|
+
uiCapabilities: M,
|
|
3522
|
+
isMobile: L,
|
|
3506
3523
|
api: a,
|
|
3507
|
-
currentSessionIdRef:
|
|
3508
|
-
agentIdRef:
|
|
3509
|
-
queuedDraftRef:
|
|
3510
|
-
onRunSettled:
|
|
3524
|
+
currentSessionIdRef: z,
|
|
3525
|
+
agentIdRef: B,
|
|
3526
|
+
queuedDraftRef: se,
|
|
3527
|
+
onRunSettled: ye
|
|
3511
3528
|
});
|
|
3512
|
-
|
|
3513
|
-
|
|
3514
|
-
}, [
|
|
3515
|
-
let
|
|
3516
|
-
let e =
|
|
3517
|
-
|
|
3529
|
+
A(() => {
|
|
3530
|
+
ce.current = Ce;
|
|
3531
|
+
}, [Ce]);
|
|
3532
|
+
let Ee = k(() => {
|
|
3533
|
+
let e = z.current;
|
|
3534
|
+
_e.current?.abort(), I.getState().stopActivity(), I.getState().stopSessionActivity(e), Se();
|
|
3518
3535
|
}, [
|
|
3519
|
-
|
|
3520
|
-
|
|
3521
|
-
|
|
3522
|
-
]),
|
|
3523
|
-
let e =
|
|
3536
|
+
z,
|
|
3537
|
+
_e,
|
|
3538
|
+
Se
|
|
3539
|
+
]), De = k(async () => {
|
|
3540
|
+
let e = z.current, t = I.getState(), n = t.currentRunId || t.getSessionActivity(e)?.runId || "";
|
|
3524
3541
|
if (n) try {
|
|
3525
|
-
await a.cancelRun(o, n),
|
|
3542
|
+
await a.cancelRun(o, n), I.getState().stopSessionActivity(e, "取消请求已发送,后台运行会停在最近 checkpoint。");
|
|
3526
3543
|
} catch (t) {
|
|
3527
|
-
console.warn("[App] cancelRun failed:", t),
|
|
3544
|
+
console.warn("[App] cancelRun failed:", t), I.getState().updateActivity({
|
|
3528
3545
|
sessionId: e,
|
|
3529
3546
|
status: "failed",
|
|
3530
3547
|
phase: "取消请求失败",
|
|
@@ -3532,107 +3549,107 @@ function dr({ apiAdapter: e, initialSurface: r = "chat", routeShell: i } = {}) {
|
|
|
3532
3549
|
countEvent: !1
|
|
3533
3550
|
});
|
|
3534
3551
|
}
|
|
3535
|
-
|
|
3552
|
+
ye(e);
|
|
3536
3553
|
}, [
|
|
3537
3554
|
a,
|
|
3538
3555
|
o,
|
|
3539
|
-
|
|
3540
|
-
|
|
3541
|
-
]), { submitResponseFeedback:
|
|
3556
|
+
z,
|
|
3557
|
+
ye
|
|
3558
|
+
]), { submitResponseFeedback: Oe, deleteResponseFeedback: ke, respondToApproval: je } = mn({
|
|
3542
3559
|
agentId: o,
|
|
3543
3560
|
currentSessionId: s,
|
|
3544
3561
|
isStreaming: c,
|
|
3545
3562
|
api: a,
|
|
3546
|
-
submitDraft:
|
|
3563
|
+
submitDraft: xe
|
|
3547
3564
|
});
|
|
3548
|
-
|
|
3549
|
-
|
|
3565
|
+
Ge({ fetchSessions: de }), A(() => {
|
|
3566
|
+
B.current = o, z.current = s, we(o, s);
|
|
3550
3567
|
}, [
|
|
3551
3568
|
o,
|
|
3552
3569
|
s,
|
|
3553
|
-
|
|
3554
|
-
|
|
3555
|
-
]),
|
|
3556
|
-
|
|
3557
|
-
}, [
|
|
3570
|
+
B,
|
|
3571
|
+
z
|
|
3572
|
+
]), A(() => {
|
|
3573
|
+
L ? _.getState().setWorkspacePanelFullscreen(!1) : (_.getState().setMobileSidebarOpen(!1), _.getState().setMobileActionsOpen(!1));
|
|
3574
|
+
}, [L]), A(() => {
|
|
3558
3575
|
w || _.getState().setWorkspacePanelFullscreen(!1);
|
|
3559
|
-
}, [w]),
|
|
3560
|
-
|
|
3561
|
-
}, [
|
|
3562
|
-
let
|
|
3576
|
+
}, [w]), A(() => () => {
|
|
3577
|
+
_e.current?.abort();
|
|
3578
|
+
}, [_e]);
|
|
3579
|
+
let Ne = t(M), Pe = !!M.Thinking, V = g({
|
|
3563
3580
|
workspaceFiles: S,
|
|
3564
3581
|
accessMode: C
|
|
3565
|
-
}),
|
|
3566
|
-
capability:
|
|
3582
|
+
}), H = y({ isMobile: L }), U = Ae({
|
|
3583
|
+
capability: M.NativeDashboard,
|
|
3567
3584
|
agentFramework: x,
|
|
3568
3585
|
accessMode: C,
|
|
3569
3586
|
origin: window.location.origin
|
|
3570
|
-
}),
|
|
3571
|
-
|
|
3572
|
-
|
|
3573
|
-
}, [r,
|
|
3574
|
-
let
|
|
3587
|
+
}), 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;
|
|
3588
|
+
A(() => {
|
|
3589
|
+
Le.current || r !== "workspace" || !V || (Le.current = !0, _.getState().setWorkspacePanelOpen(!0), _.getState().setWorkspacePanelFullscreen(!0));
|
|
3590
|
+
}, [r, V]);
|
|
3591
|
+
let Ve = /* @__PURE__ */ E("div", {
|
|
3575
3592
|
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
3593
|
children: [
|
|
3577
|
-
/* @__PURE__ */ T(
|
|
3578
|
-
uiCapabilities:
|
|
3579
|
-
createNewSession:
|
|
3580
|
-
deleteSession:
|
|
3581
|
-
loadSession:
|
|
3582
|
-
loadMoreSessions:
|
|
3594
|
+
/* @__PURE__ */ T(Tn, {
|
|
3595
|
+
uiCapabilities: M,
|
|
3596
|
+
createNewSession: he,
|
|
3597
|
+
deleteSession: ge,
|
|
3598
|
+
loadSession: pe,
|
|
3599
|
+
loadMoreSessions: fe
|
|
3583
3600
|
}),
|
|
3584
3601
|
/* @__PURE__ */ E("main", {
|
|
3585
3602
|
className: "relative flex min-w-0 flex-1 flex-col bg-white dark:bg-slate-900",
|
|
3586
3603
|
children: [/* @__PURE__ */ T(n, {
|
|
3587
3604
|
agentName: f,
|
|
3588
3605
|
currentSessionId: s,
|
|
3589
|
-
nativeLauncherMode:
|
|
3590
|
-
isMobile:
|
|
3606
|
+
nativeLauncherMode: W,
|
|
3607
|
+
isMobile: L,
|
|
3591
3608
|
sidebarOpen: l,
|
|
3592
3609
|
mobileSidebarOpen: u,
|
|
3593
3610
|
onToggleSidebar: () => {
|
|
3594
|
-
|
|
3611
|
+
L ? _.getState().toggleMobileSidebar() : _.getState().toggleSidebar();
|
|
3595
3612
|
},
|
|
3596
3613
|
availableModels: m,
|
|
3597
3614
|
selectedModel: p,
|
|
3598
3615
|
onSelectModel: (e) => {
|
|
3599
|
-
|
|
3616
|
+
F.getState().setSelectedModel(e), L && _.getState().setMobileActionsOpen(!1);
|
|
3600
3617
|
},
|
|
3601
|
-
selectedModelLabel:
|
|
3618
|
+
selectedModelLabel: G,
|
|
3602
3619
|
modelCatalogLoaded: v,
|
|
3603
3620
|
modelSource: h,
|
|
3604
|
-
thinkingEnabled:
|
|
3621
|
+
thinkingEnabled: Pe,
|
|
3605
3622
|
thinkingMode: te,
|
|
3606
|
-
onSelectThinkingMode: (e) =>
|
|
3623
|
+
onSelectThinkingMode: (e) => F.getState().setThinkingMode(Me(e)),
|
|
3607
3624
|
mobileActionsOpen: d,
|
|
3608
3625
|
onMobileActionsOpenChange: (e) => _.getState().setMobileActionsOpen(e),
|
|
3609
|
-
workspaceEnabled:
|
|
3626
|
+
workspaceEnabled: V,
|
|
3610
3627
|
onOpenWorkspace: () => _.getState().setWorkspacePanelOpen(!0),
|
|
3611
|
-
nativeManagementLink:
|
|
3612
|
-
nativeTerminal:
|
|
3613
|
-
}),
|
|
3614
|
-
productLabel:
|
|
3615
|
-
nativeManagementLink:
|
|
3616
|
-
nativeTerminal:
|
|
3617
|
-
workspaceEnabled:
|
|
3628
|
+
nativeManagementLink: U,
|
|
3629
|
+
nativeTerminal: M.NativeTerminal
|
|
3630
|
+
}), W ? /* @__PURE__ */ T(b, {
|
|
3631
|
+
productLabel: Ie,
|
|
3632
|
+
nativeManagementLink: U,
|
|
3633
|
+
nativeTerminal: M.NativeTerminal,
|
|
3634
|
+
workspaceEnabled: V,
|
|
3618
3635
|
onOpenWorkspace: () => _.getState().setWorkspacePanelOpen(!0)
|
|
3619
|
-
}) : /* @__PURE__ */ E(re, { children: [/* @__PURE__ */ T(
|
|
3636
|
+
}) : /* @__PURE__ */ E(re, { children: [/* @__PURE__ */ T(Wn, {
|
|
3620
3637
|
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:
|
|
3638
|
+
isMobile: L,
|
|
3639
|
+
onDeleteFeedback: ke,
|
|
3640
|
+
onSubmitFeedback: Oe,
|
|
3641
|
+
onRespondToApproval: je,
|
|
3642
|
+
onStopGeneration: Ee,
|
|
3643
|
+
onCancelRemote: M.StopRun ? De : void 0,
|
|
3644
|
+
checkpointResumeEnabled: M.RunLifecycle.Enabled && M.RunLifecycle.Checkpoints && M.RunLifecycle.CheckpointResume,
|
|
3645
|
+
onResumeCheckpoint: Te,
|
|
3646
|
+
onLoadOlderSessionEvents: me
|
|
3647
|
+
}), /* @__PURE__ */ T(Jn, {
|
|
3648
|
+
composerMaxHeight: ue,
|
|
3649
|
+
submitDraft: xe,
|
|
3650
|
+
stopGeneration: Ee,
|
|
3651
|
+
cancelRemote: M.StopRun ? De : void 0,
|
|
3652
|
+
isMobile: L
|
|
3636
3653
|
})] })]
|
|
3637
3654
|
}),
|
|
3638
3655
|
/* @__PURE__ */ T(ee, {
|
|
@@ -3640,22 +3657,22 @@ function dr({ apiAdapter: e, initialSurface: r = "chat", routeShell: i } = {}) {
|
|
|
3640
3657
|
capability: S,
|
|
3641
3658
|
workspacePanelOpen: w,
|
|
3642
3659
|
workspacePanelWidth: D,
|
|
3643
|
-
workspacePanelFullscreen:
|
|
3644
|
-
isMobile:
|
|
3645
|
-
workspaceEnabled:
|
|
3660
|
+
workspacePanelFullscreen: O,
|
|
3661
|
+
isMobile: L,
|
|
3662
|
+
workspaceEnabled: V,
|
|
3646
3663
|
workspaceFiles: S,
|
|
3647
|
-
workspacePanelPresentation:
|
|
3664
|
+
workspacePanelPresentation: H,
|
|
3648
3665
|
closeWorkspacePanel: () => {
|
|
3649
3666
|
_.getState().setWorkspacePanelFullscreen(!1), _.getState().setWorkspacePanelOpen(!1);
|
|
3650
3667
|
},
|
|
3651
3668
|
handleWorkspacePanelResizeStart: (e) => {
|
|
3652
|
-
if (
|
|
3669
|
+
if (O || L) return;
|
|
3653
3670
|
e.preventDefault();
|
|
3654
|
-
let t = e.clientX, n = D, r =
|
|
3671
|
+
let t = e.clientX, n = D, r = Ne && K ? 280 : 0, i = document.body.style.cursor, a = document.body.style.userSelect;
|
|
3655
3672
|
document.body.style.cursor = "col-resize", document.body.style.userSelect = "none";
|
|
3656
3673
|
let o = (e) => {
|
|
3657
3674
|
let i = n + t - e.clientX;
|
|
3658
|
-
_.getState().setWorkspacePanelWidth(
|
|
3675
|
+
_.getState().setWorkspacePanelWidth(ht(i, window.innerWidth, r));
|
|
3659
3676
|
}, s = () => {
|
|
3660
3677
|
document.body.style.cursor = i, document.body.style.userSelect = a, window.removeEventListener("pointermove", o), window.removeEventListener("pointerup", s), window.removeEventListener("pointercancel", s);
|
|
3661
3678
|
};
|
|
@@ -3663,53 +3680,53 @@ function dr({ apiAdapter: e, initialSurface: r = "chat", routeShell: i } = {}) {
|
|
|
3663
3680
|
},
|
|
3664
3681
|
api: a
|
|
3665
3682
|
}),
|
|
3666
|
-
|
|
3683
|
+
N && /* @__PURE__ */ T(ie, {
|
|
3667
3684
|
fallback: null,
|
|
3668
|
-
children: /* @__PURE__ */ T(
|
|
3685
|
+
children: /* @__PURE__ */ T(dr, {})
|
|
3669
3686
|
}),
|
|
3670
|
-
|
|
3687
|
+
Be ? /* @__PURE__ */ T(ie, {
|
|
3671
3688
|
fallback: null,
|
|
3672
|
-
children: /* @__PURE__ */ T(
|
|
3673
|
-
capability:
|
|
3689
|
+
children: /* @__PURE__ */ T(fr, {
|
|
3690
|
+
capability: M.NativeTerminal,
|
|
3674
3691
|
open: !0,
|
|
3675
3692
|
sessionId: s,
|
|
3676
|
-
onClose: () =>
|
|
3693
|
+
onClose: () => ze(!1)
|
|
3677
3694
|
})
|
|
3678
3695
|
}) : null
|
|
3679
3696
|
]
|
|
3680
3697
|
});
|
|
3681
|
-
return i ? /* @__PURE__ */ T(i, { children:
|
|
3698
|
+
return i ? /* @__PURE__ */ T(i, { children: Ve }) : Ve;
|
|
3682
3699
|
}
|
|
3683
3700
|
//#endregion
|
|
3684
3701
|
//#region src/core/transport/sse-transport.ts
|
|
3685
|
-
function
|
|
3702
|
+
function mr(e, t) {
|
|
3686
3703
|
if (e.eventName === "__ping__") {
|
|
3687
|
-
|
|
3704
|
+
I.getState().updateActivity({ countEvent: !1 });
|
|
3688
3705
|
return;
|
|
3689
3706
|
}
|
|
3690
3707
|
t.onEvent(e);
|
|
3691
3708
|
}
|
|
3692
|
-
var
|
|
3709
|
+
var hr = class {
|
|
3693
3710
|
protocol = "sse-post";
|
|
3694
3711
|
async connect(e, t) {
|
|
3695
|
-
let n = (await
|
|
3712
|
+
let n = (await ze(e.action, e.body || {}, { signal: e.signal })).getReader(), r = new TextDecoder(), i = "", a = !1;
|
|
3696
3713
|
return (async () => {
|
|
3697
3714
|
try {
|
|
3698
3715
|
for (; !a;) {
|
|
3699
3716
|
let { value: e, done: a } = await n.read();
|
|
3700
3717
|
if (a) break;
|
|
3701
3718
|
i += r.decode(e, { stream: !0 });
|
|
3702
|
-
let { chunks: o, remainder: s } =
|
|
3719
|
+
let { chunks: o, remainder: s } = dt(i);
|
|
3703
3720
|
i = s;
|
|
3704
3721
|
for (let e of o) {
|
|
3705
3722
|
if (!e.trim()) continue;
|
|
3706
|
-
let n =
|
|
3723
|
+
let n = ut(e);
|
|
3707
3724
|
for (let e of n) {
|
|
3708
3725
|
if (e.eventName === "__done__") {
|
|
3709
3726
|
t.onComplete();
|
|
3710
3727
|
return;
|
|
3711
3728
|
}
|
|
3712
|
-
|
|
3729
|
+
mr(e, t);
|
|
3713
3730
|
}
|
|
3714
3731
|
}
|
|
3715
3732
|
}
|
|
@@ -3721,27 +3738,27 @@ var pr = class {
|
|
|
3721
3738
|
a = !0, n.cancel().catch(() => {});
|
|
3722
3739
|
};
|
|
3723
3740
|
}
|
|
3724
|
-
},
|
|
3741
|
+
}, gr = class {
|
|
3725
3742
|
protocol = "sse-get";
|
|
3726
3743
|
async connect(e, t) {
|
|
3727
|
-
let n = (await
|
|
3744
|
+
let n = (await Be(e.action, e.params || {}, { signal: e.signal })).getReader(), r = new TextDecoder(), i = "", a = !1;
|
|
3728
3745
|
return (async () => {
|
|
3729
3746
|
try {
|
|
3730
3747
|
for (; !a;) {
|
|
3731
3748
|
let { value: e, done: a } = await n.read();
|
|
3732
3749
|
if (a) break;
|
|
3733
3750
|
i += r.decode(e, { stream: !0 });
|
|
3734
|
-
let { chunks: o, remainder: s } =
|
|
3751
|
+
let { chunks: o, remainder: s } = dt(i);
|
|
3735
3752
|
i = s;
|
|
3736
3753
|
for (let e of o) {
|
|
3737
3754
|
if (!e.trim()) continue;
|
|
3738
|
-
let n =
|
|
3755
|
+
let n = ut(e);
|
|
3739
3756
|
for (let e of n) {
|
|
3740
3757
|
if (e.eventName === "__done__") {
|
|
3741
3758
|
t.onComplete();
|
|
3742
3759
|
return;
|
|
3743
3760
|
}
|
|
3744
|
-
|
|
3761
|
+
mr(e, t);
|
|
3745
3762
|
}
|
|
3746
3763
|
}
|
|
3747
3764
|
}
|
|
@@ -3755,4 +3772,4 @@ var pr = class {
|
|
|
3755
3772
|
}
|
|
3756
3773
|
};
|
|
3757
3774
|
//#endregion
|
|
3758
|
-
export {
|
|
3775
|
+
export { pr as AgentWorkbench, lr as ApiFacadeImpl, xt as RunEngineImpl, gr as SseGetTransport, hr as SsePostTransport, ct as createProtocol };
|