@kingsoftcloud/ksadk-web 0.2.11 → 0.2.12
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 +11 -0
- package/README.md +22 -0
- package/dist-ksadk/assets/{ArtifactsPanel-BF4v3fIu.js → ArtifactsPanel-DSLAubI4.js} +1 -1
- package/dist-ksadk/assets/{CodeBlock-MkPxZeyx.js → CodeBlock-pxXnLO20.js} +1 -1
- package/dist-ksadk/assets/{MathMessageMarkdown-BtAniUMT.js → MathMessageMarkdown-vOUxyiqo.js} +1 -1
- package/dist-ksadk/assets/{MermaidBlock-B7_vB2SD.js → MermaidBlock-DesVdOvu.js} +6 -6
- package/dist-ksadk/assets/{NativeTerminalPanel-DKuFni1-.js → NativeTerminalPanel-DOlS-2_E.js} +1 -1
- package/dist-ksadk/assets/{arc-DcxNT_so.js → arc-Dy1xS0fu.js} +1 -1
- package/dist-ksadk/assets/architecture-7EHR7CIX-CAFeU8Os.js +1 -0
- package/dist-ksadk/assets/{architectureDiagram-3BPJPVTR-BrLH3CLV.js → architectureDiagram-3BPJPVTR-CBjkKkYl.js} +1 -1
- package/dist-ksadk/assets/{blockDiagram-GPEHLZMM-D4lvcIrU.js → blockDiagram-GPEHLZMM-A8m3qj2U.js} +1 -1
- package/dist-ksadk/assets/{c4Diagram-AAUBKEIU-v644IW0m.js → c4Diagram-AAUBKEIU-DpyviLny.js} +1 -1
- package/dist-ksadk/assets/channel-C6H4_5PB.js +1 -0
- package/dist-ksadk/assets/{chunk-2J33WTMH-CI4vAXF2.js → chunk-2J33WTMH-BxgBSaDe.js} +1 -1
- package/dist-ksadk/assets/{chunk-4BX2VUAB-B7f3Nw20.js → chunk-4BX2VUAB-B5-MRUoY.js} +1 -1
- package/dist-ksadk/assets/{chunk-55IACEB6-Ba9KW173.js → chunk-55IACEB6-p_lPjbBV.js} +1 -1
- package/dist-ksadk/assets/{chunk-727SXJPM-CBkuHlWy.js → chunk-727SXJPM-CCkvnt-w.js} +1 -1
- package/dist-ksadk/assets/{chunk-AQP2D5EJ-cWD88O0R.js → chunk-AQP2D5EJ-CVwRFsQH.js} +1 -1
- package/dist-ksadk/assets/{chunk-FMBD7UC4-BUrLnsHX.js → chunk-FMBD7UC4-CX-pqxDO.js} +1 -1
- package/dist-ksadk/assets/{chunk-ND2GUHAM-B_uYv3IA.js → chunk-ND2GUHAM-C3UnR0sJ.js} +1 -1
- package/dist-ksadk/assets/chunk-QZHKN3VN-CSopwtUu.js +1 -0
- package/dist-ksadk/assets/classDiagram-4FO5ZUOK-C2HgHAcO.js +1 -0
- package/dist-ksadk/assets/classDiagram-v2-Q7XG4LA2-C2HgHAcO.js +1 -0
- package/dist-ksadk/assets/{cose-bilkent-S5V4N54A-Ob1AOX07.js → cose-bilkent-S5V4N54A-KvsU4x5h.js} +1 -1
- package/dist-ksadk/assets/{dagre-BM42HDAG-Cw2ELnlF.js → dagre-BM42HDAG-Dor0aZOJ.js} +1 -1
- package/dist-ksadk/assets/{diagram-2AECGRRQ-BIR6If7W.js → diagram-2AECGRRQ-DlHEhTI3.js} +1 -1
- package/dist-ksadk/assets/{diagram-5GNKFQAL-CaECh3Vg.js → diagram-5GNKFQAL-COX0cMU1.js} +1 -1
- package/dist-ksadk/assets/{diagram-KO2AKTUF-D3V-rrkc.js → diagram-KO2AKTUF-BCOXFG8k.js} +1 -1
- package/dist-ksadk/assets/{diagram-LMA3HP47-BzEyff8c.js → diagram-LMA3HP47-CMfmsn69.js} +1 -1
- package/dist-ksadk/assets/{diagram-OG6HWLK6-Bgthbllv.js → diagram-OG6HWLK6-dDeGgX0v.js} +1 -1
- package/dist-ksadk/assets/{dist-BZzeSVME.js → dist--gHV8n2o.js} +1 -1
- package/dist-ksadk/assets/{dist-B4yXtSg3.js → dist-1zCAwoLz.js} +1 -1
- package/dist-ksadk/assets/{dist-xjcaveNh.js → dist-BENjs6Lb.js} +1 -1
- package/dist-ksadk/assets/{dist-BbsQ32yZ.js → dist-Bs03i11H.js} +1 -1
- package/dist-ksadk/assets/{dist-CQj_mZtX.js → dist-BsVBlEZ-.js} +1 -1
- package/dist-ksadk/assets/{dist-BI5M27-4.js → dist-C4sTOYcS.js} +1 -1
- package/dist-ksadk/assets/{dist-DhwceB_X.js → dist-C57vSV86.js} +1 -1
- package/dist-ksadk/assets/{dist-DNQ5Xgkl.js → dist-CAYJMjuY.js} +1 -1
- package/dist-ksadk/assets/{dist-C1FbzTlR.js → dist-CBtdzJEM.js} +1 -1
- package/dist-ksadk/assets/{dist-CprtF_Yw.js → dist-CTmbtesv.js} +1 -1
- package/dist-ksadk/assets/{dist-FgO6dUv_.js → dist-C_xWNM7J.js} +1 -1
- package/dist-ksadk/assets/{dist-FWZSQYuG.js → dist-CbFZd4ak.js} +1 -1
- package/dist-ksadk/assets/{dist-SOaE0trD.js → dist-DEF9mj61.js} +1 -1
- package/dist-ksadk/assets/{dist-qmkcKPdJ.js → dist-DGhCKjVB.js} +1 -1
- package/dist-ksadk/assets/{dist-B8ZWpW4i.js → dist-F9T-QRU1.js} +1 -1
- package/dist-ksadk/assets/{dist-BE76hYy3.js → dist-FnmAZ-Xx.js} +1 -1
- package/dist-ksadk/assets/{dist-Cs_CrFvx.js → dist-PqBiVJVJ.js} +1 -1
- package/dist-ksadk/assets/{dist-CltMulHu.js → dist-Q9aY3kIX.js} +1 -1
- package/dist-ksadk/assets/{dist-CJVD8Qen.js → dist-UOQFiknI.js} +1 -1
- package/dist-ksadk/assets/{dist-Br4tabXH.js → dist-ZNy_TFjx.js} +1 -1
- package/dist-ksadk/assets/{dist-loAWb-yY.js → dist-gpThSr_q.js} +1 -1
- package/dist-ksadk/assets/{dist-CtpPIyFY.js → dist-uU7j34p0.js} +1 -1
- package/dist-ksadk/assets/{erDiagram-TEJ5UH35-C_N1U6ND.js → erDiagram-TEJ5UH35-gIf_3lYO.js} +1 -1
- package/dist-ksadk/assets/eventmodeling-FCH6USID-mkGdlnaj.js +1 -0
- package/dist-ksadk/assets/{flowDiagram-I6XJVG4X-Cu2-GdOp.js → flowDiagram-I6XJVG4X-HKcmvyYs.js} +1 -1
- package/dist-ksadk/assets/{ganttDiagram-6RSMTGT7-CFMrfxGE.js → ganttDiagram-6RSMTGT7-Tu7c867c.js} +1 -1
- package/dist-ksadk/assets/gitGraph-WXDBUCRP-CXH1_IMu.js +1 -0
- package/dist-ksadk/assets/{gitGraphDiagram-PVQCEYII-DMfMwZL3.js → gitGraphDiagram-PVQCEYII-BrcpuI5k.js} +1 -1
- package/dist-ksadk/assets/{index-NDLr6qy9.js → index-C1I1EOOF.js} +8 -8
- package/dist-ksadk/assets/info-J43DQDTF-Zhlp1YtP.js +1 -0
- package/dist-ksadk/assets/{infoDiagram-5YYISTIA-cBZXniHy.js → infoDiagram-5YYISTIA-CDU4UHsD.js} +1 -1
- package/dist-ksadk/assets/{ishikawaDiagram-YF4QCWOH-Byt-LQw-.js → ishikawaDiagram-YF4QCWOH-oloatnes.js} +1 -1
- package/dist-ksadk/assets/{journeyDiagram-JHISSGLW-BtY3m69h.js → journeyDiagram-JHISSGLW-BN7V35oe.js} +1 -1
- package/dist-ksadk/assets/{kanban-definition-UN3LZRKU-C6iN0sWn.js → kanban-definition-UN3LZRKU-U3-ruXcw.js} +1 -1
- package/dist-ksadk/assets/{katex-DJ8K3DD_.js → katex-C2Z3urCp.js} +1 -1
- package/dist-ksadk/assets/{linear-CUfNl6zg.js → linear-HlEDIOWb.js} +1 -1
- package/dist-ksadk/assets/{mermaid-parser.core-xgL8Vh_R.js → mermaid-parser.core-D7S0E4RN.js} +2 -2
- package/dist-ksadk/assets/{mindmap-definition-RKZ34NQL-BkGzz7Z2.js → mindmap-definition-RKZ34NQL-Clz8TER4.js} +1 -1
- package/dist-ksadk/assets/packet-YPE3B663-DKwY-P6F.js +1 -0
- package/dist-ksadk/assets/pie-LRSECV5Y-2L7YF8aV.js +1 -0
- package/dist-ksadk/assets/{pieDiagram-4H26LBE5-BIH7P3Lx.js → pieDiagram-4H26LBE5-Bq6P4wmH.js} +1 -1
- package/dist-ksadk/assets/{quadrantDiagram-W4KKPZXB-C2xbbI2c.js → quadrantDiagram-W4KKPZXB-DK4HwHPd.js} +1 -1
- package/dist-ksadk/assets/radar-GUYGQ44K-DnK94GvU.js +1 -0
- package/dist-ksadk/assets/{requirementDiagram-4Y6WPE33-ByFUrTNV.js → requirementDiagram-4Y6WPE33-CJa5jzKr.js} +1 -1
- package/dist-ksadk/assets/{sankeyDiagram-5OEKKPKP-vGZbAxiz.js → sankeyDiagram-5OEKKPKP-BWkAvlqD.js} +1 -1
- package/dist-ksadk/assets/{sequenceDiagram-3UESZ5HK-ZkwUIiu3.js → sequenceDiagram-3UESZ5HK-C0CubPXc.js} +1 -1
- package/dist-ksadk/assets/{stateDiagram-AJRCARHV-BdbKWYq8.js → stateDiagram-AJRCARHV-ChiGIi7R.js} +1 -1
- package/dist-ksadk/assets/stateDiagram-v2-BHNVJYJU-PGyfW3uk.js +1 -0
- package/dist-ksadk/assets/{timeline-definition-PNZ67QCA-B5QfJdJp.js → timeline-definition-PNZ67QCA-DpI_se_A.js} +1 -1
- package/dist-ksadk/assets/treeView-BLDUP644-BDnH669R.js +1 -0
- package/dist-ksadk/assets/treemap-LRROVOQU-D8K5RWbs.js +1 -0
- package/dist-ksadk/assets/{vennDiagram-CIIHVFJN-zcCHPgCd.js → vennDiagram-CIIHVFJN-GHKSrJ1N.js} +1 -1
- package/dist-ksadk/assets/wardley-L42UT6IY-DkEQvWva.js +1 -0
- package/dist-ksadk/assets/{wardleyDiagram-YWT4CUSO-CUTRM1sP.js → wardleyDiagram-YWT4CUSO-7M8-ddnD.js} +1 -1
- package/dist-ksadk/assets/{xychartDiagram-2RQKCTM6-gvfSgBXS.js → xychartDiagram-2RQKCTM6-n95Gfz0x.js} +1 -1
- package/dist-ksadk/index.html +1 -1
- package/dist-lib/App.d.ts.map +1 -1
- package/dist-lib/core/run/engine.d.ts.map +1 -1
- package/dist-lib/core/run/types.d.ts +2 -0
- package/dist-lib/core/run/types.d.ts.map +1 -1
- package/dist-lib/hooks/useBootstrap.d.ts +1 -0
- package/dist-lib/hooks/useBootstrap.d.ts.map +1 -1
- package/dist-lib/hooks/useRunAgent.d.ts +2 -0
- package/dist-lib/hooks/useRunAgent.d.ts.map +1 -1
- package/dist-lib/runtime.js +580 -576
- package/package.json +1 -1
- package/dist-ksadk/assets/architecture-7EHR7CIX-BHyTI6bf.js +0 -1
- package/dist-ksadk/assets/channel-BH5WJ3h3.js +0 -1
- package/dist-ksadk/assets/chunk-QZHKN3VN-yZAr1Dj8.js +0 -1
- package/dist-ksadk/assets/classDiagram-4FO5ZUOK-Cav8Io0V.js +0 -1
- package/dist-ksadk/assets/classDiagram-v2-Q7XG4LA2-Cav8Io0V.js +0 -1
- package/dist-ksadk/assets/eventmodeling-FCH6USID-D4JVqRuD.js +0 -1
- package/dist-ksadk/assets/gitGraph-WXDBUCRP-Dhb2APoT.js +0 -1
- package/dist-ksadk/assets/info-J43DQDTF-Bd0FU_kK.js +0 -1
- package/dist-ksadk/assets/packet-YPE3B663-BLs1Uxy0.js +0 -1
- package/dist-ksadk/assets/pie-LRSECV5Y-DwzfGu6H.js +0 -1
- package/dist-ksadk/assets/radar-GUYGQ44K-eGejGVHG.js +0 -1
- package/dist-ksadk/assets/stateDiagram-v2-BHNVJYJU-DiPVQ0cz.js +0 -1
- package/dist-ksadk/assets/treeView-BLDUP644-C6UbCLlZ.js +0 -1
- package/dist-ksadk/assets/treemap-LRROVOQU-Bk3Xcttl.js +0 -1
- package/dist-ksadk/assets/wardley-L42UT6IY-DpJI-Lu5.js +0 -1
package/dist-lib/runtime.js
CHANGED
|
@@ -4,11 +4,11 @@ import { t as ne } from "./artifact-BfFsPe5A.js";
|
|
|
4
4
|
import { X as w } from "lucide-react";
|
|
5
5
|
import { Fragment as re, jsx as T, jsxs as E } from "react/jsx-runtime";
|
|
6
6
|
import * as D from "react";
|
|
7
|
-
import
|
|
8
|
-
import * as
|
|
9
|
-
import { create as
|
|
7
|
+
import ie, { Suspense as ae, useCallback as O, useEffect as k, useMemo as oe, useRef as A, useState as se } from "react";
|
|
8
|
+
import * as j from "@radix-ui/react-dialog";
|
|
9
|
+
import { create as M } from "zustand";
|
|
10
10
|
//#region src/stores/bootstrap.ts
|
|
11
|
-
var
|
|
11
|
+
var N = M()((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 ce(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 P = M()((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: ce(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
|
+
})), le = (e) => !!(e && e.status !== "completed" && e.status !== "failed" && e.status !== "stopped"), F = M()((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 && le(t)) } : { isStreaming: Object.values(e.sessionActivities).some(le) } : { isStreaming: n };
|
|
59
59
|
}),
|
|
60
|
-
isSessionStreaming: (e) =>
|
|
60
|
+
isSessionStreaming: (e) => le(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 I(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 ue({ 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: I(i),
|
|
175
175
|
hasMore: o < a
|
|
176
176
|
};
|
|
177
177
|
}
|
|
178
|
-
function
|
|
178
|
+
function de({ total: e = 0, pageSize: t = 30, loadedPages: n = /* @__PURE__ */ new Set() } = {}) {
|
|
179
179
|
let r = Math.max(0, Number(e) || 0), i = Math.max(1, Number(t) || 30);
|
|
180
180
|
if (r <= 0) return null;
|
|
181
181
|
let a = Math.ceil(r / i);
|
|
@@ -184,7 +184,7 @@ function 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 fe(e) {
|
|
188
188
|
let t = e.UpdatedAt;
|
|
189
189
|
if (typeof t == "string") {
|
|
190
190
|
let e = Date.parse(t);
|
|
@@ -192,37 +192,37 @@ function de(e) {
|
|
|
192
192
|
}
|
|
193
193
|
return typeof t == "number" ? t : 0;
|
|
194
194
|
}
|
|
195
|
-
var
|
|
196
|
-
function
|
|
195
|
+
var pe = "ksadk.pinnedSessionIds";
|
|
196
|
+
function me() {
|
|
197
197
|
try {
|
|
198
|
-
let e = globalThis.localStorage?.getItem(
|
|
198
|
+
let e = globalThis.localStorage?.getItem(pe), 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 he(e) {
|
|
205
205
|
try {
|
|
206
|
-
globalThis.localStorage?.setItem(
|
|
206
|
+
globalThis.localStorage?.setItem(pe, JSON.stringify(e));
|
|
207
207
|
} catch {}
|
|
208
208
|
}
|
|
209
|
-
function
|
|
209
|
+
function ge(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 ? fe(t) - fe(e) : i - r;
|
|
214
214
|
});
|
|
215
215
|
}
|
|
216
|
-
function
|
|
216
|
+
function _e(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 ge(Array.from(r.values()), n);
|
|
224
224
|
}
|
|
225
|
-
var
|
|
225
|
+
var L = M()((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: me(),
|
|
236
236
|
eventCache: {},
|
|
237
|
-
setSessions: (t) => e((e) => ({ sessions:
|
|
237
|
+
setSessions: (t) => e((e) => ({ sessions: ge(t, e.pinnedSessionIds) })),
|
|
238
238
|
setCurrentSessionId: (t) => e({ currentSessionId: t }),
|
|
239
239
|
upsertSessions: (t, n) => e((e) => {
|
|
240
|
-
let r =
|
|
240
|
+
let r = _e(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 ? I(/* @__PURE__ */ new Set(), [i]) : I(e.loadedPages, [i]), c = ue({
|
|
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: ue({
|
|
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 he(r), {
|
|
287
287
|
pinnedSessionIds: r,
|
|
288
|
-
sessions:
|
|
288
|
+
sessions: ge(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
|
+
})), R = .28;
|
|
317
|
+
function z(e, t = 768) {
|
|
318
318
|
return Number(e) <= t;
|
|
319
319
|
}
|
|
320
|
-
function
|
|
320
|
+
function ve({ 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 ye({ 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 * R);
|
|
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 be = "ksadk:webui:selected-session:";
|
|
336
|
+
function xe(e) {
|
|
337
337
|
return String(e || "").trim() || "default-agent";
|
|
338
338
|
}
|
|
339
|
-
function
|
|
339
|
+
function Se(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 Ce(e) {
|
|
347
|
+
return `${be}${xe(e)}`;
|
|
348
348
|
}
|
|
349
|
-
function
|
|
350
|
-
let n =
|
|
349
|
+
function we(e, t) {
|
|
350
|
+
let n = Se(t);
|
|
351
351
|
if (!n) return null;
|
|
352
352
|
try {
|
|
353
|
-
return String(n.getItem(
|
|
353
|
+
return String(n.getItem(Ce(e)) || "").trim() || null;
|
|
354
354
|
} catch {
|
|
355
355
|
return null;
|
|
356
356
|
}
|
|
357
357
|
}
|
|
358
|
-
function
|
|
359
|
-
let r =
|
|
358
|
+
function Te(e, t, n) {
|
|
359
|
+
let r = Se(n);
|
|
360
360
|
if (!r) return;
|
|
361
|
-
let i =
|
|
361
|
+
let i = Ce(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 Ee(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 De(e) {
|
|
384
|
-
return String(e || "").trim().toLowerCase();
|
|
385
|
-
}
|
|
382
|
+
var De = new Map([["openclaw", "OpenClaw"], ["hermes", "Hermes"]]);
|
|
386
383
|
function Oe(e) {
|
|
387
384
|
return String(e || "").trim().toLowerCase();
|
|
388
385
|
}
|
|
389
386
|
function ke(e) {
|
|
387
|
+
return String(e || "").trim().toLowerCase();
|
|
388
|
+
}
|
|
389
|
+
function Ae(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 je({ capability: e, agentFramework: t, accessMode: n, origin: r }) {
|
|
397
|
+
let i = Oe(n);
|
|
398
398
|
if (i !== "owner" && i !== "private" || !e?.Enabled) return null;
|
|
399
|
-
let a =
|
|
399
|
+
let a = De.get(ke(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, Ae(r)).toString() : Ae(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 Me = new Set([
|
|
409
409
|
"auto",
|
|
410
410
|
"enabled",
|
|
411
411
|
"disabled"
|
|
412
412
|
]);
|
|
413
|
-
function
|
|
413
|
+
function Ne(e) {
|
|
414
414
|
let t = String(e || "").trim().toLowerCase();
|
|
415
|
-
return
|
|
415
|
+
return Me.has(t) ? t : "auto";
|
|
416
416
|
}
|
|
417
|
-
function
|
|
418
|
-
let t =
|
|
417
|
+
function Pe(e) {
|
|
418
|
+
let t = Ne(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 Fe() {
|
|
425
425
|
return typeof window > "u" ? 900 : Math.round(window.visualViewport?.height || window.innerHeight || 900);
|
|
426
426
|
}
|
|
427
|
-
function
|
|
427
|
+
function B() {
|
|
428
428
|
return typeof window > "u" ? {
|
|
429
429
|
isMobile: !1,
|
|
430
430
|
viewportHeight: 900
|
|
431
431
|
} : {
|
|
432
|
-
isMobile:
|
|
433
|
-
viewportHeight:
|
|
432
|
+
isMobile: z(window.innerWidth, 768),
|
|
433
|
+
viewportHeight: Fe()
|
|
434
434
|
};
|
|
435
435
|
}
|
|
436
|
-
function
|
|
437
|
-
let [e, t] =
|
|
438
|
-
return
|
|
436
|
+
function Ie() {
|
|
437
|
+
let [e, t] = se(() => B());
|
|
438
|
+
return k(() => {
|
|
439
439
|
if (typeof window > "u") return;
|
|
440
440
|
let e = window.matchMedia("(max-width: 768px)"), n = () => {
|
|
441
|
-
t(
|
|
441
|
+
t(B());
|
|
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 V = 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
|
+
}, H = class extends Error {
|
|
459
459
|
constructor(e = "请求已取消") {
|
|
460
460
|
super(e), this.name = "CancelledError";
|
|
461
461
|
}
|
|
462
|
-
},
|
|
463
|
-
async function
|
|
462
|
+
}, U = "/agentengine/api/v1";
|
|
463
|
+
async function Le(e) {
|
|
464
464
|
let t;
|
|
465
465
|
try {
|
|
466
466
|
t = await e.json();
|
|
467
467
|
} catch {
|
|
468
|
-
throw new
|
|
468
|
+
throw new V(-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 V(e.status, t?.Message || `HTTP ${e.status}`, t);
|
|
471
|
+
if (t?.Code !== void 0 && t.Code !== 0) throw new V(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 W(e) {
|
|
475
|
+
throw e instanceof DOMException && e.name === "AbortError" ? new H() : e;
|
|
476
476
|
}
|
|
477
|
-
async function
|
|
477
|
+
async function G(e, t, n) {
|
|
478
478
|
let r;
|
|
479
479
|
try {
|
|
480
|
-
r = await fetch(`${
|
|
480
|
+
r = await fetch(`${U}/${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 W(e);
|
|
488
488
|
}
|
|
489
|
-
return
|
|
489
|
+
return Le(r);
|
|
490
490
|
}
|
|
491
|
-
async function
|
|
491
|
+
async function Re(e, t, n) {
|
|
492
492
|
let r;
|
|
493
493
|
try {
|
|
494
|
-
r = await fetch(`${
|
|
494
|
+
r = await fetch(`${U}/${e}`, {
|
|
495
495
|
method: "POST",
|
|
496
496
|
body: t,
|
|
497
497
|
signal: n?.signal
|
|
498
498
|
});
|
|
499
499
|
} catch (e) {
|
|
500
|
-
throw
|
|
500
|
+
throw W(e);
|
|
501
501
|
}
|
|
502
|
-
return
|
|
502
|
+
return Le(r);
|
|
503
503
|
}
|
|
504
|
-
async function
|
|
505
|
-
let r = new URLSearchParams(t).toString(), i = r ? `${
|
|
504
|
+
async function ze(e, t, n) {
|
|
505
|
+
let r = new URLSearchParams(t).toString(), i = r ? `${U}/${e}?${r}` : `${U}/${e}`, a;
|
|
506
506
|
try {
|
|
507
507
|
a = await fetch(i, { signal: n?.signal });
|
|
508
508
|
} catch (e) {
|
|
509
|
-
throw
|
|
509
|
+
throw W(e);
|
|
510
510
|
}
|
|
511
|
-
if (!a.ok) throw new
|
|
511
|
+
if (!a.ok) throw new V(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 V(-3, "文件读取失败");
|
|
516
516
|
}
|
|
517
517
|
}
|
|
518
|
-
async function
|
|
518
|
+
async function Be(e, t, n) {
|
|
519
519
|
let r;
|
|
520
520
|
try {
|
|
521
|
-
r = await fetch(`${
|
|
521
|
+
r = await fetch(`${U}/${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 W(e);
|
|
532
532
|
}
|
|
533
|
-
if (!r.ok) throw new
|
|
534
|
-
if (!r.body) throw new
|
|
533
|
+
if (!r.ok) throw new V(r.status, `流式请求失败: ${r.statusText}`);
|
|
534
|
+
if (!r.body) throw new V(-1, "无法获取响应流");
|
|
535
535
|
return r.body;
|
|
536
536
|
}
|
|
537
|
-
async function
|
|
538
|
-
let r = new URLSearchParams(t).toString(), i = r ? `${
|
|
537
|
+
async function Ve(e, t, n) {
|
|
538
|
+
let r = new URLSearchParams(t).toString(), i = r ? `${U}/${e}?${r}` : `${U}/${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 W(e);
|
|
546
546
|
}
|
|
547
|
-
if (!a.ok) throw new
|
|
548
|
-
if (!a.body) throw new
|
|
547
|
+
if (!a.ok) throw new V(a.status, `流式订阅失败: ${a.statusText}`);
|
|
548
|
+
if (!a.body) throw new V(-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 He() {
|
|
554
|
+
return G("GetAgentUiBootstrap", {});
|
|
555
555
|
}
|
|
556
556
|
//#endregion
|
|
557
557
|
//#region src/api/model.ts
|
|
558
|
-
async function
|
|
559
|
-
return
|
|
558
|
+
async function Ue(e) {
|
|
559
|
+
return G("ListAgentModels", { AgentId: e });
|
|
560
560
|
}
|
|
561
561
|
//#endregion
|
|
562
562
|
//#region src/hooks/useBootstrap.ts
|
|
563
|
-
function
|
|
563
|
+
function We(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 Ge(e) {
|
|
569
569
|
try {
|
|
570
|
-
let t = await
|
|
571
|
-
Array.isArray(n) &&
|
|
570
|
+
let t = await Ue(e), n = t?.Models;
|
|
571
|
+
Array.isArray(n) && P.getState().upsertModels(n);
|
|
572
572
|
let r = t;
|
|
573
|
-
r?.Current &&
|
|
573
|
+
r?.Current && !P.getState().selectedModel && P.getState().setSelectedModel(String(r.Current)), r?.Source && P.getState().setModelSource(String(r.Source));
|
|
574
574
|
} catch (e) {
|
|
575
575
|
console.error("Failed to fetch models:", e);
|
|
576
576
|
} finally {
|
|
577
|
-
|
|
577
|
+
P.getState().setModelCatalogLoaded(!0);
|
|
578
578
|
}
|
|
579
579
|
}
|
|
580
|
-
function
|
|
581
|
-
|
|
580
|
+
function Ke(n) {
|
|
581
|
+
k(() => {
|
|
582
582
|
(async () => {
|
|
583
583
|
try {
|
|
584
|
-
let r = await
|
|
585
|
-
if (
|
|
584
|
+
let r = await He(), i = r, a = i?.Agent, o = String(a?.AgentId || "default-agent");
|
|
585
|
+
if (N.getState().setAgentId(o), a?.Name) {
|
|
586
586
|
let e = String(a.Name);
|
|
587
|
-
|
|
587
|
+
N.getState().setAgentName(e), document.title = e;
|
|
588
588
|
}
|
|
589
589
|
let s = String(a?.Framework || "").trim().toLowerCase();
|
|
590
|
-
|
|
590
|
+
N.getState().setAgentFramework(s);
|
|
591
591
|
let c = e(r);
|
|
592
|
-
|
|
592
|
+
N.getState().setCapabilities(c), N.getState().setApiFormats(We(c.HostedChat.ApiFormats)), N.getState().setAccessMode(String(i?.AccessMode || "Owner"));
|
|
593
593
|
let l = c.WorkspaceFiles && i?.WorkspaceFiles ? i.WorkspaceFiles : null;
|
|
594
|
-
|
|
594
|
+
N.getState().setWorkspaceFiles(l), l || _.getState().setWorkspacePanelOpen(!1), t(c) && n.fetchSessions(o, we(o));
|
|
595
595
|
let u = i?.Model;
|
|
596
|
-
u?.id && (
|
|
596
|
+
u?.id && (P.getState().setSelectedModel(u.id), P.getState().upsertModels([u]), P.getState().setModelSource(u.source || "")), Ge(o);
|
|
597
597
|
} catch (t) {
|
|
598
|
-
console.error("Failed to fetch bootstrap:", t),
|
|
598
|
+
console.error("Failed to fetch bootstrap:", t), N.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", we("default-agent")), Ge("default-agent");
|
|
603
603
|
}
|
|
604
604
|
})();
|
|
605
605
|
}, []);
|
|
606
606
|
}
|
|
607
607
|
//#endregion
|
|
608
608
|
//#region src/stores/message.ts
|
|
609
|
-
var
|
|
609
|
+
var K = M()((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 qe() {
|
|
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 Je(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 q(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 J(...e) {
|
|
631
631
|
for (let t of e) {
|
|
632
|
-
let e =
|
|
632
|
+
let e = Je(t);
|
|
633
633
|
if (e) return e;
|
|
634
634
|
}
|
|
635
635
|
return "";
|
|
636
636
|
}
|
|
637
|
-
function
|
|
637
|
+
function Ye(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 Xe(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 Ze(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 Qe(e) {
|
|
650
650
|
if (!e || typeof e != "object") return "";
|
|
651
|
-
let t =
|
|
652
|
-
return
|
|
651
|
+
let t = Je(e.content);
|
|
652
|
+
return J(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 $e(e) {
|
|
655
|
+
let t = e?.response && typeof e.response == "object" ? e.response : e, n = J(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 = Qe(e);
|
|
660
660
|
if (t) return t;
|
|
661
661
|
}
|
|
662
662
|
return "";
|
|
663
663
|
}
|
|
664
|
-
function
|
|
664
|
+
function et(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 tt({ data: e, state: t, status: n }) {
|
|
669
|
+
let r = e?.item || e?.output_item || e || {}, i = String(r.type || "").trim(), a = Ye(r, e);
|
|
670
670
|
if (i === "function_call") {
|
|
671
|
-
let e =
|
|
672
|
-
return
|
|
671
|
+
let e = Ze(t, a, r), i = q(r.arguments ?? r.args ?? r.input);
|
|
672
|
+
return Xe(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: Ze(t, a, r),
|
|
682
|
+
output: q(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: q(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 = Qe(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 = Qe(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 nt({ 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: q(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: q(t?.output ?? t?.result)
|
|
721
721
|
}];
|
|
722
|
-
if (r === "response.output_item.added") return
|
|
722
|
+
if (r === "response.output_item.added") return tt({
|
|
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 tt({
|
|
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 = Ze(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 = Ze(n, e, t), i = q(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 = J(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 = J(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 = J(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 = J(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 = $e(t), r = et(t).flatMap((e) => tt({
|
|
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 rt = class {
|
|
834
834
|
id = "responses";
|
|
835
835
|
createState() {
|
|
836
|
-
return
|
|
836
|
+
return qe();
|
|
837
837
|
}
|
|
838
838
|
parse(e, t) {
|
|
839
|
-
return
|
|
839
|
+
return nt({
|
|
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 it(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 at(e) {
|
|
865
865
|
return e && typeof e == "object" ? e : {};
|
|
866
866
|
}
|
|
867
|
-
function
|
|
868
|
-
let t =
|
|
867
|
+
function ot(e) {
|
|
868
|
+
let t = at(e).choices, n = at(Array.isArray(t) ? t[0] : null), r = at(n.delta), i = at(n.message);
|
|
869
869
|
return {
|
|
870
|
-
content:
|
|
871
|
-
reasoning:
|
|
872
|
-
finalText:
|
|
870
|
+
content: it(r.content),
|
|
871
|
+
reasoning: it(r.reasoning_content),
|
|
872
|
+
finalText: it(i.content)
|
|
873
873
|
};
|
|
874
874
|
}
|
|
875
875
|
//#endregion
|
|
876
876
|
//#region src/core/stream/chat-completions-protocol.ts
|
|
877
|
-
var
|
|
877
|
+
var st = 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 = ot(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
|
+
}, ct = /* @__PURE__ */ new Map();
|
|
898
|
+
ct.set("responses", new rt()), ct.set("chat_completions", new st());
|
|
899
|
+
function lt(e) {
|
|
900
|
+
return ct.get(e) || ct.get("responses");
|
|
901
901
|
}
|
|
902
902
|
//#endregion
|
|
903
903
|
//#region src/utils/stream-control.js
|
|
904
|
-
function
|
|
904
|
+
function ut(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 dt(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 ft(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 pt(e) {
|
|
953
953
|
return e instanceof Error ? e.message : String(e);
|
|
954
954
|
}
|
|
955
|
-
var
|
|
956
|
-
function
|
|
955
|
+
var mt = 1280;
|
|
956
|
+
function ht(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 gt(e, t, n) {
|
|
961
|
+
let r = Math.min(mt, 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 _t = 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 vt(e) {
|
|
975
975
|
if (e.EventType !== "run_status") return null;
|
|
976
976
|
let t = String(e.Content?.status || "").trim().toLowerCase();
|
|
977
|
-
return
|
|
977
|
+
return _t.has(t) ? t : null;
|
|
978
978
|
}
|
|
979
|
-
function
|
|
979
|
+
function yt(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 bt() {
|
|
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 xt = {
|
|
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
|
+
}, St = 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 = xt[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" : ht({
|
|
1129
1129
|
agentFramework: this.config.agentFramework,
|
|
1130
1130
|
apiFormats: this.config.apiFormats
|
|
1131
|
-
}), o =
|
|
1132
|
-
|
|
1131
|
+
}), o = lt(a), s = o.createState(), c = bt();
|
|
1132
|
+
F.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"), F.getState().stopActivity("运行时已取消本次执行。"), this.emit({
|
|
1160
1160
|
type: "activity",
|
|
1161
1161
|
phase: "运行已取消",
|
|
1162
1162
|
status: "stopped",
|
|
@@ -1190,18 +1190,18 @@ var bt = {
|
|
|
1190
1190
|
error: e instanceof Error ? e : Error(String(e))
|
|
1191
1191
|
})));
|
|
1192
1192
|
} finally {
|
|
1193
|
-
|
|
1193
|
+
F.getState().setStreaming(!1), this.setStage("idle"), this.activeCompactionId = null, this.activeSessionId = null, e.onSettled?.(n);
|
|
1194
1194
|
}
|
|
1195
1195
|
})(), !0;
|
|
1196
1196
|
}
|
|
1197
1197
|
stop() {
|
|
1198
|
-
this._stage !== "idle" && (this.setStage("stopping"), this.abortController?.abort(),
|
|
1198
|
+
this._stage !== "idle" && (this.setStage("stopping"), this.abortController?.abort(), F.getState().stopActivity(), F.getState().setCurrentRunId(""), this.setStage("cancelled"), this.emit({
|
|
1199
1199
|
type: "system_message",
|
|
1200
1200
|
content: "已停止接收本次输出;如果运行时不支持取消,后台执行可能仍会继续。"
|
|
1201
1201
|
}));
|
|
1202
1202
|
}
|
|
1203
1203
|
disconnect() {
|
|
1204
|
-
this._stage !== "idle" && (this.abortController?.abort(),
|
|
1204
|
+
this._stage !== "idle" && (this.abortController?.abort(), F.getState().setStreaming(!1), F.getState().clearActivity(), this._stage = "idle", this.activeCompactionId = null, this.activeSessionId = null);
|
|
1205
1205
|
}
|
|
1206
1206
|
async cancelRemote(e) {
|
|
1207
1207
|
try {
|
|
@@ -1212,7 +1212,7 @@ var bt = {
|
|
|
1212
1212
|
this.stop();
|
|
1213
1213
|
}
|
|
1214
1214
|
resumeRun(e) {
|
|
1215
|
-
this.abortController?.abort(), this.abortController = new AbortController(), this.activeSessionId = e.sessionId,
|
|
1215
|
+
this.abortController?.abort(), this.abortController = new AbortController(), this.activeSessionId = e.sessionId, F.getState().setCurrentRunId(e.invocationId), this.setStage("connecting"), this.emit({
|
|
1216
1216
|
type: "activity",
|
|
1217
1217
|
phase: "恢复运行事件订阅",
|
|
1218
1218
|
status: "connecting",
|
|
@@ -1236,11 +1236,11 @@ var bt = {
|
|
|
1236
1236
|
let { value: e, done: n } = await r.read();
|
|
1237
1237
|
if (n) break;
|
|
1238
1238
|
a += i.decode(e, { stream: !0 });
|
|
1239
|
-
let { chunks: o, remainder: s } =
|
|
1239
|
+
let { chunks: o, remainder: s } = ft(a);
|
|
1240
1240
|
a = s;
|
|
1241
1241
|
for (let e of o) {
|
|
1242
1242
|
if (!e.trim()) continue;
|
|
1243
|
-
let n =
|
|
1243
|
+
let n = dt(e);
|
|
1244
1244
|
for (let e of n) e.eventName !== "__done__" && (this.emit({
|
|
1245
1245
|
type: "activity",
|
|
1246
1246
|
phase: "收到恢复事件",
|
|
@@ -1248,7 +1248,7 @@ var bt = {
|
|
|
1248
1248
|
}), this.emit({
|
|
1249
1249
|
type: "stream_event",
|
|
1250
1250
|
event: e.data
|
|
1251
|
-
}), t =
|
|
1251
|
+
}), t = vt(e.data) || t);
|
|
1252
1252
|
}
|
|
1253
1253
|
}
|
|
1254
1254
|
this.setStage("completing"), t === "cancelled" || t === "canceled" || t === "aborted" ? this.emit({
|
|
@@ -1270,15 +1270,15 @@ var bt = {
|
|
|
1270
1270
|
} catch (e) {
|
|
1271
1271
|
e instanceof DOMException && e.name === "AbortError" || console.error("Failed to subscribe to run events:", e);
|
|
1272
1272
|
} finally {
|
|
1273
|
-
|
|
1273
|
+
F.getState().setStreaming(!1), F.getState().setCurrentRunId(""), this.setStage("idle"), this.activeSessionId = null;
|
|
1274
1274
|
}
|
|
1275
1275
|
})();
|
|
1276
1276
|
}
|
|
1277
1277
|
resumeCheckpoint(e) {
|
|
1278
1278
|
if (this._stage !== "idle") return !1;
|
|
1279
1279
|
this.abortController = new AbortController(), this.activeSessionId = e.sessionId;
|
|
1280
|
-
let t =
|
|
1281
|
-
return
|
|
1280
|
+
let t = bt();
|
|
1281
|
+
return F.getState().setCurrentRunId(t), (async () => {
|
|
1282
1282
|
try {
|
|
1283
1283
|
if (this.setStage("connecting"), this.emit({
|
|
1284
1284
|
type: "activity",
|
|
@@ -1310,7 +1310,7 @@ var bt = {
|
|
|
1310
1310
|
checkpointId: e.checkpointId,
|
|
1311
1311
|
resumeAttemptId: e.resumeAttemptId,
|
|
1312
1312
|
invocationId: t
|
|
1313
|
-
}, { signal: this.abortController?.signal }), r =
|
|
1313
|
+
}, { signal: this.abortController?.signal }), r = lt("responses"), i = r.createState();
|
|
1314
1314
|
this.setStage("streaming"), this.emit({
|
|
1315
1315
|
type: "activity",
|
|
1316
1316
|
source: "restore",
|
|
@@ -1321,7 +1321,7 @@ var bt = {
|
|
|
1321
1321
|
let a = `msg-${Date.now()}`, o = await this.consumeStream(n, r, i, a);
|
|
1322
1322
|
if (o.terminalStatus && o.terminalStatus !== "completed") {
|
|
1323
1323
|
if (o.terminalStatus === "cancelled") {
|
|
1324
|
-
this.setStage("stopping"),
|
|
1324
|
+
this.setStage("stopping"), F.getState().stopActivity("运行时已取消本次恢复。"), this.emit({
|
|
1325
1325
|
type: "activity",
|
|
1326
1326
|
source: "restore",
|
|
1327
1327
|
phase: "恢复已取消",
|
|
@@ -1352,7 +1352,7 @@ var bt = {
|
|
|
1352
1352
|
error: e instanceof Error ? e : Error(String(e))
|
|
1353
1353
|
}));
|
|
1354
1354
|
} finally {
|
|
1355
|
-
|
|
1355
|
+
F.getState().setStreaming(!1), F.getState().setCurrentRunId(""), this.setStage("idle"), this.activeSessionId = null, e.onSettled?.(e.sessionId);
|
|
1356
1356
|
}
|
|
1357
1357
|
})(), !0;
|
|
1358
1358
|
}
|
|
@@ -1386,13 +1386,13 @@ var bt = {
|
|
|
1386
1386
|
} catch (e) {
|
|
1387
1387
|
this.emit({
|
|
1388
1388
|
type: "system_message",
|
|
1389
|
-
content: `【系统提示】图片 ${t.name} 读取失败,原因: ${
|
|
1389
|
+
content: `【系统提示】图片 ${t.name} 读取失败,原因: ${pt(e)}`
|
|
1390
1390
|
});
|
|
1391
1391
|
}
|
|
1392
1392
|
continue;
|
|
1393
1393
|
}
|
|
1394
1394
|
let e = new FormData();
|
|
1395
|
-
e.append("file", t);
|
|
1395
|
+
e.append("file", t), e.append("AgentId", this.config.agentId);
|
|
1396
1396
|
try {
|
|
1397
1397
|
let r = await this.api.uploadFile(e, { signal: this.abortController?.signal });
|
|
1398
1398
|
r?.FileData?.fileUri && n.push({
|
|
@@ -1403,7 +1403,7 @@ var bt = {
|
|
|
1403
1403
|
} catch (e) {
|
|
1404
1404
|
this.emit({
|
|
1405
1405
|
type: "system_message",
|
|
1406
|
-
content: `【系统提示】文件 ${t.name} 上传失败,原因: ${
|
|
1406
|
+
content: `【系统提示】文件 ${t.name} 上传失败,原因: ${pt(e)}`
|
|
1407
1407
|
});
|
|
1408
1408
|
}
|
|
1409
1409
|
}
|
|
@@ -1422,7 +1422,8 @@ var bt = {
|
|
|
1422
1422
|
Stream: !0,
|
|
1423
1423
|
ApiFormat: t,
|
|
1424
1424
|
Model: this.config.selectedModel || void 0,
|
|
1425
|
-
|
|
1425
|
+
ModelMetadata: this.config.selectedModelMetadata || void 0,
|
|
1426
|
+
ModelOptions: Pe(Ne(this.config.thinkingMode))
|
|
1426
1427
|
};
|
|
1427
1428
|
if (n) o.ResponsesInput = r.responsesInput, o.PreviousResponseId = r.previousResponseId;
|
|
1428
1429
|
else {
|
|
@@ -1450,32 +1451,32 @@ var bt = {
|
|
|
1450
1451
|
type: "assistant_message_created",
|
|
1451
1452
|
messageId: r
|
|
1452
1453
|
})), o += a.decode(e, { stream: !0 });
|
|
1453
|
-
let { chunks: u, remainder: d } =
|
|
1454
|
+
let { chunks: u, remainder: d } = ft(o);
|
|
1454
1455
|
o = d;
|
|
1455
1456
|
for (let e of u) {
|
|
1456
1457
|
if (!e.trim()) continue;
|
|
1457
1458
|
if (this.isCompactionChunk(e)) {
|
|
1458
|
-
let t =
|
|
1459
|
+
let t = dt(e);
|
|
1459
1460
|
for (let e of t) e.eventName.startsWith("response.compaction") && this.upsertCompactionMessage({
|
|
1460
1461
|
...e.data,
|
|
1461
1462
|
phase: e.eventName.split(".").pop()
|
|
1462
1463
|
});
|
|
1463
1464
|
continue;
|
|
1464
1465
|
}
|
|
1465
|
-
let a =
|
|
1466
|
+
let a = dt(e), o = !1, c;
|
|
1466
1467
|
for (let e of a) {
|
|
1467
1468
|
if (e.eventName === "__done__") {
|
|
1468
1469
|
o = !0;
|
|
1469
1470
|
continue;
|
|
1470
1471
|
}
|
|
1471
|
-
let i =
|
|
1472
|
+
let i = yt(e.eventName, e.data);
|
|
1472
1473
|
i && this.emit({
|
|
1473
1474
|
type: "activity",
|
|
1474
1475
|
...i
|
|
1475
1476
|
});
|
|
1476
1477
|
let a = t.parse(e, n);
|
|
1477
1478
|
for (let e of a) this.dispatchAction(e, r);
|
|
1478
|
-
if (
|
|
1479
|
+
if (ut(a)) {
|
|
1479
1480
|
o = !0;
|
|
1480
1481
|
let e = a.find((e) => e.type === "terminal");
|
|
1481
1482
|
c = e && "status" in e ? String(e.status || "") : void 0;
|
|
@@ -1586,18 +1587,18 @@ var bt = {
|
|
|
1586
1587
|
phase: "failed"
|
|
1587
1588
|
}), null);
|
|
1588
1589
|
}
|
|
1589
|
-
},
|
|
1590
|
-
function
|
|
1590
|
+
}, Ct = [], wt = [];
|
|
1591
|
+
function Y(e) {
|
|
1591
1592
|
return typeof e == "string" ? e.trim() : "";
|
|
1592
1593
|
}
|
|
1593
|
-
function
|
|
1594
|
+
function Tt(e) {
|
|
1594
1595
|
let t = typeof e == "number" ? e : Number(e);
|
|
1595
1596
|
return Number.isFinite(t) ? t : void 0;
|
|
1596
1597
|
}
|
|
1597
|
-
function
|
|
1598
|
+
function Et(e) {
|
|
1598
1599
|
return typeof e == "string" || typeof e == "number" ? e : void 0;
|
|
1599
1600
|
}
|
|
1600
|
-
function
|
|
1601
|
+
function X(e) {
|
|
1601
1602
|
return e && typeof e == "object" && !Array.isArray(e) ? e : void 0;
|
|
1602
1603
|
}
|
|
1603
1604
|
function Dt(e) {
|
|
@@ -1626,47 +1627,47 @@ function Mt(e) {
|
|
|
1626
1627
|
return t ? e.filter((e) => e.runId === t) : [];
|
|
1627
1628
|
}
|
|
1628
1629
|
function Nt(e) {
|
|
1629
|
-
let t =
|
|
1630
|
+
let t = X(e);
|
|
1630
1631
|
if (!t) return null;
|
|
1631
|
-
let n =
|
|
1632
|
+
let n = X(t.Metadata ?? t.metadata), r = X(t.Content ?? t.content), i = Y(t.CheckpointId ?? t.checkpointId ?? t.checkpoint_id ?? n?.checkpoint_id ?? n?.checkpointId ?? r?.checkpoint_id ?? r?.checkpointId), a = Y(t.RunId ?? t.runId ?? t.run_id ?? n?.run_id ?? n?.runId ?? r?.run_id ?? r?.runId);
|
|
1632
1633
|
return !i || !a ? null : {
|
|
1633
1634
|
checkpointId: i,
|
|
1634
1635
|
runId: a,
|
|
1635
|
-
sessionId:
|
|
1636
|
-
invocationId:
|
|
1637
|
-
seqId:
|
|
1638
|
-
timestamp:
|
|
1639
|
-
framework:
|
|
1640
|
-
frameworkRef:
|
|
1641
|
-
phase:
|
|
1642
|
-
stage:
|
|
1643
|
-
summary:
|
|
1644
|
-
nextAction:
|
|
1645
|
-
status:
|
|
1636
|
+
sessionId: Y(t.SessionId ?? t.sessionId ?? t.session_id) || void 0,
|
|
1637
|
+
invocationId: Y(t.InvocationId ?? t.invocationId ?? t.invocation_id) || void 0,
|
|
1638
|
+
seqId: Tt(t.SeqId ?? t.seqId ?? t.seq_id),
|
|
1639
|
+
timestamp: Et(t.Timestamp ?? t.timestamp ?? t.CreatedAt ?? t.createdAt),
|
|
1640
|
+
framework: Y(t.Framework ?? t.framework ?? n?.framework ?? r?.framework) || void 0,
|
|
1641
|
+
frameworkRef: X(t.FrameworkRef ?? t.frameworkRef ?? t.framework_ref ?? n?.framework_ref ?? n?.frameworkRef),
|
|
1642
|
+
phase: Y(t.Phase ?? t.phase ?? n?.phase ?? r?.phase) || void 0,
|
|
1643
|
+
stage: Y(t.Stage ?? t.stage ?? n?.stage ?? n?.title) || void 0,
|
|
1644
|
+
summary: Y(t.Summary ?? t.summary ?? n?.summary ?? n?.description) || void 0,
|
|
1645
|
+
nextAction: Y(t.NextAction ?? t.nextAction ?? t.next_action ?? n?.nextAction ?? n?.next_action) || void 0,
|
|
1646
|
+
status: Y(t.Status ?? t.status ?? n?.status ?? r?.status) || void 0,
|
|
1646
1647
|
metadata: n
|
|
1647
1648
|
};
|
|
1648
1649
|
}
|
|
1649
1650
|
function Pt(e) {
|
|
1650
|
-
let t =
|
|
1651
|
+
let t = X(e);
|
|
1651
1652
|
if (!t) return null;
|
|
1652
|
-
let n =
|
|
1653
|
+
let n = Y(t.ReceiptId ?? t.receiptId ?? t.receipt_id), r = Y(t.IdempotencyKey ?? t.idempotencyKey ?? t.idempotency_key), i = Y(t.ToolName ?? t.toolName ?? t.tool_name);
|
|
1653
1654
|
return !n || !r || !i ? null : {
|
|
1654
1655
|
receiptId: n,
|
|
1655
1656
|
idempotencyKey: r,
|
|
1656
1657
|
toolName: i,
|
|
1657
|
-
toolCallId:
|
|
1658
|
-
runId:
|
|
1659
|
-
checkpointId:
|
|
1660
|
-
sessionId:
|
|
1661
|
-
invocationId:
|
|
1662
|
-
seqId:
|
|
1663
|
-
timestamp:
|
|
1664
|
-
status:
|
|
1658
|
+
toolCallId: Y(t.ToolCallId ?? t.toolCallId ?? t.tool_call_id) || void 0,
|
|
1659
|
+
runId: Y(t.RunId ?? t.runId ?? t.run_id) || void 0,
|
|
1660
|
+
checkpointId: Y(t.CheckpointId ?? t.checkpointId ?? t.checkpoint_id) || void 0,
|
|
1661
|
+
sessionId: Y(t.SessionId ?? t.sessionId ?? t.session_id) || void 0,
|
|
1662
|
+
invocationId: Y(t.InvocationId ?? t.invocationId ?? t.invocation_id) || void 0,
|
|
1663
|
+
seqId: Tt(t.SeqId ?? t.seqId ?? t.seq_id),
|
|
1664
|
+
timestamp: Et(t.Timestamp ?? t.timestamp ?? t.CreatedAt ?? t.createdAt),
|
|
1665
|
+
status: Y(t.Status ?? t.status) || void 0,
|
|
1665
1666
|
replayed: !!(t.Replayed ?? t.replayed),
|
|
1666
|
-
metadata:
|
|
1667
|
+
metadata: X(t.Metadata ?? t.metadata)
|
|
1667
1668
|
};
|
|
1668
1669
|
}
|
|
1669
|
-
var Z =
|
|
1670
|
+
var Z = M()((e, t) => ({
|
|
1670
1671
|
checkpointsBySessionId: {},
|
|
1671
1672
|
toolReceiptsBySessionId: {},
|
|
1672
1673
|
setSessionCheckpoints: (t, n) => e((e) => ({ checkpointsBySessionId: {
|
|
@@ -1695,7 +1696,7 @@ var Z = N()((e, t) => ({
|
|
|
1695
1696
|
},
|
|
1696
1697
|
getSessionCheckpoints: (e) => {
|
|
1697
1698
|
let n = String(e || "");
|
|
1698
|
-
return n && t().checkpointsBySessionId[n] ||
|
|
1699
|
+
return n && t().checkpointsBySessionId[n] || Ct;
|
|
1699
1700
|
},
|
|
1700
1701
|
setSessionToolReceipts: (t, n) => e((e) => ({ toolReceiptsBySessionId: {
|
|
1701
1702
|
...e.toolReceiptsBySessionId,
|
|
@@ -1706,7 +1707,7 @@ var Z = N()((e, t) => ({
|
|
|
1706
1707
|
} })),
|
|
1707
1708
|
getSessionToolReceipts: (e) => {
|
|
1708
1709
|
let n = String(e || "");
|
|
1709
|
-
return n && t().toolReceiptsBySessionId[n] ||
|
|
1710
|
+
return n && t().toolReceiptsBySessionId[n] || wt;
|
|
1710
1711
|
},
|
|
1711
1712
|
clearSessionCheckpoints: (t) => e((e) => {
|
|
1712
1713
|
let n = String(t || "");
|
|
@@ -1816,7 +1817,7 @@ function Bt(e) {
|
|
|
1816
1817
|
function Vt(e) {
|
|
1817
1818
|
let t = e?.Metadata?.responses_output;
|
|
1818
1819
|
if (!Array.isArray(t)) return {};
|
|
1819
|
-
let n =
|
|
1820
|
+
let n = qe(), r = nt({
|
|
1820
1821
|
eventName: "response.completed",
|
|
1821
1822
|
data: { response: {
|
|
1822
1823
|
id: String(e.Metadata?.response_id || ""),
|
|
@@ -2217,8 +2218,8 @@ var Q = !1, sn = new Set(["completed"]), cn = new Set([
|
|
|
2217
2218
|
"aborted",
|
|
2218
2219
|
"incomplete"
|
|
2219
2220
|
]);
|
|
2220
|
-
function
|
|
2221
|
-
Q || (Q = !0,
|
|
2221
|
+
function $(e) {
|
|
2222
|
+
Q || (Q = !0, K.getState().patchMessages((t) => [...t, {
|
|
2222
2223
|
id: e,
|
|
2223
2224
|
role: "model",
|
|
2224
2225
|
content: "",
|
|
@@ -2226,9 +2227,9 @@ function ln(e) {
|
|
|
2226
2227
|
reasoning: ""
|
|
2227
2228
|
}]));
|
|
2228
2229
|
}
|
|
2229
|
-
function
|
|
2230
|
+
function ln(e) {
|
|
2230
2231
|
let t = String(e || "").trim().toLowerCase(), n = sn.has(t) ? "completed" : cn.has(t) ? "error" : null;
|
|
2231
|
-
n &&
|
|
2232
|
+
n && K.getState().patchMessages((e) => e.map((e) => {
|
|
2232
2233
|
if (!e.tools) return e;
|
|
2233
2234
|
let t = !1, r = Object.fromEntries(Object.entries(e.tools).map(([e, r]) => r.status === "running" ? (t = !0, [e, {
|
|
2234
2235
|
...r,
|
|
@@ -2240,15 +2241,15 @@ function un(e) {
|
|
|
2240
2241
|
} : e;
|
|
2241
2242
|
}));
|
|
2242
2243
|
}
|
|
2243
|
-
function
|
|
2244
|
-
if (e.sessionId &&
|
|
2244
|
+
function un(e) {
|
|
2245
|
+
if (e.sessionId && L.getState().currentSessionId !== e.sessionId) {
|
|
2245
2246
|
e.type === "stage_changed" && (e.stage === "completing" || e.stage === "error" || e.stage === "cancelled") && (Q = !1);
|
|
2246
2247
|
return;
|
|
2247
2248
|
}
|
|
2248
|
-
let t =
|
|
2249
|
+
let t = K.getState();
|
|
2249
2250
|
switch (e.type) {
|
|
2250
2251
|
case "activity":
|
|
2251
|
-
|
|
2252
|
+
F.getState().updateActivity({
|
|
2252
2253
|
sessionId: e.sessionId,
|
|
2253
2254
|
source: e.source,
|
|
2254
2255
|
status: e.status,
|
|
@@ -2266,28 +2267,28 @@ function dn(e) {
|
|
|
2266
2267
|
}]);
|
|
2267
2268
|
break;
|
|
2268
2269
|
case "assistant_message_created":
|
|
2269
|
-
|
|
2270
|
+
$(e.messageId);
|
|
2270
2271
|
break;
|
|
2271
2272
|
case "text_delta":
|
|
2272
|
-
|
|
2273
|
+
$(e.messageId), t.patchMessages((t) => t.map((t) => t.id === e.messageId ? {
|
|
2273
2274
|
...t,
|
|
2274
2275
|
content: t.content + e.delta
|
|
2275
2276
|
} : t));
|
|
2276
2277
|
break;
|
|
2277
2278
|
case "text_final":
|
|
2278
|
-
|
|
2279
|
+
$(e.messageId), t.patchMessages((t) => t.map((t) => t.id === e.messageId ? {
|
|
2279
2280
|
...t,
|
|
2280
2281
|
content: e.text
|
|
2281
2282
|
} : t));
|
|
2282
2283
|
break;
|
|
2283
2284
|
case "reasoning_delta":
|
|
2284
|
-
|
|
2285
|
+
$(e.messageId), t.patchMessages((t) => t.map((t) => t.id === e.messageId ? {
|
|
2285
2286
|
...t,
|
|
2286
2287
|
reasoning: (t.reasoning || "") + e.delta
|
|
2287
2288
|
} : t));
|
|
2288
2289
|
break;
|
|
2289
2290
|
case "tool_upsert":
|
|
2290
|
-
|
|
2291
|
+
$(e.messageId), t.patchMessages((t) => t.map((t) => t.id === e.messageId ? {
|
|
2291
2292
|
...t,
|
|
2292
2293
|
tools: {
|
|
2293
2294
|
...t.tools || {},
|
|
@@ -2306,7 +2307,7 @@ function dn(e) {
|
|
|
2306
2307
|
} : t));
|
|
2307
2308
|
break;
|
|
2308
2309
|
case "tool_result":
|
|
2309
|
-
|
|
2310
|
+
$(e.messageId), t.patchMessages((t) => t.map((t) => t.id === e.messageId ? {
|
|
2310
2311
|
...t,
|
|
2311
2312
|
tools: {
|
|
2312
2313
|
...t.tools || {},
|
|
@@ -2344,16 +2345,16 @@ function dn(e) {
|
|
|
2344
2345
|
break;
|
|
2345
2346
|
}
|
|
2346
2347
|
case "stage_changed":
|
|
2347
|
-
e.stage === "streaming" || e.stage === "connecting" ?
|
|
2348
|
+
e.stage === "streaming" || e.stage === "connecting" ? F.getState().setSessionStreaming(e.sessionId, !0) : (e.stage === "completing" || e.stage === "error" || e.stage === "cancelled") && (F.getState().setSessionStreaming(e.sessionId, !1), Q = !1);
|
|
2348
2349
|
break;
|
|
2349
2350
|
case "stream_ended":
|
|
2350
|
-
|
|
2351
|
-
let t =
|
|
2351
|
+
F.getState().setSessionStreaming(e.sessionId, !1), globalThis.setTimeout(() => {
|
|
2352
|
+
let t = F.getState();
|
|
2352
2353
|
t.getSessionActivity(e.sessionId)?.status === "completed" && t.clearSessionActivity(e.sessionId);
|
|
2353
2354
|
}, 2400), Q = !1;
|
|
2354
2355
|
break;
|
|
2355
2356
|
case "error":
|
|
2356
|
-
|
|
2357
|
+
F.getState().setSessionStreaming(e.sessionId, !1), F.getState().updateActivity({
|
|
2357
2358
|
sessionId: e.sessionId,
|
|
2358
2359
|
status: "failed",
|
|
2359
2360
|
phase: "连接断开或生成出错",
|
|
@@ -2366,22 +2367,22 @@ function dn(e) {
|
|
|
2366
2367
|
}]), Q = !1;
|
|
2367
2368
|
break;
|
|
2368
2369
|
case "terminal":
|
|
2369
|
-
|
|
2370
|
+
ln(e.status);
|
|
2370
2371
|
break;
|
|
2371
2372
|
case "stream_event":
|
|
2372
2373
|
if (e.event.EventType === "run_checkpoint" && Z.getState().upsertSessionCheckpoint(e.sessionId || e.event.SessionId, e.event), e.event.EventType === "run_status") {
|
|
2373
2374
|
let t = String(e.event.Content?.status || "").trim().toLowerCase();
|
|
2374
|
-
t === "completed" ?
|
|
2375
|
+
t === "completed" ? F.getState().updateActivity({
|
|
2375
2376
|
sessionId: e.sessionId || e.event.SessionId,
|
|
2376
2377
|
status: "completed",
|
|
2377
2378
|
phase: "后台长任务已完成",
|
|
2378
2379
|
countEvent: !1
|
|
2379
|
-
}) : t === "cancelled" || t === "canceled" || t === "aborted" ?
|
|
2380
|
+
}) : t === "cancelled" || t === "canceled" || t === "aborted" ? F.getState().updateActivity({
|
|
2380
2381
|
sessionId: e.sessionId || e.event.SessionId,
|
|
2381
2382
|
status: "stopped",
|
|
2382
2383
|
phase: "后台长任务已取消",
|
|
2383
2384
|
countEvent: !1
|
|
2384
|
-
}) : (t === "failed" || t === "error") &&
|
|
2385
|
+
}) : (t === "failed" || t === "error") && F.getState().updateActivity({
|
|
2385
2386
|
sessionId: e.sessionId || e.event.SessionId,
|
|
2386
2387
|
status: "failed",
|
|
2387
2388
|
phase: "后台长任务失败",
|
|
@@ -2391,20 +2392,21 @@ function dn(e) {
|
|
|
2391
2392
|
break;
|
|
2392
2393
|
}
|
|
2393
2394
|
}
|
|
2394
|
-
function
|
|
2395
|
+
function dn() {
|
|
2395
2396
|
Q = !1;
|
|
2396
2397
|
}
|
|
2397
2398
|
//#endregion
|
|
2398
2399
|
//#region src/hooks/useRunAgent.ts
|
|
2399
|
-
function
|
|
2400
|
-
let t =
|
|
2400
|
+
function fn(e) {
|
|
2401
|
+
let t = A(/* @__PURE__ */ new Map()), n = A(() => {}), { agentId: r, apiFormats: i, agentFramework: a, selectedModel: o, selectedModelMetadata: s, thinkingMode: c, currentSessionIdRef: l, queuedDraftRef: u, onRunSettled: d, uiCapabilities: f } = e, p = O((e) => {
|
|
2401
2402
|
e.updateConfig({
|
|
2402
2403
|
agentId: r,
|
|
2403
2404
|
apiFormats: i,
|
|
2404
2405
|
agentFramework: a,
|
|
2405
2406
|
selectedModel: o,
|
|
2406
|
-
|
|
2407
|
-
|
|
2407
|
+
selectedModelMetadata: s,
|
|
2408
|
+
thinkingMode: c,
|
|
2409
|
+
checkpointResumePreviewEnabled: !!f.RunLifecycle?.CheckpointResumePreview
|
|
2408
2410
|
});
|
|
2409
2411
|
}, [
|
|
2410
2412
|
r,
|
|
@@ -2412,124 +2414,125 @@ function pn(e) {
|
|
|
2412
2414
|
a,
|
|
2413
2415
|
o,
|
|
2414
2416
|
s,
|
|
2415
|
-
|
|
2416
|
-
|
|
2417
|
+
c,
|
|
2418
|
+
f.RunLifecycle?.CheckpointResumePreview
|
|
2419
|
+
]), m = O((n) => {
|
|
2417
2420
|
let r = String(n || "new-session"), i = t.current.get(r);
|
|
2418
|
-
return i ?
|
|
2419
|
-
}, [e.api,
|
|
2420
|
-
|
|
2421
|
-
for (let e of t.current.values())
|
|
2422
|
-
}, [
|
|
2423
|
-
let
|
|
2424
|
-
|
|
2425
|
-
}, [
|
|
2426
|
-
let i =
|
|
2421
|
+
return i ? p(i) : (i = new St(e.api), p(i), i.subscribe(un), t.current.set(r, i)), i;
|
|
2422
|
+
}, [e.api, p]);
|
|
2423
|
+
k(() => {
|
|
2424
|
+
for (let e of t.current.values()) p(e);
|
|
2425
|
+
}, [p]);
|
|
2426
|
+
let h = O((e) => {
|
|
2427
|
+
u.current.push(e), _.getState().setQueuedDrafts((t) => [...t, e]);
|
|
2428
|
+
}, [u]), g = O((e) => {
|
|
2429
|
+
let i = l.current, a = m(i);
|
|
2427
2430
|
if (a.stage !== "idle") return !1;
|
|
2428
|
-
|
|
2429
|
-
let o = e.text.trim(), s = String(Date.now()),
|
|
2431
|
+
dn(), _.getState().setMobileActionsOpen(!1), F.getState().setSessionStreaming(i, !0);
|
|
2432
|
+
let o = e.text.trim(), s = String(Date.now()), c = e.attachments.map((e) => ({
|
|
2430
2433
|
name: e.name,
|
|
2431
2434
|
url: URL.createObjectURL(e),
|
|
2432
2435
|
type: e.type || "application/octet-stream"
|
|
2433
2436
|
}));
|
|
2434
|
-
(o ||
|
|
2437
|
+
(o || c.length > 0) && K.getState().patchMessages((e) => [...e, {
|
|
2435
2438
|
id: s,
|
|
2436
2439
|
role: "user",
|
|
2437
2440
|
content: o,
|
|
2438
2441
|
timestamp: Date.now(),
|
|
2439
|
-
attachments:
|
|
2442
|
+
attachments: c.length ? c : void 0
|
|
2440
2443
|
}]);
|
|
2441
|
-
let
|
|
2444
|
+
let u = a.start({
|
|
2442
2445
|
text: e.text,
|
|
2443
2446
|
attachments: e.attachments,
|
|
2444
2447
|
responsesInput: e.responsesInput,
|
|
2445
2448
|
previousResponseId: e.previousResponseId,
|
|
2446
2449
|
sessionId: i,
|
|
2447
2450
|
onSessionCreated: (e) => {
|
|
2448
|
-
|
|
2451
|
+
L.getState().upsertSessions([{
|
|
2449
2452
|
SessionId: e,
|
|
2450
2453
|
UpdatedAt: (/* @__PURE__ */ new Date()).toISOString()
|
|
2451
|
-
}]),
|
|
2454
|
+
}]), l.current = e, Te(r, e), L.getState().setCurrentSessionId(e), i !== e && t.current.set(e, a);
|
|
2452
2455
|
},
|
|
2453
2456
|
onSessionUpsert: () => {},
|
|
2454
2457
|
onSettled: (e) => {
|
|
2455
|
-
|
|
2458
|
+
d?.(e), n.current();
|
|
2456
2459
|
}
|
|
2457
2460
|
});
|
|
2458
|
-
return
|
|
2461
|
+
return u || F.getState().setSessionStreaming(i, !1), u;
|
|
2459
2462
|
}, [
|
|
2460
2463
|
r,
|
|
2461
|
-
|
|
2462
|
-
|
|
2463
|
-
|
|
2464
|
+
l,
|
|
2465
|
+
m,
|
|
2466
|
+
d
|
|
2464
2467
|
]);
|
|
2465
|
-
return
|
|
2468
|
+
return k(() => {
|
|
2466
2469
|
n.current = () => {
|
|
2467
|
-
let e =
|
|
2470
|
+
let e = u.current.shift();
|
|
2468
2471
|
if (!e) {
|
|
2469
2472
|
_.getState().setQueuedDrafts([]);
|
|
2470
2473
|
return;
|
|
2471
2474
|
}
|
|
2472
2475
|
_.getState().setQueuedDrafts((e) => e.slice(1)), queueMicrotask(() => {
|
|
2473
|
-
|
|
2476
|
+
g(e) || (u.current.unshift(e), _.getState().setQueuedDrafts((t) => [e, ...t]));
|
|
2474
2477
|
});
|
|
2475
2478
|
};
|
|
2476
|
-
}, [
|
|
2477
|
-
submitDraft:
|
|
2479
|
+
}, [u, g]), {
|
|
2480
|
+
submitDraft: O(async (e, t, n, r) => {
|
|
2478
2481
|
let i = {
|
|
2479
2482
|
text: e,
|
|
2480
2483
|
attachments: t,
|
|
2481
2484
|
responsesInput: n,
|
|
2482
2485
|
previousResponseId: r
|
|
2483
2486
|
};
|
|
2484
|
-
if (
|
|
2485
|
-
n === void 0 &&
|
|
2487
|
+
if (m(l.current).stage !== "idle" && F.getState().isSessionStreaming(l.current)) {
|
|
2488
|
+
n === void 0 && h({
|
|
2486
2489
|
text: e,
|
|
2487
2490
|
attachments: t
|
|
2488
2491
|
});
|
|
2489
2492
|
return;
|
|
2490
2493
|
}
|
|
2491
|
-
!
|
|
2494
|
+
!g(i) && n === void 0 && h({
|
|
2492
2495
|
text: e,
|
|
2493
2496
|
attachments: t
|
|
2494
2497
|
});
|
|
2495
2498
|
}, [
|
|
2496
|
-
|
|
2499
|
+
l,
|
|
2500
|
+
h,
|
|
2497
2501
|
m,
|
|
2498
|
-
|
|
2499
|
-
h
|
|
2502
|
+
g
|
|
2500
2503
|
]),
|
|
2501
|
-
stopGeneration:
|
|
2502
|
-
|
|
2503
|
-
}, [
|
|
2504
|
-
disconnectRun:
|
|
2505
|
-
|
|
2506
|
-
}, [
|
|
2507
|
-
resumeCheckpoint:
|
|
2508
|
-
let t =
|
|
2504
|
+
stopGeneration: O(() => {
|
|
2505
|
+
m(l.current).stop();
|
|
2506
|
+
}, [l, m]),
|
|
2507
|
+
disconnectRun: O(() => {
|
|
2508
|
+
m(l.current).disconnect();
|
|
2509
|
+
}, [l, m]),
|
|
2510
|
+
resumeCheckpoint: O((e) => {
|
|
2511
|
+
let t = m(e.sessionId);
|
|
2509
2512
|
if (t.stage !== "idle") return !1;
|
|
2510
|
-
|
|
2513
|
+
dn(), _.getState().setMobileActionsOpen(!1), F.getState().setSessionStreaming(e.sessionId, !0);
|
|
2511
2514
|
let r = t.resumeCheckpoint({
|
|
2512
2515
|
...e,
|
|
2513
2516
|
onSettled: (e) => {
|
|
2514
|
-
|
|
2517
|
+
d?.(e), n.current();
|
|
2515
2518
|
}
|
|
2516
2519
|
});
|
|
2517
|
-
return r ||
|
|
2518
|
-
}, [
|
|
2519
|
-
resetCompaction:
|
|
2520
|
-
|
|
2520
|
+
return r || F.getState().setSessionStreaming(e.sessionId, !1), r;
|
|
2521
|
+
}, [m, d]),
|
|
2522
|
+
resetCompaction: O(() => {
|
|
2523
|
+
dn();
|
|
2521
2524
|
}, [])
|
|
2522
2525
|
};
|
|
2523
2526
|
}
|
|
2524
2527
|
//#endregion
|
|
2525
2528
|
//#region src/hooks/useFeedback.ts
|
|
2526
|
-
function
|
|
2529
|
+
function pn(e) {
|
|
2527
2530
|
let { agentId: t, currentSessionId: n, isStreaming: r, api: i, submitDraft: a } = e;
|
|
2528
2531
|
return {
|
|
2529
|
-
submitResponseFeedback:
|
|
2532
|
+
submitResponseFeedback: O(async (e) => {
|
|
2530
2533
|
if (!n) return;
|
|
2531
2534
|
let r = null;
|
|
2532
|
-
|
|
2535
|
+
K.getState().patchMessages((t) => {
|
|
2533
2536
|
let n = v(t, {
|
|
2534
2537
|
messageId: e.message.id,
|
|
2535
2538
|
rating: e.rating,
|
|
@@ -2545,12 +2548,12 @@ function mn(e) {
|
|
|
2545
2548
|
rating: e.rating,
|
|
2546
2549
|
comment: e.comment || ""
|
|
2547
2550
|
})))?.Feedback);
|
|
2548
|
-
r &&
|
|
2551
|
+
r && K.getState().patchMessages((t) => s(t, {
|
|
2549
2552
|
messageId: e.message.id,
|
|
2550
2553
|
feedback: r
|
|
2551
2554
|
}));
|
|
2552
2555
|
} catch (t) {
|
|
2553
|
-
console.error("Failed to submit response feedback:", t),
|
|
2556
|
+
console.error("Failed to submit response feedback:", t), K.getState().patchMessages((t) => C(t, {
|
|
2554
2557
|
messageId: e.message.id,
|
|
2555
2558
|
previousFeedback: r
|
|
2556
2559
|
}));
|
|
@@ -2560,10 +2563,10 @@ function mn(e) {
|
|
|
2560
2563
|
n,
|
|
2561
2564
|
i
|
|
2562
2565
|
]),
|
|
2563
|
-
deleteResponseFeedback:
|
|
2566
|
+
deleteResponseFeedback: O(async (e) => {
|
|
2564
2567
|
if (!n) return;
|
|
2565
2568
|
let r = e.feedback ? { ...e.feedback } : null;
|
|
2566
|
-
|
|
2569
|
+
K.getState().patchMessages((t) => d(t, { messageId: e.id }));
|
|
2567
2570
|
try {
|
|
2568
2571
|
await i.deleteResponseFeedback(h({
|
|
2569
2572
|
agentId: t,
|
|
@@ -2571,7 +2574,7 @@ function mn(e) {
|
|
|
2571
2574
|
message: e
|
|
2572
2575
|
}));
|
|
2573
2576
|
} catch (t) {
|
|
2574
|
-
console.error("Failed to delete response feedback:", t),
|
|
2577
|
+
console.error("Failed to delete response feedback:", t), K.getState().patchMessages((t) => C(t, {
|
|
2575
2578
|
messageId: e.id,
|
|
2576
2579
|
previousFeedback: r
|
|
2577
2580
|
}));
|
|
@@ -2581,14 +2584,14 @@ function mn(e) {
|
|
|
2581
2584
|
n,
|
|
2582
2585
|
i
|
|
2583
2586
|
]),
|
|
2584
|
-
respondToApproval:
|
|
2585
|
-
!e.approvalRequestId || r || (
|
|
2587
|
+
respondToApproval: O((e) => {
|
|
2588
|
+
!e.approvalRequestId || r || (K.getState().patchMessages((t) => t.map((t) => ({
|
|
2586
2589
|
...t,
|
|
2587
2590
|
tools: t.tools ? Object.fromEntries(Object.entries(t.tools).map(([t, n]) => [t, n.approvalRequestId === e.approvalRequestId ? {
|
|
2588
2591
|
...n,
|
|
2589
2592
|
approvalStatus: e.approve ? "approved" : "rejected"
|
|
2590
2593
|
} : n])) : t.tools
|
|
2591
|
-
}))),
|
|
2594
|
+
}))), K.getState().patchMessages((t) => [...t, {
|
|
2592
2595
|
id: String(Date.now() + Math.random()),
|
|
2593
2596
|
role: "system",
|
|
2594
2597
|
content: e.approve ? "已批准工具调用,正在继续运行。" : "已拒绝工具调用,正在通知运行时。",
|
|
@@ -2603,10 +2606,10 @@ function mn(e) {
|
|
|
2603
2606
|
}
|
|
2604
2607
|
//#endregion
|
|
2605
2608
|
//#region src/utils/run-state.js
|
|
2606
|
-
function
|
|
2609
|
+
function mn(e) {
|
|
2607
2610
|
return String(e?.InvocationId || e?.invocation_id || e?.invocationId || "").trim();
|
|
2608
2611
|
}
|
|
2609
|
-
function
|
|
2612
|
+
function hn(e) {
|
|
2610
2613
|
let t = e?.Timestamp ?? e?.timestamp ?? e?.created_at ?? e?.CreatedAt;
|
|
2611
2614
|
if (typeof t == "number" && Number.isFinite(t)) return t > 1e11 ? t : t * 1e3;
|
|
2612
2615
|
if (typeof t == "string") {
|
|
@@ -2615,16 +2618,16 @@ function gn(e) {
|
|
|
2615
2618
|
}
|
|
2616
2619
|
return 0;
|
|
2617
2620
|
}
|
|
2618
|
-
function
|
|
2621
|
+
function gn(e) {
|
|
2619
2622
|
return String(e?.EventType || e?.event_type || "").trim();
|
|
2620
2623
|
}
|
|
2621
|
-
function
|
|
2624
|
+
function _n(e = [], t = {}) {
|
|
2622
2625
|
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;
|
|
2623
2626
|
for (let e of i) {
|
|
2624
|
-
let t =
|
|
2627
|
+
let t = mn(e);
|
|
2625
2628
|
if (!t) continue;
|
|
2626
|
-
let i =
|
|
2627
|
-
i && r.set(t, Math.max(r.get(t) || 0, i)),
|
|
2629
|
+
let i = hn(e);
|
|
2630
|
+
i && r.set(t, Math.max(r.get(t) || 0, i)), gn(e) === "run_status" && n.set(t, String(e?.Content?.status || e?.content?.status || "").trim());
|
|
2628
2631
|
}
|
|
2629
2632
|
return Array.from(n.entries()).filter(([e, t]) => {
|
|
2630
2633
|
let n = r.get(e) || 0, i = n > 0 && a - n > o;
|
|
@@ -2633,8 +2636,8 @@ function vn(e = [], t = {}) {
|
|
|
2633
2636
|
}
|
|
2634
2637
|
//#endregion
|
|
2635
2638
|
//#region src/hooks/useSessionLifecycle.ts
|
|
2636
|
-
var
|
|
2637
|
-
function
|
|
2639
|
+
var vn = 9e4, yn = 30, bn = 50;
|
|
2640
|
+
function xn(e) {
|
|
2638
2641
|
if (e.EventType !== "run_status") return null;
|
|
2639
2642
|
let t = String(e.Content?.status || "").trim().toLowerCase();
|
|
2640
2643
|
return t === "completed" ? {
|
|
@@ -2648,8 +2651,8 @@ function Sn(e) {
|
|
|
2648
2651
|
phase: "后台长任务失败"
|
|
2649
2652
|
} : null;
|
|
2650
2653
|
}
|
|
2651
|
-
function
|
|
2652
|
-
let { agentId: t, api: n, isMobile: r, resetCompaction: i, uiCapabilities: a, disconnectRun: o } = e, s =
|
|
2654
|
+
function Sn(e) {
|
|
2655
|
+
let { agentId: t, api: n, isMobile: r, resetCompaction: i, uiCapabilities: a, disconnectRun: o } = e, s = A(e.currentSessionId), l = A(e.agentId), u = A(null), d = A(null), f = A(null), p = O(async (e, t, r) => {
|
|
2653
2656
|
let i = r.filter((e) => c(e, !1, !1));
|
|
2654
2657
|
if (!i.length) return;
|
|
2655
2658
|
let a = await Promise.all(i.map(async (r) => {
|
|
@@ -2670,11 +2673,11 @@ function Cn(e) {
|
|
|
2670
2673
|
}));
|
|
2671
2674
|
if (s.current !== t) return;
|
|
2672
2675
|
let o = new Map(a.filter((e) => !!e).map((e) => [e.messageId, e.feedback]));
|
|
2673
|
-
o.size &&
|
|
2676
|
+
o.size && K.getState().patchMessages((e) => e.map((e) => o.has(e.id) ? {
|
|
2674
2677
|
...e,
|
|
2675
2678
|
feedback: o.get(e.id)
|
|
2676
2679
|
} : e));
|
|
2677
|
-
}, [n]), m =
|
|
2680
|
+
}, [n]), m = O(async (e) => {
|
|
2678
2681
|
u.current?.abort();
|
|
2679
2682
|
let t = new AbortController();
|
|
2680
2683
|
u.current = t;
|
|
@@ -2682,14 +2685,14 @@ function Cn(e) {
|
|
|
2682
2685
|
u.current !== t || t.signal.aborted || t.abort();
|
|
2683
2686
|
}, o = globalThis.setTimeout(() => {
|
|
2684
2687
|
a();
|
|
2685
|
-
},
|
|
2688
|
+
}, vn);
|
|
2686
2689
|
try {
|
|
2687
2690
|
let a = (await n.subscribeRunEvents({
|
|
2688
2691
|
sessionId: e.sessionId,
|
|
2689
2692
|
invocationId: e.invocationId,
|
|
2690
2693
|
afterSeqId: e.afterSeqId
|
|
2691
2694
|
}, { signal: t.signal })).getReader(), o = new TextDecoder(), s = "", c = Array.isArray(e.initialEvents) ? e.initialEvents : [];
|
|
2692
|
-
for (
|
|
2695
|
+
for (F.getState().setCurrentRunId(e.invocationId), F.getState().updateActivity({
|
|
2693
2696
|
sessionId: e.sessionId,
|
|
2694
2697
|
status: "running",
|
|
2695
2698
|
phase: "后台长任务运行中",
|
|
@@ -2713,8 +2716,8 @@ function Cn(e) {
|
|
|
2713
2716
|
try {
|
|
2714
2717
|
let t = JSON.parse(a);
|
|
2715
2718
|
c = rn(c, [t]), i ||= on(t), r ||= i, t.EventType === "run_checkpoint" && Z.getState().upsertSessionCheckpoint(e.sessionId, t);
|
|
2716
|
-
let n =
|
|
2717
|
-
n &&
|
|
2719
|
+
let n = xn(t);
|
|
2720
|
+
n && F.getState().updateActivity({
|
|
2718
2721
|
sessionId: e.sessionId,
|
|
2719
2722
|
status: n.status,
|
|
2720
2723
|
phase: n.phase,
|
|
@@ -2722,7 +2725,7 @@ function Cn(e) {
|
|
|
2722
2725
|
countEvent: !1
|
|
2723
2726
|
});
|
|
2724
2727
|
let o = nn(c);
|
|
2725
|
-
|
|
2728
|
+
K.getState().setMessages(o);
|
|
2726
2729
|
} catch (e) {
|
|
2727
2730
|
console.warn("Failed to parse run event data", a, e);
|
|
2728
2731
|
}
|
|
@@ -2731,12 +2734,12 @@ function Cn(e) {
|
|
|
2731
2734
|
} catch (e) {
|
|
2732
2735
|
e instanceof DOMException && e.name === "AbortError" || console.error("Failed to subscribe run events:", e);
|
|
2733
2736
|
} finally {
|
|
2734
|
-
globalThis.clearTimeout(o), u.current === t && (u.current = null),
|
|
2737
|
+
globalThis.clearTimeout(o), u.current === t && (u.current = null), F.getState().setCurrentRunId(""), r && s.current === e.sessionId && d.current?.(e.sessionId), f.current?.(l.current, e.sessionId);
|
|
2735
2738
|
}
|
|
2736
|
-
}, [n]), h =
|
|
2737
|
-
s.current = e,
|
|
2739
|
+
}, [n]), h = O(async (e) => {
|
|
2740
|
+
s.current = e, L.getState().setCurrentSessionId(e), i(), u.current?.abort(), r && _.getState().setMobileSidebarOpen(!1);
|
|
2738
2741
|
try {
|
|
2739
|
-
let t =
|
|
2742
|
+
let t = L.getState().eventCache[e], r;
|
|
2740
2743
|
if (t) r = {
|
|
2741
2744
|
Events: t.events,
|
|
2742
2745
|
Total: t.total,
|
|
@@ -2747,18 +2750,18 @@ function Cn(e) {
|
|
|
2747
2750
|
let t = await n.listSessionEvents(e, {
|
|
2748
2751
|
offset: 0,
|
|
2749
2752
|
limit: 1
|
|
2750
|
-
}), i = Number(t.Total ?? t.Events?.length ?? 0), a = Math.max(0, i -
|
|
2753
|
+
}), i = Number(t.Total ?? t.Events?.length ?? 0), a = Math.max(0, i - bn);
|
|
2751
2754
|
r = i <= 1 ? t : await n.listSessionEvents(e, {
|
|
2752
2755
|
offset: a,
|
|
2753
|
-
limit:
|
|
2754
|
-
}),
|
|
2756
|
+
limit: bn
|
|
2757
|
+
}), L.getState().setSessionEventCache(e, {
|
|
2755
2758
|
events: r.Events || [],
|
|
2756
2759
|
total: i,
|
|
2757
2760
|
offset: Number(r.Offset ?? a),
|
|
2758
2761
|
limit: Number(r.Limit ?? r.Events?.length ?? 0)
|
|
2759
2762
|
});
|
|
2760
2763
|
}
|
|
2761
|
-
let i =
|
|
2764
|
+
let i = N.getState().capabilities || a;
|
|
2762
2765
|
i.RunLifecycle.Enabled && i.RunLifecycle.Checkpoints ? (n.listSessionCheckpoints({
|
|
2763
2766
|
agentId: l.current,
|
|
2764
2767
|
sessionId: e
|
|
@@ -2777,8 +2780,8 @@ function Cn(e) {
|
|
|
2777
2780
|
let o = r;
|
|
2778
2781
|
if (o?.Events) {
|
|
2779
2782
|
let t = o.Events, n = nn(t);
|
|
2780
|
-
|
|
2781
|
-
let r =
|
|
2783
|
+
K.getState().setMessages(n), p(l.current, e, n);
|
|
2784
|
+
let r = _n(t, {
|
|
2782
2785
|
now: Date.now(),
|
|
2783
2786
|
staleAfterMs: 1800 * 1e3
|
|
2784
2787
|
}), a = an(t);
|
|
@@ -2788,7 +2791,7 @@ function Cn(e) {
|
|
|
2788
2791
|
afterSeqId: a,
|
|
2789
2792
|
initialEvents: t
|
|
2790
2793
|
});
|
|
2791
|
-
} else
|
|
2794
|
+
} else K.getState().setMessages([]), Z.getState().setSessionCheckpoints(e, []), Z.getState().setSessionToolReceipts(e, []);
|
|
2792
2795
|
} catch (e) {
|
|
2793
2796
|
console.error("Failed to load session events:", e);
|
|
2794
2797
|
}
|
|
@@ -2799,73 +2802,73 @@ function Cn(e) {
|
|
|
2799
2802
|
i,
|
|
2800
2803
|
m,
|
|
2801
2804
|
a
|
|
2802
|
-
]), g =
|
|
2805
|
+
]), g = O(async (e = "default-agent", t = null) => {
|
|
2803
2806
|
try {
|
|
2804
|
-
let r =
|
|
2805
|
-
r.sessionsAgentId && r.sessionsAgentId !== e && r.resetSessionPagination(e),
|
|
2807
|
+
let r = L.getState();
|
|
2808
|
+
r.sessionsAgentId && r.sessionsAgentId !== e && r.resetSessionPagination(e), L.getState().setLoadingSessions(!0);
|
|
2806
2809
|
let i = await n.listSessions(e, {
|
|
2807
2810
|
page: 1,
|
|
2808
|
-
pageSize:
|
|
2811
|
+
pageSize: yn
|
|
2809
2812
|
});
|
|
2810
|
-
|
|
2813
|
+
L.getState().upsertSessions(i.Sessions || [], {
|
|
2811
2814
|
agentId: e,
|
|
2812
2815
|
total: Number(i.Total ?? i.Sessions?.length ?? 0),
|
|
2813
2816
|
page: Number(i.Page ?? 1),
|
|
2814
|
-
pageSize: Number(i.PageSize ??
|
|
2817
|
+
pageSize: Number(i.PageSize ?? yn),
|
|
2815
2818
|
replace: !0
|
|
2816
2819
|
});
|
|
2817
|
-
let a =
|
|
2818
|
-
c && c !== o ? h(c) : !c && o && (s.current = null,
|
|
2820
|
+
let a = L.getState().sessions, o = s.current, c = Ee(a, o || t || we(e));
|
|
2821
|
+
c && c !== o ? h(c) : !c && o && (s.current = null, L.getState().setCurrentSessionId(null), K.getState().setMessages([]), Z.getState().clearSessionCheckpoints());
|
|
2819
2822
|
} catch (e) {
|
|
2820
|
-
if (e instanceof
|
|
2823
|
+
if (e instanceof H) return;
|
|
2821
2824
|
console.error("Failed to fetch sessions:", e);
|
|
2822
2825
|
} finally {
|
|
2823
|
-
|
|
2826
|
+
L.getState().setLoadingSessions(!1);
|
|
2824
2827
|
}
|
|
2825
|
-
}, [n, h]), v =
|
|
2826
|
-
let e =
|
|
2828
|
+
}, [n, h]), v = O(async () => {
|
|
2829
|
+
let e = L.getState();
|
|
2827
2830
|
if (e.isLoadingSessions || !e.hasMoreSessions) return;
|
|
2828
|
-
let t =
|
|
2831
|
+
let t = de({
|
|
2829
2832
|
total: e.sessionsTotal,
|
|
2830
|
-
pageSize: e.sessionsPageSize ||
|
|
2833
|
+
pageSize: e.sessionsPageSize || yn,
|
|
2831
2834
|
loadedPages: e.loadedPages
|
|
2832
2835
|
});
|
|
2833
2836
|
if (!t) return;
|
|
2834
|
-
let r = e.sessionsPageSize ||
|
|
2837
|
+
let r = e.sessionsPageSize || yn, i = e.sessionsAgentId || l.current || "default-agent";
|
|
2835
2838
|
try {
|
|
2836
|
-
|
|
2839
|
+
L.getState().setLoadingSessions(!0);
|
|
2837
2840
|
let a = await n.listSessions(i, {
|
|
2838
2841
|
page: t,
|
|
2839
2842
|
pageSize: r
|
|
2840
2843
|
});
|
|
2841
|
-
|
|
2844
|
+
L.getState().upsertSessions(a.Sessions || [], {
|
|
2842
2845
|
agentId: i,
|
|
2843
2846
|
total: Number(a.Total ?? e.sessionsTotal),
|
|
2844
2847
|
page: Number(a.Page ?? t),
|
|
2845
2848
|
pageSize: Number(a.PageSize ?? r)
|
|
2846
2849
|
});
|
|
2847
2850
|
} catch (e) {
|
|
2848
|
-
if (e instanceof
|
|
2851
|
+
if (e instanceof H) return;
|
|
2849
2852
|
console.error("Failed to load more sessions:", e);
|
|
2850
2853
|
} finally {
|
|
2851
|
-
|
|
2854
|
+
L.getState().setLoadingSessions(!1);
|
|
2852
2855
|
}
|
|
2853
2856
|
}, [n]);
|
|
2854
|
-
|
|
2857
|
+
k(() => {
|
|
2855
2858
|
d.current = h;
|
|
2856
|
-
}, [h]),
|
|
2859
|
+
}, [h]), k(() => {
|
|
2857
2860
|
f.current = g;
|
|
2858
2861
|
}, [g]);
|
|
2859
|
-
let y =
|
|
2862
|
+
let y = O(async () => {
|
|
2860
2863
|
try {
|
|
2861
2864
|
o?.();
|
|
2862
2865
|
let e = (await n.createSession(t)).SessionId;
|
|
2863
|
-
e && (
|
|
2866
|
+
e && (L.getState().upsertSessions([{
|
|
2864
2867
|
SessionId: e,
|
|
2865
2868
|
UpdatedAt: (/* @__PURE__ */ new Date()).toISOString()
|
|
2866
|
-
}]), s.current = e,
|
|
2869
|
+
}]), s.current = e, L.getState().setCurrentSessionId(e), K.getState().setMessages([]), Z.getState().setSessionCheckpoints(e, []), Z.getState().setSessionToolReceipts(e, []), r && (_.getState().setMobileSidebarOpen(!1), _.getState().setMobileActionsOpen(!1)), g(t, e));
|
|
2867
2870
|
} catch (e) {
|
|
2868
|
-
if (e instanceof
|
|
2871
|
+
if (e instanceof H) return;
|
|
2869
2872
|
console.error("Failed to create session:", e);
|
|
2870
2873
|
}
|
|
2871
2874
|
}, [
|
|
@@ -2874,11 +2877,11 @@ function Cn(e) {
|
|
|
2874
2877
|
o,
|
|
2875
2878
|
g,
|
|
2876
2879
|
r
|
|
2877
|
-
]), b =
|
|
2880
|
+
]), b = O(async (e) => {
|
|
2878
2881
|
try {
|
|
2879
|
-
await n.deleteSession(e),
|
|
2882
|
+
await n.deleteSession(e), L.getState().removeSession(e), L.getState().clearSessionEventCache(e), s.current === e && (s.current = null, K.getState().setMessages([]), Z.getState().clearSessionCheckpoints(e), L.getState().setCurrentSessionId(null), g(t));
|
|
2880
2883
|
} catch (e) {
|
|
2881
|
-
if (e instanceof
|
|
2884
|
+
if (e instanceof H) return;
|
|
2882
2885
|
console.error("Failed to delete session", e);
|
|
2883
2886
|
}
|
|
2884
2887
|
}, [
|
|
@@ -2890,29 +2893,29 @@ function Cn(e) {
|
|
|
2890
2893
|
fetchSessions: g,
|
|
2891
2894
|
loadMoreSessions: v,
|
|
2892
2895
|
loadSession: h,
|
|
2893
|
-
loadOlderSessionEvents:
|
|
2894
|
-
let t =
|
|
2896
|
+
loadOlderSessionEvents: O(async (e) => {
|
|
2897
|
+
let t = L.getState().eventCache[e];
|
|
2895
2898
|
if (!t || t.offset <= 0 || t.isLoadingOlder) return;
|
|
2896
|
-
let r = Math.max(0, t.offset -
|
|
2899
|
+
let r = Math.max(0, t.offset - bn), i = t.offset - r;
|
|
2897
2900
|
try {
|
|
2898
|
-
|
|
2901
|
+
L.getState().setSessionEventLoadingOlder(e, !0);
|
|
2899
2902
|
let a = await n.listSessionEvents(e, {
|
|
2900
2903
|
offset: r,
|
|
2901
2904
|
limit: i
|
|
2902
2905
|
}), o = rn(a.Events || [], t.events);
|
|
2903
|
-
if (
|
|
2906
|
+
if (L.getState().setSessionEventCache(e, {
|
|
2904
2907
|
events: o,
|
|
2905
2908
|
total: Number(a.Total ?? t.total),
|
|
2906
2909
|
offset: Number(a.Offset ?? r),
|
|
2907
2910
|
limit: o.length
|
|
2908
2911
|
}), s.current === e) {
|
|
2909
2912
|
let t = nn(o);
|
|
2910
|
-
|
|
2913
|
+
K.getState().setMessages(t), p(l.current, e, t);
|
|
2911
2914
|
}
|
|
2912
2915
|
} catch (e) {
|
|
2913
|
-
e instanceof
|
|
2916
|
+
e instanceof H || console.error("Failed to load older session events:", e);
|
|
2914
2917
|
} finally {
|
|
2915
|
-
|
|
2918
|
+
L.getState().setSessionEventLoadingOlder(e, !1);
|
|
2916
2919
|
}
|
|
2917
2920
|
}, [n, p]),
|
|
2918
2921
|
createNewSession: y,
|
|
@@ -2924,8 +2927,8 @@ function Cn(e) {
|
|
|
2924
2927
|
}
|
|
2925
2928
|
//#endregion
|
|
2926
2929
|
//#region src/components/chat/ConnectedSidebar.tsx
|
|
2927
|
-
function
|
|
2928
|
-
let u =
|
|
2930
|
+
function Cn({ uiCapabilities: e, createNewSession: n, deleteSession: a, loadSession: s, loadMoreSessions: c }) {
|
|
2931
|
+
let u = L((e) => e.sessions), d = L((e) => e.currentSessionId), f = L((e) => e.pinnedSessionIds), m = L((e) => e.isLoadingSessions), h = L((e) => e.hasMoreSessions), g = _((e) => e.sidebarOpen), v = _((e) => e.mobileSidebarOpen), { isMobile: y } = Ie(), b = t(e), { desktopSidebarVisible: ee } = ve({
|
|
2929
2932
|
isMobile: y,
|
|
2930
2933
|
desktopSidebarOpen: g,
|
|
2931
2934
|
mobileSidebarOpen: v
|
|
@@ -2954,7 +2957,7 @@ function wn({ uiCapabilities: e, createNewSession: n, deleteSession: a, loadSess
|
|
|
2954
2957
|
t.stopPropagation(), a(e);
|
|
2955
2958
|
},
|
|
2956
2959
|
onTogglePinSession: (e, t) => {
|
|
2957
|
-
t.stopPropagation(),
|
|
2960
|
+
t.stopPropagation(), L.getState().togglePinnedSession(e);
|
|
2958
2961
|
},
|
|
2959
2962
|
onLoadMoreSessions: c,
|
|
2960
2963
|
sessionTitle: te,
|
|
@@ -2975,7 +2978,7 @@ function wn({ uiCapabilities: e, createNewSession: n, deleteSession: a, loadSess
|
|
|
2975
2978
|
t.stopPropagation(), a(e);
|
|
2976
2979
|
},
|
|
2977
2980
|
onTogglePinSession: (e, t) => {
|
|
2978
|
-
t.stopPropagation(),
|
|
2981
|
+
t.stopPropagation(), L.getState().togglePinnedSession(e);
|
|
2979
2982
|
},
|
|
2980
2983
|
onLoadMoreSessions: c,
|
|
2981
2984
|
sessionTitle: te,
|
|
@@ -2987,17 +2990,17 @@ function wn({ uiCapabilities: e, createNewSession: n, deleteSession: a, loadSess
|
|
|
2987
2990
|
}
|
|
2988
2991
|
//#endregion
|
|
2989
2992
|
//#region src/components/ui/dialog.tsx
|
|
2990
|
-
var
|
|
2993
|
+
var wn = j.Root, Tn = j.Portal, En = D.forwardRef(({ className: e, ...t }, n) => /* @__PURE__ */ T(j.Overlay, {
|
|
2991
2994
|
ref: n,
|
|
2992
2995
|
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),
|
|
2993
2996
|
...t
|
|
2994
2997
|
}));
|
|
2995
|
-
|
|
2996
|
-
var
|
|
2998
|
+
En.displayName = j.Overlay.displayName;
|
|
2999
|
+
var Dn = D.forwardRef(({ className: e, children: t, ...n }, r) => /* @__PURE__ */ E(Tn, { children: [/* @__PURE__ */ T(En, {}), /* @__PURE__ */ E(j.Content, {
|
|
2997
3000
|
ref: r,
|
|
2998
3001
|
className: p("fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg", e),
|
|
2999
3002
|
...n,
|
|
3000
|
-
children: [t, /* @__PURE__ */ E(
|
|
3003
|
+
children: [t, /* @__PURE__ */ E(j.Close, {
|
|
3001
3004
|
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",
|
|
3002
3005
|
children: [/* @__PURE__ */ T(w, { className: "h-4 w-4" }), /* @__PURE__ */ T("span", {
|
|
3003
3006
|
className: "sr-only",
|
|
@@ -3005,50 +3008,50 @@ var On = D.forwardRef(({ className: e, children: t, ...n }, r) => /* @__PURE__ *
|
|
|
3005
3008
|
})]
|
|
3006
3009
|
})]
|
|
3007
3010
|
})] }));
|
|
3008
|
-
|
|
3009
|
-
var
|
|
3011
|
+
Dn.displayName = j.Content.displayName;
|
|
3012
|
+
var On = ({ className: e, ...t }) => /* @__PURE__ */ T("div", {
|
|
3010
3013
|
className: p("flex flex-col space-y-1.5 text-center sm:text-left", e),
|
|
3011
3014
|
...t
|
|
3012
3015
|
});
|
|
3013
|
-
|
|
3014
|
-
var
|
|
3016
|
+
On.displayName = "DialogHeader";
|
|
3017
|
+
var kn = ({ className: e, ...t }) => /* @__PURE__ */ T("div", {
|
|
3015
3018
|
className: p("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2", e),
|
|
3016
3019
|
...t
|
|
3017
3020
|
});
|
|
3018
|
-
|
|
3019
|
-
var
|
|
3021
|
+
kn.displayName = "DialogFooter";
|
|
3022
|
+
var An = D.forwardRef(({ className: e, ...t }, n) => /* @__PURE__ */ T(j.Title, {
|
|
3020
3023
|
ref: n,
|
|
3021
3024
|
className: p("text-lg font-semibold leading-none tracking-tight", e),
|
|
3022
3025
|
...t
|
|
3023
3026
|
}));
|
|
3024
|
-
|
|
3025
|
-
var
|
|
3027
|
+
An.displayName = j.Title.displayName;
|
|
3028
|
+
var jn = D.forwardRef(({ className: e, ...t }, n) => /* @__PURE__ */ T(j.Description, {
|
|
3026
3029
|
ref: n,
|
|
3027
3030
|
className: p("text-sm text-muted-foreground", e),
|
|
3028
3031
|
...t
|
|
3029
3032
|
}));
|
|
3030
|
-
|
|
3033
|
+
jn.displayName = j.Description.displayName;
|
|
3031
3034
|
//#endregion
|
|
3032
3035
|
//#region src/components/chat/AttachmentPreview.tsx
|
|
3033
|
-
function
|
|
3036
|
+
function Mn(e, t) {
|
|
3034
3037
|
if (!(!t || e)) return {
|
|
3035
3038
|
width: `min(${t.width}px, calc(100vw - 5rem))`,
|
|
3036
3039
|
height: `min(${t.height}px, calc(100vh - 9rem))`
|
|
3037
3040
|
};
|
|
3038
3041
|
}
|
|
3039
|
-
function
|
|
3042
|
+
function Nn(e, t) {
|
|
3040
3043
|
if (!(!t || e)) return { width: `min(${t.width + 32}px, calc(100vw - 3rem))` };
|
|
3041
3044
|
}
|
|
3042
|
-
function
|
|
3043
|
-
return /* @__PURE__ */ T(
|
|
3045
|
+
function Pn({ attachment: e, isMobile: t, previewImageSize: n, onClose: r, onImageLoad: i }) {
|
|
3046
|
+
return /* @__PURE__ */ T(wn, {
|
|
3044
3047
|
open: !!e?.url,
|
|
3045
3048
|
onOpenChange: (e) => !e && r(),
|
|
3046
|
-
children: /* @__PURE__ */ E(
|
|
3049
|
+
children: /* @__PURE__ */ E(Dn, {
|
|
3047
3050
|
className: p("gap-0 overflow-hidden border-slate-700 bg-slate-950 p-0 text-slate-100 shadow-2xl [&>button]:right-3 [&>button]:top-3 [&>button]:rounded-md [&>button]:border [&>button]:border-slate-700 [&>button]:bg-slate-900/70 [&>button]:p-1.5 [&>button]:text-slate-200 [&>button]:opacity-100", t ? "left-0 top-0 h-[var(--app-height)] max-h-[var(--app-height)] w-screen max-w-none translate-x-0 translate-y-0 rounded-none border-0" : "max-h-[calc(100vh-2rem)] max-w-[calc(100vw-2rem)] rounded-2xl"),
|
|
3048
|
-
style:
|
|
3051
|
+
style: Nn(t, n),
|
|
3049
3052
|
children: [/* @__PURE__ */ T("div", {
|
|
3050
3053
|
className: "flex items-center gap-3 border-b border-slate-800 px-4 py-3 pr-16",
|
|
3051
|
-
children: /* @__PURE__ */ T(
|
|
3054
|
+
children: /* @__PURE__ */ T(An, {
|
|
3052
3055
|
className: "truncate text-sm font-medium",
|
|
3053
3056
|
children: e?.name || "附件预览"
|
|
3054
3057
|
})
|
|
@@ -3058,7 +3061,7 @@ function Fn({ attachment: e, isMobile: t, previewImageSize: n, onClose: r, onIma
|
|
|
3058
3061
|
src: e.url,
|
|
3059
3062
|
alt: e.name,
|
|
3060
3063
|
className: p("object-contain", t ? "h-auto max-h-full w-full max-w-full" : "h-auto w-auto max-h-[calc(100vh-9rem)] max-w-[calc(100vw-5rem)]"),
|
|
3061
|
-
style:
|
|
3064
|
+
style: Mn(t, n),
|
|
3062
3065
|
onLoad: (e) => {
|
|
3063
3066
|
let t = e.currentTarget;
|
|
3064
3067
|
i({
|
|
@@ -3077,7 +3080,7 @@ function Fn({ attachment: e, isMobile: t, previewImageSize: n, onClose: r, onIma
|
|
|
3077
3080
|
}
|
|
3078
3081
|
//#endregion
|
|
3079
3082
|
//#region src/utils/context.js
|
|
3080
|
-
function
|
|
3083
|
+
function Fn(e) {
|
|
3081
3084
|
if (typeof e == "number" && Number.isFinite(e) && e > 0) return e;
|
|
3082
3085
|
if (typeof e == "string" && e.trim()) {
|
|
3083
3086
|
let t = Number(e);
|
|
@@ -3085,15 +3088,15 @@ function In(e) {
|
|
|
3085
3088
|
}
|
|
3086
3089
|
return null;
|
|
3087
3090
|
}
|
|
3088
|
-
function
|
|
3091
|
+
function In(e) {
|
|
3089
3092
|
return /[\u3400-\u4DBF\u4E00-\u9FFF\uF900-\uFAFF]/u.test(e);
|
|
3090
3093
|
}
|
|
3091
|
-
function
|
|
3094
|
+
function Ln(e) {
|
|
3092
3095
|
let t = String(e || "").trim();
|
|
3093
3096
|
if (!t) return 0;
|
|
3094
3097
|
let n = 0, r = 0;
|
|
3095
3098
|
for (let e of t) {
|
|
3096
|
-
if (
|
|
3099
|
+
if (In(e)) {
|
|
3097
3100
|
n += 1;
|
|
3098
3101
|
continue;
|
|
3099
3102
|
}
|
|
@@ -3103,15 +3106,15 @@ function $(e) {
|
|
|
3103
3106
|
}
|
|
3104
3107
|
function Rn(e) {
|
|
3105
3108
|
if (!e) return 0;
|
|
3106
|
-
if (e.role === "system") return e.eventType === "context_checkpoint" ?
|
|
3107
|
-
let t =
|
|
3108
|
-
return e.tools && (t += Object.values(e.tools).reduce((e, t) => e +
|
|
3109
|
+
if (e.role === "system") return e.eventType === "context_checkpoint" ? Ln(e.summary || "") : 0;
|
|
3110
|
+
let t = Ln(e.content || "");
|
|
3111
|
+
return e.tools && (t += Object.values(e.tools).reduce((e, t) => e + Ln(t?.name || "") + Ln(t?.args || "") + Ln(t?.output || ""), 0)), t;
|
|
3109
3112
|
}
|
|
3110
3113
|
function zn(e) {
|
|
3111
|
-
return e ?
|
|
3114
|
+
return e ? Fn(e.context_window_tokens) ?? Fn(e?.limits?.context_window_tokens) : null;
|
|
3112
3115
|
}
|
|
3113
3116
|
function Bn(e) {
|
|
3114
|
-
return e ?
|
|
3117
|
+
return e ? Fn(e.auto_compact_threshold_percentage) ?? 84 : 84;
|
|
3115
3118
|
}
|
|
3116
3119
|
function Vn({ messages: e, draftInput: t, selectedModel: n }) {
|
|
3117
3120
|
let r = zn(n);
|
|
@@ -3127,7 +3130,7 @@ function Vn({ messages: e, draftInput: t, selectedModel: n }) {
|
|
|
3127
3130
|
percent: Math.min(100, Math.max(0, Math.round(e / r * 100)))
|
|
3128
3131
|
};
|
|
3129
3132
|
}
|
|
3130
|
-
let a = (e || []).reduce((e, t) => e + Rn(t), 0) +
|
|
3133
|
+
let a = (e || []).reduce((e, t) => e + Rn(t), 0) + Ln(t || "");
|
|
3131
3134
|
if (a <= 0) return null;
|
|
3132
3135
|
let o = Math.min(100, Math.max(0, Math.round(a / r * 100)));
|
|
3133
3136
|
return o >= Bn(n) ? {
|
|
@@ -3147,18 +3150,18 @@ function Vn({ messages: e, draftInput: t, selectedModel: n }) {
|
|
|
3147
3150
|
//#endregion
|
|
3148
3151
|
//#region src/components/chat/ConnectedMessageList.tsx
|
|
3149
3152
|
function Hn({ agentName: e, isMobile: t, onDeleteFeedback: n, onSubmitFeedback: r, onRespondToApproval: i, onStopGeneration: a, onCancelRemote: o, checkpointResumeEnabled: s = !1, onResumeCheckpoint: c, onLoadOlderSessionEvents: l }) {
|
|
3150
|
-
let u =
|
|
3153
|
+
let u = K((e) => e.messages), d = L((e) => e.currentSessionId), f = F((e) => !!(e.getSessionActivity(d) && e.isSessionStreaming(d))), p = F((e) => e.getSessionActivity(d)), h = Z((e) => e.getSessionCheckpoints(d)), g = L((e) => d ? e.eventCache[d] : null), v = _((e) => e.input), y = P((e) => e.availableModels), b = P((e) => e.selectedModel), ee = _((e) => e.previewAttachment), te = _((e) => e.previewImageSize), x = A(null), S = A(!0), C = A(!1), ne = A(0), w = A(f), D = A(!1), ie = oe(() => y.find((e) => e.id === b) || null, [y, b]), ae = oe(() => Vn({
|
|
3151
3154
|
messages: u,
|
|
3152
3155
|
draftInput: v,
|
|
3153
|
-
selectedModel:
|
|
3156
|
+
selectedModel: ie
|
|
3154
3157
|
}), [
|
|
3155
3158
|
v,
|
|
3156
3159
|
u,
|
|
3157
|
-
|
|
3160
|
+
ie
|
|
3158
3161
|
]);
|
|
3159
|
-
return
|
|
3162
|
+
return k(() => {
|
|
3160
3163
|
w.current = f;
|
|
3161
|
-
}, [f]),
|
|
3164
|
+
}, [f]), k(() => {
|
|
3162
3165
|
let e = x.current;
|
|
3163
3166
|
if (!e) return;
|
|
3164
3167
|
let t = () => {
|
|
@@ -3192,7 +3195,7 @@ function Hn({ agentName: e, isMobile: t, onDeleteFeedback: n, onSubmitFeedback:
|
|
|
3192
3195
|
g,
|
|
3193
3196
|
d,
|
|
3194
3197
|
l
|
|
3195
|
-
]),
|
|
3198
|
+
]), k(() => {
|
|
3196
3199
|
let e = x.current;
|
|
3197
3200
|
!e || !S.current || (e.scrollTop = e.scrollHeight, ne.current = e.scrollTop);
|
|
3198
3201
|
}, [u, f]), /* @__PURE__ */ E(re, { children: [/* @__PURE__ */ T(m, {
|
|
@@ -3200,7 +3203,7 @@ function Hn({ agentName: e, isMobile: t, onDeleteFeedback: n, onSubmitFeedback:
|
|
|
3200
3203
|
isMobile: t,
|
|
3201
3204
|
isStreaming: f,
|
|
3202
3205
|
activity: p,
|
|
3203
|
-
contextIndicator:
|
|
3206
|
+
contextIndicator: ae,
|
|
3204
3207
|
messages: u,
|
|
3205
3208
|
onDeleteFeedback: n,
|
|
3206
3209
|
onOpenAttachmentPreview: (e) => {
|
|
@@ -3213,7 +3216,7 @@ function Hn({ agentName: e, isMobile: t, onDeleteFeedback: n, onSubmitFeedback:
|
|
|
3213
3216
|
checkpoints: s ? h : [],
|
|
3214
3217
|
onResumeCheckpoint: c,
|
|
3215
3218
|
scrollRef: x
|
|
3216
|
-
}), /* @__PURE__ */ T(
|
|
3219
|
+
}), /* @__PURE__ */ T(Pn, {
|
|
3217
3220
|
attachment: ee,
|
|
3218
3221
|
isMobile: t,
|
|
3219
3222
|
previewImageSize: te,
|
|
@@ -3245,7 +3248,7 @@ function Gn(e) {
|
|
|
3245
3248
|
//#endregion
|
|
3246
3249
|
//#region src/components/chat/ConnectedComposer.tsx
|
|
3247
3250
|
function Kn({ composerMaxHeight: e, submitDraft: t, stopGeneration: n, cancelRemote: r, isMobile: i }) {
|
|
3248
|
-
let o = _((e) => e.input), s = _((e) => e.attachments), c =
|
|
3251
|
+
let o = _((e) => e.input), s = _((e) => e.attachments), c = L((e) => e.currentSessionId), l = F((e) => !!(e.getSessionActivity(c) && e.isSessionStreaming(c))), u = _((e) => e.queuedDrafts), d = K((e) => e.messages), f = P((e) => e.availableModels), p = P((e) => e.selectedModel), m = A(null), h = A(null), g = oe(() => f.find((e) => e.id === p) || null, [f, p]), v = oe(() => Vn({
|
|
3249
3252
|
messages: d,
|
|
3250
3253
|
draftInput: o,
|
|
3251
3254
|
selectedModel: g
|
|
@@ -3253,10 +3256,10 @@ function Kn({ composerMaxHeight: e, submitDraft: t, stopGeneration: n, cancelRem
|
|
|
3253
3256
|
o,
|
|
3254
3257
|
d,
|
|
3255
3258
|
g
|
|
3256
|
-
]), y =
|
|
3259
|
+
]), y = O((e, n) => {
|
|
3257
3260
|
!e && n.length === 0 || (_.getState().setInput(""), _.getState().setAttachments([]), t(e, n));
|
|
3258
3261
|
}, [t]);
|
|
3259
|
-
|
|
3262
|
+
k(() => {
|
|
3260
3263
|
h.current && (h.current.style.height = "auto", h.current.style.height = `${Math.min(h.current.scrollHeight, e)}px`);
|
|
3261
3264
|
}, [o, e]);
|
|
3262
3265
|
let b = (t) => {
|
|
@@ -3289,7 +3292,7 @@ function Kn({ composerMaxHeight: e, submitDraft: t, stopGeneration: n, cancelRem
|
|
|
3289
3292
|
//#endregion
|
|
3290
3293
|
//#region src/api/session.ts
|
|
3291
3294
|
async function qn(e, t) {
|
|
3292
|
-
let n = await
|
|
3295
|
+
let n = await G("ListSessions", {
|
|
3293
3296
|
AgentId: e,
|
|
3294
3297
|
Page: t?.page,
|
|
3295
3298
|
PageSize: t?.pageSize
|
|
@@ -3302,15 +3305,15 @@ async function qn(e, t) {
|
|
|
3302
3305
|
};
|
|
3303
3306
|
}
|
|
3304
3307
|
async function Jn(e, t) {
|
|
3305
|
-
return (await
|
|
3308
|
+
return (await G("CreateSession", { AgentId: e }, t)).Session;
|
|
3306
3309
|
}
|
|
3307
3310
|
async function Yn(e, t) {
|
|
3308
|
-
await
|
|
3311
|
+
await G("DeleteSession", { SessionId: e }, t);
|
|
3309
3312
|
}
|
|
3310
3313
|
//#endregion
|
|
3311
3314
|
//#region src/api/events.ts
|
|
3312
3315
|
async function Xn(e, t) {
|
|
3313
|
-
let n = await
|
|
3316
|
+
let n = await G("ListSessionEvents", {
|
|
3314
3317
|
SessionId: e,
|
|
3315
3318
|
Offset: t?.offset,
|
|
3316
3319
|
Limit: t?.limit
|
|
@@ -3325,7 +3328,7 @@ async function Xn(e, t) {
|
|
|
3325
3328
|
//#endregion
|
|
3326
3329
|
//#region src/api/run.ts
|
|
3327
3330
|
async function Zn(e, t) {
|
|
3328
|
-
return
|
|
3331
|
+
return Be("RunAgent", e, t);
|
|
3329
3332
|
}
|
|
3330
3333
|
//#endregion
|
|
3331
3334
|
//#region src/api/checkpoints.ts
|
|
@@ -3334,10 +3337,10 @@ async function Qn(e, t) {
|
|
|
3334
3337
|
AgentId: e.agentId,
|
|
3335
3338
|
SessionId: e.sessionId
|
|
3336
3339
|
};
|
|
3337
|
-
return e.runId && (n.RunId = e.runId),
|
|
3340
|
+
return e.runId && (n.RunId = e.runId), G("ListSessionCheckpoints", n, t);
|
|
3338
3341
|
}
|
|
3339
3342
|
async function $n(e, t) {
|
|
3340
|
-
return
|
|
3343
|
+
return G("PreviewCheckpointResume", {
|
|
3341
3344
|
AgentId: e.agentId,
|
|
3342
3345
|
SessionId: e.sessionId,
|
|
3343
3346
|
RunId: e.runId,
|
|
@@ -3349,7 +3352,7 @@ async function er(e, t) {
|
|
|
3349
3352
|
AgentId: e.agentId,
|
|
3350
3353
|
SessionId: e.sessionId
|
|
3351
3354
|
};
|
|
3352
|
-
return e.runId && (n.RunId = e.runId), e.checkpointId && (n.CheckpointId = e.checkpointId),
|
|
3355
|
+
return e.runId && (n.RunId = e.runId), e.checkpointId && (n.CheckpointId = e.checkpointId), G("ListToolReceipts", n, t);
|
|
3353
3356
|
}
|
|
3354
3357
|
async function tr(e, t) {
|
|
3355
3358
|
let n = {
|
|
@@ -3359,28 +3362,28 @@ async function tr(e, t) {
|
|
|
3359
3362
|
CheckpointId: e.checkpointId,
|
|
3360
3363
|
Stream: !0
|
|
3361
3364
|
};
|
|
3362
|
-
return e.resumeAttemptId && (n.ResumeAttemptId = e.resumeAttemptId), e.invocationId && (n.InvocationId = e.invocationId),
|
|
3365
|
+
return e.resumeAttemptId && (n.ResumeAttemptId = e.resumeAttemptId), e.invocationId && (n.InvocationId = e.invocationId), Be("ResumeRun", n, t);
|
|
3363
3366
|
}
|
|
3364
3367
|
//#endregion
|
|
3365
3368
|
//#region src/api/workspace.ts
|
|
3366
3369
|
async function nr(e, t, n) {
|
|
3367
|
-
return
|
|
3370
|
+
return G("ListWorkspaceFiles", {
|
|
3368
3371
|
AgentId: e,
|
|
3369
3372
|
Path: t,
|
|
3370
3373
|
Recursive: n
|
|
3371
3374
|
});
|
|
3372
3375
|
}
|
|
3373
3376
|
async function rr(e) {
|
|
3374
|
-
return
|
|
3377
|
+
return Re("AddWorkspaceFile", e);
|
|
3375
3378
|
}
|
|
3376
3379
|
async function ir(e, t) {
|
|
3377
|
-
return
|
|
3380
|
+
return G("DeleteWorkspaceFile", {
|
|
3378
3381
|
AgentId: e,
|
|
3379
3382
|
Path: t
|
|
3380
3383
|
});
|
|
3381
3384
|
}
|
|
3382
3385
|
async function ar(e, t, n) {
|
|
3383
|
-
return
|
|
3386
|
+
return ze("GetWorkspaceFileContent", {
|
|
3384
3387
|
AgentId: e,
|
|
3385
3388
|
FilePath: t
|
|
3386
3389
|
}, {
|
|
@@ -3391,7 +3394,7 @@ async function ar(e, t, n) {
|
|
|
3391
3394
|
//#endregion
|
|
3392
3395
|
//#region src/api/upload.ts
|
|
3393
3396
|
async function or(e, t) {
|
|
3394
|
-
return
|
|
3397
|
+
return Re("UploadFile", e, t);
|
|
3395
3398
|
}
|
|
3396
3399
|
//#endregion
|
|
3397
3400
|
//#region src/core/api/facade.ts
|
|
@@ -3424,26 +3427,26 @@ var sr = class {
|
|
|
3424
3427
|
return tr(e, t);
|
|
3425
3428
|
}
|
|
3426
3429
|
async subscribeRunEvents(e, t) {
|
|
3427
|
-
return
|
|
3430
|
+
return Ve("SubscribeRunEvents", {
|
|
3428
3431
|
SessionId: e.sessionId,
|
|
3429
3432
|
InvocationId: e.invocationId,
|
|
3430
3433
|
AfterSeqId: String(e.afterSeqId)
|
|
3431
3434
|
}, t);
|
|
3432
3435
|
}
|
|
3433
3436
|
async cancelRun(e, t, n) {
|
|
3434
|
-
return
|
|
3437
|
+
return G("CancelRun", {
|
|
3435
3438
|
AgentId: e,
|
|
3436
3439
|
InvocationId: t
|
|
3437
3440
|
}, n);
|
|
3438
3441
|
}
|
|
3439
3442
|
async getResponseFeedback(e, t) {
|
|
3440
|
-
return
|
|
3443
|
+
return G("GetResponseFeedback", e, t);
|
|
3441
3444
|
}
|
|
3442
3445
|
async upsertResponseFeedback(e, t) {
|
|
3443
|
-
return
|
|
3446
|
+
return G("UpsertResponseFeedback", e, t);
|
|
3444
3447
|
}
|
|
3445
3448
|
async deleteResponseFeedback(e, t) {
|
|
3446
|
-
await
|
|
3449
|
+
await G("DeleteResponseFeedback", e, t);
|
|
3447
3450
|
}
|
|
3448
3451
|
async listWorkspaceFiles(e, t, n) {
|
|
3449
3452
|
return nr(e, t, n);
|
|
@@ -3458,69 +3461,70 @@ var sr = class {
|
|
|
3458
3461
|
return ar(e, t, n);
|
|
3459
3462
|
}
|
|
3460
3463
|
async listAgentModels(e) {
|
|
3461
|
-
return
|
|
3464
|
+
return Ue(e);
|
|
3462
3465
|
}
|
|
3463
3466
|
async getAgentUiBootstrap() {
|
|
3464
|
-
return
|
|
3467
|
+
return He();
|
|
3465
3468
|
}
|
|
3466
3469
|
async uploadFile(e, t) {
|
|
3467
3470
|
return or(e, t);
|
|
3468
3471
|
}
|
|
3469
|
-
}, cr = new sr(), lr =
|
|
3472
|
+
}, cr = new sr(), lr = ie.lazy(() => import("./ArtifactsPanel-yLxSIEFw.js").then((e) => ({ default: e.ArtifactsPanel }))), ur = ie.lazy(() => import("./NativeTerminalPanel-Bzdmm_Au.js").then((e) => e.n).then((e) => ({ default: e.NativeTerminalPanel })));
|
|
3470
3473
|
function dr({ apiAdapter: e, initialSurface: r = "chat", routeShell: i } = {}) {
|
|
3471
|
-
let a = e || cr, o =
|
|
3472
|
-
isMobile:
|
|
3473
|
-
viewportHeight:
|
|
3474
|
-
}), { fetchSessions:
|
|
3474
|
+
let a = e || cr, o = N((e) => e.agentId), s = L((e) => e.currentSessionId), c = F((e) => e.isStreaming), l = _((e) => e.sidebarOpen), u = _((e) => e.mobileSidebarOpen), d = _((e) => e.mobileActionsOpen), f = N((e) => e.agentName), p = P((e) => e.selectedModel), m = P((e) => e.availableModels), h = P((e) => e.modelSource), v = P((e) => e.modelCatalogLoaded), te = P((e) => e.thinkingMode), x = N((e) => e.agentFramework), S = N((e) => e.workspaceFiles), C = N((e) => e.accessMode), w = _((e) => e.workspacePanelOpen), D = _((e) => e.workspacePanelWidth), ie = _((e) => e.workspacePanelFullscreen), oe = N((e) => e.apiFormats), j = N((e) => e.capabilities), M = ne((e) => e.visible && !!e.content), ce = A([]), le = A(null), { isMobile: I, viewportHeight: ue } = Ie(), de = ye({
|
|
3475
|
+
isMobile: I,
|
|
3476
|
+
viewportHeight: ue
|
|
3477
|
+
}), { fetchSessions: fe, loadMoreSessions: pe, loadSession: me, loadOlderSessionEvents: he, createNewSession: ge, deleteSession: _e, currentSessionIdRef: R, agentIdRef: z, runSubscriptionAbortRef: ve } = Sn({
|
|
3475
3478
|
agentId: o,
|
|
3476
3479
|
currentSessionId: s,
|
|
3477
|
-
isMobile:
|
|
3478
|
-
uiCapabilities:
|
|
3480
|
+
isMobile: I,
|
|
3481
|
+
uiCapabilities: j,
|
|
3479
3482
|
api: a,
|
|
3480
3483
|
resetCompaction: () => {},
|
|
3481
|
-
disconnectRun: () =>
|
|
3482
|
-
}),
|
|
3484
|
+
disconnectRun: () => le.current?.()
|
|
3485
|
+
}), be = O((e) => {
|
|
3483
3486
|
if (!e) return;
|
|
3484
3487
|
let t = () => {
|
|
3485
|
-
|
|
3488
|
+
fe(z.current, e), R.current === e && !F.getState().isStreaming && me(e);
|
|
3486
3489
|
};
|
|
3487
3490
|
queueMicrotask(t), window.setTimeout(t, 1800), window.setTimeout(t, 5e3);
|
|
3488
3491
|
}, [
|
|
3489
|
-
B,
|
|
3490
3492
|
z,
|
|
3491
|
-
|
|
3492
|
-
|
|
3493
|
-
|
|
3493
|
+
R,
|
|
3494
|
+
fe,
|
|
3495
|
+
me
|
|
3496
|
+
]), xe = m.find((e) => e.id === p) || null, { submitDraft: Se, stopGeneration: Ce, disconnectRun: we, resumeCheckpoint: Ee } = fn({
|
|
3494
3497
|
agentId: o,
|
|
3495
3498
|
currentSessionId: s,
|
|
3496
3499
|
agentFramework: x,
|
|
3497
|
-
apiFormats:
|
|
3500
|
+
apiFormats: oe,
|
|
3498
3501
|
selectedModel: p,
|
|
3502
|
+
selectedModelMetadata: xe,
|
|
3499
3503
|
thinkingMode: te,
|
|
3500
|
-
uiCapabilities:
|
|
3501
|
-
isMobile:
|
|
3504
|
+
uiCapabilities: j,
|
|
3505
|
+
isMobile: I,
|
|
3502
3506
|
api: a,
|
|
3503
|
-
currentSessionIdRef:
|
|
3504
|
-
agentIdRef:
|
|
3505
|
-
queuedDraftRef:
|
|
3506
|
-
onRunSettled:
|
|
3507
|
+
currentSessionIdRef: R,
|
|
3508
|
+
agentIdRef: z,
|
|
3509
|
+
queuedDraftRef: ce,
|
|
3510
|
+
onRunSettled: be
|
|
3507
3511
|
});
|
|
3508
|
-
|
|
3509
|
-
|
|
3510
|
-
}, [
|
|
3511
|
-
let
|
|
3512
|
-
let e =
|
|
3513
|
-
|
|
3512
|
+
k(() => {
|
|
3513
|
+
le.current = we;
|
|
3514
|
+
}, [we]);
|
|
3515
|
+
let De = O(() => {
|
|
3516
|
+
let e = R.current;
|
|
3517
|
+
ve.current?.abort(), F.getState().stopActivity(), F.getState().stopSessionActivity(e), Ce();
|
|
3514
3518
|
}, [
|
|
3515
|
-
|
|
3516
|
-
|
|
3517
|
-
|
|
3518
|
-
]),
|
|
3519
|
-
let e =
|
|
3519
|
+
R,
|
|
3520
|
+
ve,
|
|
3521
|
+
Ce
|
|
3522
|
+
]), Oe = O(async () => {
|
|
3523
|
+
let e = R.current, t = F.getState(), n = t.currentRunId || t.getSessionActivity(e)?.runId || "";
|
|
3520
3524
|
if (n) try {
|
|
3521
|
-
await a.cancelRun(o, n),
|
|
3525
|
+
await a.cancelRun(o, n), F.getState().stopSessionActivity(e, "取消请求已发送,后台运行会停在最近 checkpoint。");
|
|
3522
3526
|
} catch (t) {
|
|
3523
|
-
console.warn("[App] cancelRun failed:", t),
|
|
3527
|
+
console.warn("[App] cancelRun failed:", t), F.getState().updateActivity({
|
|
3524
3528
|
sessionId: e,
|
|
3525
3529
|
status: "failed",
|
|
3526
3530
|
phase: "取消请求失败",
|
|
@@ -3528,54 +3532,54 @@ function dr({ apiAdapter: e, initialSurface: r = "chat", routeShell: i } = {}) {
|
|
|
3528
3532
|
countEvent: !1
|
|
3529
3533
|
});
|
|
3530
3534
|
}
|
|
3531
|
-
|
|
3535
|
+
be(e);
|
|
3532
3536
|
}, [
|
|
3533
3537
|
a,
|
|
3534
3538
|
o,
|
|
3535
|
-
|
|
3536
|
-
|
|
3537
|
-
]), { submitResponseFeedback:
|
|
3539
|
+
R,
|
|
3540
|
+
be
|
|
3541
|
+
]), { submitResponseFeedback: ke, deleteResponseFeedback: Ae, respondToApproval: Me } = pn({
|
|
3538
3542
|
agentId: o,
|
|
3539
3543
|
currentSessionId: s,
|
|
3540
3544
|
isStreaming: c,
|
|
3541
3545
|
api: a,
|
|
3542
|
-
submitDraft:
|
|
3546
|
+
submitDraft: Se
|
|
3543
3547
|
});
|
|
3544
|
-
|
|
3545
|
-
|
|
3548
|
+
Ke({ fetchSessions: fe }), k(() => {
|
|
3549
|
+
z.current = o, R.current = s, Te(o, s);
|
|
3546
3550
|
}, [
|
|
3547
3551
|
o,
|
|
3548
3552
|
s,
|
|
3549
|
-
|
|
3550
|
-
|
|
3551
|
-
]),
|
|
3552
|
-
|
|
3553
|
-
}, [
|
|
3553
|
+
z,
|
|
3554
|
+
R
|
|
3555
|
+
]), k(() => {
|
|
3556
|
+
I ? _.getState().setWorkspacePanelFullscreen(!1) : (_.getState().setMobileSidebarOpen(!1), _.getState().setMobileActionsOpen(!1));
|
|
3557
|
+
}, [I]), k(() => {
|
|
3554
3558
|
w || _.getState().setWorkspacePanelFullscreen(!1);
|
|
3555
|
-
}, [w]),
|
|
3556
|
-
|
|
3557
|
-
}, [
|
|
3558
|
-
let
|
|
3559
|
+
}, [w]), k(() => () => {
|
|
3560
|
+
ve.current?.abort();
|
|
3561
|
+
}, [ve]);
|
|
3562
|
+
let Pe = t(j), Fe = !!j.Thinking, B = g({
|
|
3559
3563
|
workspaceFiles: S,
|
|
3560
3564
|
accessMode: C
|
|
3561
|
-
}),
|
|
3562
|
-
capability:
|
|
3565
|
+
}), V = y({ isMobile: I }), H = je({
|
|
3566
|
+
capability: j.NativeDashboard,
|
|
3563
3567
|
agentFramework: x,
|
|
3564
3568
|
accessMode: C,
|
|
3565
3569
|
origin: window.location.origin
|
|
3566
|
-
}), U = !
|
|
3567
|
-
|
|
3568
|
-
|
|
3569
|
-
}, [r,
|
|
3570
|
-
let
|
|
3570
|
+
}), U = !Pe, Le = x === "openclaw" ? "OpenClaw" : x === "hermes" ? "Hermes" : "原生运行时", W = xe?.display_name || p || "", G = !I && l && Pe, Re = A(!1), [ze, Be] = se(r === "tui"), Ve = ze && !!j.NativeTerminal?.Enabled;
|
|
3571
|
+
k(() => {
|
|
3572
|
+
Re.current || r !== "workspace" || !B || (Re.current = !0, _.getState().setWorkspacePanelOpen(!0), _.getState().setWorkspacePanelFullscreen(!0));
|
|
3573
|
+
}, [r, B]);
|
|
3574
|
+
let He = /* @__PURE__ */ E("div", {
|
|
3571
3575
|
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",
|
|
3572
3576
|
children: [
|
|
3573
|
-
/* @__PURE__ */ T(
|
|
3574
|
-
uiCapabilities:
|
|
3575
|
-
createNewSession:
|
|
3576
|
-
deleteSession:
|
|
3577
|
-
loadSession:
|
|
3578
|
-
loadMoreSessions:
|
|
3577
|
+
/* @__PURE__ */ T(Cn, {
|
|
3578
|
+
uiCapabilities: j,
|
|
3579
|
+
createNewSession: ge,
|
|
3580
|
+
deleteSession: _e,
|
|
3581
|
+
loadSession: me,
|
|
3582
|
+
loadMoreSessions: pe
|
|
3579
3583
|
}),
|
|
3580
3584
|
/* @__PURE__ */ E("main", {
|
|
3581
3585
|
className: "relative flex min-w-0 flex-1 flex-col bg-white dark:bg-slate-900",
|
|
@@ -3583,52 +3587,52 @@ function dr({ apiAdapter: e, initialSurface: r = "chat", routeShell: i } = {}) {
|
|
|
3583
3587
|
agentName: f,
|
|
3584
3588
|
currentSessionId: s,
|
|
3585
3589
|
nativeLauncherMode: U,
|
|
3586
|
-
isMobile:
|
|
3590
|
+
isMobile: I,
|
|
3587
3591
|
sidebarOpen: l,
|
|
3588
3592
|
mobileSidebarOpen: u,
|
|
3589
3593
|
onToggleSidebar: () => {
|
|
3590
|
-
|
|
3594
|
+
I ? _.getState().toggleMobileSidebar() : _.getState().toggleSidebar();
|
|
3591
3595
|
},
|
|
3592
3596
|
availableModels: m,
|
|
3593
3597
|
selectedModel: p,
|
|
3594
3598
|
onSelectModel: (e) => {
|
|
3595
|
-
|
|
3599
|
+
P.getState().setSelectedModel(e), I && _.getState().setMobileActionsOpen(!1);
|
|
3596
3600
|
},
|
|
3597
|
-
selectedModelLabel:
|
|
3601
|
+
selectedModelLabel: W,
|
|
3598
3602
|
modelCatalogLoaded: v,
|
|
3599
3603
|
modelSource: h,
|
|
3600
|
-
thinkingEnabled:
|
|
3604
|
+
thinkingEnabled: Fe,
|
|
3601
3605
|
thinkingMode: te,
|
|
3602
|
-
onSelectThinkingMode: (e) =>
|
|
3606
|
+
onSelectThinkingMode: (e) => P.getState().setThinkingMode(Ne(e)),
|
|
3603
3607
|
mobileActionsOpen: d,
|
|
3604
3608
|
onMobileActionsOpenChange: (e) => _.getState().setMobileActionsOpen(e),
|
|
3605
|
-
workspaceEnabled:
|
|
3609
|
+
workspaceEnabled: B,
|
|
3606
3610
|
onOpenWorkspace: () => _.getState().setWorkspacePanelOpen(!0),
|
|
3607
3611
|
nativeManagementLink: H,
|
|
3608
|
-
nativeTerminal:
|
|
3612
|
+
nativeTerminal: j.NativeTerminal
|
|
3609
3613
|
}), U ? /* @__PURE__ */ T(b, {
|
|
3610
|
-
productLabel:
|
|
3614
|
+
productLabel: Le,
|
|
3611
3615
|
nativeManagementLink: H,
|
|
3612
|
-
nativeTerminal:
|
|
3613
|
-
workspaceEnabled:
|
|
3616
|
+
nativeTerminal: j.NativeTerminal,
|
|
3617
|
+
workspaceEnabled: B,
|
|
3614
3618
|
onOpenWorkspace: () => _.getState().setWorkspacePanelOpen(!0)
|
|
3615
3619
|
}) : /* @__PURE__ */ E(re, { children: [/* @__PURE__ */ T(Hn, {
|
|
3616
3620
|
agentName: f,
|
|
3617
|
-
isMobile:
|
|
3618
|
-
onDeleteFeedback:
|
|
3619
|
-
onSubmitFeedback:
|
|
3620
|
-
onRespondToApproval:
|
|
3621
|
-
onStopGeneration:
|
|
3622
|
-
onCancelRemote:
|
|
3623
|
-
checkpointResumeEnabled:
|
|
3624
|
-
onResumeCheckpoint:
|
|
3625
|
-
onLoadOlderSessionEvents:
|
|
3621
|
+
isMobile: I,
|
|
3622
|
+
onDeleteFeedback: Ae,
|
|
3623
|
+
onSubmitFeedback: ke,
|
|
3624
|
+
onRespondToApproval: Me,
|
|
3625
|
+
onStopGeneration: De,
|
|
3626
|
+
onCancelRemote: j.StopRun ? Oe : void 0,
|
|
3627
|
+
checkpointResumeEnabled: j.RunLifecycle.Enabled && j.RunLifecycle.Checkpoints && j.RunLifecycle.CheckpointResume,
|
|
3628
|
+
onResumeCheckpoint: Ee,
|
|
3629
|
+
onLoadOlderSessionEvents: he
|
|
3626
3630
|
}), /* @__PURE__ */ T(Kn, {
|
|
3627
|
-
composerMaxHeight:
|
|
3628
|
-
submitDraft:
|
|
3629
|
-
stopGeneration:
|
|
3630
|
-
cancelRemote:
|
|
3631
|
-
isMobile:
|
|
3631
|
+
composerMaxHeight: de,
|
|
3632
|
+
submitDraft: Se,
|
|
3633
|
+
stopGeneration: De,
|
|
3634
|
+
cancelRemote: j.StopRun ? Oe : void 0,
|
|
3635
|
+
isMobile: I
|
|
3632
3636
|
})] })]
|
|
3633
3637
|
}),
|
|
3634
3638
|
/* @__PURE__ */ T(ee, {
|
|
@@ -3636,22 +3640,22 @@ function dr({ apiAdapter: e, initialSurface: r = "chat", routeShell: i } = {}) {
|
|
|
3636
3640
|
capability: S,
|
|
3637
3641
|
workspacePanelOpen: w,
|
|
3638
3642
|
workspacePanelWidth: D,
|
|
3639
|
-
workspacePanelFullscreen:
|
|
3640
|
-
isMobile:
|
|
3641
|
-
workspaceEnabled:
|
|
3643
|
+
workspacePanelFullscreen: ie,
|
|
3644
|
+
isMobile: I,
|
|
3645
|
+
workspaceEnabled: B,
|
|
3642
3646
|
workspaceFiles: S,
|
|
3643
|
-
workspacePanelPresentation:
|
|
3647
|
+
workspacePanelPresentation: V,
|
|
3644
3648
|
closeWorkspacePanel: () => {
|
|
3645
3649
|
_.getState().setWorkspacePanelFullscreen(!1), _.getState().setWorkspacePanelOpen(!1);
|
|
3646
3650
|
},
|
|
3647
3651
|
handleWorkspacePanelResizeStart: (e) => {
|
|
3648
|
-
if (
|
|
3652
|
+
if (ie || I) return;
|
|
3649
3653
|
e.preventDefault();
|
|
3650
|
-
let t = e.clientX, n = D, r =
|
|
3654
|
+
let t = e.clientX, n = D, r = Pe && G ? 280 : 0, i = document.body.style.cursor, a = document.body.style.userSelect;
|
|
3651
3655
|
document.body.style.cursor = "col-resize", document.body.style.userSelect = "none";
|
|
3652
3656
|
let o = (e) => {
|
|
3653
3657
|
let i = n + t - e.clientX;
|
|
3654
|
-
_.getState().setWorkspacePanelWidth(
|
|
3658
|
+
_.getState().setWorkspacePanelWidth(gt(i, window.innerWidth, r));
|
|
3655
3659
|
}, s = () => {
|
|
3656
3660
|
document.body.style.cursor = i, document.body.style.userSelect = a, window.removeEventListener("pointermove", o), window.removeEventListener("pointerup", s), window.removeEventListener("pointercancel", s);
|
|
3657
3661
|
};
|
|
@@ -3659,28 +3663,28 @@ function dr({ apiAdapter: e, initialSurface: r = "chat", routeShell: i } = {}) {
|
|
|
3659
3663
|
},
|
|
3660
3664
|
api: a
|
|
3661
3665
|
}),
|
|
3662
|
-
|
|
3666
|
+
M && /* @__PURE__ */ T(ae, {
|
|
3663
3667
|
fallback: null,
|
|
3664
3668
|
children: /* @__PURE__ */ T(lr, {})
|
|
3665
3669
|
}),
|
|
3666
|
-
|
|
3670
|
+
Ve ? /* @__PURE__ */ T(ae, {
|
|
3667
3671
|
fallback: null,
|
|
3668
3672
|
children: /* @__PURE__ */ T(ur, {
|
|
3669
|
-
capability:
|
|
3673
|
+
capability: j.NativeTerminal,
|
|
3670
3674
|
open: !0,
|
|
3671
3675
|
sessionId: s,
|
|
3672
|
-
onClose: () =>
|
|
3676
|
+
onClose: () => Be(!1)
|
|
3673
3677
|
})
|
|
3674
3678
|
}) : null
|
|
3675
3679
|
]
|
|
3676
3680
|
});
|
|
3677
|
-
return i ? /* @__PURE__ */ T(i, { children:
|
|
3681
|
+
return i ? /* @__PURE__ */ T(i, { children: He }) : He;
|
|
3678
3682
|
}
|
|
3679
3683
|
//#endregion
|
|
3680
3684
|
//#region src/core/transport/sse-transport.ts
|
|
3681
3685
|
function fr(e, t) {
|
|
3682
3686
|
if (e.eventName === "__ping__") {
|
|
3683
|
-
|
|
3687
|
+
F.getState().updateActivity({ countEvent: !1 });
|
|
3684
3688
|
return;
|
|
3685
3689
|
}
|
|
3686
3690
|
t.onEvent(e);
|
|
@@ -3688,18 +3692,18 @@ function fr(e, t) {
|
|
|
3688
3692
|
var pr = class {
|
|
3689
3693
|
protocol = "sse-post";
|
|
3690
3694
|
async connect(e, t) {
|
|
3691
|
-
let n = (await
|
|
3695
|
+
let n = (await Be(e.action, e.body || {}, { signal: e.signal })).getReader(), r = new TextDecoder(), i = "", a = !1;
|
|
3692
3696
|
return (async () => {
|
|
3693
3697
|
try {
|
|
3694
3698
|
for (; !a;) {
|
|
3695
3699
|
let { value: e, done: a } = await n.read();
|
|
3696
3700
|
if (a) break;
|
|
3697
3701
|
i += r.decode(e, { stream: !0 });
|
|
3698
|
-
let { chunks: o, remainder: s } =
|
|
3702
|
+
let { chunks: o, remainder: s } = ft(i);
|
|
3699
3703
|
i = s;
|
|
3700
3704
|
for (let e of o) {
|
|
3701
3705
|
if (!e.trim()) continue;
|
|
3702
|
-
let n =
|
|
3706
|
+
let n = dt(e);
|
|
3703
3707
|
for (let e of n) {
|
|
3704
3708
|
if (e.eventName === "__done__") {
|
|
3705
3709
|
t.onComplete();
|
|
@@ -3720,18 +3724,18 @@ var pr = class {
|
|
|
3720
3724
|
}, mr = class {
|
|
3721
3725
|
protocol = "sse-get";
|
|
3722
3726
|
async connect(e, t) {
|
|
3723
|
-
let n = (await
|
|
3727
|
+
let n = (await Ve(e.action, e.params || {}, { signal: e.signal })).getReader(), r = new TextDecoder(), i = "", a = !1;
|
|
3724
3728
|
return (async () => {
|
|
3725
3729
|
try {
|
|
3726
3730
|
for (; !a;) {
|
|
3727
3731
|
let { value: e, done: a } = await n.read();
|
|
3728
3732
|
if (a) break;
|
|
3729
3733
|
i += r.decode(e, { stream: !0 });
|
|
3730
|
-
let { chunks: o, remainder: s } =
|
|
3734
|
+
let { chunks: o, remainder: s } = ft(i);
|
|
3731
3735
|
i = s;
|
|
3732
3736
|
for (let e of o) {
|
|
3733
3737
|
if (!e.trim()) continue;
|
|
3734
|
-
let n =
|
|
3738
|
+
let n = dt(e);
|
|
3735
3739
|
for (let e of n) {
|
|
3736
3740
|
if (e.eventName === "__done__") {
|
|
3737
3741
|
t.onComplete();
|
|
@@ -3751,4 +3755,4 @@ var pr = class {
|
|
|
3751
3755
|
}
|
|
3752
3756
|
};
|
|
3753
3757
|
//#endregion
|
|
3754
|
-
export { dr as AgentWorkbench, sr as ApiFacadeImpl,
|
|
3758
|
+
export { dr as AgentWorkbench, sr as ApiFacadeImpl, St as RunEngineImpl, mr as SseGetTransport, pr as SsePostTransport, lt as createProtocol };
|