@kingsoftcloud/ksadk-web 0.2.14 → 0.2.16

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