@kingsoftcloud/ksadk-web 0.2.15 → 0.2.16

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