@kingsoftcloud/ksadk-web 0.2.15 → 0.2.16
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 +20 -0
- package/dist-ksadk/assets/{ArtifactsPanel-BQycE-WQ.js → ArtifactsPanel-B06x6rZH.js} +1 -1
- package/dist-ksadk/assets/{CodeBlock-BBNgCUzs.js → CodeBlock-D0ZicJVx.js} +1 -1
- package/dist-ksadk/assets/{MathMessageMarkdown-BX8whIUg.js → MathMessageMarkdown-DnGENSaK.js} +1 -1
- package/dist-ksadk/assets/{MermaidBlock-D68B7zAv.js → MermaidBlock-hUd4MS-D.js} +6 -6
- package/dist-ksadk/assets/{NativeTerminalPanel-CyV-mhO3.js → NativeTerminalPanel-HgxLA5wc.js} +1 -1
- package/dist-ksadk/assets/{arc-wHztMxfp.js → arc-DdocI6pD.js} +1 -1
- package/dist-ksadk/assets/architecture-7EHR7CIX-secg40UA.js +1 -0
- package/dist-ksadk/assets/{architectureDiagram-3BPJPVTR-HU4hsN_Y.js → architectureDiagram-3BPJPVTR-CQMnd8MC.js} +1 -1
- package/dist-ksadk/assets/{blockDiagram-GPEHLZMM-DV_1dQBG.js → blockDiagram-GPEHLZMM-_Kk7Sg5y.js} +1 -1
- package/dist-ksadk/assets/{c4Diagram-AAUBKEIU-C5jN6E0t.js → c4Diagram-AAUBKEIU-B76y_Yuu.js} +1 -1
- package/dist-ksadk/assets/channel-Ch9mVx2Q.js +1 -0
- package/dist-ksadk/assets/{chunk-2J33WTMH-jhWShx0U.js → chunk-2J33WTMH-Brm7O3ZZ.js} +1 -1
- package/dist-ksadk/assets/{chunk-4BX2VUAB-BkmP_YIR.js → chunk-4BX2VUAB-Bl8JEjQI.js} +1 -1
- package/dist-ksadk/assets/{chunk-55IACEB6-B8cdnfio.js → chunk-55IACEB6-CjasIGqA.js} +1 -1
- package/dist-ksadk/assets/{chunk-727SXJPM-I_wsgg4B.js → chunk-727SXJPM-BBJRvNjI.js} +1 -1
- package/dist-ksadk/assets/{chunk-AQP2D5EJ-CrKE0CjY.js → chunk-AQP2D5EJ-VuZ8Sc3p.js} +1 -1
- package/dist-ksadk/assets/{chunk-FMBD7UC4-CnBM9mx-.js → chunk-FMBD7UC4-CirX_mqI.js} +1 -1
- package/dist-ksadk/assets/{chunk-ND2GUHAM-CAGmrkrk.js → chunk-ND2GUHAM-CfFXNLUo.js} +1 -1
- package/dist-ksadk/assets/chunk-QZHKN3VN-DJTxDPIP.js +1 -0
- package/dist-ksadk/assets/classDiagram-4FO5ZUOK-BcixWJ90.js +1 -0
- package/dist-ksadk/assets/classDiagram-v2-Q7XG4LA2-BcixWJ90.js +1 -0
- package/dist-ksadk/assets/{cose-bilkent-S5V4N54A-DQutYsST.js → cose-bilkent-S5V4N54A-DCCZQXHd.js} +1 -1
- package/dist-ksadk/assets/{dagre-BM42HDAG-BbfWozVQ.js → dagre-BM42HDAG-DNfED9pb.js} +1 -1
- package/dist-ksadk/assets/{diagram-2AECGRRQ-DTYDG1S6.js → diagram-2AECGRRQ-yO4PjQql.js} +1 -1
- package/dist-ksadk/assets/{diagram-5GNKFQAL-CKo851uX.js → diagram-5GNKFQAL-Bt2ljVnh.js} +1 -1
- package/dist-ksadk/assets/{diagram-KO2AKTUF-BFGsk7gQ.js → diagram-KO2AKTUF-Bb7wNlPg.js} +1 -1
- package/dist-ksadk/assets/{diagram-LMA3HP47-Cp5eKc5-.js → diagram-LMA3HP47-CrH2YWcd.js} +1 -1
- package/dist-ksadk/assets/{diagram-OG6HWLK6-BCAPtWc_.js → diagram-OG6HWLK6-bbtBEd5z.js} +1 -1
- package/dist-ksadk/assets/{dist-XvtBlTf3.js → dist-521BEWj6.js} +1 -1
- package/dist-ksadk/assets/{dist-C0aKpK3w.js → dist-B2SIcB2s.js} +1 -1
- package/dist-ksadk/assets/{dist-Bs8kNZ5F.js → dist-BA2ewTEN.js} +1 -1
- package/dist-ksadk/assets/{dist-DsEBYSvP.js → dist-BVqRhq4R.js} +1 -1
- package/dist-ksadk/assets/{dist-BA3Q9tGs.js → dist-Bn3JJ6WT.js} +1 -1
- package/dist-ksadk/assets/{dist-CF83ONlc.js → dist-BorYRkBd.js} +1 -1
- package/dist-ksadk/assets/{dist-Drg2mY7X.js → dist-BvXOJV-u.js} +1 -1
- package/dist-ksadk/assets/{dist-BXfxON4M.js → dist-C6o23WK-.js} +1 -1
- package/dist-ksadk/assets/{dist-bSp7j4JA.js → dist-CaTCmLPC.js} +1 -1
- package/dist-ksadk/assets/{dist-PKzzxEoN.js → dist-Crh9NdRs.js} +1 -1
- package/dist-ksadk/assets/{dist-CD2EXfJM.js → dist-CyRnZq0Y.js} +1 -1
- package/dist-ksadk/assets/{dist-CcGyKrol.js → dist-D1A6B1m9.js} +1 -1
- package/dist-ksadk/assets/{dist-5kdQ7HkY.js → dist-D8EPdm_6.js} +1 -1
- package/dist-ksadk/assets/{dist-BzRHvUmK.js → dist-DG5t7Qfp.js} +1 -1
- package/dist-ksadk/assets/{dist-ZTH3VhoY.js → dist-DKfGasx3.js} +1 -1
- package/dist-ksadk/assets/{dist-CA6GPOEx.js → dist-DP5ziceH.js} +1 -1
- package/dist-ksadk/assets/{dist-Dtq8mlk_.js → dist-FZxygvt4.js} +1 -1
- package/dist-ksadk/assets/{dist-COCV2kJ4.js → dist-UgODcks7.js} +1 -1
- package/dist-ksadk/assets/{dist-CRqn22al.js → dist-Yj9GFrNq.js} +1 -1
- package/dist-ksadk/assets/{dist-ygPYPIzK.js → dist-cKezgS7F.js} +1 -1
- package/dist-ksadk/assets/{dist-Wc8ZbAXr.js → dist-pl0ZdN9h.js} +1 -1
- package/dist-ksadk/assets/{dist-BUqHxLuB.js → dist-uW8Tf3ke.js} +1 -1
- package/dist-ksadk/assets/{erDiagram-TEJ5UH35-B4Ez_K8Y.js → erDiagram-TEJ5UH35-DUiCZd4K.js} +1 -1
- package/dist-ksadk/assets/eventmodeling-FCH6USID-CyTirFUD.js +1 -0
- package/dist-ksadk/assets/{flowDiagram-I6XJVG4X-Cugogq8u.js → flowDiagram-I6XJVG4X-DYGVQCIm.js} +1 -1
- package/dist-ksadk/assets/{ganttDiagram-6RSMTGT7-BdL2Ptyi.js → ganttDiagram-6RSMTGT7-BhZtYjVe.js} +1 -1
- package/dist-ksadk/assets/gitGraph-WXDBUCRP-BLAtLgjE.js +1 -0
- package/dist-ksadk/assets/{gitGraphDiagram-PVQCEYII-LTIaD1oy.js → gitGraphDiagram-PVQCEYII-C7drTtvf.js} +1 -1
- package/dist-ksadk/assets/index-CouGNrf0.js +165 -0
- package/dist-ksadk/assets/info-J43DQDTF-Dpnm-hnd.js +1 -0
- package/dist-ksadk/assets/{infoDiagram-5YYISTIA-Irvk5ODn.js → infoDiagram-5YYISTIA-DHmGck8o.js} +1 -1
- package/dist-ksadk/assets/{ishikawaDiagram-YF4QCWOH-DvhCdgB4.js → ishikawaDiagram-YF4QCWOH-fNk1ytOs.js} +1 -1
- package/dist-ksadk/assets/{journeyDiagram-JHISSGLW-o1H3k05h.js → journeyDiagram-JHISSGLW-DaEsNvC6.js} +1 -1
- package/dist-ksadk/assets/{kanban-definition-UN3LZRKU-DwLQeiLo.js → kanban-definition-UN3LZRKU-BInyyqqY.js} +1 -1
- package/dist-ksadk/assets/{katex-rVASVN_G.js → katex-DGk10-r4.js} +1 -1
- package/dist-ksadk/assets/{linear-6iVzNmCz.js → linear-B2JRl5uz.js} +1 -1
- package/dist-ksadk/assets/{mermaid-parser.core-XdJNoTgS.js → mermaid-parser.core-CMRjttGv.js} +2 -2
- package/dist-ksadk/assets/{mindmap-definition-RKZ34NQL-CytBxVen.js → mindmap-definition-RKZ34NQL-BUSqS_N5.js} +1 -1
- package/dist-ksadk/assets/packet-YPE3B663-CBNSejbV.js +1 -0
- package/dist-ksadk/assets/pie-LRSECV5Y-DYYr4y45.js +1 -0
- package/dist-ksadk/assets/{pieDiagram-4H26LBE5-CaevpDml.js → pieDiagram-4H26LBE5-DAc7TaHh.js} +1 -1
- package/dist-ksadk/assets/{quadrantDiagram-W4KKPZXB-DN8OUKGZ.js → quadrantDiagram-W4KKPZXB-CMTmojtL.js} +1 -1
- package/dist-ksadk/assets/radar-GUYGQ44K-DvlkOiap.js +1 -0
- package/dist-ksadk/assets/{requirementDiagram-4Y6WPE33-BCAqWjys.js → requirementDiagram-4Y6WPE33-DMksKYum.js} +1 -1
- package/dist-ksadk/assets/{sankeyDiagram-5OEKKPKP-2dMQM1qM.js → sankeyDiagram-5OEKKPKP-BPcqMkO3.js} +1 -1
- package/dist-ksadk/assets/{sequenceDiagram-3UESZ5HK-C-bWXa4S.js → sequenceDiagram-3UESZ5HK-CmeJJ6Nf.js} +1 -1
- package/dist-ksadk/assets/{stateDiagram-AJRCARHV-D0W5apow.js → stateDiagram-AJRCARHV-D7oaMooj.js} +1 -1
- package/dist-ksadk/assets/stateDiagram-v2-BHNVJYJU-UPHW9RVm.js +1 -0
- package/dist-ksadk/assets/{timeline-definition-PNZ67QCA-BW_33mxy.js → timeline-definition-PNZ67QCA-BjxnngqB.js} +1 -1
- package/dist-ksadk/assets/treeView-BLDUP644-ClgeJ2Gz.js +1 -0
- package/dist-ksadk/assets/treemap-LRROVOQU-rQg49Xh0.js +1 -0
- package/dist-ksadk/assets/{vennDiagram-CIIHVFJN-CNmwt6el.js → vennDiagram-CIIHVFJN-CvHaX62m.js} +1 -1
- package/dist-ksadk/assets/wardley-L42UT6IY-DYuzSwXI.js +1 -0
- package/dist-ksadk/assets/{wardleyDiagram-YWT4CUSO-CzuRPILG.js → wardleyDiagram-YWT4CUSO-DgZ7L1lC.js} +1 -1
- package/dist-ksadk/assets/{xychartDiagram-2RQKCTM6-CuwrcJ7v.js → xychartDiagram-2RQKCTM6-C1D-4iPc.js} +1 -1
- package/dist-ksadk/index.html +1 -1
- package/dist-lib/{ArtifactsPanel-BCjpJZ9m.js → ArtifactsPanel-D3AiN69_.js} +1 -1
- package/dist-lib/{CodeBlock-CnIj5U9o.js → CodeBlock-CWHejqEk.js} +1 -1
- package/dist-lib/{MathMessageMarkdown-DdjmAxKr.js → MathMessageMarkdown-BlZXusY6.js} +2 -2
- package/dist-lib/{NativeTerminalPanel-C1LtiwB7.js → NativeTerminalPanel-mQwtEFvo.js} +1 -1
- package/dist-lib/{WorkspacePanelContainer-DyFPcWsD.js → WorkspacePanelContainer-D5WLGlO_.js} +5 -5
- package/dist-lib/components/chat/ConnectedMessageList.d.ts.map +1 -1
- package/dist-lib/components.js +2 -2
- package/dist-lib/core/run/dispatcher.d.ts.map +1 -1
- package/dist-lib/core/run/engine.d.ts.map +1 -1
- package/dist-lib/hooks/useSessionLifecycle.d.ts.map +1 -1
- package/dist-lib/runtime.js +697 -649
- package/dist-lib/types/session-events.d.ts +1 -0
- package/dist-lib/types/session-events.d.ts.map +1 -1
- package/dist-lib/utils/message-virtualization.d.ts +20 -13
- package/dist-lib/utils/message-virtualization.d.ts.map +1 -1
- package/dist-lib/utils/run-state.d.ts.map +1 -1
- package/dist-lib/utils/session-event-history.d.ts +7 -0
- package/dist-lib/utils/session-event-history.d.ts.map +1 -1
- package/dist-lib/utils/session-helpers.d.ts.map +1 -1
- package/package.json +1 -1
- package/dist-ksadk/assets/architecture-7EHR7CIX-CH1wnW5S.js +0 -1
- package/dist-ksadk/assets/channel-D20CB9hV.js +0 -1
- package/dist-ksadk/assets/chunk-QZHKN3VN-BsgRgQ_j.js +0 -1
- package/dist-ksadk/assets/classDiagram-4FO5ZUOK-DjrplkNv.js +0 -1
- package/dist-ksadk/assets/classDiagram-v2-Q7XG4LA2-DjrplkNv.js +0 -1
- package/dist-ksadk/assets/eventmodeling-FCH6USID-B6kJGZGf.js +0 -1
- package/dist-ksadk/assets/gitGraph-WXDBUCRP-B16H8iV0.js +0 -1
- package/dist-ksadk/assets/index-CyqLY8HK.js +0 -165
- package/dist-ksadk/assets/info-J43DQDTF-CuylbYl8.js +0 -1
- package/dist-ksadk/assets/packet-YPE3B663-CkTX9qzg.js +0 -1
- package/dist-ksadk/assets/pie-LRSECV5Y-D-9Kb8fQ.js +0 -1
- package/dist-ksadk/assets/radar-GUYGQ44K-9yNm6uCf.js +0 -1
- package/dist-ksadk/assets/stateDiagram-v2-BHNVJYJU-4EIKDL6E.js +0 -1
- package/dist-ksadk/assets/treeView-BLDUP644-Bxe9I30V.js +0 -1
- package/dist-ksadk/assets/treemap-LRROVOQU-IPLUPBu2.js +0 -1
- package/dist-ksadk/assets/wardley-L42UT6IY-mW088A4m.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-
|
|
3
|
-
import { t as
|
|
4
|
-
import { X as
|
|
5
|
-
import { Fragment as
|
|
6
|
-
import * as
|
|
7
|
-
import
|
|
8
|
-
import * as
|
|
9
|
-
import { create as
|
|
2
|
+
import { C as n, D as r, E as i, O as a, T as o, _ as s, b as c, c as l, f as u, g as d, h as f, k as p, l as m, m as h, n as g, o as _, p as v, r as y, s as b, t as ee, u as te, v as x, w as S, y as C } from "./WorkspacePanelContainer-D5WLGlO_.js";
|
|
3
|
+
import { t as w } from "./artifact-BfFsPe5A.js";
|
|
4
|
+
import { X as T } from "lucide-react";
|
|
5
|
+
import { Fragment as ne, jsx as E, jsxs as D } from "react/jsx-runtime";
|
|
6
|
+
import * as O from "react";
|
|
7
|
+
import k, { Suspense as re, useCallback as A, useEffect as j, useMemo as ie, useRef as M, useState as ae } from "react";
|
|
8
|
+
import * as N from "@radix-ui/react-dialog";
|
|
9
|
+
import { create as P } from "zustand";
|
|
10
10
|
//#region src/stores/bootstrap.ts
|
|
11
|
-
var
|
|
11
|
+
var F = P()((t) => ({
|
|
12
12
|
agentId: "default-agent",
|
|
13
13
|
agentName: "Agent",
|
|
14
14
|
agentFramework: "",
|
|
@@ -26,7 +26,7 @@ var P = N()((t) => ({
|
|
|
26
26
|
}));
|
|
27
27
|
//#endregion
|
|
28
28
|
//#region src/stores/model.ts
|
|
29
|
-
function
|
|
29
|
+
function oe(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 se(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 I = P()((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: oe(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
|
+
})), se = (e) => !!(e && e.status !== "completed" && e.status !== "failed" && e.status !== "stopped"), L = P()((e, t) => ({
|
|
50
50
|
isStreaming: !1,
|
|
51
51
|
currentRunId: "",
|
|
52
52
|
stopRequested: !1,
|
|
@@ -55,9 +55,9 @@ var F = N()((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 && se(t)) } : { isStreaming: Object.values(e.sessionActivities).some(se) } : { isStreaming: n };
|
|
59
59
|
}),
|
|
60
|
-
isSessionStreaming: (e) =>
|
|
60
|
+
isSessionStreaming: (e) => se(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 F = N()((e) => ({
|
|
|
157
157
|
}));
|
|
158
158
|
//#endregion
|
|
159
159
|
//#region src/utils/session-pagination.js
|
|
160
|
-
function
|
|
160
|
+
function R(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 L(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 ce({ 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: R(i),
|
|
175
175
|
hasMore: o < a
|
|
176
176
|
};
|
|
177
177
|
}
|
|
178
|
-
function
|
|
178
|
+
function le({ 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,45 +184,45 @@ function ue({ 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 ue(e) {
|
|
188
188
|
let t = e.UpdatedAt;
|
|
189
189
|
if (typeof t == "string") {
|
|
190
190
|
let e = Date.parse(t);
|
|
191
191
|
return Number.isNaN(e) ? 0 : e;
|
|
192
192
|
}
|
|
193
|
-
return typeof t == "number" ? t : 0;
|
|
193
|
+
return typeof t == "number" && Number.isFinite(t) ? t > 1e11 ? t : t * 1e3 : 0;
|
|
194
194
|
}
|
|
195
|
-
var
|
|
196
|
-
function
|
|
195
|
+
var de = "ksadk.pinnedSessionIds";
|
|
196
|
+
function fe() {
|
|
197
197
|
try {
|
|
198
|
-
let e = globalThis.localStorage?.getItem(
|
|
198
|
+
let e = globalThis.localStorage?.getItem(de), 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 pe(e) {
|
|
205
205
|
try {
|
|
206
|
-
globalThis.localStorage?.setItem(
|
|
206
|
+
globalThis.localStorage?.setItem(de, JSON.stringify(e));
|
|
207
207
|
} catch {}
|
|
208
208
|
}
|
|
209
|
-
function
|
|
209
|
+
function me(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 ? ue(t) - ue(e) : i - r;
|
|
214
214
|
});
|
|
215
215
|
}
|
|
216
|
-
function
|
|
216
|
+
function he(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 me(Array.from(r.values()), n);
|
|
224
224
|
}
|
|
225
|
-
var
|
|
225
|
+
var z = P()((e) => ({
|
|
226
226
|
sessions: [],
|
|
227
227
|
currentSessionId: null,
|
|
228
228
|
sessionsAgentId: "",
|
|
@@ -232,12 +232,12 @@ var R = N()((e) => ({
|
|
|
232
232
|
loadedPages: /* @__PURE__ */ new Set(),
|
|
233
233
|
hasMoreSessions: !1,
|
|
234
234
|
isLoadingSessions: !1,
|
|
235
|
-
pinnedSessionIds:
|
|
235
|
+
pinnedSessionIds: fe(),
|
|
236
236
|
eventCache: {},
|
|
237
|
-
setSessions: (t) => e((e) => ({ sessions:
|
|
237
|
+
setSessions: (t) => e((e) => ({ sessions: me(t, e.pinnedSessionIds) })),
|
|
238
238
|
setCurrentSessionId: (t) => e({ currentSessionId: t }),
|
|
239
239
|
upsertSessions: (t, n) => e((e) => {
|
|
240
|
-
let r =
|
|
240
|
+
let r = he(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 ? R(/* @__PURE__ */ new Set(), [i]) : R(e.loadedPages, [i]), c = ce({
|
|
241
241
|
sessionsLength: r.length,
|
|
242
242
|
total: o,
|
|
243
243
|
page: i,
|
|
@@ -259,7 +259,7 @@ var R = N()((e) => ({
|
|
|
259
259
|
return {
|
|
260
260
|
sessions: n,
|
|
261
261
|
sessionsTotal: r,
|
|
262
|
-
hasMoreSessions:
|
|
262
|
+
hasMoreSessions: ce({
|
|
263
263
|
sessionsLength: n.length,
|
|
264
264
|
total: r,
|
|
265
265
|
page: e.sessionsPage,
|
|
@@ -283,9 +283,9 @@ var R = N()((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 pe(r), {
|
|
287
287
|
pinnedSessionIds: r,
|
|
288
|
-
sessions:
|
|
288
|
+
sessions: me(e.sessions, r)
|
|
289
289
|
};
|
|
290
290
|
}),
|
|
291
291
|
setSessionEventCache: (t, n) => e((e) => ({ eventCache: {
|
|
@@ -313,52 +313,52 @@ var R = N()((e) => ({
|
|
|
313
313
|
let n = { ...e.eventCache };
|
|
314
314
|
return delete n[t], { eventCache: n };
|
|
315
315
|
})
|
|
316
|
-
})),
|
|
317
|
-
function
|
|
316
|
+
})), B = .28;
|
|
317
|
+
function V(e, t = 768) {
|
|
318
318
|
return Number(e) <= t;
|
|
319
319
|
}
|
|
320
|
-
function
|
|
320
|
+
function ge({ 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 _e({ 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 * B);
|
|
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 ve = "ksadk:webui:selected-session:";
|
|
336
|
+
function ye(e) {
|
|
337
337
|
return String(e || "").trim() || "default-agent";
|
|
338
338
|
}
|
|
339
|
-
function
|
|
339
|
+
function be(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 xe(e) {
|
|
347
|
+
return `${ve}${ye(e)}`;
|
|
348
348
|
}
|
|
349
|
-
function
|
|
350
|
-
let n =
|
|
349
|
+
function Se(e, t) {
|
|
350
|
+
let n = be(t);
|
|
351
351
|
if (!n) return null;
|
|
352
352
|
try {
|
|
353
|
-
return String(n.getItem(
|
|
353
|
+
return String(n.getItem(xe(e)) || "").trim() || null;
|
|
354
354
|
} catch {
|
|
355
355
|
return null;
|
|
356
356
|
}
|
|
357
357
|
}
|
|
358
|
-
function
|
|
359
|
-
let r =
|
|
358
|
+
function Ce(e, t, n) {
|
|
359
|
+
let r = be(n);
|
|
360
360
|
if (!r) return;
|
|
361
|
-
let i =
|
|
361
|
+
let i = xe(e), a = String(t || "").trim();
|
|
362
362
|
try {
|
|
363
363
|
if (a) {
|
|
364
364
|
r.setItem(i, a);
|
|
@@ -367,7 +367,7 @@ function we(e, t, n) {
|
|
|
367
367
|
r.removeItem(i);
|
|
368
368
|
} catch {}
|
|
369
369
|
}
|
|
370
|
-
function
|
|
370
|
+
function we(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 Te(e, t) {
|
|
|
379
379
|
}
|
|
380
380
|
//#endregion
|
|
381
381
|
//#region src/utils/native-platform.js
|
|
382
|
-
var
|
|
383
|
-
function
|
|
382
|
+
var Te = new Map([["openclaw", "OpenClaw"], ["hermes", "Hermes"]]);
|
|
383
|
+
function Ee(e) {
|
|
384
384
|
return String(e || "").trim().toLowerCase();
|
|
385
385
|
}
|
|
386
|
-
function
|
|
386
|
+
function De(e) {
|
|
387
387
|
return String(e || "").trim().toLowerCase();
|
|
388
388
|
}
|
|
389
|
-
function
|
|
389
|
+
function Oe(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 ke({ capability: e, agentFramework: t, accessMode: n, origin: r }) {
|
|
397
|
+
let i = Ee(n);
|
|
398
398
|
if (i !== "owner" && i !== "private" || !e?.Enabled) return null;
|
|
399
|
-
let a =
|
|
399
|
+
let a = Te.get(De(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, Oe(r)).toString() : Oe(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 Ae = new Set([
|
|
409
409
|
"auto",
|
|
410
410
|
"enabled",
|
|
411
411
|
"disabled"
|
|
412
412
|
]);
|
|
413
|
-
function
|
|
413
|
+
function je(e) {
|
|
414
414
|
let t = String(e || "").trim().toLowerCase();
|
|
415
|
-
return
|
|
415
|
+
return Ae.has(t) ? t : "auto";
|
|
416
416
|
}
|
|
417
|
-
function
|
|
418
|
-
let t =
|
|
417
|
+
function Me(e) {
|
|
418
|
+
let t = je(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 Ne() {
|
|
425
425
|
return typeof window > "u" ? 900 : Math.round(window.visualViewport?.height || window.innerHeight || 900);
|
|
426
426
|
}
|
|
427
|
-
function
|
|
427
|
+
function H() {
|
|
428
428
|
return typeof window > "u" ? {
|
|
429
429
|
isMobile: !1,
|
|
430
430
|
viewportHeight: 900
|
|
431
431
|
} : {
|
|
432
|
-
isMobile:
|
|
433
|
-
viewportHeight:
|
|
432
|
+
isMobile: V(window.innerWidth, 768),
|
|
433
|
+
viewportHeight: Ne()
|
|
434
434
|
};
|
|
435
435
|
}
|
|
436
|
-
function
|
|
437
|
-
let [e, t] =
|
|
438
|
-
return
|
|
436
|
+
function Pe() {
|
|
437
|
+
let [e, t] = ae(() => H());
|
|
438
|
+
return j(() => {
|
|
439
439
|
if (typeof window > "u") return;
|
|
440
440
|
let e = window.matchMedia("(max-width: 768px)"), n = () => {
|
|
441
|
-
t(
|
|
441
|
+
t(H());
|
|
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 Fe() {
|
|
|
449
449
|
}
|
|
450
450
|
//#endregion
|
|
451
451
|
//#region src/api/client.ts
|
|
452
|
-
var
|
|
452
|
+
var U = 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
|
+
}, W = class extends Error {
|
|
459
459
|
constructor(e = "请求已取消") {
|
|
460
460
|
super(e), this.name = "CancelledError";
|
|
461
461
|
}
|
|
462
|
-
},
|
|
463
|
-
async function
|
|
462
|
+
}, G = "/agentengine/api/v1";
|
|
463
|
+
async function Fe(e) {
|
|
464
464
|
let t;
|
|
465
465
|
try {
|
|
466
466
|
t = await e.json();
|
|
467
467
|
} catch {
|
|
468
|
-
throw new
|
|
468
|
+
throw new U(-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 U(e.status, t?.Message || `HTTP ${e.status}`, t);
|
|
471
|
+
if (t?.Code !== void 0 && t.Code !== 0) throw new U(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 K(e) {
|
|
475
|
+
throw e instanceof DOMException && e.name === "AbortError" ? new W() : e;
|
|
476
476
|
}
|
|
477
|
-
async function
|
|
477
|
+
async function q(e, t, n) {
|
|
478
478
|
let r;
|
|
479
479
|
try {
|
|
480
|
-
r = await fetch(`${
|
|
480
|
+
r = await fetch(`${G}/${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 K(e);
|
|
488
488
|
}
|
|
489
|
-
return
|
|
489
|
+
return Fe(r);
|
|
490
490
|
}
|
|
491
|
-
async function
|
|
491
|
+
async function Ie(e, t, n) {
|
|
492
492
|
let r;
|
|
493
493
|
try {
|
|
494
|
-
r = await fetch(`${
|
|
494
|
+
r = await fetch(`${G}/${e}`, {
|
|
495
495
|
method: "POST",
|
|
496
496
|
body: t,
|
|
497
497
|
signal: n?.signal
|
|
498
498
|
});
|
|
499
499
|
} catch (e) {
|
|
500
|
-
throw
|
|
500
|
+
throw K(e);
|
|
501
501
|
}
|
|
502
|
-
return
|
|
502
|
+
return Fe(r);
|
|
503
503
|
}
|
|
504
|
-
async function
|
|
505
|
-
let r = new URLSearchParams(t).toString(), i = r ? `${
|
|
504
|
+
async function Le(e, t, n) {
|
|
505
|
+
let r = new URLSearchParams(t).toString(), i = r ? `${G}/${e}?${r}` : `${G}/${e}`, a;
|
|
506
506
|
try {
|
|
507
507
|
a = await fetch(i, { signal: n?.signal });
|
|
508
508
|
} catch (e) {
|
|
509
|
-
throw
|
|
509
|
+
throw K(e);
|
|
510
510
|
}
|
|
511
|
-
if (!a.ok) throw new
|
|
511
|
+
if (!a.ok) throw new U(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 U(-3, "文件读取失败");
|
|
516
516
|
}
|
|
517
517
|
}
|
|
518
|
-
async function
|
|
518
|
+
async function Re(e, t, n) {
|
|
519
519
|
let r;
|
|
520
520
|
try {
|
|
521
|
-
r = await fetch(`${
|
|
521
|
+
r = await fetch(`${G}/${e}`, {
|
|
522
522
|
method: "POST",
|
|
523
523
|
headers: {
|
|
524
524
|
"Content-Type": "application/json",
|
|
@@ -528,92 +528,92 @@ async function ze(e, t, n) {
|
|
|
528
528
|
signal: n?.signal
|
|
529
529
|
});
|
|
530
530
|
} catch (e) {
|
|
531
|
-
throw
|
|
531
|
+
throw K(e);
|
|
532
532
|
}
|
|
533
|
-
if (!r.ok) throw new
|
|
534
|
-
if (!r.body) throw new
|
|
533
|
+
if (!r.ok) throw new U(r.status, `流式请求失败: ${r.statusText}`);
|
|
534
|
+
if (!r.body) throw new U(-1, "无法获取响应流");
|
|
535
535
|
return r.body;
|
|
536
536
|
}
|
|
537
|
-
async function
|
|
538
|
-
let r = new URLSearchParams(t).toString(), i = r ? `${
|
|
537
|
+
async function ze(e, t, n) {
|
|
538
|
+
let r = new URLSearchParams(t).toString(), i = r ? `${G}/${e}?${r}` : `${G}/${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 K(e);
|
|
546
546
|
}
|
|
547
|
-
if (!a.ok) throw new
|
|
548
|
-
if (!a.body) throw new
|
|
547
|
+
if (!a.ok) throw new U(a.status, `流式订阅失败: ${a.statusText}`);
|
|
548
|
+
if (!a.body) throw new U(-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 Be() {
|
|
554
|
+
return q("GetAgentUiBootstrap", {});
|
|
555
555
|
}
|
|
556
556
|
//#endregion
|
|
557
557
|
//#region src/api/model.ts
|
|
558
|
-
async function
|
|
559
|
-
return
|
|
558
|
+
async function Ve(e) {
|
|
559
|
+
return q("ListAgentModels", { AgentId: e });
|
|
560
560
|
}
|
|
561
561
|
//#endregion
|
|
562
562
|
//#region src/hooks/useBootstrap.ts
|
|
563
|
-
function
|
|
563
|
+
function He(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 Ue(e) {
|
|
569
569
|
try {
|
|
570
|
-
let t = await
|
|
571
|
-
Array.isArray(n) &&
|
|
570
|
+
let t = await Ve(e), n = t?.Models;
|
|
571
|
+
Array.isArray(n) && I.getState().upsertModels(n);
|
|
572
572
|
let r = t;
|
|
573
|
-
r?.Current && !
|
|
573
|
+
r?.Current && !I.getState().selectedModel && I.getState().setSelectedModel(String(r.Current)), r?.Source && I.getState().setModelSource(String(r.Source));
|
|
574
574
|
} catch (e) {
|
|
575
575
|
console.error("Failed to fetch models:", e);
|
|
576
576
|
} finally {
|
|
577
|
-
|
|
577
|
+
I.getState().setModelCatalogLoaded(!0);
|
|
578
578
|
}
|
|
579
579
|
}
|
|
580
|
-
function
|
|
581
|
-
|
|
580
|
+
function We(n) {
|
|
581
|
+
j(() => {
|
|
582
582
|
(async () => {
|
|
583
583
|
try {
|
|
584
|
-
let r = await
|
|
585
|
-
if (
|
|
584
|
+
let r = await Be(), i = r, a = i?.Agent, o = String(a?.AgentId || "default-agent");
|
|
585
|
+
if (F.getState().setAgentId(o), a?.Name) {
|
|
586
586
|
let e = String(a.Name);
|
|
587
|
-
|
|
587
|
+
F.getState().setAgentName(e), document.title = e;
|
|
588
588
|
}
|
|
589
589
|
let s = String(a?.Framework || "").trim().toLowerCase();
|
|
590
|
-
|
|
590
|
+
F.getState().setAgentFramework(s);
|
|
591
591
|
let c = e(r);
|
|
592
|
-
|
|
592
|
+
F.getState().setCapabilities(c), F.getState().setApiFormats(He(c.HostedChat.ApiFormats)), F.getState().setAccessMode(String(i?.AccessMode || "Owner"));
|
|
593
593
|
let l = c.WorkspaceFiles && i?.WorkspaceFiles ? i.WorkspaceFiles : null;
|
|
594
|
-
|
|
594
|
+
F.getState().setWorkspaceFiles(l), l || _.getState().setWorkspacePanelOpen(!1), t(c) && n.fetchSessions(o, Se(o));
|
|
595
595
|
let u = i?.Model;
|
|
596
|
-
u?.id && (
|
|
596
|
+
u?.id && (I.getState().setSelectedModel(u.id), I.getState().upsertModels([u]), I.getState().setModelSource(u.source || "")), Ue(o);
|
|
597
597
|
} catch (t) {
|
|
598
|
-
console.error("Failed to fetch bootstrap:", t),
|
|
598
|
+
console.error("Failed to fetch bootstrap:", t), F.getState().setCapabilities(e({ Data: {
|
|
599
599
|
Agent: { Framework: "" },
|
|
600
600
|
ApiFormats: ["responses", "chat_completions"],
|
|
601
601
|
Capabilities: {}
|
|
602
|
-
} })), n.fetchSessions("default-agent",
|
|
602
|
+
} })), n.fetchSessions("default-agent", Se("default-agent")), Ue("default-agent");
|
|
603
603
|
}
|
|
604
604
|
})();
|
|
605
605
|
}, []);
|
|
606
606
|
}
|
|
607
607
|
//#endregion
|
|
608
608
|
//#region src/stores/message.ts
|
|
609
|
-
var
|
|
609
|
+
var J = P()((e) => ({
|
|
610
610
|
messages: [],
|
|
611
611
|
setMessages: (t) => e({ messages: t }),
|
|
612
612
|
patchMessages: (t) => e((e) => ({ messages: t(e.messages) }))
|
|
613
613
|
}));
|
|
614
614
|
//#endregion
|
|
615
615
|
//#region src/utils/responses-stream.js
|
|
616
|
-
function
|
|
616
|
+
function Ge() {
|
|
617
617
|
return {
|
|
618
618
|
toolNames: /* @__PURE__ */ new Map(),
|
|
619
619
|
toolArguments: /* @__PURE__ */ new Map(),
|
|
@@ -621,55 +621,55 @@ function Ke() {
|
|
|
621
621
|
currentResponseId: ""
|
|
622
622
|
};
|
|
623
623
|
}
|
|
624
|
-
function
|
|
624
|
+
function Ke(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 Y(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 X(...e) {
|
|
631
631
|
for (let t of e) {
|
|
632
|
-
let e =
|
|
632
|
+
let e = Ke(t);
|
|
633
633
|
if (e) return e;
|
|
634
634
|
}
|
|
635
635
|
return "";
|
|
636
636
|
}
|
|
637
|
-
function
|
|
637
|
+
function qe(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 Je(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 Ye(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 Xe(e) {
|
|
650
650
|
if (!e || typeof e != "object") return "";
|
|
651
|
-
let t =
|
|
652
|
-
return
|
|
651
|
+
let t = Ke(e.content);
|
|
652
|
+
return X(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 Ze(e) {
|
|
655
|
+
let t = e?.response && typeof e.response == "object" ? e.response : e, n = X(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 = Xe(e);
|
|
660
660
|
if (t) return t;
|
|
661
661
|
}
|
|
662
662
|
return "";
|
|
663
663
|
}
|
|
664
|
-
function
|
|
664
|
+
function Qe(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 $e({ data: e, state: t, status: n }) {
|
|
669
|
+
let r = e?.item || e?.output_item || e || {}, i = String(r.type || "").trim(), a = qe(r, e);
|
|
670
670
|
if (i === "function_call") {
|
|
671
|
-
let e =
|
|
672
|
-
return
|
|
671
|
+
let e = Ye(t, a, r), i = Y(r.arguments ?? r.args ?? r.input);
|
|
672
|
+
return Je(t, a, r, e, i), [{
|
|
673
673
|
type: "tool_upsert",
|
|
674
674
|
name: e,
|
|
675
675
|
args: i,
|
|
@@ -678,27 +678,27 @@ function et({ 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: Ye(t, a, r),
|
|
682
|
+
output: Y(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: Y(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 = Xe(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 = Xe(r);
|
|
702
702
|
return e ? [{
|
|
703
703
|
type: n === "completed" ? "text_final" : "text_delta",
|
|
704
704
|
text: e
|
|
@@ -706,31 +706,31 @@ function et({ data: e, state: t, status: n }) {
|
|
|
706
706
|
}
|
|
707
707
|
return [];
|
|
708
708
|
}
|
|
709
|
-
function
|
|
709
|
+
function et({ 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: Y(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: Y(t?.output ?? t?.result)
|
|
721
721
|
}];
|
|
722
|
-
if (r === "response.output_item.added") return
|
|
722
|
+
if (r === "response.output_item.added") return $e({
|
|
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 $e({
|
|
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 = Ye(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 tt({ 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 = Ye(n, e, t), i = Y(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 tt({ 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 = X(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 = X(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 = X(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 = X(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 tt({ eventName: e, data: t, state: n }) {
|
|
|
779
779
|
}] : [];
|
|
780
780
|
}
|
|
781
781
|
if (r === "response.completed") {
|
|
782
|
-
let e =
|
|
782
|
+
let e = Ze(t), r = Qe(t).flatMap((e) => $e({
|
|
783
783
|
data: {
|
|
784
784
|
...t,
|
|
785
785
|
item: e
|
|
@@ -830,13 +830,13 @@ function tt({ eventName: e, data: t, state: n }) {
|
|
|
830
830
|
}
|
|
831
831
|
//#endregion
|
|
832
832
|
//#region src/core/stream/responses-protocol.ts
|
|
833
|
-
var
|
|
833
|
+
var tt = class {
|
|
834
834
|
id = "responses";
|
|
835
835
|
createState() {
|
|
836
|
-
return
|
|
836
|
+
return Ge();
|
|
837
837
|
}
|
|
838
838
|
parse(e, t) {
|
|
839
|
-
return
|
|
839
|
+
return et({
|
|
840
840
|
eventName: e.eventName,
|
|
841
841
|
data: e.data,
|
|
842
842
|
state: t
|
|
@@ -858,23 +858,23 @@ var nt = class {
|
|
|
858
858
|
};
|
|
859
859
|
//#endregion
|
|
860
860
|
//#region src/utils/stream-parsing.ts
|
|
861
|
-
function
|
|
861
|
+
function nt(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 rt(e) {
|
|
865
865
|
return e && typeof e == "object" ? e : {};
|
|
866
866
|
}
|
|
867
|
-
function
|
|
868
|
-
let t =
|
|
867
|
+
function it(e) {
|
|
868
|
+
let t = rt(e).choices, n = rt(Array.isArray(t) ? t[0] : null), r = rt(n.delta), i = rt(n.message);
|
|
869
869
|
return {
|
|
870
|
-
content:
|
|
871
|
-
reasoning:
|
|
872
|
-
finalText:
|
|
870
|
+
content: nt(r.content),
|
|
871
|
+
reasoning: nt(r.reasoning_content),
|
|
872
|
+
finalText: nt(i.content)
|
|
873
873
|
};
|
|
874
874
|
}
|
|
875
875
|
//#endregion
|
|
876
876
|
//#region src/core/stream/chat-completions-protocol.ts
|
|
877
|
-
var
|
|
877
|
+
var at = class {
|
|
878
878
|
id = "chat_completions";
|
|
879
879
|
createState() {
|
|
880
880
|
return {};
|
|
@@ -882,7 +882,7 @@ var ot = 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 = it(t), r = [];
|
|
886
886
|
return n.reasoning && r.push({
|
|
887
887
|
type: "reasoning_delta",
|
|
888
888
|
text: n.reasoning
|
|
@@ -894,14 +894,14 @@ var ot = class {
|
|
|
894
894
|
text: n.finalText
|
|
895
895
|
}), r;
|
|
896
896
|
}
|
|
897
|
-
},
|
|
898
|
-
|
|
899
|
-
function
|
|
900
|
-
return
|
|
897
|
+
}, ot = /* @__PURE__ */ new Map();
|
|
898
|
+
ot.set("responses", new tt()), ot.set("chat_completions", new at());
|
|
899
|
+
function st(e) {
|
|
900
|
+
return ot.get(e) || ot.get("responses");
|
|
901
901
|
}
|
|
902
902
|
//#endregion
|
|
903
903
|
//#region src/utils/stream-control.js
|
|
904
|
-
function
|
|
904
|
+
function ct(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 lt(e = []) {
|
|
|
910
910
|
}
|
|
911
911
|
//#endregion
|
|
912
912
|
//#region src/core/transport/sse-parser.ts
|
|
913
|
-
function
|
|
913
|
+
function lt(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 ut(e) {
|
|
|
940
940
|
}
|
|
941
941
|
return t;
|
|
942
942
|
}
|
|
943
|
-
function
|
|
943
|
+
function ut(e) {
|
|
944
944
|
let t = e.split("\n\n");
|
|
945
945
|
return {
|
|
946
946
|
chunks: t,
|
|
@@ -949,21 +949,21 @@ function dt(e) {
|
|
|
949
949
|
}
|
|
950
950
|
//#endregion
|
|
951
951
|
//#region src/utils/error.ts
|
|
952
|
-
function
|
|
952
|
+
function dt(e) {
|
|
953
953
|
return e instanceof Error ? e.message : String(e);
|
|
954
954
|
}
|
|
955
|
-
var
|
|
956
|
-
function
|
|
955
|
+
var ft = 1280;
|
|
956
|
+
function pt(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 mt(e, t, n) {
|
|
961
|
+
let r = Math.min(ft, 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 ht = new Set([
|
|
967
967
|
"completed",
|
|
968
968
|
"failed",
|
|
969
969
|
"error",
|
|
@@ -971,12 +971,12 @@ var gt = new Set([
|
|
|
971
971
|
"canceled",
|
|
972
972
|
"aborted"
|
|
973
973
|
]);
|
|
974
|
-
function
|
|
974
|
+
function gt(e) {
|
|
975
975
|
if (e.EventType !== "run_status") return null;
|
|
976
976
|
let t = String(e.Content?.status || "").trim().toLowerCase();
|
|
977
|
-
return
|
|
977
|
+
return ht.has(t) ? t : null;
|
|
978
978
|
}
|
|
979
|
-
function
|
|
979
|
+
function _t(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 vt(e, t) {
|
|
|
1022
1022
|
status: "failed"
|
|
1023
1023
|
} : null;
|
|
1024
1024
|
}
|
|
1025
|
-
function
|
|
1025
|
+
function vt() {
|
|
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 yt = {
|
|
1030
1030
|
idle: [
|
|
1031
1031
|
"creating-session",
|
|
1032
1032
|
"uploading-files",
|
|
@@ -1064,7 +1064,7 @@ var bt = {
|
|
|
1064
1064
|
],
|
|
1065
1065
|
error: ["connecting", "idle"],
|
|
1066
1066
|
cancelled: ["idle"]
|
|
1067
|
-
},
|
|
1067
|
+
}, bt = class {
|
|
1068
1068
|
_stage = "idle";
|
|
1069
1069
|
listeners = /* @__PURE__ */ new Set();
|
|
1070
1070
|
abortController = null;
|
|
@@ -1098,7 +1098,7 @@ var bt = {
|
|
|
1098
1098
|
for (let e of this.listeners) e(t);
|
|
1099
1099
|
}
|
|
1100
1100
|
setStage(e) {
|
|
1101
|
-
let t =
|
|
1101
|
+
let t = yt[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 bt = {
|
|
|
1125
1125
|
status: "connecting",
|
|
1126
1126
|
countEvent: !1
|
|
1127
1127
|
});
|
|
1128
|
-
let a = t ? "responses" :
|
|
1128
|
+
let a = t ? "responses" : pt({
|
|
1129
1129
|
agentFramework: this.config.agentFramework,
|
|
1130
1130
|
apiFormats: this.config.apiFormats
|
|
1131
|
-
}), o =
|
|
1132
|
-
|
|
1131
|
+
}), o = st(a), s = o.createState(), c = vt();
|
|
1132
|
+
L.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 bt = {
|
|
|
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"), L.getState().stopActivity("运行时已取消本次执行。"), this.emit({
|
|
1160
1160
|
type: "activity",
|
|
1161
1161
|
phase: "运行已取消",
|
|
1162
1162
|
status: "stopped",
|
|
@@ -1190,18 +1190,23 @@ var bt = {
|
|
|
1190
1190
|
error: e instanceof Error ? e : Error(String(e))
|
|
1191
1191
|
})));
|
|
1192
1192
|
} finally {
|
|
1193
|
-
|
|
1193
|
+
L.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
|
|
1198
|
+
if (this._stage === "idle") return;
|
|
1199
|
+
this.setStage("stopping");
|
|
1200
|
+
let e = L.getState().currentRunId;
|
|
1201
|
+
e && this.api.cancelRun(this.config.agentId, e).catch((e) => {
|
|
1202
|
+
console.warn("[RunEngine] cancelRun on stop failed:", e);
|
|
1203
|
+
}), this.abortController?.abort(), L.getState().stopActivity(e ? "已向运行时发送取消请求;如果当前框架只支持协作式取消,后台可能会在下一个安全点停止。" : void 0), L.getState().setCurrentRunId(""), this.setStage("cancelled"), this.emit({
|
|
1199
1204
|
type: "system_message",
|
|
1200
|
-
content: "已停止接收本次输出;如果运行时不支持取消,后台执行可能仍会继续。"
|
|
1201
|
-
})
|
|
1205
|
+
content: e ? "已请求取消本次运行。" : "已停止接收本次输出;如果运行时不支持取消,后台执行可能仍会继续。"
|
|
1206
|
+
});
|
|
1202
1207
|
}
|
|
1203
1208
|
disconnect() {
|
|
1204
|
-
this._stage !== "idle" && (this.abortController?.abort(),
|
|
1209
|
+
this._stage !== "idle" && (this.abortController?.abort(), L.getState().setStreaming(!1), L.getState().clearActivity(), this._stage = "idle", this.activeCompactionId = null, this.activeSessionId = null);
|
|
1205
1210
|
}
|
|
1206
1211
|
async cancelRemote(e) {
|
|
1207
1212
|
try {
|
|
@@ -1212,7 +1217,7 @@ var bt = {
|
|
|
1212
1217
|
this.stop();
|
|
1213
1218
|
}
|
|
1214
1219
|
resumeRun(e) {
|
|
1215
|
-
this.abortController?.abort(), this.abortController = new AbortController(), this.activeSessionId = e.sessionId,
|
|
1220
|
+
this.abortController?.abort(), this.abortController = new AbortController(), this.activeSessionId = e.sessionId, L.getState().setCurrentRunId(e.invocationId), this.setStage("connecting"), this.emit({
|
|
1216
1221
|
type: "activity",
|
|
1217
1222
|
phase: "恢复运行事件订阅",
|
|
1218
1223
|
status: "connecting",
|
|
@@ -1236,11 +1241,11 @@ var bt = {
|
|
|
1236
1241
|
let { value: e, done: n } = await r.read();
|
|
1237
1242
|
if (n) break;
|
|
1238
1243
|
a += i.decode(e, { stream: !0 });
|
|
1239
|
-
let { chunks: o, remainder: s } =
|
|
1244
|
+
let { chunks: o, remainder: s } = ut(a);
|
|
1240
1245
|
a = s;
|
|
1241
1246
|
for (let e of o) {
|
|
1242
1247
|
if (!e.trim()) continue;
|
|
1243
|
-
let n =
|
|
1248
|
+
let n = lt(e);
|
|
1244
1249
|
for (let e of n) e.eventName !== "__done__" && (this.emit({
|
|
1245
1250
|
type: "activity",
|
|
1246
1251
|
phase: "收到恢复事件",
|
|
@@ -1248,7 +1253,7 @@ var bt = {
|
|
|
1248
1253
|
}), this.emit({
|
|
1249
1254
|
type: "stream_event",
|
|
1250
1255
|
event: e.data
|
|
1251
|
-
}), t =
|
|
1256
|
+
}), t = gt(e.data) || t);
|
|
1252
1257
|
}
|
|
1253
1258
|
}
|
|
1254
1259
|
this.setStage("completing"), t === "cancelled" || t === "canceled" || t === "aborted" ? this.emit({
|
|
@@ -1270,15 +1275,15 @@ var bt = {
|
|
|
1270
1275
|
} catch (e) {
|
|
1271
1276
|
e instanceof DOMException && e.name === "AbortError" || console.error("Failed to subscribe to run events:", e);
|
|
1272
1277
|
} finally {
|
|
1273
|
-
|
|
1278
|
+
L.getState().setStreaming(!1), L.getState().setCurrentRunId(""), this.setStage("idle"), this.activeSessionId = null;
|
|
1274
1279
|
}
|
|
1275
1280
|
})();
|
|
1276
1281
|
}
|
|
1277
1282
|
resumeCheckpoint(e) {
|
|
1278
1283
|
if (this._stage !== "idle") return !1;
|
|
1279
1284
|
this.abortController = new AbortController(), this.activeSessionId = e.sessionId;
|
|
1280
|
-
let t =
|
|
1281
|
-
return
|
|
1285
|
+
let t = vt();
|
|
1286
|
+
return L.getState().setCurrentRunId(t), (async () => {
|
|
1282
1287
|
try {
|
|
1283
1288
|
if (this.setStage("connecting"), this.emit({
|
|
1284
1289
|
type: "activity",
|
|
@@ -1310,7 +1315,7 @@ var bt = {
|
|
|
1310
1315
|
checkpointId: e.checkpointId,
|
|
1311
1316
|
resumeAttemptId: e.resumeAttemptId,
|
|
1312
1317
|
invocationId: t
|
|
1313
|
-
}, { signal: this.abortController?.signal }), r =
|
|
1318
|
+
}, { signal: this.abortController?.signal }), r = st("responses"), i = r.createState();
|
|
1314
1319
|
this.setStage("streaming"), this.emit({
|
|
1315
1320
|
type: "activity",
|
|
1316
1321
|
source: "restore",
|
|
@@ -1321,7 +1326,7 @@ var bt = {
|
|
|
1321
1326
|
let a = `msg-${Date.now()}`, o = await this.consumeStream(n, r, i, a);
|
|
1322
1327
|
if (o.terminalStatus && o.terminalStatus !== "completed") {
|
|
1323
1328
|
if (o.terminalStatus === "cancelled") {
|
|
1324
|
-
this.setStage("stopping"),
|
|
1329
|
+
this.setStage("stopping"), L.getState().stopActivity("运行时已取消本次恢复。"), this.emit({
|
|
1325
1330
|
type: "activity",
|
|
1326
1331
|
source: "restore",
|
|
1327
1332
|
phase: "恢复已取消",
|
|
@@ -1352,7 +1357,7 @@ var bt = {
|
|
|
1352
1357
|
error: e instanceof Error ? e : Error(String(e))
|
|
1353
1358
|
}));
|
|
1354
1359
|
} finally {
|
|
1355
|
-
|
|
1360
|
+
L.getState().setStreaming(!1), L.getState().setCurrentRunId(""), this.setStage("idle"), this.activeSessionId = null, e.onSettled?.(e.sessionId);
|
|
1356
1361
|
}
|
|
1357
1362
|
})(), !0;
|
|
1358
1363
|
}
|
|
@@ -1386,7 +1391,7 @@ var bt = {
|
|
|
1386
1391
|
} catch (e) {
|
|
1387
1392
|
this.emit({
|
|
1388
1393
|
type: "system_message",
|
|
1389
|
-
content: `【系统提示】图片 ${t.name} 读取失败,原因: ${
|
|
1394
|
+
content: `【系统提示】图片 ${t.name} 读取失败,原因: ${dt(e)}`
|
|
1390
1395
|
});
|
|
1391
1396
|
}
|
|
1392
1397
|
continue;
|
|
@@ -1403,7 +1408,7 @@ var bt = {
|
|
|
1403
1408
|
} catch (e) {
|
|
1404
1409
|
this.emit({
|
|
1405
1410
|
type: "system_message",
|
|
1406
|
-
content: `【系统提示】文件 ${t.name} 上传失败,原因: ${
|
|
1411
|
+
content: `【系统提示】文件 ${t.name} 上传失败,原因: ${dt(e)}`
|
|
1407
1412
|
});
|
|
1408
1413
|
}
|
|
1409
1414
|
}
|
|
@@ -1423,7 +1428,7 @@ var bt = {
|
|
|
1423
1428
|
ApiFormat: t,
|
|
1424
1429
|
Model: this.config.selectedModel || void 0,
|
|
1425
1430
|
ModelMetadata: this.config.selectedModelMetadata || void 0,
|
|
1426
|
-
ModelOptions:
|
|
1431
|
+
ModelOptions: Me(je(this.config.thinkingMode))
|
|
1427
1432
|
};
|
|
1428
1433
|
if (n) o.ResponsesInput = r.responsesInput, o.PreviousResponseId = r.previousResponseId;
|
|
1429
1434
|
else {
|
|
@@ -1451,32 +1456,32 @@ var bt = {
|
|
|
1451
1456
|
type: "assistant_message_created",
|
|
1452
1457
|
messageId: r
|
|
1453
1458
|
})), o += a.decode(e, { stream: !0 });
|
|
1454
|
-
let { chunks: u, remainder: d } =
|
|
1459
|
+
let { chunks: u, remainder: d } = ut(o);
|
|
1455
1460
|
o = d;
|
|
1456
1461
|
for (let e of u) {
|
|
1457
1462
|
if (!e.trim()) continue;
|
|
1458
1463
|
if (this.isCompactionChunk(e)) {
|
|
1459
|
-
let t =
|
|
1464
|
+
let t = lt(e);
|
|
1460
1465
|
for (let e of t) e.eventName.startsWith("response.compaction") && this.upsertCompactionMessage({
|
|
1461
1466
|
...e.data,
|
|
1462
1467
|
phase: e.eventName.split(".").pop()
|
|
1463
1468
|
});
|
|
1464
1469
|
continue;
|
|
1465
1470
|
}
|
|
1466
|
-
let a =
|
|
1471
|
+
let a = lt(e), o = !1, c;
|
|
1467
1472
|
for (let e of a) {
|
|
1468
1473
|
if (e.eventName === "__done__") {
|
|
1469
1474
|
o = !0;
|
|
1470
1475
|
continue;
|
|
1471
1476
|
}
|
|
1472
|
-
let i =
|
|
1477
|
+
let i = _t(e.eventName, e.data);
|
|
1473
1478
|
i && this.emit({
|
|
1474
1479
|
type: "activity",
|
|
1475
1480
|
...i
|
|
1476
1481
|
});
|
|
1477
1482
|
let a = t.parse(e, n);
|
|
1478
1483
|
for (let e of a) this.dispatchAction(e, r);
|
|
1479
|
-
if (
|
|
1484
|
+
if (ct(a)) {
|
|
1480
1485
|
o = !0;
|
|
1481
1486
|
let e = a.find((e) => e.type === "terminal");
|
|
1482
1487
|
c = e && "status" in e ? String(e.status || "") : void 0;
|
|
@@ -1587,18 +1592,18 @@ var bt = {
|
|
|
1587
1592
|
phase: "failed"
|
|
1588
1593
|
}), null);
|
|
1589
1594
|
}
|
|
1590
|
-
},
|
|
1591
|
-
function
|
|
1595
|
+
}, xt = [], St = [];
|
|
1596
|
+
function Z(e) {
|
|
1592
1597
|
return typeof e == "string" ? e.trim() : "";
|
|
1593
1598
|
}
|
|
1594
|
-
function
|
|
1599
|
+
function Ct(e) {
|
|
1595
1600
|
let t = typeof e == "number" ? e : Number(e);
|
|
1596
1601
|
return Number.isFinite(t) ? t : void 0;
|
|
1597
1602
|
}
|
|
1598
|
-
function
|
|
1603
|
+
function wt(e) {
|
|
1599
1604
|
return typeof e == "string" || typeof e == "number" ? e : void 0;
|
|
1600
1605
|
}
|
|
1601
|
-
function
|
|
1606
|
+
function Tt(e) {
|
|
1602
1607
|
return e && typeof e == "object" && !Array.isArray(e) ? e : void 0;
|
|
1603
1608
|
}
|
|
1604
1609
|
function Et(e) {
|
|
@@ -1627,47 +1632,47 @@ function jt(e) {
|
|
|
1627
1632
|
return t ? e.filter((e) => e.runId === t) : [];
|
|
1628
1633
|
}
|
|
1629
1634
|
function Mt(e) {
|
|
1630
|
-
let t =
|
|
1635
|
+
let t = Tt(e);
|
|
1631
1636
|
if (!t) return null;
|
|
1632
|
-
let n =
|
|
1637
|
+
let n = Tt(t.Metadata ?? t.metadata), r = Tt(t.Content ?? t.content), i = Z(t.CheckpointId ?? t.checkpointId ?? t.checkpoint_id ?? n?.checkpoint_id ?? n?.checkpointId ?? r?.checkpoint_id ?? r?.checkpointId), a = Z(t.RunId ?? t.runId ?? t.run_id ?? n?.run_id ?? n?.runId ?? r?.run_id ?? r?.runId);
|
|
1633
1638
|
return !i || !a ? null : {
|
|
1634
1639
|
checkpointId: i,
|
|
1635
1640
|
runId: a,
|
|
1636
|
-
sessionId:
|
|
1637
|
-
invocationId:
|
|
1638
|
-
seqId:
|
|
1639
|
-
timestamp:
|
|
1640
|
-
framework:
|
|
1641
|
-
frameworkRef:
|
|
1642
|
-
phase:
|
|
1643
|
-
stage:
|
|
1644
|
-
summary:
|
|
1645
|
-
nextAction:
|
|
1646
|
-
status:
|
|
1641
|
+
sessionId: Z(t.SessionId ?? t.sessionId ?? t.session_id) || void 0,
|
|
1642
|
+
invocationId: Z(t.InvocationId ?? t.invocationId ?? t.invocation_id) || void 0,
|
|
1643
|
+
seqId: Ct(t.SeqId ?? t.seqId ?? t.seq_id),
|
|
1644
|
+
timestamp: wt(t.Timestamp ?? t.timestamp ?? t.CreatedAt ?? t.createdAt),
|
|
1645
|
+
framework: Z(t.Framework ?? t.framework ?? n?.framework ?? r?.framework) || void 0,
|
|
1646
|
+
frameworkRef: Tt(t.FrameworkRef ?? t.frameworkRef ?? t.framework_ref ?? n?.framework_ref ?? n?.frameworkRef),
|
|
1647
|
+
phase: Z(t.Phase ?? t.phase ?? n?.phase ?? r?.phase) || void 0,
|
|
1648
|
+
stage: Z(t.Stage ?? t.stage ?? n?.stage ?? n?.title) || void 0,
|
|
1649
|
+
summary: Z(t.Summary ?? t.summary ?? n?.summary ?? n?.description) || void 0,
|
|
1650
|
+
nextAction: Z(t.NextAction ?? t.nextAction ?? t.next_action ?? n?.nextAction ?? n?.next_action) || void 0,
|
|
1651
|
+
status: Z(t.Status ?? t.status ?? n?.status ?? r?.status) || void 0,
|
|
1647
1652
|
metadata: n
|
|
1648
1653
|
};
|
|
1649
1654
|
}
|
|
1650
1655
|
function Nt(e) {
|
|
1651
|
-
let t =
|
|
1656
|
+
let t = Tt(e);
|
|
1652
1657
|
if (!t) return null;
|
|
1653
|
-
let n =
|
|
1658
|
+
let n = Z(t.ReceiptId ?? t.receiptId ?? t.receipt_id), r = Z(t.IdempotencyKey ?? t.idempotencyKey ?? t.idempotency_key), i = Z(t.ToolName ?? t.toolName ?? t.tool_name);
|
|
1654
1659
|
return !n || !r || !i ? null : {
|
|
1655
1660
|
receiptId: n,
|
|
1656
1661
|
idempotencyKey: r,
|
|
1657
1662
|
toolName: i,
|
|
1658
|
-
toolCallId:
|
|
1659
|
-
runId:
|
|
1660
|
-
checkpointId:
|
|
1661
|
-
sessionId:
|
|
1662
|
-
invocationId:
|
|
1663
|
-
seqId:
|
|
1664
|
-
timestamp:
|
|
1665
|
-
status:
|
|
1663
|
+
toolCallId: Z(t.ToolCallId ?? t.toolCallId ?? t.tool_call_id) || void 0,
|
|
1664
|
+
runId: Z(t.RunId ?? t.runId ?? t.run_id) || void 0,
|
|
1665
|
+
checkpointId: Z(t.CheckpointId ?? t.checkpointId ?? t.checkpoint_id) || void 0,
|
|
1666
|
+
sessionId: Z(t.SessionId ?? t.sessionId ?? t.session_id) || void 0,
|
|
1667
|
+
invocationId: Z(t.InvocationId ?? t.invocationId ?? t.invocation_id) || void 0,
|
|
1668
|
+
seqId: Ct(t.SeqId ?? t.seqId ?? t.seq_id),
|
|
1669
|
+
timestamp: wt(t.Timestamp ?? t.timestamp ?? t.CreatedAt ?? t.createdAt),
|
|
1670
|
+
status: Z(t.Status ?? t.status) || void 0,
|
|
1666
1671
|
replayed: !!(t.Replayed ?? t.replayed),
|
|
1667
|
-
metadata:
|
|
1672
|
+
metadata: Tt(t.Metadata ?? t.metadata)
|
|
1668
1673
|
};
|
|
1669
1674
|
}
|
|
1670
|
-
var Q =
|
|
1675
|
+
var Q = P()((e, t) => ({
|
|
1671
1676
|
checkpointsBySessionId: {},
|
|
1672
1677
|
toolReceiptsBySessionId: {},
|
|
1673
1678
|
setSessionCheckpoints: (t, n) => e((e) => ({ checkpointsBySessionId: {
|
|
@@ -1696,7 +1701,7 @@ var Q = N()((e, t) => ({
|
|
|
1696
1701
|
},
|
|
1697
1702
|
getSessionCheckpoints: (e) => {
|
|
1698
1703
|
let n = String(e || "");
|
|
1699
|
-
return n && t().checkpointsBySessionId[n] ||
|
|
1704
|
+
return n && t().checkpointsBySessionId[n] || xt;
|
|
1700
1705
|
},
|
|
1701
1706
|
setSessionToolReceipts: (t, n) => e((e) => ({ toolReceiptsBySessionId: {
|
|
1702
1707
|
...e.toolReceiptsBySessionId,
|
|
@@ -1707,7 +1712,7 @@ var Q = N()((e, t) => ({
|
|
|
1707
1712
|
} })),
|
|
1708
1713
|
getSessionToolReceipts: (e) => {
|
|
1709
1714
|
let n = String(e || "");
|
|
1710
|
-
return n && t().toolReceiptsBySessionId[n] ||
|
|
1715
|
+
return n && t().toolReceiptsBySessionId[n] || St;
|
|
1711
1716
|
},
|
|
1712
1717
|
clearSessionCheckpoints: (t) => e((e) => {
|
|
1713
1718
|
let n = String(t || "");
|
|
@@ -1822,7 +1827,7 @@ function Bt(e) {
|
|
|
1822
1827
|
function Vt(e) {
|
|
1823
1828
|
let t = e?.Metadata?.responses_output;
|
|
1824
1829
|
if (!Array.isArray(t)) return {};
|
|
1825
|
-
let n =
|
|
1830
|
+
let n = Ge(), r = et({
|
|
1826
1831
|
eventName: "response.completed",
|
|
1827
1832
|
data: { response: {
|
|
1828
1833
|
id: String(e.Metadata?.response_id || ""),
|
|
@@ -2227,7 +2232,7 @@ var $ = !1, sn = new Set(["completed"]), cn = new Set([
|
|
|
2227
2232
|
"incomplete"
|
|
2228
2233
|
]);
|
|
2229
2234
|
function ln(e) {
|
|
2230
|
-
$ || ($ = !0,
|
|
2235
|
+
$ || ($ = !0, J.getState().patchMessages((t) => [...t, {
|
|
2231
2236
|
id: e,
|
|
2232
2237
|
role: "model",
|
|
2233
2238
|
content: "",
|
|
@@ -2237,7 +2242,7 @@ function ln(e) {
|
|
|
2237
2242
|
}
|
|
2238
2243
|
function un(e) {
|
|
2239
2244
|
let t = String(e || "").trim().toLowerCase(), n = sn.has(t) ? "completed" : cn.has(t) ? "error" : null;
|
|
2240
|
-
n &&
|
|
2245
|
+
n && J.getState().patchMessages((e) => e.map((e) => {
|
|
2241
2246
|
if (!e.tools) return e;
|
|
2242
2247
|
let t = !1, r = Object.fromEntries(Object.entries(e.tools).map(([e, r]) => r.status === "running" ? (t = !0, [e, {
|
|
2243
2248
|
...r,
|
|
@@ -2250,14 +2255,14 @@ function un(e) {
|
|
|
2250
2255
|
}));
|
|
2251
2256
|
}
|
|
2252
2257
|
function dn(e) {
|
|
2253
|
-
if (e.sessionId &&
|
|
2258
|
+
if (e.sessionId && z.getState().currentSessionId !== e.sessionId) {
|
|
2254
2259
|
e.type === "stage_changed" && (e.stage === "completing" || e.stage === "error" || e.stage === "cancelled") && ($ = !1);
|
|
2255
2260
|
return;
|
|
2256
2261
|
}
|
|
2257
|
-
let t =
|
|
2262
|
+
let t = J.getState();
|
|
2258
2263
|
switch (e.type) {
|
|
2259
2264
|
case "activity":
|
|
2260
|
-
|
|
2265
|
+
L.getState().updateActivity({
|
|
2261
2266
|
sessionId: e.sessionId,
|
|
2262
2267
|
source: e.source,
|
|
2263
2268
|
status: e.status,
|
|
@@ -2353,16 +2358,16 @@ function dn(e) {
|
|
|
2353
2358
|
break;
|
|
2354
2359
|
}
|
|
2355
2360
|
case "stage_changed":
|
|
2356
|
-
e.stage === "streaming" || e.stage === "connecting" ?
|
|
2361
|
+
e.stage === "streaming" || e.stage === "connecting" ? L.getState().setSessionStreaming(e.sessionId, !0) : (e.stage === "completing" || e.stage === "error" || e.stage === "cancelled") && (L.getState().setSessionStreaming(e.sessionId, !1), $ = !1);
|
|
2357
2362
|
break;
|
|
2358
2363
|
case "stream_ended":
|
|
2359
|
-
|
|
2360
|
-
let t =
|
|
2364
|
+
L.getState().setSessionStreaming(e.sessionId, !1), globalThis.setTimeout(() => {
|
|
2365
|
+
let t = L.getState();
|
|
2361
2366
|
t.getSessionActivity(e.sessionId)?.status === "completed" && t.clearSessionActivity(e.sessionId);
|
|
2362
2367
|
}, 2400), $ = !1;
|
|
2363
2368
|
break;
|
|
2364
2369
|
case "error":
|
|
2365
|
-
|
|
2370
|
+
L.getState().setSessionStreaming(e.sessionId, !1), L.getState().updateActivity({
|
|
2366
2371
|
sessionId: e.sessionId,
|
|
2367
2372
|
status: "failed",
|
|
2368
2373
|
phase: "连接断开或生成出错",
|
|
@@ -2377,27 +2382,29 @@ function dn(e) {
|
|
|
2377
2382
|
case "terminal":
|
|
2378
2383
|
un(e.status);
|
|
2379
2384
|
break;
|
|
2380
|
-
case "stream_event":
|
|
2381
|
-
|
|
2382
|
-
|
|
2383
|
-
|
|
2384
|
-
|
|
2385
|
+
case "stream_event": {
|
|
2386
|
+
let t = e.sessionId || e.event.SessionId;
|
|
2387
|
+
if (e.event.EventType === "run_checkpoint" && t && Q.getState().upsertSessionCheckpoint(t, e.event), e.event.EventType === "run_status") {
|
|
2388
|
+
let n = String(e.event.Content?.status || "").trim().toLowerCase();
|
|
2389
|
+
n === "completed" ? L.getState().updateActivity({
|
|
2390
|
+
sessionId: t,
|
|
2385
2391
|
status: "completed",
|
|
2386
2392
|
phase: "后台长任务已完成",
|
|
2387
2393
|
countEvent: !1
|
|
2388
|
-
}) :
|
|
2389
|
-
sessionId:
|
|
2394
|
+
}) : n === "cancelled" || n === "canceled" || n === "aborted" ? L.getState().updateActivity({
|
|
2395
|
+
sessionId: t,
|
|
2390
2396
|
status: "stopped",
|
|
2391
2397
|
phase: "后台长任务已取消",
|
|
2392
2398
|
countEvent: !1
|
|
2393
|
-
}) : (
|
|
2394
|
-
sessionId:
|
|
2399
|
+
}) : (n === "failed" || n === "error") && L.getState().updateActivity({
|
|
2400
|
+
sessionId: t,
|
|
2395
2401
|
status: "failed",
|
|
2396
2402
|
phase: "后台长任务失败",
|
|
2397
2403
|
countEvent: !1
|
|
2398
2404
|
});
|
|
2399
2405
|
}
|
|
2400
2406
|
break;
|
|
2407
|
+
}
|
|
2401
2408
|
}
|
|
2402
2409
|
}
|
|
2403
2410
|
function fn() {
|
|
@@ -2406,7 +2413,7 @@ function fn() {
|
|
|
2406
2413
|
//#endregion
|
|
2407
2414
|
//#region src/hooks/useRunAgent.ts
|
|
2408
2415
|
function pn(e) {
|
|
2409
|
-
let t =
|
|
2416
|
+
let t = M(/* @__PURE__ */ new Map()), n = M(() => {}), { agentId: r, apiFormats: i, agentFramework: a, selectedModel: o, selectedModelMetadata: s, thinkingMode: c, currentSessionIdRef: l, queuedDraftRef: u, onRunSettled: d, uiCapabilities: f } = e, p = A((e) => {
|
|
2410
2417
|
e.updateConfig({
|
|
2411
2418
|
agentId: r,
|
|
2412
2419
|
apiFormats: i,
|
|
@@ -2424,25 +2431,25 @@ function pn(e) {
|
|
|
2424
2431
|
s,
|
|
2425
2432
|
c,
|
|
2426
2433
|
f.RunLifecycle?.CheckpointResumePreview
|
|
2427
|
-
]), m =
|
|
2434
|
+
]), m = A((n) => {
|
|
2428
2435
|
let r = String(n || "new-session"), i = t.current.get(r);
|
|
2429
|
-
return i ? p(i) : (i = new
|
|
2436
|
+
return i ? p(i) : (i = new bt(e.api), p(i), i.subscribe(dn), t.current.set(r, i)), i;
|
|
2430
2437
|
}, [e.api, p]);
|
|
2431
|
-
|
|
2438
|
+
j(() => {
|
|
2432
2439
|
for (let e of t.current.values()) p(e);
|
|
2433
2440
|
}, [p]);
|
|
2434
|
-
let h =
|
|
2441
|
+
let h = A((e) => {
|
|
2435
2442
|
u.current.push(e), _.getState().setQueuedDrafts((t) => [...t, e]);
|
|
2436
|
-
}, [u]), g =
|
|
2443
|
+
}, [u]), g = A((e) => {
|
|
2437
2444
|
let i = l.current, a = m(i);
|
|
2438
2445
|
if (a.stage !== "idle") return !1;
|
|
2439
|
-
fn(), _.getState().setMobileActionsOpen(!1),
|
|
2446
|
+
fn(), _.getState().setMobileActionsOpen(!1), L.getState().setSessionStreaming(i, !0);
|
|
2440
2447
|
let o = e.text.trim(), s = String(Date.now()), c = e.attachments.map((e) => ({
|
|
2441
2448
|
name: e.name,
|
|
2442
2449
|
url: URL.createObjectURL(e),
|
|
2443
2450
|
type: e.type || "application/octet-stream"
|
|
2444
2451
|
}));
|
|
2445
|
-
(o || c.length > 0) &&
|
|
2452
|
+
(o || c.length > 0) && J.getState().patchMessages((e) => [...e, {
|
|
2446
2453
|
id: s,
|
|
2447
2454
|
role: "user",
|
|
2448
2455
|
content: o,
|
|
@@ -2456,24 +2463,24 @@ function pn(e) {
|
|
|
2456
2463
|
previousResponseId: e.previousResponseId,
|
|
2457
2464
|
sessionId: i,
|
|
2458
2465
|
onSessionCreated: (e) => {
|
|
2459
|
-
|
|
2466
|
+
z.getState().upsertSessions([{
|
|
2460
2467
|
SessionId: e,
|
|
2461
2468
|
UpdatedAt: (/* @__PURE__ */ new Date()).toISOString()
|
|
2462
|
-
}]), l.current = e,
|
|
2469
|
+
}]), l.current = e, Ce(r, e), z.getState().setCurrentSessionId(e), i !== e && t.current.set(e, a);
|
|
2463
2470
|
},
|
|
2464
2471
|
onSessionUpsert: () => {},
|
|
2465
2472
|
onSettled: (e) => {
|
|
2466
2473
|
d?.(e), n.current();
|
|
2467
2474
|
}
|
|
2468
2475
|
});
|
|
2469
|
-
return u ||
|
|
2476
|
+
return u || L.getState().setSessionStreaming(i, !1), u;
|
|
2470
2477
|
}, [
|
|
2471
2478
|
r,
|
|
2472
2479
|
l,
|
|
2473
2480
|
m,
|
|
2474
2481
|
d
|
|
2475
2482
|
]);
|
|
2476
|
-
return
|
|
2483
|
+
return j(() => {
|
|
2477
2484
|
n.current = () => {
|
|
2478
2485
|
let e = u.current.shift();
|
|
2479
2486
|
if (!e) {
|
|
@@ -2485,14 +2492,14 @@ function pn(e) {
|
|
|
2485
2492
|
});
|
|
2486
2493
|
};
|
|
2487
2494
|
}, [u, g]), {
|
|
2488
|
-
submitDraft:
|
|
2495
|
+
submitDraft: A(async (e, t, n, r) => {
|
|
2489
2496
|
let i = {
|
|
2490
2497
|
text: e,
|
|
2491
2498
|
attachments: t,
|
|
2492
2499
|
responsesInput: n,
|
|
2493
2500
|
previousResponseId: r
|
|
2494
2501
|
};
|
|
2495
|
-
if (m(l.current).stage !== "idle" &&
|
|
2502
|
+
if (m(l.current).stage !== "idle" && L.getState().isSessionStreaming(l.current)) {
|
|
2496
2503
|
n === void 0 && h({
|
|
2497
2504
|
text: e,
|
|
2498
2505
|
attachments: t
|
|
@@ -2509,25 +2516,25 @@ function pn(e) {
|
|
|
2509
2516
|
m,
|
|
2510
2517
|
g
|
|
2511
2518
|
]),
|
|
2512
|
-
stopGeneration:
|
|
2519
|
+
stopGeneration: A(() => {
|
|
2513
2520
|
m(l.current).stop();
|
|
2514
2521
|
}, [l, m]),
|
|
2515
|
-
disconnectRun:
|
|
2522
|
+
disconnectRun: A(() => {
|
|
2516
2523
|
m(l.current).disconnect();
|
|
2517
2524
|
}, [l, m]),
|
|
2518
|
-
resumeCheckpoint:
|
|
2525
|
+
resumeCheckpoint: A((e) => {
|
|
2519
2526
|
let t = m(e.sessionId);
|
|
2520
2527
|
if (t.stage !== "idle") return !1;
|
|
2521
|
-
fn(), _.getState().setMobileActionsOpen(!1),
|
|
2528
|
+
fn(), _.getState().setMobileActionsOpen(!1), L.getState().setSessionStreaming(e.sessionId, !0);
|
|
2522
2529
|
let r = t.resumeCheckpoint({
|
|
2523
2530
|
...e,
|
|
2524
2531
|
onSettled: (e) => {
|
|
2525
2532
|
d?.(e), n.current();
|
|
2526
2533
|
}
|
|
2527
2534
|
});
|
|
2528
|
-
return r ||
|
|
2535
|
+
return r || L.getState().setSessionStreaming(e.sessionId, !1), r;
|
|
2529
2536
|
}, [m, d]),
|
|
2530
|
-
resetCompaction:
|
|
2537
|
+
resetCompaction: A(() => {
|
|
2531
2538
|
fn();
|
|
2532
2539
|
}, [])
|
|
2533
2540
|
};
|
|
@@ -2537,10 +2544,10 @@ function pn(e) {
|
|
|
2537
2544
|
function mn(e) {
|
|
2538
2545
|
let { agentId: t, currentSessionId: n, isStreaming: r, api: i, submitDraft: a } = e;
|
|
2539
2546
|
return {
|
|
2540
|
-
submitResponseFeedback:
|
|
2547
|
+
submitResponseFeedback: A(async (e) => {
|
|
2541
2548
|
if (!n) return;
|
|
2542
2549
|
let r = null;
|
|
2543
|
-
|
|
2550
|
+
J.getState().patchMessages((t) => {
|
|
2544
2551
|
let n = v(t, {
|
|
2545
2552
|
messageId: e.message.id,
|
|
2546
2553
|
rating: e.rating,
|
|
@@ -2556,12 +2563,12 @@ function mn(e) {
|
|
|
2556
2563
|
rating: e.rating,
|
|
2557
2564
|
comment: e.comment || ""
|
|
2558
2565
|
})))?.Feedback);
|
|
2559
|
-
r &&
|
|
2566
|
+
r && J.getState().patchMessages((t) => s(t, {
|
|
2560
2567
|
messageId: e.message.id,
|
|
2561
2568
|
feedback: r
|
|
2562
2569
|
}));
|
|
2563
2570
|
} catch (t) {
|
|
2564
|
-
console.error("Failed to submit response feedback:", t),
|
|
2571
|
+
console.error("Failed to submit response feedback:", t), J.getState().patchMessages((t) => C(t, {
|
|
2565
2572
|
messageId: e.message.id,
|
|
2566
2573
|
previousFeedback: r
|
|
2567
2574
|
}));
|
|
@@ -2571,10 +2578,10 @@ function mn(e) {
|
|
|
2571
2578
|
n,
|
|
2572
2579
|
i
|
|
2573
2580
|
]),
|
|
2574
|
-
deleteResponseFeedback:
|
|
2581
|
+
deleteResponseFeedback: A(async (e) => {
|
|
2575
2582
|
if (!n) return;
|
|
2576
2583
|
let r = e.feedback ? { ...e.feedback } : null;
|
|
2577
|
-
|
|
2584
|
+
J.getState().patchMessages((t) => d(t, { messageId: e.id }));
|
|
2578
2585
|
try {
|
|
2579
2586
|
await i.deleteResponseFeedback(h({
|
|
2580
2587
|
agentId: t,
|
|
@@ -2582,7 +2589,7 @@ function mn(e) {
|
|
|
2582
2589
|
message: e
|
|
2583
2590
|
}));
|
|
2584
2591
|
} catch (t) {
|
|
2585
|
-
console.error("Failed to delete response feedback:", t),
|
|
2592
|
+
console.error("Failed to delete response feedback:", t), J.getState().patchMessages((t) => C(t, {
|
|
2586
2593
|
messageId: e.id,
|
|
2587
2594
|
previousFeedback: r
|
|
2588
2595
|
}));
|
|
@@ -2592,14 +2599,14 @@ function mn(e) {
|
|
|
2592
2599
|
n,
|
|
2593
2600
|
i
|
|
2594
2601
|
]),
|
|
2595
|
-
respondToApproval:
|
|
2596
|
-
!e.approvalRequestId || r || (
|
|
2602
|
+
respondToApproval: A((e) => {
|
|
2603
|
+
!e.approvalRequestId || r || (J.getState().patchMessages((t) => t.map((t) => ({
|
|
2597
2604
|
...t,
|
|
2598
2605
|
tools: t.tools ? Object.fromEntries(Object.entries(t.tools).map(([t, n]) => [t, n.approvalRequestId === e.approvalRequestId ? {
|
|
2599
2606
|
...n,
|
|
2600
2607
|
approvalStatus: e.approve ? "approved" : "rejected"
|
|
2601
2608
|
} : n])) : t.tools
|
|
2602
|
-
}))),
|
|
2609
|
+
}))), J.getState().patchMessages((t) => [...t, {
|
|
2603
2610
|
id: String(Date.now() + Math.random()),
|
|
2604
2611
|
role: "system",
|
|
2605
2612
|
content: e.approve ? "已批准工具调用,正在继续运行。" : "已拒绝工具调用,正在通知运行时。",
|
|
@@ -2626,25 +2633,40 @@ function gn(e) {
|
|
|
2626
2633
|
}
|
|
2627
2634
|
return 0;
|
|
2628
2635
|
}
|
|
2629
|
-
|
|
2636
|
+
var _n = new Set([
|
|
2637
|
+
"in_progress",
|
|
2638
|
+
"running",
|
|
2639
|
+
"resuming",
|
|
2640
|
+
"starting",
|
|
2641
|
+
"queued",
|
|
2642
|
+
"pending"
|
|
2643
|
+
]);
|
|
2644
|
+
function vn(e) {
|
|
2630
2645
|
return String(e?.EventType || e?.event_type || "").trim();
|
|
2631
2646
|
}
|
|
2632
|
-
function
|
|
2647
|
+
function yn(e = [], t = {}) {
|
|
2633
2648
|
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;
|
|
2634
2649
|
for (let e of i) {
|
|
2635
2650
|
let t = hn(e);
|
|
2636
2651
|
if (!t) continue;
|
|
2637
2652
|
let i = gn(e);
|
|
2638
|
-
i && r.set(t, Math.max(r.get(t) || 0, i)),
|
|
2653
|
+
i && r.set(t, Math.max(r.get(t) || 0, i)), vn(e) === "run_status" && n.set(t, String(e?.Content?.status || e?.content?.status || "").trim());
|
|
2639
2654
|
}
|
|
2640
2655
|
return Array.from(n.entries()).filter(([e, t]) => {
|
|
2641
2656
|
let n = r.get(e) || 0, i = n > 0 && a - n > o;
|
|
2642
|
-
return t
|
|
2657
|
+
return _n.has(t) && !i;
|
|
2643
2658
|
}).map(([e]) => e);
|
|
2644
2659
|
}
|
|
2645
2660
|
//#endregion
|
|
2646
2661
|
//#region src/utils/session-event-history.ts
|
|
2647
|
-
|
|
2662
|
+
function bn(e, t) {
|
|
2663
|
+
let n = Math.max(0, Number(e.offset) || 0), r = Math.max(0, Number(e.total) || 0);
|
|
2664
|
+
return n >= r ? null : {
|
|
2665
|
+
offset: n,
|
|
2666
|
+
limit: Math.min(Math.max(1, Number(t) || 1), r - n)
|
|
2667
|
+
};
|
|
2668
|
+
}
|
|
2669
|
+
async function xn(e, t, n) {
|
|
2648
2670
|
let r = Math.max(1, Number(n?.pageSize) || 50), i = n?.shouldContinue || (() => !0), a = () => !i(), o = await t(e, {
|
|
2649
2671
|
offset: 0,
|
|
2650
2672
|
limit: 1
|
|
@@ -2657,34 +2679,43 @@ async function yn(e, t, n) {
|
|
|
2657
2679
|
offset: Number(o.Offset ?? 0),
|
|
2658
2680
|
limit: Number(o.Limit ?? o.Events?.length ?? 0)
|
|
2659
2681
|
};
|
|
2660
|
-
let c =
|
|
2661
|
-
offset:
|
|
2662
|
-
|
|
2663
|
-
});
|
|
2682
|
+
let c = bn({
|
|
2683
|
+
offset: 0,
|
|
2684
|
+
total: s
|
|
2685
|
+
}, r);
|
|
2686
|
+
if (!c) return {
|
|
2687
|
+
events: [],
|
|
2688
|
+
total: s,
|
|
2689
|
+
offset: 0,
|
|
2690
|
+
limit: 0
|
|
2691
|
+
};
|
|
2692
|
+
let l = await t(e, c);
|
|
2664
2693
|
if (a()) return null;
|
|
2665
|
-
let u = l.Events || [];
|
|
2666
|
-
for (;
|
|
2667
|
-
let n =
|
|
2668
|
-
offset:
|
|
2669
|
-
|
|
2670
|
-
});
|
|
2694
|
+
let u = l.Events || [], d = u.length;
|
|
2695
|
+
for (; d < s;) {
|
|
2696
|
+
let n = bn({
|
|
2697
|
+
offset: d,
|
|
2698
|
+
total: s
|
|
2699
|
+
}, r);
|
|
2700
|
+
if (!n) break;
|
|
2701
|
+
let i = await t(e, n);
|
|
2671
2702
|
if (a()) return null;
|
|
2672
|
-
u = rn(i.Events || [], u),
|
|
2703
|
+
u = rn(i.Events || [], u), d += (i.Events || []).length;
|
|
2673
2704
|
}
|
|
2674
2705
|
return {
|
|
2675
2706
|
events: u,
|
|
2676
2707
|
total: s,
|
|
2677
|
-
offset:
|
|
2708
|
+
offset: d,
|
|
2678
2709
|
limit: u.length
|
|
2679
2710
|
};
|
|
2680
2711
|
}
|
|
2681
2712
|
//#endregion
|
|
2682
2713
|
//#region src/hooks/useSessionLifecycle.ts
|
|
2683
|
-
var
|
|
2684
|
-
function
|
|
2714
|
+
var Sn = 9e4, Cn = 30, wn = 50, Tn = 500;
|
|
2715
|
+
function En(e, t) {
|
|
2685
2716
|
return t.length ? e.length ? e.length >= t.length : !1 : !0;
|
|
2686
2717
|
}
|
|
2687
|
-
function
|
|
2718
|
+
function Dn(e) {
|
|
2688
2719
|
if (e.EventType !== "run_status") return null;
|
|
2689
2720
|
let t = String(e.Content?.status || "").trim().toLowerCase();
|
|
2690
2721
|
return t === "completed" ? {
|
|
@@ -2698,8 +2729,8 @@ function Tn(e) {
|
|
|
2698
2729
|
phase: "后台长任务失败"
|
|
2699
2730
|
} : null;
|
|
2700
2731
|
}
|
|
2701
|
-
function
|
|
2702
|
-
let { agentId: t, api: n, isMobile: r, resetCompaction: i, uiCapabilities: a, disconnectRun: o } = e, s =
|
|
2732
|
+
function On(e) {
|
|
2733
|
+
let { agentId: t, api: n, isMobile: r, resetCompaction: i, uiCapabilities: a, disconnectRun: o } = e, s = M(e.currentSessionId), l = M(e.agentId), u = M(null), d = M(null), f = M(null), p = A(async (e, t, r) => {
|
|
2703
2734
|
let i = r.filter((e) => c(e, !1, !1));
|
|
2704
2735
|
if (!i.length) return;
|
|
2705
2736
|
let a = await Promise.all(i.map(async (r) => {
|
|
@@ -2720,11 +2751,11 @@ function En(e) {
|
|
|
2720
2751
|
}));
|
|
2721
2752
|
if (s.current !== t) return;
|
|
2722
2753
|
let o = new Map(a.filter((e) => !!e).map((e) => [e.messageId, e.feedback]));
|
|
2723
|
-
o.size &&
|
|
2754
|
+
o.size && J.getState().patchMessages((e) => e.map((e) => o.has(e.id) ? {
|
|
2724
2755
|
...e,
|
|
2725
2756
|
feedback: o.get(e.id)
|
|
2726
2757
|
} : e));
|
|
2727
|
-
}, [n]), m =
|
|
2758
|
+
}, [n]), m = A(async (e) => {
|
|
2728
2759
|
u.current?.abort();
|
|
2729
2760
|
let t = new AbortController();
|
|
2730
2761
|
u.current = t;
|
|
@@ -2732,14 +2763,14 @@ function En(e) {
|
|
|
2732
2763
|
u.current !== t || t.signal.aborted || t.abort();
|
|
2733
2764
|
}, o = globalThis.setTimeout(() => {
|
|
2734
2765
|
a();
|
|
2735
|
-
},
|
|
2766
|
+
}, Sn);
|
|
2736
2767
|
try {
|
|
2737
2768
|
let o = (await n.subscribeRunEvents({
|
|
2738
2769
|
sessionId: e.sessionId,
|
|
2739
2770
|
invocationId: e.invocationId,
|
|
2740
2771
|
afterSeqId: e.afterSeqId
|
|
2741
2772
|
}, { signal: t.signal })).getReader(), c = new TextDecoder(), l = "", u = Array.isArray(e.initialEvents) ? e.initialEvents : [];
|
|
2742
|
-
for (
|
|
2773
|
+
for (L.getState().setCurrentRunId(e.invocationId), L.getState().updateActivity({
|
|
2743
2774
|
sessionId: e.sessionId,
|
|
2744
2775
|
status: "running",
|
|
2745
2776
|
phase: "后台长任务运行中",
|
|
@@ -2763,8 +2794,8 @@ function En(e) {
|
|
|
2763
2794
|
try {
|
|
2764
2795
|
let t = JSON.parse(o);
|
|
2765
2796
|
u = rn(u, [t]), i ||= on(t), r ||= i, t.EventType === "run_checkpoint" && Q.getState().upsertSessionCheckpoint(e.sessionId, t);
|
|
2766
|
-
let n =
|
|
2767
|
-
if (n &&
|
|
2797
|
+
let n = Dn(t);
|
|
2798
|
+
if (n && L.getState().updateActivity({
|
|
2768
2799
|
sessionId: e.sessionId,
|
|
2769
2800
|
status: n.status,
|
|
2770
2801
|
phase: n.phase,
|
|
@@ -2775,7 +2806,7 @@ function En(e) {
|
|
|
2775
2806
|
break;
|
|
2776
2807
|
}
|
|
2777
2808
|
let c = nn(u);
|
|
2778
|
-
|
|
2809
|
+
En(c, J.getState().messages) && J.getState().setMessages(c);
|
|
2779
2810
|
} catch (e) {
|
|
2780
2811
|
console.warn("Failed to parse run event data", o, e);
|
|
2781
2812
|
}
|
|
@@ -2784,24 +2815,24 @@ function En(e) {
|
|
|
2784
2815
|
} catch (e) {
|
|
2785
2816
|
e instanceof DOMException && e.name === "AbortError" || console.error("Failed to subscribe run events:", e);
|
|
2786
2817
|
} finally {
|
|
2787
|
-
globalThis.clearTimeout(o), u.current === t && (u.current = null),
|
|
2818
|
+
globalThis.clearTimeout(o), u.current === t && (u.current = null), L.getState().setCurrentRunId(""), r && s.current === e.sessionId && d.current?.(e.sessionId), f.current?.(l.current, e.sessionId);
|
|
2788
2819
|
}
|
|
2789
|
-
}, [n]), h =
|
|
2820
|
+
}, [n]), h = A(async (e) => {
|
|
2790
2821
|
s.current = e;
|
|
2791
2822
|
let t = () => s.current === e;
|
|
2792
|
-
|
|
2823
|
+
z.getState().setCurrentSessionId(e), i(), u.current?.abort(), r && _.getState().setMobileSidebarOpen(!1);
|
|
2793
2824
|
try {
|
|
2794
|
-
let r = await
|
|
2795
|
-
pageSize:
|
|
2825
|
+
let r = await xn(e, n.listSessionEvents, {
|
|
2826
|
+
pageSize: Tn,
|
|
2796
2827
|
shouldContinue: t
|
|
2797
2828
|
});
|
|
2798
|
-
if (!r || (
|
|
2829
|
+
if (!r || (z.getState().setSessionEventCache(e, {
|
|
2799
2830
|
events: r.events,
|
|
2800
2831
|
total: r.total,
|
|
2801
2832
|
offset: r.offset,
|
|
2802
2833
|
limit: r.limit
|
|
2803
2834
|
}), !t())) return;
|
|
2804
|
-
let i =
|
|
2835
|
+
let i = F.getState().capabilities || a;
|
|
2805
2836
|
if (i.RunLifecycle.Enabled && i.RunLifecycle.Checkpoints ? (n.listSessionCheckpoints({
|
|
2806
2837
|
agentId: l.current,
|
|
2807
2838
|
sessionId: e
|
|
@@ -2819,8 +2850,8 @@ function En(e) {
|
|
|
2819
2850
|
})) : Q.getState().clearSessionCheckpoints(e), r.events) {
|
|
2820
2851
|
let n = r.events, a = nn(n);
|
|
2821
2852
|
if (!t()) return;
|
|
2822
|
-
|
|
2823
|
-
let o =
|
|
2853
|
+
J.getState().setMessages(a), p(l.current, e, a);
|
|
2854
|
+
let o = yn(n, {
|
|
2824
2855
|
now: Date.now(),
|
|
2825
2856
|
staleAfterMs: 1800 * 1e3
|
|
2826
2857
|
}), s = an(n);
|
|
@@ -2832,7 +2863,7 @@ function En(e) {
|
|
|
2832
2863
|
});
|
|
2833
2864
|
} else {
|
|
2834
2865
|
if (!t()) return;
|
|
2835
|
-
|
|
2866
|
+
J.getState().setMessages([]), Q.getState().setSessionCheckpoints(e, []), Q.getState().setSessionToolReceipts(e, []);
|
|
2836
2867
|
}
|
|
2837
2868
|
} catch (e) {
|
|
2838
2869
|
console.error("Failed to load session events:", e);
|
|
@@ -2844,73 +2875,73 @@ function En(e) {
|
|
|
2844
2875
|
i,
|
|
2845
2876
|
m,
|
|
2846
2877
|
a
|
|
2847
|
-
]), g =
|
|
2878
|
+
]), g = A(async (e = "default-agent", t = null) => {
|
|
2848
2879
|
try {
|
|
2849
|
-
let r =
|
|
2850
|
-
r.sessionsAgentId && r.sessionsAgentId !== e && r.resetSessionPagination(e),
|
|
2880
|
+
let r = z.getState();
|
|
2881
|
+
r.sessionsAgentId && r.sessionsAgentId !== e && r.resetSessionPagination(e), z.getState().setLoadingSessions(!0);
|
|
2851
2882
|
let i = await n.listSessions(e, {
|
|
2852
2883
|
page: 1,
|
|
2853
|
-
pageSize:
|
|
2884
|
+
pageSize: Cn
|
|
2854
2885
|
});
|
|
2855
|
-
|
|
2886
|
+
z.getState().upsertSessions(i.Sessions || [], {
|
|
2856
2887
|
agentId: e,
|
|
2857
2888
|
total: Number(i.Total ?? i.Sessions?.length ?? 0),
|
|
2858
2889
|
page: Number(i.Page ?? 1),
|
|
2859
|
-
pageSize: Number(i.PageSize ??
|
|
2890
|
+
pageSize: Number(i.PageSize ?? Cn),
|
|
2860
2891
|
replace: !0
|
|
2861
2892
|
});
|
|
2862
|
-
let a =
|
|
2863
|
-
c && c !== o ? h(c) : !c && o && (s.current = null,
|
|
2893
|
+
let a = z.getState().sessions, o = s.current, c = we(a, o || t || Se(e));
|
|
2894
|
+
c && c !== o ? h(c) : !c && o && (s.current = null, z.getState().setCurrentSessionId(null), J.getState().setMessages([]), Q.getState().clearSessionCheckpoints());
|
|
2864
2895
|
} catch (e) {
|
|
2865
|
-
if (e instanceof
|
|
2896
|
+
if (e instanceof W) return;
|
|
2866
2897
|
console.error("Failed to fetch sessions:", e);
|
|
2867
2898
|
} finally {
|
|
2868
|
-
|
|
2899
|
+
z.getState().setLoadingSessions(!1);
|
|
2869
2900
|
}
|
|
2870
|
-
}, [n, h]), v =
|
|
2871
|
-
let e =
|
|
2901
|
+
}, [n, h]), v = A(async () => {
|
|
2902
|
+
let e = z.getState();
|
|
2872
2903
|
if (e.isLoadingSessions || !e.hasMoreSessions) return;
|
|
2873
|
-
let t =
|
|
2904
|
+
let t = le({
|
|
2874
2905
|
total: e.sessionsTotal,
|
|
2875
|
-
pageSize: e.sessionsPageSize ||
|
|
2906
|
+
pageSize: e.sessionsPageSize || Cn,
|
|
2876
2907
|
loadedPages: e.loadedPages
|
|
2877
2908
|
});
|
|
2878
2909
|
if (!t) return;
|
|
2879
|
-
let r = e.sessionsPageSize ||
|
|
2910
|
+
let r = e.sessionsPageSize || Cn, i = e.sessionsAgentId || l.current || "default-agent";
|
|
2880
2911
|
try {
|
|
2881
|
-
|
|
2912
|
+
z.getState().setLoadingSessions(!0);
|
|
2882
2913
|
let a = await n.listSessions(i, {
|
|
2883
2914
|
page: t,
|
|
2884
2915
|
pageSize: r
|
|
2885
2916
|
});
|
|
2886
|
-
|
|
2917
|
+
z.getState().upsertSessions(a.Sessions || [], {
|
|
2887
2918
|
agentId: i,
|
|
2888
2919
|
total: Number(a.Total ?? e.sessionsTotal),
|
|
2889
2920
|
page: Number(a.Page ?? t),
|
|
2890
2921
|
pageSize: Number(a.PageSize ?? r)
|
|
2891
2922
|
});
|
|
2892
2923
|
} catch (e) {
|
|
2893
|
-
if (e instanceof
|
|
2924
|
+
if (e instanceof W) return;
|
|
2894
2925
|
console.error("Failed to load more sessions:", e);
|
|
2895
2926
|
} finally {
|
|
2896
|
-
|
|
2927
|
+
z.getState().setLoadingSessions(!1);
|
|
2897
2928
|
}
|
|
2898
2929
|
}, [n]);
|
|
2899
|
-
|
|
2930
|
+
j(() => {
|
|
2900
2931
|
d.current = h;
|
|
2901
|
-
}, [h]),
|
|
2932
|
+
}, [h]), j(() => {
|
|
2902
2933
|
f.current = g;
|
|
2903
2934
|
}, [g]);
|
|
2904
|
-
let y =
|
|
2935
|
+
let y = A(async () => {
|
|
2905
2936
|
try {
|
|
2906
2937
|
o?.();
|
|
2907
2938
|
let e = (await n.createSession(t)).SessionId;
|
|
2908
|
-
e && (
|
|
2939
|
+
e && (z.getState().upsertSessions([{
|
|
2909
2940
|
SessionId: e,
|
|
2910
2941
|
UpdatedAt: (/* @__PURE__ */ new Date()).toISOString()
|
|
2911
|
-
}]), s.current = e,
|
|
2942
|
+
}]), s.current = e, z.getState().setCurrentSessionId(e), J.getState().setMessages([]), Q.getState().setSessionCheckpoints(e, []), Q.getState().setSessionToolReceipts(e, []), r && (_.getState().setMobileSidebarOpen(!1), _.getState().setMobileActionsOpen(!1)), g(t, e));
|
|
2912
2943
|
} catch (e) {
|
|
2913
|
-
if (e instanceof
|
|
2944
|
+
if (e instanceof W) return;
|
|
2914
2945
|
console.error("Failed to create session:", e);
|
|
2915
2946
|
}
|
|
2916
2947
|
}, [
|
|
@@ -2919,11 +2950,11 @@ function En(e) {
|
|
|
2919
2950
|
o,
|
|
2920
2951
|
g,
|
|
2921
2952
|
r
|
|
2922
|
-
]), b =
|
|
2953
|
+
]), b = A(async (e) => {
|
|
2923
2954
|
try {
|
|
2924
|
-
await n.deleteSession(e),
|
|
2955
|
+
await n.deleteSession(e), z.getState().removeSession(e), z.getState().clearSessionEventCache(e), s.current === e && (s.current = null, J.getState().setMessages([]), Q.getState().clearSessionCheckpoints(e), z.getState().setCurrentSessionId(null), g(t));
|
|
2925
2956
|
} catch (e) {
|
|
2926
|
-
if (e instanceof
|
|
2957
|
+
if (e instanceof W) return;
|
|
2927
2958
|
console.error("Failed to delete session", e);
|
|
2928
2959
|
}
|
|
2929
2960
|
}, [
|
|
@@ -2935,29 +2966,26 @@ function En(e) {
|
|
|
2935
2966
|
fetchSessions: g,
|
|
2936
2967
|
loadMoreSessions: v,
|
|
2937
2968
|
loadSession: h,
|
|
2938
|
-
loadOlderSessionEvents:
|
|
2939
|
-
let t =
|
|
2940
|
-
if (!t || t.
|
|
2941
|
-
let r =
|
|
2942
|
-
try {
|
|
2943
|
-
|
|
2944
|
-
let
|
|
2945
|
-
|
|
2946
|
-
limit: i
|
|
2947
|
-
}), o = rn(a.Events || [], t.events);
|
|
2948
|
-
if (R.getState().setSessionEventCache(e, {
|
|
2969
|
+
loadOlderSessionEvents: A(async (e) => {
|
|
2970
|
+
let t = z.getState().eventCache[e];
|
|
2971
|
+
if (!t || t.isLoadingOlder) return;
|
|
2972
|
+
let r = bn(t, wn);
|
|
2973
|
+
if (r) try {
|
|
2974
|
+
z.getState().setSessionEventLoadingOlder(e, !0);
|
|
2975
|
+
let i = await n.listSessionEvents(e, r), a = i.Events || [], o = rn(a, t.events), c = t.offset + a.length;
|
|
2976
|
+
if (z.getState().setSessionEventCache(e, {
|
|
2949
2977
|
events: o,
|
|
2950
|
-
total: Number(
|
|
2951
|
-
offset:
|
|
2978
|
+
total: Number(i.Total ?? t.total),
|
|
2979
|
+
offset: c,
|
|
2952
2980
|
limit: o.length
|
|
2953
2981
|
}), s.current === e) {
|
|
2954
2982
|
let t = nn(o);
|
|
2955
|
-
|
|
2983
|
+
J.getState().setMessages(t), p(l.current, e, t);
|
|
2956
2984
|
}
|
|
2957
2985
|
} catch (e) {
|
|
2958
|
-
e instanceof
|
|
2986
|
+
e instanceof W || console.error("Failed to load older session events:", e);
|
|
2959
2987
|
} finally {
|
|
2960
|
-
|
|
2988
|
+
z.getState().setSessionEventLoadingOlder(e, !1);
|
|
2961
2989
|
}
|
|
2962
2990
|
}, [n, p]),
|
|
2963
2991
|
createNewSession: y,
|
|
@@ -2969,28 +2997,28 @@ function En(e) {
|
|
|
2969
2997
|
}
|
|
2970
2998
|
//#endregion
|
|
2971
2999
|
//#region src/components/chat/ConnectedSidebar.tsx
|
|
2972
|
-
function
|
|
2973
|
-
let u =
|
|
3000
|
+
function kn({ uiCapabilities: e, createNewSession: n, deleteSession: a, loadSession: s, loadMoreSessions: c }) {
|
|
3001
|
+
let u = z((e) => e.sessions), d = z((e) => e.currentSessionId), f = z((e) => e.pinnedSessionIds), m = z((e) => e.isLoadingSessions), h = z((e) => e.hasMoreSessions), g = _((e) => e.sidebarOpen), v = _((e) => e.mobileSidebarOpen), { isMobile: y } = Pe(), b = t(e), { desktopSidebarVisible: ee } = ge({
|
|
2974
3002
|
isMobile: y,
|
|
2975
3003
|
desktopSidebarOpen: g,
|
|
2976
3004
|
mobileSidebarOpen: v
|
|
2977
3005
|
});
|
|
2978
|
-
return b ? y ? /* @__PURE__ */
|
|
3006
|
+
return b ? y ? /* @__PURE__ */ E(S, {
|
|
2979
3007
|
open: v,
|
|
2980
3008
|
onOpenChange: (e) => _.getState().setMobileSidebarOpen(e),
|
|
2981
|
-
children: /* @__PURE__ */
|
|
3009
|
+
children: /* @__PURE__ */ D(o, {
|
|
2982
3010
|
side: "left",
|
|
2983
3011
|
className: "w-[88vw] max-w-sm border-slate-200 bg-slate-50 p-0 dark:border-slate-800 dark:bg-slate-950",
|
|
2984
3012
|
children: [
|
|
2985
|
-
/* @__PURE__ */
|
|
3013
|
+
/* @__PURE__ */ E(r, {
|
|
2986
3014
|
className: "sr-only",
|
|
2987
3015
|
children: "历史记录"
|
|
2988
3016
|
}),
|
|
2989
|
-
/* @__PURE__ */
|
|
3017
|
+
/* @__PURE__ */ E(i, {
|
|
2990
3018
|
className: "sr-only",
|
|
2991
3019
|
children: "查看和切换历史对话。"
|
|
2992
3020
|
}),
|
|
2993
|
-
/* @__PURE__ */
|
|
3021
|
+
/* @__PURE__ */ E(l, {
|
|
2994
3022
|
sessions: u,
|
|
2995
3023
|
currentSessionId: d,
|
|
2996
3024
|
onCreateNewSession: n,
|
|
@@ -2999,7 +3027,7 @@ function Dn({ uiCapabilities: e, createNewSession: n, deleteSession: a, loadSess
|
|
|
2999
3027
|
t.stopPropagation(), a(e);
|
|
3000
3028
|
},
|
|
3001
3029
|
onTogglePinSession: (e, t) => {
|
|
3002
|
-
t.stopPropagation(),
|
|
3030
|
+
t.stopPropagation(), z.getState().togglePinnedSession(e);
|
|
3003
3031
|
},
|
|
3004
3032
|
onLoadMoreSessions: c,
|
|
3005
3033
|
sessionTitle: te,
|
|
@@ -3009,9 +3037,9 @@ function Dn({ uiCapabilities: e, createNewSession: n, deleteSession: a, loadSess
|
|
|
3009
3037
|
})
|
|
3010
3038
|
]
|
|
3011
3039
|
})
|
|
3012
|
-
}) : /* @__PURE__ */
|
|
3040
|
+
}) : /* @__PURE__ */ E("aside", {
|
|
3013
3041
|
className: p("flex-shrink-0 overflow-hidden border-r border-slate-200 transition-[width] duration-300 ease-in-out dark:border-slate-800", ee ? "w-[280px]" : "w-0 border-r-0"),
|
|
3014
|
-
children: /* @__PURE__ */
|
|
3042
|
+
children: /* @__PURE__ */ E(l, {
|
|
3015
3043
|
sessions: u,
|
|
3016
3044
|
currentSessionId: d,
|
|
3017
3045
|
onCreateNewSession: n,
|
|
@@ -3020,7 +3048,7 @@ function Dn({ uiCapabilities: e, createNewSession: n, deleteSession: a, loadSess
|
|
|
3020
3048
|
t.stopPropagation(), a(e);
|
|
3021
3049
|
},
|
|
3022
3050
|
onTogglePinSession: (e, t) => {
|
|
3023
|
-
t.stopPropagation(),
|
|
3051
|
+
t.stopPropagation(), z.getState().togglePinnedSession(e);
|
|
3024
3052
|
},
|
|
3025
3053
|
onLoadMoreSessions: c,
|
|
3026
3054
|
sessionTitle: te,
|
|
@@ -3032,78 +3060,78 @@ function Dn({ uiCapabilities: e, createNewSession: n, deleteSession: a, loadSess
|
|
|
3032
3060
|
}
|
|
3033
3061
|
//#endregion
|
|
3034
3062
|
//#region src/components/ui/dialog.tsx
|
|
3035
|
-
var
|
|
3063
|
+
var An = N.Root, jn = N.Portal, Mn = O.forwardRef(({ className: e, ...t }, n) => /* @__PURE__ */ E(N.Overlay, {
|
|
3036
3064
|
ref: n,
|
|
3037
3065
|
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),
|
|
3038
3066
|
...t
|
|
3039
3067
|
}));
|
|
3040
|
-
|
|
3041
|
-
var
|
|
3068
|
+
Mn.displayName = N.Overlay.displayName;
|
|
3069
|
+
var Nn = O.forwardRef(({ className: e, children: t, ...n }, r) => /* @__PURE__ */ D(jn, { children: [/* @__PURE__ */ E(Mn, {}), /* @__PURE__ */ D(N.Content, {
|
|
3042
3070
|
ref: r,
|
|
3043
3071
|
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),
|
|
3044
3072
|
...n,
|
|
3045
|
-
children: [t, /* @__PURE__ */
|
|
3073
|
+
children: [t, /* @__PURE__ */ D(N.Close, {
|
|
3046
3074
|
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",
|
|
3047
|
-
children: [/* @__PURE__ */ T
|
|
3075
|
+
children: [/* @__PURE__ */ E(T, { className: "h-4 w-4" }), /* @__PURE__ */ E("span", {
|
|
3048
3076
|
className: "sr-only",
|
|
3049
3077
|
children: "Close"
|
|
3050
3078
|
})]
|
|
3051
3079
|
})]
|
|
3052
3080
|
})] }));
|
|
3053
|
-
|
|
3054
|
-
var
|
|
3081
|
+
Nn.displayName = N.Content.displayName;
|
|
3082
|
+
var Pn = ({ className: e, ...t }) => /* @__PURE__ */ E("div", {
|
|
3055
3083
|
className: p("flex flex-col space-y-1.5 text-center sm:text-left", e),
|
|
3056
3084
|
...t
|
|
3057
3085
|
});
|
|
3058
|
-
|
|
3059
|
-
var
|
|
3086
|
+
Pn.displayName = "DialogHeader";
|
|
3087
|
+
var Fn = ({ className: e, ...t }) => /* @__PURE__ */ E("div", {
|
|
3060
3088
|
className: p("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2", e),
|
|
3061
3089
|
...t
|
|
3062
3090
|
});
|
|
3063
|
-
|
|
3064
|
-
var
|
|
3091
|
+
Fn.displayName = "DialogFooter";
|
|
3092
|
+
var In = O.forwardRef(({ className: e, ...t }, n) => /* @__PURE__ */ E(N.Title, {
|
|
3065
3093
|
ref: n,
|
|
3066
3094
|
className: p("text-lg font-semibold leading-none tracking-tight", e),
|
|
3067
3095
|
...t
|
|
3068
3096
|
}));
|
|
3069
|
-
|
|
3070
|
-
var
|
|
3097
|
+
In.displayName = N.Title.displayName;
|
|
3098
|
+
var Ln = O.forwardRef(({ className: e, ...t }, n) => /* @__PURE__ */ E(N.Description, {
|
|
3071
3099
|
ref: n,
|
|
3072
3100
|
className: p("text-sm text-muted-foreground", e),
|
|
3073
3101
|
...t
|
|
3074
3102
|
}));
|
|
3075
|
-
|
|
3103
|
+
Ln.displayName = N.Description.displayName;
|
|
3076
3104
|
//#endregion
|
|
3077
3105
|
//#region src/components/chat/AttachmentPreview.tsx
|
|
3078
|
-
function
|
|
3106
|
+
function Rn(e, t) {
|
|
3079
3107
|
if (!(!t || e)) return {
|
|
3080
3108
|
width: `min(${t.width}px, calc(100vw - 5rem))`,
|
|
3081
3109
|
height: `min(${t.height}px, calc(100vh - 9rem))`
|
|
3082
3110
|
};
|
|
3083
3111
|
}
|
|
3084
|
-
function
|
|
3112
|
+
function zn(e, t) {
|
|
3085
3113
|
if (!(!t || e)) return { width: `min(${t.width + 32}px, calc(100vw - 3rem))` };
|
|
3086
3114
|
}
|
|
3087
|
-
function
|
|
3088
|
-
return /* @__PURE__ */
|
|
3115
|
+
function Bn({ attachment: e, isMobile: t, previewImageSize: n, onClose: r, onImageLoad: i }) {
|
|
3116
|
+
return /* @__PURE__ */ E(An, {
|
|
3089
3117
|
open: !!e?.url,
|
|
3090
3118
|
onOpenChange: (e) => !e && r(),
|
|
3091
|
-
children: /* @__PURE__ */
|
|
3119
|
+
children: /* @__PURE__ */ D(Nn, {
|
|
3092
3120
|
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"),
|
|
3093
|
-
style:
|
|
3094
|
-
children: [/* @__PURE__ */
|
|
3121
|
+
style: zn(t, n),
|
|
3122
|
+
children: [/* @__PURE__ */ E("div", {
|
|
3095
3123
|
className: "flex items-center gap-3 border-b border-slate-800 px-4 py-3 pr-16",
|
|
3096
|
-
children: /* @__PURE__ */
|
|
3124
|
+
children: /* @__PURE__ */ E(In, {
|
|
3097
3125
|
className: "truncate text-sm font-medium",
|
|
3098
3126
|
children: e?.name || "附件预览"
|
|
3099
3127
|
})
|
|
3100
|
-
}), /* @__PURE__ */
|
|
3128
|
+
}), /* @__PURE__ */ E("div", {
|
|
3101
3129
|
className: p("flex items-center justify-center overflow-auto bg-slate-950", t ? "h-full p-4 pb-[calc(var(--safe-area-bottom)+1rem)]" : "max-h-[calc(100vh-7rem)] p-4"),
|
|
3102
|
-
children: e ? e.type.startsWith("image/") ? /* @__PURE__ */
|
|
3130
|
+
children: e ? e.type.startsWith("image/") ? /* @__PURE__ */ E("img", {
|
|
3103
3131
|
src: e.url,
|
|
3104
3132
|
alt: e.name,
|
|
3105
3133
|
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)]"),
|
|
3106
|
-
style:
|
|
3134
|
+
style: Rn(t, n),
|
|
3107
3135
|
onLoad: (e) => {
|
|
3108
3136
|
let t = e.currentTarget;
|
|
3109
3137
|
i({
|
|
@@ -3111,7 +3139,7 @@ function Rn({ attachment: e, isMobile: t, previewImageSize: n, onClose: r, onIma
|
|
|
3111
3139
|
height: t.naturalHeight
|
|
3112
3140
|
});
|
|
3113
3141
|
}
|
|
3114
|
-
}) : /* @__PURE__ */
|
|
3142
|
+
}) : /* @__PURE__ */ E("iframe", {
|
|
3115
3143
|
src: e.url,
|
|
3116
3144
|
title: e.name,
|
|
3117
3145
|
className: "h-full min-h-[24rem] w-full rounded-xl border border-slate-800 bg-white"
|
|
@@ -3122,7 +3150,7 @@ function Rn({ attachment: e, isMobile: t, previewImageSize: n, onClose: r, onIma
|
|
|
3122
3150
|
}
|
|
3123
3151
|
//#endregion
|
|
3124
3152
|
//#region src/utils/context.js
|
|
3125
|
-
function
|
|
3153
|
+
function Vn(e) {
|
|
3126
3154
|
if (typeof e == "number" && Number.isFinite(e) && e > 0) return e;
|
|
3127
3155
|
if (typeof e == "string" && e.trim()) {
|
|
3128
3156
|
let t = Number(e);
|
|
@@ -3130,15 +3158,15 @@ function zn(e) {
|
|
|
3130
3158
|
}
|
|
3131
3159
|
return null;
|
|
3132
3160
|
}
|
|
3133
|
-
function
|
|
3161
|
+
function Hn(e) {
|
|
3134
3162
|
return /[\u3400-\u4DBF\u4E00-\u9FFF\uF900-\uFAFF]/u.test(e);
|
|
3135
3163
|
}
|
|
3136
|
-
function
|
|
3164
|
+
function Un(e) {
|
|
3137
3165
|
let t = String(e || "").trim();
|
|
3138
3166
|
if (!t) return 0;
|
|
3139
3167
|
let n = 0, r = 0;
|
|
3140
3168
|
for (let e of t) {
|
|
3141
|
-
if (
|
|
3169
|
+
if (Hn(e)) {
|
|
3142
3170
|
n += 1;
|
|
3143
3171
|
continue;
|
|
3144
3172
|
}
|
|
@@ -3146,24 +3174,24 @@ function Vn(e) {
|
|
|
3146
3174
|
}
|
|
3147
3175
|
return Math.max(1, n + Math.ceil(r / 4));
|
|
3148
3176
|
}
|
|
3149
|
-
function
|
|
3177
|
+
function Wn(e) {
|
|
3150
3178
|
if (!e) return 0;
|
|
3151
|
-
if (e.role === "system") return e.eventType === "context_checkpoint" ?
|
|
3152
|
-
let t =
|
|
3153
|
-
return e.tools && (t += Object.values(e.tools).reduce((e, t) => e +
|
|
3179
|
+
if (e.role === "system") return e.eventType === "context_checkpoint" ? Un(e.summary || "") : 0;
|
|
3180
|
+
let t = Un(e.content || "");
|
|
3181
|
+
return e.tools && (t += Object.values(e.tools).reduce((e, t) => e + Un(t?.name || "") + Un(t?.args || "") + Un(t?.output || ""), 0)), t;
|
|
3154
3182
|
}
|
|
3155
|
-
function
|
|
3156
|
-
return e ?
|
|
3183
|
+
function Gn(e) {
|
|
3184
|
+
return e ? Vn(e.context_window_tokens) ?? Vn(e?.limits?.context_window_tokens) : null;
|
|
3157
3185
|
}
|
|
3158
|
-
function
|
|
3159
|
-
return e ?
|
|
3186
|
+
function Kn(e) {
|
|
3187
|
+
return e ? Vn(e.auto_compact_threshold_percentage) ?? 84 : 84;
|
|
3160
3188
|
}
|
|
3161
|
-
function
|
|
3162
|
-
let r =
|
|
3189
|
+
function qn({ messages: e, draftInput: t, selectedModel: n }) {
|
|
3190
|
+
let r = Gn(n);
|
|
3163
3191
|
if (!r) return null;
|
|
3164
3192
|
let i = [...e || []].reverse().find((e) => e?.role === "system" && e?.eventType === "context_checkpoint" && e?.status === "running");
|
|
3165
3193
|
if (i) {
|
|
3166
|
-
let e =
|
|
3194
|
+
let e = Wn(i);
|
|
3167
3195
|
return {
|
|
3168
3196
|
label: "正在压缩上下文…",
|
|
3169
3197
|
phase: "compressing",
|
|
@@ -3172,10 +3200,10 @@ function Gn({ messages: e, draftInput: t, selectedModel: n }) {
|
|
|
3172
3200
|
percent: Math.min(100, Math.max(0, Math.round(e / r * 100)))
|
|
3173
3201
|
};
|
|
3174
3202
|
}
|
|
3175
|
-
let a = (e || []).reduce((e, t) => e +
|
|
3203
|
+
let a = (e || []).reduce((e, t) => e + Wn(t), 0) + Un(t || "");
|
|
3176
3204
|
if (a <= 0) return null;
|
|
3177
3205
|
let o = Math.min(100, Math.max(0, Math.round(a / r * 100)));
|
|
3178
|
-
return o >=
|
|
3206
|
+
return o >= Kn(n) ? {
|
|
3179
3207
|
label: `估算上下文 ${o}% · 即将压缩`,
|
|
3180
3208
|
phase: "warning",
|
|
3181
3209
|
percent: o,
|
|
@@ -3191,37 +3219,39 @@ function Gn({ messages: e, draftInput: t, selectedModel: n }) {
|
|
|
3191
3219
|
}
|
|
3192
3220
|
//#endregion
|
|
3193
3221
|
//#region src/components/chat/ConnectedMessageList.tsx
|
|
3194
|
-
function
|
|
3195
|
-
let u =
|
|
3222
|
+
function Jn({ agentName: e, isMobile: t, onDeleteFeedback: n, onSubmitFeedback: r, onRespondToApproval: i, onStopGeneration: a, onCancelRemote: o, checkpointResumeEnabled: s = !1, onResumeCheckpoint: c, onLoadOlderSessionEvents: l }) {
|
|
3223
|
+
let u = J((e) => e.messages), d = z((e) => e.currentSessionId), f = L((e) => !!(e.getSessionActivity(d) && e.isSessionStreaming(d))), p = L((e) => e.getSessionActivity(d)), h = Q((e) => e.getSessionCheckpoints(d)), g = z((e) => d ? e.eventCache[d] : null), v = _((e) => e.input), y = I((e) => e.availableModels), b = I((e) => e.selectedModel), ee = _((e) => e.previewAttachment), te = _((e) => e.previewImageSize), x = M(null), S = M(!0), C = M(!1), w = M(0), T = M(f), O = M(!1), k = M(!0), re = ie(() => y.find((e) => e.id === b) || null, [y, b]), A = ie(() => qn({
|
|
3196
3224
|
messages: u,
|
|
3197
3225
|
draftInput: v,
|
|
3198
|
-
selectedModel:
|
|
3226
|
+
selectedModel: re
|
|
3199
3227
|
}), [
|
|
3200
3228
|
v,
|
|
3201
3229
|
u,
|
|
3202
|
-
|
|
3230
|
+
re
|
|
3203
3231
|
]);
|
|
3204
|
-
return
|
|
3205
|
-
|
|
3206
|
-
}, [f]),
|
|
3232
|
+
return j(() => {
|
|
3233
|
+
T.current = f;
|
|
3234
|
+
}, [f]), j(() => {
|
|
3235
|
+
k.current = !0, S.current = !0, C.current = !1, w.current = 0;
|
|
3236
|
+
}, [d]), j(() => {
|
|
3207
3237
|
let e = x.current;
|
|
3208
3238
|
if (!e) return;
|
|
3209
3239
|
let t = () => {
|
|
3210
|
-
let t = e.scrollHeight - e.scrollTop - e.clientHeight, n = e.scrollTop <
|
|
3211
|
-
if (
|
|
3240
|
+
let t = e.scrollHeight - e.scrollTop - e.clientHeight, n = e.scrollTop < w.current - 2;
|
|
3241
|
+
if (w.current = e.scrollTop, e.scrollTop < 200 && d && g && g.offset > 0 && !g.isLoadingOlder && !O.current && l) {
|
|
3212
3242
|
let t = e.scrollHeight;
|
|
3213
|
-
|
|
3243
|
+
O.current = !0, l(d).then(() => {
|
|
3214
3244
|
requestAnimationFrame(() => {
|
|
3215
3245
|
let e = x.current;
|
|
3216
3246
|
if (!e) return;
|
|
3217
3247
|
let n = e.scrollHeight - t;
|
|
3218
|
-
e.scrollTop += n,
|
|
3248
|
+
e.scrollTop += n, w.current = e.scrollTop;
|
|
3219
3249
|
});
|
|
3220
3250
|
}).finally(() => {
|
|
3221
|
-
|
|
3251
|
+
O.current = !1;
|
|
3222
3252
|
});
|
|
3223
3253
|
}
|
|
3224
|
-
if (
|
|
3254
|
+
if (T.current && n) {
|
|
3225
3255
|
C.current = !0, S.current = !1;
|
|
3226
3256
|
return;
|
|
3227
3257
|
}
|
|
@@ -3237,15 +3267,33 @@ function Kn({ agentName: e, isMobile: t, onDeleteFeedback: n, onSubmitFeedback:
|
|
|
3237
3267
|
g,
|
|
3238
3268
|
d,
|
|
3239
3269
|
l
|
|
3240
|
-
]),
|
|
3270
|
+
]), j(() => {
|
|
3241
3271
|
let e = x.current;
|
|
3242
|
-
|
|
3243
|
-
|
|
3272
|
+
if (e) {
|
|
3273
|
+
if (u.length > 0 && k.current) {
|
|
3274
|
+
let e = z.getState().currentSessionId, t = 0, n = -1, r = 0, i = () => {
|
|
3275
|
+
if (z.getState().currentSessionId !== e) return;
|
|
3276
|
+
let a = x.current;
|
|
3277
|
+
if (a) {
|
|
3278
|
+
if (a.scrollHeight !== n && (n = a.scrollHeight, a.scrollTop = a.scrollHeight, w.current = a.scrollTop, r += 1, r < 8)) {
|
|
3279
|
+
t = requestAnimationFrame(i);
|
|
3280
|
+
return;
|
|
3281
|
+
}
|
|
3282
|
+
S.current = !0, C.current = !1, k.current = !1;
|
|
3283
|
+
}
|
|
3284
|
+
};
|
|
3285
|
+
return t = requestAnimationFrame(i), () => {
|
|
3286
|
+
cancelAnimationFrame(t);
|
|
3287
|
+
};
|
|
3288
|
+
}
|
|
3289
|
+
S.current && (e.scrollTop = e.scrollHeight, w.current = e.scrollTop);
|
|
3290
|
+
}
|
|
3291
|
+
}, [u, f]), /* @__PURE__ */ D(ne, { children: [/* @__PURE__ */ E(m, {
|
|
3244
3292
|
agentName: e,
|
|
3245
3293
|
isMobile: t,
|
|
3246
3294
|
isStreaming: f,
|
|
3247
3295
|
activity: p,
|
|
3248
|
-
contextIndicator:
|
|
3296
|
+
contextIndicator: A,
|
|
3249
3297
|
messages: u,
|
|
3250
3298
|
onDeleteFeedback: n,
|
|
3251
3299
|
onOpenAttachmentPreview: (e) => {
|
|
@@ -3258,7 +3306,7 @@ function Kn({ agentName: e, isMobile: t, onDeleteFeedback: n, onSubmitFeedback:
|
|
|
3258
3306
|
checkpoints: s ? h : [],
|
|
3259
3307
|
onResumeCheckpoint: c,
|
|
3260
3308
|
scrollRef: x
|
|
3261
|
-
}), /* @__PURE__ */
|
|
3309
|
+
}), /* @__PURE__ */ E(Bn, {
|
|
3262
3310
|
attachment: ee,
|
|
3263
3311
|
isMobile: t,
|
|
3264
3312
|
previewImageSize: te,
|
|
@@ -3270,7 +3318,7 @@ function Kn({ agentName: e, isMobile: t, onDeleteFeedback: n, onSubmitFeedback:
|
|
|
3270
3318
|
}
|
|
3271
3319
|
//#endregion
|
|
3272
3320
|
//#region src/utils/attachment.ts
|
|
3273
|
-
function
|
|
3321
|
+
function Yn(e) {
|
|
3274
3322
|
return [
|
|
3275
3323
|
e.name,
|
|
3276
3324
|
e.size,
|
|
@@ -3278,19 +3326,19 @@ function qn(e) {
|
|
|
3278
3326
|
e.type
|
|
3279
3327
|
].join(":");
|
|
3280
3328
|
}
|
|
3281
|
-
function
|
|
3329
|
+
function Xn(e, t) {
|
|
3282
3330
|
let n = /* @__PURE__ */ new Map();
|
|
3283
|
-
for (let t of e) n.set(
|
|
3284
|
-
for (let e of t) n.set(
|
|
3331
|
+
for (let t of e) n.set(Yn(t), t);
|
|
3332
|
+
for (let e of t) n.set(Yn(e), e);
|
|
3285
3333
|
return Array.from(n.values());
|
|
3286
3334
|
}
|
|
3287
|
-
function
|
|
3335
|
+
function Zn(e) {
|
|
3288
3336
|
return Array.from(e.clipboardData.items || []).filter((e) => e.kind === "file").map((e) => e.getAsFile()).filter((e) => !!e);
|
|
3289
3337
|
}
|
|
3290
3338
|
//#endregion
|
|
3291
3339
|
//#region src/components/chat/ConnectedComposer.tsx
|
|
3292
|
-
function
|
|
3293
|
-
let o = _((e) => e.input), s = _((e) => e.attachments), c =
|
|
3340
|
+
function Qn({ composerMaxHeight: e, submitDraft: t, stopGeneration: n, cancelRemote: r, isMobile: i }) {
|
|
3341
|
+
let o = _((e) => e.input), s = _((e) => e.attachments), c = z((e) => e.currentSessionId), l = L((e) => !!(e.getSessionActivity(c) && e.isSessionStreaming(c))), u = _((e) => e.queuedDrafts), d = J((e) => e.messages), f = I((e) => e.availableModels), p = I((e) => e.selectedModel), m = M(null), h = M(null), g = ie(() => f.find((e) => e.id === p) || null, [f, p]), v = ie(() => qn({
|
|
3294
3342
|
messages: d,
|
|
3295
3343
|
draftInput: o,
|
|
3296
3344
|
selectedModel: g
|
|
@@ -3298,18 +3346,18 @@ function Xn({ composerMaxHeight: e, submitDraft: t, stopGeneration: n, cancelRem
|
|
|
3298
3346
|
o,
|
|
3299
3347
|
d,
|
|
3300
3348
|
g
|
|
3301
|
-
]), y =
|
|
3349
|
+
]), y = A((e, n) => {
|
|
3302
3350
|
!e && n.length === 0 || (_.getState().setInput(""), _.getState().setAttachments([]), t(e, n));
|
|
3303
3351
|
}, [t]);
|
|
3304
|
-
|
|
3352
|
+
j(() => {
|
|
3305
3353
|
h.current && (h.current.style.height = "auto", h.current.style.height = `${Math.min(h.current.scrollHeight, e)}px`);
|
|
3306
3354
|
}, [o, e]);
|
|
3307
3355
|
let b = (t) => {
|
|
3308
3356
|
_.getState().setInput(t.target.value), t.target.style.height = "auto", t.target.style.height = `${Math.min(t.target.scrollHeight, e)}px`;
|
|
3309
3357
|
}, ee = (e) => {
|
|
3310
|
-
e.length && _.getState().setAttachments((t) =>
|
|
3358
|
+
e.length && _.getState().setAttachments((t) => Xn(t, e));
|
|
3311
3359
|
};
|
|
3312
|
-
return /* @__PURE__ */
|
|
3360
|
+
return /* @__PURE__ */ E(a, {
|
|
3313
3361
|
attachments: s,
|
|
3314
3362
|
composerContextIndicator: v,
|
|
3315
3363
|
composerMaxHeight: e,
|
|
@@ -3321,7 +3369,7 @@ function Xn({ composerMaxHeight: e, submitDraft: t, stopGeneration: n, cancelRem
|
|
|
3321
3369
|
onAppendAttachments: ee,
|
|
3322
3370
|
onInputChange: b,
|
|
3323
3371
|
onPaste: (e) => {
|
|
3324
|
-
let t =
|
|
3372
|
+
let t = Zn(e);
|
|
3325
3373
|
t.length && (e.preventDefault(), e.stopPropagation(), ee(t));
|
|
3326
3374
|
},
|
|
3327
3375
|
onRemoveAttachment: (e) => _.getState().setAttachments((t) => t.filter((t, n) => n !== e)),
|
|
@@ -3333,8 +3381,8 @@ function Xn({ composerMaxHeight: e, submitDraft: t, stopGeneration: n, cancelRem
|
|
|
3333
3381
|
}
|
|
3334
3382
|
//#endregion
|
|
3335
3383
|
//#region src/api/session.ts
|
|
3336
|
-
async function
|
|
3337
|
-
let n = await
|
|
3384
|
+
async function $n(e, t) {
|
|
3385
|
+
let n = await q("ListSessions", {
|
|
3338
3386
|
AgentId: e,
|
|
3339
3387
|
Page: t?.page,
|
|
3340
3388
|
PageSize: t?.pageSize
|
|
@@ -3346,16 +3394,16 @@ async function Zn(e, t) {
|
|
|
3346
3394
|
PageSize: Number.isFinite(Number(n.PageSize)) ? Number(n.PageSize) : t?.pageSize ?? n.Sessions?.length ?? 0
|
|
3347
3395
|
};
|
|
3348
3396
|
}
|
|
3349
|
-
async function
|
|
3350
|
-
return (await
|
|
3397
|
+
async function er(e, t) {
|
|
3398
|
+
return (await q("CreateSession", { AgentId: e }, t)).Session;
|
|
3351
3399
|
}
|
|
3352
|
-
async function
|
|
3353
|
-
await
|
|
3400
|
+
async function tr(e, t) {
|
|
3401
|
+
await q("DeleteSession", { SessionId: e }, t);
|
|
3354
3402
|
}
|
|
3355
3403
|
//#endregion
|
|
3356
3404
|
//#region src/api/events.ts
|
|
3357
|
-
async function
|
|
3358
|
-
let n = await
|
|
3405
|
+
async function nr(e, t) {
|
|
3406
|
+
let n = await q("ListSessionEvents", {
|
|
3359
3407
|
SessionId: e,
|
|
3360
3408
|
Offset: t?.offset,
|
|
3361
3409
|
Limit: t?.limit
|
|
@@ -3369,34 +3417,34 @@ async function er(e, t) {
|
|
|
3369
3417
|
}
|
|
3370
3418
|
//#endregion
|
|
3371
3419
|
//#region src/api/run.ts
|
|
3372
|
-
async function
|
|
3373
|
-
return
|
|
3420
|
+
async function rr(e, t) {
|
|
3421
|
+
return Re("RunAgent", e, t);
|
|
3374
3422
|
}
|
|
3375
3423
|
//#endregion
|
|
3376
3424
|
//#region src/api/checkpoints.ts
|
|
3377
|
-
async function
|
|
3425
|
+
async function ir(e, t) {
|
|
3378
3426
|
let n = {
|
|
3379
3427
|
AgentId: e.agentId,
|
|
3380
3428
|
SessionId: e.sessionId
|
|
3381
3429
|
};
|
|
3382
|
-
return e.runId && (n.RunId = e.runId),
|
|
3430
|
+
return e.runId && (n.RunId = e.runId), q("ListSessionCheckpoints", n, t);
|
|
3383
3431
|
}
|
|
3384
|
-
async function
|
|
3385
|
-
return
|
|
3432
|
+
async function ar(e, t) {
|
|
3433
|
+
return q("GetCheckpointResumePreview", {
|
|
3386
3434
|
AgentId: e.agentId,
|
|
3387
3435
|
SessionId: e.sessionId,
|
|
3388
3436
|
RunId: e.runId,
|
|
3389
3437
|
CheckpointId: e.checkpointId
|
|
3390
3438
|
}, t);
|
|
3391
3439
|
}
|
|
3392
|
-
async function
|
|
3440
|
+
async function or(e, t) {
|
|
3393
3441
|
let n = {
|
|
3394
3442
|
AgentId: e.agentId,
|
|
3395
3443
|
SessionId: e.sessionId
|
|
3396
3444
|
};
|
|
3397
|
-
return e.runId && (n.RunId = e.runId), e.checkpointId && (n.CheckpointId = e.checkpointId),
|
|
3445
|
+
return e.runId && (n.RunId = e.runId), e.checkpointId && (n.CheckpointId = e.checkpointId), q("ListToolReceipts", n, t);
|
|
3398
3446
|
}
|
|
3399
|
-
async function
|
|
3447
|
+
async function sr(e, t) {
|
|
3400
3448
|
let n = {
|
|
3401
3449
|
AgentId: e.agentId,
|
|
3402
3450
|
SessionId: e.sessionId,
|
|
@@ -3404,28 +3452,28 @@ async function ar(e, t) {
|
|
|
3404
3452
|
CheckpointId: e.checkpointId,
|
|
3405
3453
|
Stream: !0
|
|
3406
3454
|
};
|
|
3407
|
-
return e.resumeAttemptId && (n.ResumeAttemptId = e.resumeAttemptId), e.invocationId && (n.InvocationId = e.invocationId),
|
|
3455
|
+
return e.resumeAttemptId && (n.ResumeAttemptId = e.resumeAttemptId), e.invocationId && (n.InvocationId = e.invocationId), Re("ResumeRun", n, t);
|
|
3408
3456
|
}
|
|
3409
3457
|
//#endregion
|
|
3410
3458
|
//#region src/api/workspace.ts
|
|
3411
|
-
async function
|
|
3412
|
-
return
|
|
3459
|
+
async function cr(e, t, n) {
|
|
3460
|
+
return q("ListWorkspaceFiles", {
|
|
3413
3461
|
AgentId: e,
|
|
3414
3462
|
Path: t,
|
|
3415
3463
|
Recursive: n
|
|
3416
3464
|
});
|
|
3417
3465
|
}
|
|
3418
|
-
async function
|
|
3419
|
-
return
|
|
3466
|
+
async function lr(e) {
|
|
3467
|
+
return Ie("AddWorkspaceFile", e);
|
|
3420
3468
|
}
|
|
3421
|
-
async function
|
|
3422
|
-
return
|
|
3469
|
+
async function ur(e, t) {
|
|
3470
|
+
return q("DeleteWorkspaceFile", {
|
|
3423
3471
|
AgentId: e,
|
|
3424
3472
|
Path: t
|
|
3425
3473
|
});
|
|
3426
3474
|
}
|
|
3427
|
-
async function
|
|
3428
|
-
return
|
|
3475
|
+
async function dr(e, t, n) {
|
|
3476
|
+
return Le("GetWorkspaceFileContent", {
|
|
3429
3477
|
AgentId: e,
|
|
3430
3478
|
FilePath: t
|
|
3431
3479
|
}, {
|
|
@@ -3435,133 +3483,133 @@ async function lr(e, t, n) {
|
|
|
3435
3483
|
}
|
|
3436
3484
|
//#endregion
|
|
3437
3485
|
//#region src/api/upload.ts
|
|
3438
|
-
async function
|
|
3439
|
-
return
|
|
3486
|
+
async function fr(e, t) {
|
|
3487
|
+
return Ie("UploadFile", e, t);
|
|
3440
3488
|
}
|
|
3441
3489
|
//#endregion
|
|
3442
3490
|
//#region src/core/api/facade.ts
|
|
3443
|
-
var
|
|
3491
|
+
var pr = class {
|
|
3444
3492
|
async listSessions(e, t) {
|
|
3445
|
-
return
|
|
3493
|
+
return $n(e, t);
|
|
3446
3494
|
}
|
|
3447
3495
|
async createSession(e, t) {
|
|
3448
|
-
return { SessionId: (await
|
|
3496
|
+
return { SessionId: (await er(e, t)).SessionId };
|
|
3449
3497
|
}
|
|
3450
3498
|
async deleteSession(e, t) {
|
|
3451
|
-
await
|
|
3499
|
+
await tr(e, t);
|
|
3452
3500
|
}
|
|
3453
3501
|
async listSessionEvents(e, t) {
|
|
3454
|
-
return
|
|
3502
|
+
return nr(e, t);
|
|
3455
3503
|
}
|
|
3456
3504
|
async listSessionCheckpoints(e, t) {
|
|
3457
|
-
return
|
|
3505
|
+
return ir(e, t);
|
|
3458
3506
|
}
|
|
3459
3507
|
async previewCheckpointResume(e, t) {
|
|
3460
|
-
return
|
|
3508
|
+
return ar(e, t);
|
|
3461
3509
|
}
|
|
3462
3510
|
async listToolReceipts(e, t) {
|
|
3463
|
-
return
|
|
3511
|
+
return or(e, t);
|
|
3464
3512
|
}
|
|
3465
3513
|
async runAgent(e, t) {
|
|
3466
|
-
return
|
|
3514
|
+
return rr(e, t);
|
|
3467
3515
|
}
|
|
3468
3516
|
async resumeRun(e, t) {
|
|
3469
|
-
return
|
|
3517
|
+
return sr(e, t);
|
|
3470
3518
|
}
|
|
3471
3519
|
async subscribeRunEvents(e, t) {
|
|
3472
|
-
return
|
|
3520
|
+
return ze("SubscribeRunEvents", {
|
|
3473
3521
|
SessionId: e.sessionId,
|
|
3474
3522
|
InvocationId: e.invocationId,
|
|
3475
3523
|
AfterSeqId: String(e.afterSeqId)
|
|
3476
3524
|
}, t);
|
|
3477
3525
|
}
|
|
3478
3526
|
async cancelRun(e, t, n) {
|
|
3479
|
-
return
|
|
3527
|
+
return q("CancelRun", {
|
|
3480
3528
|
AgentId: e,
|
|
3481
3529
|
InvocationId: t
|
|
3482
3530
|
}, n);
|
|
3483
3531
|
}
|
|
3484
3532
|
async getResponseFeedback(e, t) {
|
|
3485
|
-
return
|
|
3533
|
+
return q("GetResponseFeedback", e, t);
|
|
3486
3534
|
}
|
|
3487
3535
|
async upsertResponseFeedback(e, t) {
|
|
3488
|
-
return
|
|
3536
|
+
return q("UpsertResponseFeedback", e, t);
|
|
3489
3537
|
}
|
|
3490
3538
|
async deleteResponseFeedback(e, t) {
|
|
3491
|
-
await
|
|
3539
|
+
await q("DeleteResponseFeedback", e, t);
|
|
3492
3540
|
}
|
|
3493
3541
|
async listWorkspaceFiles(e, t, n) {
|
|
3494
|
-
return
|
|
3542
|
+
return cr(e, t, n);
|
|
3495
3543
|
}
|
|
3496
3544
|
async addWorkspaceFile(e) {
|
|
3497
|
-
return
|
|
3545
|
+
return lr(e);
|
|
3498
3546
|
}
|
|
3499
3547
|
async deleteWorkspaceFile(e, t) {
|
|
3500
|
-
await
|
|
3548
|
+
await ur(e, t);
|
|
3501
3549
|
}
|
|
3502
3550
|
async getWorkspaceFileContent(e, t, n) {
|
|
3503
|
-
return
|
|
3551
|
+
return dr(e, t, n);
|
|
3504
3552
|
}
|
|
3505
3553
|
async listAgentModels(e) {
|
|
3506
|
-
return
|
|
3554
|
+
return Ve(e);
|
|
3507
3555
|
}
|
|
3508
3556
|
async getAgentUiBootstrap() {
|
|
3509
|
-
return
|
|
3557
|
+
return Be();
|
|
3510
3558
|
}
|
|
3511
3559
|
async uploadFile(e, t) {
|
|
3512
|
-
return
|
|
3513
|
-
}
|
|
3514
|
-
},
|
|
3515
|
-
function
|
|
3516
|
-
let a = e ||
|
|
3517
|
-
isMobile:
|
|
3518
|
-
viewportHeight:
|
|
3519
|
-
}), { fetchSessions:
|
|
3560
|
+
return fr(e, t);
|
|
3561
|
+
}
|
|
3562
|
+
}, mr = new pr(), hr = k.lazy(() => import("./ArtifactsPanel-D3AiN69_.js").then((e) => ({ default: e.ArtifactsPanel }))), gr = k.lazy(() => import("./NativeTerminalPanel-mQwtEFvo.js").then((e) => e.n).then((e) => ({ default: e.NativeTerminalPanel })));
|
|
3563
|
+
function _r({ apiAdapter: e, initialSurface: r = "chat", routeShell: i } = {}) {
|
|
3564
|
+
let a = e || mr, o = F((e) => e.agentId), s = z((e) => e.currentSessionId), c = L((e) => e.isStreaming), l = _((e) => e.sidebarOpen), u = _((e) => e.mobileSidebarOpen), d = _((e) => e.mobileActionsOpen), f = F((e) => e.agentName), p = I((e) => e.selectedModel), m = I((e) => e.availableModels), h = I((e) => e.modelSource), v = I((e) => e.modelCatalogLoaded), te = I((e) => e.thinkingMode), x = F((e) => e.agentFramework), S = F((e) => e.workspaceFiles), C = F((e) => e.accessMode), T = _((e) => e.workspacePanelOpen), O = _((e) => e.workspacePanelWidth), k = _((e) => e.workspacePanelFullscreen), ie = F((e) => e.apiFormats), N = F((e) => e.capabilities), P = w((e) => e.visible && !!e.content), oe = M([]), se = M(null), { isMobile: R, viewportHeight: ce } = Pe(), le = _e({
|
|
3565
|
+
isMobile: R,
|
|
3566
|
+
viewportHeight: ce
|
|
3567
|
+
}), { fetchSessions: ue, loadMoreSessions: de, loadSession: fe, loadOlderSessionEvents: pe, createNewSession: me, deleteSession: he, currentSessionIdRef: B, agentIdRef: V, runSubscriptionAbortRef: ge } = On({
|
|
3520
3568
|
agentId: o,
|
|
3521
3569
|
currentSessionId: s,
|
|
3522
|
-
isMobile:
|
|
3523
|
-
uiCapabilities:
|
|
3570
|
+
isMobile: R,
|
|
3571
|
+
uiCapabilities: N,
|
|
3524
3572
|
api: a,
|
|
3525
3573
|
resetCompaction: () => {},
|
|
3526
|
-
disconnectRun: () =>
|
|
3527
|
-
}),
|
|
3574
|
+
disconnectRun: () => se.current?.()
|
|
3575
|
+
}), ve = A((e) => {
|
|
3528
3576
|
if (!e) return;
|
|
3529
3577
|
let t = () => {
|
|
3530
|
-
|
|
3578
|
+
z.getState().clearSessionEventCache(e), ue(V.current, e);
|
|
3531
3579
|
};
|
|
3532
3580
|
queueMicrotask(t), window.setTimeout(t, 1800), window.setTimeout(t, 5e3);
|
|
3533
|
-
}, [
|
|
3581
|
+
}, [V, ue]), ye = m.find((e) => e.id === p) || null, { submitDraft: be, stopGeneration: xe, disconnectRun: Se, resumeCheckpoint: we } = pn({
|
|
3534
3582
|
agentId: o,
|
|
3535
3583
|
currentSessionId: s,
|
|
3536
3584
|
agentFramework: x,
|
|
3537
|
-
apiFormats:
|
|
3585
|
+
apiFormats: ie,
|
|
3538
3586
|
selectedModel: p,
|
|
3539
|
-
selectedModelMetadata:
|
|
3587
|
+
selectedModelMetadata: ye,
|
|
3540
3588
|
thinkingMode: te,
|
|
3541
|
-
uiCapabilities:
|
|
3542
|
-
isMobile:
|
|
3589
|
+
uiCapabilities: N,
|
|
3590
|
+
isMobile: R,
|
|
3543
3591
|
api: a,
|
|
3544
|
-
currentSessionIdRef:
|
|
3545
|
-
agentIdRef:
|
|
3546
|
-
queuedDraftRef:
|
|
3547
|
-
onRunSettled:
|
|
3592
|
+
currentSessionIdRef: B,
|
|
3593
|
+
agentIdRef: V,
|
|
3594
|
+
queuedDraftRef: oe,
|
|
3595
|
+
onRunSettled: ve
|
|
3548
3596
|
});
|
|
3549
|
-
|
|
3550
|
-
|
|
3551
|
-
}, [
|
|
3552
|
-
let
|
|
3553
|
-
let e =
|
|
3554
|
-
|
|
3597
|
+
j(() => {
|
|
3598
|
+
se.current = Se;
|
|
3599
|
+
}, [Se]);
|
|
3600
|
+
let Te = A(() => {
|
|
3601
|
+
let e = B.current;
|
|
3602
|
+
ge.current?.abort(), L.getState().stopActivity(), L.getState().stopSessionActivity(e), xe();
|
|
3555
3603
|
}, [
|
|
3556
|
-
|
|
3557
|
-
|
|
3558
|
-
|
|
3559
|
-
]),
|
|
3560
|
-
let e =
|
|
3604
|
+
B,
|
|
3605
|
+
ge,
|
|
3606
|
+
xe
|
|
3607
|
+
]), Ee = A(async () => {
|
|
3608
|
+
let e = B.current, t = L.getState(), n = t.currentRunId || t.getSessionActivity(e)?.runId || "";
|
|
3561
3609
|
if (n) try {
|
|
3562
|
-
await a.cancelRun(o, n),
|
|
3610
|
+
await a.cancelRun(o, n), L.getState().stopSessionActivity(e, "取消请求已发送,后台运行会停在最近 checkpoint。");
|
|
3563
3611
|
} catch (t) {
|
|
3564
|
-
console.warn("[App] cancelRun failed:", t),
|
|
3612
|
+
console.warn("[App] cancelRun failed:", t), L.getState().updateActivity({
|
|
3565
3613
|
sessionId: e,
|
|
3566
3614
|
status: "failed",
|
|
3567
3615
|
phase: "取消请求失败",
|
|
@@ -3569,130 +3617,130 @@ function hr({ apiAdapter: e, initialSurface: r = "chat", routeShell: i } = {}) {
|
|
|
3569
3617
|
countEvent: !1
|
|
3570
3618
|
});
|
|
3571
3619
|
}
|
|
3572
|
-
|
|
3620
|
+
ve(e);
|
|
3573
3621
|
}, [
|
|
3574
3622
|
a,
|
|
3575
3623
|
o,
|
|
3576
|
-
|
|
3577
|
-
|
|
3578
|
-
]), { submitResponseFeedback:
|
|
3624
|
+
B,
|
|
3625
|
+
ve
|
|
3626
|
+
]), { submitResponseFeedback: De, deleteResponseFeedback: Oe, respondToApproval: Ae } = mn({
|
|
3579
3627
|
agentId: o,
|
|
3580
3628
|
currentSessionId: s,
|
|
3581
3629
|
isStreaming: c,
|
|
3582
3630
|
api: a,
|
|
3583
|
-
submitDraft:
|
|
3631
|
+
submitDraft: be
|
|
3584
3632
|
});
|
|
3585
|
-
|
|
3586
|
-
|
|
3633
|
+
We({ fetchSessions: ue }), j(() => {
|
|
3634
|
+
V.current = o, B.current = s, Ce(o, s);
|
|
3587
3635
|
}, [
|
|
3588
3636
|
o,
|
|
3589
3637
|
s,
|
|
3590
|
-
|
|
3591
|
-
|
|
3592
|
-
]),
|
|
3593
|
-
|
|
3594
|
-
}, [
|
|
3595
|
-
|
|
3596
|
-
}, [
|
|
3597
|
-
|
|
3598
|
-
}, [
|
|
3599
|
-
let
|
|
3638
|
+
V,
|
|
3639
|
+
B
|
|
3640
|
+
]), j(() => {
|
|
3641
|
+
R ? _.getState().setWorkspacePanelFullscreen(!1) : (_.getState().setMobileSidebarOpen(!1), _.getState().setMobileActionsOpen(!1));
|
|
3642
|
+
}, [R]), j(() => {
|
|
3643
|
+
T || _.getState().setWorkspacePanelFullscreen(!1);
|
|
3644
|
+
}, [T]), j(() => () => {
|
|
3645
|
+
ge.current?.abort();
|
|
3646
|
+
}, [ge]);
|
|
3647
|
+
let Me = t(N), Ne = !!N.Thinking, H = g({
|
|
3600
3648
|
workspaceFiles: S,
|
|
3601
3649
|
accessMode: C
|
|
3602
|
-
}),
|
|
3603
|
-
capability:
|
|
3650
|
+
}), U = y({ isMobile: R }), W = ke({
|
|
3651
|
+
capability: N.NativeDashboard,
|
|
3604
3652
|
agentFramework: x,
|
|
3605
3653
|
accessMode: C,
|
|
3606
3654
|
origin: window.location.origin
|
|
3607
|
-
}),
|
|
3608
|
-
|
|
3609
|
-
|
|
3610
|
-
}, [r,
|
|
3611
|
-
let
|
|
3655
|
+
}), G = !Me, Fe = x === "openclaw" ? "OpenClaw" : x === "hermes" ? "Hermes" : "原生运行时", K = ye?.display_name || p || "", q = !R && l && Me, Ie = M(!1), [Le, Re] = ae(r === "tui"), ze = Le && !!N.NativeTerminal?.Enabled;
|
|
3656
|
+
j(() => {
|
|
3657
|
+
Ie.current || r !== "workspace" || !H || (Ie.current = !0, _.getState().setWorkspacePanelOpen(!0), _.getState().setWorkspacePanelFullscreen(!0));
|
|
3658
|
+
}, [r, H]);
|
|
3659
|
+
let Be = /* @__PURE__ */ D("div", {
|
|
3612
3660
|
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",
|
|
3613
3661
|
children: [
|
|
3614
|
-
/* @__PURE__ */
|
|
3615
|
-
uiCapabilities:
|
|
3616
|
-
createNewSession:
|
|
3617
|
-
deleteSession:
|
|
3618
|
-
loadSession:
|
|
3619
|
-
loadMoreSessions:
|
|
3662
|
+
/* @__PURE__ */ E(kn, {
|
|
3663
|
+
uiCapabilities: N,
|
|
3664
|
+
createNewSession: me,
|
|
3665
|
+
deleteSession: he,
|
|
3666
|
+
loadSession: fe,
|
|
3667
|
+
loadMoreSessions: de
|
|
3620
3668
|
}),
|
|
3621
|
-
/* @__PURE__ */
|
|
3669
|
+
/* @__PURE__ */ D("main", {
|
|
3622
3670
|
className: "relative flex min-w-0 flex-1 flex-col bg-white dark:bg-slate-900",
|
|
3623
|
-
children: [/* @__PURE__ */
|
|
3671
|
+
children: [/* @__PURE__ */ E(n, {
|
|
3624
3672
|
agentName: f,
|
|
3625
3673
|
currentSessionId: s,
|
|
3626
|
-
nativeLauncherMode:
|
|
3627
|
-
isMobile:
|
|
3674
|
+
nativeLauncherMode: G,
|
|
3675
|
+
isMobile: R,
|
|
3628
3676
|
sidebarOpen: l,
|
|
3629
3677
|
mobileSidebarOpen: u,
|
|
3630
3678
|
onToggleSidebar: () => {
|
|
3631
|
-
|
|
3679
|
+
R ? _.getState().toggleMobileSidebar() : _.getState().toggleSidebar();
|
|
3632
3680
|
},
|
|
3633
3681
|
availableModels: m,
|
|
3634
3682
|
selectedModel: p,
|
|
3635
3683
|
onSelectModel: (e) => {
|
|
3636
|
-
|
|
3684
|
+
I.getState().setSelectedModel(e), R && _.getState().setMobileActionsOpen(!1);
|
|
3637
3685
|
},
|
|
3638
|
-
selectedModelLabel:
|
|
3686
|
+
selectedModelLabel: K,
|
|
3639
3687
|
modelCatalogLoaded: v,
|
|
3640
3688
|
modelSource: h,
|
|
3641
|
-
thinkingEnabled:
|
|
3689
|
+
thinkingEnabled: Ne,
|
|
3642
3690
|
thinkingMode: te,
|
|
3643
|
-
onSelectThinkingMode: (e) =>
|
|
3691
|
+
onSelectThinkingMode: (e) => I.getState().setThinkingMode(je(e)),
|
|
3644
3692
|
mobileActionsOpen: d,
|
|
3645
3693
|
onMobileActionsOpenChange: (e) => _.getState().setMobileActionsOpen(e),
|
|
3646
|
-
workspaceEnabled:
|
|
3694
|
+
workspaceEnabled: H,
|
|
3647
3695
|
onOpenWorkspace: () => _.getState().setWorkspacePanelOpen(!0),
|
|
3648
|
-
nativeManagementLink:
|
|
3649
|
-
nativeTerminal:
|
|
3650
|
-
}),
|
|
3651
|
-
productLabel:
|
|
3652
|
-
nativeManagementLink:
|
|
3653
|
-
nativeTerminal:
|
|
3654
|
-
workspaceEnabled:
|
|
3696
|
+
nativeManagementLink: W,
|
|
3697
|
+
nativeTerminal: N.NativeTerminal
|
|
3698
|
+
}), G ? /* @__PURE__ */ E(b, {
|
|
3699
|
+
productLabel: Fe,
|
|
3700
|
+
nativeManagementLink: W,
|
|
3701
|
+
nativeTerminal: N.NativeTerminal,
|
|
3702
|
+
workspaceEnabled: H,
|
|
3655
3703
|
onOpenWorkspace: () => _.getState().setWorkspacePanelOpen(!0)
|
|
3656
|
-
}) : /* @__PURE__ */
|
|
3704
|
+
}) : /* @__PURE__ */ D(ne, { children: [/* @__PURE__ */ E(Jn, {
|
|
3657
3705
|
agentName: f,
|
|
3658
|
-
isMobile:
|
|
3659
|
-
onDeleteFeedback:
|
|
3660
|
-
onSubmitFeedback:
|
|
3661
|
-
onRespondToApproval:
|
|
3662
|
-
onStopGeneration:
|
|
3663
|
-
onCancelRemote:
|
|
3664
|
-
checkpointResumeEnabled:
|
|
3665
|
-
onResumeCheckpoint:
|
|
3666
|
-
onLoadOlderSessionEvents:
|
|
3667
|
-
}), /* @__PURE__ */
|
|
3668
|
-
composerMaxHeight:
|
|
3669
|
-
submitDraft:
|
|
3670
|
-
stopGeneration:
|
|
3671
|
-
cancelRemote:
|
|
3672
|
-
isMobile:
|
|
3706
|
+
isMobile: R,
|
|
3707
|
+
onDeleteFeedback: Oe,
|
|
3708
|
+
onSubmitFeedback: De,
|
|
3709
|
+
onRespondToApproval: Ae,
|
|
3710
|
+
onStopGeneration: Te,
|
|
3711
|
+
onCancelRemote: N.StopRun ? Ee : void 0,
|
|
3712
|
+
checkpointResumeEnabled: N.RunLifecycle.Enabled && N.RunLifecycle.Checkpoints && N.RunLifecycle.CheckpointResume,
|
|
3713
|
+
onResumeCheckpoint: we,
|
|
3714
|
+
onLoadOlderSessionEvents: pe
|
|
3715
|
+
}), /* @__PURE__ */ E(Qn, {
|
|
3716
|
+
composerMaxHeight: le,
|
|
3717
|
+
submitDraft: be,
|
|
3718
|
+
stopGeneration: Te,
|
|
3719
|
+
cancelRemote: N.StopRun ? Ee : void 0,
|
|
3720
|
+
isMobile: R
|
|
3673
3721
|
})] })]
|
|
3674
3722
|
}),
|
|
3675
|
-
/* @__PURE__ */
|
|
3723
|
+
/* @__PURE__ */ E(ee, {
|
|
3676
3724
|
agentId: o,
|
|
3677
3725
|
capability: S,
|
|
3678
|
-
workspacePanelOpen:
|
|
3679
|
-
workspacePanelWidth:
|
|
3680
|
-
workspacePanelFullscreen:
|
|
3681
|
-
isMobile:
|
|
3682
|
-
workspaceEnabled:
|
|
3726
|
+
workspacePanelOpen: T,
|
|
3727
|
+
workspacePanelWidth: O,
|
|
3728
|
+
workspacePanelFullscreen: k,
|
|
3729
|
+
isMobile: R,
|
|
3730
|
+
workspaceEnabled: H,
|
|
3683
3731
|
workspaceFiles: S,
|
|
3684
|
-
workspacePanelPresentation:
|
|
3732
|
+
workspacePanelPresentation: U,
|
|
3685
3733
|
closeWorkspacePanel: () => {
|
|
3686
3734
|
_.getState().setWorkspacePanelFullscreen(!1), _.getState().setWorkspacePanelOpen(!1);
|
|
3687
3735
|
},
|
|
3688
3736
|
handleWorkspacePanelResizeStart: (e) => {
|
|
3689
|
-
if (
|
|
3737
|
+
if (k || R) return;
|
|
3690
3738
|
e.preventDefault();
|
|
3691
|
-
let t = e.clientX, n =
|
|
3739
|
+
let t = e.clientX, n = O, r = Me && q ? 280 : 0, i = document.body.style.cursor, a = document.body.style.userSelect;
|
|
3692
3740
|
document.body.style.cursor = "col-resize", document.body.style.userSelect = "none";
|
|
3693
3741
|
let o = (e) => {
|
|
3694
3742
|
let i = n + t - e.clientX;
|
|
3695
|
-
_.getState().setWorkspacePanelWidth(
|
|
3743
|
+
_.getState().setWorkspacePanelWidth(mt(i, window.innerWidth, r));
|
|
3696
3744
|
}, s = () => {
|
|
3697
3745
|
document.body.style.cursor = i, document.body.style.userSelect = a, window.removeEventListener("pointermove", o), window.removeEventListener("pointerup", s), window.removeEventListener("pointercancel", s);
|
|
3698
3746
|
};
|
|
@@ -3700,53 +3748,53 @@ function hr({ apiAdapter: e, initialSurface: r = "chat", routeShell: i } = {}) {
|
|
|
3700
3748
|
},
|
|
3701
3749
|
api: a
|
|
3702
3750
|
}),
|
|
3703
|
-
|
|
3751
|
+
P && /* @__PURE__ */ E(re, {
|
|
3704
3752
|
fallback: null,
|
|
3705
|
-
children: /* @__PURE__ */
|
|
3753
|
+
children: /* @__PURE__ */ E(hr, {})
|
|
3706
3754
|
}),
|
|
3707
|
-
|
|
3755
|
+
ze ? /* @__PURE__ */ E(re, {
|
|
3708
3756
|
fallback: null,
|
|
3709
|
-
children: /* @__PURE__ */
|
|
3710
|
-
capability:
|
|
3757
|
+
children: /* @__PURE__ */ E(gr, {
|
|
3758
|
+
capability: N.NativeTerminal,
|
|
3711
3759
|
open: !0,
|
|
3712
3760
|
sessionId: s,
|
|
3713
|
-
onClose: () =>
|
|
3761
|
+
onClose: () => Re(!1)
|
|
3714
3762
|
})
|
|
3715
3763
|
}) : null
|
|
3716
3764
|
]
|
|
3717
3765
|
});
|
|
3718
|
-
return i ? /* @__PURE__ */
|
|
3766
|
+
return i ? /* @__PURE__ */ E(i, { children: Be }) : Be;
|
|
3719
3767
|
}
|
|
3720
3768
|
//#endregion
|
|
3721
3769
|
//#region src/core/transport/sse-transport.ts
|
|
3722
|
-
function
|
|
3770
|
+
function vr(e, t) {
|
|
3723
3771
|
if (e.eventName === "__ping__") {
|
|
3724
|
-
|
|
3772
|
+
L.getState().updateActivity({ countEvent: !1 });
|
|
3725
3773
|
return;
|
|
3726
3774
|
}
|
|
3727
3775
|
t.onEvent(e);
|
|
3728
3776
|
}
|
|
3729
|
-
var
|
|
3777
|
+
var yr = class {
|
|
3730
3778
|
protocol = "sse-post";
|
|
3731
3779
|
async connect(e, t) {
|
|
3732
|
-
let n = (await
|
|
3780
|
+
let n = (await Re(e.action, e.body || {}, { signal: e.signal })).getReader(), r = new TextDecoder(), i = "", a = !1;
|
|
3733
3781
|
return (async () => {
|
|
3734
3782
|
try {
|
|
3735
3783
|
for (; !a;) {
|
|
3736
3784
|
let { value: e, done: a } = await n.read();
|
|
3737
3785
|
if (a) break;
|
|
3738
3786
|
i += r.decode(e, { stream: !0 });
|
|
3739
|
-
let { chunks: o, remainder: s } =
|
|
3787
|
+
let { chunks: o, remainder: s } = ut(i);
|
|
3740
3788
|
i = s;
|
|
3741
3789
|
for (let e of o) {
|
|
3742
3790
|
if (!e.trim()) continue;
|
|
3743
|
-
let n =
|
|
3791
|
+
let n = lt(e);
|
|
3744
3792
|
for (let e of n) {
|
|
3745
3793
|
if (e.eventName === "__done__") {
|
|
3746
3794
|
t.onComplete();
|
|
3747
3795
|
return;
|
|
3748
3796
|
}
|
|
3749
|
-
|
|
3797
|
+
vr(e, t);
|
|
3750
3798
|
}
|
|
3751
3799
|
}
|
|
3752
3800
|
}
|
|
@@ -3758,27 +3806,27 @@ var _r = class {
|
|
|
3758
3806
|
a = !0, n.cancel().catch(() => {});
|
|
3759
3807
|
};
|
|
3760
3808
|
}
|
|
3761
|
-
},
|
|
3809
|
+
}, br = class {
|
|
3762
3810
|
protocol = "sse-get";
|
|
3763
3811
|
async connect(e, t) {
|
|
3764
|
-
let n = (await
|
|
3812
|
+
let n = (await ze(e.action, e.params || {}, { signal: e.signal })).getReader(), r = new TextDecoder(), i = "", a = !1;
|
|
3765
3813
|
return (async () => {
|
|
3766
3814
|
try {
|
|
3767
3815
|
for (; !a;) {
|
|
3768
3816
|
let { value: e, done: a } = await n.read();
|
|
3769
3817
|
if (a) break;
|
|
3770
3818
|
i += r.decode(e, { stream: !0 });
|
|
3771
|
-
let { chunks: o, remainder: s } =
|
|
3819
|
+
let { chunks: o, remainder: s } = ut(i);
|
|
3772
3820
|
i = s;
|
|
3773
3821
|
for (let e of o) {
|
|
3774
3822
|
if (!e.trim()) continue;
|
|
3775
|
-
let n =
|
|
3823
|
+
let n = lt(e);
|
|
3776
3824
|
for (let e of n) {
|
|
3777
3825
|
if (e.eventName === "__done__") {
|
|
3778
3826
|
t.onComplete();
|
|
3779
3827
|
return;
|
|
3780
3828
|
}
|
|
3781
|
-
|
|
3829
|
+
vr(e, t);
|
|
3782
3830
|
}
|
|
3783
3831
|
}
|
|
3784
3832
|
}
|
|
@@ -3792,4 +3840,4 @@ var _r = class {
|
|
|
3792
3840
|
}
|
|
3793
3841
|
};
|
|
3794
3842
|
//#endregion
|
|
3795
|
-
export {
|
|
3843
|
+
export { _r as AgentWorkbench, pr as ApiFacadeImpl, bt as RunEngineImpl, br as SseGetTransport, yr as SsePostTransport, st as createProtocol };
|