@kingsoftcloud/ksadk-web 0.2.12 → 0.2.14

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