@kingsoftcloud/ksadk-web 0.2.15 → 0.2.17

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 (122) hide show
  1. package/CHANGELOG.md +28 -0
  2. package/dist-ksadk/assets/{ArtifactsPanel-BQycE-WQ.js → ArtifactsPanel-xCGwbyKe.js} +1 -1
  3. package/dist-ksadk/assets/{CodeBlock-BBNgCUzs.js → CodeBlock-_d8IhXK6.js} +1 -1
  4. package/dist-ksadk/assets/{MathMessageMarkdown-BX8whIUg.js → MathMessageMarkdown-Dq5U0t0L.js} +1 -1
  5. package/dist-ksadk/assets/{MermaidBlock-D68B7zAv.js → MermaidBlock-BGEGRy9j.js} +6 -6
  6. package/dist-ksadk/assets/{NativeTerminalPanel-CyV-mhO3.js → NativeTerminalPanel-D9YIBBoT.js} +1 -1
  7. package/dist-ksadk/assets/{arc-wHztMxfp.js → arc-C-aJXEEz.js} +1 -1
  8. package/dist-ksadk/assets/architecture-7EHR7CIX-ElkGISgr.js +1 -0
  9. package/dist-ksadk/assets/{architectureDiagram-3BPJPVTR-HU4hsN_Y.js → architectureDiagram-3BPJPVTR-BS__hbBP.js} +1 -1
  10. package/dist-ksadk/assets/{blockDiagram-GPEHLZMM-DV_1dQBG.js → blockDiagram-GPEHLZMM-BL-uLGOT.js} +1 -1
  11. package/dist-ksadk/assets/{c4Diagram-AAUBKEIU-C5jN6E0t.js → c4Diagram-AAUBKEIU-BY64KkO8.js} +1 -1
  12. package/dist-ksadk/assets/channel-95jCPDn-.js +1 -0
  13. package/dist-ksadk/assets/{chunk-2J33WTMH-jhWShx0U.js → chunk-2J33WTMH-DFgsEcc7.js} +1 -1
  14. package/dist-ksadk/assets/{chunk-4BX2VUAB-BkmP_YIR.js → chunk-4BX2VUAB-Dk1XGsDg.js} +1 -1
  15. package/dist-ksadk/assets/{chunk-55IACEB6-B8cdnfio.js → chunk-55IACEB6-CyYG08Ez.js} +1 -1
  16. package/dist-ksadk/assets/{chunk-727SXJPM-I_wsgg4B.js → chunk-727SXJPM-Dj-o0foT.js} +1 -1
  17. package/dist-ksadk/assets/{chunk-AQP2D5EJ-CrKE0CjY.js → chunk-AQP2D5EJ-M8cDZrZQ.js} +1 -1
  18. package/dist-ksadk/assets/{chunk-FMBD7UC4-CnBM9mx-.js → chunk-FMBD7UC4-Mceczy0j.js} +1 -1
  19. package/dist-ksadk/assets/{chunk-ND2GUHAM-CAGmrkrk.js → chunk-ND2GUHAM-dwTxQ3uL.js} +1 -1
  20. package/dist-ksadk/assets/chunk-QZHKN3VN-DJz-BVY8.js +1 -0
  21. package/dist-ksadk/assets/classDiagram-4FO5ZUOK-DQhxN0zQ.js +1 -0
  22. package/dist-ksadk/assets/classDiagram-v2-Q7XG4LA2-DQhxN0zQ.js +1 -0
  23. package/dist-ksadk/assets/{cose-bilkent-S5V4N54A-DQutYsST.js → cose-bilkent-S5V4N54A-Ch6hia5Y.js} +1 -1
  24. package/dist-ksadk/assets/{dagre-BM42HDAG-BbfWozVQ.js → dagre-BM42HDAG-nrh587vF.js} +1 -1
  25. package/dist-ksadk/assets/{diagram-2AECGRRQ-DTYDG1S6.js → diagram-2AECGRRQ-DgNb_Tw5.js} +1 -1
  26. package/dist-ksadk/assets/{diagram-5GNKFQAL-CKo851uX.js → diagram-5GNKFQAL-ND5Lir8O.js} +1 -1
  27. package/dist-ksadk/assets/{diagram-KO2AKTUF-BFGsk7gQ.js → diagram-KO2AKTUF-CLrPFWcy.js} +1 -1
  28. package/dist-ksadk/assets/{diagram-LMA3HP47-Cp5eKc5-.js → diagram-LMA3HP47-D_Sgy27v.js} +1 -1
  29. package/dist-ksadk/assets/{diagram-OG6HWLK6-BCAPtWc_.js → diagram-OG6HWLK6-QbrzvyWM.js} +1 -1
  30. package/dist-ksadk/assets/{dist-PKzzxEoN.js → dist-B7Z2ybmq.js} +1 -1
  31. package/dist-ksadk/assets/{dist-DsEBYSvP.js → dist-B98JDMe6.js} +1 -1
  32. package/dist-ksadk/assets/{dist-5kdQ7HkY.js → dist-BbS7HTJp.js} +1 -1
  33. package/dist-ksadk/assets/{dist-BXfxON4M.js → dist-CKb66fZP.js} +1 -1
  34. package/dist-ksadk/assets/{dist-Drg2mY7X.js → dist-CMLwqcZ6.js} +1 -1
  35. package/dist-ksadk/assets/{dist-CRqn22al.js → dist-CPRGtEH9.js} +1 -1
  36. package/dist-ksadk/assets/{dist-BzRHvUmK.js → dist-CVN4jSSW.js} +1 -1
  37. package/dist-ksadk/assets/{dist-Dtq8mlk_.js → dist-ClZgJL0A.js} +1 -1
  38. package/dist-ksadk/assets/{dist-ygPYPIzK.js → dist-DEJYL3UK.js} +1 -1
  39. package/dist-ksadk/assets/{dist-Bs8kNZ5F.js → dist-DRSyDPdG.js} +1 -1
  40. package/dist-ksadk/assets/{dist-COCV2kJ4.js → dist-DRYY8roY.js} +1 -1
  41. package/dist-ksadk/assets/{dist-Wc8ZbAXr.js → dist-D_ZZ4fV3.js} +1 -1
  42. package/dist-ksadk/assets/{dist-BUqHxLuB.js → dist-DbpuiQKj.js} +1 -1
  43. package/dist-ksadk/assets/{dist-CF83ONlc.js → dist-DsvaqR-b.js} +1 -1
  44. package/dist-ksadk/assets/{dist-CA6GPOEx.js → dist-Dy6ODCG9.js} +1 -1
  45. package/dist-ksadk/assets/{dist-CcGyKrol.js → dist-DzZB5tor.js} +1 -1
  46. package/dist-ksadk/assets/{dist-ZTH3VhoY.js → dist-EhrdTAKL.js} +1 -1
  47. package/dist-ksadk/assets/{dist-bSp7j4JA.js → dist-JBDG5w09.js} +1 -1
  48. package/dist-ksadk/assets/{dist-CD2EXfJM.js → dist-Ldf-oz8Y.js} +1 -1
  49. package/dist-ksadk/assets/{dist-BA3Q9tGs.js → dist-Q9_gg2Vb.js} +1 -1
  50. package/dist-ksadk/assets/{dist-C0aKpK3w.js → dist-TIHF8jeZ.js} +1 -1
  51. package/dist-ksadk/assets/{dist-XvtBlTf3.js → dist-haZBFH4L.js} +1 -1
  52. package/dist-ksadk/assets/{erDiagram-TEJ5UH35-B4Ez_K8Y.js → erDiagram-TEJ5UH35-DWsi2HhW.js} +1 -1
  53. package/dist-ksadk/assets/eventmodeling-FCH6USID-R5MOzX8B.js +1 -0
  54. package/dist-ksadk/assets/{flowDiagram-I6XJVG4X-Cugogq8u.js → flowDiagram-I6XJVG4X-BAtVSiaU.js} +1 -1
  55. package/dist-ksadk/assets/{ganttDiagram-6RSMTGT7-BdL2Ptyi.js → ganttDiagram-6RSMTGT7-jI1A45Ie.js} +1 -1
  56. package/dist-ksadk/assets/gitGraph-WXDBUCRP-ycpCtFsu.js +1 -0
  57. package/dist-ksadk/assets/{gitGraphDiagram-PVQCEYII-LTIaD1oy.js → gitGraphDiagram-PVQCEYII-C3fW-u3c.js} +1 -1
  58. package/dist-ksadk/assets/index-Bbbbu0em.js +165 -0
  59. package/dist-ksadk/assets/info-J43DQDTF-BG5UaFoK.js +1 -0
  60. package/dist-ksadk/assets/{infoDiagram-5YYISTIA-Irvk5ODn.js → infoDiagram-5YYISTIA-7Fgxfiew.js} +1 -1
  61. package/dist-ksadk/assets/{ishikawaDiagram-YF4QCWOH-DvhCdgB4.js → ishikawaDiagram-YF4QCWOH-dXkKN_2f.js} +1 -1
  62. package/dist-ksadk/assets/{journeyDiagram-JHISSGLW-o1H3k05h.js → journeyDiagram-JHISSGLW-Noo-i6Co.js} +1 -1
  63. package/dist-ksadk/assets/{kanban-definition-UN3LZRKU-DwLQeiLo.js → kanban-definition-UN3LZRKU-C-qkrNz8.js} +1 -1
  64. package/dist-ksadk/assets/{katex-rVASVN_G.js → katex-B907dXuX.js} +1 -1
  65. package/dist-ksadk/assets/{linear-6iVzNmCz.js → linear-CiSItak9.js} +1 -1
  66. package/dist-ksadk/assets/{mermaid-parser.core-XdJNoTgS.js → mermaid-parser.core-g7ZK2XzV.js} +2 -2
  67. package/dist-ksadk/assets/{mindmap-definition-RKZ34NQL-CytBxVen.js → mindmap-definition-RKZ34NQL-KEpzYVDW.js} +1 -1
  68. package/dist-ksadk/assets/packet-YPE3B663-B4R_RXtl.js +1 -0
  69. package/dist-ksadk/assets/pie-LRSECV5Y-ZvqONtr7.js +1 -0
  70. package/dist-ksadk/assets/{pieDiagram-4H26LBE5-CaevpDml.js → pieDiagram-4H26LBE5-BetRBqce.js} +1 -1
  71. package/dist-ksadk/assets/{quadrantDiagram-W4KKPZXB-DN8OUKGZ.js → quadrantDiagram-W4KKPZXB-NTMW-2JW.js} +1 -1
  72. package/dist-ksadk/assets/radar-GUYGQ44K-MPUTAFuT.js +1 -0
  73. package/dist-ksadk/assets/{requirementDiagram-4Y6WPE33-BCAqWjys.js → requirementDiagram-4Y6WPE33-DGz7kAYq.js} +1 -1
  74. package/dist-ksadk/assets/{sankeyDiagram-5OEKKPKP-2dMQM1qM.js → sankeyDiagram-5OEKKPKP-B1npa6g0.js} +1 -1
  75. package/dist-ksadk/assets/{sequenceDiagram-3UESZ5HK-C-bWXa4S.js → sequenceDiagram-3UESZ5HK-CiiQg1kp.js} +1 -1
  76. package/dist-ksadk/assets/{stateDiagram-AJRCARHV-D0W5apow.js → stateDiagram-AJRCARHV-DeEoMo9D.js} +1 -1
  77. package/dist-ksadk/assets/stateDiagram-v2-BHNVJYJU-DdnBxj5o.js +1 -0
  78. package/dist-ksadk/assets/{timeline-definition-PNZ67QCA-BW_33mxy.js → timeline-definition-PNZ67QCA-C4KoD7P2.js} +1 -1
  79. package/dist-ksadk/assets/treeView-BLDUP644-BVT3-ekB.js +1 -0
  80. package/dist-ksadk/assets/treemap-LRROVOQU-DwsRqHk_.js +1 -0
  81. package/dist-ksadk/assets/{vennDiagram-CIIHVFJN-CNmwt6el.js → vennDiagram-CIIHVFJN-DuDr8-7R.js} +1 -1
  82. package/dist-ksadk/assets/wardley-L42UT6IY-Btn2OWZX.js +1 -0
  83. package/dist-ksadk/assets/{wardleyDiagram-YWT4CUSO-CzuRPILG.js → wardleyDiagram-YWT4CUSO-C6phy1Vu.js} +1 -1
  84. package/dist-ksadk/assets/{xychartDiagram-2RQKCTM6-CuwrcJ7v.js → xychartDiagram-2RQKCTM6-Cx6jCs70.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 +719 -651
  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-events.d.ts.map +1 -1
  105. package/dist-lib/utils/session-helpers.d.ts.map +1 -1
  106. package/package.json +1 -1
  107. package/dist-ksadk/assets/architecture-7EHR7CIX-CH1wnW5S.js +0 -1
  108. package/dist-ksadk/assets/channel-D20CB9hV.js +0 -1
  109. package/dist-ksadk/assets/chunk-QZHKN3VN-BsgRgQ_j.js +0 -1
  110. package/dist-ksadk/assets/classDiagram-4FO5ZUOK-DjrplkNv.js +0 -1
  111. package/dist-ksadk/assets/classDiagram-v2-Q7XG4LA2-DjrplkNv.js +0 -1
  112. package/dist-ksadk/assets/eventmodeling-FCH6USID-B6kJGZGf.js +0 -1
  113. package/dist-ksadk/assets/gitGraph-WXDBUCRP-B16H8iV0.js +0 -1
  114. package/dist-ksadk/assets/index-CyqLY8HK.js +0 -165
  115. package/dist-ksadk/assets/info-J43DQDTF-CuylbYl8.js +0 -1
  116. package/dist-ksadk/assets/packet-YPE3B663-CkTX9qzg.js +0 -1
  117. package/dist-ksadk/assets/pie-LRSECV5Y-D-9Kb8fQ.js +0 -1
  118. package/dist-ksadk/assets/radar-GUYGQ44K-9yNm6uCf.js +0 -1
  119. package/dist-ksadk/assets/stateDiagram-v2-BHNVJYJU-4EIKDL6E.js +0 -1
  120. package/dist-ksadk/assets/treeView-BLDUP644-Bxe9I30V.js +0 -1
  121. package/dist-ksadk/assets/treemap-LRROVOQU-IPLUPBu2.js +0 -1
  122. 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,34 +949,36 @@ 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",
970
970
  "cancelled",
971
971
  "canceled",
972
- "aborted"
972
+ "aborted",
973
+ "interrupted",
974
+ "resume_failed"
973
975
  ]);
974
- function _t(e) {
976
+ function gt(e) {
975
977
  if (e.EventType !== "run_status") return null;
976
978
  let t = String(e.Content?.status || "").trim().toLowerCase();
977
- return gt.has(t) ? t : null;
979
+ return ht.has(t) ? t : null;
978
980
  }
979
- function vt(e, t) {
981
+ function _t(e, t) {
980
982
  let n = String(t?.type || e || "").trim();
981
983
  if (n === "response.created") return {
982
984
  phase: "运行已创建",
@@ -1022,11 +1024,11 @@ function vt(e, t) {
1022
1024
  status: "failed"
1023
1025
  } : null;
1024
1026
  }
1025
- function yt() {
1027
+ function vt() {
1026
1028
  let e = globalThis.crypto;
1027
1029
  return e && typeof e.randomUUID == "function" ? `run_${e.randomUUID()}` : `run_${Date.now()}_${Math.random().toString(16).slice(2)}`;
1028
1030
  }
1029
- var bt = {
1031
+ var yt = {
1030
1032
  idle: [
1031
1033
  "creating-session",
1032
1034
  "uploading-files",
@@ -1064,7 +1066,7 @@ var bt = {
1064
1066
  ],
1065
1067
  error: ["connecting", "idle"],
1066
1068
  cancelled: ["idle"]
1067
- }, xt = class {
1069
+ }, bt = class {
1068
1070
  _stage = "idle";
1069
1071
  listeners = /* @__PURE__ */ new Set();
1070
1072
  abortController = null;
@@ -1098,7 +1100,7 @@ var bt = {
1098
1100
  for (let e of this.listeners) e(t);
1099
1101
  }
1100
1102
  setStage(e) {
1101
- let t = bt[this._stage];
1103
+ let t = yt[this._stage];
1102
1104
  t && !t.includes(e) && console.warn(`[RunEngine] Invalid transition: ${this._stage} → ${e}`), this._stage = e, this.emit({
1103
1105
  type: "stage_changed",
1104
1106
  stage: e
@@ -1125,11 +1127,11 @@ var bt = {
1125
1127
  status: "connecting",
1126
1128
  countEvent: !1
1127
1129
  });
1128
- let a = t ? "responses" : mt({
1130
+ let a = t ? "responses" : pt({
1129
1131
  agentFramework: this.config.agentFramework,
1130
1132
  apiFormats: this.config.apiFormats
1131
- }), o = ct(a), s = o.createState(), c = yt();
1132
- I.getState().setCurrentRunId(c);
1133
+ }), o = st(a), s = o.createState(), c = vt();
1134
+ L.getState().setCurrentRunId(c);
1133
1135
  let l = this.buildRequestBody(n, a, t, e, i, c), u = await this.api.runAgent(l, { signal: this.abortController?.signal });
1134
1136
  this.setStage("streaming"), this.emit({
1135
1137
  type: "activity",
@@ -1156,7 +1158,7 @@ var bt = {
1156
1158
  f.terminalStatus = (await this.consumeStream(e, o, s, t)).terminalStatus;
1157
1159
  }
1158
1160
  if (f.terminalStatus === "cancelled") {
1159
- this.setStage("stopping"), I.getState().stopActivity("运行时已取消本次执行。"), this.emit({
1161
+ this.setStage("stopping"), L.getState().stopActivity("运行时已取消本次执行。"), this.emit({
1160
1162
  type: "activity",
1161
1163
  phase: "运行已取消",
1162
1164
  status: "stopped",
@@ -1190,18 +1192,23 @@ var bt = {
1190
1192
  error: e instanceof Error ? e : Error(String(e))
1191
1193
  })));
1192
1194
  } finally {
1193
- I.getState().setStreaming(!1), this.setStage("idle"), this.activeCompactionId = null, this.activeSessionId = null, e.onSettled?.(n);
1195
+ L.getState().setStreaming(!1), this.setStage("idle"), this.activeCompactionId = null, this.activeSessionId = null, e.onSettled?.(n);
1194
1196
  }
1195
1197
  })(), !0;
1196
1198
  }
1197
1199
  stop() {
1198
- this._stage !== "idle" && (this.setStage("stopping"), this.abortController?.abort(), I.getState().stopActivity(), I.getState().setCurrentRunId(""), this.setStage("cancelled"), this.emit({
1200
+ if (this._stage === "idle") return;
1201
+ this.setStage("stopping");
1202
+ let e = L.getState().currentRunId;
1203
+ e && this.api.cancelRun(this.config.agentId, e).catch((e) => {
1204
+ console.warn("[RunEngine] cancelRun on stop failed:", e);
1205
+ }), this.abortController?.abort(), L.getState().stopActivity(e ? "已向运行时发送取消请求;如果当前框架只支持协作式取消,后台可能会在下一个安全点停止。" : void 0), L.getState().setCurrentRunId(""), this.setStage("cancelled"), this.emit({
1199
1206
  type: "system_message",
1200
- content: "已停止接收本次输出;如果运行时不支持取消,后台执行可能仍会继续。"
1201
- }));
1207
+ content: e ? "已请求取消本次运行。" : "已停止接收本次输出;如果运行时不支持取消,后台执行可能仍会继续。"
1208
+ });
1202
1209
  }
1203
1210
  disconnect() {
1204
- this._stage !== "idle" && (this.abortController?.abort(), I.getState().setStreaming(!1), I.getState().clearActivity(), this._stage = "idle", this.activeCompactionId = null, this.activeSessionId = null);
1211
+ this._stage !== "idle" && (this.abortController?.abort(), L.getState().setStreaming(!1), L.getState().clearActivity(), this._stage = "idle", this.activeCompactionId = null, this.activeSessionId = null);
1205
1212
  }
1206
1213
  async cancelRemote(e) {
1207
1214
  try {
@@ -1212,7 +1219,7 @@ var bt = {
1212
1219
  this.stop();
1213
1220
  }
1214
1221
  resumeRun(e) {
1215
- this.abortController?.abort(), this.abortController = new AbortController(), this.activeSessionId = e.sessionId, I.getState().setCurrentRunId(e.invocationId), this.setStage("connecting"), this.emit({
1222
+ this.abortController?.abort(), this.abortController = new AbortController(), this.activeSessionId = e.sessionId, L.getState().setCurrentRunId(e.invocationId), this.setStage("connecting"), this.emit({
1216
1223
  type: "activity",
1217
1224
  phase: "恢复运行事件订阅",
1218
1225
  status: "connecting",
@@ -1236,11 +1243,11 @@ var bt = {
1236
1243
  let { value: e, done: n } = await r.read();
1237
1244
  if (n) break;
1238
1245
  a += i.decode(e, { stream: !0 });
1239
- let { chunks: o, remainder: s } = dt(a);
1246
+ let { chunks: o, remainder: s } = ut(a);
1240
1247
  a = s;
1241
1248
  for (let e of o) {
1242
1249
  if (!e.trim()) continue;
1243
- let n = ut(e);
1250
+ let n = lt(e);
1244
1251
  for (let e of n) e.eventName !== "__done__" && (this.emit({
1245
1252
  type: "activity",
1246
1253
  phase: "收到恢复事件",
@@ -1248,7 +1255,7 @@ var bt = {
1248
1255
  }), this.emit({
1249
1256
  type: "stream_event",
1250
1257
  event: e.data
1251
- }), t = _t(e.data) || t);
1258
+ }), t = gt(e.data) || t);
1252
1259
  }
1253
1260
  }
1254
1261
  this.setStage("completing"), t === "cancelled" || t === "canceled" || t === "aborted" ? this.emit({
@@ -1256,11 +1263,21 @@ var bt = {
1256
1263
  phase: "后台长任务已取消",
1257
1264
  status: "stopped",
1258
1265
  countEvent: !1
1266
+ }) : t === "interrupted" ? this.emit({
1267
+ type: "activity",
1268
+ phase: "后台长任务已中断",
1269
+ status: "stopped",
1270
+ countEvent: !1
1259
1271
  }) : t === "failed" || t === "error" ? this.emit({
1260
1272
  type: "activity",
1261
1273
  phase: "后台长任务失败",
1262
1274
  status: "failed",
1263
1275
  countEvent: !1
1276
+ }) : t === "resume_failed" ? this.emit({
1277
+ type: "activity",
1278
+ phase: "后台长任务恢复失败",
1279
+ status: "failed",
1280
+ countEvent: !1
1264
1281
  }) : this.emit({
1265
1282
  type: "activity",
1266
1283
  phase: "后台长任务已完成",
@@ -1270,15 +1287,15 @@ var bt = {
1270
1287
  } catch (e) {
1271
1288
  e instanceof DOMException && e.name === "AbortError" || console.error("Failed to subscribe to run events:", e);
1272
1289
  } finally {
1273
- I.getState().setStreaming(!1), I.getState().setCurrentRunId(""), this.setStage("idle"), this.activeSessionId = null;
1290
+ L.getState().setStreaming(!1), L.getState().setCurrentRunId(""), this.setStage("idle"), this.activeSessionId = null;
1274
1291
  }
1275
1292
  })();
1276
1293
  }
1277
1294
  resumeCheckpoint(e) {
1278
1295
  if (this._stage !== "idle") return !1;
1279
1296
  this.abortController = new AbortController(), this.activeSessionId = e.sessionId;
1280
- let t = yt();
1281
- return I.getState().setCurrentRunId(t), (async () => {
1297
+ let t = vt();
1298
+ return L.getState().setCurrentRunId(t), (async () => {
1282
1299
  try {
1283
1300
  if (this.setStage("connecting"), this.emit({
1284
1301
  type: "activity",
@@ -1310,7 +1327,7 @@ var bt = {
1310
1327
  checkpointId: e.checkpointId,
1311
1328
  resumeAttemptId: e.resumeAttemptId,
1312
1329
  invocationId: t
1313
- }, { signal: this.abortController?.signal }), r = ct("responses"), i = r.createState();
1330
+ }, { signal: this.abortController?.signal }), r = st("responses"), i = r.createState();
1314
1331
  this.setStage("streaming"), this.emit({
1315
1332
  type: "activity",
1316
1333
  source: "restore",
@@ -1321,7 +1338,7 @@ var bt = {
1321
1338
  let a = `msg-${Date.now()}`, o = await this.consumeStream(n, r, i, a);
1322
1339
  if (o.terminalStatus && o.terminalStatus !== "completed") {
1323
1340
  if (o.terminalStatus === "cancelled") {
1324
- this.setStage("stopping"), I.getState().stopActivity("运行时已取消本次恢复。"), this.emit({
1341
+ this.setStage("stopping"), L.getState().stopActivity("运行时已取消本次恢复。"), this.emit({
1325
1342
  type: "activity",
1326
1343
  source: "restore",
1327
1344
  phase: "恢复已取消",
@@ -1352,7 +1369,7 @@ var bt = {
1352
1369
  error: e instanceof Error ? e : Error(String(e))
1353
1370
  }));
1354
1371
  } finally {
1355
- I.getState().setStreaming(!1), I.getState().setCurrentRunId(""), this.setStage("idle"), this.activeSessionId = null, e.onSettled?.(e.sessionId);
1372
+ L.getState().setStreaming(!1), L.getState().setCurrentRunId(""), this.setStage("idle"), this.activeSessionId = null, e.onSettled?.(e.sessionId);
1356
1373
  }
1357
1374
  })(), !0;
1358
1375
  }
@@ -1386,7 +1403,7 @@ var bt = {
1386
1403
  } catch (e) {
1387
1404
  this.emit({
1388
1405
  type: "system_message",
1389
- content: `【系统提示】图片 ${t.name} 读取失败,原因: ${ft(e)}`
1406
+ content: `【系统提示】图片 ${t.name} 读取失败,原因: ${dt(e)}`
1390
1407
  });
1391
1408
  }
1392
1409
  continue;
@@ -1403,7 +1420,7 @@ var bt = {
1403
1420
  } catch (e) {
1404
1421
  this.emit({
1405
1422
  type: "system_message",
1406
- content: `【系统提示】文件 ${t.name} 上传失败,原因: ${ft(e)}`
1423
+ content: `【系统提示】文件 ${t.name} 上传失败,原因: ${dt(e)}`
1407
1424
  });
1408
1425
  }
1409
1426
  }
@@ -1423,7 +1440,7 @@ var bt = {
1423
1440
  ApiFormat: t,
1424
1441
  Model: this.config.selectedModel || void 0,
1425
1442
  ModelMetadata: this.config.selectedModelMetadata || void 0,
1426
- ModelOptions: Ne(Me(this.config.thinkingMode))
1443
+ ModelOptions: Me(je(this.config.thinkingMode))
1427
1444
  };
1428
1445
  if (n) o.ResponsesInput = r.responsesInput, o.PreviousResponseId = r.previousResponseId;
1429
1446
  else {
@@ -1451,32 +1468,32 @@ var bt = {
1451
1468
  type: "assistant_message_created",
1452
1469
  messageId: r
1453
1470
  })), o += a.decode(e, { stream: !0 });
1454
- let { chunks: u, remainder: d } = dt(o);
1471
+ let { chunks: u, remainder: d } = ut(o);
1455
1472
  o = d;
1456
1473
  for (let e of u) {
1457
1474
  if (!e.trim()) continue;
1458
1475
  if (this.isCompactionChunk(e)) {
1459
- let t = ut(e);
1476
+ let t = lt(e);
1460
1477
  for (let e of t) e.eventName.startsWith("response.compaction") && this.upsertCompactionMessage({
1461
1478
  ...e.data,
1462
1479
  phase: e.eventName.split(".").pop()
1463
1480
  });
1464
1481
  continue;
1465
1482
  }
1466
- let a = ut(e), o = !1, c;
1483
+ let a = lt(e), o = !1, c;
1467
1484
  for (let e of a) {
1468
1485
  if (e.eventName === "__done__") {
1469
1486
  o = !0;
1470
1487
  continue;
1471
1488
  }
1472
- let i = vt(e.eventName, e.data);
1489
+ let i = _t(e.eventName, e.data);
1473
1490
  i && this.emit({
1474
1491
  type: "activity",
1475
1492
  ...i
1476
1493
  });
1477
1494
  let a = t.parse(e, n);
1478
1495
  for (let e of a) this.dispatchAction(e, r);
1479
- if (lt(a)) {
1496
+ if (ct(a)) {
1480
1497
  o = !0;
1481
1498
  let e = a.find((e) => e.type === "terminal");
1482
1499
  c = e && "status" in e ? String(e.status || "") : void 0;
@@ -1587,18 +1604,18 @@ var bt = {
1587
1604
  phase: "failed"
1588
1605
  }), null);
1589
1606
  }
1590
- }, St = [], Ct = [];
1591
- function X(e) {
1607
+ }, xt = [], St = [];
1608
+ function Z(e) {
1592
1609
  return typeof e == "string" ? e.trim() : "";
1593
1610
  }
1594
- function wt(e) {
1611
+ function Ct(e) {
1595
1612
  let t = typeof e == "number" ? e : Number(e);
1596
1613
  return Number.isFinite(t) ? t : void 0;
1597
1614
  }
1598
- function Tt(e) {
1615
+ function wt(e) {
1599
1616
  return typeof e == "string" || typeof e == "number" ? e : void 0;
1600
1617
  }
1601
- function Z(e) {
1618
+ function Tt(e) {
1602
1619
  return e && typeof e == "object" && !Array.isArray(e) ? e : void 0;
1603
1620
  }
1604
1621
  function Et(e) {
@@ -1627,47 +1644,47 @@ function jt(e) {
1627
1644
  return t ? e.filter((e) => e.runId === t) : [];
1628
1645
  }
1629
1646
  function Mt(e) {
1630
- let t = Z(e);
1647
+ let t = Tt(e);
1631
1648
  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);
1649
+ 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
1650
  return !i || !a ? null : {
1634
1651
  checkpointId: i,
1635
1652
  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,
1653
+ sessionId: Z(t.SessionId ?? t.sessionId ?? t.session_id) || void 0,
1654
+ invocationId: Z(t.InvocationId ?? t.invocationId ?? t.invocation_id) || void 0,
1655
+ seqId: Ct(t.SeqId ?? t.seqId ?? t.seq_id),
1656
+ timestamp: wt(t.Timestamp ?? t.timestamp ?? t.CreatedAt ?? t.createdAt),
1657
+ framework: Z(t.Framework ?? t.framework ?? n?.framework ?? r?.framework) || void 0,
1658
+ frameworkRef: Tt(t.FrameworkRef ?? t.frameworkRef ?? t.framework_ref ?? n?.framework_ref ?? n?.frameworkRef),
1659
+ phase: Z(t.Phase ?? t.phase ?? n?.phase ?? r?.phase) || void 0,
1660
+ stage: Z(t.Stage ?? t.stage ?? n?.stage ?? n?.title) || void 0,
1661
+ summary: Z(t.Summary ?? t.summary ?? n?.summary ?? n?.description) || void 0,
1662
+ nextAction: Z(t.NextAction ?? t.nextAction ?? t.next_action ?? n?.nextAction ?? n?.next_action) || void 0,
1663
+ status: Z(t.Status ?? t.status ?? n?.status ?? r?.status) || void 0,
1647
1664
  metadata: n
1648
1665
  };
1649
1666
  }
1650
1667
  function Nt(e) {
1651
- let t = Z(e);
1668
+ let t = Tt(e);
1652
1669
  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);
1670
+ 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
1671
  return !n || !r || !i ? null : {
1655
1672
  receiptId: n,
1656
1673
  idempotencyKey: r,
1657
1674
  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,
1675
+ toolCallId: Z(t.ToolCallId ?? t.toolCallId ?? t.tool_call_id) || void 0,
1676
+ runId: Z(t.RunId ?? t.runId ?? t.run_id) || void 0,
1677
+ checkpointId: Z(t.CheckpointId ?? t.checkpointId ?? t.checkpoint_id) || void 0,
1678
+ sessionId: Z(t.SessionId ?? t.sessionId ?? t.session_id) || void 0,
1679
+ invocationId: Z(t.InvocationId ?? t.invocationId ?? t.invocation_id) || void 0,
1680
+ seqId: Ct(t.SeqId ?? t.seqId ?? t.seq_id),
1681
+ timestamp: wt(t.Timestamp ?? t.timestamp ?? t.CreatedAt ?? t.createdAt),
1682
+ status: Z(t.Status ?? t.status) || void 0,
1666
1683
  replayed: !!(t.Replayed ?? t.replayed),
1667
- metadata: Z(t.Metadata ?? t.metadata)
1684
+ metadata: Tt(t.Metadata ?? t.metadata)
1668
1685
  };
1669
1686
  }
1670
- var Q = N()((e, t) => ({
1687
+ var Q = P()((e, t) => ({
1671
1688
  checkpointsBySessionId: {},
1672
1689
  toolReceiptsBySessionId: {},
1673
1690
  setSessionCheckpoints: (t, n) => e((e) => ({ checkpointsBySessionId: {
@@ -1696,7 +1713,7 @@ var Q = N()((e, t) => ({
1696
1713
  },
1697
1714
  getSessionCheckpoints: (e) => {
1698
1715
  let n = String(e || "");
1699
- return n && t().checkpointsBySessionId[n] || St;
1716
+ return n && t().checkpointsBySessionId[n] || xt;
1700
1717
  },
1701
1718
  setSessionToolReceipts: (t, n) => e((e) => ({ toolReceiptsBySessionId: {
1702
1719
  ...e.toolReceiptsBySessionId,
@@ -1707,7 +1724,7 @@ var Q = N()((e, t) => ({
1707
1724
  } })),
1708
1725
  getSessionToolReceipts: (e) => {
1709
1726
  let n = String(e || "");
1710
- return n && t().toolReceiptsBySessionId[n] || Ct;
1727
+ return n && t().toolReceiptsBySessionId[n] || St;
1711
1728
  },
1712
1729
  clearSessionCheckpoints: (t) => e((e) => {
1713
1730
  let n = String(t || "");
@@ -1727,7 +1744,9 @@ var Q = N()((e, t) => ({
1727
1744
  "error",
1728
1745
  "cancelled",
1729
1746
  "canceled",
1730
- "aborted"
1747
+ "aborted",
1748
+ "interrupted",
1749
+ "resume_failed"
1731
1750
  ]), Ft = new Set([
1732
1751
  "tool_call",
1733
1752
  "tool_result",
@@ -1822,7 +1841,7 @@ function Bt(e) {
1822
1841
  function Vt(e) {
1823
1842
  let t = e?.Metadata?.responses_output;
1824
1843
  if (!Array.isArray(t)) return {};
1825
- let n = Ke(), r = tt({
1844
+ let n = Ge(), r = et({
1826
1845
  eventName: "response.completed",
1827
1846
  data: { response: {
1828
1847
  id: String(e.Metadata?.response_id || ""),
@@ -2227,7 +2246,7 @@ var $ = !1, sn = new Set(["completed"]), cn = new Set([
2227
2246
  "incomplete"
2228
2247
  ]);
2229
2248
  function ln(e) {
2230
- $ || ($ = !0, q.getState().patchMessages((t) => [...t, {
2249
+ $ || ($ = !0, J.getState().patchMessages((t) => [...t, {
2231
2250
  id: e,
2232
2251
  role: "model",
2233
2252
  content: "",
@@ -2237,7 +2256,7 @@ function ln(e) {
2237
2256
  }
2238
2257
  function un(e) {
2239
2258
  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) => {
2259
+ n && J.getState().patchMessages((e) => e.map((e) => {
2241
2260
  if (!e.tools) return e;
2242
2261
  let t = !1, r = Object.fromEntries(Object.entries(e.tools).map(([e, r]) => r.status === "running" ? (t = !0, [e, {
2243
2262
  ...r,
@@ -2250,14 +2269,14 @@ function un(e) {
2250
2269
  }));
2251
2270
  }
2252
2271
  function dn(e) {
2253
- if (e.sessionId && R.getState().currentSessionId !== e.sessionId) {
2272
+ if (e.sessionId && z.getState().currentSessionId !== e.sessionId) {
2254
2273
  e.type === "stage_changed" && (e.stage === "completing" || e.stage === "error" || e.stage === "cancelled") && ($ = !1);
2255
2274
  return;
2256
2275
  }
2257
- let t = q.getState();
2276
+ let t = J.getState();
2258
2277
  switch (e.type) {
2259
2278
  case "activity":
2260
- I.getState().updateActivity({
2279
+ L.getState().updateActivity({
2261
2280
  sessionId: e.sessionId,
2262
2281
  source: e.source,
2263
2282
  status: e.status,
@@ -2353,16 +2372,16 @@ function dn(e) {
2353
2372
  break;
2354
2373
  }
2355
2374
  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);
2375
+ 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
2376
  break;
2358
2377
  case "stream_ended":
2359
- I.getState().setSessionStreaming(e.sessionId, !1), globalThis.setTimeout(() => {
2360
- let t = I.getState();
2378
+ L.getState().setSessionStreaming(e.sessionId, !1), globalThis.setTimeout(() => {
2379
+ let t = L.getState();
2361
2380
  t.getSessionActivity(e.sessionId)?.status === "completed" && t.clearSessionActivity(e.sessionId);
2362
2381
  }, 2400), $ = !1;
2363
2382
  break;
2364
2383
  case "error":
2365
- I.getState().setSessionStreaming(e.sessionId, !1), I.getState().updateActivity({
2384
+ L.getState().setSessionStreaming(e.sessionId, !1), L.getState().updateActivity({
2366
2385
  sessionId: e.sessionId,
2367
2386
  status: "failed",
2368
2387
  phase: "连接断开或生成出错",
@@ -2377,27 +2396,29 @@ function dn(e) {
2377
2396
  case "terminal":
2378
2397
  un(e.status);
2379
2398
  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,
2399
+ case "stream_event": {
2400
+ let t = e.sessionId || e.event.SessionId;
2401
+ if (e.event.EventType === "run_checkpoint" && t && Q.getState().upsertSessionCheckpoint(t, e.event), e.event.EventType === "run_status") {
2402
+ let n = String(e.event.Content?.status || "").trim().toLowerCase();
2403
+ n === "completed" ? L.getState().updateActivity({
2404
+ sessionId: t,
2385
2405
  status: "completed",
2386
2406
  phase: "后台长任务已完成",
2387
2407
  countEvent: !1
2388
- }) : t === "cancelled" || t === "canceled" || t === "aborted" ? I.getState().updateActivity({
2389
- sessionId: e.sessionId || e.event.SessionId,
2408
+ }) : n === "cancelled" || n === "canceled" || n === "aborted" ? L.getState().updateActivity({
2409
+ sessionId: t,
2390
2410
  status: "stopped",
2391
2411
  phase: "后台长任务已取消",
2392
2412
  countEvent: !1
2393
- }) : (t === "failed" || t === "error") && I.getState().updateActivity({
2394
- sessionId: e.sessionId || e.event.SessionId,
2413
+ }) : (n === "failed" || n === "error") && L.getState().updateActivity({
2414
+ sessionId: t,
2395
2415
  status: "failed",
2396
2416
  phase: "后台长任务失败",
2397
2417
  countEvent: !1
2398
2418
  });
2399
2419
  }
2400
2420
  break;
2421
+ }
2401
2422
  }
2402
2423
  }
2403
2424
  function fn() {
@@ -2406,7 +2427,7 @@ function fn() {
2406
2427
  //#endregion
2407
2428
  //#region src/hooks/useRunAgent.ts
2408
2429
  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) => {
2430
+ 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
2431
  e.updateConfig({
2411
2432
  agentId: r,
2412
2433
  apiFormats: i,
@@ -2424,25 +2445,25 @@ function pn(e) {
2424
2445
  s,
2425
2446
  c,
2426
2447
  f.RunLifecycle?.CheckpointResumePreview
2427
- ]), m = k((n) => {
2448
+ ]), m = A((n) => {
2428
2449
  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;
2450
+ return i ? p(i) : (i = new bt(e.api), p(i), i.subscribe(dn), t.current.set(r, i)), i;
2430
2451
  }, [e.api, p]);
2431
- A(() => {
2452
+ j(() => {
2432
2453
  for (let e of t.current.values()) p(e);
2433
2454
  }, [p]);
2434
- let h = k((e) => {
2455
+ let h = A((e) => {
2435
2456
  u.current.push(e), _.getState().setQueuedDrafts((t) => [...t, e]);
2436
- }, [u]), g = k((e) => {
2457
+ }, [u]), g = A((e) => {
2437
2458
  let i = l.current, a = m(i);
2438
2459
  if (a.stage !== "idle") return !1;
2439
- fn(), _.getState().setMobileActionsOpen(!1), I.getState().setSessionStreaming(i, !0);
2460
+ fn(), _.getState().setMobileActionsOpen(!1), L.getState().setSessionStreaming(i, !0);
2440
2461
  let o = e.text.trim(), s = String(Date.now()), c = e.attachments.map((e) => ({
2441
2462
  name: e.name,
2442
2463
  url: URL.createObjectURL(e),
2443
2464
  type: e.type || "application/octet-stream"
2444
2465
  }));
2445
- (o || c.length > 0) && q.getState().patchMessages((e) => [...e, {
2466
+ (o || c.length > 0) && J.getState().patchMessages((e) => [...e, {
2446
2467
  id: s,
2447
2468
  role: "user",
2448
2469
  content: o,
@@ -2456,24 +2477,24 @@ function pn(e) {
2456
2477
  previousResponseId: e.previousResponseId,
2457
2478
  sessionId: i,
2458
2479
  onSessionCreated: (e) => {
2459
- R.getState().upsertSessions([{
2480
+ z.getState().upsertSessions([{
2460
2481
  SessionId: e,
2461
2482
  UpdatedAt: (/* @__PURE__ */ new Date()).toISOString()
2462
- }]), l.current = e, we(r, e), R.getState().setCurrentSessionId(e), i !== e && t.current.set(e, a);
2483
+ }]), l.current = e, Ce(r, e), z.getState().setCurrentSessionId(e), i !== e && t.current.set(e, a);
2463
2484
  },
2464
2485
  onSessionUpsert: () => {},
2465
2486
  onSettled: (e) => {
2466
2487
  d?.(e), n.current();
2467
2488
  }
2468
2489
  });
2469
- return u || I.getState().setSessionStreaming(i, !1), u;
2490
+ return u || L.getState().setSessionStreaming(i, !1), u;
2470
2491
  }, [
2471
2492
  r,
2472
2493
  l,
2473
2494
  m,
2474
2495
  d
2475
2496
  ]);
2476
- return A(() => {
2497
+ return j(() => {
2477
2498
  n.current = () => {
2478
2499
  let e = u.current.shift();
2479
2500
  if (!e) {
@@ -2485,14 +2506,14 @@ function pn(e) {
2485
2506
  });
2486
2507
  };
2487
2508
  }, [u, g]), {
2488
- submitDraft: k(async (e, t, n, r) => {
2509
+ submitDraft: A(async (e, t, n, r) => {
2489
2510
  let i = {
2490
2511
  text: e,
2491
2512
  attachments: t,
2492
2513
  responsesInput: n,
2493
2514
  previousResponseId: r
2494
2515
  };
2495
- if (m(l.current).stage !== "idle" && I.getState().isSessionStreaming(l.current)) {
2516
+ if (m(l.current).stage !== "idle" && L.getState().isSessionStreaming(l.current)) {
2496
2517
  n === void 0 && h({
2497
2518
  text: e,
2498
2519
  attachments: t
@@ -2509,25 +2530,25 @@ function pn(e) {
2509
2530
  m,
2510
2531
  g
2511
2532
  ]),
2512
- stopGeneration: k(() => {
2533
+ stopGeneration: A(() => {
2513
2534
  m(l.current).stop();
2514
2535
  }, [l, m]),
2515
- disconnectRun: k(() => {
2536
+ disconnectRun: A(() => {
2516
2537
  m(l.current).disconnect();
2517
2538
  }, [l, m]),
2518
- resumeCheckpoint: k((e) => {
2539
+ resumeCheckpoint: A((e) => {
2519
2540
  let t = m(e.sessionId);
2520
2541
  if (t.stage !== "idle") return !1;
2521
- fn(), _.getState().setMobileActionsOpen(!1), I.getState().setSessionStreaming(e.sessionId, !0);
2542
+ fn(), _.getState().setMobileActionsOpen(!1), L.getState().setSessionStreaming(e.sessionId, !0);
2522
2543
  let r = t.resumeCheckpoint({
2523
2544
  ...e,
2524
2545
  onSettled: (e) => {
2525
2546
  d?.(e), n.current();
2526
2547
  }
2527
2548
  });
2528
- return r || I.getState().setSessionStreaming(e.sessionId, !1), r;
2549
+ return r || L.getState().setSessionStreaming(e.sessionId, !1), r;
2529
2550
  }, [m, d]),
2530
- resetCompaction: k(() => {
2551
+ resetCompaction: A(() => {
2531
2552
  fn();
2532
2553
  }, [])
2533
2554
  };
@@ -2537,10 +2558,10 @@ function pn(e) {
2537
2558
  function mn(e) {
2538
2559
  let { agentId: t, currentSessionId: n, isStreaming: r, api: i, submitDraft: a } = e;
2539
2560
  return {
2540
- submitResponseFeedback: k(async (e) => {
2561
+ submitResponseFeedback: A(async (e) => {
2541
2562
  if (!n) return;
2542
2563
  let r = null;
2543
- q.getState().patchMessages((t) => {
2564
+ J.getState().patchMessages((t) => {
2544
2565
  let n = v(t, {
2545
2566
  messageId: e.message.id,
2546
2567
  rating: e.rating,
@@ -2556,12 +2577,12 @@ function mn(e) {
2556
2577
  rating: e.rating,
2557
2578
  comment: e.comment || ""
2558
2579
  })))?.Feedback);
2559
- r && q.getState().patchMessages((t) => s(t, {
2580
+ r && J.getState().patchMessages((t) => s(t, {
2560
2581
  messageId: e.message.id,
2561
2582
  feedback: r
2562
2583
  }));
2563
2584
  } catch (t) {
2564
- console.error("Failed to submit response feedback:", t), q.getState().patchMessages((t) => C(t, {
2585
+ console.error("Failed to submit response feedback:", t), J.getState().patchMessages((t) => C(t, {
2565
2586
  messageId: e.message.id,
2566
2587
  previousFeedback: r
2567
2588
  }));
@@ -2571,10 +2592,10 @@ function mn(e) {
2571
2592
  n,
2572
2593
  i
2573
2594
  ]),
2574
- deleteResponseFeedback: k(async (e) => {
2595
+ deleteResponseFeedback: A(async (e) => {
2575
2596
  if (!n) return;
2576
2597
  let r = e.feedback ? { ...e.feedback } : null;
2577
- q.getState().patchMessages((t) => d(t, { messageId: e.id }));
2598
+ J.getState().patchMessages((t) => d(t, { messageId: e.id }));
2578
2599
  try {
2579
2600
  await i.deleteResponseFeedback(h({
2580
2601
  agentId: t,
@@ -2582,7 +2603,7 @@ function mn(e) {
2582
2603
  message: e
2583
2604
  }));
2584
2605
  } catch (t) {
2585
- console.error("Failed to delete response feedback:", t), q.getState().patchMessages((t) => C(t, {
2606
+ console.error("Failed to delete response feedback:", t), J.getState().patchMessages((t) => C(t, {
2586
2607
  messageId: e.id,
2587
2608
  previousFeedback: r
2588
2609
  }));
@@ -2592,14 +2613,14 @@ function mn(e) {
2592
2613
  n,
2593
2614
  i
2594
2615
  ]),
2595
- respondToApproval: k((e) => {
2596
- !e.approvalRequestId || r || (q.getState().patchMessages((t) => t.map((t) => ({
2616
+ respondToApproval: A((e) => {
2617
+ !e.approvalRequestId || r || (J.getState().patchMessages((t) => t.map((t) => ({
2597
2618
  ...t,
2598
2619
  tools: t.tools ? Object.fromEntries(Object.entries(t.tools).map(([t, n]) => [t, n.approvalRequestId === e.approvalRequestId ? {
2599
2620
  ...n,
2600
2621
  approvalStatus: e.approve ? "approved" : "rejected"
2601
2622
  } : n])) : t.tools
2602
- }))), q.getState().patchMessages((t) => [...t, {
2623
+ }))), J.getState().patchMessages((t) => [...t, {
2603
2624
  id: String(Date.now() + Math.random()),
2604
2625
  role: "system",
2605
2626
  content: e.approve ? "已批准工具调用,正在继续运行。" : "已拒绝工具调用,正在通知运行时。",
@@ -2626,25 +2647,40 @@ function gn(e) {
2626
2647
  }
2627
2648
  return 0;
2628
2649
  }
2629
- function _n(e) {
2650
+ var _n = new Set([
2651
+ "in_progress",
2652
+ "running",
2653
+ "resuming",
2654
+ "starting",
2655
+ "queued",
2656
+ "pending"
2657
+ ]);
2658
+ function vn(e) {
2630
2659
  return String(e?.EventType || e?.event_type || "").trim();
2631
2660
  }
2632
- function vn(e = [], t = {}) {
2661
+ function yn(e = [], t = {}) {
2633
2662
  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
2663
  for (let e of i) {
2635
2664
  let t = hn(e);
2636
2665
  if (!t) continue;
2637
2666
  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());
2667
+ 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
2668
  }
2640
2669
  return Array.from(n.entries()).filter(([e, t]) => {
2641
2670
  let n = r.get(e) || 0, i = n > 0 && a - n > o;
2642
- return t === "in_progress" && !i;
2671
+ return _n.has(t) && !i;
2643
2672
  }).map(([e]) => e);
2644
2673
  }
2645
2674
  //#endregion
2646
2675
  //#region src/utils/session-event-history.ts
2647
- async function yn(e, t, n) {
2676
+ function bn(e, t) {
2677
+ let n = Math.max(0, Number(e.offset) || 0), r = Math.max(0, Number(e.total) || 0);
2678
+ return n >= r ? null : {
2679
+ offset: n,
2680
+ limit: Math.min(Math.max(1, Number(t) || 1), r - n)
2681
+ };
2682
+ }
2683
+ async function xn(e, t, n) {
2648
2684
  let r = Math.max(1, Number(n?.pageSize) || 50), i = n?.shouldContinue || (() => !0), a = () => !i(), o = await t(e, {
2649
2685
  offset: 0,
2650
2686
  limit: 1
@@ -2657,34 +2693,43 @@ async function yn(e, t, n) {
2657
2693
  offset: Number(o.Offset ?? 0),
2658
2694
  limit: Number(o.Limit ?? o.Events?.length ?? 0)
2659
2695
  };
2660
- let c = Math.max(0, s - r), l = await t(e, {
2661
- offset: c,
2662
- limit: r
2663
- });
2696
+ let c = bn({
2697
+ offset: 0,
2698
+ total: s
2699
+ }, r);
2700
+ if (!c) return {
2701
+ events: [],
2702
+ total: s,
2703
+ offset: 0,
2704
+ limit: 0
2705
+ };
2706
+ let l = await t(e, c);
2664
2707
  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
- });
2708
+ let u = l.Events || [], d = u.length;
2709
+ for (; d < s;) {
2710
+ let n = bn({
2711
+ offset: d,
2712
+ total: s
2713
+ }, r);
2714
+ if (!n) break;
2715
+ let i = await t(e, n);
2671
2716
  if (a()) return null;
2672
- u = rn(i.Events || [], u), c = n;
2717
+ u = rn(i.Events || [], u), d += (i.Events || []).length;
2673
2718
  }
2674
2719
  return {
2675
2720
  events: u,
2676
2721
  total: s,
2677
- offset: 0,
2722
+ offset: d,
2678
2723
  limit: u.length
2679
2724
  };
2680
2725
  }
2681
2726
  //#endregion
2682
2727
  //#region src/hooks/useSessionLifecycle.ts
2683
- var bn = 9e4, xn = 30, Sn = 50, Cn = 500;
2684
- function wn(e, t) {
2728
+ var Sn = 9e4, Cn = 30, wn = 50, Tn = 500;
2729
+ function En(e, t) {
2685
2730
  return t.length ? e.length ? e.length >= t.length : !1 : !0;
2686
2731
  }
2687
- function Tn(e) {
2732
+ function Dn(e) {
2688
2733
  if (e.EventType !== "run_status") return null;
2689
2734
  let t = String(e.Content?.status || "").trim().toLowerCase();
2690
2735
  return t === "completed" ? {
@@ -2693,13 +2738,19 @@ function Tn(e) {
2693
2738
  } : t === "cancelled" || t === "canceled" || t === "aborted" ? {
2694
2739
  status: "stopped",
2695
2740
  phase: "后台长任务已取消"
2741
+ } : t === "interrupted" ? {
2742
+ status: "stopped",
2743
+ phase: "后台长任务已中断"
2696
2744
  } : t === "failed" || t === "error" ? {
2697
2745
  status: "failed",
2698
2746
  phase: "后台长任务失败"
2747
+ } : t === "resume_failed" ? {
2748
+ status: "failed",
2749
+ phase: "后台长任务恢复失败"
2699
2750
  } : null;
2700
2751
  }
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) => {
2752
+ function On(e) {
2753
+ 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
2754
  let i = r.filter((e) => c(e, !1, !1));
2704
2755
  if (!i.length) return;
2705
2756
  let a = await Promise.all(i.map(async (r) => {
@@ -2720,11 +2771,11 @@ function En(e) {
2720
2771
  }));
2721
2772
  if (s.current !== t) return;
2722
2773
  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) ? {
2774
+ o.size && J.getState().patchMessages((e) => e.map((e) => o.has(e.id) ? {
2724
2775
  ...e,
2725
2776
  feedback: o.get(e.id)
2726
2777
  } : e));
2727
- }, [n]), m = k(async (e) => {
2778
+ }, [n]), m = A(async (e) => {
2728
2779
  u.current?.abort();
2729
2780
  let t = new AbortController();
2730
2781
  u.current = t;
@@ -2732,14 +2783,14 @@ function En(e) {
2732
2783
  u.current !== t || t.signal.aborted || t.abort();
2733
2784
  }, o = globalThis.setTimeout(() => {
2734
2785
  a();
2735
- }, bn);
2786
+ }, Sn);
2736
2787
  try {
2737
2788
  let o = (await n.subscribeRunEvents({
2738
2789
  sessionId: e.sessionId,
2739
2790
  invocationId: e.invocationId,
2740
2791
  afterSeqId: e.afterSeqId
2741
2792
  }, { 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({
2793
+ for (L.getState().setCurrentRunId(e.invocationId), L.getState().updateActivity({
2743
2794
  sessionId: e.sessionId,
2744
2795
  status: "running",
2745
2796
  phase: "后台长任务运行中",
@@ -2763,8 +2814,8 @@ function En(e) {
2763
2814
  try {
2764
2815
  let t = JSON.parse(o);
2765
2816
  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({
2817
+ let n = Dn(t);
2818
+ if (n && L.getState().updateActivity({
2768
2819
  sessionId: e.sessionId,
2769
2820
  status: n.status,
2770
2821
  phase: n.phase,
@@ -2775,7 +2826,7 @@ function En(e) {
2775
2826
  break;
2776
2827
  }
2777
2828
  let c = nn(u);
2778
- wn(c, q.getState().messages) && q.getState().setMessages(c);
2829
+ En(c, J.getState().messages) && J.getState().setMessages(c);
2779
2830
  } catch (e) {
2780
2831
  console.warn("Failed to parse run event data", o, e);
2781
2832
  }
@@ -2784,24 +2835,24 @@ function En(e) {
2784
2835
  } catch (e) {
2785
2836
  e instanceof DOMException && e.name === "AbortError" || console.error("Failed to subscribe run events:", e);
2786
2837
  } 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);
2838
+ 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
2839
  }
2789
- }, [n]), h = k(async (e) => {
2840
+ }, [n]), h = A(async (e) => {
2790
2841
  s.current = e;
2791
2842
  let t = () => s.current === e;
2792
- R.getState().setCurrentSessionId(e), i(), u.current?.abort(), r && _.getState().setMobileSidebarOpen(!1);
2843
+ z.getState().setCurrentSessionId(e), i(), u.current?.abort(), r && _.getState().setMobileSidebarOpen(!1);
2793
2844
  try {
2794
- let r = await yn(e, n.listSessionEvents, {
2795
- pageSize: Cn,
2845
+ let r = await xn(e, n.listSessionEvents, {
2846
+ pageSize: Tn,
2796
2847
  shouldContinue: t
2797
2848
  });
2798
- if (!r || (R.getState().setSessionEventCache(e, {
2849
+ if (!r || (z.getState().setSessionEventCache(e, {
2799
2850
  events: r.events,
2800
2851
  total: r.total,
2801
2852
  offset: r.offset,
2802
2853
  limit: r.limit
2803
2854
  }), !t())) return;
2804
- let i = P.getState().capabilities || a;
2855
+ let i = F.getState().capabilities || a;
2805
2856
  if (i.RunLifecycle.Enabled && i.RunLifecycle.Checkpoints ? (n.listSessionCheckpoints({
2806
2857
  agentId: l.current,
2807
2858
  sessionId: e
@@ -2819,8 +2870,8 @@ function En(e) {
2819
2870
  })) : Q.getState().clearSessionCheckpoints(e), r.events) {
2820
2871
  let n = r.events, a = nn(n);
2821
2872
  if (!t()) return;
2822
- q.getState().setMessages(a), p(l.current, e, a);
2823
- let o = vn(n, {
2873
+ J.getState().setMessages(a), p(l.current, e, a);
2874
+ let o = yn(n, {
2824
2875
  now: Date.now(),
2825
2876
  staleAfterMs: 1800 * 1e3
2826
2877
  }), s = an(n);
@@ -2832,7 +2883,7 @@ function En(e) {
2832
2883
  });
2833
2884
  } else {
2834
2885
  if (!t()) return;
2835
- q.getState().setMessages([]), Q.getState().setSessionCheckpoints(e, []), Q.getState().setSessionToolReceipts(e, []);
2886
+ J.getState().setMessages([]), Q.getState().setSessionCheckpoints(e, []), Q.getState().setSessionToolReceipts(e, []);
2836
2887
  }
2837
2888
  } catch (e) {
2838
2889
  console.error("Failed to load session events:", e);
@@ -2844,73 +2895,73 @@ function En(e) {
2844
2895
  i,
2845
2896
  m,
2846
2897
  a
2847
- ]), g = k(async (e = "default-agent", t = null) => {
2898
+ ]), g = A(async (e = "default-agent", t = null) => {
2848
2899
  try {
2849
- let r = R.getState();
2850
- r.sessionsAgentId && r.sessionsAgentId !== e && r.resetSessionPagination(e), R.getState().setLoadingSessions(!0);
2900
+ let r = z.getState();
2901
+ r.sessionsAgentId && r.sessionsAgentId !== e && r.resetSessionPagination(e), z.getState().setLoadingSessions(!0);
2851
2902
  let i = await n.listSessions(e, {
2852
2903
  page: 1,
2853
- pageSize: xn
2904
+ pageSize: Cn
2854
2905
  });
2855
- R.getState().upsertSessions(i.Sessions || [], {
2906
+ z.getState().upsertSessions(i.Sessions || [], {
2856
2907
  agentId: e,
2857
2908
  total: Number(i.Total ?? i.Sessions?.length ?? 0),
2858
2909
  page: Number(i.Page ?? 1),
2859
- pageSize: Number(i.PageSize ?? xn),
2910
+ pageSize: Number(i.PageSize ?? Cn),
2860
2911
  replace: !0
2861
2912
  });
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());
2913
+ let a = z.getState().sessions, o = s.current, c = we(a, o || t || Se(e));
2914
+ c && c !== o ? h(c) : !c && o && (s.current = null, z.getState().setCurrentSessionId(null), J.getState().setMessages([]), Q.getState().clearSessionCheckpoints());
2864
2915
  } catch (e) {
2865
- if (e instanceof U) return;
2916
+ if (e instanceof W) return;
2866
2917
  console.error("Failed to fetch sessions:", e);
2867
2918
  } finally {
2868
- R.getState().setLoadingSessions(!1);
2919
+ z.getState().setLoadingSessions(!1);
2869
2920
  }
2870
- }, [n, h]), v = k(async () => {
2871
- let e = R.getState();
2921
+ }, [n, h]), v = A(async () => {
2922
+ let e = z.getState();
2872
2923
  if (e.isLoadingSessions || !e.hasMoreSessions) return;
2873
- let t = ue({
2924
+ let t = le({
2874
2925
  total: e.sessionsTotal,
2875
- pageSize: e.sessionsPageSize || xn,
2926
+ pageSize: e.sessionsPageSize || Cn,
2876
2927
  loadedPages: e.loadedPages
2877
2928
  });
2878
2929
  if (!t) return;
2879
- let r = e.sessionsPageSize || xn, i = e.sessionsAgentId || l.current || "default-agent";
2930
+ let r = e.sessionsPageSize || Cn, i = e.sessionsAgentId || l.current || "default-agent";
2880
2931
  try {
2881
- R.getState().setLoadingSessions(!0);
2932
+ z.getState().setLoadingSessions(!0);
2882
2933
  let a = await n.listSessions(i, {
2883
2934
  page: t,
2884
2935
  pageSize: r
2885
2936
  });
2886
- R.getState().upsertSessions(a.Sessions || [], {
2937
+ z.getState().upsertSessions(a.Sessions || [], {
2887
2938
  agentId: i,
2888
2939
  total: Number(a.Total ?? e.sessionsTotal),
2889
2940
  page: Number(a.Page ?? t),
2890
2941
  pageSize: Number(a.PageSize ?? r)
2891
2942
  });
2892
2943
  } catch (e) {
2893
- if (e instanceof U) return;
2944
+ if (e instanceof W) return;
2894
2945
  console.error("Failed to load more sessions:", e);
2895
2946
  } finally {
2896
- R.getState().setLoadingSessions(!1);
2947
+ z.getState().setLoadingSessions(!1);
2897
2948
  }
2898
2949
  }, [n]);
2899
- A(() => {
2950
+ j(() => {
2900
2951
  d.current = h;
2901
- }, [h]), A(() => {
2952
+ }, [h]), j(() => {
2902
2953
  f.current = g;
2903
2954
  }, [g]);
2904
- let y = k(async () => {
2955
+ let y = A(async () => {
2905
2956
  try {
2906
2957
  o?.();
2907
2958
  let e = (await n.createSession(t)).SessionId;
2908
- e && (R.getState().upsertSessions([{
2959
+ e && (z.getState().upsertSessions([{
2909
2960
  SessionId: e,
2910
2961
  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));
2962
+ }]), 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
2963
  } catch (e) {
2913
- if (e instanceof U) return;
2964
+ if (e instanceof W) return;
2914
2965
  console.error("Failed to create session:", e);
2915
2966
  }
2916
2967
  }, [
@@ -2919,11 +2970,11 @@ function En(e) {
2919
2970
  o,
2920
2971
  g,
2921
2972
  r
2922
- ]), b = k(async (e) => {
2973
+ ]), b = A(async (e) => {
2923
2974
  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));
2975
+ 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
2976
  } catch (e) {
2926
- if (e instanceof U) return;
2977
+ if (e instanceof W) return;
2927
2978
  console.error("Failed to delete session", e);
2928
2979
  }
2929
2980
  }, [
@@ -2935,29 +2986,26 @@ function En(e) {
2935
2986
  fetchSessions: g,
2936
2987
  loadMoreSessions: v,
2937
2988
  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, {
2989
+ loadOlderSessionEvents: A(async (e) => {
2990
+ let t = z.getState().eventCache[e];
2991
+ if (!t || t.isLoadingOlder) return;
2992
+ let r = bn(t, wn);
2993
+ if (r) try {
2994
+ z.getState().setSessionEventLoadingOlder(e, !0);
2995
+ let i = await n.listSessionEvents(e, r), a = i.Events || [], o = rn(a, t.events), c = t.offset + a.length;
2996
+ if (z.getState().setSessionEventCache(e, {
2949
2997
  events: o,
2950
- total: Number(a.Total ?? t.total),
2951
- offset: Number(a.Offset ?? r),
2998
+ total: Number(i.Total ?? t.total),
2999
+ offset: c,
2952
3000
  limit: o.length
2953
3001
  }), s.current === e) {
2954
3002
  let t = nn(o);
2955
- q.getState().setMessages(t), p(l.current, e, t);
3003
+ J.getState().setMessages(t), p(l.current, e, t);
2956
3004
  }
2957
3005
  } catch (e) {
2958
- e instanceof U || console.error("Failed to load older session events:", e);
3006
+ e instanceof W || console.error("Failed to load older session events:", e);
2959
3007
  } finally {
2960
- R.getState().setSessionEventLoadingOlder(e, !1);
3008
+ z.getState().setSessionEventLoadingOlder(e, !1);
2961
3009
  }
2962
3010
  }, [n, p]),
2963
3011
  createNewSession: y,
@@ -2969,28 +3017,28 @@ function En(e) {
2969
3017
  }
2970
3018
  //#endregion
2971
3019
  //#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({
3020
+ function kn({ uiCapabilities: e, createNewSession: n, deleteSession: a, loadSession: s, loadMoreSessions: c }) {
3021
+ 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
3022
  isMobile: y,
2975
3023
  desktopSidebarOpen: g,
2976
3024
  mobileSidebarOpen: v
2977
3025
  });
2978
- return b ? y ? /* @__PURE__ */ T(S, {
3026
+ return b ? y ? /* @__PURE__ */ E(S, {
2979
3027
  open: v,
2980
3028
  onOpenChange: (e) => _.getState().setMobileSidebarOpen(e),
2981
- children: /* @__PURE__ */ E(o, {
3029
+ children: /* @__PURE__ */ D(o, {
2982
3030
  side: "left",
2983
3031
  className: "w-[88vw] max-w-sm border-slate-200 bg-slate-50 p-0 dark:border-slate-800 dark:bg-slate-950",
2984
3032
  children: [
2985
- /* @__PURE__ */ T(r, {
3033
+ /* @__PURE__ */ E(r, {
2986
3034
  className: "sr-only",
2987
3035
  children: "历史记录"
2988
3036
  }),
2989
- /* @__PURE__ */ T(i, {
3037
+ /* @__PURE__ */ E(i, {
2990
3038
  className: "sr-only",
2991
3039
  children: "查看和切换历史对话。"
2992
3040
  }),
2993
- /* @__PURE__ */ T(l, {
3041
+ /* @__PURE__ */ E(l, {
2994
3042
  sessions: u,
2995
3043
  currentSessionId: d,
2996
3044
  onCreateNewSession: n,
@@ -2999,7 +3047,7 @@ function Dn({ uiCapabilities: e, createNewSession: n, deleteSession: a, loadSess
2999
3047
  t.stopPropagation(), a(e);
3000
3048
  },
3001
3049
  onTogglePinSession: (e, t) => {
3002
- t.stopPropagation(), R.getState().togglePinnedSession(e);
3050
+ t.stopPropagation(), z.getState().togglePinnedSession(e);
3003
3051
  },
3004
3052
  onLoadMoreSessions: c,
3005
3053
  sessionTitle: te,
@@ -3009,9 +3057,9 @@ function Dn({ uiCapabilities: e, createNewSession: n, deleteSession: a, loadSess
3009
3057
  })
3010
3058
  ]
3011
3059
  })
3012
- }) : /* @__PURE__ */ T("aside", {
3060
+ }) : /* @__PURE__ */ E("aside", {
3013
3061
  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, {
3062
+ children: /* @__PURE__ */ E(l, {
3015
3063
  sessions: u,
3016
3064
  currentSessionId: d,
3017
3065
  onCreateNewSession: n,
@@ -3020,7 +3068,7 @@ function Dn({ uiCapabilities: e, createNewSession: n, deleteSession: a, loadSess
3020
3068
  t.stopPropagation(), a(e);
3021
3069
  },
3022
3070
  onTogglePinSession: (e, t) => {
3023
- t.stopPropagation(), R.getState().togglePinnedSession(e);
3071
+ t.stopPropagation(), z.getState().togglePinnedSession(e);
3024
3072
  },
3025
3073
  onLoadMoreSessions: c,
3026
3074
  sessionTitle: te,
@@ -3032,78 +3080,78 @@ function Dn({ uiCapabilities: e, createNewSession: n, deleteSession: a, loadSess
3032
3080
  }
3033
3081
  //#endregion
3034
3082
  //#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, {
3083
+ var An = N.Root, jn = N.Portal, Mn = O.forwardRef(({ className: e, ...t }, n) => /* @__PURE__ */ E(N.Overlay, {
3036
3084
  ref: n,
3037
3085
  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
3086
  ...t
3039
3087
  }));
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, {
3088
+ Mn.displayName = N.Overlay.displayName;
3089
+ var Nn = O.forwardRef(({ className: e, children: t, ...n }, r) => /* @__PURE__ */ D(jn, { children: [/* @__PURE__ */ E(Mn, {}), /* @__PURE__ */ D(N.Content, {
3042
3090
  ref: r,
3043
3091
  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
3092
  ...n,
3045
- children: [t, /* @__PURE__ */ E(M.Close, {
3093
+ children: [t, /* @__PURE__ */ D(N.Close, {
3046
3094
  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", {
3095
+ children: [/* @__PURE__ */ E(T, { className: "h-4 w-4" }), /* @__PURE__ */ E("span", {
3048
3096
  className: "sr-only",
3049
3097
  children: "Close"
3050
3098
  })]
3051
3099
  })]
3052
3100
  })] }));
3053
- jn.displayName = M.Content.displayName;
3054
- var Mn = ({ className: e, ...t }) => /* @__PURE__ */ T("div", {
3101
+ Nn.displayName = N.Content.displayName;
3102
+ var Pn = ({ className: e, ...t }) => /* @__PURE__ */ E("div", {
3055
3103
  className: p("flex flex-col space-y-1.5 text-center sm:text-left", e),
3056
3104
  ...t
3057
3105
  });
3058
- Mn.displayName = "DialogHeader";
3059
- var Nn = ({ className: e, ...t }) => /* @__PURE__ */ T("div", {
3106
+ Pn.displayName = "DialogHeader";
3107
+ var Fn = ({ className: e, ...t }) => /* @__PURE__ */ E("div", {
3060
3108
  className: p("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2", e),
3061
3109
  ...t
3062
3110
  });
3063
- Nn.displayName = "DialogFooter";
3064
- var Pn = D.forwardRef(({ className: e, ...t }, n) => /* @__PURE__ */ T(M.Title, {
3111
+ Fn.displayName = "DialogFooter";
3112
+ var In = O.forwardRef(({ className: e, ...t }, n) => /* @__PURE__ */ E(N.Title, {
3065
3113
  ref: n,
3066
3114
  className: p("text-lg font-semibold leading-none tracking-tight", e),
3067
3115
  ...t
3068
3116
  }));
3069
- Pn.displayName = M.Title.displayName;
3070
- var Fn = D.forwardRef(({ className: e, ...t }, n) => /* @__PURE__ */ T(M.Description, {
3117
+ In.displayName = N.Title.displayName;
3118
+ var Ln = O.forwardRef(({ className: e, ...t }, n) => /* @__PURE__ */ E(N.Description, {
3071
3119
  ref: n,
3072
3120
  className: p("text-sm text-muted-foreground", e),
3073
3121
  ...t
3074
3122
  }));
3075
- Fn.displayName = M.Description.displayName;
3123
+ Ln.displayName = N.Description.displayName;
3076
3124
  //#endregion
3077
3125
  //#region src/components/chat/AttachmentPreview.tsx
3078
- function In(e, t) {
3126
+ function Rn(e, t) {
3079
3127
  if (!(!t || e)) return {
3080
3128
  width: `min(${t.width}px, calc(100vw - 5rem))`,
3081
3129
  height: `min(${t.height}px, calc(100vh - 9rem))`
3082
3130
  };
3083
3131
  }
3084
- function Ln(e, t) {
3132
+ function zn(e, t) {
3085
3133
  if (!(!t || e)) return { width: `min(${t.width + 32}px, calc(100vw - 3rem))` };
3086
3134
  }
3087
- function Rn({ attachment: e, isMobile: t, previewImageSize: n, onClose: r, onImageLoad: i }) {
3088
- return /* @__PURE__ */ T(On, {
3135
+ function Bn({ attachment: e, isMobile: t, previewImageSize: n, onClose: r, onImageLoad: i }) {
3136
+ return /* @__PURE__ */ E(An, {
3089
3137
  open: !!e?.url,
3090
3138
  onOpenChange: (e) => !e && r(),
3091
- children: /* @__PURE__ */ E(jn, {
3139
+ children: /* @__PURE__ */ D(Nn, {
3092
3140
  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", {
3141
+ style: zn(t, n),
3142
+ children: [/* @__PURE__ */ E("div", {
3095
3143
  className: "flex items-center gap-3 border-b border-slate-800 px-4 py-3 pr-16",
3096
- children: /* @__PURE__ */ T(Pn, {
3144
+ children: /* @__PURE__ */ E(In, {
3097
3145
  className: "truncate text-sm font-medium",
3098
3146
  children: e?.name || "附件预览"
3099
3147
  })
3100
- }), /* @__PURE__ */ T("div", {
3148
+ }), /* @__PURE__ */ E("div", {
3101
3149
  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", {
3150
+ children: e ? e.type.startsWith("image/") ? /* @__PURE__ */ E("img", {
3103
3151
  src: e.url,
3104
3152
  alt: e.name,
3105
3153
  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),
3154
+ style: Rn(t, n),
3107
3155
  onLoad: (e) => {
3108
3156
  let t = e.currentTarget;
3109
3157
  i({
@@ -3111,7 +3159,7 @@ function Rn({ attachment: e, isMobile: t, previewImageSize: n, onClose: r, onIma
3111
3159
  height: t.naturalHeight
3112
3160
  });
3113
3161
  }
3114
- }) : /* @__PURE__ */ T("iframe", {
3162
+ }) : /* @__PURE__ */ E("iframe", {
3115
3163
  src: e.url,
3116
3164
  title: e.name,
3117
3165
  className: "h-full min-h-[24rem] w-full rounded-xl border border-slate-800 bg-white"
@@ -3122,7 +3170,7 @@ function Rn({ attachment: e, isMobile: t, previewImageSize: n, onClose: r, onIma
3122
3170
  }
3123
3171
  //#endregion
3124
3172
  //#region src/utils/context.js
3125
- function zn(e) {
3173
+ function Vn(e) {
3126
3174
  if (typeof e == "number" && Number.isFinite(e) && e > 0) return e;
3127
3175
  if (typeof e == "string" && e.trim()) {
3128
3176
  let t = Number(e);
@@ -3130,15 +3178,15 @@ function zn(e) {
3130
3178
  }
3131
3179
  return null;
3132
3180
  }
3133
- function Bn(e) {
3181
+ function Hn(e) {
3134
3182
  return /[\u3400-\u4DBF\u4E00-\u9FFF\uF900-\uFAFF]/u.test(e);
3135
3183
  }
3136
- function Vn(e) {
3184
+ function Un(e) {
3137
3185
  let t = String(e || "").trim();
3138
3186
  if (!t) return 0;
3139
3187
  let n = 0, r = 0;
3140
3188
  for (let e of t) {
3141
- if (Bn(e)) {
3189
+ if (Hn(e)) {
3142
3190
  n += 1;
3143
3191
  continue;
3144
3192
  }
@@ -3146,24 +3194,24 @@ function Vn(e) {
3146
3194
  }
3147
3195
  return Math.max(1, n + Math.ceil(r / 4));
3148
3196
  }
3149
- function Hn(e) {
3197
+ function Wn(e) {
3150
3198
  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;
3199
+ if (e.role === "system") return e.eventType === "context_checkpoint" ? Un(e.summary || "") : 0;
3200
+ let t = Un(e.content || "");
3201
+ return e.tools && (t += Object.values(e.tools).reduce((e, t) => e + Un(t?.name || "") + Un(t?.args || "") + Un(t?.output || ""), 0)), t;
3154
3202
  }
3155
- function Un(e) {
3156
- return e ? zn(e.context_window_tokens) ?? zn(e?.limits?.context_window_tokens) : null;
3203
+ function Gn(e) {
3204
+ return e ? Vn(e.context_window_tokens) ?? Vn(e?.limits?.context_window_tokens) : null;
3157
3205
  }
3158
- function Wn(e) {
3159
- return e ? zn(e.auto_compact_threshold_percentage) ?? 84 : 84;
3206
+ function Kn(e) {
3207
+ return e ? Vn(e.auto_compact_threshold_percentage) ?? 84 : 84;
3160
3208
  }
3161
- function Gn({ messages: e, draftInput: t, selectedModel: n }) {
3162
- let r = Un(n);
3209
+ function qn({ messages: e, draftInput: t, selectedModel: n }) {
3210
+ let r = Gn(n);
3163
3211
  if (!r) return null;
3164
3212
  let i = [...e || []].reverse().find((e) => e?.role === "system" && e?.eventType === "context_checkpoint" && e?.status === "running");
3165
3213
  if (i) {
3166
- let e = Hn(i);
3214
+ let e = Wn(i);
3167
3215
  return {
3168
3216
  label: "正在压缩上下文…",
3169
3217
  phase: "compressing",
@@ -3172,10 +3220,10 @@ function Gn({ messages: e, draftInput: t, selectedModel: n }) {
3172
3220
  percent: Math.min(100, Math.max(0, Math.round(e / r * 100)))
3173
3221
  };
3174
3222
  }
3175
- let a = (e || []).reduce((e, t) => e + Hn(t), 0) + Vn(t || "");
3223
+ let a = (e || []).reduce((e, t) => e + Wn(t), 0) + Un(t || "");
3176
3224
  if (a <= 0) return null;
3177
3225
  let o = Math.min(100, Math.max(0, Math.round(a / r * 100)));
3178
- return o >= Wn(n) ? {
3226
+ return o >= Kn(n) ? {
3179
3227
  label: `估算上下文 ${o}% · 即将压缩`,
3180
3228
  phase: "warning",
3181
3229
  percent: o,
@@ -3191,37 +3239,39 @@ function Gn({ messages: e, draftInput: t, selectedModel: n }) {
3191
3239
  }
3192
3240
  //#endregion
3193
3241
  //#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({
3242
+ function Jn({ agentName: e, isMobile: t, onDeleteFeedback: n, onSubmitFeedback: r, onRespondToApproval: i, onStopGeneration: a, onCancelRemote: o, checkpointResumeEnabled: s = !1, onResumeCheckpoint: c, onLoadOlderSessionEvents: l }) {
3243
+ 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
3244
  messages: u,
3197
3245
  draftInput: v,
3198
- selectedModel: O
3246
+ selectedModel: re
3199
3247
  }), [
3200
3248
  v,
3201
3249
  u,
3202
- O
3250
+ re
3203
3251
  ]);
3204
- return A(() => {
3205
- w.current = f;
3206
- }, [f]), A(() => {
3252
+ return j(() => {
3253
+ T.current = f;
3254
+ }, [f]), j(() => {
3255
+ k.current = !0, S.current = !0, C.current = !1, w.current = 0;
3256
+ }, [d]), j(() => {
3207
3257
  let e = x.current;
3208
3258
  if (!e) return;
3209
3259
  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) {
3260
+ let t = e.scrollHeight - e.scrollTop - e.clientHeight, n = e.scrollTop < w.current - 2;
3261
+ if (w.current = e.scrollTop, e.scrollTop < 200 && d && g && g.offset > 0 && !g.isLoadingOlder && !O.current && l) {
3212
3262
  let t = e.scrollHeight;
3213
- D.current = !0, l(d).then(() => {
3263
+ O.current = !0, l(d).then(() => {
3214
3264
  requestAnimationFrame(() => {
3215
3265
  let e = x.current;
3216
3266
  if (!e) return;
3217
3267
  let n = e.scrollHeight - t;
3218
- e.scrollTop += n, ne.current = e.scrollTop;
3268
+ e.scrollTop += n, w.current = e.scrollTop;
3219
3269
  });
3220
3270
  }).finally(() => {
3221
- D.current = !1;
3271
+ O.current = !1;
3222
3272
  });
3223
3273
  }
3224
- if (w.current && n) {
3274
+ if (T.current && n) {
3225
3275
  C.current = !0, S.current = !1;
3226
3276
  return;
3227
3277
  }
@@ -3237,15 +3287,33 @@ function Kn({ agentName: e, isMobile: t, onDeleteFeedback: n, onSubmitFeedback:
3237
3287
  g,
3238
3288
  d,
3239
3289
  l
3240
- ]), A(() => {
3290
+ ]), j(() => {
3241
3291
  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, {
3292
+ if (e) {
3293
+ if (u.length > 0 && k.current) {
3294
+ let e = z.getState().currentSessionId, t = 0, n = -1, r = 0, i = () => {
3295
+ if (z.getState().currentSessionId !== e) return;
3296
+ let a = x.current;
3297
+ if (a) {
3298
+ if (a.scrollHeight !== n && (n = a.scrollHeight, a.scrollTop = a.scrollHeight, w.current = a.scrollTop, r += 1, r < 8)) {
3299
+ t = requestAnimationFrame(i);
3300
+ return;
3301
+ }
3302
+ S.current = !0, C.current = !1, k.current = !1;
3303
+ }
3304
+ };
3305
+ return t = requestAnimationFrame(i), () => {
3306
+ cancelAnimationFrame(t);
3307
+ };
3308
+ }
3309
+ S.current && (e.scrollTop = e.scrollHeight, w.current = e.scrollTop);
3310
+ }
3311
+ }, [u, f]), /* @__PURE__ */ D(ne, { children: [/* @__PURE__ */ E(m, {
3244
3312
  agentName: e,
3245
3313
  isMobile: t,
3246
3314
  isStreaming: f,
3247
3315
  activity: p,
3248
- contextIndicator: ie,
3316
+ contextIndicator: A,
3249
3317
  messages: u,
3250
3318
  onDeleteFeedback: n,
3251
3319
  onOpenAttachmentPreview: (e) => {
@@ -3258,7 +3326,7 @@ function Kn({ agentName: e, isMobile: t, onDeleteFeedback: n, onSubmitFeedback:
3258
3326
  checkpoints: s ? h : [],
3259
3327
  onResumeCheckpoint: c,
3260
3328
  scrollRef: x
3261
- }), /* @__PURE__ */ T(Rn, {
3329
+ }), /* @__PURE__ */ E(Bn, {
3262
3330
  attachment: ee,
3263
3331
  isMobile: t,
3264
3332
  previewImageSize: te,
@@ -3270,7 +3338,7 @@ function Kn({ agentName: e, isMobile: t, onDeleteFeedback: n, onSubmitFeedback:
3270
3338
  }
3271
3339
  //#endregion
3272
3340
  //#region src/utils/attachment.ts
3273
- function qn(e) {
3341
+ function Yn(e) {
3274
3342
  return [
3275
3343
  e.name,
3276
3344
  e.size,
@@ -3278,19 +3346,19 @@ function qn(e) {
3278
3346
  e.type
3279
3347
  ].join(":");
3280
3348
  }
3281
- function Jn(e, t) {
3349
+ function Xn(e, t) {
3282
3350
  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);
3351
+ for (let t of e) n.set(Yn(t), t);
3352
+ for (let e of t) n.set(Yn(e), e);
3285
3353
  return Array.from(n.values());
3286
3354
  }
3287
- function Yn(e) {
3355
+ function Zn(e) {
3288
3356
  return Array.from(e.clipboardData.items || []).filter((e) => e.kind === "file").map((e) => e.getAsFile()).filter((e) => !!e);
3289
3357
  }
3290
3358
  //#endregion
3291
3359
  //#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({
3360
+ function Qn({ composerMaxHeight: e, submitDraft: t, stopGeneration: n, cancelRemote: r, isMobile: i }) {
3361
+ 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
3362
  messages: d,
3295
3363
  draftInput: o,
3296
3364
  selectedModel: g
@@ -3298,18 +3366,18 @@ function Xn({ composerMaxHeight: e, submitDraft: t, stopGeneration: n, cancelRem
3298
3366
  o,
3299
3367
  d,
3300
3368
  g
3301
- ]), y = k((e, n) => {
3369
+ ]), y = A((e, n) => {
3302
3370
  !e && n.length === 0 || (_.getState().setInput(""), _.getState().setAttachments([]), t(e, n));
3303
3371
  }, [t]);
3304
- A(() => {
3372
+ j(() => {
3305
3373
  h.current && (h.current.style.height = "auto", h.current.style.height = `${Math.min(h.current.scrollHeight, e)}px`);
3306
3374
  }, [o, e]);
3307
3375
  let b = (t) => {
3308
3376
  _.getState().setInput(t.target.value), t.target.style.height = "auto", t.target.style.height = `${Math.min(t.target.scrollHeight, e)}px`;
3309
3377
  }, ee = (e) => {
3310
- e.length && _.getState().setAttachments((t) => Jn(t, e));
3378
+ e.length && _.getState().setAttachments((t) => Xn(t, e));
3311
3379
  };
3312
- return /* @__PURE__ */ T(a, {
3380
+ return /* @__PURE__ */ E(a, {
3313
3381
  attachments: s,
3314
3382
  composerContextIndicator: v,
3315
3383
  composerMaxHeight: e,
@@ -3321,7 +3389,7 @@ function Xn({ composerMaxHeight: e, submitDraft: t, stopGeneration: n, cancelRem
3321
3389
  onAppendAttachments: ee,
3322
3390
  onInputChange: b,
3323
3391
  onPaste: (e) => {
3324
- let t = Yn(e);
3392
+ let t = Zn(e);
3325
3393
  t.length && (e.preventDefault(), e.stopPropagation(), ee(t));
3326
3394
  },
3327
3395
  onRemoveAttachment: (e) => _.getState().setAttachments((t) => t.filter((t, n) => n !== e)),
@@ -3333,8 +3401,8 @@ function Xn({ composerMaxHeight: e, submitDraft: t, stopGeneration: n, cancelRem
3333
3401
  }
3334
3402
  //#endregion
3335
3403
  //#region src/api/session.ts
3336
- async function Zn(e, t) {
3337
- let n = await K("ListSessions", {
3404
+ async function $n(e, t) {
3405
+ let n = await q("ListSessions", {
3338
3406
  AgentId: e,
3339
3407
  Page: t?.page,
3340
3408
  PageSize: t?.pageSize
@@ -3346,16 +3414,16 @@ async function Zn(e, t) {
3346
3414
  PageSize: Number.isFinite(Number(n.PageSize)) ? Number(n.PageSize) : t?.pageSize ?? n.Sessions?.length ?? 0
3347
3415
  };
3348
3416
  }
3349
- async function Qn(e, t) {
3350
- return (await K("CreateSession", { AgentId: e }, t)).Session;
3417
+ async function er(e, t) {
3418
+ return (await q("CreateSession", { AgentId: e }, t)).Session;
3351
3419
  }
3352
- async function $n(e, t) {
3353
- await K("DeleteSession", { SessionId: e }, t);
3420
+ async function tr(e, t) {
3421
+ await q("DeleteSession", { SessionId: e }, t);
3354
3422
  }
3355
3423
  //#endregion
3356
3424
  //#region src/api/events.ts
3357
- async function er(e, t) {
3358
- let n = await K("ListSessionEvents", {
3425
+ async function nr(e, t) {
3426
+ let n = await q("ListSessionEvents", {
3359
3427
  SessionId: e,
3360
3428
  Offset: t?.offset,
3361
3429
  Limit: t?.limit
@@ -3369,34 +3437,34 @@ async function er(e, t) {
3369
3437
  }
3370
3438
  //#endregion
3371
3439
  //#region src/api/run.ts
3372
- async function tr(e, t) {
3373
- return ze("RunAgent", e, t);
3440
+ async function rr(e, t) {
3441
+ return Re("RunAgent", e, t);
3374
3442
  }
3375
3443
  //#endregion
3376
3444
  //#region src/api/checkpoints.ts
3377
- async function nr(e, t) {
3445
+ async function ir(e, t) {
3378
3446
  let n = {
3379
3447
  AgentId: e.agentId,
3380
3448
  SessionId: e.sessionId
3381
3449
  };
3382
- return e.runId && (n.RunId = e.runId), K("ListSessionCheckpoints", n, t);
3450
+ return e.runId && (n.RunId = e.runId), q("ListSessionCheckpoints", n, t);
3383
3451
  }
3384
- async function rr(e, t) {
3385
- return K("GetCheckpointResumePreview", {
3452
+ async function ar(e, t) {
3453
+ return q("GetCheckpointResumePreview", {
3386
3454
  AgentId: e.agentId,
3387
3455
  SessionId: e.sessionId,
3388
3456
  RunId: e.runId,
3389
3457
  CheckpointId: e.checkpointId
3390
3458
  }, t);
3391
3459
  }
3392
- async function ir(e, t) {
3460
+ async function or(e, t) {
3393
3461
  let n = {
3394
3462
  AgentId: e.agentId,
3395
3463
  SessionId: e.sessionId
3396
3464
  };
3397
- return e.runId && (n.RunId = e.runId), e.checkpointId && (n.CheckpointId = e.checkpointId), K("ListToolReceipts", n, t);
3465
+ return e.runId && (n.RunId = e.runId), e.checkpointId && (n.CheckpointId = e.checkpointId), q("ListToolReceipts", n, t);
3398
3466
  }
3399
- async function ar(e, t) {
3467
+ async function sr(e, t) {
3400
3468
  let n = {
3401
3469
  AgentId: e.agentId,
3402
3470
  SessionId: e.sessionId,
@@ -3404,28 +3472,28 @@ async function ar(e, t) {
3404
3472
  CheckpointId: e.checkpointId,
3405
3473
  Stream: !0
3406
3474
  };
3407
- return e.resumeAttemptId && (n.ResumeAttemptId = e.resumeAttemptId), e.invocationId && (n.InvocationId = e.invocationId), ze("ResumeRun", n, t);
3475
+ return e.resumeAttemptId && (n.ResumeAttemptId = e.resumeAttemptId), e.invocationId && (n.InvocationId = e.invocationId), Re("ResumeRun", n, t);
3408
3476
  }
3409
3477
  //#endregion
3410
3478
  //#region src/api/workspace.ts
3411
- async function or(e, t, n) {
3412
- return K("ListWorkspaceFiles", {
3479
+ async function cr(e, t, n) {
3480
+ return q("ListWorkspaceFiles", {
3413
3481
  AgentId: e,
3414
3482
  Path: t,
3415
3483
  Recursive: n
3416
3484
  });
3417
3485
  }
3418
- async function sr(e) {
3419
- return Le("AddWorkspaceFile", e);
3486
+ async function lr(e) {
3487
+ return Ie("AddWorkspaceFile", e);
3420
3488
  }
3421
- async function cr(e, t) {
3422
- return K("DeleteWorkspaceFile", {
3489
+ async function ur(e, t) {
3490
+ return q("DeleteWorkspaceFile", {
3423
3491
  AgentId: e,
3424
3492
  Path: t
3425
3493
  });
3426
3494
  }
3427
- async function lr(e, t, n) {
3428
- return Re("GetWorkspaceFileContent", {
3495
+ async function dr(e, t, n) {
3496
+ return Le("GetWorkspaceFileContent", {
3429
3497
  AgentId: e,
3430
3498
  FilePath: t
3431
3499
  }, {
@@ -3435,133 +3503,133 @@ async function lr(e, t, n) {
3435
3503
  }
3436
3504
  //#endregion
3437
3505
  //#region src/api/upload.ts
3438
- async function ur(e, t) {
3439
- return Le("UploadFile", e, t);
3506
+ async function fr(e, t) {
3507
+ return Ie("UploadFile", e, t);
3440
3508
  }
3441
3509
  //#endregion
3442
3510
  //#region src/core/api/facade.ts
3443
- var dr = class {
3511
+ var pr = class {
3444
3512
  async listSessions(e, t) {
3445
- return Zn(e, t);
3513
+ return $n(e, t);
3446
3514
  }
3447
3515
  async createSession(e, t) {
3448
- return { SessionId: (await Qn(e, t)).SessionId };
3516
+ return { SessionId: (await er(e, t)).SessionId };
3449
3517
  }
3450
3518
  async deleteSession(e, t) {
3451
- await $n(e, t);
3519
+ await tr(e, t);
3452
3520
  }
3453
3521
  async listSessionEvents(e, t) {
3454
- return er(e, t);
3522
+ return nr(e, t);
3455
3523
  }
3456
3524
  async listSessionCheckpoints(e, t) {
3457
- return nr(e, t);
3525
+ return ir(e, t);
3458
3526
  }
3459
3527
  async previewCheckpointResume(e, t) {
3460
- return rr(e, t);
3528
+ return ar(e, t);
3461
3529
  }
3462
3530
  async listToolReceipts(e, t) {
3463
- return ir(e, t);
3531
+ return or(e, t);
3464
3532
  }
3465
3533
  async runAgent(e, t) {
3466
- return tr(e, t);
3534
+ return rr(e, t);
3467
3535
  }
3468
3536
  async resumeRun(e, t) {
3469
- return ar(e, t);
3537
+ return sr(e, t);
3470
3538
  }
3471
3539
  async subscribeRunEvents(e, t) {
3472
- return Be("SubscribeRunEvents", {
3540
+ return ze("SubscribeRunEvents", {
3473
3541
  SessionId: e.sessionId,
3474
3542
  InvocationId: e.invocationId,
3475
3543
  AfterSeqId: String(e.afterSeqId)
3476
3544
  }, t);
3477
3545
  }
3478
3546
  async cancelRun(e, t, n) {
3479
- return K("CancelRun", {
3547
+ return q("CancelRun", {
3480
3548
  AgentId: e,
3481
3549
  InvocationId: t
3482
3550
  }, n);
3483
3551
  }
3484
3552
  async getResponseFeedback(e, t) {
3485
- return K("GetResponseFeedback", e, t);
3553
+ return q("GetResponseFeedback", e, t);
3486
3554
  }
3487
3555
  async upsertResponseFeedback(e, t) {
3488
- return K("UpsertResponseFeedback", e, t);
3556
+ return q("UpsertResponseFeedback", e, t);
3489
3557
  }
3490
3558
  async deleteResponseFeedback(e, t) {
3491
- await K("DeleteResponseFeedback", e, t);
3559
+ await q("DeleteResponseFeedback", e, t);
3492
3560
  }
3493
3561
  async listWorkspaceFiles(e, t, n) {
3494
- return or(e, t, n);
3562
+ return cr(e, t, n);
3495
3563
  }
3496
3564
  async addWorkspaceFile(e) {
3497
- return sr(e);
3565
+ return lr(e);
3498
3566
  }
3499
3567
  async deleteWorkspaceFile(e, t) {
3500
- await cr(e, t);
3568
+ await ur(e, t);
3501
3569
  }
3502
3570
  async getWorkspaceFileContent(e, t, n) {
3503
- return lr(e, t, n);
3571
+ return dr(e, t, n);
3504
3572
  }
3505
3573
  async listAgentModels(e) {
3506
- return He(e);
3574
+ return Ve(e);
3507
3575
  }
3508
3576
  async getAgentUiBootstrap() {
3509
- return Ve();
3577
+ return Be();
3510
3578
  }
3511
3579
  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({
3580
+ return fr(e, t);
3581
+ }
3582
+ }, 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 })));
3583
+ function _r({ apiAdapter: e, initialSurface: r = "chat", routeShell: i } = {}) {
3584
+ 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({
3585
+ isMobile: R,
3586
+ viewportHeight: ce
3587
+ }), { fetchSessions: ue, loadMoreSessions: de, loadSession: fe, loadOlderSessionEvents: pe, createNewSession: me, deleteSession: he, currentSessionIdRef: B, agentIdRef: V, runSubscriptionAbortRef: ge } = On({
3520
3588
  agentId: o,
3521
3589
  currentSessionId: s,
3522
- isMobile: L,
3523
- uiCapabilities: M,
3590
+ isMobile: R,
3591
+ uiCapabilities: N,
3524
3592
  api: a,
3525
3593
  resetCompaction: () => {},
3526
- disconnectRun: () => ce.current?.()
3527
- }), ye = k((e) => {
3594
+ disconnectRun: () => se.current?.()
3595
+ }), ve = A((e) => {
3528
3596
  if (!e) return;
3529
3597
  let t = () => {
3530
- R.getState().clearSessionEventCache(e), de(B.current, e);
3598
+ z.getState().clearSessionEventCache(e), ue(V.current, e);
3531
3599
  };
3532
3600
  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({
3601
+ }, [V, ue]), ye = m.find((e) => e.id === p) || null, { submitDraft: be, stopGeneration: xe, disconnectRun: Se, resumeCheckpoint: we } = pn({
3534
3602
  agentId: o,
3535
3603
  currentSessionId: s,
3536
3604
  agentFramework: x,
3537
- apiFormats: ae,
3605
+ apiFormats: ie,
3538
3606
  selectedModel: p,
3539
- selectedModelMetadata: be,
3607
+ selectedModelMetadata: ye,
3540
3608
  thinkingMode: te,
3541
- uiCapabilities: M,
3542
- isMobile: L,
3609
+ uiCapabilities: N,
3610
+ isMobile: R,
3543
3611
  api: a,
3544
- currentSessionIdRef: z,
3545
- agentIdRef: B,
3546
- queuedDraftRef: se,
3547
- onRunSettled: ye
3612
+ currentSessionIdRef: B,
3613
+ agentIdRef: V,
3614
+ queuedDraftRef: oe,
3615
+ onRunSettled: ve
3548
3616
  });
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();
3617
+ j(() => {
3618
+ se.current = Se;
3619
+ }, [Se]);
3620
+ let Te = A(() => {
3621
+ let e = B.current;
3622
+ ge.current?.abort(), L.getState().stopActivity(), L.getState().stopSessionActivity(e), xe();
3555
3623
  }, [
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 || "";
3624
+ B,
3625
+ ge,
3626
+ xe
3627
+ ]), Ee = A(async () => {
3628
+ let e = B.current, t = L.getState(), n = t.currentRunId || t.getSessionActivity(e)?.runId || "";
3561
3629
  if (n) try {
3562
- await a.cancelRun(o, n), I.getState().stopSessionActivity(e, "取消请求已发送,后台运行会停在最近 checkpoint。");
3630
+ await a.cancelRun(o, n), L.getState().stopSessionActivity(e, "取消请求已发送,后台运行会停在最近 checkpoint。");
3563
3631
  } catch (t) {
3564
- console.warn("[App] cancelRun failed:", t), I.getState().updateActivity({
3632
+ console.warn("[App] cancelRun failed:", t), L.getState().updateActivity({
3565
3633
  sessionId: e,
3566
3634
  status: "failed",
3567
3635
  phase: "取消请求失败",
@@ -3569,130 +3637,130 @@ function hr({ apiAdapter: e, initialSurface: r = "chat", routeShell: i } = {}) {
3569
3637
  countEvent: !1
3570
3638
  });
3571
3639
  }
3572
- ye(e);
3640
+ ve(e);
3573
3641
  }, [
3574
3642
  a,
3575
3643
  o,
3576
- z,
3577
- ye
3578
- ]), { submitResponseFeedback: Oe, deleteResponseFeedback: ke, respondToApproval: je } = mn({
3644
+ B,
3645
+ ve
3646
+ ]), { submitResponseFeedback: De, deleteResponseFeedback: Oe, respondToApproval: Ae } = mn({
3579
3647
  agentId: o,
3580
3648
  currentSessionId: s,
3581
3649
  isStreaming: c,
3582
3650
  api: a,
3583
- submitDraft: xe
3651
+ submitDraft: be
3584
3652
  });
3585
- Ge({ fetchSessions: de }), A(() => {
3586
- B.current = o, z.current = s, we(o, s);
3653
+ We({ fetchSessions: ue }), j(() => {
3654
+ V.current = o, B.current = s, Ce(o, s);
3587
3655
  }, [
3588
3656
  o,
3589
3657
  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({
3658
+ V,
3659
+ B
3660
+ ]), j(() => {
3661
+ R ? _.getState().setWorkspacePanelFullscreen(!1) : (_.getState().setMobileSidebarOpen(!1), _.getState().setMobileActionsOpen(!1));
3662
+ }, [R]), j(() => {
3663
+ T || _.getState().setWorkspacePanelFullscreen(!1);
3664
+ }, [T]), j(() => () => {
3665
+ ge.current?.abort();
3666
+ }, [ge]);
3667
+ let Me = t(N), Ne = !!N.Thinking, H = g({
3600
3668
  workspaceFiles: S,
3601
3669
  accessMode: C
3602
- }), H = y({ isMobile: L }), U = Ae({
3603
- capability: M.NativeDashboard,
3670
+ }), U = y({ isMobile: R }), W = ke({
3671
+ capability: N.NativeDashboard,
3604
3672
  agentFramework: x,
3605
3673
  accessMode: C,
3606
3674
  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", {
3675
+ }), 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;
3676
+ j(() => {
3677
+ Ie.current || r !== "workspace" || !H || (Ie.current = !0, _.getState().setWorkspacePanelOpen(!0), _.getState().setWorkspacePanelFullscreen(!0));
3678
+ }, [r, H]);
3679
+ let Be = /* @__PURE__ */ D("div", {
3612
3680
  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
3681
  children: [
3614
- /* @__PURE__ */ T(Dn, {
3615
- uiCapabilities: M,
3616
- createNewSession: he,
3617
- deleteSession: ge,
3618
- loadSession: pe,
3619
- loadMoreSessions: fe
3682
+ /* @__PURE__ */ E(kn, {
3683
+ uiCapabilities: N,
3684
+ createNewSession: me,
3685
+ deleteSession: he,
3686
+ loadSession: fe,
3687
+ loadMoreSessions: de
3620
3688
  }),
3621
- /* @__PURE__ */ E("main", {
3689
+ /* @__PURE__ */ D("main", {
3622
3690
  className: "relative flex min-w-0 flex-1 flex-col bg-white dark:bg-slate-900",
3623
- children: [/* @__PURE__ */ T(n, {
3691
+ children: [/* @__PURE__ */ E(n, {
3624
3692
  agentName: f,
3625
3693
  currentSessionId: s,
3626
- nativeLauncherMode: W,
3627
- isMobile: L,
3694
+ nativeLauncherMode: G,
3695
+ isMobile: R,
3628
3696
  sidebarOpen: l,
3629
3697
  mobileSidebarOpen: u,
3630
3698
  onToggleSidebar: () => {
3631
- L ? _.getState().toggleMobileSidebar() : _.getState().toggleSidebar();
3699
+ R ? _.getState().toggleMobileSidebar() : _.getState().toggleSidebar();
3632
3700
  },
3633
3701
  availableModels: m,
3634
3702
  selectedModel: p,
3635
3703
  onSelectModel: (e) => {
3636
- F.getState().setSelectedModel(e), L && _.getState().setMobileActionsOpen(!1);
3704
+ I.getState().setSelectedModel(e), R && _.getState().setMobileActionsOpen(!1);
3637
3705
  },
3638
- selectedModelLabel: G,
3706
+ selectedModelLabel: K,
3639
3707
  modelCatalogLoaded: v,
3640
3708
  modelSource: h,
3641
- thinkingEnabled: Pe,
3709
+ thinkingEnabled: Ne,
3642
3710
  thinkingMode: te,
3643
- onSelectThinkingMode: (e) => F.getState().setThinkingMode(Me(e)),
3711
+ onSelectThinkingMode: (e) => I.getState().setThinkingMode(je(e)),
3644
3712
  mobileActionsOpen: d,
3645
3713
  onMobileActionsOpenChange: (e) => _.getState().setMobileActionsOpen(e),
3646
- workspaceEnabled: V,
3714
+ workspaceEnabled: H,
3647
3715
  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,
3716
+ nativeManagementLink: W,
3717
+ nativeTerminal: N.NativeTerminal
3718
+ }), G ? /* @__PURE__ */ E(b, {
3719
+ productLabel: Fe,
3720
+ nativeManagementLink: W,
3721
+ nativeTerminal: N.NativeTerminal,
3722
+ workspaceEnabled: H,
3655
3723
  onOpenWorkspace: () => _.getState().setWorkspacePanelOpen(!0)
3656
- }) : /* @__PURE__ */ E(re, { children: [/* @__PURE__ */ T(Kn, {
3724
+ }) : /* @__PURE__ */ D(ne, { children: [/* @__PURE__ */ E(Jn, {
3657
3725
  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
3726
+ isMobile: R,
3727
+ onDeleteFeedback: Oe,
3728
+ onSubmitFeedback: De,
3729
+ onRespondToApproval: Ae,
3730
+ onStopGeneration: Te,
3731
+ onCancelRemote: N.StopRun ? Ee : void 0,
3732
+ checkpointResumeEnabled: N.RunLifecycle.Enabled && N.RunLifecycle.Checkpoints && N.RunLifecycle.CheckpointResume,
3733
+ onResumeCheckpoint: we,
3734
+ onLoadOlderSessionEvents: pe
3735
+ }), /* @__PURE__ */ E(Qn, {
3736
+ composerMaxHeight: le,
3737
+ submitDraft: be,
3738
+ stopGeneration: Te,
3739
+ cancelRemote: N.StopRun ? Ee : void 0,
3740
+ isMobile: R
3673
3741
  })] })]
3674
3742
  }),
3675
- /* @__PURE__ */ T(ee, {
3743
+ /* @__PURE__ */ E(ee, {
3676
3744
  agentId: o,
3677
3745
  capability: S,
3678
- workspacePanelOpen: w,
3679
- workspacePanelWidth: D,
3680
- workspacePanelFullscreen: O,
3681
- isMobile: L,
3682
- workspaceEnabled: V,
3746
+ workspacePanelOpen: T,
3747
+ workspacePanelWidth: O,
3748
+ workspacePanelFullscreen: k,
3749
+ isMobile: R,
3750
+ workspaceEnabled: H,
3683
3751
  workspaceFiles: S,
3684
- workspacePanelPresentation: H,
3752
+ workspacePanelPresentation: U,
3685
3753
  closeWorkspacePanel: () => {
3686
3754
  _.getState().setWorkspacePanelFullscreen(!1), _.getState().setWorkspacePanelOpen(!1);
3687
3755
  },
3688
3756
  handleWorkspacePanelResizeStart: (e) => {
3689
- if (O || L) return;
3757
+ if (k || R) return;
3690
3758
  e.preventDefault();
3691
- let t = e.clientX, n = D, r = Ne && K ? 280 : 0, i = document.body.style.cursor, a = document.body.style.userSelect;
3759
+ let t = e.clientX, n = O, r = Me && q ? 280 : 0, i = document.body.style.cursor, a = document.body.style.userSelect;
3692
3760
  document.body.style.cursor = "col-resize", document.body.style.userSelect = "none";
3693
3761
  let o = (e) => {
3694
3762
  let i = n + t - e.clientX;
3695
- _.getState().setWorkspacePanelWidth(ht(i, window.innerWidth, r));
3763
+ _.getState().setWorkspacePanelWidth(mt(i, window.innerWidth, r));
3696
3764
  }, s = () => {
3697
3765
  document.body.style.cursor = i, document.body.style.userSelect = a, window.removeEventListener("pointermove", o), window.removeEventListener("pointerup", s), window.removeEventListener("pointercancel", s);
3698
3766
  };
@@ -3700,53 +3768,53 @@ function hr({ apiAdapter: e, initialSurface: r = "chat", routeShell: i } = {}) {
3700
3768
  },
3701
3769
  api: a
3702
3770
  }),
3703
- N && /* @__PURE__ */ T(ie, {
3771
+ P && /* @__PURE__ */ E(re, {
3704
3772
  fallback: null,
3705
- children: /* @__PURE__ */ T(pr, {})
3773
+ children: /* @__PURE__ */ E(hr, {})
3706
3774
  }),
3707
- Be ? /* @__PURE__ */ T(ie, {
3775
+ ze ? /* @__PURE__ */ E(re, {
3708
3776
  fallback: null,
3709
- children: /* @__PURE__ */ T(mr, {
3710
- capability: M.NativeTerminal,
3777
+ children: /* @__PURE__ */ E(gr, {
3778
+ capability: N.NativeTerminal,
3711
3779
  open: !0,
3712
3780
  sessionId: s,
3713
- onClose: () => ze(!1)
3781
+ onClose: () => Re(!1)
3714
3782
  })
3715
3783
  }) : null
3716
3784
  ]
3717
3785
  });
3718
- return i ? /* @__PURE__ */ T(i, { children: Ve }) : Ve;
3786
+ return i ? /* @__PURE__ */ E(i, { children: Be }) : Be;
3719
3787
  }
3720
3788
  //#endregion
3721
3789
  //#region src/core/transport/sse-transport.ts
3722
- function gr(e, t) {
3790
+ function vr(e, t) {
3723
3791
  if (e.eventName === "__ping__") {
3724
- I.getState().updateActivity({ countEvent: !1 });
3792
+ L.getState().updateActivity({ countEvent: !1 });
3725
3793
  return;
3726
3794
  }
3727
3795
  t.onEvent(e);
3728
3796
  }
3729
- var _r = class {
3797
+ var yr = class {
3730
3798
  protocol = "sse-post";
3731
3799
  async connect(e, t) {
3732
- let n = (await ze(e.action, e.body || {}, { signal: e.signal })).getReader(), r = new TextDecoder(), i = "", a = !1;
3800
+ let n = (await Re(e.action, e.body || {}, { signal: e.signal })).getReader(), r = new TextDecoder(), i = "", a = !1;
3733
3801
  return (async () => {
3734
3802
  try {
3735
3803
  for (; !a;) {
3736
3804
  let { value: e, done: a } = await n.read();
3737
3805
  if (a) break;
3738
3806
  i += r.decode(e, { stream: !0 });
3739
- let { chunks: o, remainder: s } = dt(i);
3807
+ let { chunks: o, remainder: s } = ut(i);
3740
3808
  i = s;
3741
3809
  for (let e of o) {
3742
3810
  if (!e.trim()) continue;
3743
- let n = ut(e);
3811
+ let n = lt(e);
3744
3812
  for (let e of n) {
3745
3813
  if (e.eventName === "__done__") {
3746
3814
  t.onComplete();
3747
3815
  return;
3748
3816
  }
3749
- gr(e, t);
3817
+ vr(e, t);
3750
3818
  }
3751
3819
  }
3752
3820
  }
@@ -3758,27 +3826,27 @@ var _r = class {
3758
3826
  a = !0, n.cancel().catch(() => {});
3759
3827
  };
3760
3828
  }
3761
- }, vr = class {
3829
+ }, br = class {
3762
3830
  protocol = "sse-get";
3763
3831
  async connect(e, t) {
3764
- let n = (await Be(e.action, e.params || {}, { signal: e.signal })).getReader(), r = new TextDecoder(), i = "", a = !1;
3832
+ let n = (await ze(e.action, e.params || {}, { signal: e.signal })).getReader(), r = new TextDecoder(), i = "", a = !1;
3765
3833
  return (async () => {
3766
3834
  try {
3767
3835
  for (; !a;) {
3768
3836
  let { value: e, done: a } = await n.read();
3769
3837
  if (a) break;
3770
3838
  i += r.decode(e, { stream: !0 });
3771
- let { chunks: o, remainder: s } = dt(i);
3839
+ let { chunks: o, remainder: s } = ut(i);
3772
3840
  i = s;
3773
3841
  for (let e of o) {
3774
3842
  if (!e.trim()) continue;
3775
- let n = ut(e);
3843
+ let n = lt(e);
3776
3844
  for (let e of n) {
3777
3845
  if (e.eventName === "__done__") {
3778
3846
  t.onComplete();
3779
3847
  return;
3780
3848
  }
3781
- gr(e, t);
3849
+ vr(e, t);
3782
3850
  }
3783
3851
  }
3784
3852
  }
@@ -3792,4 +3860,4 @@ var _r = class {
3792
3860
  }
3793
3861
  };
3794
3862
  //#endregion
3795
- export { hr as AgentWorkbench, dr as ApiFacadeImpl, xt as RunEngineImpl, vr as SseGetTransport, _r as SsePostTransport, ct as createProtocol };
3863
+ export { _r as AgentWorkbench, pr as ApiFacadeImpl, bt as RunEngineImpl, br as SseGetTransport, yr as SsePostTransport, st as createProtocol };