@kingsoftcloud/ksadk-web 0.3.0 → 0.3.1
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 +33 -1
- package/dist-ksadk/assets/{ArtifactsPanel-Cjnqt-8W.js → ArtifactsPanel-CakCqxEN.js} +1 -1
- package/dist-ksadk/assets/{CodeBlock-BqyqZfuB.js → CodeBlock-CynLknyO.js} +1 -1
- package/dist-ksadk/assets/{MathMessageMarkdown-BpH7jiFM.js → MathMessageMarkdown-3sQdOysS.js} +1 -1
- package/dist-ksadk/assets/{MermaidBlock-DWuxETaJ.js → MermaidBlock-NERD_ef7.js} +6 -6
- package/dist-ksadk/assets/NativeTerminalPanel-CiHWf82q.js +1 -0
- package/dist-ksadk/assets/{arc-CFKwSk_B.js → arc-DrgjcKhl.js} +1 -1
- package/dist-ksadk/assets/architecture-7EHR7CIX-CpZLRCcY.js +1 -0
- package/dist-ksadk/assets/{architectureDiagram-3BPJPVTR-Dej8jX8c.js → architectureDiagram-3BPJPVTR-BXoVRbQ6.js} +1 -1
- package/dist-ksadk/assets/{blockDiagram-GPEHLZMM-1F64jqvy.js → blockDiagram-GPEHLZMM-BnaB3Ywv.js} +1 -1
- package/dist-ksadk/assets/{c4Diagram-AAUBKEIU-9q7AUAKb.js → c4Diagram-AAUBKEIU-Dw4weZcp.js} +1 -1
- package/dist-ksadk/assets/channel-Dt3rQTFI.js +1 -0
- package/dist-ksadk/assets/{chunk-2J33WTMH-6qgwJm7Q.js → chunk-2J33WTMH-ChjpLK7j.js} +1 -1
- package/dist-ksadk/assets/{chunk-4BX2VUAB-CsWIQRhc.js → chunk-4BX2VUAB-B9drTgOW.js} +1 -1
- package/dist-ksadk/assets/{chunk-55IACEB6-BK8paA20.js → chunk-55IACEB6-CK4ROATy.js} +1 -1
- package/dist-ksadk/assets/{chunk-727SXJPM-B-JEhy7h.js → chunk-727SXJPM-B9KtTTgw.js} +1 -1
- package/dist-ksadk/assets/{chunk-AQP2D5EJ-DYBvMHAa.js → chunk-AQP2D5EJ-1O1mki3m.js} +1 -1
- package/dist-ksadk/assets/{chunk-FMBD7UC4-BGhvzDYt.js → chunk-FMBD7UC4-B_fH2YuH.js} +1 -1
- package/dist-ksadk/assets/{chunk-ND2GUHAM-D98vPd-E.js → chunk-ND2GUHAM-D6rFLaVV.js} +1 -1
- package/dist-ksadk/assets/chunk-QZHKN3VN-iXEZtKQc.js +1 -0
- package/dist-ksadk/assets/classDiagram-4FO5ZUOK-DIveV17Q.js +1 -0
- package/dist-ksadk/assets/classDiagram-v2-Q7XG4LA2-DIveV17Q.js +1 -0
- package/dist-ksadk/assets/{cose-bilkent-S5V4N54A-CX3yotHq.js → cose-bilkent-S5V4N54A-ChNs_Mdk.js} +1 -1
- package/dist-ksadk/assets/{dagre-BM42HDAG-C7TguAWo.js → dagre-BM42HDAG-D0QXg_MQ.js} +1 -1
- package/dist-ksadk/assets/{diagram-2AECGRRQ-Dd17_kws.js → diagram-2AECGRRQ-DBDDKwBQ.js} +1 -1
- package/dist-ksadk/assets/{diagram-5GNKFQAL-DVIClIil.js → diagram-5GNKFQAL-BkwDOxmO.js} +1 -1
- package/dist-ksadk/assets/{diagram-KO2AKTUF-Df_3gYQa.js → diagram-KO2AKTUF-Bv8waYvY.js} +1 -1
- package/dist-ksadk/assets/{diagram-LMA3HP47-BhLk6ZtA.js → diagram-LMA3HP47-e1VECDdu.js} +1 -1
- package/dist-ksadk/assets/{diagram-OG6HWLK6-D4GNGvuu.js → diagram-OG6HWLK6-Ds9adfRl.js} +1 -1
- package/dist-ksadk/assets/{dist-DlzCRy0S.js → dist-4N2NMVYg.js} +1 -1
- package/dist-ksadk/assets/{dist-CGcp2ex8.js → dist-B-jNR6Vn.js} +1 -1
- package/dist-ksadk/assets/{dist-DyvYLMW9.js → dist-B5J2uhNk.js} +1 -1
- package/dist-ksadk/assets/{dist-DqNnNFrw.js → dist-B5oS1zcj.js} +1 -1
- package/dist-ksadk/assets/{dist-BibcG1V9.js → dist-BB3-OwTQ.js} +1 -1
- package/dist-ksadk/assets/{dist-Cwt7koer.js → dist-BIlKoW0k.js} +1 -1
- package/dist-ksadk/assets/{dist-C2xjE7cO.js → dist-BjOdlDjj.js} +1 -1
- package/dist-ksadk/assets/{dist-DHn6nBzr.js → dist-C1sz5Eo3.js} +1 -1
- package/dist-ksadk/assets/{dist-BZ9n9AjO.js → dist-CWV4lDr1.js} +1 -1
- package/dist-ksadk/assets/{dist-C99THtIA.js → dist-CmZHzlwZ.js} +1 -1
- package/dist-ksadk/assets/{dist-ivOya1LD.js → dist-D6MpCZtz.js} +1 -1
- package/dist-ksadk/assets/{dist-CVQRZjPu.js → dist-DJN_6Y39.js} +1 -1
- package/dist-ksadk/assets/{dist-6CVKuTAe.js → dist-DQU9EWw-.js} +1 -1
- package/dist-ksadk/assets/{dist-Djgl2wVZ.js → dist-DWKByxWV.js} +1 -1
- package/dist-ksadk/assets/{dist-D82mtD2s.js → dist-Dli7qW-B.js} +1 -1
- package/dist-ksadk/assets/{dist-CgF3fj15.js → dist-DsHPdk3W.js} +1 -1
- package/dist-ksadk/assets/{dist-C7-3jInC.js → dist-X4TnqwOK.js} +1 -1
- package/dist-ksadk/assets/{dist-BUHRxvDG.js → dist-_pHPTyZ-.js} +1 -1
- package/dist-ksadk/assets/{dist-eoW6tZXA.js → dist-fhOuWds5.js} +1 -1
- package/dist-ksadk/assets/{dist-DF06ORQo.js → dist-gLnrGsoU.js} +1 -1
- package/dist-ksadk/assets/{dist-Cf23NY4L.js → dist-j6Dxmf_j.js} +1 -1
- package/dist-ksadk/assets/{dist-Bs-jQcRX.js → dist-o2OVmKvt.js} +1 -1
- package/dist-ksadk/assets/{erDiagram-TEJ5UH35-CnfRcY2M.js → erDiagram-TEJ5UH35-BPItFKH6.js} +1 -1
- package/dist-ksadk/assets/eventmodeling-FCH6USID-DYFSxbqr.js +1 -0
- package/dist-ksadk/assets/{flowDiagram-I6XJVG4X-DGaJjGNJ.js → flowDiagram-I6XJVG4X-BbYB9w5Y.js} +1 -1
- package/dist-ksadk/assets/{ganttDiagram-6RSMTGT7-DpCoB2g9.js → ganttDiagram-6RSMTGT7-TQXa0KXv.js} +1 -1
- package/dist-ksadk/assets/gitGraph-WXDBUCRP-DyNYp6BN.js +1 -0
- package/dist-ksadk/assets/{gitGraphDiagram-PVQCEYII-9IKVFBVT.js → gitGraphDiagram-PVQCEYII-bKblCnpa.js} +1 -1
- package/dist-ksadk/assets/index-R52pJJvg.js +177 -0
- package/dist-ksadk/assets/index-jJr3_955.css +2 -0
- package/dist-ksadk/assets/info-J43DQDTF-WUx7qTde.js +1 -0
- package/dist-ksadk/assets/{infoDiagram-5YYISTIA-CYIIsb8y.js → infoDiagram-5YYISTIA-BGVT7J_i.js} +1 -1
- package/dist-ksadk/assets/{ishikawaDiagram-YF4QCWOH-DLOHGvWw.js → ishikawaDiagram-YF4QCWOH-K0OOfVna.js} +1 -1
- package/dist-ksadk/assets/{journeyDiagram-JHISSGLW-BIzKeejT.js → journeyDiagram-JHISSGLW-8LeOJaZp.js} +1 -1
- package/dist-ksadk/assets/{kanban-definition-UN3LZRKU-BWHoFSw2.js → kanban-definition-UN3LZRKU-C6uCgZrW.js} +1 -1
- package/dist-ksadk/assets/{katex-DATssjp1.js → katex-CYWseY5E.js} +1 -1
- package/dist-ksadk/assets/{linear-CvMBw9cA.js → linear-hdBcYzM8.js} +1 -1
- package/dist-ksadk/assets/{mermaid-parser.core-mGAcEwcq.js → mermaid-parser.core-BWrDjSZM.js} +2 -2
- package/dist-ksadk/assets/{mindmap-definition-RKZ34NQL-CSAQxEAe.js → mindmap-definition-RKZ34NQL-Bjy_2v4_.js} +1 -1
- package/dist-ksadk/assets/packet-YPE3B663-BN13y_xl.js +1 -0
- package/dist-ksadk/assets/pie-LRSECV5Y-ftSLXhhc.js +1 -0
- package/dist-ksadk/assets/{pieDiagram-4H26LBE5-By-ra07M.js → pieDiagram-4H26LBE5-GmmqNiVH.js} +1 -1
- package/dist-ksadk/assets/{quadrantDiagram-W4KKPZXB-CxIR4JXI.js → quadrantDiagram-W4KKPZXB-BmkRbwCg.js} +1 -1
- package/dist-ksadk/assets/radar-GUYGQ44K-jaICkIeO.js +1 -0
- package/dist-ksadk/assets/{requirementDiagram-4Y6WPE33-DpW90iu3.js → requirementDiagram-4Y6WPE33-DSWFqL7c.js} +1 -1
- package/dist-ksadk/assets/{sankeyDiagram-5OEKKPKP-DpGa6EAV.js → sankeyDiagram-5OEKKPKP-l6iXmU65.js} +1 -1
- package/dist-ksadk/assets/{sequenceDiagram-3UESZ5HK-NTKNGGe5.js → sequenceDiagram-3UESZ5HK-Cq6UBeQB.js} +1 -1
- package/dist-ksadk/assets/{stateDiagram-AJRCARHV-DGpd9yFG.js → stateDiagram-AJRCARHV-qzTQpg3Y.js} +1 -1
- package/dist-ksadk/assets/stateDiagram-v2-BHNVJYJU-BYCoYGAN.js +1 -0
- package/dist-ksadk/assets/{timeline-definition-PNZ67QCA-jqoYs3jQ.js → timeline-definition-PNZ67QCA-DEz24vV0.js} +1 -1
- package/dist-ksadk/assets/treeView-BLDUP644-Cpib_vlz.js +1 -0
- package/dist-ksadk/assets/treemap-LRROVOQU-DQxfmVHK.js +1 -0
- package/dist-ksadk/assets/{vennDiagram-CIIHVFJN-l3Z7-wbP.js → vennDiagram-CIIHVFJN-CMCixki2.js} +1 -1
- package/dist-ksadk/assets/wardley-L42UT6IY-BQYHnnkU.js +1 -0
- package/dist-ksadk/assets/{wardleyDiagram-YWT4CUSO-BR54GPmr.js → wardleyDiagram-YWT4CUSO-CVzB8F9K.js} +1 -1
- package/dist-ksadk/assets/{xychartDiagram-2RQKCTM6-SkiH8GsK.js → xychartDiagram-2RQKCTM6-BFBqBLc1.js} +1 -1
- package/dist-ksadk/index.html +2 -2
- package/dist-lib/{ArtifactsPanel-BAfHt4bC.js → ArtifactsPanel-DjKIRTwo.js} +1 -1
- package/dist-lib/{CodeBlock-Cbl6cxYC.js → CodeBlock-C1D0R8wN.js} +1 -1
- package/dist-lib/{MathMessageMarkdown-DbMSeHQa.js → MathMessageMarkdown-D6LuI2LH.js} +2 -2
- package/dist-lib/{NativeTerminalPanel-BTPHqbvY.js → NativeTerminalPanel-BLhX4eDs.js} +14 -6
- package/dist-lib/{WorkspacePanelContainer-Iy0LhhgG.js → WorkspacePanelContainer-B7YlLAUJ.js} +962 -790
- package/dist-lib/components/chat/types.d.ts +8 -0
- package/dist-lib/components/chat/types.d.ts.map +1 -1
- package/dist-lib/components/native/NativeTerminalPanel.d.ts.map +1 -1
- package/dist-lib/components.js +4 -4
- package/dist-lib/core/stream/index.d.ts +2 -0
- package/dist-lib/core/stream/index.d.ts.map +1 -1
- package/dist-lib/core/stream/responses-protocol.d.ts +7 -0
- package/dist-lib/core/stream/responses-protocol.d.ts.map +1 -1
- package/dist-lib/core/stream/runtime-items.d.ts +174 -0
- package/dist-lib/core/stream/runtime-items.d.ts.map +1 -0
- package/dist-lib/runtime.js +655 -652
- package/dist-lib/stores/streaming.d.ts +8 -0
- package/dist-lib/stores/streaming.d.ts.map +1 -1
- package/dist-lib/styles.css +1 -1
- package/dist-lib/utils/feedback.d.ts +0 -1
- package/dist-lib/utils/feedback.d.ts.map +1 -1
- package/dist-lib/utils/responses-stream.d.ts +1 -0
- package/dist-lib/utils/responses-stream.d.ts.map +1 -1
- package/dist-lib/utils/session-events.d.ts +8 -0
- package/dist-lib/utils/session-events.d.ts.map +1 -1
- package/package.json +1 -1
- package/dist-ksadk/assets/NativeTerminalPanel-MDTopWMO.js +0 -1
- package/dist-ksadk/assets/architecture-7EHR7CIX-CynqOWjZ.js +0 -1
- package/dist-ksadk/assets/channel-iUGv2N24.js +0 -1
- package/dist-ksadk/assets/chunk-QZHKN3VN-YQIEXeF6.js +0 -1
- package/dist-ksadk/assets/classDiagram-4FO5ZUOK-CDAUuoXK.js +0 -1
- package/dist-ksadk/assets/classDiagram-v2-Q7XG4LA2-CDAUuoXK.js +0 -1
- package/dist-ksadk/assets/eventmodeling-FCH6USID-ChYO-ijM.js +0 -1
- package/dist-ksadk/assets/gitGraph-WXDBUCRP-BN_0Fk-j.js +0 -1
- package/dist-ksadk/assets/index-QSwCHuB8.js +0 -177
- package/dist-ksadk/assets/index-jOPmTOZH.css +0 -2
- package/dist-ksadk/assets/info-J43DQDTF-Cp6o3vId.js +0 -1
- package/dist-ksadk/assets/packet-YPE3B663-wQzct3cT.js +0 -1
- package/dist-ksadk/assets/pie-LRSECV5Y-BgTQiv-9.js +0 -1
- package/dist-ksadk/assets/radar-GUYGQ44K-BIq5fXsn.js +0 -1
- package/dist-ksadk/assets/stateDiagram-v2-BHNVJYJU-B3o579IQ.js +0 -1
- package/dist-ksadk/assets/treeView-BLDUP644-Dqi-E0EM.js +0 -1
- package/dist-ksadk/assets/treemap-LRROVOQU-ClQP9CJ9.js +0 -1
- package/dist-ksadk/assets/wardley-L42UT6IY-8XLvnNIs.js +0 -1
package/dist-lib/runtime.js
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import { a as e, i as t, t as n } from "./capabilities-CxHZ869f.js";
|
|
2
|
-
import { A as r, C as i, D as a,
|
|
3
|
-
import { t as
|
|
4
|
-
import { X as
|
|
5
|
-
import { create as
|
|
6
|
-
import { Fragment as ae, jsx as
|
|
7
|
-
import * as
|
|
8
|
-
import
|
|
9
|
-
import * as
|
|
2
|
+
import { A as r, C as i, D as a, F as o, I as s, L as c, M as l, N as u, O as d, P as f, S as p, _ as m, b as h, c as g, d as _, f as v, g as y, h as b, j as x, k as S, l as C, m as w, n as ee, o as T, r as te, s as ne, t as E, u as D, v as O, w as k, x as re, y as ie } from "./WorkspacePanelContainer-B7YlLAUJ.js";
|
|
3
|
+
import { t as A } from "./artifact-BfFsPe5A.js";
|
|
4
|
+
import { X as j } from "lucide-react";
|
|
5
|
+
import { create as M } from "zustand";
|
|
6
|
+
import { Fragment as ae, jsx as N, jsxs as P } from "react/jsx-runtime";
|
|
7
|
+
import * as oe from "react";
|
|
8
|
+
import se, { Suspense as ce, useCallback as F, useEffect as I, useMemo as L, useRef as R, useState as le } from "react";
|
|
9
|
+
import * as z from "@radix-ui/react-dialog";
|
|
10
10
|
import { HttpAgent as ue, buildResumeArray as de } from "@ag-ui/client";
|
|
11
11
|
//#region src/stores/bootstrap.ts
|
|
12
|
-
var
|
|
12
|
+
var B = M()((e) => ({
|
|
13
13
|
agentId: "default-agent",
|
|
14
14
|
agentName: "Agent",
|
|
15
15
|
agentFramework: "",
|
|
@@ -27,7 +27,7 @@ var z = j()((e) => ({
|
|
|
27
27
|
}));
|
|
28
28
|
//#endregion
|
|
29
29
|
//#region src/utils/session-pagination.js
|
|
30
|
-
function
|
|
30
|
+
function fe(e = /* @__PURE__ */ new Set(), t = []) {
|
|
31
31
|
let n = new Set(e);
|
|
32
32
|
for (let e of t) {
|
|
33
33
|
let t = Number(e);
|
|
@@ -35,17 +35,17 @@ function B(e = /* @__PURE__ */ new Set(), t = []) {
|
|
|
35
35
|
}
|
|
36
36
|
return new Set(Array.from(n).sort((e, t) => e - t));
|
|
37
37
|
}
|
|
38
|
-
function
|
|
38
|
+
function pe({ sessionsLength: e = 0, total: t = 0, page: n = 0, pageSize: r = 30, loadedPages: i = /* @__PURE__ */ new Set() } = {}) {
|
|
39
39
|
let a = Math.max(0, Number(t) || 0), o = Math.max(0, Number(e) || 0);
|
|
40
40
|
return {
|
|
41
41
|
total: a,
|
|
42
42
|
page: Math.max(0, Number(n) || 0),
|
|
43
43
|
pageSize: Math.max(1, Number(r) || 30),
|
|
44
|
-
loadedPages:
|
|
44
|
+
loadedPages: fe(i),
|
|
45
45
|
hasMore: o < a
|
|
46
46
|
};
|
|
47
47
|
}
|
|
48
|
-
function
|
|
48
|
+
function me({ total: e = 0, pageSize: t = 30, loadedPages: n = /* @__PURE__ */ new Set() } = {}) {
|
|
49
49
|
let r = Math.max(0, Number(e) || 0), i = Math.max(1, Number(t) || 30);
|
|
50
50
|
if (r <= 0) return null;
|
|
51
51
|
let a = Math.ceil(r / i);
|
|
@@ -54,7 +54,7 @@ function pe({ total: e = 0, pageSize: t = 30, loadedPages: n = /* @__PURE__ */ n
|
|
|
54
54
|
}
|
|
55
55
|
//#endregion
|
|
56
56
|
//#region src/stores/session.ts
|
|
57
|
-
function
|
|
57
|
+
function he(e) {
|
|
58
58
|
let t = e.UpdatedAt;
|
|
59
59
|
if (typeof t == "string") {
|
|
60
60
|
let e = Date.parse(t);
|
|
@@ -62,28 +62,28 @@ function me(e) {
|
|
|
62
62
|
}
|
|
63
63
|
return typeof t == "number" && Number.isFinite(t) ? t > 1e11 ? t : t * 1e3 : 0;
|
|
64
64
|
}
|
|
65
|
-
var
|
|
66
|
-
function
|
|
65
|
+
var ge = "ksadk.pinnedSessionIds";
|
|
66
|
+
function V() {
|
|
67
67
|
try {
|
|
68
|
-
let e = globalThis.localStorage?.getItem(
|
|
68
|
+
let e = globalThis.localStorage?.getItem(ge), t = e ? JSON.parse(e) : [];
|
|
69
69
|
return Array.isArray(t) ? t.filter((e) => typeof e == "string") : [];
|
|
70
70
|
} catch {
|
|
71
71
|
return [];
|
|
72
72
|
}
|
|
73
73
|
}
|
|
74
|
-
function
|
|
74
|
+
function _e(e) {
|
|
75
75
|
try {
|
|
76
|
-
globalThis.localStorage?.setItem(
|
|
76
|
+
globalThis.localStorage?.setItem(ge, JSON.stringify(e));
|
|
77
77
|
} catch {}
|
|
78
78
|
}
|
|
79
79
|
function H(e, t) {
|
|
80
80
|
let n = new Set(t);
|
|
81
81
|
return e.slice().sort((e, t) => {
|
|
82
82
|
let r = +!!n.has(e.SessionId), i = +!!n.has(t.SessionId);
|
|
83
|
-
return r === i ?
|
|
83
|
+
return r === i ? he(t) - he(e) : i - r;
|
|
84
84
|
});
|
|
85
85
|
}
|
|
86
|
-
function
|
|
86
|
+
function ve(e, t, n) {
|
|
87
87
|
let r = /* @__PURE__ */ new Map();
|
|
88
88
|
for (let t of e) t?.SessionId && r.set(t.SessionId, t);
|
|
89
89
|
for (let e of t) e?.SessionId && r.set(e.SessionId, {
|
|
@@ -92,7 +92,7 @@ function _e(e, t, n) {
|
|
|
92
92
|
});
|
|
93
93
|
return H(Array.from(r.values()), n);
|
|
94
94
|
}
|
|
95
|
-
var U =
|
|
95
|
+
var U = M()((e) => ({
|
|
96
96
|
sessions: [],
|
|
97
97
|
currentSessionId: null,
|
|
98
98
|
sessionsAgentId: "",
|
|
@@ -102,12 +102,12 @@ var U = j()((e) => ({
|
|
|
102
102
|
loadedPages: /* @__PURE__ */ new Set(),
|
|
103
103
|
hasMoreSessions: !1,
|
|
104
104
|
isLoadingSessions: !0,
|
|
105
|
-
pinnedSessionIds:
|
|
105
|
+
pinnedSessionIds: V(),
|
|
106
106
|
messageHistory: {},
|
|
107
107
|
setSessions: (t) => e((e) => ({ sessions: H(t, e.pinnedSessionIds) })),
|
|
108
108
|
setCurrentSessionId: (t) => e({ currentSessionId: t }),
|
|
109
109
|
upsertSessions: (t, n) => e((e) => {
|
|
110
|
-
let r =
|
|
110
|
+
let r = ve(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 ? fe(/* @__PURE__ */ new Set(), [i]) : fe(e.loadedPages, [i]), c = pe({
|
|
111
111
|
sessionsLength: r.length,
|
|
112
112
|
total: o,
|
|
113
113
|
page: i,
|
|
@@ -129,7 +129,7 @@ var U = j()((e) => ({
|
|
|
129
129
|
return {
|
|
130
130
|
sessions: n,
|
|
131
131
|
sessionsTotal: r,
|
|
132
|
-
hasMoreSessions:
|
|
132
|
+
hasMoreSessions: pe({
|
|
133
133
|
sessionsLength: n.length,
|
|
134
134
|
total: r,
|
|
135
135
|
page: e.sessionsPage,
|
|
@@ -153,7 +153,7 @@ var U = j()((e) => ({
|
|
|
153
153
|
let n = new Set(e.pinnedSessionIds);
|
|
154
154
|
n.has(t) ? n.delete(t) : n.add(t);
|
|
155
155
|
let r = Array.from(n);
|
|
156
|
-
return
|
|
156
|
+
return _e(r), {
|
|
157
157
|
pinnedSessionIds: r,
|
|
158
158
|
sessions: H(e.sessions, r)
|
|
159
159
|
};
|
|
@@ -194,52 +194,52 @@ var U = j()((e) => ({
|
|
|
194
194
|
let n = { ...e.messageHistory };
|
|
195
195
|
return delete n[t], { messageHistory: n };
|
|
196
196
|
})
|
|
197
|
-
})),
|
|
198
|
-
function
|
|
197
|
+
})), ye = .28;
|
|
198
|
+
function be(e, t = 768) {
|
|
199
199
|
return Number(e) <= t;
|
|
200
200
|
}
|
|
201
|
-
function
|
|
201
|
+
function xe({ isMobile: e, desktopSidebarOpen: t, mobileSidebarOpen: n }) {
|
|
202
202
|
return {
|
|
203
203
|
desktopSidebarVisible: !e && !!t,
|
|
204
204
|
mobileDrawerVisible: !!(e && n)
|
|
205
205
|
};
|
|
206
206
|
}
|
|
207
|
-
function
|
|
207
|
+
function Se({ isMobile: e, viewportHeight: t, desktopMaxHeight: n = 160 }) {
|
|
208
208
|
if (!e) return n;
|
|
209
209
|
let r = Number(t);
|
|
210
210
|
if (!Number.isFinite(r) || r <= 0) return n;
|
|
211
|
-
let i = Math.floor(r *
|
|
211
|
+
let i = Math.floor(r * ye);
|
|
212
212
|
return Math.max(120, Math.min(n, i));
|
|
213
213
|
}
|
|
214
214
|
//#endregion
|
|
215
215
|
//#region src/utils/session.js
|
|
216
|
-
var
|
|
217
|
-
function
|
|
216
|
+
var Ce = "ksadk:webui:selected-session:";
|
|
217
|
+
function we(e) {
|
|
218
218
|
return String(e || "").trim() || "default-agent";
|
|
219
219
|
}
|
|
220
|
-
function
|
|
220
|
+
function Te(e) {
|
|
221
221
|
if (e && typeof e.getItem == "function") return e;
|
|
222
222
|
try {
|
|
223
223
|
if (typeof window < "u" && window.localStorage) return window.localStorage;
|
|
224
224
|
} catch {}
|
|
225
225
|
return null;
|
|
226
226
|
}
|
|
227
|
-
function
|
|
228
|
-
return `${
|
|
227
|
+
function Ee(e) {
|
|
228
|
+
return `${Ce}${we(e)}`;
|
|
229
229
|
}
|
|
230
|
-
function
|
|
231
|
-
let n =
|
|
230
|
+
function De(e, t) {
|
|
231
|
+
let n = Te(t);
|
|
232
232
|
if (!n) return null;
|
|
233
233
|
try {
|
|
234
|
-
return String(n.getItem(
|
|
234
|
+
return String(n.getItem(Ee(e)) || "").trim() || null;
|
|
235
235
|
} catch {
|
|
236
236
|
return null;
|
|
237
237
|
}
|
|
238
238
|
}
|
|
239
|
-
function
|
|
240
|
-
let r =
|
|
239
|
+
function Oe(e, t, n) {
|
|
240
|
+
let r = Te(n);
|
|
241
241
|
if (!r) return;
|
|
242
|
-
let i =
|
|
242
|
+
let i = Ee(e), a = String(t || "").trim();
|
|
243
243
|
try {
|
|
244
244
|
if (a) {
|
|
245
245
|
r.setItem(i, a);
|
|
@@ -248,7 +248,7 @@ function De(e, t, n) {
|
|
|
248
248
|
r.removeItem(i);
|
|
249
249
|
} catch {}
|
|
250
250
|
}
|
|
251
|
-
function
|
|
251
|
+
function ke(e, t) {
|
|
252
252
|
if (!Array.isArray(e) || e.length === 0) return null;
|
|
253
253
|
let n = String(t || "").trim();
|
|
254
254
|
if (n && e.some((e) => String(e?.SessionId || "").trim() === n)) return n;
|
|
@@ -260,50 +260,50 @@ function Oe(e, t) {
|
|
|
260
260
|
}
|
|
261
261
|
//#endregion
|
|
262
262
|
//#region src/utils/native-platform.js
|
|
263
|
-
var
|
|
264
|
-
function Ae(e) {
|
|
265
|
-
return String(e || "").trim().toLowerCase();
|
|
266
|
-
}
|
|
263
|
+
var Ae = new Map([["openclaw", "OpenClaw"], ["hermes", "Hermes"]]);
|
|
267
264
|
function je(e) {
|
|
268
265
|
return String(e || "").trim().toLowerCase();
|
|
269
266
|
}
|
|
270
267
|
function Me(e) {
|
|
268
|
+
return String(e || "").trim().toLowerCase();
|
|
269
|
+
}
|
|
270
|
+
function Ne(e) {
|
|
271
271
|
try {
|
|
272
272
|
return new URL("/", e).toString();
|
|
273
273
|
} catch {
|
|
274
274
|
return "/";
|
|
275
275
|
}
|
|
276
276
|
}
|
|
277
|
-
function
|
|
278
|
-
let i =
|
|
277
|
+
function Pe({ capability: e, agentFramework: t, accessMode: n, origin: r }) {
|
|
278
|
+
let i = je(n);
|
|
279
279
|
if (i !== "owner" && i !== "private" || !e?.Enabled) return null;
|
|
280
|
-
let a =
|
|
280
|
+
let a = Ae.get(Me(t)) || "运行时";
|
|
281
281
|
return {
|
|
282
|
-
href: typeof e.Href == "string" && e.Href ? new URL(e.Href,
|
|
282
|
+
href: typeof e.Href == "string" && e.Href ? new URL(e.Href, Ne(r)).toString() : Ne(r),
|
|
283
283
|
label: typeof e.Label == "string" && e.Label ? e.Label : "管理平台",
|
|
284
284
|
title: `打开 ${a} 原生管理平台`
|
|
285
285
|
};
|
|
286
286
|
}
|
|
287
287
|
//#endregion
|
|
288
288
|
//#region src/hooks/useResponsiveViewport.ts
|
|
289
|
-
function
|
|
289
|
+
function Fe() {
|
|
290
290
|
return typeof window > "u" ? 900 : Math.round(window.visualViewport?.height || window.innerHeight || 900);
|
|
291
291
|
}
|
|
292
|
-
function
|
|
292
|
+
function W() {
|
|
293
293
|
return typeof window > "u" ? {
|
|
294
294
|
isMobile: !1,
|
|
295
295
|
viewportHeight: 900
|
|
296
296
|
} : {
|
|
297
|
-
isMobile:
|
|
298
|
-
viewportHeight:
|
|
297
|
+
isMobile: be(window.innerWidth, 768),
|
|
298
|
+
viewportHeight: Fe()
|
|
299
299
|
};
|
|
300
300
|
}
|
|
301
301
|
function Ie() {
|
|
302
|
-
let [e, t] = le(() =>
|
|
302
|
+
let [e, t] = le(() => W());
|
|
303
303
|
return I(() => {
|
|
304
304
|
if (typeof window > "u") return;
|
|
305
305
|
let e = window.matchMedia("(max-width: 768px)"), n = () => {
|
|
306
|
-
t(
|
|
306
|
+
t(W());
|
|
307
307
|
};
|
|
308
308
|
n();
|
|
309
309
|
let r = typeof e.addEventListener == "function" ? (e.addEventListener("change", n), () => e.removeEventListener("change", n)) : (e.addListener(n), () => e.removeListener(n));
|
|
@@ -314,76 +314,76 @@ function Ie() {
|
|
|
314
314
|
}
|
|
315
315
|
//#endregion
|
|
316
316
|
//#region src/api/client.ts
|
|
317
|
-
var
|
|
317
|
+
var G = class extends Error {
|
|
318
318
|
code;
|
|
319
319
|
detail;
|
|
320
320
|
constructor(e, t, n) {
|
|
321
321
|
super(t), this.name = "ApiError", this.code = e, this.detail = n;
|
|
322
322
|
}
|
|
323
|
-
},
|
|
323
|
+
}, K = class extends Error {
|
|
324
324
|
constructor(e = "请求已取消") {
|
|
325
325
|
super(e), this.name = "CancelledError";
|
|
326
326
|
}
|
|
327
|
-
},
|
|
327
|
+
}, q = "/agentengine/api/v1";
|
|
328
328
|
async function Le(e) {
|
|
329
329
|
let t;
|
|
330
330
|
try {
|
|
331
331
|
t = await e.json();
|
|
332
332
|
} catch {
|
|
333
|
-
throw new
|
|
333
|
+
throw new G(-2, "响应格式异常");
|
|
334
334
|
}
|
|
335
|
-
if (!e.ok) throw new
|
|
336
|
-
if (t?.Code !== void 0 && t.Code !== 0) throw new
|
|
335
|
+
if (!e.ok) throw new G(e.status, t?.Message || `HTTP ${e.status}`, t);
|
|
336
|
+
if (t?.Code !== void 0 && t.Code !== 0) throw new G(t.Code, t.Message || "请求失败", t);
|
|
337
337
|
return t.Data;
|
|
338
338
|
}
|
|
339
|
-
function
|
|
340
|
-
throw e instanceof DOMException && e.name === "AbortError" ? new
|
|
339
|
+
function Re(e) {
|
|
340
|
+
throw e instanceof DOMException && e.name === "AbortError" ? new K() : e;
|
|
341
341
|
}
|
|
342
342
|
async function J(e, t, n) {
|
|
343
343
|
let r;
|
|
344
344
|
try {
|
|
345
|
-
r = await fetch(`${
|
|
345
|
+
r = await fetch(`${q}/${e}`, {
|
|
346
346
|
method: "POST",
|
|
347
347
|
headers: { "Content-Type": "application/json" },
|
|
348
348
|
body: JSON.stringify(t),
|
|
349
349
|
signal: n?.signal
|
|
350
350
|
});
|
|
351
351
|
} catch (e) {
|
|
352
|
-
throw
|
|
352
|
+
throw Re(e);
|
|
353
353
|
}
|
|
354
354
|
return Le(r);
|
|
355
355
|
}
|
|
356
|
-
async function
|
|
356
|
+
async function ze(e, t, n) {
|
|
357
357
|
let r;
|
|
358
358
|
try {
|
|
359
|
-
r = await fetch(`${
|
|
359
|
+
r = await fetch(`${q}/${e}`, {
|
|
360
360
|
method: "POST",
|
|
361
361
|
body: t,
|
|
362
362
|
signal: n?.signal
|
|
363
363
|
});
|
|
364
364
|
} catch (e) {
|
|
365
|
-
throw
|
|
365
|
+
throw Re(e);
|
|
366
366
|
}
|
|
367
367
|
return Le(r);
|
|
368
368
|
}
|
|
369
|
-
async function
|
|
370
|
-
let r = new URLSearchParams(t).toString(), i = r ? `${
|
|
369
|
+
async function Be(e, t, n) {
|
|
370
|
+
let r = new URLSearchParams(t).toString(), i = r ? `${q}/${e}?${r}` : `${q}/${e}`, a;
|
|
371
371
|
try {
|
|
372
372
|
a = await fetch(i, { signal: n?.signal });
|
|
373
373
|
} catch (e) {
|
|
374
|
-
throw
|
|
374
|
+
throw Re(e);
|
|
375
375
|
}
|
|
376
|
-
if (!a.ok) throw new
|
|
376
|
+
if (!a.ok) throw new G(a.status, `资源获取失败: ${a.statusText}`);
|
|
377
377
|
try {
|
|
378
378
|
return n?.asText ? await a.text() : await a.blob();
|
|
379
379
|
} catch {
|
|
380
|
-
throw new
|
|
380
|
+
throw new G(-3, "文件读取失败");
|
|
381
381
|
}
|
|
382
382
|
}
|
|
383
|
-
async function
|
|
383
|
+
async function Ve(e, t, n) {
|
|
384
384
|
let r;
|
|
385
385
|
try {
|
|
386
|
-
r = await fetch(`${
|
|
386
|
+
r = await fetch(`${q}/${e}`, {
|
|
387
387
|
method: "POST",
|
|
388
388
|
headers: {
|
|
389
389
|
"Content-Type": "application/json",
|
|
@@ -393,46 +393,46 @@ async function Be(e, t, n) {
|
|
|
393
393
|
signal: n?.signal
|
|
394
394
|
});
|
|
395
395
|
} catch (e) {
|
|
396
|
-
throw
|
|
396
|
+
throw Re(e);
|
|
397
397
|
}
|
|
398
|
-
if (!r.ok) throw new
|
|
399
|
-
if (!r.body) throw new
|
|
398
|
+
if (!r.ok) throw new G(r.status, `流式请求失败: ${r.statusText}`);
|
|
399
|
+
if (!r.body) throw new G(-1, "无法获取响应流");
|
|
400
400
|
return r.body;
|
|
401
401
|
}
|
|
402
|
-
async function
|
|
403
|
-
let r = new URLSearchParams(t).toString(), i = r ? `${
|
|
402
|
+
async function He(e, t, n) {
|
|
403
|
+
let r = new URLSearchParams(t).toString(), i = r ? `${q}/${e}?${r}` : `${q}/${e}`, a;
|
|
404
404
|
try {
|
|
405
405
|
a = await fetch(i, {
|
|
406
406
|
headers: { Accept: "text/event-stream" },
|
|
407
407
|
signal: n?.signal
|
|
408
408
|
});
|
|
409
409
|
} catch (e) {
|
|
410
|
-
throw
|
|
410
|
+
throw Re(e);
|
|
411
411
|
}
|
|
412
|
-
if (!a.ok) throw new
|
|
413
|
-
if (!a.body) throw new
|
|
412
|
+
if (!a.ok) throw new G(a.status, `流式订阅失败: ${a.statusText}`);
|
|
413
|
+
if (!a.body) throw new G(-1, "无法获取响应流");
|
|
414
414
|
return a.body;
|
|
415
415
|
}
|
|
416
416
|
//#endregion
|
|
417
417
|
//#region src/api/bootstrap.ts
|
|
418
|
-
async function
|
|
418
|
+
async function Ue() {
|
|
419
419
|
return J("GetAgentUiBootstrap", {});
|
|
420
420
|
}
|
|
421
421
|
//#endregion
|
|
422
422
|
//#region src/api/model.ts
|
|
423
|
-
async function
|
|
423
|
+
async function We(e) {
|
|
424
424
|
return J("ListAgentModels", { AgentId: e });
|
|
425
425
|
}
|
|
426
426
|
//#endregion
|
|
427
427
|
//#region src/hooks/useBootstrap.ts
|
|
428
|
-
function
|
|
428
|
+
function Ge(e) {
|
|
429
429
|
if (!Array.isArray(e)) return ["responses", "chat_completions"];
|
|
430
430
|
let t = e.filter((e) => e === "responses" || e === "chat_completions");
|
|
431
431
|
return t.length > 0 ? t : ["responses", "chat_completions"];
|
|
432
432
|
}
|
|
433
|
-
async function
|
|
433
|
+
async function Ke(e) {
|
|
434
434
|
try {
|
|
435
|
-
let t = await
|
|
435
|
+
let t = await We(e), n = t?.Models;
|
|
436
436
|
Array.isArray(n) && s.getState().upsertModels(n);
|
|
437
437
|
let r = t;
|
|
438
438
|
r?.Current && !s.getState().selectedModel && s.getState().setSelectedModel(String(r.Current)), r?.Source && s.getState().setModelSource(String(r.Source));
|
|
@@ -442,43 +442,43 @@ async function Ge(e) {
|
|
|
442
442
|
s.getState().setModelCatalogLoaded(!0);
|
|
443
443
|
}
|
|
444
444
|
}
|
|
445
|
-
function
|
|
445
|
+
function qe(e) {
|
|
446
446
|
I(() => {
|
|
447
447
|
(async () => {
|
|
448
448
|
try {
|
|
449
|
-
let r = await
|
|
450
|
-
if (
|
|
449
|
+
let r = await Ue(), i = r, a = i?.Agent, o = String(a?.AgentId || "default-agent");
|
|
450
|
+
if (B.getState().setAgentId(o), a?.Name) {
|
|
451
451
|
let e = String(a.Name);
|
|
452
|
-
|
|
452
|
+
B.getState().setAgentName(e), document.title = e;
|
|
453
453
|
}
|
|
454
454
|
let c = String(a?.Framework || "").trim().toLowerCase();
|
|
455
|
-
|
|
455
|
+
B.getState().setAgentFramework(c);
|
|
456
456
|
let l = t(r);
|
|
457
|
-
|
|
457
|
+
B.getState().setCapabilities(l), B.getState().setApiFormats(Ge(l.HostedChat.ApiFormats)), B.getState().setAccessMode(String(i?.AccessMode || "Owner"));
|
|
458
458
|
let u = l.WorkspaceFiles && i?.WorkspaceFiles ? i.WorkspaceFiles : null;
|
|
459
|
-
|
|
459
|
+
B.getState().setWorkspaceFiles(u), u || T.getState().setWorkspacePanelOpen(!1), n(l) && e.fetchSessions(o, De(o));
|
|
460
460
|
let d = i?.Model;
|
|
461
|
-
d?.id && (s.getState().setSelectedModel(d.id), s.getState().upsertModels([d]), s.getState().setModelSource(d.source || "")),
|
|
461
|
+
d?.id && (s.getState().setSelectedModel(d.id), s.getState().upsertModels([d]), s.getState().setModelSource(d.source || "")), Ke(o);
|
|
462
462
|
} catch (n) {
|
|
463
|
-
console.error("Failed to fetch bootstrap:", n),
|
|
463
|
+
console.error("Failed to fetch bootstrap:", n), B.getState().setCapabilities(t({ Data: {
|
|
464
464
|
Agent: { Framework: "" },
|
|
465
465
|
ApiFormats: ["responses", "chat_completions"],
|
|
466
466
|
Capabilities: {}
|
|
467
|
-
} })), e.fetchSessions("default-agent",
|
|
467
|
+
} })), e.fetchSessions("default-agent", De("default-agent")), Ke("default-agent");
|
|
468
468
|
}
|
|
469
469
|
})();
|
|
470
470
|
}, []);
|
|
471
471
|
}
|
|
472
472
|
//#endregion
|
|
473
473
|
//#region src/stores/message.ts
|
|
474
|
-
var Y =
|
|
474
|
+
var Y = M()((e) => ({
|
|
475
475
|
messages: [],
|
|
476
476
|
setMessages: (t) => e({ messages: t }),
|
|
477
477
|
patchMessages: (t) => e((e) => ({ messages: t(e.messages) }))
|
|
478
478
|
}));
|
|
479
479
|
//#endregion
|
|
480
480
|
//#region src/utils/responses-stream.js
|
|
481
|
-
function
|
|
481
|
+
function Je() {
|
|
482
482
|
return {
|
|
483
483
|
toolNames: /* @__PURE__ */ new Map(),
|
|
484
484
|
toolArguments: /* @__PURE__ */ new Map(),
|
|
@@ -486,51 +486,51 @@ function qe() {
|
|
|
486
486
|
currentResponseId: ""
|
|
487
487
|
};
|
|
488
488
|
}
|
|
489
|
-
function
|
|
489
|
+
function Ye(e) {
|
|
490
490
|
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 : "";
|
|
491
491
|
}
|
|
492
|
-
function
|
|
492
|
+
function Xe(e) {
|
|
493
493
|
return e == null ? "" : typeof e == "string" ? e : typeof e == "object" ? JSON.stringify(e, null, 2) : String(e);
|
|
494
494
|
}
|
|
495
|
-
function
|
|
495
|
+
function Ze(...e) {
|
|
496
496
|
for (let t of e) {
|
|
497
|
-
let e =
|
|
497
|
+
let e = Ye(t);
|
|
498
498
|
if (e) return e;
|
|
499
499
|
}
|
|
500
500
|
return "";
|
|
501
501
|
}
|
|
502
|
-
function
|
|
502
|
+
function Qe(e, t) {
|
|
503
503
|
return String(e?.id || e?.item_id || e?.call_id || t?.item_id || t?.call_id || t?.output_index || "");
|
|
504
504
|
}
|
|
505
|
-
function
|
|
505
|
+
function $e(e, t, n, r, i) {
|
|
506
506
|
t && (e.toolNames.set(t, r), e.toolArguments.set(t, i));
|
|
507
507
|
let a = String(n?.call_id || "");
|
|
508
508
|
a && (e.callIds.set(a, t || r), e.toolNames.set(a, r), e.toolArguments.set(a, i));
|
|
509
509
|
}
|
|
510
|
-
function
|
|
510
|
+
function et(e, t, n, r = "tool") {
|
|
511
511
|
let i = String(n?.call_id || "");
|
|
512
512
|
return String(n?.name || n?.tool_name || (t ? e.toolNames.get(t) : "") || (i ? e.toolNames.get(i) : "") || r);
|
|
513
513
|
}
|
|
514
|
-
function
|
|
514
|
+
function tt(e) {
|
|
515
515
|
if (!e || typeof e != "object") return "";
|
|
516
|
-
let t =
|
|
517
|
-
return
|
|
516
|
+
let t = Ye(e.content);
|
|
517
|
+
return Ze(e.output_text, e.text, e.summary_text, e.summary, e.delta, t);
|
|
518
518
|
}
|
|
519
|
-
function
|
|
520
|
-
let t = e?.response && typeof e.response == "object" ? e.response : e, n =
|
|
519
|
+
function nt(e) {
|
|
520
|
+
let t = e?.response && typeof e.response == "object" ? e.response : e, n = Ze(t?.output_text, t?.text);
|
|
521
521
|
if (n) return n;
|
|
522
522
|
let r = Array.isArray(t?.output) ? t.output : [];
|
|
523
523
|
for (let e of r) {
|
|
524
|
-
let t =
|
|
524
|
+
let t = tt(e);
|
|
525
525
|
if (t) return t;
|
|
526
526
|
}
|
|
527
527
|
return "";
|
|
528
528
|
}
|
|
529
|
-
function
|
|
529
|
+
function rt(e) {
|
|
530
530
|
let t = e?.response && typeof e.response == "object" ? e.response : e;
|
|
531
531
|
return Array.isArray(t?.output) ? t.output : [];
|
|
532
532
|
}
|
|
533
|
-
function
|
|
533
|
+
function it(e) {
|
|
534
534
|
let t = e;
|
|
535
535
|
if (typeof t == "string") try {
|
|
536
536
|
t = JSON.parse(t);
|
|
@@ -542,11 +542,11 @@ function rt(e) {
|
|
|
542
542
|
approval_request_id: t.value.approval_request_id || t.value.id || t.id
|
|
543
543
|
} : t;
|
|
544
544
|
}
|
|
545
|
-
function
|
|
546
|
-
let r = e?.item || e?.output_item || e || {}, i = String(r.type || "").trim(), a =
|
|
545
|
+
function at({ data: e, state: t, status: n }) {
|
|
546
|
+
let r = e?.item || e?.output_item || e || {}, i = String(r.type || "").trim(), a = Qe(r, e);
|
|
547
547
|
if (i === "function_call") {
|
|
548
|
-
let e =
|
|
549
|
-
return
|
|
548
|
+
let e = et(t, a, r), i = Xe(r.arguments ?? r.args ?? r.input);
|
|
549
|
+
return $e(t, a, r, e, i), [{
|
|
550
550
|
type: "tool_upsert",
|
|
551
551
|
name: e,
|
|
552
552
|
args: i,
|
|
@@ -555,27 +555,27 @@ function it({ data: e, state: t, status: n }) {
|
|
|
555
555
|
}
|
|
556
556
|
if (i === "function_call_output") return [{
|
|
557
557
|
type: "tool_result",
|
|
558
|
-
name:
|
|
559
|
-
output:
|
|
558
|
+
name: et(t, a, r),
|
|
559
|
+
output: Xe(r.output ?? r.result ?? r.content)
|
|
560
560
|
}];
|
|
561
561
|
if (i === "mcp_approval_request") return [{
|
|
562
562
|
type: "tool_upsert",
|
|
563
563
|
name: String(r.name || "approval"),
|
|
564
|
-
args:
|
|
564
|
+
args: Xe(r.arguments ?? r.args),
|
|
565
565
|
status: "paused",
|
|
566
566
|
approvalRequestId: String(r.id || r.approval_request_id || ""),
|
|
567
567
|
previousResponseId: String(e?.response_id || t.currentResponseId || ""),
|
|
568
568
|
serverLabel: String(r.server_label || "")
|
|
569
569
|
}];
|
|
570
570
|
if (i === "reasoning" || i === "reasoning_summary" || i === "reasoning_summary_text") {
|
|
571
|
-
let e =
|
|
571
|
+
let e = tt(r);
|
|
572
572
|
return e ? [{
|
|
573
573
|
type: "reasoning_delta",
|
|
574
574
|
text: e
|
|
575
575
|
}] : [];
|
|
576
576
|
}
|
|
577
577
|
if (i === "message") {
|
|
578
|
-
let e =
|
|
578
|
+
let e = tt(r);
|
|
579
579
|
return e ? [{
|
|
580
580
|
type: n === "completed" ? "text_final" : "text_delta",
|
|
581
581
|
text: e
|
|
@@ -583,31 +583,31 @@ function it({ data: e, state: t, status: n }) {
|
|
|
583
583
|
}
|
|
584
584
|
return [];
|
|
585
585
|
}
|
|
586
|
-
function
|
|
586
|
+
function ot({ eventName: e, data: t, state: n }) {
|
|
587
587
|
let r = String(t?.type || e || "").trim(), i = String(t?.id || t?.response?.id || t?.response_id || "");
|
|
588
588
|
if (i.startsWith("resp_") && (n.currentResponseId = i), r === "response.tool_call") return [{
|
|
589
589
|
type: "tool_upsert",
|
|
590
590
|
name: String(t?.name || t?.tool_name || "tool"),
|
|
591
|
-
args:
|
|
591
|
+
args: Xe(t?.args ?? t?.arguments),
|
|
592
592
|
status: "running"
|
|
593
593
|
}];
|
|
594
594
|
if (r === "response.tool_result" || r === "response.ksadk.tool_result") return [{
|
|
595
595
|
type: "tool_result",
|
|
596
596
|
name: String(t?.name || t?.tool_name || "tool"),
|
|
597
|
-
output:
|
|
597
|
+
output: Xe(t?.output ?? t?.result)
|
|
598
598
|
}];
|
|
599
|
-
if (r === "response.output_item.added") return
|
|
599
|
+
if (r === "response.output_item.added") return at({
|
|
600
600
|
data: t,
|
|
601
601
|
state: n,
|
|
602
602
|
status: "running"
|
|
603
603
|
});
|
|
604
|
-
if (r === "response.output_item.done") return
|
|
604
|
+
if (r === "response.output_item.done") return at({
|
|
605
605
|
data: t,
|
|
606
606
|
state: n,
|
|
607
607
|
status: "completed"
|
|
608
608
|
});
|
|
609
609
|
if (r === "response.function_call_arguments.delta") {
|
|
610
|
-
let e = String(t?.item_id || t?.call_id || ""), r =
|
|
610
|
+
let e = String(t?.item_id || t?.call_id || ""), r = et(n, e, t), i = `${n.toolArguments.get(e) || ""}${String(t?.delta || "")}`;
|
|
611
611
|
return n.toolArguments.set(e, i), [{
|
|
612
612
|
type: "tool_upsert",
|
|
613
613
|
name: r,
|
|
@@ -616,7 +616,7 @@ function at({ eventName: e, data: t, state: n }) {
|
|
|
616
616
|
}];
|
|
617
617
|
}
|
|
618
618
|
if (r === "response.function_call_arguments.done") {
|
|
619
|
-
let e = String(t?.item_id || t?.call_id || ""), r =
|
|
619
|
+
let e = String(t?.item_id || t?.call_id || ""), r = et(n, e, t), i = Xe(t?.arguments ?? n.toolArguments.get(e));
|
|
620
620
|
return n.toolArguments.set(e, i), [{
|
|
621
621
|
type: "tool_upsert",
|
|
622
622
|
name: r,
|
|
@@ -625,28 +625,28 @@ function at({ eventName: e, data: t, state: n }) {
|
|
|
625
625
|
}];
|
|
626
626
|
}
|
|
627
627
|
if (r === "response.reasoning.delta" || r === "response.reasoning_text.delta" || r === "response.reasoning_summary.delta" || r === "response.reasoning_summary_text.delta") {
|
|
628
|
-
let e =
|
|
628
|
+
let e = Ze(t?.delta, t?.text);
|
|
629
629
|
return e ? [{
|
|
630
630
|
type: "reasoning_delta",
|
|
631
631
|
text: e
|
|
632
632
|
}] : [];
|
|
633
633
|
}
|
|
634
634
|
if (r === "response.output_text.delta") {
|
|
635
|
-
let e =
|
|
635
|
+
let e = Ze(t?.delta, t?.text);
|
|
636
636
|
return e ? [{
|
|
637
637
|
type: "text_delta",
|
|
638
638
|
text: e
|
|
639
639
|
}] : [];
|
|
640
640
|
}
|
|
641
641
|
if (r === "response.output_text.done") {
|
|
642
|
-
let e =
|
|
642
|
+
let e = Ze(t?.text, t?.delta);
|
|
643
643
|
return e ? [{
|
|
644
644
|
type: "text_final",
|
|
645
645
|
text: e
|
|
646
646
|
}] : [];
|
|
647
647
|
}
|
|
648
648
|
if (r === "response.content_part.delta") {
|
|
649
|
-
let e = String(t?.part?.type || t?.delta?.type || t?.content_type || ""), n =
|
|
649
|
+
let e = String(t?.part?.type || t?.delta?.type || t?.content_type || ""), n = Ze(t?.delta?.text, t?.delta, t?.text);
|
|
650
650
|
return n ? e.includes("reasoning") ? [{
|
|
651
651
|
type: "reasoning_delta",
|
|
652
652
|
text: n
|
|
@@ -656,7 +656,7 @@ function at({ eventName: e, data: t, state: n }) {
|
|
|
656
656
|
}] : [];
|
|
657
657
|
}
|
|
658
658
|
if (r === "response.completed") {
|
|
659
|
-
let e =
|
|
659
|
+
let e = nt(t), r = rt(t).flatMap((e) => at({
|
|
660
660
|
data: {
|
|
661
661
|
...t,
|
|
662
662
|
item: e
|
|
@@ -692,7 +692,7 @@ function at({ eventName: e, data: t, state: n }) {
|
|
|
692
692
|
status: "cancelled"
|
|
693
693
|
}];
|
|
694
694
|
if (r === "response.approval_request" || r === "response.ksadk.approval_request") {
|
|
695
|
-
let e =
|
|
695
|
+
let e = it(t?.interrupt_info), r = String(e.approval_request_id || e.id || ""), i = String(t?.response_id || n.currentResponseId || ""), a = e.approval_requests && typeof e.approval_requests == "object" ? e.approval_requests : e, o = Array.isArray(a.action_requests) ? a.action_requests : [];
|
|
696
696
|
return o.length > 0 ? o.map((e) => ({
|
|
697
697
|
type: "tool_upsert",
|
|
698
698
|
name: String(e?.name || "tool"),
|
|
@@ -759,13 +759,16 @@ function at({ eventName: e, data: t, state: n }) {
|
|
|
759
759
|
}
|
|
760
760
|
//#endregion
|
|
761
761
|
//#region src/core/stream/responses-protocol.ts
|
|
762
|
-
var
|
|
762
|
+
var st = class {
|
|
763
763
|
id = "responses";
|
|
764
764
|
createState() {
|
|
765
|
-
return
|
|
765
|
+
return Je();
|
|
766
|
+
}
|
|
767
|
+
parseItemOperations(e, t, n) {
|
|
768
|
+
return k(e.eventName, e.data, t, n);
|
|
766
769
|
}
|
|
767
770
|
parse(e, t) {
|
|
768
|
-
return
|
|
771
|
+
return ot({
|
|
769
772
|
eventName: e.eventName,
|
|
770
773
|
data: e.data,
|
|
771
774
|
state: t
|
|
@@ -788,23 +791,23 @@ var ot = class {
|
|
|
788
791
|
};
|
|
789
792
|
//#endregion
|
|
790
793
|
//#region src/utils/stream-parsing.ts
|
|
791
|
-
function
|
|
794
|
+
function ct(e) {
|
|
792
795
|
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("") : "";
|
|
793
796
|
}
|
|
794
|
-
function
|
|
797
|
+
function lt(e) {
|
|
795
798
|
return e && typeof e == "object" ? e : {};
|
|
796
799
|
}
|
|
797
|
-
function
|
|
798
|
-
let t =
|
|
800
|
+
function ut(e) {
|
|
801
|
+
let t = lt(e).choices, n = lt(Array.isArray(t) ? t[0] : null), r = lt(n.delta), i = lt(n.message);
|
|
799
802
|
return {
|
|
800
|
-
content:
|
|
801
|
-
reasoning:
|
|
802
|
-
finalText:
|
|
803
|
+
content: ct(r.content),
|
|
804
|
+
reasoning: ct(r.reasoning_content),
|
|
805
|
+
finalText: ct(i.content)
|
|
803
806
|
};
|
|
804
807
|
}
|
|
805
808
|
//#endregion
|
|
806
809
|
//#region src/core/stream/chat-completions-protocol.ts
|
|
807
|
-
var
|
|
810
|
+
var dt = class {
|
|
808
811
|
id = "chat_completions";
|
|
809
812
|
createState() {
|
|
810
813
|
return {};
|
|
@@ -812,7 +815,7 @@ var ut = class {
|
|
|
812
815
|
parse(e) {
|
|
813
816
|
let t = e.data;
|
|
814
817
|
if (typeof t != "object" || !t) return [];
|
|
815
|
-
let n =
|
|
818
|
+
let n = ut(t), r = [];
|
|
816
819
|
return n.reasoning && r.push({
|
|
817
820
|
type: "reasoning_delta",
|
|
818
821
|
text: n.reasoning
|
|
@@ -824,14 +827,14 @@ var ut = class {
|
|
|
824
827
|
text: n.finalText
|
|
825
828
|
}), r;
|
|
826
829
|
}
|
|
827
|
-
},
|
|
828
|
-
|
|
829
|
-
function
|
|
830
|
-
return
|
|
830
|
+
}, ft = /* @__PURE__ */ new Map();
|
|
831
|
+
ft.set("responses", new st()), ft.set("chat_completions", new dt());
|
|
832
|
+
function pt(e) {
|
|
833
|
+
return ft.get(e) || ft.get("responses");
|
|
831
834
|
}
|
|
832
835
|
//#endregion
|
|
833
836
|
//#region src/utils/stream-control.js
|
|
834
|
-
function
|
|
837
|
+
function mt(e = []) {
|
|
835
838
|
return e.some((e) => {
|
|
836
839
|
if (e?.type !== "terminal") return !1;
|
|
837
840
|
let t = String(e.status || "").toLowerCase();
|
|
@@ -840,7 +843,7 @@ function pt(e = []) {
|
|
|
840
843
|
}
|
|
841
844
|
//#endregion
|
|
842
845
|
//#region src/core/transport/sse-parser.ts
|
|
843
|
-
function
|
|
846
|
+
function ht(e) {
|
|
844
847
|
let t = [], n = e.trim();
|
|
845
848
|
if (!n) return t;
|
|
846
849
|
let r = n.split("\n");
|
|
@@ -870,7 +873,7 @@ function mt(e) {
|
|
|
870
873
|
}
|
|
871
874
|
return t;
|
|
872
875
|
}
|
|
873
|
-
function
|
|
876
|
+
function gt(e) {
|
|
874
877
|
let t = e.split("\n\n");
|
|
875
878
|
return {
|
|
876
879
|
chunks: t,
|
|
@@ -879,33 +882,33 @@ function ht(e) {
|
|
|
879
882
|
}
|
|
880
883
|
//#endregion
|
|
881
884
|
//#region src/utils/error.ts
|
|
882
|
-
function
|
|
885
|
+
function _t(e) {
|
|
883
886
|
return e instanceof Error ? e.message : String(e);
|
|
884
887
|
}
|
|
885
|
-
var
|
|
886
|
-
function
|
|
888
|
+
var vt = 1280;
|
|
889
|
+
function yt(e) {
|
|
887
890
|
let { apiFormats: t } = e;
|
|
888
891
|
return t.includes("responses") ? "responses" : t.includes("chat_completions") ? "chat_completions" : "responses";
|
|
889
892
|
}
|
|
890
|
-
function
|
|
891
|
-
let r = Math.min(
|
|
893
|
+
function bt(e, t, n) {
|
|
894
|
+
let r = Math.min(vt, Math.max(420, t - n - 360));
|
|
892
895
|
return Math.min(Math.max(e, 420), r);
|
|
893
896
|
}
|
|
894
897
|
//#endregion
|
|
895
898
|
//#region src/core/run/agui.ts
|
|
896
|
-
function
|
|
899
|
+
function xt(e) {
|
|
897
900
|
return String(e.type || "").toUpperCase();
|
|
898
901
|
}
|
|
899
|
-
function
|
|
902
|
+
function St(e, t) {
|
|
900
903
|
return String(e.messageId || t);
|
|
901
904
|
}
|
|
902
|
-
function
|
|
905
|
+
function Ct(e, t) {
|
|
903
906
|
return String(e.runId || t);
|
|
904
907
|
}
|
|
905
|
-
function
|
|
908
|
+
function wt(e) {
|
|
906
909
|
return e && typeof e == "object" && !Array.isArray(e) ? e : {};
|
|
907
910
|
}
|
|
908
|
-
function
|
|
911
|
+
function Tt(e) {
|
|
909
912
|
if (Array.isArray(e)) return _(e.filter((e) => !!(e && typeof e == "object")));
|
|
910
913
|
if (e && typeof e == "object") {
|
|
911
914
|
let t = e.a2ui_operations;
|
|
@@ -913,10 +916,10 @@ function wt(e) {
|
|
|
913
916
|
}
|
|
914
917
|
return [];
|
|
915
918
|
}
|
|
916
|
-
function
|
|
919
|
+
function Et(e) {
|
|
917
920
|
return e == null || e === "" ? "" : typeof e == "string" ? e : JSON.stringify(e, null, 2);
|
|
918
921
|
}
|
|
919
|
-
var
|
|
922
|
+
var Dt = class {
|
|
920
923
|
agent;
|
|
921
924
|
onEvent;
|
|
922
925
|
tools = /* @__PURE__ */ new Map();
|
|
@@ -988,7 +991,7 @@ var Et = class {
|
|
|
988
991
|
};
|
|
989
992
|
}
|
|
990
993
|
project(e, t) {
|
|
991
|
-
let n =
|
|
994
|
+
let n = xt(e), r = Ct(e, t), i = St(e, `${r}:assistant`), a = e, o = [];
|
|
992
995
|
if (n === "RUN_STARTED") o.push({
|
|
993
996
|
type: "activity",
|
|
994
997
|
phase: "AG-UI 运行已创建",
|
|
@@ -1050,20 +1053,20 @@ var Et = class {
|
|
|
1050
1053
|
output: String(a.content || "")
|
|
1051
1054
|
});
|
|
1052
1055
|
} else if (n === "ACTIVITY_SNAPSHOT") {
|
|
1053
|
-
let e = a.content, t =
|
|
1056
|
+
let e = a.content, t = wt(e), n = String(t.surfaceId || t.surface_id || a.messageId || "default");
|
|
1054
1057
|
o.push({
|
|
1055
1058
|
type: "agui_activity",
|
|
1056
1059
|
messageId: this.runMessageIds.get(r) || i,
|
|
1057
1060
|
surfaceId: n,
|
|
1058
|
-
messages:
|
|
1061
|
+
messages: Tt(t.content ?? e)
|
|
1059
1062
|
});
|
|
1060
1063
|
} else if (n === "RUN_FINISHED") {
|
|
1061
|
-
let e =
|
|
1064
|
+
let e = wt(a.outcome);
|
|
1062
1065
|
if (String(e.type || "").toLowerCase() === "interrupt") {
|
|
1063
1066
|
let t = Array.isArray(e.interrupts) ? e.interrupts : [];
|
|
1064
1067
|
this.pendingByRun.set(r, t);
|
|
1065
1068
|
for (let e of t) {
|
|
1066
|
-
let t =
|
|
1069
|
+
let t = wt(e.metadata), n = e.toolCallId ? this.tools.get(e.toolCallId) : void 0, i = String(t.tool_name || t.toolName || n?.name || e.reason || "人工确认"), a = Et(t.arguments ?? t.tool_args ?? t.args ?? n?.args);
|
|
1067
1070
|
o.push({
|
|
1068
1071
|
type: "approval_requested",
|
|
1069
1072
|
messageId: this.runMessageIds.get(r) || `${r}:assistant`,
|
|
@@ -1097,7 +1100,7 @@ var Et = class {
|
|
|
1097
1100
|
};
|
|
1098
1101
|
return { events: o };
|
|
1099
1102
|
}
|
|
1100
|
-
},
|
|
1103
|
+
}, Ot = new Set([
|
|
1101
1104
|
"completed",
|
|
1102
1105
|
"failed",
|
|
1103
1106
|
"error",
|
|
@@ -1107,12 +1110,12 @@ var Et = class {
|
|
|
1107
1110
|
"interrupted",
|
|
1108
1111
|
"resume_failed"
|
|
1109
1112
|
]);
|
|
1110
|
-
function
|
|
1113
|
+
function kt(e) {
|
|
1111
1114
|
if (e.EventType !== "run_status") return null;
|
|
1112
1115
|
let t = String(e.Content?.status || "").trim().toLowerCase();
|
|
1113
|
-
return
|
|
1116
|
+
return Ot.has(t) ? t : null;
|
|
1114
1117
|
}
|
|
1115
|
-
function
|
|
1118
|
+
function At(e, t) {
|
|
1116
1119
|
let n = String(t?.type || e || "").trim();
|
|
1117
1120
|
if (n === "response.created") return {
|
|
1118
1121
|
phase: "运行已创建",
|
|
@@ -1158,11 +1161,11 @@ function kt(e, t) {
|
|
|
1158
1161
|
status: "failed"
|
|
1159
1162
|
} : null;
|
|
1160
1163
|
}
|
|
1161
|
-
function
|
|
1164
|
+
function jt() {
|
|
1162
1165
|
let e = globalThis.crypto;
|
|
1163
1166
|
return e && typeof e.randomUUID == "function" ? `run_${e.randomUUID()}` : `run_${Date.now()}_${Math.random().toString(16).slice(2)}`;
|
|
1164
1167
|
}
|
|
1165
|
-
var
|
|
1168
|
+
var Mt = {
|
|
1166
1169
|
idle: [
|
|
1167
1170
|
"creating-session",
|
|
1168
1171
|
"uploading-files",
|
|
@@ -1200,7 +1203,7 @@ var jt = {
|
|
|
1200
1203
|
],
|
|
1201
1204
|
error: ["connecting", "idle"],
|
|
1202
1205
|
cancelled: ["idle"]
|
|
1203
|
-
},
|
|
1206
|
+
}, Nt = class {
|
|
1204
1207
|
_stage = "idle";
|
|
1205
1208
|
listeners = /* @__PURE__ */ new Set();
|
|
1206
1209
|
abortController = null;
|
|
@@ -1237,7 +1240,7 @@ var jt = {
|
|
|
1237
1240
|
}
|
|
1238
1241
|
getAguiClient(e) {
|
|
1239
1242
|
let t = this.config.hostedChatTransport;
|
|
1240
|
-
return t?.Protocol !== "ag-ui" || !t.Endpoint ? null : ((!this.aguiClient || this.aguiThreadSessionId !== e) && (this.aguiClient = new
|
|
1243
|
+
return t?.Protocol !== "ag-ui" || !t.Endpoint ? null : ((!this.aguiClient || this.aguiThreadSessionId !== e) && (this.aguiClient = new Dt({
|
|
1241
1244
|
url: t.Endpoint,
|
|
1242
1245
|
agentId: this.config.agentId,
|
|
1243
1246
|
threadId: e,
|
|
@@ -1245,7 +1248,7 @@ var jt = {
|
|
|
1245
1248
|
}), this.aguiThreadSessionId = e), this.aguiClient);
|
|
1246
1249
|
}
|
|
1247
1250
|
setStage(e) {
|
|
1248
|
-
let t =
|
|
1251
|
+
let t = Mt[this._stage];
|
|
1249
1252
|
t && !t.includes(e) && console.warn(`[RunEngine] Invalid transition: ${this._stage} → ${e}`), this._stage = e, this.emit({
|
|
1250
1253
|
type: "stage_changed",
|
|
1251
1254
|
stage: e
|
|
@@ -1272,10 +1275,10 @@ var jt = {
|
|
|
1272
1275
|
status: "connecting",
|
|
1273
1276
|
countEvent: !1
|
|
1274
1277
|
});
|
|
1275
|
-
let o = t ? "responses" :
|
|
1278
|
+
let o = t ? "responses" : yt({
|
|
1276
1279
|
agentFramework: this.config.agentFramework,
|
|
1277
1280
|
apiFormats: this.config.apiFormats
|
|
1278
|
-
}), s =
|
|
1281
|
+
}), s = pt(o), c = s.createState(), l = jt();
|
|
1279
1282
|
i.getState().setCurrentRunId(l), i.getState().setActiveInvocationId(l), i.getState().setLastSeqId(0);
|
|
1280
1283
|
let u = this.config.hostedChatTransport, d = !t && e.attachments.length === 0 && u?.Protocol === "ag-ui" ? this.getAguiClient(n) : null;
|
|
1281
1284
|
if (d && u) {
|
|
@@ -1375,7 +1378,7 @@ var jt = {
|
|
|
1375
1378
|
} catch (e) {
|
|
1376
1379
|
console.warn("[RunEngine] afterSeqId resume failed, fall back to error:", e);
|
|
1377
1380
|
}
|
|
1378
|
-
} else e instanceof
|
|
1381
|
+
} else e instanceof G && e.code === 429 ? (this.setStage("error"), this.emit({
|
|
1379
1382
|
type: "rate_limited",
|
|
1380
1383
|
message: e.message || "请求过于频繁,请稍后重试",
|
|
1381
1384
|
sessionId: n
|
|
@@ -1435,11 +1438,11 @@ var jt = {
|
|
|
1435
1438
|
let { value: e, done: n } = await r.read();
|
|
1436
1439
|
if (n) break;
|
|
1437
1440
|
a += i.decode(e, { stream: !0 });
|
|
1438
|
-
let { chunks: o, remainder: s } =
|
|
1441
|
+
let { chunks: o, remainder: s } = gt(a);
|
|
1439
1442
|
a = s;
|
|
1440
1443
|
for (let e of o) {
|
|
1441
1444
|
if (!e.trim()) continue;
|
|
1442
|
-
let n =
|
|
1445
|
+
let n = ht(e);
|
|
1443
1446
|
for (let e of n) e.eventName === "__done__" || e.eventName === "__ping__" || (this.emit({
|
|
1444
1447
|
type: "activity",
|
|
1445
1448
|
phase: "收到恢复事件",
|
|
@@ -1447,7 +1450,7 @@ var jt = {
|
|
|
1447
1450
|
}), this.emit({
|
|
1448
1451
|
type: "stream_event",
|
|
1449
1452
|
event: e.data
|
|
1450
|
-
}), t =
|
|
1453
|
+
}), t = kt(e.data) || t);
|
|
1451
1454
|
}
|
|
1452
1455
|
}
|
|
1453
1456
|
this.setStage("completing"), t === "cancelled" || t === "canceled" || t === "aborted" ? this.emit({
|
|
@@ -1486,7 +1489,7 @@ var jt = {
|
|
|
1486
1489
|
resumeCheckpoint(e) {
|
|
1487
1490
|
if (this._stage !== "idle") return !1;
|
|
1488
1491
|
this.abortController = new AbortController(), this.activeSessionId = e.sessionId;
|
|
1489
|
-
let t =
|
|
1492
|
+
let t = jt();
|
|
1490
1493
|
return i.getState().setCurrentRunId(t), (async () => {
|
|
1491
1494
|
try {
|
|
1492
1495
|
if (this.setStage("connecting"), this.emit({
|
|
@@ -1519,7 +1522,7 @@ var jt = {
|
|
|
1519
1522
|
checkpointId: e.checkpointId,
|
|
1520
1523
|
resumeAttemptId: e.resumeAttemptId,
|
|
1521
1524
|
invocationId: t
|
|
1522
|
-
}, { signal: this.abortController?.signal }), r =
|
|
1525
|
+
}, { signal: this.abortController?.signal }), r = pt("responses"), a = r.createState();
|
|
1523
1526
|
this.setStage("streaming"), this.emit({
|
|
1524
1527
|
type: "activity",
|
|
1525
1528
|
source: "restore",
|
|
@@ -1572,7 +1575,7 @@ var jt = {
|
|
|
1572
1575
|
let n = this.getAguiClient(t);
|
|
1573
1576
|
if (!n) return !1;
|
|
1574
1577
|
this.activeSessionId = t;
|
|
1575
|
-
let r =
|
|
1578
|
+
let r = jt();
|
|
1576
1579
|
return i.getState().setCurrentRunId(r), this.setStage("connecting"), this.emit({
|
|
1577
1580
|
type: "activity",
|
|
1578
1581
|
phase: "提交人工确认",
|
|
@@ -1649,7 +1652,7 @@ var jt = {
|
|
|
1649
1652
|
} catch (e) {
|
|
1650
1653
|
this.emit({
|
|
1651
1654
|
type: "system_message",
|
|
1652
|
-
content: `【系统提示】图片 ${t.name} 读取失败,原因: ${
|
|
1655
|
+
content: `【系统提示】图片 ${t.name} 读取失败,原因: ${_t(e)}`
|
|
1653
1656
|
});
|
|
1654
1657
|
}
|
|
1655
1658
|
continue;
|
|
@@ -1666,7 +1669,7 @@ var jt = {
|
|
|
1666
1669
|
} catch (e) {
|
|
1667
1670
|
this.emit({
|
|
1668
1671
|
type: "system_message",
|
|
1669
|
-
content: `【系统提示】文件 ${t.name} 上传失败,原因: ${
|
|
1672
|
+
content: `【系统提示】文件 ${t.name} 上传失败,原因: ${_t(e)}`
|
|
1670
1673
|
});
|
|
1671
1674
|
}
|
|
1672
1675
|
}
|
|
@@ -1678,7 +1681,7 @@ var jt = {
|
|
|
1678
1681
|
return `data:${e.type || "application/octet-stream"};base64,${btoa(n)}`;
|
|
1679
1682
|
}
|
|
1680
1683
|
buildRequestBody(e, t, n, r, i, a) {
|
|
1681
|
-
let
|
|
1684
|
+
let s = {
|
|
1682
1685
|
AgentId: this.config.agentId,
|
|
1683
1686
|
SessionId: e,
|
|
1684
1687
|
InvocationId: a,
|
|
@@ -1686,24 +1689,24 @@ var jt = {
|
|
|
1686
1689
|
ApiFormat: t,
|
|
1687
1690
|
Model: this.config.selectedModel || void 0,
|
|
1688
1691
|
ModelMetadata: this.config.selectedModelMetadata || void 0,
|
|
1689
|
-
ModelOptions:
|
|
1692
|
+
ModelOptions: f(o(this.config.thinkingMode)),
|
|
1690
1693
|
Metadata: { agentengine: { tool_approval_mode: this.config.permissionMode || "risk" } }
|
|
1691
1694
|
};
|
|
1692
|
-
if (n)
|
|
1695
|
+
if (n) s.ResponsesInput = r.responsesInput, s.PreviousResponseId = r.previousResponseId;
|
|
1693
1696
|
else {
|
|
1694
1697
|
let e = [{
|
|
1695
1698
|
type: "input_text",
|
|
1696
1699
|
text: r.text.trim()
|
|
1697
1700
|
}];
|
|
1698
|
-
e.push(...i), t === "responses" && (
|
|
1701
|
+
e.push(...i), t === "responses" && (s.ResponsesInput = [{
|
|
1699
1702
|
role: "user",
|
|
1700
1703
|
content: e
|
|
1701
|
-
}]),
|
|
1704
|
+
}]), s.Messages = [{
|
|
1702
1705
|
role: "user",
|
|
1703
1706
|
content: e
|
|
1704
1707
|
}];
|
|
1705
1708
|
}
|
|
1706
|
-
return
|
|
1709
|
+
return s;
|
|
1707
1710
|
}
|
|
1708
1711
|
async consumeStream(e, t, n, r, i) {
|
|
1709
1712
|
let a = e.getReader(), o = new TextDecoder(), s = "", c = !1, l = !1;
|
|
@@ -1716,32 +1719,32 @@ var jt = {
|
|
|
1716
1719
|
messageId: r,
|
|
1717
1720
|
invocationId: i
|
|
1718
1721
|
})), s += o.decode(e, { stream: !0 });
|
|
1719
|
-
let { chunks: d, remainder: f } =
|
|
1722
|
+
let { chunks: d, remainder: f } = gt(s);
|
|
1720
1723
|
s = f;
|
|
1721
1724
|
for (let e of d) {
|
|
1722
1725
|
if (!e.trim()) continue;
|
|
1723
1726
|
if (this.isCompactionChunk(e)) {
|
|
1724
|
-
let t =
|
|
1727
|
+
let t = ht(e);
|
|
1725
1728
|
for (let e of t) e.eventName.startsWith("response.compaction") && this.upsertCompactionMessage({
|
|
1726
1729
|
...e.data,
|
|
1727
1730
|
phase: e.eventName.split(".").pop()
|
|
1728
1731
|
});
|
|
1729
1732
|
continue;
|
|
1730
1733
|
}
|
|
1731
|
-
let i =
|
|
1734
|
+
let i = ht(e), o = !1, s;
|
|
1732
1735
|
for (let e of i) {
|
|
1733
1736
|
if (e.eventName === "__done__") {
|
|
1734
1737
|
o = !0;
|
|
1735
1738
|
continue;
|
|
1736
1739
|
}
|
|
1737
|
-
let i =
|
|
1740
|
+
let i = At(e.eventName, e.data);
|
|
1738
1741
|
i && this.emit({
|
|
1739
1742
|
type: "activity",
|
|
1740
1743
|
...i
|
|
1741
1744
|
});
|
|
1742
1745
|
let a = t.parse(e, n);
|
|
1743
1746
|
for (let e of a) this.dispatchAction(e, r);
|
|
1744
|
-
if (
|
|
1747
|
+
if (mt(a)) {
|
|
1745
1748
|
o = !0;
|
|
1746
1749
|
let e = a.find((e) => e.type === "terminal");
|
|
1747
1750
|
s = e && "status" in e ? String(e.status || "") : void 0;
|
|
@@ -1881,17 +1884,17 @@ var jt = {
|
|
|
1881
1884
|
phase: "failed"
|
|
1882
1885
|
}), null);
|
|
1883
1886
|
}
|
|
1884
|
-
},
|
|
1887
|
+
}, Pt = 0;
|
|
1885
1888
|
function X(e) {
|
|
1886
|
-
return
|
|
1889
|
+
return Pt += 1, `${e}-${Pt}`;
|
|
1887
1890
|
}
|
|
1888
|
-
function
|
|
1891
|
+
function Ft(e) {
|
|
1889
1892
|
return e.map((e) => e.type === "thinking" && e.status === "streaming" ? {
|
|
1890
1893
|
...e,
|
|
1891
1894
|
status: "done"
|
|
1892
1895
|
} : e);
|
|
1893
1896
|
}
|
|
1894
|
-
function
|
|
1897
|
+
function It(e, t) {
|
|
1895
1898
|
let n = [...e ?? []], r = n[n.length - 1];
|
|
1896
1899
|
return r?.type === "thinking" && r.status === "streaming" ? (n[n.length - 1] = {
|
|
1897
1900
|
...r,
|
|
@@ -1903,8 +1906,8 @@ function Ft(e, t) {
|
|
|
1903
1906
|
status: "streaming"
|
|
1904
1907
|
}];
|
|
1905
1908
|
}
|
|
1906
|
-
function
|
|
1907
|
-
let n = [...
|
|
1909
|
+
function Lt(e, t) {
|
|
1910
|
+
let n = [...Ft(e ?? [])], r = n[n.length - 1];
|
|
1908
1911
|
return r?.type === "text" && r.status === "streaming" ? (n[n.length - 1] = {
|
|
1909
1912
|
...r,
|
|
1910
1913
|
content: r.content + t
|
|
@@ -1915,8 +1918,8 @@ function It(e, t) {
|
|
|
1915
1918
|
status: "streaming"
|
|
1916
1919
|
}];
|
|
1917
1920
|
}
|
|
1918
|
-
function
|
|
1919
|
-
let n =
|
|
1921
|
+
function Rt(e, t) {
|
|
1922
|
+
let n = Ft(e ?? []);
|
|
1920
1923
|
if (n.filter((e) => e.type === "text").map((e) => e.content).join("") === t) return n.map((e) => e.type === "text" && e.status === "streaming" ? {
|
|
1921
1924
|
...e,
|
|
1922
1925
|
status: "done"
|
|
@@ -1933,8 +1936,8 @@ function Lt(e, t) {
|
|
|
1933
1936
|
status: "done"
|
|
1934
1937
|
}];
|
|
1935
1938
|
}
|
|
1936
|
-
function
|
|
1937
|
-
let r = [...
|
|
1939
|
+
function zt(e, t, n) {
|
|
1940
|
+
let r = [...Ft(e ?? [])], i = r.findIndex((e) => e.type === "tool" && e.toolName === t);
|
|
1938
1941
|
if (i >= 0 && r[i].type === "tool") {
|
|
1939
1942
|
let e = r[i], t = e.status === "error" || e.status === "completed", a = n.output !== void 0, o = n.extra && (n.extra.approvalRequestId || n.extra.approvalStatus);
|
|
1940
1943
|
if (t && !a && !o) return r;
|
|
@@ -1955,10 +1958,10 @@ function Rt(e, t, n) {
|
|
|
1955
1958
|
extra: n.extra
|
|
1956
1959
|
}];
|
|
1957
1960
|
}
|
|
1958
|
-
function zt(e) {
|
|
1959
|
-
return Pt(e ?? []);
|
|
1960
|
-
}
|
|
1961
1961
|
function Bt(e) {
|
|
1962
|
+
return Ft(e ?? []);
|
|
1963
|
+
}
|
|
1964
|
+
function Vt(e) {
|
|
1962
1965
|
let t = [];
|
|
1963
1966
|
if (e.reasoning && e.reasoning.trim() && t.push({
|
|
1964
1967
|
id: X("thinking"),
|
|
@@ -1982,58 +1985,58 @@ function Bt(e) {
|
|
|
1982
1985
|
}
|
|
1983
1986
|
//#endregion
|
|
1984
1987
|
//#region src/stores/checkpoint.ts
|
|
1985
|
-
var
|
|
1988
|
+
var Ht = [], Ut = [];
|
|
1986
1989
|
function Z(e) {
|
|
1987
1990
|
return typeof e == "string" ? e.trim() : "";
|
|
1988
1991
|
}
|
|
1989
|
-
function
|
|
1992
|
+
function Wt(e) {
|
|
1990
1993
|
let t = typeof e == "number" ? e : Number(e);
|
|
1991
1994
|
return Number.isFinite(t) ? t : void 0;
|
|
1992
1995
|
}
|
|
1993
|
-
function Wt(e) {
|
|
1994
|
-
return typeof e == "string" || typeof e == "number" ? e : void 0;
|
|
1995
|
-
}
|
|
1996
1996
|
function Gt(e) {
|
|
1997
|
-
return e
|
|
1997
|
+
return typeof e == "string" || typeof e == "number" ? e : void 0;
|
|
1998
1998
|
}
|
|
1999
1999
|
function Kt(e) {
|
|
2000
|
-
return e
|
|
2000
|
+
return e && typeof e == "object" && !Array.isArray(e) ? e : void 0;
|
|
2001
2001
|
}
|
|
2002
2002
|
function qt(e) {
|
|
2003
2003
|
return e !== null;
|
|
2004
2004
|
}
|
|
2005
2005
|
function Jt(e) {
|
|
2006
|
+
return e !== null;
|
|
2007
|
+
}
|
|
2008
|
+
function Yt(e) {
|
|
2006
2009
|
return [...e].sort((e, t) => {
|
|
2007
2010
|
let n = t.seqId ?? -1, r = e.seqId ?? -1;
|
|
2008
2011
|
return n === r ? (Date.parse(String(t.timestamp || "")) || 0) - (Date.parse(String(e.timestamp || "")) || 0) : n - r;
|
|
2009
2012
|
});
|
|
2010
2013
|
}
|
|
2011
|
-
function
|
|
2014
|
+
function Xt(e) {
|
|
2012
2015
|
return [...e].sort((e, t) => {
|
|
2013
2016
|
let n = t.seqId ?? -1, r = e.seqId ?? -1;
|
|
2014
2017
|
return n === r ? (Date.parse(String(t.timestamp || "")) || 0) - (Date.parse(String(e.timestamp || "")) || 0) : n - r;
|
|
2015
2018
|
});
|
|
2016
2019
|
}
|
|
2017
|
-
function Xt(e) {
|
|
2018
|
-
return Jt(e)[0]?.runId || "";
|
|
2019
|
-
}
|
|
2020
2020
|
function Zt(e) {
|
|
2021
|
-
|
|
2022
|
-
return t ? e.filter((e) => e.runId === t) : [];
|
|
2021
|
+
return Yt(e)[0]?.runId || "";
|
|
2023
2022
|
}
|
|
2024
2023
|
function Qt(e) {
|
|
2025
|
-
let t =
|
|
2024
|
+
let t = Zt(e);
|
|
2025
|
+
return t ? e.filter((e) => e.runId === t) : [];
|
|
2026
|
+
}
|
|
2027
|
+
function $t(e) {
|
|
2028
|
+
let t = Kt(e);
|
|
2026
2029
|
if (!t) return null;
|
|
2027
|
-
let n =
|
|
2030
|
+
let n = Kt(t.Metadata ?? t.metadata), r = Kt(t.Content ?? t.content), i = Z(t.CheckpointId ?? t.checkpointId ?? t.checkpoint_id ?? n?.checkpoint_id ?? n?.checkpointId ?? r?.checkpoint_id ?? r?.checkpointId), a = Z(t.RunId ?? t.runId ?? t.run_id ?? n?.run_id ?? n?.runId ?? r?.run_id ?? r?.runId);
|
|
2028
2031
|
return !i || !a ? null : {
|
|
2029
2032
|
checkpointId: i,
|
|
2030
2033
|
runId: a,
|
|
2031
2034
|
sessionId: Z(t.SessionId ?? t.sessionId ?? t.session_id) || void 0,
|
|
2032
2035
|
invocationId: Z(t.InvocationId ?? t.invocationId ?? t.invocation_id) || void 0,
|
|
2033
|
-
seqId:
|
|
2034
|
-
timestamp:
|
|
2036
|
+
seqId: Wt(t.SeqId ?? t.seqId ?? t.seq_id),
|
|
2037
|
+
timestamp: Gt(t.Timestamp ?? t.timestamp ?? t.CreatedAt ?? t.createdAt),
|
|
2035
2038
|
framework: Z(t.Framework ?? t.framework ?? n?.framework ?? r?.framework) || void 0,
|
|
2036
|
-
frameworkRef:
|
|
2039
|
+
frameworkRef: Kt(t.FrameworkRef ?? t.frameworkRef ?? t.framework_ref ?? n?.framework_ref ?? n?.frameworkRef),
|
|
2037
2040
|
phase: Z(t.Phase ?? t.phase ?? n?.phase ?? r?.phase) || void 0,
|
|
2038
2041
|
stage: Z(t.Stage ?? t.stage ?? n?.stage ?? n?.title) || void 0,
|
|
2039
2042
|
summary: Z(t.Summary ?? t.summary ?? n?.summary ?? n?.description) || void 0,
|
|
@@ -2042,8 +2045,8 @@ function Qt(e) {
|
|
|
2042
2045
|
metadata: n
|
|
2043
2046
|
};
|
|
2044
2047
|
}
|
|
2045
|
-
function
|
|
2046
|
-
let t =
|
|
2048
|
+
function en(e) {
|
|
2049
|
+
let t = Kt(e);
|
|
2047
2050
|
if (!t) return null;
|
|
2048
2051
|
let n = Z(t.ReceiptId ?? t.receiptId ?? t.receipt_id), r = Z(t.IdempotencyKey ?? t.idempotencyKey ?? t.idempotency_key), i = Z(t.ToolName ?? t.toolName ?? t.tool_name);
|
|
2049
2052
|
return !n || !r || !i ? null : {
|
|
@@ -2055,25 +2058,25 @@ function $t(e) {
|
|
|
2055
2058
|
checkpointId: Z(t.CheckpointId ?? t.checkpointId ?? t.checkpoint_id) || void 0,
|
|
2056
2059
|
sessionId: Z(t.SessionId ?? t.sessionId ?? t.session_id) || void 0,
|
|
2057
2060
|
invocationId: Z(t.InvocationId ?? t.invocationId ?? t.invocation_id) || void 0,
|
|
2058
|
-
seqId:
|
|
2059
|
-
timestamp:
|
|
2061
|
+
seqId: Wt(t.SeqId ?? t.seqId ?? t.seq_id),
|
|
2062
|
+
timestamp: Gt(t.Timestamp ?? t.timestamp ?? t.CreatedAt ?? t.createdAt),
|
|
2060
2063
|
status: Z(t.Status ?? t.status) || void 0,
|
|
2061
2064
|
replayed: !!(t.Replayed ?? t.replayed),
|
|
2062
|
-
metadata:
|
|
2065
|
+
metadata: Kt(t.Metadata ?? t.metadata)
|
|
2063
2066
|
};
|
|
2064
2067
|
}
|
|
2065
|
-
var Q =
|
|
2068
|
+
var Q = M()((e, t) => ({
|
|
2066
2069
|
checkpointsBySessionId: {},
|
|
2067
2070
|
toolReceiptsBySessionId: {},
|
|
2068
2071
|
setSessionCheckpoints: (t, n) => e((e) => ({ checkpointsBySessionId: {
|
|
2069
2072
|
...e.checkpointsBySessionId,
|
|
2070
|
-
[t]:
|
|
2073
|
+
[t]: Yt(Qt(n.map($t).filter(qt).map((e) => ({
|
|
2071
2074
|
...e,
|
|
2072
2075
|
sessionId: e.sessionId || t
|
|
2073
2076
|
}))))
|
|
2074
2077
|
} })),
|
|
2075
2078
|
upsertSessionCheckpoint: (t, n) => {
|
|
2076
|
-
let r =
|
|
2079
|
+
let r = $t(n);
|
|
2077
2080
|
r && e((e) => {
|
|
2078
2081
|
let n = e.checkpointsBySessionId[t] || [];
|
|
2079
2082
|
r.sessionId = r.sessionId || t;
|
|
@@ -2082,27 +2085,27 @@ var Q = j()((e, t) => ({
|
|
|
2082
2085
|
...i.get(r.checkpointId),
|
|
2083
2086
|
...r
|
|
2084
2087
|
});
|
|
2085
|
-
let a =
|
|
2088
|
+
let a = Qt([...i.values()]);
|
|
2086
2089
|
return { checkpointsBySessionId: {
|
|
2087
2090
|
...e.checkpointsBySessionId,
|
|
2088
|
-
[t]:
|
|
2091
|
+
[t]: Yt(a)
|
|
2089
2092
|
} };
|
|
2090
2093
|
});
|
|
2091
2094
|
},
|
|
2092
2095
|
getSessionCheckpoints: (e) => {
|
|
2093
2096
|
let n = String(e || "");
|
|
2094
|
-
return n && t().checkpointsBySessionId[n] ||
|
|
2097
|
+
return n && t().checkpointsBySessionId[n] || Ht;
|
|
2095
2098
|
},
|
|
2096
2099
|
setSessionToolReceipts: (t, n) => e((e) => ({ toolReceiptsBySessionId: {
|
|
2097
2100
|
...e.toolReceiptsBySessionId,
|
|
2098
|
-
[t]:
|
|
2101
|
+
[t]: Xt(n.map(en).filter(Jt).map((e) => ({
|
|
2099
2102
|
...e,
|
|
2100
2103
|
sessionId: e.sessionId || t
|
|
2101
2104
|
})))
|
|
2102
2105
|
} })),
|
|
2103
2106
|
getSessionToolReceipts: (e) => {
|
|
2104
2107
|
let n = String(e || "");
|
|
2105
|
-
return n && t().toolReceiptsBySessionId[n] ||
|
|
2108
|
+
return n && t().toolReceiptsBySessionId[n] || Ut;
|
|
2106
2109
|
},
|
|
2107
2110
|
clearSessionCheckpoints: (t) => e((e) => {
|
|
2108
2111
|
let n = String(t || "");
|
|
@@ -2116,7 +2119,7 @@ var Q = j()((e, t) => ({
|
|
|
2116
2119
|
toolReceiptsBySessionId: i
|
|
2117
2120
|
};
|
|
2118
2121
|
})
|
|
2119
|
-
})),
|
|
2122
|
+
})), tn = new Set([
|
|
2120
2123
|
"completed",
|
|
2121
2124
|
"failed",
|
|
2122
2125
|
"error",
|
|
@@ -2125,12 +2128,12 @@ var Q = j()((e, t) => ({
|
|
|
2125
2128
|
"aborted",
|
|
2126
2129
|
"interrupted",
|
|
2127
2130
|
"resume_failed"
|
|
2128
|
-
]),
|
|
2131
|
+
]), nn = new Set([
|
|
2129
2132
|
"tool_call",
|
|
2130
2133
|
"tool_result",
|
|
2131
2134
|
"stage_tool_call",
|
|
2132
2135
|
"stage_tool_result"
|
|
2133
|
-
]),
|
|
2136
|
+
]), rn = {
|
|
2134
2137
|
"run.started": "in_progress",
|
|
2135
2138
|
"run.progress": "in_progress",
|
|
2136
2139
|
"run.interrupted": "interrupted",
|
|
@@ -2138,21 +2141,21 @@ var Q = j()((e, t) => ({
|
|
|
2138
2141
|
"run.failed": "failed",
|
|
2139
2142
|
"run.canceled": "cancelled"
|
|
2140
2143
|
};
|
|
2141
|
-
function
|
|
2144
|
+
function an(e) {
|
|
2142
2145
|
let t = e?.Content?.payload;
|
|
2143
2146
|
return t && typeof t == "object" ? t : {};
|
|
2144
2147
|
}
|
|
2145
|
-
function
|
|
2148
|
+
function on(e, t) {
|
|
2146
2149
|
let n = String(e || ""), r = String(t || "");
|
|
2147
2150
|
return n ? !r || n.endsWith(r) ? n : r.startsWith(n) ? r : `${n}${r}` : r;
|
|
2148
2151
|
}
|
|
2149
|
-
function
|
|
2150
|
-
let t = String(e?.EventType || ""), n =
|
|
2151
|
-
return
|
|
2152
|
+
function sn(e) {
|
|
2153
|
+
let t = String(e?.EventType || ""), n = an(e);
|
|
2154
|
+
return rn[t] ? {
|
|
2152
2155
|
...e,
|
|
2153
2156
|
EventType: "run_status",
|
|
2154
2157
|
Content: {
|
|
2155
|
-
status: String(n.status ||
|
|
2158
|
+
status: String(n.status || rn[t]),
|
|
2156
2159
|
...n.detail ? { detail: String(n.detail) } : {}
|
|
2157
2160
|
}
|
|
2158
2161
|
} : t === "reasoning.delta" || t === "reasoning.completed" ? {
|
|
@@ -2190,7 +2193,7 @@ function on(e) {
|
|
|
2190
2193
|
}
|
|
2191
2194
|
} : e;
|
|
2192
2195
|
}
|
|
2193
|
-
function
|
|
2196
|
+
function cn(e) {
|
|
2194
2197
|
let t = [], n = /* @__PURE__ */ new Map();
|
|
2195
2198
|
for (let r of Array.isArray(e) ? e : []) {
|
|
2196
2199
|
let e = String(r?.EventType || "");
|
|
@@ -2200,11 +2203,11 @@ function sn(e) {
|
|
|
2200
2203
|
let t = n.get(e);
|
|
2201
2204
|
n.set(e, {
|
|
2202
2205
|
event: r,
|
|
2203
|
-
text:
|
|
2206
|
+
text: on(t?.text, an(r).text)
|
|
2204
2207
|
});
|
|
2205
2208
|
continue;
|
|
2206
2209
|
}
|
|
2207
|
-
t.push(
|
|
2210
|
+
t.push(sn(r));
|
|
2208
2211
|
}
|
|
2209
2212
|
for (let { event: e, text: r } of n.values()) t.push({
|
|
2210
2213
|
...e,
|
|
@@ -2218,27 +2221,27 @@ function sn(e) {
|
|
|
2218
2221
|
stream_snapshot: !0
|
|
2219
2222
|
}
|
|
2220
2223
|
});
|
|
2221
|
-
return t.sort((e, t) =>
|
|
2222
|
-
}
|
|
2223
|
-
function cn(e) {
|
|
2224
|
-
let t = String(e?.EventType || "").trim(), n = rn(e);
|
|
2225
|
-
return String(e?.Content?.status || n.status || nn[t] || "").trim().toLowerCase();
|
|
2224
|
+
return t.sort((e, t) => xn(e) - xn(t));
|
|
2226
2225
|
}
|
|
2227
2226
|
function ln(e) {
|
|
2228
|
-
|
|
2227
|
+
let t = String(e?.EventType || "").trim(), n = an(e);
|
|
2228
|
+
return String(e?.Content?.status || n.status || rn[t] || "").trim().toLowerCase();
|
|
2229
2229
|
}
|
|
2230
2230
|
function un(e) {
|
|
2231
|
+
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("") : "";
|
|
2232
|
+
}
|
|
2233
|
+
function dn(e) {
|
|
2231
2234
|
let t = String(e || "").trim();
|
|
2232
2235
|
return t ? `/agentengine/api/v1/AttachmentContent?FileUri=${encodeURIComponent(t)}` : "";
|
|
2233
2236
|
}
|
|
2234
|
-
function
|
|
2237
|
+
function fn(e) {
|
|
2235
2238
|
return String(e || "").match(/^data:([^;,]+)/)?.[1] || "";
|
|
2236
2239
|
}
|
|
2237
|
-
function
|
|
2240
|
+
function pn(e, t) {
|
|
2238
2241
|
let n = String(e || "").trim(), r = String(t || "").trim();
|
|
2239
2242
|
return !n || !r || n === r ? !0 : n.endsWith("/*") ? r.startsWith(n.slice(0, -1)) : r.endsWith("/*") ? n.startsWith(r.slice(0, -1)) : !1;
|
|
2240
2243
|
}
|
|
2241
|
-
function
|
|
2244
|
+
function mn(e) {
|
|
2242
2245
|
let t = e?.Content?.parts || [], n = [], r = /* @__PURE__ */ new Map(), i = (e) => {
|
|
2243
2246
|
let t = `${e.fileUri || e.url || e.name}|${e.type}`;
|
|
2244
2247
|
r.has(t) || r.set(t, e);
|
|
@@ -2268,7 +2271,7 @@ function pn(e) {
|
|
|
2268
2271
|
let t = e.file_url.trim();
|
|
2269
2272
|
i({
|
|
2270
2273
|
name: e.filename || e.displayName || e.display_name || "attachment",
|
|
2271
|
-
url:
|
|
2274
|
+
url: dn(t),
|
|
2272
2275
|
type: e.mime_type || e.mimeType || "application/octet-stream",
|
|
2273
2276
|
fileUri: t
|
|
2274
2277
|
});
|
|
@@ -2279,7 +2282,7 @@ function pn(e) {
|
|
|
2279
2282
|
t && i({
|
|
2280
2283
|
name: e.filename || e.displayName || e.display_name || "uploaded_image",
|
|
2281
2284
|
url: t,
|
|
2282
|
-
type: e.mime_type || e.mimeType ||
|
|
2285
|
+
type: e.mime_type || e.mimeType || fn(t) || "image/*"
|
|
2283
2286
|
});
|
|
2284
2287
|
continue;
|
|
2285
2288
|
}
|
|
@@ -2287,7 +2290,7 @@ function pn(e) {
|
|
|
2287
2290
|
let t = String(e.fileData.fileUri || "").trim();
|
|
2288
2291
|
i({
|
|
2289
2292
|
name: e.fileData.displayName || "attachment",
|
|
2290
|
-
url:
|
|
2293
|
+
url: dn(t),
|
|
2291
2294
|
type: e.fileData.mimeType || "application/octet-stream",
|
|
2292
2295
|
fileUri: t
|
|
2293
2296
|
});
|
|
@@ -2297,11 +2300,11 @@ function pn(e) {
|
|
|
2297
2300
|
for (let e of a) {
|
|
2298
2301
|
let t = String(e.file_uri || "").trim(), n = {
|
|
2299
2302
|
name: e.display_name || "attachment",
|
|
2300
|
-
url:
|
|
2303
|
+
url: dn(t),
|
|
2301
2304
|
type: e.mime_type || "application/octet-stream",
|
|
2302
2305
|
fileUri: t
|
|
2303
2306
|
};
|
|
2304
|
-
!n.url && !n.fileUri && Array.from(r.values()).some((e) => e.name === n.name &&
|
|
2307
|
+
!n.url && !n.fileUri && Array.from(r.values()).some((e) => e.name === n.name && pn(e.type, n.type) && (e.url || e.fileUri)) || i(n);
|
|
2305
2308
|
}
|
|
2306
2309
|
let o = Array.from(r.values());
|
|
2307
2310
|
return {
|
|
@@ -2309,10 +2312,10 @@ function pn(e) {
|
|
|
2309
2312
|
attachments: o.length > 0 ? o : void 0
|
|
2310
2313
|
};
|
|
2311
2314
|
}
|
|
2312
|
-
function
|
|
2315
|
+
function hn(e) {
|
|
2313
2316
|
let t = e?.Metadata?.responses_output;
|
|
2314
2317
|
if (!Array.isArray(t)) return {};
|
|
2315
|
-
let n =
|
|
2318
|
+
let n = Je(), r = ot({
|
|
2316
2319
|
eventName: "response.completed",
|
|
2317
2320
|
data: { response: {
|
|
2318
2321
|
id: String(e.Metadata?.response_id || ""),
|
|
@@ -2356,22 +2359,22 @@ function mn(e) {
|
|
|
2356
2359
|
...Object.keys(a).length > 0 ? { tools: a } : {}
|
|
2357
2360
|
};
|
|
2358
2361
|
}
|
|
2359
|
-
function
|
|
2362
|
+
function gn(e, t, n) {
|
|
2360
2363
|
return t === "running" ? e === "prompt_too_long" ? "检测到上下文过长,正在自动压缩历史后重试" : "正在自动压缩上下文" : n ? e === "prompt_too_long" ? "上下文过长,系统已自动压缩历史并重试" : "系统已自动压缩较早的对话上下文" : t === "failed" ? "自动压缩上下文未完成" : e === "prompt_too_long" ? "已完成上下文压缩,并继续当前回复" : "已完成上下文压缩";
|
|
2361
2364
|
}
|
|
2362
|
-
function
|
|
2365
|
+
function _n(e, t) {
|
|
2363
2366
|
return [
|
|
2364
2367
|
e,
|
|
2365
2368
|
t.content || "",
|
|
2366
2369
|
t.reasoning || ""
|
|
2367
2370
|
].join("\0");
|
|
2368
2371
|
}
|
|
2369
|
-
function
|
|
2372
|
+
function vn(e) {
|
|
2370
2373
|
return e?.Metadata?.responses_mirror === !0 || String(e?.Metadata?.responses_mirror || "").trim().toLowerCase() === "true";
|
|
2371
2374
|
}
|
|
2372
|
-
function
|
|
2375
|
+
function yn(e) {
|
|
2373
2376
|
if (e?.EventType !== "user_message") return "";
|
|
2374
|
-
let t =
|
|
2377
|
+
let t = mn(e), n = (t.attachments || []).map((e) => [
|
|
2375
2378
|
e.name || "",
|
|
2376
2379
|
e.fileUri || "",
|
|
2377
2380
|
e.url || "",
|
|
@@ -2379,16 +2382,16 @@ function vn(e) {
|
|
|
2379
2382
|
].join("")).sort().join("");
|
|
2380
2383
|
return [String(t.text || "").trim(), n].join("\0");
|
|
2381
2384
|
}
|
|
2382
|
-
function
|
|
2385
|
+
function bn(e) {
|
|
2383
2386
|
return e?.EventType === "assistant_stream_snapshot";
|
|
2384
2387
|
}
|
|
2385
|
-
function
|
|
2388
|
+
function xn(e) {
|
|
2386
2389
|
let t = Number(e?.SeqId || 0);
|
|
2387
2390
|
if (Number.isFinite(t) && t > 0) return t;
|
|
2388
2391
|
let n = Number(e?.Timestamp || 0);
|
|
2389
2392
|
return Number.isFinite(n) ? n : 0;
|
|
2390
2393
|
}
|
|
2391
|
-
function
|
|
2394
|
+
function Sn(e) {
|
|
2392
2395
|
if (typeof e == "string") return e;
|
|
2393
2396
|
if (e == null) return "";
|
|
2394
2397
|
try {
|
|
@@ -2397,15 +2400,15 @@ function xn(e) {
|
|
|
2397
2400
|
return String(e);
|
|
2398
2401
|
}
|
|
2399
2402
|
}
|
|
2400
|
-
function
|
|
2403
|
+
function Cn(e) {
|
|
2401
2404
|
let t = String(e?.EventType || "");
|
|
2402
|
-
if (!
|
|
2403
|
-
let n = String(e.Metadata?.tool_name || e.Metadata?.name || e.Metadata?.function_name ||
|
|
2405
|
+
if (!nn.has(t)) return null;
|
|
2406
|
+
let n = String(e.Metadata?.tool_name || e.Metadata?.name || e.Metadata?.function_name || un(e.Content?.parts) || "tool").trim() || "tool", r = {
|
|
2404
2407
|
name: n,
|
|
2405
2408
|
args: "",
|
|
2406
2409
|
status: "running"
|
|
2407
2410
|
}, i = t === "tool_result" || t === "stage_tool_result" ? (() => {
|
|
2408
|
-
let t =
|
|
2411
|
+
let t = Sn(e.Metadata?.tool_output ?? e.Metadata?.output ?? e.Metadata?.result ?? un(e.Content?.parts));
|
|
2409
2412
|
return {
|
|
2410
2413
|
...r,
|
|
2411
2414
|
output: t,
|
|
@@ -2413,7 +2416,7 @@ function Sn(e) {
|
|
|
2413
2416
|
};
|
|
2414
2417
|
})() : {
|
|
2415
2418
|
...r,
|
|
2416
|
-
args:
|
|
2419
|
+
args: Sn(e.Metadata?.tool_args ?? e.Metadata?.arguments ?? e.Metadata?.args ?? {})
|
|
2417
2420
|
};
|
|
2418
2421
|
return {
|
|
2419
2422
|
id: e.EventId || String(Date.now() + Math.random()),
|
|
@@ -2424,7 +2427,7 @@ function Sn(e) {
|
|
|
2424
2427
|
tools: { [n]: i }
|
|
2425
2428
|
};
|
|
2426
2429
|
}
|
|
2427
|
-
function
|
|
2430
|
+
function wn(e = {}, t = {}) {
|
|
2428
2431
|
let n = { ...e || {} };
|
|
2429
2432
|
for (let [e, r] of Object.entries(t || {})) n[e] = {
|
|
2430
2433
|
...n[e] || {},
|
|
@@ -2434,8 +2437,8 @@ function Cn(e = {}, t = {}) {
|
|
|
2434
2437
|
};
|
|
2435
2438
|
return n;
|
|
2436
2439
|
}
|
|
2437
|
-
function
|
|
2438
|
-
let n = String(t || "").trim().toLowerCase(), r = n === "completed" ? "completed" :
|
|
2440
|
+
function Tn(e = {}, t = "") {
|
|
2441
|
+
let n = String(t || "").trim().toLowerCase(), r = n === "completed" ? "completed" : tn.has(n) ? "error" : "";
|
|
2439
2442
|
if (!r) return e;
|
|
2440
2443
|
let i = !1, a = {};
|
|
2441
2444
|
for (let [t, n] of Object.entries(e || {})) n?.status === "running" ? (i = !0, a[t] = {
|
|
@@ -2444,10 +2447,10 @@ function wn(e = {}, t = "") {
|
|
|
2444
2447
|
}) : a[t] = n;
|
|
2445
2448
|
return i ? a : e;
|
|
2446
2449
|
}
|
|
2447
|
-
function
|
|
2450
|
+
function En(e, t) {
|
|
2448
2451
|
return {
|
|
2449
2452
|
...e,
|
|
2450
|
-
reasoning:
|
|
2453
|
+
reasoning: Dn(e.reasoning, t.reasoning),
|
|
2451
2454
|
tools: {
|
|
2452
2455
|
...e.tools || {},
|
|
2453
2456
|
...t.tools || {}
|
|
@@ -2460,11 +2463,11 @@ function Tn(e, t) {
|
|
|
2460
2463
|
id: t.responseId || t.reasoning || t.tools ? t.id : e.id
|
|
2461
2464
|
};
|
|
2462
2465
|
}
|
|
2463
|
-
function
|
|
2466
|
+
function Dn(e = "", t = "") {
|
|
2464
2467
|
let n = String(e || ""), r = String(t || "");
|
|
2465
2468
|
return n ? !r || n.endsWith(r) ? n : r.startsWith(n) ? r : `${n}${r}` : r;
|
|
2466
2469
|
}
|
|
2467
|
-
function
|
|
2470
|
+
function On(e) {
|
|
2468
2471
|
return {
|
|
2469
2472
|
id: e.id,
|
|
2470
2473
|
role: "system",
|
|
@@ -2475,10 +2478,10 @@ function Dn(e) {
|
|
|
2475
2478
|
summary: e.summary,
|
|
2476
2479
|
historical: e.historical,
|
|
2477
2480
|
timestamp: e.timestamp,
|
|
2478
|
-
content:
|
|
2481
|
+
content: gn(e.trigger, e.status, e.historical)
|
|
2479
2482
|
};
|
|
2480
2483
|
}
|
|
2481
|
-
function
|
|
2484
|
+
function kn(e) {
|
|
2482
2485
|
let t = e?.EventType || "";
|
|
2483
2486
|
if (t === "run_status") return e.Content?.status === "failed" ? {
|
|
2484
2487
|
id: e.EventId || String(Date.now() + Math.random()),
|
|
@@ -2496,8 +2499,8 @@ function On(e) {
|
|
|
2496
2499
|
timestamp: e.Timestamp || Date.now()
|
|
2497
2500
|
} : null;
|
|
2498
2501
|
if (t === "context_checkpoint") {
|
|
2499
|
-
let t =
|
|
2500
|
-
return
|
|
2502
|
+
let t = mn(e);
|
|
2503
|
+
return On({
|
|
2501
2504
|
id: e.EventId || String(Date.now() + Math.random()),
|
|
2502
2505
|
timestamp: e.Timestamp || Date.now(),
|
|
2503
2506
|
status: "completed",
|
|
@@ -2508,7 +2511,7 @@ function On(e) {
|
|
|
2508
2511
|
});
|
|
2509
2512
|
}
|
|
2510
2513
|
if (t === "reasoning") {
|
|
2511
|
-
let n =
|
|
2514
|
+
let n = mn(e).text || un(e.Metadata?.reasoning);
|
|
2512
2515
|
return n ? {
|
|
2513
2516
|
id: e.EventId || String(Date.now() + Math.random()),
|
|
2514
2517
|
role: "model",
|
|
@@ -2518,9 +2521,9 @@ function On(e) {
|
|
|
2518
2521
|
eventType: t
|
|
2519
2522
|
} : null;
|
|
2520
2523
|
}
|
|
2521
|
-
if (
|
|
2524
|
+
if (nn.has(t)) return Cn(e);
|
|
2522
2525
|
if (t !== "user_message" && t !== "assistant_message" && t !== "assistant_stream_snapshot") return null;
|
|
2523
|
-
let n =
|
|
2526
|
+
let n = mn(e), r = t === "assistant_message" ? hn(e) : {};
|
|
2524
2527
|
if (!n.text && !n.attachments?.length && !r.reasoning && !r.tools) return null;
|
|
2525
2528
|
let i = String(e.Metadata?.response_id || e.Metadata?.ResponseId || "").trim(), a = String(e.Metadata?.trace_id || e.Metadata?.TraceId || "").trim(), o = String(e.Metadata?.root_span_id || e.Metadata?.rootSpanId || e.Metadata?.RootSpanId || "").trim();
|
|
2526
2529
|
return {
|
|
@@ -2537,8 +2540,8 @@ function On(e) {
|
|
|
2537
2540
|
...r
|
|
2538
2541
|
};
|
|
2539
2542
|
}
|
|
2540
|
-
function
|
|
2541
|
-
let t = /* @__PURE__ */ new Map(), n = /* @__PURE__ */ new Map(), r = /* @__PURE__ */ new Set(), i = /* @__PURE__ */ new Set(), a = /* @__PURE__ */ new Set(), o = /* @__PURE__ */ new Set(), s =
|
|
2543
|
+
function An(e = []) {
|
|
2544
|
+
let t = /* @__PURE__ */ new Map(), n = /* @__PURE__ */ new Map(), r = /* @__PURE__ */ new Set(), i = /* @__PURE__ */ new Set(), a = /* @__PURE__ */ new Set(), o = /* @__PURE__ */ new Set(), s = cn(e), c = [];
|
|
2542
2545
|
for (let e of s) {
|
|
2543
2546
|
let t = String(e?.EventId || "").trim();
|
|
2544
2547
|
if (t) {
|
|
@@ -2549,30 +2552,30 @@ function kn(e = []) {
|
|
|
2549
2552
|
}
|
|
2550
2553
|
let l = /* @__PURE__ */ new Set(), u = /* @__PURE__ */ new Set(), d = /* @__PURE__ */ new Map();
|
|
2551
2554
|
for (let e of c) {
|
|
2552
|
-
if (e?.EventType !== "user_message" ||
|
|
2555
|
+
if (e?.EventType !== "user_message" || vn(e)) {
|
|
2553
2556
|
if (e?.EventType === "assistant_message") {
|
|
2554
2557
|
let t = String(e.InvocationId || "").trim();
|
|
2555
2558
|
t && u.add(t);
|
|
2556
2559
|
}
|
|
2557
|
-
if (
|
|
2560
|
+
if (bn(e)) {
|
|
2558
2561
|
let t = String(e.InvocationId || "").trim();
|
|
2559
2562
|
if (t) {
|
|
2560
2563
|
let n = d.get(t);
|
|
2561
|
-
(!n ||
|
|
2564
|
+
(!n || xn(e) >= xn(n)) && d.set(t, e);
|
|
2562
2565
|
}
|
|
2563
2566
|
}
|
|
2564
2567
|
continue;
|
|
2565
2568
|
}
|
|
2566
|
-
let t =
|
|
2569
|
+
let t = yn(e);
|
|
2567
2570
|
t && l.add(t);
|
|
2568
2571
|
}
|
|
2569
2572
|
let f = c.filter((e) => {
|
|
2570
|
-
if (
|
|
2573
|
+
if (bn(e)) {
|
|
2571
2574
|
let t = String(e.InvocationId || "").trim();
|
|
2572
2575
|
return t ? u.has(t) ? !1 : d.get(t) === e : !0;
|
|
2573
2576
|
}
|
|
2574
|
-
if (e?.EventType !== "user_message" || !
|
|
2575
|
-
let t =
|
|
2577
|
+
if (e?.EventType !== "user_message" || !vn(e)) return !0;
|
|
2578
|
+
let t = yn(e);
|
|
2576
2579
|
return !t || !l.has(t);
|
|
2577
2580
|
});
|
|
2578
2581
|
for (let e of f) {
|
|
@@ -2590,7 +2593,7 @@ function kn(e = []) {
|
|
|
2590
2593
|
let p = [], m = /* @__PURE__ */ new Map(), h = null, g = /* @__PURE__ */ new Map(), _ = (e) => {
|
|
2591
2594
|
let t = String(e?.responseId || "").trim(), n = t ? m.get(t) : void 0;
|
|
2592
2595
|
if (n !== void 0) {
|
|
2593
|
-
p[n] =
|
|
2596
|
+
p[n] = En(p[n], e);
|
|
2594
2597
|
return;
|
|
2595
2598
|
}
|
|
2596
2599
|
t && m.set(t, p.length), p.push(e);
|
|
@@ -2600,14 +2603,14 @@ function kn(e = []) {
|
|
|
2600
2603
|
let n = String(e || "").trim();
|
|
2601
2604
|
if (!n) return {};
|
|
2602
2605
|
let r = g.get(n);
|
|
2603
|
-
return r ? (g.delete(n), { tools:
|
|
2606
|
+
return r ? (g.delete(n), { tools: Tn(r.tools, t.get(n)) }) : {};
|
|
2604
2607
|
};
|
|
2605
2608
|
for (let e of f) {
|
|
2606
2609
|
if (e.EventType === "run_status") continue;
|
|
2607
|
-
let t =
|
|
2610
|
+
let t = kn(e);
|
|
2608
2611
|
if (!t) continue;
|
|
2609
2612
|
let n = String(e.InvocationId || "").trim();
|
|
2610
|
-
if (n && (t.invocationId = n),
|
|
2613
|
+
if (n && (t.invocationId = n), nn.has(t.eventType)) {
|
|
2611
2614
|
let n = String(e.InvocationId || "").trim();
|
|
2612
2615
|
if (!n) {
|
|
2613
2616
|
v(), _(t);
|
|
@@ -2623,7 +2626,7 @@ function kn(e = []) {
|
|
|
2623
2626
|
invocationId: n
|
|
2624
2627
|
},
|
|
2625
2628
|
timestamp: Math.max(Number(r?.timestamp || 0), Number(t.timestamp || 0)),
|
|
2626
|
-
tools:
|
|
2629
|
+
tools: wn(r?.tools, t.tools)
|
|
2627
2630
|
});
|
|
2628
2631
|
continue;
|
|
2629
2632
|
}
|
|
@@ -2641,7 +2644,7 @@ function kn(e = []) {
|
|
|
2641
2644
|
}
|
|
2642
2645
|
let r = t.eventType === "assistant_message" || t.eventType === "assistant_stream_snapshot";
|
|
2643
2646
|
if (r && h) {
|
|
2644
|
-
let n = String(e.InvocationId || "").trim(), r =
|
|
2647
|
+
let n = String(e.InvocationId || "").trim(), r = _n(n, t);
|
|
2645
2648
|
if (t.eventType === "assistant_message" && n && a.has(r)) {
|
|
2646
2649
|
h = null;
|
|
2647
2650
|
continue;
|
|
@@ -2649,12 +2652,12 @@ function kn(e = []) {
|
|
|
2649
2652
|
t.eventType === "assistant_message" && n && a.add(r), _({
|
|
2650
2653
|
...t,
|
|
2651
2654
|
...y(n),
|
|
2652
|
-
reasoning:
|
|
2655
|
+
reasoning: Dn(h.reasoning, t.reasoning)
|
|
2653
2656
|
}), h = null;
|
|
2654
2657
|
continue;
|
|
2655
2658
|
}
|
|
2656
2659
|
if (v(), r) {
|
|
2657
|
-
let n = String(e.InvocationId || "").trim(), r =
|
|
2660
|
+
let n = String(e.InvocationId || "").trim(), r = _n(n, t);
|
|
2658
2661
|
if (t.eventType === "assistant_message" && n && a.has(r)) continue;
|
|
2659
2662
|
t.eventType === "assistant_message" && n && a.add(r), _({
|
|
2660
2663
|
...t,
|
|
@@ -2667,7 +2670,7 @@ function kn(e = []) {
|
|
|
2667
2670
|
v();
|
|
2668
2671
|
for (let [e, n] of g.entries()) _({
|
|
2669
2672
|
...n,
|
|
2670
|
-
tools:
|
|
2673
|
+
tools: Tn(n.tools, t.get(e))
|
|
2671
2674
|
});
|
|
2672
2675
|
for (let [e, a] of t.entries()) {
|
|
2673
2676
|
if (a !== "in_progress" || r.has(e) || !i.has(e)) continue;
|
|
@@ -2683,7 +2686,7 @@ function kn(e = []) {
|
|
|
2683
2686
|
}
|
|
2684
2687
|
return p;
|
|
2685
2688
|
}
|
|
2686
|
-
function
|
|
2689
|
+
function jn(e = [], t = []) {
|
|
2687
2690
|
let n = [], r = /* @__PURE__ */ new Set();
|
|
2688
2691
|
for (let i of [...Array.isArray(e) ? e : [], ...Array.isArray(t) ? t : []]) {
|
|
2689
2692
|
let e = String(i?.EventId || "").trim();
|
|
@@ -2698,25 +2701,25 @@ function An(e = [], t = []) {
|
|
|
2698
2701
|
return Number.isFinite(n) && Number.isFinite(r) && n !== r ? n - r : Number(e?.Timestamp || 0) - Number(t?.Timestamp || 0);
|
|
2699
2702
|
});
|
|
2700
2703
|
}
|
|
2701
|
-
function
|
|
2702
|
-
return
|
|
2704
|
+
function Mn(e) {
|
|
2705
|
+
return tn.has(ln(e));
|
|
2703
2706
|
}
|
|
2704
2707
|
//#endregion
|
|
2705
2708
|
//#region src/utils/recovered-run.ts
|
|
2706
|
-
function
|
|
2709
|
+
function Nn(e, t) {
|
|
2707
2710
|
let n = String(e || ""), r = String(t || "");
|
|
2708
2711
|
return !n || !r || n.endsWith(r) ? n || r : r.startsWith(n) ? r : `${n}${r}`;
|
|
2709
2712
|
}
|
|
2710
|
-
function
|
|
2713
|
+
function Pn(e, t) {
|
|
2711
2714
|
return e ? t ? Object.fromEntries([...new Set([...Object.keys(e), ...Object.keys(t)])].map((n) => [n, {
|
|
2712
2715
|
...e[n] || {},
|
|
2713
2716
|
...t[n] || {}
|
|
2714
2717
|
}])) : e : t;
|
|
2715
2718
|
}
|
|
2716
|
-
function
|
|
2717
|
-
let r =
|
|
2719
|
+
function Fn(e, t, n) {
|
|
2720
|
+
let r = An(t).filter((e) => e.role === "model").at(-1);
|
|
2718
2721
|
if (!r) return e;
|
|
2719
|
-
let i = e.findIndex((e) => e.role === "model" && e.invocationId === n), a = i >= 0 ? e[i] : void 0, o =
|
|
2722
|
+
let i = e.findIndex((e) => e.role === "model" && e.invocationId === n), a = i >= 0 ? e[i] : void 0, o = Nn(a?.content, r.content), s = Nn(a?.reasoning, r.reasoning), c = Pn(a?.tools, r.tools), l = {
|
|
2720
2723
|
...a,
|
|
2721
2724
|
...r,
|
|
2722
2725
|
id: a?.id || r.id || `${n}:assistant`,
|
|
@@ -2724,7 +2727,7 @@ function Pn(e, t, n) {
|
|
|
2724
2727
|
content: o,
|
|
2725
2728
|
reasoning: s,
|
|
2726
2729
|
tools: c,
|
|
2727
|
-
blocks:
|
|
2730
|
+
blocks: Vt({
|
|
2728
2731
|
content: o,
|
|
2729
2732
|
reasoning: s,
|
|
2730
2733
|
tools: c
|
|
@@ -2734,14 +2737,14 @@ function Pn(e, t, n) {
|
|
|
2734
2737
|
}
|
|
2735
2738
|
//#endregion
|
|
2736
2739
|
//#region src/core/run/dispatcher.ts
|
|
2737
|
-
var
|
|
2740
|
+
var In = new Set(["completed"]), Ln = new Set([
|
|
2738
2741
|
"failed",
|
|
2739
2742
|
"error",
|
|
2740
2743
|
"cancelled",
|
|
2741
2744
|
"canceled",
|
|
2742
2745
|
"aborted",
|
|
2743
2746
|
"incomplete"
|
|
2744
|
-
]),
|
|
2747
|
+
]), Rn = /* @__PURE__ */ new Map();
|
|
2745
2748
|
function $(e, t) {
|
|
2746
2749
|
Y.getState().patchMessages((n) => n.some((t) => t.id === e) ? t ? n.map((n) => n.id === e ? {
|
|
2747
2750
|
...n,
|
|
@@ -2755,8 +2758,8 @@ function $(e, t) {
|
|
|
2755
2758
|
invocationId: t
|
|
2756
2759
|
}]);
|
|
2757
2760
|
}
|
|
2758
|
-
function
|
|
2759
|
-
let t = String(e || "").trim().toLowerCase(), n =
|
|
2761
|
+
function zn(e) {
|
|
2762
|
+
let t = String(e || "").trim().toLowerCase(), n = In.has(t) ? "completed" : Ln.has(t) ? "error" : null;
|
|
2760
2763
|
n && Y.getState().patchMessages((e) => e.map((e) => {
|
|
2761
2764
|
if (!e.tools) return e;
|
|
2762
2765
|
let t = !1, r = Object.fromEntries(Object.entries(e.tools).map(([e, r]) => r.status === "running" ? (t = !0, [e, {
|
|
@@ -2769,7 +2772,7 @@ function Rn(e) {
|
|
|
2769
2772
|
} : e;
|
|
2770
2773
|
}));
|
|
2771
2774
|
}
|
|
2772
|
-
function
|
|
2775
|
+
function Bn(e) {
|
|
2773
2776
|
let t = !!(e.sessionId && U.getState().currentSessionId !== e.sessionId);
|
|
2774
2777
|
if (t && ![
|
|
2775
2778
|
"activity",
|
|
@@ -2808,21 +2811,21 @@ function zn(e) {
|
|
|
2808
2811
|
$(e.messageId), r(e.sessionId), n.patchMessages((t) => t.map((t) => t.id === e.messageId ? {
|
|
2809
2812
|
...t,
|
|
2810
2813
|
content: t.content + e.delta,
|
|
2811
|
-
blocks:
|
|
2814
|
+
blocks: Lt(t.blocks, e.delta)
|
|
2812
2815
|
} : t));
|
|
2813
2816
|
break;
|
|
2814
2817
|
case "text_final":
|
|
2815
2818
|
$(e.messageId), r(e.sessionId), n.patchMessages((t) => t.map((t) => t.id === e.messageId ? {
|
|
2816
2819
|
...t,
|
|
2817
2820
|
content: e.text,
|
|
2818
|
-
blocks:
|
|
2821
|
+
blocks: Rt(t.blocks, e.text)
|
|
2819
2822
|
} : t));
|
|
2820
2823
|
break;
|
|
2821
2824
|
case "reasoning_delta":
|
|
2822
2825
|
$(e.messageId), r(e.sessionId), n.patchMessages((t) => t.map((t) => t.id === e.messageId ? {
|
|
2823
2826
|
...t,
|
|
2824
2827
|
reasoning: (t.reasoning || "") + e.delta,
|
|
2825
|
-
blocks:
|
|
2828
|
+
blocks: It(t.blocks, e.delta)
|
|
2826
2829
|
} : t));
|
|
2827
2830
|
break;
|
|
2828
2831
|
case "tool_upsert":
|
|
@@ -2831,7 +2834,7 @@ function zn(e) {
|
|
|
2831
2834
|
let n = t.tools?.[e.name], r = n?.approvalStatus === "approved" || n?.approvalStatus === "rejected", i = e.status, a = n?.approvalStatus === "rejected" ? "completed" : n?.status === "error" && i !== "error" ? "error" : i;
|
|
2832
2835
|
return {
|
|
2833
2836
|
...t,
|
|
2834
|
-
blocks:
|
|
2837
|
+
blocks: zt(t.blocks, e.name, {
|
|
2835
2838
|
args: e.args,
|
|
2836
2839
|
status: a,
|
|
2837
2840
|
extra: e.extra
|
|
@@ -2859,7 +2862,7 @@ function zn(e) {
|
|
|
2859
2862
|
let n = w(e.output) ? "error" : "completed";
|
|
2860
2863
|
return {
|
|
2861
2864
|
...t,
|
|
2862
|
-
blocks:
|
|
2865
|
+
blocks: zt(t.blocks, e.name, {
|
|
2863
2866
|
output: e.output,
|
|
2864
2867
|
status: n
|
|
2865
2868
|
}),
|
|
@@ -2889,7 +2892,7 @@ function zn(e) {
|
|
|
2889
2892
|
}, a = r ? n.status : "paused";
|
|
2890
2893
|
return {
|
|
2891
2894
|
...t,
|
|
2892
|
-
blocks:
|
|
2895
|
+
blocks: zt(t.blocks, e.name, {
|
|
2893
2896
|
args: e.args,
|
|
2894
2897
|
status: a,
|
|
2895
2898
|
extra: i
|
|
@@ -2947,7 +2950,7 @@ function zn(e) {
|
|
|
2947
2950
|
}]);
|
|
2948
2951
|
break;
|
|
2949
2952
|
case "compaction": {
|
|
2950
|
-
let t = `compaction-${Date.now()}`, r = e.phase === "start" ? "running" : e.phase === "failed" ? "failed" : "completed", i =
|
|
2953
|
+
let t = `compaction-${Date.now()}`, r = e.phase === "start" ? "running" : e.phase === "failed" ? "failed" : "completed", i = On({
|
|
2951
2954
|
id: t,
|
|
2952
2955
|
timestamp: Date.now(),
|
|
2953
2956
|
status: r,
|
|
@@ -2966,7 +2969,7 @@ function zn(e) {
|
|
|
2966
2969
|
case "stream_ended":
|
|
2967
2970
|
i.getState().setSessionStreaming(e.sessionId, !1), t || Y.getState().patchMessages((e) => e.map((e) => e.role !== "model" || !e.blocks?.some((e) => e.status === "streaming") ? e : {
|
|
2968
2971
|
...e,
|
|
2969
|
-
blocks:
|
|
2972
|
+
blocks: Bt(e.blocks.map((e) => e.type === "text" && e.status === "streaming" ? {
|
|
2970
2973
|
...e,
|
|
2971
2974
|
status: "done"
|
|
2972
2975
|
} : e))
|
|
@@ -3006,19 +3009,19 @@ function zn(e) {
|
|
|
3006
3009
|
});
|
|
3007
3010
|
break;
|
|
3008
3011
|
case "terminal":
|
|
3009
|
-
t ||
|
|
3012
|
+
t || zn(e.status);
|
|
3010
3013
|
break;
|
|
3011
3014
|
case "stream_event": {
|
|
3012
3015
|
let t = e.sessionId || e.event.SessionId, n = e.event.SeqId;
|
|
3013
3016
|
typeof n == "number" && n > 0 && i.getState().setLastSeqId(n), t && i.getState().updateActivity({ sessionId: t });
|
|
3014
3017
|
let r = String(e.event.InvocationId || "").trim();
|
|
3015
3018
|
if (t && r) {
|
|
3016
|
-
let n = `${t}:${r}`, i =
|
|
3017
|
-
|
|
3019
|
+
let n = `${t}:${r}`, i = jn(Rn.get(n) || [], [e.event]);
|
|
3020
|
+
Rn.set(n, i), Y.getState().patchMessages((e) => Fn(e, i, r)), Mn(e.event) && Rn.delete(n);
|
|
3018
3021
|
}
|
|
3019
3022
|
e.event.EventType === "run_checkpoint" && t && Q.getState().upsertSessionCheckpoint(t, e.event);
|
|
3020
3023
|
{
|
|
3021
|
-
let n =
|
|
3024
|
+
let n = ln(e.event);
|
|
3022
3025
|
n === "completed" ? i.getState().updateActivity({
|
|
3023
3026
|
sessionId: t,
|
|
3024
3027
|
status: "completed",
|
|
@@ -3118,13 +3121,13 @@ function zn(e) {
|
|
|
3118
3121
|
}
|
|
3119
3122
|
}
|
|
3120
3123
|
}
|
|
3121
|
-
function
|
|
3122
|
-
|
|
3124
|
+
function Vn() {
|
|
3125
|
+
Rn.clear();
|
|
3123
3126
|
}
|
|
3124
3127
|
//#endregion
|
|
3125
3128
|
//#region src/hooks/useRunAgent.ts
|
|
3126
|
-
function
|
|
3127
|
-
let n =
|
|
3129
|
+
function Hn(t) {
|
|
3130
|
+
let n = R(/* @__PURE__ */ new Map()), r = R(() => {}), { agentId: a, apiFormats: o, agentFramework: s, selectedModel: c, selectedModelMetadata: l, thinkingMode: u, permissionMode: d, currentSessionIdRef: f, queuedDraftRef: p, onRunSettled: m, uiCapabilities: h } = t, g = F((t) => {
|
|
3128
3131
|
t.updateConfig({
|
|
3129
3132
|
agentId: a,
|
|
3130
3133
|
apiFormats: o,
|
|
@@ -3147,7 +3150,7 @@ function Vn(t) {
|
|
|
3147
3150
|
h
|
|
3148
3151
|
]), _ = F((e) => {
|
|
3149
3152
|
let r = String(e || "new-session"), i = n.current.get(r);
|
|
3150
|
-
return i ? g(i) : (i = new
|
|
3153
|
+
return i ? g(i) : (i = new Nt(t.api), g(i), i.subscribe(Bn), n.current.set(r, i)), i;
|
|
3151
3154
|
}, [t.api, g]);
|
|
3152
3155
|
I(() => {
|
|
3153
3156
|
for (let e of n.current.values()) g(e);
|
|
@@ -3157,7 +3160,7 @@ function Vn(t) {
|
|
|
3157
3160
|
}, [p]), y = F((e) => {
|
|
3158
3161
|
let t = f.current, o = _(t);
|
|
3159
3162
|
if (o.stage !== "idle") return !1;
|
|
3160
|
-
|
|
3163
|
+
Vn(), T.getState().setMobileActionsOpen(!1), i.getState().setSessionStreaming(t, !0);
|
|
3161
3164
|
let s = e.text.trim(), c = String(Date.now()), l = e.attachments.map((e) => ({
|
|
3162
3165
|
name: e.name,
|
|
3163
3166
|
url: URL.createObjectURL(e),
|
|
@@ -3180,7 +3183,7 @@ function Vn(t) {
|
|
|
3180
3183
|
U.getState().upsertSessions([{
|
|
3181
3184
|
SessionId: e,
|
|
3182
3185
|
UpdatedAt: (/* @__PURE__ */ new Date()).toISOString()
|
|
3183
|
-
}]), f.current = e,
|
|
3186
|
+
}]), f.current = e, Oe(a, e), U.getState().setCurrentSessionId(e), t !== e && n.current.set(e, o);
|
|
3184
3187
|
},
|
|
3185
3188
|
onSessionUpsert: () => {},
|
|
3186
3189
|
onSettled: (e) => {
|
|
@@ -3236,7 +3239,7 @@ function Vn(t) {
|
|
|
3236
3239
|
}, [f, _]), C = F((e) => {
|
|
3237
3240
|
let t = _(e.sessionId);
|
|
3238
3241
|
if (t.stage !== "idle") return !1;
|
|
3239
|
-
|
|
3242
|
+
Vn(), T.getState().setMobileActionsOpen(!1), i.getState().setSessionStreaming(e.sessionId, !0);
|
|
3240
3243
|
let n = t.resumeCheckpoint({
|
|
3241
3244
|
...e,
|
|
3242
3245
|
onSettled: (e) => {
|
|
@@ -3245,7 +3248,7 @@ function Vn(t) {
|
|
|
3245
3248
|
});
|
|
3246
3249
|
return n || i.getState().setSessionStreaming(e.sessionId, !1), n;
|
|
3247
3250
|
}, [_, m]), w = F(() => {
|
|
3248
|
-
|
|
3251
|
+
Vn();
|
|
3249
3252
|
}, []);
|
|
3250
3253
|
return {
|
|
3251
3254
|
submitDraft: b,
|
|
@@ -3301,7 +3304,7 @@ function Vn(t) {
|
|
|
3301
3304
|
}
|
|
3302
3305
|
//#endregion
|
|
3303
3306
|
//#region src/hooks/useFeedback.ts
|
|
3304
|
-
function
|
|
3307
|
+
function Un(e) {
|
|
3305
3308
|
let { agentId: t, currentSessionId: n, isStreaming: r, api: i, submitDraft: a } = e;
|
|
3306
3309
|
return {
|
|
3307
3310
|
submitResponseFeedback: F(async (e) => {
|
|
@@ -3323,12 +3326,12 @@ function Hn(e) {
|
|
|
3323
3326
|
rating: e.rating,
|
|
3324
3327
|
comment: e.comment || ""
|
|
3325
3328
|
})))?.Feedback);
|
|
3326
|
-
r && Y.getState().patchMessages((t) =>
|
|
3329
|
+
r && Y.getState().patchMessages((t) => ie(t, {
|
|
3327
3330
|
messageId: e.message.id,
|
|
3328
3331
|
feedback: r
|
|
3329
3332
|
}));
|
|
3330
3333
|
} catch (t) {
|
|
3331
|
-
console.error("Failed to submit response feedback:", t), Y.getState().patchMessages((t) =>
|
|
3334
|
+
console.error("Failed to submit response feedback:", t), Y.getState().patchMessages((t) => re(t, {
|
|
3332
3335
|
messageId: e.message.id,
|
|
3333
3336
|
previousFeedback: r
|
|
3334
3337
|
}));
|
|
@@ -3349,7 +3352,7 @@ function Hn(e) {
|
|
|
3349
3352
|
message: e
|
|
3350
3353
|
}));
|
|
3351
3354
|
} catch (t) {
|
|
3352
|
-
console.error("Failed to delete response feedback:", t), Y.getState().patchMessages((t) =>
|
|
3355
|
+
console.error("Failed to delete response feedback:", t), Y.getState().patchMessages((t) => re(t, {
|
|
3353
3356
|
messageId: e.id,
|
|
3354
3357
|
previousFeedback: r
|
|
3355
3358
|
}));
|
|
@@ -3388,19 +3391,19 @@ function Hn(e) {
|
|
|
3388
3391
|
}
|
|
3389
3392
|
//#endregion
|
|
3390
3393
|
//#region src/utils/messages.js
|
|
3391
|
-
var
|
|
3394
|
+
var Wn = {
|
|
3392
3395
|
running: "running",
|
|
3393
3396
|
completed: "completed",
|
|
3394
3397
|
failed: "error",
|
|
3395
3398
|
paused: "paused",
|
|
3396
3399
|
approved: "completed",
|
|
3397
3400
|
denied: "completed"
|
|
3398
|
-
},
|
|
3401
|
+
}, Gn = {
|
|
3399
3402
|
paused: "pending",
|
|
3400
3403
|
approved: "approved",
|
|
3401
3404
|
denied: "rejected"
|
|
3402
3405
|
};
|
|
3403
|
-
function
|
|
3406
|
+
function Kn(e) {
|
|
3404
3407
|
if (typeof e == "number") return e;
|
|
3405
3408
|
if (typeof e == "string") {
|
|
3406
3409
|
let t = Date.parse(e);
|
|
@@ -3408,7 +3411,7 @@ function Gn(e) {
|
|
|
3408
3411
|
}
|
|
3409
3412
|
return Date.now();
|
|
3410
3413
|
}
|
|
3411
|
-
function
|
|
3414
|
+
function qn(e) {
|
|
3412
3415
|
if (typeof e == "string") return e;
|
|
3413
3416
|
if (e && typeof e == "object") {
|
|
3414
3417
|
if (typeof e.text == "string") return e.text;
|
|
@@ -3416,23 +3419,23 @@ function Kn(e) {
|
|
|
3416
3419
|
}
|
|
3417
3420
|
return "";
|
|
3418
3421
|
}
|
|
3419
|
-
function
|
|
3422
|
+
function Jn(e) {
|
|
3420
3423
|
let t = {}, n = /* @__PURE__ */ new Map();
|
|
3421
3424
|
for (let t of e ?? []) t?.Name && n.set(t.Name, (n.get(t.Name) || 0) + 1);
|
|
3422
3425
|
for (let r of e ?? []) {
|
|
3423
3426
|
if (!r?.Name) continue;
|
|
3424
|
-
let e =
|
|
3427
|
+
let e = Wn[String(r.Status ?? "completed").toLowerCase()] ?? "completed", i = {
|
|
3425
3428
|
name: r.Name,
|
|
3426
3429
|
args: r.Args === void 0 ? "" : typeof r.Args == "string" ? r.Args : JSON.stringify(r.Args),
|
|
3427
3430
|
status: e
|
|
3428
3431
|
};
|
|
3429
|
-
r.Result !== void 0 && (i.output = typeof r.Result == "string" ? r.Result : JSON.stringify(r.Result)), r.ApprovalRequestId && (i.approvalRequestId = r.ApprovalRequestId, i.approvalStatus =
|
|
3432
|
+
r.Result !== void 0 && (i.output = typeof r.Result == "string" ? r.Result : JSON.stringify(r.Result)), r.ApprovalRequestId && (i.approvalRequestId = r.ApprovalRequestId, i.approvalStatus = Gn[String(r.Status ?? "paused").toLowerCase()] ?? "pending", i.approvalProtocol = String(r.Protocol ?? "").toLowerCase() === "ag-ui" ? "ag-ui" : "responses", r.ApprovalMessage && (i.approvalMessage = String(r.ApprovalMessage)), r.ApprovalLevel && (i.approvalLevel = String(r.ApprovalLevel))), r.ToolCallId && (i.previousResponseId = r.ToolCallId);
|
|
3430
3433
|
let a = n.get(r.Name) > 1 && r.ToolCallId ? r.ToolCallId : r.Name;
|
|
3431
3434
|
t[a] = i;
|
|
3432
3435
|
}
|
|
3433
3436
|
return t;
|
|
3434
3437
|
}
|
|
3435
|
-
function
|
|
3438
|
+
function Yn(e) {
|
|
3436
3439
|
if (Array.isArray(e)) return e.map((e) => ({
|
|
3437
3440
|
name: e.name || "",
|
|
3438
3441
|
url: e.url || "",
|
|
@@ -3440,10 +3443,10 @@ function Jn(e) {
|
|
|
3440
3443
|
fileUri: e.file_uri
|
|
3441
3444
|
}));
|
|
3442
3445
|
}
|
|
3443
|
-
function
|
|
3446
|
+
function Xn(e) {
|
|
3444
3447
|
return e == null ? "" : typeof e == "string" ? e : JSON.stringify(e);
|
|
3445
3448
|
}
|
|
3446
|
-
function
|
|
3449
|
+
function Zn(e) {
|
|
3447
3450
|
if (!(!Array.isArray(e) || !e.length)) return e.flatMap((e, t) => {
|
|
3448
3451
|
let n = String(e?.Type || "").toLowerCase(), r = e?.SeqId ?? t;
|
|
3449
3452
|
if (n === "thinking" || n === "text") {
|
|
@@ -3456,36 +3459,36 @@ function Xn(e) {
|
|
|
3456
3459
|
}] : [];
|
|
3457
3460
|
}
|
|
3458
3461
|
if (n !== "tool") return [];
|
|
3459
|
-
let i =
|
|
3462
|
+
let i = Wn[String(e?.Status || "completed").toLowerCase()] ?? "completed";
|
|
3460
3463
|
return [{
|
|
3461
3464
|
id: `history-tool-${r}`,
|
|
3462
3465
|
type: "tool",
|
|
3463
3466
|
toolName: String(e?.Name || "tool"),
|
|
3464
|
-
args:
|
|
3465
|
-
...e?.Result === void 0 ? {} : { output:
|
|
3467
|
+
args: Xn(e?.Args),
|
|
3468
|
+
...e?.Result === void 0 ? {} : { output: Xn(e.Result) },
|
|
3466
3469
|
status: i,
|
|
3467
3470
|
...e?.ToolCallId ? { extra: { previousResponseId: String(e.ToolCallId) } } : {}
|
|
3468
3471
|
}];
|
|
3469
3472
|
});
|
|
3470
3473
|
}
|
|
3471
|
-
function
|
|
3472
|
-
let t = e.Role === "assistant" ? "model" : e.Role || "user", n = e.ToolEvents?.length ?
|
|
3474
|
+
function Qn(e) {
|
|
3475
|
+
let t = e.Role === "assistant" ? "model" : e.Role || "user", n = e.ToolEvents?.length ? Jn(e.ToolEvents) : void 0, r = Yn(e.Attachments), i = Zn(e.Blocks), a = e.Reasoning?.length ? e.Reasoning.map((e) => e.text).join("") : void 0, o = {
|
|
3473
3476
|
id: e.MessageId || `msg-${e.SeqId ?? Math.random().toString(36).slice(2)}`,
|
|
3474
3477
|
role: t,
|
|
3475
|
-
content:
|
|
3476
|
-
timestamp:
|
|
3478
|
+
content: qn(e.Content),
|
|
3479
|
+
timestamp: Kn(e.Timestamp),
|
|
3477
3480
|
eventType: t === "user" ? "user_message" : "assistant_message",
|
|
3478
3481
|
reasoning: a,
|
|
3479
3482
|
tools: n,
|
|
3480
3483
|
attachments: r
|
|
3481
3484
|
};
|
|
3482
|
-
return t === "model" && (o.blocks = i ??
|
|
3485
|
+
return t === "model" && (o.blocks = i ?? Vt({
|
|
3483
3486
|
reasoning: a,
|
|
3484
3487
|
tools: n,
|
|
3485
3488
|
content: o.content
|
|
3486
3489
|
})), e.MessageId && (o.eventId = e.MessageId), e.InvocationId && (o.invocationId = e.InvocationId), e.ResponseId && (o.responseId = e.ResponseId), e.TraceId && (o.traceId = e.TraceId), e.RootSpanId && (o.rootSpanId = e.RootSpanId), o;
|
|
3487
3490
|
}
|
|
3488
|
-
function
|
|
3491
|
+
function $n(e) {
|
|
3489
3492
|
return Array.isArray(e.Activities) ? e.Activities.flatMap((t, n) => {
|
|
3490
3493
|
let r = String(t?.SurfaceId || "");
|
|
3491
3494
|
if (!r) return [];
|
|
@@ -3494,7 +3497,7 @@ function Qn(e) {
|
|
|
3494
3497
|
id: t.MessageId || `a2ui-${e.MessageId || e.SeqId || "message"}-${n}`,
|
|
3495
3498
|
role: "a2ui",
|
|
3496
3499
|
content: "",
|
|
3497
|
-
timestamp:
|
|
3500
|
+
timestamp: Kn(e.Timestamp),
|
|
3498
3501
|
aguiActivity: {
|
|
3499
3502
|
surfaceId: r,
|
|
3500
3503
|
messages: _(a)
|
|
@@ -3502,36 +3505,36 @@ function Qn(e) {
|
|
|
3502
3505
|
}] : [];
|
|
3503
3506
|
}) : [];
|
|
3504
3507
|
}
|
|
3505
|
-
function
|
|
3506
|
-
return e.flatMap((e) => [
|
|
3508
|
+
function er(e) {
|
|
3509
|
+
return e.flatMap((e) => [Qn(e), ...$n(e)]);
|
|
3507
3510
|
}
|
|
3508
3511
|
//#endregion
|
|
3509
3512
|
//#region src/hooks/useSessionLifecycle.ts
|
|
3510
|
-
var
|
|
3511
|
-
function
|
|
3513
|
+
var tr = 500, nr = 30, rr = 50, ir = 1800 * 1e3;
|
|
3514
|
+
function ar(e) {
|
|
3512
3515
|
return new Promise((t) => {
|
|
3513
3516
|
if (e.aborted) {
|
|
3514
3517
|
t();
|
|
3515
3518
|
return;
|
|
3516
3519
|
}
|
|
3517
|
-
let n = globalThis.setTimeout(t,
|
|
3520
|
+
let n = globalThis.setTimeout(t, tr);
|
|
3518
3521
|
e.addEventListener("abort", () => {
|
|
3519
3522
|
globalThis.clearTimeout(n), t();
|
|
3520
3523
|
}, { once: !0 });
|
|
3521
3524
|
});
|
|
3522
3525
|
}
|
|
3523
|
-
var
|
|
3526
|
+
var or = new Set([
|
|
3524
3527
|
"in_progress",
|
|
3525
3528
|
"running",
|
|
3526
3529
|
"resuming",
|
|
3527
3530
|
"starting"
|
|
3528
3531
|
]);
|
|
3529
|
-
function
|
|
3532
|
+
function sr(e) {
|
|
3530
3533
|
let t = e.ActiveRunUpdatedAt || e.UpdatedAt, n = typeof t == "number" ? t > 1e11 ? t : t * 1e3 : Date.parse(String(t || ""));
|
|
3531
|
-
return Number.isFinite(n) && n <= Date.now() +
|
|
3534
|
+
return Number.isFinite(n) && n <= Date.now() + ir && Date.now() - n <= ir;
|
|
3532
3535
|
}
|
|
3533
|
-
function
|
|
3534
|
-
let t =
|
|
3536
|
+
function cr(e) {
|
|
3537
|
+
let t = ln(e);
|
|
3535
3538
|
return t ? t === "completed" ? {
|
|
3536
3539
|
status: "completed",
|
|
3537
3540
|
phase: "后台长任务已完成"
|
|
@@ -3549,8 +3552,8 @@ function sr(e) {
|
|
|
3549
3552
|
phase: "后台长任务恢复失败"
|
|
3550
3553
|
} : null : null;
|
|
3551
3554
|
}
|
|
3552
|
-
function
|
|
3553
|
-
let { agentId: t, api: n, isMobile: r, resetCompaction: a, uiCapabilities: o, disconnectRun: s } = e, c =
|
|
3555
|
+
function lr(e) {
|
|
3556
|
+
let { agentId: t, api: n, isMobile: r, resetCompaction: a, uiCapabilities: o, disconnectRun: s } = e, c = R(e.currentSessionId), l = R(e.agentId), u = R(null), d = R(0), f = R(/* @__PURE__ */ new Map()), m = R(null), g = R(null), _ = F(async (e, t, r) => {
|
|
3554
3557
|
let i = r.filter((e) => p(e, !1, !1));
|
|
3555
3558
|
if (!i.length) return;
|
|
3556
3559
|
let a = await Promise.all(i.map(async (r) => {
|
|
@@ -3603,10 +3606,10 @@ function cr(e) {
|
|
|
3603
3606
|
let { value: t, done: n } = await l.read();
|
|
3604
3607
|
if (n) break;
|
|
3605
3608
|
d += u.decode(t, { stream: !0 });
|
|
3606
|
-
let c =
|
|
3609
|
+
let c = gt(d);
|
|
3607
3610
|
d = c.remainder;
|
|
3608
3611
|
for (let t of c.chunks) if (t.trim()) {
|
|
3609
|
-
for (let n of
|
|
3612
|
+
for (let n of ht(t)) {
|
|
3610
3613
|
if (n.eventName === "__ping__") {
|
|
3611
3614
|
i.getState().updateActivity({
|
|
3612
3615
|
sessionId: e.sessionId,
|
|
@@ -3624,12 +3627,12 @@ function cr(e) {
|
|
|
3624
3627
|
if (!s()) break;
|
|
3625
3628
|
if (t.InvocationId && t.InvocationId !== e.invocationId) continue;
|
|
3626
3629
|
let c = Number(t.SeqId || 0);
|
|
3627
|
-
Number.isFinite(c) && (o = Math.max(o, c)),
|
|
3630
|
+
Number.isFinite(c) && (o = Math.max(o, c)), Bn({
|
|
3628
3631
|
type: "stream_event",
|
|
3629
3632
|
sessionId: e.sessionId,
|
|
3630
3633
|
event: t
|
|
3631
|
-
}), a ||=
|
|
3632
|
-
let l =
|
|
3634
|
+
}), a ||= Mn(t), r ||= a;
|
|
3635
|
+
let l = cr(t);
|
|
3633
3636
|
if (l && i.getState().updateActivity({
|
|
3634
3637
|
sessionId: e.sessionId,
|
|
3635
3638
|
status: l.status,
|
|
@@ -3652,9 +3655,9 @@ function cr(e) {
|
|
|
3652
3655
|
countEvent: !1
|
|
3653
3656
|
});
|
|
3654
3657
|
}
|
|
3655
|
-
!a && s() && await
|
|
3658
|
+
!a && s() && await ar(t.signal);
|
|
3656
3659
|
}
|
|
3657
|
-
a && s() &&
|
|
3660
|
+
a && s() && Bn({
|
|
3658
3661
|
type: "stream_ended",
|
|
3659
3662
|
sessionId: e.sessionId
|
|
3660
3663
|
});
|
|
@@ -3671,18 +3674,18 @@ function cr(e) {
|
|
|
3671
3674
|
U.getState().setCurrentSessionId(e), U.getState().setSessionInitialMessageHistoryLoading(e, !0), a(), u.current?.abort(), r && T.getState().setMobileSidebarOpen(!1);
|
|
3672
3675
|
try {
|
|
3673
3676
|
let t = await n.listSessionMessages(e, {
|
|
3674
|
-
limit:
|
|
3677
|
+
limit: rr,
|
|
3675
3678
|
includeReasoning: !0,
|
|
3676
3679
|
includeToolEvents: !0,
|
|
3677
3680
|
includeAttachments: !0
|
|
3678
3681
|
});
|
|
3679
3682
|
if (!f()) return;
|
|
3680
|
-
let r =
|
|
3683
|
+
let r = er(t.Messages);
|
|
3681
3684
|
Y.getState().setMessages(r), U.getState().setSessionMessageHistory(e, {
|
|
3682
3685
|
nextCursor: t.NextCursor,
|
|
3683
3686
|
hasMore: t.HasMore
|
|
3684
3687
|
}), _(l.current, e, r);
|
|
3685
|
-
let i = t.LatestSeqId || 0, a =
|
|
3688
|
+
let i = t.LatestSeqId || 0, a = B.getState().capabilities || o;
|
|
3686
3689
|
if (a.RunLifecycle.Enabled && a.RunLifecycle.Checkpoints ? (n.listSessionCheckpoints({
|
|
3687
3690
|
agentId: l.current,
|
|
3688
3691
|
sessionId: e
|
|
@@ -3701,7 +3704,7 @@ function cr(e) {
|
|
|
3701
3704
|
let t = await n.getSession(e);
|
|
3702
3705
|
if (!f()) return;
|
|
3703
3706
|
let r = String(t.ActiveRunStatus || "").toLowerCase();
|
|
3704
|
-
t.ActiveInvocationId && (
|
|
3707
|
+
t.ActiveInvocationId && (or.has(r) || r === "" && sr(t)) && v({
|
|
3705
3708
|
sessionId: e,
|
|
3706
3709
|
invocationId: t.ActiveInvocationId,
|
|
3707
3710
|
afterSeqId: i
|
|
@@ -3728,19 +3731,19 @@ function cr(e) {
|
|
|
3728
3731
|
r.sessionsAgentId && r.sessionsAgentId !== e && r.resetSessionPagination(e), U.getState().setLoadingSessions(!0);
|
|
3729
3732
|
let a = await n.listSessions(e, {
|
|
3730
3733
|
page: 1,
|
|
3731
|
-
pageSize:
|
|
3734
|
+
pageSize: nr
|
|
3732
3735
|
});
|
|
3733
3736
|
U.getState().upsertSessions(a.Sessions || [], {
|
|
3734
3737
|
agentId: e,
|
|
3735
3738
|
total: Number(a.Total ?? a.Sessions?.length ?? 0),
|
|
3736
3739
|
page: Number(a.Page ?? 1),
|
|
3737
|
-
pageSize: Number(a.PageSize ??
|
|
3740
|
+
pageSize: Number(a.PageSize ?? nr),
|
|
3738
3741
|
replace: !0
|
|
3739
3742
|
});
|
|
3740
|
-
let o = U.getState().sessions, l = c.current, f =
|
|
3743
|
+
let o = U.getState().sessions, l = c.current, f = ke(o, l || t || De(e));
|
|
3741
3744
|
f && f !== l ? y(f) : !f && l && (d.current += 1, u.current?.abort(), s?.(), c.current = null, U.getState().setCurrentSessionId(null), Y.getState().setMessages([]), U.getState().clearSessionMessageHistory(), Q.getState().clearSessionCheckpoints(), i.getState().setCurrentRunId(""), i.getState().clearActivity());
|
|
3742
3745
|
} catch (e) {
|
|
3743
|
-
if (e instanceof
|
|
3746
|
+
if (e instanceof K) return;
|
|
3744
3747
|
console.error("Failed to fetch sessions:", e);
|
|
3745
3748
|
} finally {
|
|
3746
3749
|
U.getState().setLoadingSessions(!1);
|
|
@@ -3752,13 +3755,13 @@ function cr(e) {
|
|
|
3752
3755
|
]), x = F(async () => {
|
|
3753
3756
|
let e = U.getState();
|
|
3754
3757
|
if (e.isLoadingSessions || !e.hasMoreSessions) return;
|
|
3755
|
-
let t =
|
|
3758
|
+
let t = me({
|
|
3756
3759
|
total: e.sessionsTotal,
|
|
3757
|
-
pageSize: e.sessionsPageSize ||
|
|
3760
|
+
pageSize: e.sessionsPageSize || nr,
|
|
3758
3761
|
loadedPages: e.loadedPages
|
|
3759
3762
|
});
|
|
3760
3763
|
if (!t) return;
|
|
3761
|
-
let r = e.sessionsPageSize ||
|
|
3764
|
+
let r = e.sessionsPageSize || nr, i = e.sessionsAgentId || l.current || "default-agent";
|
|
3762
3765
|
try {
|
|
3763
3766
|
U.getState().setLoadingSessions(!0);
|
|
3764
3767
|
let a = await n.listSessions(i, {
|
|
@@ -3772,7 +3775,7 @@ function cr(e) {
|
|
|
3772
3775
|
pageSize: Number(a.PageSize ?? r)
|
|
3773
3776
|
});
|
|
3774
3777
|
} catch (e) {
|
|
3775
|
-
if (e instanceof
|
|
3778
|
+
if (e instanceof K) return;
|
|
3776
3779
|
console.error("Failed to load more sessions:", e);
|
|
3777
3780
|
} finally {
|
|
3778
3781
|
U.getState().setLoadingSessions(!1);
|
|
@@ -3792,7 +3795,7 @@ function cr(e) {
|
|
|
3792
3795
|
UpdatedAt: (/* @__PURE__ */ new Date()).toISOString()
|
|
3793
3796
|
}]), c.current = e, U.getState().setCurrentSessionId(e), Y.getState().setMessages([]), U.getState().clearSessionMessageHistory(e), Q.getState().setSessionCheckpoints(e, []), Q.getState().setSessionToolReceipts(e, []), i.getState().setCurrentRunId(""), i.getState().clearActivity(), r && (T.getState().setMobileSidebarOpen(!1), T.getState().setMobileActionsOpen(!1)), b(t, e));
|
|
3794
3797
|
} catch (e) {
|
|
3795
|
-
if (e instanceof
|
|
3798
|
+
if (e instanceof K) return;
|
|
3796
3799
|
console.error("Failed to create session:", e);
|
|
3797
3800
|
}
|
|
3798
3801
|
}, [
|
|
@@ -3804,7 +3807,7 @@ function cr(e) {
|
|
|
3804
3807
|
try {
|
|
3805
3808
|
await n.deleteSession(e), U.getState().removeSession(e), U.getState().clearSessionMessageHistory(e), c.current === e && (d.current += 1, u.current?.abort(), s?.(), c.current = null, Y.getState().setMessages([]), Q.getState().clearSessionCheckpoints(e), U.getState().setCurrentSessionId(null), i.getState().setCurrentRunId(""), i.getState().clearActivity(), b(t));
|
|
3806
3809
|
} catch (e) {
|
|
3807
|
-
if (e instanceof
|
|
3810
|
+
if (e instanceof K) return;
|
|
3808
3811
|
console.error("Failed to delete session", e);
|
|
3809
3812
|
}
|
|
3810
3813
|
}, [
|
|
@@ -3826,19 +3829,19 @@ function cr(e) {
|
|
|
3826
3829
|
U.getState().setSessionMessageHistoryLoading(e, !0);
|
|
3827
3830
|
let a = await n.listSessionMessages(e, {
|
|
3828
3831
|
beforeSeqId: t.nextCursor,
|
|
3829
|
-
limit:
|
|
3832
|
+
limit: rr,
|
|
3830
3833
|
includeReasoning: !0,
|
|
3831
3834
|
includeToolEvents: !0,
|
|
3832
3835
|
includeAttachments: !0
|
|
3833
3836
|
});
|
|
3834
3837
|
if (c.current !== e || d.current !== r || f.current.get(e) !== i) return;
|
|
3835
|
-
let o =
|
|
3838
|
+
let o = er(a.Messages), s = new Set(o.map((e) => e.id)), u = [...o, ...Y.getState().messages.filter((e) => !s.has(e.id))];
|
|
3836
3839
|
Y.getState().setMessages(u), U.getState().setSessionMessageHistory(e, {
|
|
3837
3840
|
nextCursor: a.NextCursor,
|
|
3838
3841
|
hasMore: a.HasMore
|
|
3839
3842
|
}), _(l.current, e, o);
|
|
3840
3843
|
} catch (e) {
|
|
3841
|
-
e instanceof
|
|
3844
|
+
e instanceof K || console.error("Failed to load older session messages:", e);
|
|
3842
3845
|
} finally {
|
|
3843
3846
|
f.current.get(e) === i && (f.current.delete(e), U.getState().setSessionMessageHistoryLoading(e, !1));
|
|
3844
3847
|
}
|
|
@@ -3852,141 +3855,141 @@ function cr(e) {
|
|
|
3852
3855
|
}
|
|
3853
3856
|
//#endregion
|
|
3854
3857
|
//#region src/components/chat/ConnectedSidebar.tsx
|
|
3855
|
-
function
|
|
3856
|
-
let
|
|
3857
|
-
isMobile:
|
|
3858
|
-
desktopSidebarOpen:
|
|
3859
|
-
mobileSidebarOpen:
|
|
3858
|
+
function ur({ uiCapabilities: e, createNewSession: t, deleteSession: i, loadSession: a, loadMoreSessions: o }) {
|
|
3859
|
+
let s = U((e) => e.sessions), l = U((e) => e.currentSessionId), u = U((e) => e.pinnedSessionIds), f = U((e) => e.isLoadingSessions), p = U((e) => e.hasMoreSessions), m = T((e) => e.sidebarOpen), h = T((e) => e.mobileSidebarOpen), { isMobile: _ } = Ie(), y = n(e), { desktopSidebarVisible: b } = xe({
|
|
3860
|
+
isMobile: _,
|
|
3861
|
+
desktopSidebarOpen: m,
|
|
3862
|
+
mobileSidebarOpen: h
|
|
3860
3863
|
});
|
|
3861
|
-
return
|
|
3862
|
-
open:
|
|
3864
|
+
return y ? _ ? /* @__PURE__ */ N(d, {
|
|
3865
|
+
open: h,
|
|
3863
3866
|
onOpenChange: (e) => T.getState().setMobileSidebarOpen(e),
|
|
3864
|
-
children: /* @__PURE__ */
|
|
3867
|
+
children: /* @__PURE__ */ P(S, {
|
|
3865
3868
|
side: "left",
|
|
3866
3869
|
className: "w-[88vw] max-w-sm border-slate-200 bg-slate-50 p-0 dark:border-slate-800 dark:bg-slate-950",
|
|
3867
3870
|
children: [
|
|
3868
|
-
/* @__PURE__ */
|
|
3871
|
+
/* @__PURE__ */ N(x, {
|
|
3869
3872
|
className: "sr-only",
|
|
3870
3873
|
children: "历史记录"
|
|
3871
3874
|
}),
|
|
3872
|
-
/* @__PURE__ */
|
|
3875
|
+
/* @__PURE__ */ N(r, {
|
|
3873
3876
|
className: "sr-only",
|
|
3874
3877
|
children: "查看和切换历史对话。"
|
|
3875
3878
|
}),
|
|
3876
|
-
/* @__PURE__ */
|
|
3877
|
-
sessions:
|
|
3878
|
-
currentSessionId:
|
|
3879
|
+
/* @__PURE__ */ N(g, {
|
|
3880
|
+
sessions: s,
|
|
3881
|
+
currentSessionId: l,
|
|
3879
3882
|
onCreateNewSession: t,
|
|
3880
|
-
onSelectSession:
|
|
3883
|
+
onSelectSession: a,
|
|
3881
3884
|
onDeleteSession: (e, t) => {
|
|
3882
3885
|
t.stopPropagation(), i(e);
|
|
3883
3886
|
},
|
|
3884
3887
|
onTogglePinSession: (e, t) => {
|
|
3885
3888
|
t.stopPropagation(), U.getState().togglePinnedSession(e);
|
|
3886
3889
|
},
|
|
3887
|
-
onLoadMoreSessions:
|
|
3890
|
+
onLoadMoreSessions: o,
|
|
3888
3891
|
sessionTitle: v,
|
|
3889
|
-
pinnedSessionIds:
|
|
3890
|
-
hasMoreSessions:
|
|
3891
|
-
isLoadingSessions:
|
|
3892
|
+
pinnedSessionIds: u,
|
|
3893
|
+
hasMoreSessions: p,
|
|
3894
|
+
isLoadingSessions: f
|
|
3892
3895
|
})
|
|
3893
3896
|
]
|
|
3894
3897
|
})
|
|
3895
|
-
}) : /* @__PURE__ */
|
|
3896
|
-
className: c("flex-shrink-0 overflow-hidden border-r border-slate-200 transition-[width] duration-300 ease-in-out dark:border-slate-800",
|
|
3897
|
-
children: /* @__PURE__ */
|
|
3898
|
-
sessions:
|
|
3899
|
-
currentSessionId:
|
|
3898
|
+
}) : /* @__PURE__ */ N("aside", {
|
|
3899
|
+
className: c("flex-shrink-0 overflow-hidden border-r border-slate-200 transition-[width] duration-300 ease-in-out dark:border-slate-800", b ? "w-[280px]" : "w-0 border-r-0"),
|
|
3900
|
+
children: /* @__PURE__ */ N(g, {
|
|
3901
|
+
sessions: s,
|
|
3902
|
+
currentSessionId: l,
|
|
3900
3903
|
onCreateNewSession: t,
|
|
3901
|
-
onSelectSession:
|
|
3904
|
+
onSelectSession: a,
|
|
3902
3905
|
onDeleteSession: (e, t) => {
|
|
3903
3906
|
t.stopPropagation(), i(e);
|
|
3904
3907
|
},
|
|
3905
3908
|
onTogglePinSession: (e, t) => {
|
|
3906
3909
|
t.stopPropagation(), U.getState().togglePinnedSession(e);
|
|
3907
3910
|
},
|
|
3908
|
-
onLoadMoreSessions:
|
|
3911
|
+
onLoadMoreSessions: o,
|
|
3909
3912
|
sessionTitle: v,
|
|
3910
|
-
pinnedSessionIds:
|
|
3911
|
-
hasMoreSessions:
|
|
3912
|
-
isLoadingSessions:
|
|
3913
|
+
pinnedSessionIds: u,
|
|
3914
|
+
hasMoreSessions: p,
|
|
3915
|
+
isLoadingSessions: f
|
|
3913
3916
|
})
|
|
3914
3917
|
}) : null;
|
|
3915
3918
|
}
|
|
3916
3919
|
//#endregion
|
|
3917
3920
|
//#region src/components/ui/dialog.tsx
|
|
3918
|
-
var
|
|
3921
|
+
var dr = z.Root, fr = z.Portal, pr = oe.forwardRef(({ className: e, ...t }, n) => /* @__PURE__ */ N(z.Overlay, {
|
|
3919
3922
|
ref: n,
|
|
3920
3923
|
className: c("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),
|
|
3921
3924
|
...t
|
|
3922
3925
|
}));
|
|
3923
|
-
|
|
3924
|
-
var
|
|
3926
|
+
pr.displayName = z.Overlay.displayName;
|
|
3927
|
+
var mr = oe.forwardRef(({ className: e, children: t, ...n }, r) => /* @__PURE__ */ P(fr, { children: [/* @__PURE__ */ N(pr, {}), /* @__PURE__ */ P(z.Content, {
|
|
3925
3928
|
ref: r,
|
|
3926
3929
|
className: c("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),
|
|
3927
3930
|
...n,
|
|
3928
|
-
children: [t, /* @__PURE__ */
|
|
3931
|
+
children: [t, /* @__PURE__ */ P(z.Close, {
|
|
3929
3932
|
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",
|
|
3930
|
-
children: [/* @__PURE__ */
|
|
3933
|
+
children: [/* @__PURE__ */ N(j, { className: "h-4 w-4" }), /* @__PURE__ */ N("span", {
|
|
3931
3934
|
className: "sr-only",
|
|
3932
3935
|
children: "Close"
|
|
3933
3936
|
})]
|
|
3934
3937
|
})]
|
|
3935
3938
|
})] }));
|
|
3936
|
-
|
|
3937
|
-
var
|
|
3939
|
+
mr.displayName = z.Content.displayName;
|
|
3940
|
+
var hr = ({ className: e, ...t }) => /* @__PURE__ */ N("div", {
|
|
3938
3941
|
className: c("flex flex-col space-y-1.5 text-center sm:text-left", e),
|
|
3939
3942
|
...t
|
|
3940
3943
|
});
|
|
3941
|
-
|
|
3942
|
-
var
|
|
3944
|
+
hr.displayName = "DialogHeader";
|
|
3945
|
+
var gr = ({ className: e, ...t }) => /* @__PURE__ */ N("div", {
|
|
3943
3946
|
className: c("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2", e),
|
|
3944
3947
|
...t
|
|
3945
3948
|
});
|
|
3946
|
-
|
|
3947
|
-
var
|
|
3949
|
+
gr.displayName = "DialogFooter";
|
|
3950
|
+
var _r = oe.forwardRef(({ className: e, ...t }, n) => /* @__PURE__ */ N(z.Title, {
|
|
3948
3951
|
ref: n,
|
|
3949
3952
|
className: c("text-lg font-semibold leading-none tracking-tight", e),
|
|
3950
3953
|
...t
|
|
3951
3954
|
}));
|
|
3952
|
-
|
|
3953
|
-
var
|
|
3955
|
+
_r.displayName = z.Title.displayName;
|
|
3956
|
+
var vr = oe.forwardRef(({ className: e, ...t }, n) => /* @__PURE__ */ N(z.Description, {
|
|
3954
3957
|
ref: n,
|
|
3955
3958
|
className: c("text-sm text-muted-foreground", e),
|
|
3956
3959
|
...t
|
|
3957
3960
|
}));
|
|
3958
|
-
|
|
3961
|
+
vr.displayName = z.Description.displayName;
|
|
3959
3962
|
//#endregion
|
|
3960
3963
|
//#region src/components/chat/AttachmentPreview.tsx
|
|
3961
|
-
function
|
|
3964
|
+
function yr(e, t) {
|
|
3962
3965
|
if (!(!t || e)) return {
|
|
3963
3966
|
width: `min(${t.width}px, calc(100vw - 5rem))`,
|
|
3964
3967
|
height: `min(${t.height}px, calc(100vh - 9rem))`
|
|
3965
3968
|
};
|
|
3966
3969
|
}
|
|
3967
|
-
function
|
|
3970
|
+
function br(e, t) {
|
|
3968
3971
|
if (!(!t || e)) return { width: `min(${t.width + 32}px, calc(100vw - 3rem))` };
|
|
3969
3972
|
}
|
|
3970
|
-
function
|
|
3971
|
-
return /* @__PURE__ */
|
|
3973
|
+
function xr({ attachment: e, isMobile: t, previewImageSize: n, onClose: r, onImageLoad: i }) {
|
|
3974
|
+
return /* @__PURE__ */ N(dr, {
|
|
3972
3975
|
open: !!e?.url,
|
|
3973
3976
|
onOpenChange: (e) => !e && r(),
|
|
3974
|
-
children: /* @__PURE__ */
|
|
3977
|
+
children: /* @__PURE__ */ P(mr, {
|
|
3975
3978
|
className: c("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"),
|
|
3976
|
-
style:
|
|
3977
|
-
children: [/* @__PURE__ */
|
|
3979
|
+
style: br(t, n),
|
|
3980
|
+
children: [/* @__PURE__ */ N("div", {
|
|
3978
3981
|
className: "flex items-center gap-3 border-b border-slate-800 px-4 py-3 pr-16",
|
|
3979
|
-
children: /* @__PURE__ */
|
|
3982
|
+
children: /* @__PURE__ */ N(_r, {
|
|
3980
3983
|
className: "truncate text-sm font-medium",
|
|
3981
3984
|
children: e?.name || "附件预览"
|
|
3982
3985
|
})
|
|
3983
|
-
}), /* @__PURE__ */
|
|
3986
|
+
}), /* @__PURE__ */ N("div", {
|
|
3984
3987
|
className: c("flex items-center justify-center overflow-auto bg-slate-950", t ? "h-full p-4 pb-[calc(var(--safe-area-bottom)+1rem)]" : "max-h-[calc(100vh-7rem)] p-4"),
|
|
3985
|
-
children: e ? e.type.startsWith("image/") ? /* @__PURE__ */
|
|
3988
|
+
children: e ? e.type.startsWith("image/") ? /* @__PURE__ */ N("img", {
|
|
3986
3989
|
src: e.url,
|
|
3987
3990
|
alt: e.name,
|
|
3988
3991
|
className: c("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)]"),
|
|
3989
|
-
style:
|
|
3992
|
+
style: yr(t, n),
|
|
3990
3993
|
onLoad: (e) => {
|
|
3991
3994
|
let t = e.currentTarget;
|
|
3992
3995
|
i({
|
|
@@ -3994,7 +3997,7 @@ function br({ attachment: e, isMobile: t, previewImageSize: n, onClose: r, onIma
|
|
|
3994
3997
|
height: t.naturalHeight
|
|
3995
3998
|
});
|
|
3996
3999
|
}
|
|
3997
|
-
}) : /* @__PURE__ */
|
|
4000
|
+
}) : /* @__PURE__ */ N("iframe", {
|
|
3998
4001
|
src: e.url,
|
|
3999
4002
|
title: e.name,
|
|
4000
4003
|
className: "h-full min-h-[24rem] w-full rounded-xl border border-slate-800 bg-white"
|
|
@@ -4005,7 +4008,7 @@ function br({ attachment: e, isMobile: t, previewImageSize: n, onClose: r, onIma
|
|
|
4005
4008
|
}
|
|
4006
4009
|
//#endregion
|
|
4007
4010
|
//#region src/utils/context.js
|
|
4008
|
-
function
|
|
4011
|
+
function Sr(e) {
|
|
4009
4012
|
if (typeof e == "number" && Number.isFinite(e) && e > 0) return e;
|
|
4010
4013
|
if (typeof e == "string" && e.trim()) {
|
|
4011
4014
|
let t = Number(e);
|
|
@@ -4013,15 +4016,15 @@ function xr(e) {
|
|
|
4013
4016
|
}
|
|
4014
4017
|
return null;
|
|
4015
4018
|
}
|
|
4016
|
-
function
|
|
4019
|
+
function Cr(e) {
|
|
4017
4020
|
return /[\u3400-\u4DBF\u4E00-\u9FFF\uF900-\uFAFF]/u.test(e);
|
|
4018
4021
|
}
|
|
4019
|
-
function
|
|
4022
|
+
function wr(e) {
|
|
4020
4023
|
let t = String(e || "").trim();
|
|
4021
4024
|
if (!t) return 0;
|
|
4022
4025
|
let n = 0, r = 0;
|
|
4023
4026
|
for (let e of t) {
|
|
4024
|
-
if (
|
|
4027
|
+
if (Cr(e)) {
|
|
4025
4028
|
n += 1;
|
|
4026
4029
|
continue;
|
|
4027
4030
|
}
|
|
@@ -4029,24 +4032,24 @@ function Cr(e) {
|
|
|
4029
4032
|
}
|
|
4030
4033
|
return Math.max(1, n + Math.ceil(r / 4));
|
|
4031
4034
|
}
|
|
4032
|
-
function wr(e) {
|
|
4033
|
-
if (!e) return 0;
|
|
4034
|
-
if (e.role === "system") return e.eventType === "context_checkpoint" ? Cr(e.summary || "") : 0;
|
|
4035
|
-
let t = Cr(e.content || "");
|
|
4036
|
-
return e.tools && (t += Object.values(e.tools).reduce((e, t) => e + Cr(t?.name || "") + Cr(t?.args || "") + Cr(t?.output || ""), 0)), t;
|
|
4037
|
-
}
|
|
4038
4035
|
function Tr(e) {
|
|
4039
|
-
|
|
4036
|
+
if (!e) return 0;
|
|
4037
|
+
if (e.role === "system") return e.eventType === "context_checkpoint" ? wr(e.summary || "") : 0;
|
|
4038
|
+
let t = wr(e.content || "");
|
|
4039
|
+
return e.tools && (t += Object.values(e.tools).reduce((e, t) => e + wr(t?.name || "") + wr(t?.args || "") + wr(t?.output || ""), 0)), t;
|
|
4040
4040
|
}
|
|
4041
4041
|
function Er(e) {
|
|
4042
|
-
return e ?
|
|
4042
|
+
return e ? Sr(e.context_window_tokens) ?? Sr(e?.limits?.context_window_tokens) : null;
|
|
4043
|
+
}
|
|
4044
|
+
function Dr(e) {
|
|
4045
|
+
return e ? Sr(e.auto_compact_threshold_percentage) ?? 84 : 84;
|
|
4043
4046
|
}
|
|
4044
|
-
function
|
|
4045
|
-
let r =
|
|
4047
|
+
function Or({ messages: e, draftInput: t, selectedModel: n }) {
|
|
4048
|
+
let r = Er(n);
|
|
4046
4049
|
if (!r) return null;
|
|
4047
4050
|
let i = [...e || []].reverse().find((e) => e?.role === "system" && e?.eventType === "context_checkpoint" && e?.status === "running");
|
|
4048
4051
|
if (i) {
|
|
4049
|
-
let e =
|
|
4052
|
+
let e = Tr(i);
|
|
4050
4053
|
return {
|
|
4051
4054
|
label: "正在压缩上下文…",
|
|
4052
4055
|
phase: "compressing",
|
|
@@ -4055,10 +4058,10 @@ function Dr({ messages: e, draftInput: t, selectedModel: n }) {
|
|
|
4055
4058
|
percent: Math.min(100, Math.max(0, Math.round(e / r * 100)))
|
|
4056
4059
|
};
|
|
4057
4060
|
}
|
|
4058
|
-
let a = (e || []).reduce((e, t) => e +
|
|
4061
|
+
let a = (e || []).reduce((e, t) => e + Tr(t), 0) + wr(t || "");
|
|
4059
4062
|
if (a <= 0) return null;
|
|
4060
4063
|
let o = Math.min(100, Math.max(0, Math.round(a / r * 100)));
|
|
4061
|
-
return o >=
|
|
4064
|
+
return o >= Dr(n) ? {
|
|
4062
4065
|
label: `估算上下文 ${o}% · 即将压缩`,
|
|
4063
4066
|
phase: "warning",
|
|
4064
4067
|
percent: o,
|
|
@@ -4074,20 +4077,20 @@ function Dr({ messages: e, draftInput: t, selectedModel: n }) {
|
|
|
4074
4077
|
}
|
|
4075
4078
|
//#endregion
|
|
4076
4079
|
//#region src/utils/session-message-history.ts
|
|
4077
|
-
function
|
|
4080
|
+
function kr(e) {
|
|
4078
4081
|
return e.requestedSessionId === e.activeSessionId && e.requestToken === e.activeRequestToken;
|
|
4079
4082
|
}
|
|
4080
4083
|
//#endregion
|
|
4081
4084
|
//#region src/components/chat/ConnectedMessageList.tsx
|
|
4082
|
-
function
|
|
4083
|
-
let m = Y((e) => e.messages), h = U((e) => e.currentSessionId), g = U((e) => e.isLoadingSessions), _ = i((e) => !!(e.getSessionActivity(h) && e.isSessionStreaming(h))), v = i((e) => e.getSessionActivity(h)), y = Q((e) => e.getSessionCheckpoints(h)), b = U((e) => h ? e.messageHistory[h] : null), x = g || !!b?.isLoadingInitial, S = T((e) => e.input), w = s((e) => e.availableModels), ee = s((e) => e.selectedModel), te = T((e) => e.previewAttachment), ne = T((e) => e.previewImageSize), E =
|
|
4085
|
+
function Ar({ agentName: e, isMobile: t, onDeleteFeedback: n, onSubmitFeedback: r, onRespondToApproval: a, onRespondToAguiApproval: o, onSubmitAguiAction: c, onStopGeneration: l, onCancelRemote: u, checkpointResumeEnabled: d = !1, onResumeCheckpoint: f, onLoadOlderSessionMessages: p }) {
|
|
4086
|
+
let m = Y((e) => e.messages), h = U((e) => e.currentSessionId), g = U((e) => e.isLoadingSessions), _ = i((e) => !!(e.getSessionActivity(h) && e.isSessionStreaming(h))), v = i((e) => e.getSessionActivity(h)), y = Q((e) => e.getSessionCheckpoints(h)), b = U((e) => h ? e.messageHistory[h] : null), x = g || !!b?.isLoadingInitial, S = T((e) => e.input), w = s((e) => e.availableModels), ee = s((e) => e.selectedModel), te = T((e) => e.previewAttachment), ne = T((e) => e.previewImageSize), E = R(null), D = R(!0), O = R(!1), k = R(0), re = R(_), ie = R(!1), A = R(null), j = R(!0), M = L(() => w.find((e) => e.id === ee) || null, [w, ee]), oe = L(() => Or({
|
|
4084
4087
|
messages: m,
|
|
4085
4088
|
draftInput: S,
|
|
4086
|
-
selectedModel:
|
|
4089
|
+
selectedModel: M
|
|
4087
4090
|
}), [
|
|
4088
4091
|
S,
|
|
4089
4092
|
m,
|
|
4090
|
-
|
|
4093
|
+
M
|
|
4091
4094
|
]);
|
|
4092
4095
|
return I(() => {
|
|
4093
4096
|
re.current = _;
|
|
@@ -4101,13 +4104,13 @@ function kr({ agentName: e, isMobile: t, onDeleteFeedback: n, onSubmitFeedback:
|
|
|
4101
4104
|
if (k.current = e.scrollTop, e.scrollTop < 200 && h && b?.hasMore && !b.isLoadingOlder && !ie.current && p) {
|
|
4102
4105
|
let t = e.scrollHeight, n = h, r = Symbol(n);
|
|
4103
4106
|
ie.current = !0, A.current = r, p(n).then(() => {
|
|
4104
|
-
|
|
4107
|
+
kr({
|
|
4105
4108
|
requestedSessionId: n,
|
|
4106
4109
|
activeSessionId: U.getState().currentSessionId,
|
|
4107
4110
|
requestToken: r,
|
|
4108
4111
|
activeRequestToken: A.current
|
|
4109
4112
|
}) && requestAnimationFrame(() => {
|
|
4110
|
-
if (!
|
|
4113
|
+
if (!kr({
|
|
4111
4114
|
requestedSessionId: n,
|
|
4112
4115
|
activeSessionId: U.getState().currentSessionId,
|
|
4113
4116
|
requestToken: r,
|
|
@@ -4168,7 +4171,7 @@ function kr({ agentName: e, isMobile: t, onDeleteFeedback: n, onSubmitFeedback:
|
|
|
4168
4171
|
}
|
|
4169
4172
|
D.current && (e.scrollTop = e.scrollHeight, k.current = e.scrollTop);
|
|
4170
4173
|
}
|
|
4171
|
-
}, [m, _]), /* @__PURE__ */
|
|
4174
|
+
}, [m, _]), /* @__PURE__ */ P(ae, { children: [/* @__PURE__ */ N(C, {
|
|
4172
4175
|
agentName: e,
|
|
4173
4176
|
isMobile: t,
|
|
4174
4177
|
isStreaming: _,
|
|
@@ -4189,7 +4192,7 @@ function kr({ agentName: e, isMobile: t, onDeleteFeedback: n, onSubmitFeedback:
|
|
|
4189
4192
|
checkpoints: d ? y : [],
|
|
4190
4193
|
onResumeCheckpoint: f,
|
|
4191
4194
|
scrollRef: E
|
|
4192
|
-
}), /* @__PURE__ */
|
|
4195
|
+
}), /* @__PURE__ */ N(xr, {
|
|
4193
4196
|
attachment: te,
|
|
4194
4197
|
isMobile: t,
|
|
4195
4198
|
previewImageSize: ne,
|
|
@@ -4201,7 +4204,7 @@ function kr({ agentName: e, isMobile: t, onDeleteFeedback: n, onSubmitFeedback:
|
|
|
4201
4204
|
}
|
|
4202
4205
|
//#endregion
|
|
4203
4206
|
//#region src/utils/attachment.ts
|
|
4204
|
-
function
|
|
4207
|
+
function jr(e) {
|
|
4205
4208
|
return [
|
|
4206
4209
|
e.name,
|
|
4207
4210
|
e.size,
|
|
@@ -4209,64 +4212,64 @@ function Ar(e) {
|
|
|
4209
4212
|
e.type
|
|
4210
4213
|
].join(":");
|
|
4211
4214
|
}
|
|
4212
|
-
function
|
|
4215
|
+
function Mr(e, t) {
|
|
4213
4216
|
let n = /* @__PURE__ */ new Map();
|
|
4214
|
-
for (let t of e) n.set(
|
|
4215
|
-
for (let e of t) n.set(
|
|
4217
|
+
for (let t of e) n.set(jr(t), t);
|
|
4218
|
+
for (let e of t) n.set(jr(e), e);
|
|
4216
4219
|
return Array.from(n.values());
|
|
4217
4220
|
}
|
|
4218
|
-
function
|
|
4221
|
+
function Nr(e) {
|
|
4219
4222
|
return Array.from(e.clipboardData.items || []).filter((e) => e.kind === "file").map((e) => e.getAsFile()).filter((e) => !!e);
|
|
4220
4223
|
}
|
|
4221
4224
|
//#endregion
|
|
4222
4225
|
//#region src/components/chat/ConnectedComposer.tsx
|
|
4223
|
-
function
|
|
4224
|
-
let
|
|
4225
|
-
messages:
|
|
4226
|
-
draftInput:
|
|
4227
|
-
selectedModel:
|
|
4226
|
+
function Pr({ composerMaxHeight: e, submitDraft: t, stopGeneration: n, cancelRemote: r, isMobile: a, approvalEnabled: o = !1, approvalPolicy: c }) {
|
|
4227
|
+
let u = T((e) => e.input), d = T((e) => e.attachments), f = U((e) => e.currentSessionId), p = i((e) => !!(e.getSessionActivity(f) && e.isSessionStreaming(f))), m = T((e) => e.queuedDrafts), h = Y((e) => e.messages), g = s((e) => e.availableModels), _ = s((e) => e.selectedModel), v = R(null), y = R(null), b = L(() => g.find((e) => e.id === _) || null, [g, _]), x = L(() => Or({
|
|
4228
|
+
messages: h,
|
|
4229
|
+
draftInput: u,
|
|
4230
|
+
selectedModel: b
|
|
4228
4231
|
}), [
|
|
4229
|
-
|
|
4230
|
-
|
|
4231
|
-
|
|
4232
|
+
u,
|
|
4233
|
+
h,
|
|
4234
|
+
b
|
|
4232
4235
|
]), S = F((e, n) => {
|
|
4233
4236
|
!e && n.length === 0 || (T.getState().setInput(""), T.getState().setAttachments([]), t(e, n));
|
|
4234
4237
|
}, [t]);
|
|
4235
4238
|
I(() => {
|
|
4236
|
-
|
|
4237
|
-
}, [
|
|
4239
|
+
y.current && (y.current.style.height = "auto", y.current.style.height = `${Math.min(y.current.scrollHeight, e)}px`);
|
|
4240
|
+
}, [u, e]);
|
|
4238
4241
|
let C = (t) => {
|
|
4239
4242
|
T.getState().setInput(t.target.value), t.target.style.height = "auto", t.target.style.height = `${Math.min(t.target.scrollHeight, e)}px`;
|
|
4240
4243
|
}, w = (e) => {
|
|
4241
|
-
e.length && T.getState().setAttachments((t) =>
|
|
4244
|
+
e.length && T.getState().setAttachments((t) => Mr(t, e));
|
|
4242
4245
|
};
|
|
4243
|
-
return /* @__PURE__ */
|
|
4244
|
-
attachments:
|
|
4245
|
-
composerContextIndicator:
|
|
4246
|
+
return /* @__PURE__ */ N(l, {
|
|
4247
|
+
attachments: d,
|
|
4248
|
+
composerContextIndicator: x,
|
|
4246
4249
|
composerMaxHeight: e,
|
|
4247
|
-
fileInputRef:
|
|
4248
|
-
input:
|
|
4250
|
+
fileInputRef: v,
|
|
4251
|
+
input: u,
|
|
4249
4252
|
isMobile: a,
|
|
4250
|
-
isStreaming:
|
|
4253
|
+
isStreaming: p,
|
|
4251
4254
|
approvalEnabled: o,
|
|
4252
4255
|
approvalPolicy: c,
|
|
4253
|
-
queuedDrafts:
|
|
4256
|
+
queuedDrafts: m,
|
|
4254
4257
|
onAppendAttachments: w,
|
|
4255
4258
|
onInputChange: C,
|
|
4256
4259
|
onPaste: (e) => {
|
|
4257
|
-
let t =
|
|
4260
|
+
let t = Nr(e);
|
|
4258
4261
|
t.length && (e.preventDefault(), e.stopPropagation(), w(t));
|
|
4259
4262
|
},
|
|
4260
4263
|
onRemoveAttachment: (e) => T.getState().setAttachments((t) => t.filter((t, n) => n !== e)),
|
|
4261
4264
|
onStopGeneration: n,
|
|
4262
4265
|
onCancelRemote: r,
|
|
4263
4266
|
onSubmit: S,
|
|
4264
|
-
textareaRef:
|
|
4267
|
+
textareaRef: y
|
|
4265
4268
|
});
|
|
4266
4269
|
}
|
|
4267
4270
|
//#endregion
|
|
4268
4271
|
//#region src/api/session.ts
|
|
4269
|
-
async function
|
|
4272
|
+
async function Fr(e, t) {
|
|
4270
4273
|
let n = await J("ListSessions", {
|
|
4271
4274
|
AgentId: e,
|
|
4272
4275
|
Page: t?.page,
|
|
@@ -4279,18 +4282,18 @@ async function Pr(e, t) {
|
|
|
4279
4282
|
PageSize: Number.isFinite(Number(n.PageSize)) ? Number(n.PageSize) : t?.pageSize ?? n.Sessions?.length ?? 0
|
|
4280
4283
|
};
|
|
4281
4284
|
}
|
|
4282
|
-
async function
|
|
4285
|
+
async function Ir(e, t) {
|
|
4283
4286
|
return (await J("CreateSession", { AgentId: e }, t)).Session;
|
|
4284
4287
|
}
|
|
4285
|
-
async function
|
|
4288
|
+
async function Lr(e, t) {
|
|
4286
4289
|
await J("DeleteSession", { SessionId: e }, t);
|
|
4287
4290
|
}
|
|
4288
|
-
async function
|
|
4291
|
+
async function Rr(e, t) {
|
|
4289
4292
|
return (await J("GetSession", { SessionId: e }, t)).Session;
|
|
4290
4293
|
}
|
|
4291
4294
|
//#endregion
|
|
4292
4295
|
//#region src/api/events.ts
|
|
4293
|
-
async function
|
|
4296
|
+
async function zr(e, t) {
|
|
4294
4297
|
let n = await J("ListSessionEvents", {
|
|
4295
4298
|
SessionId: e,
|
|
4296
4299
|
Offset: t?.offset,
|
|
@@ -4305,7 +4308,7 @@ async function Rr(e, t) {
|
|
|
4305
4308
|
}
|
|
4306
4309
|
//#endregion
|
|
4307
4310
|
//#region src/api/messages.ts
|
|
4308
|
-
async function
|
|
4311
|
+
async function Br(e, t) {
|
|
4309
4312
|
let n = await J("ListSessionMessages", {
|
|
4310
4313
|
AgentId: t?.agentId,
|
|
4311
4314
|
SessionId: e,
|
|
@@ -4325,19 +4328,19 @@ async function zr(e, t) {
|
|
|
4325
4328
|
}
|
|
4326
4329
|
//#endregion
|
|
4327
4330
|
//#region src/api/run.ts
|
|
4328
|
-
async function
|
|
4329
|
-
return
|
|
4331
|
+
async function Vr(e, t) {
|
|
4332
|
+
return Ve("RunAgent", e, t);
|
|
4330
4333
|
}
|
|
4331
4334
|
//#endregion
|
|
4332
4335
|
//#region src/api/checkpoints.ts
|
|
4333
|
-
async function
|
|
4336
|
+
async function Hr(e, t) {
|
|
4334
4337
|
let n = {
|
|
4335
4338
|
AgentId: e.agentId,
|
|
4336
4339
|
SessionId: e.sessionId
|
|
4337
4340
|
};
|
|
4338
4341
|
return e.runId && (n.RunId = e.runId), J("ListSessionCheckpoints", n, t);
|
|
4339
4342
|
}
|
|
4340
|
-
async function
|
|
4343
|
+
async function Ur(e, t) {
|
|
4341
4344
|
return J("GetCheckpointResumePreview", {
|
|
4342
4345
|
AgentId: e.agentId,
|
|
4343
4346
|
SessionId: e.sessionId,
|
|
@@ -4345,14 +4348,14 @@ async function Hr(e, t) {
|
|
|
4345
4348
|
CheckpointId: e.checkpointId
|
|
4346
4349
|
}, t);
|
|
4347
4350
|
}
|
|
4348
|
-
async function
|
|
4351
|
+
async function Wr(e, t) {
|
|
4349
4352
|
let n = {
|
|
4350
4353
|
AgentId: e.agentId,
|
|
4351
4354
|
SessionId: e.sessionId
|
|
4352
4355
|
};
|
|
4353
4356
|
return e.runId && (n.RunId = e.runId), e.checkpointId && (n.CheckpointId = e.checkpointId), J("ListToolReceipts", n, t);
|
|
4354
4357
|
}
|
|
4355
|
-
async function
|
|
4358
|
+
async function Gr(e, t) {
|
|
4356
4359
|
let n = {
|
|
4357
4360
|
AgentId: e.agentId,
|
|
4358
4361
|
SessionId: e.sessionId,
|
|
@@ -4360,28 +4363,28 @@ async function Wr(e, t) {
|
|
|
4360
4363
|
CheckpointId: e.checkpointId,
|
|
4361
4364
|
Stream: !0
|
|
4362
4365
|
};
|
|
4363
|
-
return e.resumeAttemptId && (n.ResumeAttemptId = e.resumeAttemptId), e.invocationId && (n.InvocationId = e.invocationId),
|
|
4366
|
+
return e.resumeAttemptId && (n.ResumeAttemptId = e.resumeAttemptId), e.invocationId && (n.InvocationId = e.invocationId), Ve("ResumeRun", n, t);
|
|
4364
4367
|
}
|
|
4365
4368
|
//#endregion
|
|
4366
4369
|
//#region src/api/workspace.ts
|
|
4367
|
-
async function
|
|
4370
|
+
async function Kr(e, t, n) {
|
|
4368
4371
|
return J("ListWorkspaceFiles", {
|
|
4369
4372
|
AgentId: e,
|
|
4370
4373
|
Path: t,
|
|
4371
4374
|
Recursive: n
|
|
4372
4375
|
});
|
|
4373
4376
|
}
|
|
4374
|
-
async function
|
|
4375
|
-
return
|
|
4377
|
+
async function qr(e) {
|
|
4378
|
+
return ze("AddWorkspaceFile", e);
|
|
4376
4379
|
}
|
|
4377
|
-
async function
|
|
4380
|
+
async function Jr(e, t) {
|
|
4378
4381
|
return J("DeleteWorkspaceFile", {
|
|
4379
4382
|
AgentId: e,
|
|
4380
4383
|
Path: t
|
|
4381
4384
|
});
|
|
4382
4385
|
}
|
|
4383
|
-
async function
|
|
4384
|
-
return
|
|
4386
|
+
async function Yr(e, t, n) {
|
|
4387
|
+
return Be("GetWorkspaceFileContent", {
|
|
4385
4388
|
AgentId: e,
|
|
4386
4389
|
FilePath: t
|
|
4387
4390
|
}, {
|
|
@@ -4391,47 +4394,47 @@ async function Jr(e, t, n) {
|
|
|
4391
4394
|
}
|
|
4392
4395
|
//#endregion
|
|
4393
4396
|
//#region src/api/upload.ts
|
|
4394
|
-
async function
|
|
4395
|
-
return
|
|
4397
|
+
async function Xr(e, t) {
|
|
4398
|
+
return ze("UploadFile", e, t);
|
|
4396
4399
|
}
|
|
4397
4400
|
//#endregion
|
|
4398
4401
|
//#region src/core/api/facade.ts
|
|
4399
|
-
var
|
|
4402
|
+
var Zr = class {
|
|
4400
4403
|
async listSessions(e, t) {
|
|
4401
|
-
return
|
|
4404
|
+
return Fr(e, t);
|
|
4402
4405
|
}
|
|
4403
4406
|
async createSession(e, t) {
|
|
4404
|
-
return { SessionId: (await
|
|
4407
|
+
return { SessionId: (await Ir(e, t)).SessionId };
|
|
4405
4408
|
}
|
|
4406
4409
|
async deleteSession(e, t) {
|
|
4407
|
-
await
|
|
4410
|
+
await Lr(e, t);
|
|
4408
4411
|
}
|
|
4409
4412
|
async getSession(e, t) {
|
|
4410
|
-
return
|
|
4413
|
+
return Rr(e, t);
|
|
4411
4414
|
}
|
|
4412
4415
|
async listSessionEvents(e, t) {
|
|
4413
|
-
return
|
|
4416
|
+
return zr(e, t);
|
|
4414
4417
|
}
|
|
4415
4418
|
async listSessionMessages(e, t) {
|
|
4416
|
-
return
|
|
4419
|
+
return Br(e, t);
|
|
4417
4420
|
}
|
|
4418
4421
|
async listSessionCheckpoints(e, t) {
|
|
4419
|
-
return
|
|
4422
|
+
return Hr(e, t);
|
|
4420
4423
|
}
|
|
4421
4424
|
async previewCheckpointResume(e, t) {
|
|
4422
|
-
return
|
|
4425
|
+
return Ur(e, t);
|
|
4423
4426
|
}
|
|
4424
4427
|
async listToolReceipts(e, t) {
|
|
4425
|
-
return
|
|
4428
|
+
return Wr(e, t);
|
|
4426
4429
|
}
|
|
4427
4430
|
async runAgent(e, t) {
|
|
4428
|
-
return
|
|
4431
|
+
return Vr(e, t);
|
|
4429
4432
|
}
|
|
4430
4433
|
async resumeRun(e, t) {
|
|
4431
|
-
return
|
|
4434
|
+
return Gr(e, t);
|
|
4432
4435
|
}
|
|
4433
4436
|
async subscribeRunEvents(e, t) {
|
|
4434
|
-
return
|
|
4437
|
+
return He("SubscribeRunEvents", {
|
|
4435
4438
|
SessionId: e.sessionId,
|
|
4436
4439
|
InvocationId: e.invocationId,
|
|
4437
4440
|
AfterSeqId: String(e.afterSeqId)
|
|
@@ -4454,76 +4457,76 @@ var Xr = class {
|
|
|
4454
4457
|
await J("DeleteResponseFeedback", e, t);
|
|
4455
4458
|
}
|
|
4456
4459
|
async listWorkspaceFiles(e, t, n) {
|
|
4457
|
-
return
|
|
4460
|
+
return Kr(e, t, n);
|
|
4458
4461
|
}
|
|
4459
4462
|
async addWorkspaceFile(e) {
|
|
4460
|
-
return
|
|
4463
|
+
return qr(e);
|
|
4461
4464
|
}
|
|
4462
4465
|
async deleteWorkspaceFile(e, t) {
|
|
4463
|
-
await
|
|
4466
|
+
await Jr(e, t);
|
|
4464
4467
|
}
|
|
4465
4468
|
async getWorkspaceFileContent(e, t, n) {
|
|
4466
|
-
return
|
|
4469
|
+
return Yr(e, t, n);
|
|
4467
4470
|
}
|
|
4468
4471
|
async listAgentModels(e) {
|
|
4469
|
-
return
|
|
4472
|
+
return We(e);
|
|
4470
4473
|
}
|
|
4471
4474
|
async getAgentUiBootstrap() {
|
|
4472
|
-
return
|
|
4475
|
+
return Ue();
|
|
4473
4476
|
}
|
|
4474
4477
|
async uploadFile(e, t) {
|
|
4475
|
-
return
|
|
4478
|
+
return Xr(e, t);
|
|
4476
4479
|
}
|
|
4477
|
-
},
|
|
4478
|
-
function
|
|
4479
|
-
let
|
|
4480
|
-
isMobile:
|
|
4481
|
-
viewportHeight:
|
|
4482
|
-
}), { fetchSessions:
|
|
4483
|
-
agentId:
|
|
4484
|
-
currentSessionId:
|
|
4485
|
-
isMobile:
|
|
4480
|
+
}, Qr = new Zr(), $r = se.lazy(() => import("./ArtifactsPanel-DjKIRTwo.js").then((e) => ({ default: e.ArtifactsPanel }))), ei = se.lazy(() => import("./NativeTerminalPanel-BLhX4eDs.js").then((e) => e.n).then((e) => ({ default: e.NativeTerminalPanel })));
|
|
4481
|
+
function ti({ apiAdapter: e, initialSurface: t = "chat", routeShell: r } = {}) {
|
|
4482
|
+
let c = e || Qr, l = B((e) => e.agentId), d = U((e) => e.currentSessionId), f = i((e) => e.isStreaming), p = T((e) => e.sidebarOpen), m = T((e) => e.mobileSidebarOpen), h = T((e) => e.mobileActionsOpen), g = B((e) => e.agentName), _ = s((e) => e.selectedModel), v = s((e) => e.availableModels), y = s((e) => e.modelSource), b = s((e) => e.modelCatalogLoaded), x = s((e) => e.thinkingMode), S = u((e) => e.permissionMode), C = B((e) => e.agentFramework), w = B((e) => e.workspaceFiles), D = B((e) => e.accessMode), O = T((e) => e.workspacePanelOpen), k = T((e) => e.workspacePanelWidth), re = T((e) => e.workspacePanelFullscreen), ie = B((e) => e.apiFormats), j = B((e) => e.capabilities), M = A((e) => e.visible && !!e.content), oe = R([]), se = R(null), { isMobile: L, viewportHeight: z } = Ie(), ue = Se({
|
|
4483
|
+
isMobile: L,
|
|
4484
|
+
viewportHeight: z
|
|
4485
|
+
}), { fetchSessions: de, loadMoreSessions: fe, loadSession: pe, loadOlderSessionMessages: me, createNewSession: he, deleteSession: ge, currentSessionIdRef: V, agentIdRef: _e, runSubscriptionAbortRef: H } = lr({
|
|
4486
|
+
agentId: l,
|
|
4487
|
+
currentSessionId: d,
|
|
4488
|
+
isMobile: L,
|
|
4486
4489
|
uiCapabilities: j,
|
|
4487
|
-
api:
|
|
4490
|
+
api: c,
|
|
4488
4491
|
resetCompaction: () => {},
|
|
4489
|
-
disconnectRun: () =>
|
|
4492
|
+
disconnectRun: () => se.current?.()
|
|
4490
4493
|
}), ve = F((e) => {
|
|
4491
4494
|
if (!e) return;
|
|
4492
4495
|
let t = () => {
|
|
4493
|
-
U.getState().clearSessionMessageHistory(e),
|
|
4496
|
+
U.getState().clearSessionMessageHistory(e), de(_e.current, e);
|
|
4494
4497
|
};
|
|
4495
4498
|
queueMicrotask(t), window.setTimeout(t, 1800), window.setTimeout(t, 5e3);
|
|
4496
|
-
}, [
|
|
4497
|
-
agentId:
|
|
4498
|
-
currentSessionId:
|
|
4499
|
+
}, [_e, de]), ye = v.find((e) => e.id === _) || null, { submitDraft: be, stopGeneration: xe, disconnectRun: Ce, resumeCheckpoint: we, submitAguiAction: Te, respondToAguiApproval: Ee } = Hn({
|
|
4500
|
+
agentId: l,
|
|
4501
|
+
currentSessionId: d,
|
|
4499
4502
|
agentFramework: C,
|
|
4500
|
-
apiFormats:
|
|
4503
|
+
apiFormats: ie,
|
|
4501
4504
|
selectedModel: _,
|
|
4502
4505
|
selectedModelMetadata: ye,
|
|
4503
4506
|
thinkingMode: x,
|
|
4504
4507
|
permissionMode: S,
|
|
4505
4508
|
uiCapabilities: j,
|
|
4506
|
-
isMobile:
|
|
4507
|
-
api:
|
|
4509
|
+
isMobile: L,
|
|
4510
|
+
api: c,
|
|
4508
4511
|
currentSessionIdRef: V,
|
|
4509
|
-
agentIdRef:
|
|
4512
|
+
agentIdRef: _e,
|
|
4510
4513
|
queuedDraftRef: oe,
|
|
4511
4514
|
onRunSettled: ve
|
|
4512
4515
|
});
|
|
4513
4516
|
I(() => {
|
|
4514
|
-
|
|
4517
|
+
se.current = Ce;
|
|
4515
4518
|
}, [Ce]);
|
|
4516
|
-
let
|
|
4519
|
+
let De = F(() => {
|
|
4517
4520
|
let e = V.current;
|
|
4518
|
-
|
|
4521
|
+
H.current?.abort(), i.getState().stopActivity(), i.getState().stopSessionActivity(e), xe();
|
|
4519
4522
|
}, [
|
|
4520
4523
|
V,
|
|
4521
|
-
|
|
4522
|
-
|
|
4524
|
+
H,
|
|
4525
|
+
xe
|
|
4523
4526
|
]), ke = F(async () => {
|
|
4524
4527
|
let e = V.current, t = i.getState(), n = t.getSessionActivity(e)?.runId || t.currentRunId || "";
|
|
4525
4528
|
if (e && n) try {
|
|
4526
|
-
await
|
|
4529
|
+
await c.cancelRun(l, e, n), i.getState().stopSessionActivity(e, "取消请求已发送,后台运行会停在最近 checkpoint。");
|
|
4527
4530
|
} catch (t) {
|
|
4528
4531
|
console.warn("[App] cancelRun failed:", t), i.getState().updateActivity({
|
|
4529
4532
|
sessionId: e,
|
|
@@ -4535,118 +4538,118 @@ function ei({ apiAdapter: e, initialSurface: t = "chat", routeShell: r } = {}) {
|
|
|
4535
4538
|
}
|
|
4536
4539
|
ve(e);
|
|
4537
4540
|
}, [
|
|
4538
|
-
a,
|
|
4539
4541
|
c,
|
|
4542
|
+
l,
|
|
4540
4543
|
V,
|
|
4541
4544
|
ve
|
|
4542
|
-
]), { submitResponseFeedback: Ae, deleteResponseFeedback: je, respondToApproval: Me } =
|
|
4543
|
-
agentId:
|
|
4544
|
-
currentSessionId:
|
|
4545
|
-
isStreaming:
|
|
4546
|
-
api:
|
|
4545
|
+
]), { submitResponseFeedback: Ae, deleteResponseFeedback: je, respondToApproval: Me } = Un({
|
|
4546
|
+
agentId: l,
|
|
4547
|
+
currentSessionId: d,
|
|
4548
|
+
isStreaming: f,
|
|
4549
|
+
api: c,
|
|
4547
4550
|
submitDraft: be
|
|
4548
4551
|
});
|
|
4549
|
-
|
|
4550
|
-
|
|
4552
|
+
qe({ fetchSessions: de }), I(() => {
|
|
4553
|
+
_e.current = l, V.current = d, Oe(l, d);
|
|
4551
4554
|
}, [
|
|
4552
|
-
|
|
4553
|
-
|
|
4554
|
-
|
|
4555
|
+
l,
|
|
4556
|
+
d,
|
|
4557
|
+
_e,
|
|
4555
4558
|
V
|
|
4556
4559
|
]), I(() => {
|
|
4557
|
-
|
|
4558
|
-
}, [
|
|
4560
|
+
L ? T.getState().setWorkspacePanelFullscreen(!1) : (T.getState().setMobileSidebarOpen(!1), T.getState().setMobileActionsOpen(!1));
|
|
4561
|
+
}, [L]), I(() => {
|
|
4559
4562
|
O || T.getState().setWorkspacePanelFullscreen(!1);
|
|
4560
4563
|
}, [O]), I(() => () => {
|
|
4561
|
-
|
|
4562
|
-
}, [
|
|
4563
|
-
let
|
|
4564
|
+
H.current?.abort();
|
|
4565
|
+
}, [H]);
|
|
4566
|
+
let Ne = n(j), Fe = !!j.Thinking, W = ee({
|
|
4564
4567
|
workspaceFiles: w,
|
|
4565
4568
|
accessMode: D
|
|
4566
|
-
}), G = te({ isMobile:
|
|
4569
|
+
}), G = te({ isMobile: L }), K = Pe({
|
|
4567
4570
|
capability: j.NativeDashboard,
|
|
4568
4571
|
agentFramework: C,
|
|
4569
4572
|
accessMode: D,
|
|
4570
4573
|
origin: window.location.origin
|
|
4571
|
-
}),
|
|
4574
|
+
}), q = !Ne, Le = C === "openclaw" ? "OpenClaw" : C === "hermes" ? "Hermes" : "原生运行时", Re = ye?.display_name || _ || "", J = !L && p && Ne, ze = R(!1), [Be, Ve] = le(t === "tui"), He = Be && !!j.NativeTerminal?.Enabled;
|
|
4572
4575
|
I(() => {
|
|
4573
4576
|
ze.current || t !== "workspace" || !W || (ze.current = !0, T.getState().setWorkspacePanelOpen(!0), T.getState().setWorkspacePanelFullscreen(!0));
|
|
4574
4577
|
}, [t, W]);
|
|
4575
|
-
let Ue = /* @__PURE__ */
|
|
4578
|
+
let Ue = /* @__PURE__ */ P("div", {
|
|
4576
4579
|
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",
|
|
4577
4580
|
children: [
|
|
4578
|
-
/* @__PURE__ */
|
|
4581
|
+
/* @__PURE__ */ N(ur, {
|
|
4579
4582
|
uiCapabilities: j,
|
|
4580
4583
|
createNewSession: he,
|
|
4581
4584
|
deleteSession: ge,
|
|
4582
4585
|
loadSession: pe,
|
|
4583
4586
|
loadMoreSessions: fe
|
|
4584
4587
|
}),
|
|
4585
|
-
/* @__PURE__ */
|
|
4588
|
+
/* @__PURE__ */ P("main", {
|
|
4586
4589
|
className: "relative flex min-w-0 flex-1 flex-col bg-white dark:bg-slate-900",
|
|
4587
|
-
children: [/* @__PURE__ */
|
|
4590
|
+
children: [/* @__PURE__ */ N(a, {
|
|
4588
4591
|
agentName: g,
|
|
4589
|
-
currentSessionId:
|
|
4590
|
-
nativeLauncherMode:
|
|
4591
|
-
isMobile:
|
|
4592
|
+
currentSessionId: d,
|
|
4593
|
+
nativeLauncherMode: q,
|
|
4594
|
+
isMobile: L,
|
|
4592
4595
|
sidebarOpen: p,
|
|
4593
4596
|
mobileSidebarOpen: m,
|
|
4594
4597
|
onToggleSidebar: () => {
|
|
4595
|
-
|
|
4598
|
+
L ? T.getState().toggleMobileSidebar() : T.getState().toggleSidebar();
|
|
4596
4599
|
},
|
|
4597
4600
|
availableModels: v,
|
|
4598
4601
|
selectedModel: _,
|
|
4599
4602
|
onSelectModel: (e) => {
|
|
4600
|
-
s.getState().setSelectedModel(e),
|
|
4603
|
+
s.getState().setSelectedModel(e), L && T.getState().setMobileActionsOpen(!1);
|
|
4601
4604
|
},
|
|
4602
|
-
selectedModelLabel:
|
|
4605
|
+
selectedModelLabel: Re,
|
|
4603
4606
|
modelCatalogLoaded: b,
|
|
4604
4607
|
modelSource: y,
|
|
4605
4608
|
thinkingEnabled: Fe,
|
|
4606
4609
|
thinkingMode: x,
|
|
4607
|
-
onSelectThinkingMode: (e) => s.getState().setThinkingMode(
|
|
4610
|
+
onSelectThinkingMode: (e) => s.getState().setThinkingMode(o(e)),
|
|
4608
4611
|
mobileActionsOpen: h,
|
|
4609
4612
|
onMobileActionsOpenChange: (e) => T.getState().setMobileActionsOpen(e),
|
|
4610
4613
|
workspaceEnabled: W,
|
|
4611
4614
|
onOpenWorkspace: () => T.getState().setWorkspacePanelOpen(!0),
|
|
4612
4615
|
nativeManagementLink: K,
|
|
4613
4616
|
nativeTerminal: j.NativeTerminal
|
|
4614
|
-
}),
|
|
4615
|
-
productLabel:
|
|
4617
|
+
}), q ? /* @__PURE__ */ N(ne, {
|
|
4618
|
+
productLabel: Le,
|
|
4616
4619
|
nativeManagementLink: K,
|
|
4617
4620
|
nativeTerminal: j.NativeTerminal,
|
|
4618
4621
|
workspaceEnabled: W,
|
|
4619
4622
|
onOpenWorkspace: () => T.getState().setWorkspacePanelOpen(!0)
|
|
4620
|
-
}) : /* @__PURE__ */
|
|
4623
|
+
}) : /* @__PURE__ */ P(ae, { children: [/* @__PURE__ */ N(Ar, {
|
|
4621
4624
|
agentName: g,
|
|
4622
|
-
isMobile:
|
|
4625
|
+
isMobile: L,
|
|
4623
4626
|
onDeleteFeedback: je,
|
|
4624
4627
|
onSubmitFeedback: Ae,
|
|
4625
4628
|
onRespondToApproval: Me,
|
|
4626
4629
|
onRespondToAguiApproval: Ee,
|
|
4627
4630
|
onSubmitAguiAction: Te,
|
|
4628
|
-
onStopGeneration:
|
|
4631
|
+
onStopGeneration: De,
|
|
4629
4632
|
onCancelRemote: j.StopRun ? ke : void 0,
|
|
4630
4633
|
checkpointResumeEnabled: j.RunLifecycle.Enabled && j.RunLifecycle.Checkpoints && j.RunLifecycle.CheckpointResume,
|
|
4631
4634
|
onResumeCheckpoint: we,
|
|
4632
4635
|
onLoadOlderSessionMessages: me
|
|
4633
|
-
}), /* @__PURE__ */
|
|
4634
|
-
composerMaxHeight:
|
|
4636
|
+
}), /* @__PURE__ */ N(Pr, {
|
|
4637
|
+
composerMaxHeight: ue,
|
|
4635
4638
|
submitDraft: be,
|
|
4636
|
-
stopGeneration:
|
|
4639
|
+
stopGeneration: De,
|
|
4637
4640
|
cancelRemote: j.StopRun ? ke : void 0,
|
|
4638
|
-
isMobile:
|
|
4641
|
+
isMobile: L,
|
|
4639
4642
|
approvalEnabled: !!j.Approval && j.ApprovalPolicy?.RuntimeOverride !== !1,
|
|
4640
4643
|
approvalPolicy: j.ApprovalPolicy
|
|
4641
4644
|
})] })]
|
|
4642
4645
|
}),
|
|
4643
|
-
/* @__PURE__ */
|
|
4644
|
-
agentId:
|
|
4646
|
+
/* @__PURE__ */ N(E, {
|
|
4647
|
+
agentId: l,
|
|
4645
4648
|
capability: w,
|
|
4646
4649
|
workspacePanelOpen: O,
|
|
4647
4650
|
workspacePanelWidth: k,
|
|
4648
4651
|
workspacePanelFullscreen: re,
|
|
4649
|
-
isMobile:
|
|
4652
|
+
isMobile: L,
|
|
4650
4653
|
workspaceEnabled: W,
|
|
4651
4654
|
workspaceFiles: w,
|
|
4652
4655
|
workspacePanelPresentation: G,
|
|
@@ -4654,67 +4657,67 @@ function ei({ apiAdapter: e, initialSurface: t = "chat", routeShell: r } = {}) {
|
|
|
4654
4657
|
T.getState().setWorkspacePanelFullscreen(!1), T.getState().setWorkspacePanelOpen(!1);
|
|
4655
4658
|
},
|
|
4656
4659
|
handleWorkspacePanelResizeStart: (e) => {
|
|
4657
|
-
if (re ||
|
|
4660
|
+
if (re || L) return;
|
|
4658
4661
|
e.preventDefault();
|
|
4659
|
-
let t = e.clientX, n = k, r =
|
|
4662
|
+
let t = e.clientX, n = k, r = Ne && J ? 280 : 0, i = document.body.style.cursor, a = document.body.style.userSelect;
|
|
4660
4663
|
document.body.style.cursor = "col-resize", document.body.style.userSelect = "none";
|
|
4661
4664
|
let o = (e) => {
|
|
4662
4665
|
let i = n + t - e.clientX;
|
|
4663
|
-
T.getState().setWorkspacePanelWidth(
|
|
4666
|
+
T.getState().setWorkspacePanelWidth(bt(i, window.innerWidth, r));
|
|
4664
4667
|
}, s = () => {
|
|
4665
4668
|
document.body.style.cursor = i, document.body.style.userSelect = a, window.removeEventListener("pointermove", o), window.removeEventListener("pointerup", s), window.removeEventListener("pointercancel", s);
|
|
4666
4669
|
};
|
|
4667
4670
|
window.addEventListener("pointermove", o), window.addEventListener("pointerup", s), window.addEventListener("pointercancel", s);
|
|
4668
4671
|
},
|
|
4669
|
-
api:
|
|
4672
|
+
api: c
|
|
4670
4673
|
}),
|
|
4671
|
-
|
|
4674
|
+
M && /* @__PURE__ */ N(ce, {
|
|
4672
4675
|
fallback: null,
|
|
4673
|
-
children: /* @__PURE__ */
|
|
4676
|
+
children: /* @__PURE__ */ N($r, {})
|
|
4674
4677
|
}),
|
|
4675
|
-
He ? /* @__PURE__ */
|
|
4678
|
+
He ? /* @__PURE__ */ N(ce, {
|
|
4676
4679
|
fallback: null,
|
|
4677
|
-
children: /* @__PURE__ */
|
|
4680
|
+
children: /* @__PURE__ */ N(ei, {
|
|
4678
4681
|
capability: j.NativeTerminal,
|
|
4679
4682
|
open: !0,
|
|
4680
|
-
sessionId:
|
|
4683
|
+
sessionId: d,
|
|
4681
4684
|
onClose: () => Ve(!1)
|
|
4682
4685
|
})
|
|
4683
4686
|
}) : null
|
|
4684
4687
|
]
|
|
4685
4688
|
});
|
|
4686
|
-
return r ? /* @__PURE__ */
|
|
4689
|
+
return r ? /* @__PURE__ */ N(r, { children: Ue }) : Ue;
|
|
4687
4690
|
}
|
|
4688
4691
|
//#endregion
|
|
4689
4692
|
//#region src/core/transport/sse-transport.ts
|
|
4690
|
-
function
|
|
4693
|
+
function ni(e, t) {
|
|
4691
4694
|
if (e.eventName === "__ping__") {
|
|
4692
4695
|
i.getState().updateActivity({ countEvent: !1 });
|
|
4693
4696
|
return;
|
|
4694
4697
|
}
|
|
4695
4698
|
t.onEvent(e);
|
|
4696
4699
|
}
|
|
4697
|
-
var
|
|
4700
|
+
var ri = class {
|
|
4698
4701
|
protocol = "sse-post";
|
|
4699
4702
|
async connect(e, t) {
|
|
4700
|
-
let n = (await
|
|
4703
|
+
let n = (await Ve(e.action, e.body || {}, { signal: e.signal })).getReader(), r = new TextDecoder(), i = "", a = !1;
|
|
4701
4704
|
return (async () => {
|
|
4702
4705
|
try {
|
|
4703
4706
|
for (; !a;) {
|
|
4704
4707
|
let { value: e, done: a } = await n.read();
|
|
4705
4708
|
if (a) break;
|
|
4706
4709
|
i += r.decode(e, { stream: !0 });
|
|
4707
|
-
let { chunks: o, remainder: s } =
|
|
4710
|
+
let { chunks: o, remainder: s } = gt(i);
|
|
4708
4711
|
i = s;
|
|
4709
4712
|
for (let e of o) {
|
|
4710
4713
|
if (!e.trim()) continue;
|
|
4711
|
-
let n =
|
|
4714
|
+
let n = ht(e);
|
|
4712
4715
|
for (let e of n) {
|
|
4713
4716
|
if (e.eventName === "__done__") {
|
|
4714
4717
|
t.onComplete();
|
|
4715
4718
|
return;
|
|
4716
4719
|
}
|
|
4717
|
-
|
|
4720
|
+
ni(e, t);
|
|
4718
4721
|
}
|
|
4719
4722
|
}
|
|
4720
4723
|
}
|
|
@@ -4726,27 +4729,27 @@ var ni = class {
|
|
|
4726
4729
|
a = !0, n.cancel().catch(() => {});
|
|
4727
4730
|
};
|
|
4728
4731
|
}
|
|
4729
|
-
},
|
|
4732
|
+
}, ii = class {
|
|
4730
4733
|
protocol = "sse-get";
|
|
4731
4734
|
async connect(e, t) {
|
|
4732
|
-
let n = (await
|
|
4735
|
+
let n = (await He(e.action, e.params || {}, { signal: e.signal })).getReader(), r = new TextDecoder(), i = "", a = !1;
|
|
4733
4736
|
return (async () => {
|
|
4734
4737
|
try {
|
|
4735
4738
|
for (; !a;) {
|
|
4736
4739
|
let { value: e, done: a } = await n.read();
|
|
4737
4740
|
if (a) break;
|
|
4738
4741
|
i += r.decode(e, { stream: !0 });
|
|
4739
|
-
let { chunks: o, remainder: s } =
|
|
4742
|
+
let { chunks: o, remainder: s } = gt(i);
|
|
4740
4743
|
i = s;
|
|
4741
4744
|
for (let e of o) {
|
|
4742
4745
|
if (!e.trim()) continue;
|
|
4743
|
-
let n =
|
|
4746
|
+
let n = ht(e);
|
|
4744
4747
|
for (let e of n) {
|
|
4745
4748
|
if (e.eventName === "__done__") {
|
|
4746
4749
|
t.onComplete();
|
|
4747
4750
|
return;
|
|
4748
4751
|
}
|
|
4749
|
-
|
|
4752
|
+
ni(e, t);
|
|
4750
4753
|
}
|
|
4751
4754
|
}
|
|
4752
4755
|
}
|
|
@@ -4760,4 +4763,4 @@ var ni = class {
|
|
|
4760
4763
|
}
|
|
4761
4764
|
};
|
|
4762
4765
|
//#endregion
|
|
4763
|
-
export {
|
|
4766
|
+
export { ti as AgentWorkbench, Zr as ApiFacadeImpl, Nt as RunEngineImpl, ii as SseGetTransport, ri as SsePostTransport, pt as createProtocol };
|