@kingsoftcloud/ksadk-web 0.2.10 → 0.2.12

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 (123) hide show
  1. package/CHANGELOG.md +22 -0
  2. package/README.md +22 -0
  3. package/dist-ksadk/assets/{ArtifactsPanel-DWKSsYb9.js → ArtifactsPanel-DSLAubI4.js} +1 -1
  4. package/dist-ksadk/assets/{CodeBlock-CTxzE2VS.js → CodeBlock-pxXnLO20.js} +1 -1
  5. package/dist-ksadk/assets/{MathMessageMarkdown-BQEjyzo5.js → MathMessageMarkdown-vOUxyiqo.js} +1 -1
  6. package/dist-ksadk/assets/{MermaidBlock-CDmk7TDv.js → MermaidBlock-DesVdOvu.js} +6 -6
  7. package/dist-ksadk/assets/NativeTerminalPanel-DOlS-2_E.js +1 -0
  8. package/dist-ksadk/assets/{arc-DsDFn-pM.js → arc-Dy1xS0fu.js} +1 -1
  9. package/dist-ksadk/assets/architecture-7EHR7CIX-CAFeU8Os.js +1 -0
  10. package/dist-ksadk/assets/{architectureDiagram-3BPJPVTR-CXQLDPo9.js → architectureDiagram-3BPJPVTR-CBjkKkYl.js} +1 -1
  11. package/dist-ksadk/assets/{blockDiagram-GPEHLZMM-ByJsJcrt.js → blockDiagram-GPEHLZMM-A8m3qj2U.js} +1 -1
  12. package/dist-ksadk/assets/{c4Diagram-AAUBKEIU-D5eKWwvF.js → c4Diagram-AAUBKEIU-DpyviLny.js} +1 -1
  13. package/dist-ksadk/assets/channel-C6H4_5PB.js +1 -0
  14. package/dist-ksadk/assets/{chunk-2J33WTMH-CmLQ3DD9.js → chunk-2J33WTMH-BxgBSaDe.js} +1 -1
  15. package/dist-ksadk/assets/{chunk-4BX2VUAB-BhRYlJwh.js → chunk-4BX2VUAB-B5-MRUoY.js} +1 -1
  16. package/dist-ksadk/assets/{chunk-55IACEB6-B60wcTiu.js → chunk-55IACEB6-p_lPjbBV.js} +1 -1
  17. package/dist-ksadk/assets/{chunk-727SXJPM-BGlb7ll1.js → chunk-727SXJPM-CCkvnt-w.js} +1 -1
  18. package/dist-ksadk/assets/{chunk-AQP2D5EJ-C5QUv7XG.js → chunk-AQP2D5EJ-CVwRFsQH.js} +1 -1
  19. package/dist-ksadk/assets/{chunk-FMBD7UC4-Du4tdup0.js → chunk-FMBD7UC4-CX-pqxDO.js} +1 -1
  20. package/dist-ksadk/assets/{chunk-ND2GUHAM-BsLG8760.js → chunk-ND2GUHAM-C3UnR0sJ.js} +1 -1
  21. package/dist-ksadk/assets/chunk-QZHKN3VN-CSopwtUu.js +1 -0
  22. package/dist-ksadk/assets/classDiagram-4FO5ZUOK-C2HgHAcO.js +1 -0
  23. package/dist-ksadk/assets/classDiagram-v2-Q7XG4LA2-C2HgHAcO.js +1 -0
  24. package/dist-ksadk/assets/{cose-bilkent-S5V4N54A-JMKU0kQi.js → cose-bilkent-S5V4N54A-KvsU4x5h.js} +1 -1
  25. package/dist-ksadk/assets/{dagre-BM42HDAG-P3phXbyY.js → dagre-BM42HDAG-Dor0aZOJ.js} +1 -1
  26. package/dist-ksadk/assets/{diagram-2AECGRRQ-C6ifXc81.js → diagram-2AECGRRQ-DlHEhTI3.js} +1 -1
  27. package/dist-ksadk/assets/{diagram-5GNKFQAL-BLkF21oh.js → diagram-5GNKFQAL-COX0cMU1.js} +1 -1
  28. package/dist-ksadk/assets/{diagram-KO2AKTUF-A9gkeGco.js → diagram-KO2AKTUF-BCOXFG8k.js} +1 -1
  29. package/dist-ksadk/assets/{diagram-LMA3HP47-Bqa8UV5s.js → diagram-LMA3HP47-CMfmsn69.js} +1 -1
  30. package/dist-ksadk/assets/{diagram-OG6HWLK6-GRe4pokR.js → diagram-OG6HWLK6-dDeGgX0v.js} +1 -1
  31. package/dist-ksadk/assets/{dist-BVtcRB6j.js → dist--gHV8n2o.js} +1 -1
  32. package/dist-ksadk/assets/{dist-CNP2pf7G.js → dist-1zCAwoLz.js} +1 -1
  33. package/dist-ksadk/assets/{dist-DqTi4q3N.js → dist-BENjs6Lb.js} +1 -1
  34. package/dist-ksadk/assets/{dist-Cy6uew5t.js → dist-Bs03i11H.js} +1 -1
  35. package/dist-ksadk/assets/{dist-Bb2GBx-1.js → dist-BsVBlEZ-.js} +1 -1
  36. package/dist-ksadk/assets/{dist-DpijsPsZ.js → dist-C4sTOYcS.js} +1 -1
  37. package/dist-ksadk/assets/{dist-BicfrzOs.js → dist-C57vSV86.js} +1 -1
  38. package/dist-ksadk/assets/{dist-DIe_LuNr.js → dist-CAYJMjuY.js} +1 -1
  39. package/dist-ksadk/assets/{dist-Cybdu3nb.js → dist-CBtdzJEM.js} +1 -1
  40. package/dist-ksadk/assets/{dist-DBDWFC2P.js → dist-CTmbtesv.js} +1 -1
  41. package/dist-ksadk/assets/{dist-DELPkMrm.js → dist-C_xWNM7J.js} +1 -1
  42. package/dist-ksadk/assets/{dist-Bg1jewnS.js → dist-CbFZd4ak.js} +1 -1
  43. package/dist-ksadk/assets/{dist-Q6a4_tgv.js → dist-DEF9mj61.js} +1 -1
  44. package/dist-ksadk/assets/{dist-CJmGJ-_Y.js → dist-DGhCKjVB.js} +1 -1
  45. package/dist-ksadk/assets/{dist-D2JPG7pC.js → dist-F9T-QRU1.js} +1 -1
  46. package/dist-ksadk/assets/{dist-4wlqrTld.js → dist-FnmAZ-Xx.js} +1 -1
  47. package/dist-ksadk/assets/{dist-f5z7EOt1.js → dist-PqBiVJVJ.js} +1 -1
  48. package/dist-ksadk/assets/{dist-CejVKm1n.js → dist-Q9aY3kIX.js} +1 -1
  49. package/dist-ksadk/assets/{dist-CIwg1HaJ.js → dist-UOQFiknI.js} +1 -1
  50. package/dist-ksadk/assets/{dist-CQy3m9R-.js → dist-ZNy_TFjx.js} +1 -1
  51. package/dist-ksadk/assets/{dist-CTVErq35.js → dist-gpThSr_q.js} +1 -1
  52. package/dist-ksadk/assets/{dist-DjQKJaGi.js → dist-uU7j34p0.js} +1 -1
  53. package/dist-ksadk/assets/{erDiagram-TEJ5UH35-B8oH_MaS.js → erDiagram-TEJ5UH35-gIf_3lYO.js} +1 -1
  54. package/dist-ksadk/assets/eventmodeling-FCH6USID-mkGdlnaj.js +1 -0
  55. package/dist-ksadk/assets/{flowDiagram-I6XJVG4X-BhXAWO91.js → flowDiagram-I6XJVG4X-HKcmvyYs.js} +1 -1
  56. package/dist-ksadk/assets/{ganttDiagram-6RSMTGT7-BHNcInuv.js → ganttDiagram-6RSMTGT7-Tu7c867c.js} +1 -1
  57. package/dist-ksadk/assets/gitGraph-WXDBUCRP-CXH1_IMu.js +1 -0
  58. package/dist-ksadk/assets/{gitGraphDiagram-PVQCEYII-B82aMrtH.js → gitGraphDiagram-PVQCEYII-BrcpuI5k.js} +1 -1
  59. package/dist-ksadk/assets/{index-DZFhFnmx.js → index-C1I1EOOF.js} +8 -8
  60. package/dist-ksadk/assets/info-J43DQDTF-Zhlp1YtP.js +1 -0
  61. package/dist-ksadk/assets/{infoDiagram-5YYISTIA-b_Hi36OA.js → infoDiagram-5YYISTIA-CDU4UHsD.js} +1 -1
  62. package/dist-ksadk/assets/{ishikawaDiagram-YF4QCWOH-CpiHSyNA.js → ishikawaDiagram-YF4QCWOH-oloatnes.js} +1 -1
  63. package/dist-ksadk/assets/{journeyDiagram-JHISSGLW-BHxHdRl7.js → journeyDiagram-JHISSGLW-BN7V35oe.js} +1 -1
  64. package/dist-ksadk/assets/{kanban-definition-UN3LZRKU-kTk8cylz.js → kanban-definition-UN3LZRKU-U3-ruXcw.js} +1 -1
  65. package/dist-ksadk/assets/{katex-D_Tkj1sg.js → katex-C2Z3urCp.js} +1 -1
  66. package/dist-ksadk/assets/{linear-Dc1T6HuL.js → linear-HlEDIOWb.js} +1 -1
  67. package/dist-ksadk/assets/{mermaid-parser.core-Cfv6TRDT.js → mermaid-parser.core-D7S0E4RN.js} +2 -2
  68. package/dist-ksadk/assets/{mindmap-definition-RKZ34NQL-BsWFIVwR.js → mindmap-definition-RKZ34NQL-Clz8TER4.js} +1 -1
  69. package/dist-ksadk/assets/packet-YPE3B663-DKwY-P6F.js +1 -0
  70. package/dist-ksadk/assets/pie-LRSECV5Y-2L7YF8aV.js +1 -0
  71. package/dist-ksadk/assets/{pieDiagram-4H26LBE5-CAMt3yXs.js → pieDiagram-4H26LBE5-Bq6P4wmH.js} +1 -1
  72. package/dist-ksadk/assets/{quadrantDiagram-W4KKPZXB-D-fXOUis.js → quadrantDiagram-W4KKPZXB-DK4HwHPd.js} +1 -1
  73. package/dist-ksadk/assets/radar-GUYGQ44K-DnK94GvU.js +1 -0
  74. package/dist-ksadk/assets/{requirementDiagram-4Y6WPE33-on5TsZ__.js → requirementDiagram-4Y6WPE33-CJa5jzKr.js} +1 -1
  75. package/dist-ksadk/assets/{sankeyDiagram-5OEKKPKP-DJVzeVPc.js → sankeyDiagram-5OEKKPKP-BWkAvlqD.js} +1 -1
  76. package/dist-ksadk/assets/{sequenceDiagram-3UESZ5HK-DHLjjUuy.js → sequenceDiagram-3UESZ5HK-C0CubPXc.js} +1 -1
  77. package/dist-ksadk/assets/{stateDiagram-AJRCARHV-CS1svOV-.js → stateDiagram-AJRCARHV-ChiGIi7R.js} +1 -1
  78. package/dist-ksadk/assets/stateDiagram-v2-BHNVJYJU-PGyfW3uk.js +1 -0
  79. package/dist-ksadk/assets/{timeline-definition-PNZ67QCA-CzEM0jEl.js → timeline-definition-PNZ67QCA-DpI_se_A.js} +1 -1
  80. package/dist-ksadk/assets/treeView-BLDUP644-BDnH669R.js +1 -0
  81. package/dist-ksadk/assets/treemap-LRROVOQU-D8K5RWbs.js +1 -0
  82. package/dist-ksadk/assets/{vennDiagram-CIIHVFJN-CX4PRvMt.js → vennDiagram-CIIHVFJN-GHKSrJ1N.js} +1 -1
  83. package/dist-ksadk/assets/wardley-L42UT6IY-DkEQvWva.js +1 -0
  84. package/dist-ksadk/assets/{wardleyDiagram-YWT4CUSO-C_uFCiox.js → wardleyDiagram-YWT4CUSO-7M8-ddnD.js} +1 -1
  85. package/dist-ksadk/assets/{xychartDiagram-2RQKCTM6-C0jIrQJj.js → xychartDiagram-2RQKCTM6-n95Gfz0x.js} +1 -1
  86. package/dist-ksadk/index.html +1 -1
  87. package/dist-lib/App.d.ts.map +1 -1
  88. package/dist-lib/{ArtifactsPanel-Bwj57S63.js → ArtifactsPanel-yLxSIEFw.js} +1 -1
  89. package/dist-lib/{CodeBlock-CqZR-NBE.js → CodeBlock-CKy7sFkN.js} +1 -1
  90. package/dist-lib/{MathMessageMarkdown-D-CXaxIx.js → MathMessageMarkdown-D0fGt004.js} +2 -2
  91. package/dist-lib/{NativeTerminalPanel-DASBHcE0.js → NativeTerminalPanel-Bzdmm_Au.js} +94 -79
  92. package/dist-lib/{WorkspacePanelContainer-DLWLtZRG.js → WorkspacePanelContainer-BTxXY3RS.js} +4 -3
  93. package/dist-lib/components/chat/ChatHeader.d.ts.map +1 -1
  94. package/dist-lib/components/native/NativeTerminalPanel.d.ts +2 -1
  95. package/dist-lib/components/native/NativeTerminalPanel.d.ts.map +1 -1
  96. package/dist-lib/components.js +2 -2
  97. package/dist-lib/core/run/engine.d.ts.map +1 -1
  98. package/dist-lib/core/run/types.d.ts +2 -0
  99. package/dist-lib/core/run/types.d.ts.map +1 -1
  100. package/dist-lib/hooks/useBootstrap.d.ts +1 -0
  101. package/dist-lib/hooks/useBootstrap.d.ts.map +1 -1
  102. package/dist-lib/hooks/useRunAgent.d.ts +2 -0
  103. package/dist-lib/hooks/useRunAgent.d.ts.map +1 -1
  104. package/dist-lib/runtime.js +582 -577
  105. package/dist-lib/utils/terminal-session.d.ts +1 -0
  106. package/dist-lib/utils/terminal-session.d.ts.map +1 -1
  107. package/package.json +1 -1
  108. package/dist-ksadk/assets/NativeTerminalPanel-DEfOlZBW.js +0 -1
  109. package/dist-ksadk/assets/architecture-7EHR7CIX-DXMaR0JR.js +0 -1
  110. package/dist-ksadk/assets/channel-Be4GcfhN.js +0 -1
  111. package/dist-ksadk/assets/chunk-QZHKN3VN-D07X2ALj.js +0 -1
  112. package/dist-ksadk/assets/classDiagram-4FO5ZUOK-CcD88kyq.js +0 -1
  113. package/dist-ksadk/assets/classDiagram-v2-Q7XG4LA2-CcD88kyq.js +0 -1
  114. package/dist-ksadk/assets/eventmodeling-FCH6USID-Dl1-sbst.js +0 -1
  115. package/dist-ksadk/assets/gitGraph-WXDBUCRP-BH52bHVm.js +0 -1
  116. package/dist-ksadk/assets/info-J43DQDTF-DpbRzclW.js +0 -1
  117. package/dist-ksadk/assets/packet-YPE3B663-DCpFrt65.js +0 -1
  118. package/dist-ksadk/assets/pie-LRSECV5Y-BcSHuNj-.js +0 -1
  119. package/dist-ksadk/assets/radar-GUYGQ44K-DR1bSSMx.js +0 -1
  120. package/dist-ksadk/assets/stateDiagram-v2-BHNVJYJU-BXQTiPGY.js +0 -1
  121. package/dist-ksadk/assets/treeView-BLDUP644-94CTmjJu.js +0 -1
  122. package/dist-ksadk/assets/treemap-LRROVOQU-Cjv6ruUS.js +0 -1
  123. package/dist-ksadk/assets/wardley-L42UT6IY-B-RIUQEs.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-DLWLtZRG.js";
2
+ import { C as n, D as r, E as i, O as a, T as o, _ as s, b as c, c as l, f as u, g as d, h as f, k as p, l as m, m as h, n as g, o as _, p as v, r as y, s as b, t as ee, u as te, v as x, w as S, y as C } from "./WorkspacePanelContainer-BTxXY3RS.js";
3
3
  import { t as ne } from "./artifact-BfFsPe5A.js";
4
4
  import { X as w } from "lucide-react";
5
5
  import { Fragment as re, jsx as T, jsxs as E } from "react/jsx-runtime";
6
6
  import * as D from "react";
7
- import 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";
7
+ import ie, { Suspense as ae, useCallback as O, useEffect as k, useMemo as oe, useRef as A, useState as se } from "react";
8
+ import * as j from "@radix-ui/react-dialog";
9
+ import { create as M } from "zustand";
10
10
  //#region src/stores/bootstrap.ts
11
- var P = N()((t) => ({
11
+ var N = M()((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 ce(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 P = M()((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: ce(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
+ })), le = (e) => !!(e && e.status !== "completed" && e.status !== "failed" && e.status !== "stopped"), F = M()((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 && le(t)) } : { isStreaming: Object.values(e.sessionActivities).some(le) } : { isStreaming: n };
59
59
  }),
60
- isSessionStreaming: (e) => ce(t().getSessionActivity(e)),
60
+ isSessionStreaming: (e) => le(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 I(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 ue({ 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: I(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 de({ total: e = 0, pageSize: t = 30, loadedPages: n = /* @__PURE__ */ new Set() } = {}) {
179
179
  let r = Math.max(0, Number(e) || 0), i = Math.max(1, Number(t) || 30);
180
180
  if (r <= 0) return null;
181
181
  let a = Math.ceil(r / i);
@@ -184,7 +184,7 @@ function 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 fe(e) {
188
188
  let t = e.UpdatedAt;
189
189
  if (typeof t == "string") {
190
190
  let e = Date.parse(t);
@@ -192,37 +192,37 @@ function de(e) {
192
192
  }
193
193
  return typeof t == "number" ? t : 0;
194
194
  }
195
- var fe = "ksadk.pinnedSessionIds";
196
- function pe() {
195
+ var pe = "ksadk.pinnedSessionIds";
196
+ function me() {
197
197
  try {
198
- let e = globalThis.localStorage?.getItem(fe), t = e ? JSON.parse(e) : [];
198
+ let e = globalThis.localStorage?.getItem(pe), 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 he(e) {
205
205
  try {
206
- globalThis.localStorage?.setItem(fe, JSON.stringify(e));
206
+ globalThis.localStorage?.setItem(pe, JSON.stringify(e));
207
207
  } catch {}
208
208
  }
209
- function he(e, t) {
209
+ function ge(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 ? fe(t) - fe(e) : i - r;
214
214
  });
215
215
  }
216
- function ge(e, t, n) {
216
+ function _e(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 ge(Array.from(r.values()), n);
224
224
  }
225
- var R = N()((e) => ({
225
+ var L = M()((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: me(),
236
236
  eventCache: {},
237
- setSessions: (t) => e((e) => ({ sessions: he(t, e.pinnedSessionIds) })),
237
+ setSessions: (t) => e((e) => ({ sessions: ge(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 = _e(n?.replace ? [] : e.sessions, t, e.pinnedSessionIds), i = n?.page ?? e.sessionsPage, a = n?.pageSize ?? e.sessionsPageSize, o = n?.total ?? Math.max(e.sessionsTotal, r.length), s = n?.replace ? I(/* @__PURE__ */ new Set(), [i]) : I(e.loadedPages, [i]), c = ue({
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: ue({
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 he(r), {
287
287
  pinnedSessionIds: r,
288
- sessions: he(e.sessions, r)
288
+ sessions: ge(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
+ })), R = .28;
317
+ function z(e, t = 768) {
318
318
  return Number(e) <= t;
319
319
  }
320
- function _e({ isMobile: e, desktopSidebarOpen: t, mobileSidebarOpen: n }) {
320
+ function ve({ 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 ye({ 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 * R);
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 be = "ksadk:webui:selected-session:";
336
+ function xe(e) {
337
337
  return String(e || "").trim() || "default-agent";
338
338
  }
339
- function xe(e) {
339
+ function Se(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 Ce(e) {
347
+ return `${be}${xe(e)}`;
348
348
  }
349
- function Ce(e, t) {
350
- let n = xe(t);
349
+ function we(e, t) {
350
+ let n = Se(t);
351
351
  if (!n) return null;
352
352
  try {
353
- return String(n.getItem(Se(e)) || "").trim() || null;
353
+ return String(n.getItem(Ce(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 Te(e, t, n) {
359
+ let r = Se(n);
360
360
  if (!r) return;
361
- let i = Se(e), a = String(t || "").trim();
361
+ let i = Ce(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 Ee(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) {
384
- return String(e || "").trim().toLowerCase();
385
- }
382
+ var De = new Map([["openclaw", "OpenClaw"], ["hermes", "Hermes"]]);
386
383
  function Oe(e) {
387
384
  return String(e || "").trim().toLowerCase();
388
385
  }
389
386
  function ke(e) {
387
+ return String(e || "").trim().toLowerCase();
388
+ }
389
+ function Ae(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 je({ capability: e, agentFramework: t, accessMode: n, origin: r }) {
397
+ let i = Oe(n);
398
398
  if (i !== "owner" && i !== "private" || !e?.Enabled) return null;
399
- let a = Ee.get(Oe(t)) || "运行时";
399
+ let a = De.get(ke(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, Ae(r)).toString() : Ae(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 Me = new Set([
409
409
  "auto",
410
410
  "enabled",
411
411
  "disabled"
412
412
  ]);
413
- function Me(e) {
413
+ function Ne(e) {
414
414
  let t = String(e || "").trim().toLowerCase();
415
- return je.has(t) ? t : "auto";
415
+ return Me.has(t) ? t : "auto";
416
416
  }
417
- function Ne(e) {
418
- let t = Me(e);
417
+ function Pe(e) {
418
+ let t = Ne(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 V() {
424
+ function Fe() {
425
425
  return typeof window > "u" ? 900 : Math.round(window.visualViewport?.height || window.innerHeight || 900);
426
426
  }
427
- function Pe() {
427
+ function B() {
428
428
  return typeof window > "u" ? {
429
429
  isMobile: !1,
430
430
  viewportHeight: 900
431
431
  } : {
432
- isMobile: B(window.innerWidth, 768),
433
- viewportHeight: V()
432
+ isMobile: z(window.innerWidth, 768),
433
+ viewportHeight: Fe()
434
434
  };
435
435
  }
436
- function Fe() {
437
- let [e, t] = oe(() => Pe());
438
- return A(() => {
436
+ function Ie() {
437
+ let [e, t] = se(() => B());
438
+ return k(() => {
439
439
  if (typeof window > "u") return;
440
440
  let e = window.matchMedia("(max-width: 768px)"), n = () => {
441
- t(Pe());
441
+ t(B());
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 V = 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
+ }, H = 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
+ }, U = "/agentengine/api/v1";
463
+ async function Le(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 V(-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 V(e.status, t?.Message || `HTTP ${e.status}`, t);
471
+ if (t?.Code !== void 0 && t.Code !== 0) throw new V(t.Code, t.Message || "请求失败", t);
472
472
  return t.Data;
473
473
  }
474
- function G(e) {
475
- throw e instanceof DOMException && e.name === "AbortError" ? new U() : e;
474
+ function W(e) {
475
+ throw e instanceof DOMException && e.name === "AbortError" ? new H() : e;
476
476
  }
477
- async function K(e, t, n) {
477
+ async function G(e, t, n) {
478
478
  let r;
479
479
  try {
480
- r = await fetch(`${W}/${e}`, {
480
+ r = await fetch(`${U}/${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 W(e);
488
488
  }
489
- return Ie(r);
489
+ return Le(r);
490
490
  }
491
- async function Le(e, t, n) {
491
+ async function Re(e, t, n) {
492
492
  let r;
493
493
  try {
494
- r = await fetch(`${W}/${e}`, {
494
+ r = await fetch(`${U}/${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 W(e);
501
501
  }
502
- return Ie(r);
502
+ return Le(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 ze(e, t, n) {
505
+ let r = new URLSearchParams(t).toString(), i = r ? `${U}/${e}?${r}` : `${U}/${e}`, a;
506
506
  try {
507
507
  a = await fetch(i, { signal: n?.signal });
508
508
  } catch (e) {
509
- throw G(e);
509
+ throw W(e);
510
510
  }
511
- if (!a.ok) throw new H(a.status, `资源获取失败: ${a.statusText}`);
511
+ if (!a.ok) throw new V(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 V(-3, "文件读取失败");
516
516
  }
517
517
  }
518
- async function ze(e, t, n) {
518
+ async function Be(e, t, n) {
519
519
  let r;
520
520
  try {
521
- r = await fetch(`${W}/${e}`, {
521
+ r = await fetch(`${U}/${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 W(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 V(r.status, `流式请求失败: ${r.statusText}`);
534
+ if (!r.body) throw new V(-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 Ve(e, t, n) {
538
+ let r = new URLSearchParams(t).toString(), i = r ? `${U}/${e}?${r}` : `${U}/${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 W(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 V(a.status, `流式订阅失败: ${a.statusText}`);
548
+ if (!a.body) throw new V(-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 He() {
554
+ return G("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 Ue(e) {
559
+ return G("ListAgentModels", { AgentId: e });
560
560
  }
561
561
  //#endregion
562
562
  //#region src/hooks/useBootstrap.ts
563
- function Ue(e) {
563
+ function We(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 Ge(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 Ue(e), n = t?.Models;
571
+ Array.isArray(n) && P.getState().upsertModels(n);
572
572
  let r = t;
573
- r?.Current && F.getState().setSelectedModel(String(r.Current)), r?.Source && F.getState().setModelSource(String(r.Source));
573
+ r?.Current && !P.getState().selectedModel && P.getState().setSelectedModel(String(r.Current)), r?.Source && P.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
+ P.getState().setModelCatalogLoaded(!0);
578
578
  }
579
579
  }
580
- function Ge(n) {
581
- A(() => {
580
+ function Ke(n) {
581
+ k(() => {
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 He(), i = r, a = i?.Agent, o = String(a?.AgentId || "default-agent");
585
+ if (N.getState().setAgentId(o), a?.Name) {
586
586
  let e = String(a.Name);
587
- P.getState().setAgentName(e), document.title = e;
587
+ N.getState().setAgentName(e), document.title = e;
588
588
  }
589
589
  let s = String(a?.Framework || "").trim().toLowerCase();
590
- P.getState().setAgentFramework(s);
590
+ N.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
+ N.getState().setCapabilities(c), N.getState().setApiFormats(We(c.HostedChat.ApiFormats)), N.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
+ N.getState().setWorkspaceFiles(l), l || _.getState().setWorkspacePanelOpen(!1), t(c) && n.fetchSessions(o, we(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 && (P.getState().setSelectedModel(u.id), P.getState().upsertModels([u]), P.getState().setModelSource(u.source || "")), Ge(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), N.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", we("default-agent")), Ge("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 K = M()((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 qe() {
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 Je(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 q(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 J(...e) {
631
631
  for (let t of e) {
632
- let e = qe(t);
632
+ let e = Je(t);
633
633
  if (e) return e;
634
634
  }
635
635
  return "";
636
636
  }
637
- function Je(e, t) {
637
+ function Ye(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 Xe(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 Ze(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 Qe(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 = Je(e.content);
652
+ return J(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 $e(e) {
655
+ let t = e?.response && typeof e.response == "object" ? e.response : e, n = J(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 = Qe(e);
660
660
  if (t) return t;
661
661
  }
662
662
  return "";
663
663
  }
664
- function $e(e) {
664
+ function et(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 tt({ data: e, state: t, status: n }) {
669
+ let r = e?.item || e?.output_item || e || {}, i = String(r.type || "").trim(), a = Ye(r, e);
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 = Ze(t, a, r), i = q(r.arguments ?? r.args ?? r.input);
672
+ return Xe(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: Ze(t, a, r),
682
+ output: q(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: q(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 = Qe(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 = Qe(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 nt({ 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: q(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: q(t?.output ?? t?.result)
721
721
  }];
722
- if (r === "response.output_item.added") return et({
722
+ if (r === "response.output_item.added") return tt({
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 tt({
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 = Ze(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 = Ze(n, e, t), i = q(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 = J(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 = J(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 = J(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 = J(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 = $e(t), r = et(t).flatMap((e) => tt({
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 rt = class {
834
834
  id = "responses";
835
835
  createState() {
836
- return Ke();
836
+ return qe();
837
837
  }
838
838
  parse(e, t) {
839
- return tt({
839
+ return nt({
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 it(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 at(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 ot(e) {
868
+ let t = at(e).choices, n = at(Array.isArray(t) ? t[0] : null), r = at(n.delta), i = at(n.message);
869
869
  return {
870
- content: rt(r.content),
871
- reasoning: rt(r.reasoning_content),
872
- finalText: rt(i.content)
870
+ content: it(r.content),
871
+ reasoning: it(r.reasoning_content),
872
+ finalText: it(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 st = 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 = ot(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
+ }, ct = /* @__PURE__ */ new Map();
898
+ ct.set("responses", new rt()), ct.set("chat_completions", new st());
899
+ function lt(e) {
900
+ return ct.get(e) || ct.get("responses");
901
901
  }
902
902
  //#endregion
903
903
  //#region src/utils/stream-control.js
904
- function lt(e = []) {
904
+ function ut(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 dt(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 ft(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 pt(e) {
953
953
  return e instanceof Error ? e.message : String(e);
954
954
  }
955
- var pt = 1280;
956
- function mt(e) {
955
+ var mt = 1280;
956
+ function ht(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 gt(e, t, n) {
961
+ let r = Math.min(mt, 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 _t = 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 vt(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 _t.has(t) ? t : null;
978
978
  }
979
- function vt(e, t) {
979
+ function yt(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 bt() {
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 xt = {
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
+ }, St = 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 = xt[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" : ht({
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 = lt(a), s = o.createState(), c = bt();
1132
+ F.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"), F.getState().stopActivity("运行时已取消本次执行。"), this.emit({
1160
1160
  type: "activity",
1161
1161
  phase: "运行已取消",
1162
1162
  status: "stopped",
@@ -1190,18 +1190,18 @@ 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
+ F.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
+ this._stage !== "idle" && (this.setStage("stopping"), this.abortController?.abort(), F.getState().stopActivity(), F.getState().setCurrentRunId(""), this.setStage("cancelled"), this.emit({
1199
1199
  type: "system_message",
1200
1200
  content: "已停止接收本次输出;如果运行时不支持取消,后台执行可能仍会继续。"
1201
1201
  }));
1202
1202
  }
1203
1203
  disconnect() {
1204
- this._stage !== "idle" && (this.abortController?.abort(), I.getState().setStreaming(!1), I.getState().clearActivity(), this._stage = "idle", this.activeCompactionId = null, this.activeSessionId = null);
1204
+ this._stage !== "idle" && (this.abortController?.abort(), F.getState().setStreaming(!1), F.getState().clearActivity(), this._stage = "idle", this.activeCompactionId = null, this.activeSessionId = null);
1205
1205
  }
1206
1206
  async cancelRemote(e) {
1207
1207
  try {
@@ -1212,7 +1212,7 @@ var bt = {
1212
1212
  this.stop();
1213
1213
  }
1214
1214
  resumeRun(e) {
1215
- this.abortController?.abort(), this.abortController = new AbortController(), this.activeSessionId = e.sessionId, I.getState().setCurrentRunId(e.invocationId), this.setStage("connecting"), this.emit({
1215
+ this.abortController?.abort(), this.abortController = new AbortController(), this.activeSessionId = e.sessionId, F.getState().setCurrentRunId(e.invocationId), this.setStage("connecting"), this.emit({
1216
1216
  type: "activity",
1217
1217
  phase: "恢复运行事件订阅",
1218
1218
  status: "connecting",
@@ -1236,11 +1236,11 @@ var bt = {
1236
1236
  let { value: e, done: n } = await r.read();
1237
1237
  if (n) break;
1238
1238
  a += i.decode(e, { stream: !0 });
1239
- let { chunks: o, remainder: s } = dt(a);
1239
+ let { chunks: o, remainder: s } = ft(a);
1240
1240
  a = s;
1241
1241
  for (let e of o) {
1242
1242
  if (!e.trim()) continue;
1243
- let n = ut(e);
1243
+ let n = dt(e);
1244
1244
  for (let e of n) e.eventName !== "__done__" && (this.emit({
1245
1245
  type: "activity",
1246
1246
  phase: "收到恢复事件",
@@ -1248,7 +1248,7 @@ var bt = {
1248
1248
  }), this.emit({
1249
1249
  type: "stream_event",
1250
1250
  event: e.data
1251
- }), t = _t(e.data) || t);
1251
+ }), t = vt(e.data) || t);
1252
1252
  }
1253
1253
  }
1254
1254
  this.setStage("completing"), t === "cancelled" || t === "canceled" || t === "aborted" ? this.emit({
@@ -1270,15 +1270,15 @@ var bt = {
1270
1270
  } catch (e) {
1271
1271
  e instanceof DOMException && e.name === "AbortError" || console.error("Failed to subscribe to run events:", e);
1272
1272
  } finally {
1273
- I.getState().setStreaming(!1), I.getState().setCurrentRunId(""), this.setStage("idle"), this.activeSessionId = null;
1273
+ F.getState().setStreaming(!1), F.getState().setCurrentRunId(""), this.setStage("idle"), this.activeSessionId = null;
1274
1274
  }
1275
1275
  })();
1276
1276
  }
1277
1277
  resumeCheckpoint(e) {
1278
1278
  if (this._stage !== "idle") return !1;
1279
1279
  this.abortController = new AbortController(), this.activeSessionId = e.sessionId;
1280
- let t = yt();
1281
- return I.getState().setCurrentRunId(t), (async () => {
1280
+ let t = bt();
1281
+ return F.getState().setCurrentRunId(t), (async () => {
1282
1282
  try {
1283
1283
  if (this.setStage("connecting"), this.emit({
1284
1284
  type: "activity",
@@ -1310,7 +1310,7 @@ var bt = {
1310
1310
  checkpointId: e.checkpointId,
1311
1311
  resumeAttemptId: e.resumeAttemptId,
1312
1312
  invocationId: t
1313
- }, { signal: this.abortController?.signal }), r = ct("responses"), i = r.createState();
1313
+ }, { signal: this.abortController?.signal }), r = lt("responses"), i = r.createState();
1314
1314
  this.setStage("streaming"), this.emit({
1315
1315
  type: "activity",
1316
1316
  source: "restore",
@@ -1321,7 +1321,7 @@ var bt = {
1321
1321
  let a = `msg-${Date.now()}`, o = await this.consumeStream(n, r, i, a);
1322
1322
  if (o.terminalStatus && o.terminalStatus !== "completed") {
1323
1323
  if (o.terminalStatus === "cancelled") {
1324
- this.setStage("stopping"), I.getState().stopActivity("运行时已取消本次恢复。"), this.emit({
1324
+ this.setStage("stopping"), F.getState().stopActivity("运行时已取消本次恢复。"), this.emit({
1325
1325
  type: "activity",
1326
1326
  source: "restore",
1327
1327
  phase: "恢复已取消",
@@ -1352,7 +1352,7 @@ var bt = {
1352
1352
  error: e instanceof Error ? e : Error(String(e))
1353
1353
  }));
1354
1354
  } finally {
1355
- I.getState().setStreaming(!1), I.getState().setCurrentRunId(""), this.setStage("idle"), this.activeSessionId = null, e.onSettled?.(e.sessionId);
1355
+ F.getState().setStreaming(!1), F.getState().setCurrentRunId(""), this.setStage("idle"), this.activeSessionId = null, e.onSettled?.(e.sessionId);
1356
1356
  }
1357
1357
  })(), !0;
1358
1358
  }
@@ -1386,13 +1386,13 @@ var bt = {
1386
1386
  } catch (e) {
1387
1387
  this.emit({
1388
1388
  type: "system_message",
1389
- content: `【系统提示】图片 ${t.name} 读取失败,原因: ${ft(e)}`
1389
+ content: `【系统提示】图片 ${t.name} 读取失败,原因: ${pt(e)}`
1390
1390
  });
1391
1391
  }
1392
1392
  continue;
1393
1393
  }
1394
1394
  let e = new FormData();
1395
- e.append("file", t);
1395
+ e.append("file", t), e.append("AgentId", this.config.agentId);
1396
1396
  try {
1397
1397
  let r = await this.api.uploadFile(e, { signal: this.abortController?.signal });
1398
1398
  r?.FileData?.fileUri && n.push({
@@ -1403,7 +1403,7 @@ var bt = {
1403
1403
  } catch (e) {
1404
1404
  this.emit({
1405
1405
  type: "system_message",
1406
- content: `【系统提示】文件 ${t.name} 上传失败,原因: ${ft(e)}`
1406
+ content: `【系统提示】文件 ${t.name} 上传失败,原因: ${pt(e)}`
1407
1407
  });
1408
1408
  }
1409
1409
  }
@@ -1422,7 +1422,8 @@ var bt = {
1422
1422
  Stream: !0,
1423
1423
  ApiFormat: t,
1424
1424
  Model: this.config.selectedModel || void 0,
1425
- ModelOptions: Ne(Me(this.config.thinkingMode))
1425
+ ModelMetadata: this.config.selectedModelMetadata || void 0,
1426
+ ModelOptions: Pe(Ne(this.config.thinkingMode))
1426
1427
  };
1427
1428
  if (n) o.ResponsesInput = r.responsesInput, o.PreviousResponseId = r.previousResponseId;
1428
1429
  else {
@@ -1450,32 +1451,32 @@ var bt = {
1450
1451
  type: "assistant_message_created",
1451
1452
  messageId: r
1452
1453
  })), o += a.decode(e, { stream: !0 });
1453
- let { chunks: u, remainder: d } = dt(o);
1454
+ let { chunks: u, remainder: d } = ft(o);
1454
1455
  o = d;
1455
1456
  for (let e of u) {
1456
1457
  if (!e.trim()) continue;
1457
1458
  if (this.isCompactionChunk(e)) {
1458
- let t = ut(e);
1459
+ let t = dt(e);
1459
1460
  for (let e of t) e.eventName.startsWith("response.compaction") && this.upsertCompactionMessage({
1460
1461
  ...e.data,
1461
1462
  phase: e.eventName.split(".").pop()
1462
1463
  });
1463
1464
  continue;
1464
1465
  }
1465
- let a = ut(e), o = !1, c;
1466
+ let a = dt(e), o = !1, c;
1466
1467
  for (let e of a) {
1467
1468
  if (e.eventName === "__done__") {
1468
1469
  o = !0;
1469
1470
  continue;
1470
1471
  }
1471
- let i = vt(e.eventName, e.data);
1472
+ let i = yt(e.eventName, e.data);
1472
1473
  i && this.emit({
1473
1474
  type: "activity",
1474
1475
  ...i
1475
1476
  });
1476
1477
  let a = t.parse(e, n);
1477
1478
  for (let e of a) this.dispatchAction(e, r);
1478
- if (lt(a)) {
1479
+ if (ut(a)) {
1479
1480
  o = !0;
1480
1481
  let e = a.find((e) => e.type === "terminal");
1481
1482
  c = e && "status" in e ? String(e.status || "") : void 0;
@@ -1586,18 +1587,18 @@ var bt = {
1586
1587
  phase: "failed"
1587
1588
  }), null);
1588
1589
  }
1589
- }, St = [], Ct = [];
1590
- function X(e) {
1590
+ }, Ct = [], wt = [];
1591
+ function Y(e) {
1591
1592
  return typeof e == "string" ? e.trim() : "";
1592
1593
  }
1593
- function wt(e) {
1594
+ function Tt(e) {
1594
1595
  let t = typeof e == "number" ? e : Number(e);
1595
1596
  return Number.isFinite(t) ? t : void 0;
1596
1597
  }
1597
- function Tt(e) {
1598
+ function Et(e) {
1598
1599
  return typeof e == "string" || typeof e == "number" ? e : void 0;
1599
1600
  }
1600
- function Et(e) {
1601
+ function X(e) {
1601
1602
  return e && typeof e == "object" && !Array.isArray(e) ? e : void 0;
1602
1603
  }
1603
1604
  function Dt(e) {
@@ -1626,47 +1627,47 @@ function Mt(e) {
1626
1627
  return t ? e.filter((e) => e.runId === t) : [];
1627
1628
  }
1628
1629
  function Nt(e) {
1629
- let t = Et(e);
1630
+ let t = X(e);
1630
1631
  if (!t) return null;
1631
- let n = Et(t.Metadata ?? t.metadata), r = Et(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);
1632
+ let n = X(t.Metadata ?? t.metadata), r = X(t.Content ?? t.content), i = Y(t.CheckpointId ?? t.checkpointId ?? t.checkpoint_id ?? n?.checkpoint_id ?? n?.checkpointId ?? r?.checkpoint_id ?? r?.checkpointId), a = Y(t.RunId ?? t.runId ?? t.run_id ?? n?.run_id ?? n?.runId ?? r?.run_id ?? r?.runId);
1632
1633
  return !i || !a ? null : {
1633
1634
  checkpointId: i,
1634
1635
  runId: a,
1635
- sessionId: X(t.SessionId ?? t.sessionId ?? t.session_id) || void 0,
1636
- invocationId: X(t.InvocationId ?? t.invocationId ?? t.invocation_id) || void 0,
1637
- seqId: wt(t.SeqId ?? t.seqId ?? t.seq_id),
1638
- timestamp: Tt(t.Timestamp ?? t.timestamp ?? t.CreatedAt ?? t.createdAt),
1639
- framework: X(t.Framework ?? t.framework ?? n?.framework ?? r?.framework) || void 0,
1640
- frameworkRef: Et(t.FrameworkRef ?? t.frameworkRef ?? t.framework_ref ?? n?.framework_ref ?? n?.frameworkRef),
1641
- phase: X(t.Phase ?? t.phase ?? n?.phase ?? r?.phase) || void 0,
1642
- stage: X(t.Stage ?? t.stage ?? n?.stage ?? n?.title) || void 0,
1643
- summary: X(t.Summary ?? t.summary ?? n?.summary ?? n?.description) || void 0,
1644
- nextAction: X(t.NextAction ?? t.nextAction ?? t.next_action ?? n?.nextAction ?? n?.next_action) || void 0,
1645
- status: X(t.Status ?? t.status ?? n?.status ?? r?.status) || void 0,
1636
+ sessionId: Y(t.SessionId ?? t.sessionId ?? t.session_id) || void 0,
1637
+ invocationId: Y(t.InvocationId ?? t.invocationId ?? t.invocation_id) || void 0,
1638
+ seqId: Tt(t.SeqId ?? t.seqId ?? t.seq_id),
1639
+ timestamp: Et(t.Timestamp ?? t.timestamp ?? t.CreatedAt ?? t.createdAt),
1640
+ framework: Y(t.Framework ?? t.framework ?? n?.framework ?? r?.framework) || void 0,
1641
+ frameworkRef: X(t.FrameworkRef ?? t.frameworkRef ?? t.framework_ref ?? n?.framework_ref ?? n?.frameworkRef),
1642
+ phase: Y(t.Phase ?? t.phase ?? n?.phase ?? r?.phase) || void 0,
1643
+ stage: Y(t.Stage ?? t.stage ?? n?.stage ?? n?.title) || void 0,
1644
+ summary: Y(t.Summary ?? t.summary ?? n?.summary ?? n?.description) || void 0,
1645
+ nextAction: Y(t.NextAction ?? t.nextAction ?? t.next_action ?? n?.nextAction ?? n?.next_action) || void 0,
1646
+ status: Y(t.Status ?? t.status ?? n?.status ?? r?.status) || void 0,
1646
1647
  metadata: n
1647
1648
  };
1648
1649
  }
1649
1650
  function Pt(e) {
1650
- let t = Et(e);
1651
+ let t = X(e);
1651
1652
  if (!t) return null;
1652
- 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);
1653
+ let n = Y(t.ReceiptId ?? t.receiptId ?? t.receipt_id), r = Y(t.IdempotencyKey ?? t.idempotencyKey ?? t.idempotency_key), i = Y(t.ToolName ?? t.toolName ?? t.tool_name);
1653
1654
  return !n || !r || !i ? null : {
1654
1655
  receiptId: n,
1655
1656
  idempotencyKey: r,
1656
1657
  toolName: i,
1657
- toolCallId: X(t.ToolCallId ?? t.toolCallId ?? t.tool_call_id) || void 0,
1658
- runId: X(t.RunId ?? t.runId ?? t.run_id) || void 0,
1659
- checkpointId: X(t.CheckpointId ?? t.checkpointId ?? t.checkpoint_id) || void 0,
1660
- sessionId: X(t.SessionId ?? t.sessionId ?? t.session_id) || void 0,
1661
- invocationId: X(t.InvocationId ?? t.invocationId ?? t.invocation_id) || void 0,
1662
- seqId: wt(t.SeqId ?? t.seqId ?? t.seq_id),
1663
- timestamp: Tt(t.Timestamp ?? t.timestamp ?? t.CreatedAt ?? t.createdAt),
1664
- status: X(t.Status ?? t.status) || void 0,
1658
+ toolCallId: Y(t.ToolCallId ?? t.toolCallId ?? t.tool_call_id) || void 0,
1659
+ runId: Y(t.RunId ?? t.runId ?? t.run_id) || void 0,
1660
+ checkpointId: Y(t.CheckpointId ?? t.checkpointId ?? t.checkpoint_id) || void 0,
1661
+ sessionId: Y(t.SessionId ?? t.sessionId ?? t.session_id) || void 0,
1662
+ invocationId: Y(t.InvocationId ?? t.invocationId ?? t.invocation_id) || void 0,
1663
+ seqId: Tt(t.SeqId ?? t.seqId ?? t.seq_id),
1664
+ timestamp: Et(t.Timestamp ?? t.timestamp ?? t.CreatedAt ?? t.createdAt),
1665
+ status: Y(t.Status ?? t.status) || void 0,
1665
1666
  replayed: !!(t.Replayed ?? t.replayed),
1666
- metadata: Et(t.Metadata ?? t.metadata)
1667
+ metadata: X(t.Metadata ?? t.metadata)
1667
1668
  };
1668
1669
  }
1669
- var Z = N()((e, t) => ({
1670
+ var Z = M()((e, t) => ({
1670
1671
  checkpointsBySessionId: {},
1671
1672
  toolReceiptsBySessionId: {},
1672
1673
  setSessionCheckpoints: (t, n) => e((e) => ({ checkpointsBySessionId: {
@@ -1695,7 +1696,7 @@ var Z = N()((e, t) => ({
1695
1696
  },
1696
1697
  getSessionCheckpoints: (e) => {
1697
1698
  let n = String(e || "");
1698
- return n && t().checkpointsBySessionId[n] || St;
1699
+ return n && t().checkpointsBySessionId[n] || Ct;
1699
1700
  },
1700
1701
  setSessionToolReceipts: (t, n) => e((e) => ({ toolReceiptsBySessionId: {
1701
1702
  ...e.toolReceiptsBySessionId,
@@ -1706,7 +1707,7 @@ var Z = N()((e, t) => ({
1706
1707
  } })),
1707
1708
  getSessionToolReceipts: (e) => {
1708
1709
  let n = String(e || "");
1709
- return n && t().toolReceiptsBySessionId[n] || Ct;
1710
+ return n && t().toolReceiptsBySessionId[n] || wt;
1710
1711
  },
1711
1712
  clearSessionCheckpoints: (t) => e((e) => {
1712
1713
  let n = String(t || "");
@@ -1816,7 +1817,7 @@ function Bt(e) {
1816
1817
  function Vt(e) {
1817
1818
  let t = e?.Metadata?.responses_output;
1818
1819
  if (!Array.isArray(t)) return {};
1819
- let n = Ke(), r = tt({
1820
+ let n = qe(), r = nt({
1820
1821
  eventName: "response.completed",
1821
1822
  data: { response: {
1822
1823
  id: String(e.Metadata?.response_id || ""),
@@ -2217,8 +2218,8 @@ var Q = !1, sn = new Set(["completed"]), cn = new Set([
2217
2218
  "aborted",
2218
2219
  "incomplete"
2219
2220
  ]);
2220
- function ln(e) {
2221
- Q || (Q = !0, q.getState().patchMessages((t) => [...t, {
2221
+ function $(e) {
2222
+ Q || (Q = !0, K.getState().patchMessages((t) => [...t, {
2222
2223
  id: e,
2223
2224
  role: "model",
2224
2225
  content: "",
@@ -2226,9 +2227,9 @@ function ln(e) {
2226
2227
  reasoning: ""
2227
2228
  }]));
2228
2229
  }
2229
- function un(e) {
2230
+ function ln(e) {
2230
2231
  let t = String(e || "").trim().toLowerCase(), n = sn.has(t) ? "completed" : cn.has(t) ? "error" : null;
2231
- n && q.getState().patchMessages((e) => e.map((e) => {
2232
+ n && K.getState().patchMessages((e) => e.map((e) => {
2232
2233
  if (!e.tools) return e;
2233
2234
  let t = !1, r = Object.fromEntries(Object.entries(e.tools).map(([e, r]) => r.status === "running" ? (t = !0, [e, {
2234
2235
  ...r,
@@ -2240,15 +2241,15 @@ function un(e) {
2240
2241
  } : e;
2241
2242
  }));
2242
2243
  }
2243
- function dn(e) {
2244
- if (e.sessionId && R.getState().currentSessionId !== e.sessionId) {
2244
+ function un(e) {
2245
+ if (e.sessionId && L.getState().currentSessionId !== e.sessionId) {
2245
2246
  e.type === "stage_changed" && (e.stage === "completing" || e.stage === "error" || e.stage === "cancelled") && (Q = !1);
2246
2247
  return;
2247
2248
  }
2248
- let t = q.getState();
2249
+ let t = K.getState();
2249
2250
  switch (e.type) {
2250
2251
  case "activity":
2251
- I.getState().updateActivity({
2252
+ F.getState().updateActivity({
2252
2253
  sessionId: e.sessionId,
2253
2254
  source: e.source,
2254
2255
  status: e.status,
@@ -2266,28 +2267,28 @@ function dn(e) {
2266
2267
  }]);
2267
2268
  break;
2268
2269
  case "assistant_message_created":
2269
- ln(e.messageId);
2270
+ $(e.messageId);
2270
2271
  break;
2271
2272
  case "text_delta":
2272
- ln(e.messageId), t.patchMessages((t) => t.map((t) => t.id === e.messageId ? {
2273
+ $(e.messageId), t.patchMessages((t) => t.map((t) => t.id === e.messageId ? {
2273
2274
  ...t,
2274
2275
  content: t.content + e.delta
2275
2276
  } : t));
2276
2277
  break;
2277
2278
  case "text_final":
2278
- ln(e.messageId), t.patchMessages((t) => t.map((t) => t.id === e.messageId ? {
2279
+ $(e.messageId), t.patchMessages((t) => t.map((t) => t.id === e.messageId ? {
2279
2280
  ...t,
2280
2281
  content: e.text
2281
2282
  } : t));
2282
2283
  break;
2283
2284
  case "reasoning_delta":
2284
- ln(e.messageId), t.patchMessages((t) => t.map((t) => t.id === e.messageId ? {
2285
+ $(e.messageId), t.patchMessages((t) => t.map((t) => t.id === e.messageId ? {
2285
2286
  ...t,
2286
2287
  reasoning: (t.reasoning || "") + e.delta
2287
2288
  } : t));
2288
2289
  break;
2289
2290
  case "tool_upsert":
2290
- ln(e.messageId), t.patchMessages((t) => t.map((t) => t.id === e.messageId ? {
2291
+ $(e.messageId), t.patchMessages((t) => t.map((t) => t.id === e.messageId ? {
2291
2292
  ...t,
2292
2293
  tools: {
2293
2294
  ...t.tools || {},
@@ -2306,7 +2307,7 @@ function dn(e) {
2306
2307
  } : t));
2307
2308
  break;
2308
2309
  case "tool_result":
2309
- ln(e.messageId), t.patchMessages((t) => t.map((t) => t.id === e.messageId ? {
2310
+ $(e.messageId), t.patchMessages((t) => t.map((t) => t.id === e.messageId ? {
2310
2311
  ...t,
2311
2312
  tools: {
2312
2313
  ...t.tools || {},
@@ -2344,16 +2345,16 @@ function dn(e) {
2344
2345
  break;
2345
2346
  }
2346
2347
  case "stage_changed":
2347
- 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), Q = !1);
2348
+ e.stage === "streaming" || e.stage === "connecting" ? F.getState().setSessionStreaming(e.sessionId, !0) : (e.stage === "completing" || e.stage === "error" || e.stage === "cancelled") && (F.getState().setSessionStreaming(e.sessionId, !1), Q = !1);
2348
2349
  break;
2349
2350
  case "stream_ended":
2350
- I.getState().setSessionStreaming(e.sessionId, !1), globalThis.setTimeout(() => {
2351
- let t = I.getState();
2351
+ F.getState().setSessionStreaming(e.sessionId, !1), globalThis.setTimeout(() => {
2352
+ let t = F.getState();
2352
2353
  t.getSessionActivity(e.sessionId)?.status === "completed" && t.clearSessionActivity(e.sessionId);
2353
2354
  }, 2400), Q = !1;
2354
2355
  break;
2355
2356
  case "error":
2356
- I.getState().setSessionStreaming(e.sessionId, !1), I.getState().updateActivity({
2357
+ F.getState().setSessionStreaming(e.sessionId, !1), F.getState().updateActivity({
2357
2358
  sessionId: e.sessionId,
2358
2359
  status: "failed",
2359
2360
  phase: "连接断开或生成出错",
@@ -2366,22 +2367,22 @@ function dn(e) {
2366
2367
  }]), Q = !1;
2367
2368
  break;
2368
2369
  case "terminal":
2369
- un(e.status);
2370
+ ln(e.status);
2370
2371
  break;
2371
2372
  case "stream_event":
2372
2373
  if (e.event.EventType === "run_checkpoint" && Z.getState().upsertSessionCheckpoint(e.sessionId || e.event.SessionId, e.event), e.event.EventType === "run_status") {
2373
2374
  let t = String(e.event.Content?.status || "").trim().toLowerCase();
2374
- t === "completed" ? I.getState().updateActivity({
2375
+ t === "completed" ? F.getState().updateActivity({
2375
2376
  sessionId: e.sessionId || e.event.SessionId,
2376
2377
  status: "completed",
2377
2378
  phase: "后台长任务已完成",
2378
2379
  countEvent: !1
2379
- }) : t === "cancelled" || t === "canceled" || t === "aborted" ? I.getState().updateActivity({
2380
+ }) : t === "cancelled" || t === "canceled" || t === "aborted" ? F.getState().updateActivity({
2380
2381
  sessionId: e.sessionId || e.event.SessionId,
2381
2382
  status: "stopped",
2382
2383
  phase: "后台长任务已取消",
2383
2384
  countEvent: !1
2384
- }) : (t === "failed" || t === "error") && I.getState().updateActivity({
2385
+ }) : (t === "failed" || t === "error") && F.getState().updateActivity({
2385
2386
  sessionId: e.sessionId || e.event.SessionId,
2386
2387
  status: "failed",
2387
2388
  phase: "后台长任务失败",
@@ -2391,20 +2392,21 @@ function dn(e) {
2391
2392
  break;
2392
2393
  }
2393
2394
  }
2394
- function fn() {
2395
+ function dn() {
2395
2396
  Q = !1;
2396
2397
  }
2397
2398
  //#endregion
2398
2399
  //#region src/hooks/useRunAgent.ts
2399
- function pn(e) {
2400
- let t = j(/* @__PURE__ */ new Map()), n = j(() => {}), { agentId: r, apiFormats: i, agentFramework: a, selectedModel: o, thinkingMode: s, currentSessionIdRef: c, queuedDraftRef: l, onRunSettled: u, uiCapabilities: d } = e, f = k((e) => {
2400
+ function fn(e) {
2401
+ let t = A(/* @__PURE__ */ new Map()), n = A(() => {}), { agentId: r, apiFormats: i, agentFramework: a, selectedModel: o, selectedModelMetadata: s, thinkingMode: c, currentSessionIdRef: l, queuedDraftRef: u, onRunSettled: d, uiCapabilities: f } = e, p = O((e) => {
2401
2402
  e.updateConfig({
2402
2403
  agentId: r,
2403
2404
  apiFormats: i,
2404
2405
  agentFramework: a,
2405
2406
  selectedModel: o,
2406
- thinkingMode: s,
2407
- checkpointResumePreviewEnabled: !!d.RunLifecycle?.CheckpointResumePreview
2407
+ selectedModelMetadata: s,
2408
+ thinkingMode: c,
2409
+ checkpointResumePreviewEnabled: !!f.RunLifecycle?.CheckpointResumePreview
2408
2410
  });
2409
2411
  }, [
2410
2412
  r,
@@ -2412,124 +2414,125 @@ function pn(e) {
2412
2414
  a,
2413
2415
  o,
2414
2416
  s,
2415
- d.RunLifecycle?.CheckpointResumePreview
2416
- ]), p = k((n) => {
2417
+ c,
2418
+ f.RunLifecycle?.CheckpointResumePreview
2419
+ ]), m = O((n) => {
2417
2420
  let r = String(n || "new-session"), i = t.current.get(r);
2418
- return i ? f(i) : (i = new xt(e.api), f(i), i.subscribe(dn), t.current.set(r, i)), i;
2419
- }, [e.api, f]);
2420
- A(() => {
2421
- for (let e of t.current.values()) f(e);
2422
- }, [f]);
2423
- let m = k((e) => {
2424
- l.current.push(e), _.getState().setQueuedDrafts((t) => [...t, e]);
2425
- }, [l]), h = k((e) => {
2426
- let i = c.current, a = p(i);
2421
+ return i ? p(i) : (i = new St(e.api), p(i), i.subscribe(un), t.current.set(r, i)), i;
2422
+ }, [e.api, p]);
2423
+ k(() => {
2424
+ for (let e of t.current.values()) p(e);
2425
+ }, [p]);
2426
+ let h = O((e) => {
2427
+ u.current.push(e), _.getState().setQueuedDrafts((t) => [...t, e]);
2428
+ }, [u]), g = O((e) => {
2429
+ let i = l.current, a = m(i);
2427
2430
  if (a.stage !== "idle") return !1;
2428
- fn(), _.getState().setMobileActionsOpen(!1), I.getState().setSessionStreaming(i, !0);
2429
- let o = e.text.trim(), s = String(Date.now()), l = e.attachments.map((e) => ({
2431
+ dn(), _.getState().setMobileActionsOpen(!1), F.getState().setSessionStreaming(i, !0);
2432
+ let o = e.text.trim(), s = String(Date.now()), c = e.attachments.map((e) => ({
2430
2433
  name: e.name,
2431
2434
  url: URL.createObjectURL(e),
2432
2435
  type: e.type || "application/octet-stream"
2433
2436
  }));
2434
- (o || l.length > 0) && q.getState().patchMessages((e) => [...e, {
2437
+ (o || c.length > 0) && K.getState().patchMessages((e) => [...e, {
2435
2438
  id: s,
2436
2439
  role: "user",
2437
2440
  content: o,
2438
2441
  timestamp: Date.now(),
2439
- attachments: l.length ? l : void 0
2442
+ attachments: c.length ? c : void 0
2440
2443
  }]);
2441
- let d = a.start({
2444
+ let u = a.start({
2442
2445
  text: e.text,
2443
2446
  attachments: e.attachments,
2444
2447
  responsesInput: e.responsesInput,
2445
2448
  previousResponseId: e.previousResponseId,
2446
2449
  sessionId: i,
2447
2450
  onSessionCreated: (e) => {
2448
- R.getState().upsertSessions([{
2451
+ L.getState().upsertSessions([{
2449
2452
  SessionId: e,
2450
2453
  UpdatedAt: (/* @__PURE__ */ new Date()).toISOString()
2451
- }]), c.current = e, we(r, e), R.getState().setCurrentSessionId(e), i !== e && t.current.set(e, a);
2454
+ }]), l.current = e, Te(r, e), L.getState().setCurrentSessionId(e), i !== e && t.current.set(e, a);
2452
2455
  },
2453
2456
  onSessionUpsert: () => {},
2454
2457
  onSettled: (e) => {
2455
- u?.(e), n.current();
2458
+ d?.(e), n.current();
2456
2459
  }
2457
2460
  });
2458
- return d || I.getState().setSessionStreaming(i, !1), d;
2461
+ return u || F.getState().setSessionStreaming(i, !1), u;
2459
2462
  }, [
2460
2463
  r,
2461
- c,
2462
- p,
2463
- u
2464
+ l,
2465
+ m,
2466
+ d
2464
2467
  ]);
2465
- return A(() => {
2468
+ return k(() => {
2466
2469
  n.current = () => {
2467
- let e = l.current.shift();
2470
+ let e = u.current.shift();
2468
2471
  if (!e) {
2469
2472
  _.getState().setQueuedDrafts([]);
2470
2473
  return;
2471
2474
  }
2472
2475
  _.getState().setQueuedDrafts((e) => e.slice(1)), queueMicrotask(() => {
2473
- h(e) || (l.current.unshift(e), _.getState().setQueuedDrafts((t) => [e, ...t]));
2476
+ g(e) || (u.current.unshift(e), _.getState().setQueuedDrafts((t) => [e, ...t]));
2474
2477
  });
2475
2478
  };
2476
- }, [l, h]), {
2477
- submitDraft: k(async (e, t, n, r) => {
2479
+ }, [u, g]), {
2480
+ submitDraft: O(async (e, t, n, r) => {
2478
2481
  let i = {
2479
2482
  text: e,
2480
2483
  attachments: t,
2481
2484
  responsesInput: n,
2482
2485
  previousResponseId: r
2483
2486
  };
2484
- if (p(c.current).stage !== "idle" && I.getState().isSessionStreaming(c.current)) {
2485
- n === void 0 && m({
2487
+ if (m(l.current).stage !== "idle" && F.getState().isSessionStreaming(l.current)) {
2488
+ n === void 0 && h({
2486
2489
  text: e,
2487
2490
  attachments: t
2488
2491
  });
2489
2492
  return;
2490
2493
  }
2491
- !h(i) && n === void 0 && m({
2494
+ !g(i) && n === void 0 && h({
2492
2495
  text: e,
2493
2496
  attachments: t
2494
2497
  });
2495
2498
  }, [
2496
- c,
2499
+ l,
2500
+ h,
2497
2501
  m,
2498
- p,
2499
- h
2502
+ g
2500
2503
  ]),
2501
- stopGeneration: k(() => {
2502
- p(c.current).stop();
2503
- }, [c, p]),
2504
- disconnectRun: k(() => {
2505
- p(c.current).disconnect();
2506
- }, [c, p]),
2507
- resumeCheckpoint: k((e) => {
2508
- let t = p(e.sessionId);
2504
+ stopGeneration: O(() => {
2505
+ m(l.current).stop();
2506
+ }, [l, m]),
2507
+ disconnectRun: O(() => {
2508
+ m(l.current).disconnect();
2509
+ }, [l, m]),
2510
+ resumeCheckpoint: O((e) => {
2511
+ let t = m(e.sessionId);
2509
2512
  if (t.stage !== "idle") return !1;
2510
- fn(), _.getState().setMobileActionsOpen(!1), I.getState().setSessionStreaming(e.sessionId, !0);
2513
+ dn(), _.getState().setMobileActionsOpen(!1), F.getState().setSessionStreaming(e.sessionId, !0);
2511
2514
  let r = t.resumeCheckpoint({
2512
2515
  ...e,
2513
2516
  onSettled: (e) => {
2514
- u?.(e), n.current();
2517
+ d?.(e), n.current();
2515
2518
  }
2516
2519
  });
2517
- return r || I.getState().setSessionStreaming(e.sessionId, !1), r;
2518
- }, [p, u]),
2519
- resetCompaction: k(() => {
2520
- fn();
2520
+ return r || F.getState().setSessionStreaming(e.sessionId, !1), r;
2521
+ }, [m, d]),
2522
+ resetCompaction: O(() => {
2523
+ dn();
2521
2524
  }, [])
2522
2525
  };
2523
2526
  }
2524
2527
  //#endregion
2525
2528
  //#region src/hooks/useFeedback.ts
2526
- function mn(e) {
2529
+ function pn(e) {
2527
2530
  let { agentId: t, currentSessionId: n, isStreaming: r, api: i, submitDraft: a } = e;
2528
2531
  return {
2529
- submitResponseFeedback: k(async (e) => {
2532
+ submitResponseFeedback: O(async (e) => {
2530
2533
  if (!n) return;
2531
2534
  let r = null;
2532
- q.getState().patchMessages((t) => {
2535
+ K.getState().patchMessages((t) => {
2533
2536
  let n = v(t, {
2534
2537
  messageId: e.message.id,
2535
2538
  rating: e.rating,
@@ -2545,12 +2548,12 @@ function mn(e) {
2545
2548
  rating: e.rating,
2546
2549
  comment: e.comment || ""
2547
2550
  })))?.Feedback);
2548
- r && q.getState().patchMessages((t) => s(t, {
2551
+ r && K.getState().patchMessages((t) => s(t, {
2549
2552
  messageId: e.message.id,
2550
2553
  feedback: r
2551
2554
  }));
2552
2555
  } catch (t) {
2553
- console.error("Failed to submit response feedback:", t), q.getState().patchMessages((t) => C(t, {
2556
+ console.error("Failed to submit response feedback:", t), K.getState().patchMessages((t) => C(t, {
2554
2557
  messageId: e.message.id,
2555
2558
  previousFeedback: r
2556
2559
  }));
@@ -2560,10 +2563,10 @@ function mn(e) {
2560
2563
  n,
2561
2564
  i
2562
2565
  ]),
2563
- deleteResponseFeedback: k(async (e) => {
2566
+ deleteResponseFeedback: O(async (e) => {
2564
2567
  if (!n) return;
2565
2568
  let r = e.feedback ? { ...e.feedback } : null;
2566
- q.getState().patchMessages((t) => d(t, { messageId: e.id }));
2569
+ K.getState().patchMessages((t) => d(t, { messageId: e.id }));
2567
2570
  try {
2568
2571
  await i.deleteResponseFeedback(h({
2569
2572
  agentId: t,
@@ -2571,7 +2574,7 @@ function mn(e) {
2571
2574
  message: e
2572
2575
  }));
2573
2576
  } catch (t) {
2574
- console.error("Failed to delete response feedback:", t), q.getState().patchMessages((t) => C(t, {
2577
+ console.error("Failed to delete response feedback:", t), K.getState().patchMessages((t) => C(t, {
2575
2578
  messageId: e.id,
2576
2579
  previousFeedback: r
2577
2580
  }));
@@ -2581,14 +2584,14 @@ function mn(e) {
2581
2584
  n,
2582
2585
  i
2583
2586
  ]),
2584
- respondToApproval: k((e) => {
2585
- !e.approvalRequestId || r || (q.getState().patchMessages((t) => t.map((t) => ({
2587
+ respondToApproval: O((e) => {
2588
+ !e.approvalRequestId || r || (K.getState().patchMessages((t) => t.map((t) => ({
2586
2589
  ...t,
2587
2590
  tools: t.tools ? Object.fromEntries(Object.entries(t.tools).map(([t, n]) => [t, n.approvalRequestId === e.approvalRequestId ? {
2588
2591
  ...n,
2589
2592
  approvalStatus: e.approve ? "approved" : "rejected"
2590
2593
  } : n])) : t.tools
2591
- }))), q.getState().patchMessages((t) => [...t, {
2594
+ }))), K.getState().patchMessages((t) => [...t, {
2592
2595
  id: String(Date.now() + Math.random()),
2593
2596
  role: "system",
2594
2597
  content: e.approve ? "已批准工具调用,正在继续运行。" : "已拒绝工具调用,正在通知运行时。",
@@ -2603,10 +2606,10 @@ function mn(e) {
2603
2606
  }
2604
2607
  //#endregion
2605
2608
  //#region src/utils/run-state.js
2606
- function hn(e) {
2609
+ function mn(e) {
2607
2610
  return String(e?.InvocationId || e?.invocation_id || e?.invocationId || "").trim();
2608
2611
  }
2609
- function gn(e) {
2612
+ function hn(e) {
2610
2613
  let t = e?.Timestamp ?? e?.timestamp ?? e?.created_at ?? e?.CreatedAt;
2611
2614
  if (typeof t == "number" && Number.isFinite(t)) return t > 1e11 ? t : t * 1e3;
2612
2615
  if (typeof t == "string") {
@@ -2615,16 +2618,16 @@ function gn(e) {
2615
2618
  }
2616
2619
  return 0;
2617
2620
  }
2618
- function _n(e) {
2621
+ function gn(e) {
2619
2622
  return String(e?.EventType || e?.event_type || "").trim();
2620
2623
  }
2621
- function vn(e = [], t = {}) {
2624
+ function _n(e = [], t = {}) {
2622
2625
  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;
2623
2626
  for (let e of i) {
2624
- let t = hn(e);
2627
+ let t = mn(e);
2625
2628
  if (!t) continue;
2626
- let i = gn(e);
2627
- 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());
2629
+ let i = hn(e);
2630
+ i && r.set(t, Math.max(r.get(t) || 0, i)), gn(e) === "run_status" && n.set(t, String(e?.Content?.status || e?.content?.status || "").trim());
2628
2631
  }
2629
2632
  return Array.from(n.entries()).filter(([e, t]) => {
2630
2633
  let n = r.get(e) || 0, i = n > 0 && a - n > o;
@@ -2633,8 +2636,8 @@ function vn(e = [], t = {}) {
2633
2636
  }
2634
2637
  //#endregion
2635
2638
  //#region src/hooks/useSessionLifecycle.ts
2636
- var yn = 9e4, bn = 30, xn = 50;
2637
- function Sn(e) {
2639
+ var vn = 9e4, yn = 30, bn = 50;
2640
+ function xn(e) {
2638
2641
  if (e.EventType !== "run_status") return null;
2639
2642
  let t = String(e.Content?.status || "").trim().toLowerCase();
2640
2643
  return t === "completed" ? {
@@ -2648,8 +2651,8 @@ function Sn(e) {
2648
2651
  phase: "后台长任务失败"
2649
2652
  } : null;
2650
2653
  }
2651
- function Cn(e) {
2652
- 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) => {
2654
+ function Sn(e) {
2655
+ let { agentId: t, api: n, isMobile: r, resetCompaction: i, uiCapabilities: a, disconnectRun: o } = e, s = A(e.currentSessionId), l = A(e.agentId), u = A(null), d = A(null), f = A(null), p = O(async (e, t, r) => {
2653
2656
  let i = r.filter((e) => c(e, !1, !1));
2654
2657
  if (!i.length) return;
2655
2658
  let a = await Promise.all(i.map(async (r) => {
@@ -2670,11 +2673,11 @@ function Cn(e) {
2670
2673
  }));
2671
2674
  if (s.current !== t) return;
2672
2675
  let o = new Map(a.filter((e) => !!e).map((e) => [e.messageId, e.feedback]));
2673
- o.size && q.getState().patchMessages((e) => e.map((e) => o.has(e.id) ? {
2676
+ o.size && K.getState().patchMessages((e) => e.map((e) => o.has(e.id) ? {
2674
2677
  ...e,
2675
2678
  feedback: o.get(e.id)
2676
2679
  } : e));
2677
- }, [n]), m = k(async (e) => {
2680
+ }, [n]), m = O(async (e) => {
2678
2681
  u.current?.abort();
2679
2682
  let t = new AbortController();
2680
2683
  u.current = t;
@@ -2682,14 +2685,14 @@ function Cn(e) {
2682
2685
  u.current !== t || t.signal.aborted || t.abort();
2683
2686
  }, o = globalThis.setTimeout(() => {
2684
2687
  a();
2685
- }, yn);
2688
+ }, vn);
2686
2689
  try {
2687
2690
  let a = (await n.subscribeRunEvents({
2688
2691
  sessionId: e.sessionId,
2689
2692
  invocationId: e.invocationId,
2690
2693
  afterSeqId: e.afterSeqId
2691
2694
  }, { signal: t.signal })).getReader(), o = new TextDecoder(), s = "", c = Array.isArray(e.initialEvents) ? e.initialEvents : [];
2692
- for (I.getState().setCurrentRunId(e.invocationId), I.getState().updateActivity({
2695
+ for (F.getState().setCurrentRunId(e.invocationId), F.getState().updateActivity({
2693
2696
  sessionId: e.sessionId,
2694
2697
  status: "running",
2695
2698
  phase: "后台长任务运行中",
@@ -2713,8 +2716,8 @@ function Cn(e) {
2713
2716
  try {
2714
2717
  let t = JSON.parse(a);
2715
2718
  c = rn(c, [t]), i ||= on(t), r ||= i, t.EventType === "run_checkpoint" && Z.getState().upsertSessionCheckpoint(e.sessionId, t);
2716
- let n = Sn(t);
2717
- n && I.getState().updateActivity({
2719
+ let n = xn(t);
2720
+ n && F.getState().updateActivity({
2718
2721
  sessionId: e.sessionId,
2719
2722
  status: n.status,
2720
2723
  phase: n.phase,
@@ -2722,7 +2725,7 @@ function Cn(e) {
2722
2725
  countEvent: !1
2723
2726
  });
2724
2727
  let o = nn(c);
2725
- q.getState().setMessages(o);
2728
+ K.getState().setMessages(o);
2726
2729
  } catch (e) {
2727
2730
  console.warn("Failed to parse run event data", a, e);
2728
2731
  }
@@ -2731,12 +2734,12 @@ function Cn(e) {
2731
2734
  } catch (e) {
2732
2735
  e instanceof DOMException && e.name === "AbortError" || console.error("Failed to subscribe run events:", e);
2733
2736
  } finally {
2734
- 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);
2737
+ globalThis.clearTimeout(o), u.current === t && (u.current = null), F.getState().setCurrentRunId(""), r && s.current === e.sessionId && d.current?.(e.sessionId), f.current?.(l.current, e.sessionId);
2735
2738
  }
2736
- }, [n]), h = k(async (e) => {
2737
- s.current = e, R.getState().setCurrentSessionId(e), i(), u.current?.abort(), r && _.getState().setMobileSidebarOpen(!1);
2739
+ }, [n]), h = O(async (e) => {
2740
+ s.current = e, L.getState().setCurrentSessionId(e), i(), u.current?.abort(), r && _.getState().setMobileSidebarOpen(!1);
2738
2741
  try {
2739
- let t = R.getState().eventCache[e], r;
2742
+ let t = L.getState().eventCache[e], r;
2740
2743
  if (t) r = {
2741
2744
  Events: t.events,
2742
2745
  Total: t.total,
@@ -2747,18 +2750,18 @@ function Cn(e) {
2747
2750
  let t = await n.listSessionEvents(e, {
2748
2751
  offset: 0,
2749
2752
  limit: 1
2750
- }), i = Number(t.Total ?? t.Events?.length ?? 0), a = Math.max(0, i - xn);
2753
+ }), i = Number(t.Total ?? t.Events?.length ?? 0), a = Math.max(0, i - bn);
2751
2754
  r = i <= 1 ? t : await n.listSessionEvents(e, {
2752
2755
  offset: a,
2753
- limit: xn
2754
- }), R.getState().setSessionEventCache(e, {
2756
+ limit: bn
2757
+ }), L.getState().setSessionEventCache(e, {
2755
2758
  events: r.Events || [],
2756
2759
  total: i,
2757
2760
  offset: Number(r.Offset ?? a),
2758
2761
  limit: Number(r.Limit ?? r.Events?.length ?? 0)
2759
2762
  });
2760
2763
  }
2761
- let i = P.getState().capabilities || a;
2764
+ let i = N.getState().capabilities || a;
2762
2765
  i.RunLifecycle.Enabled && i.RunLifecycle.Checkpoints ? (n.listSessionCheckpoints({
2763
2766
  agentId: l.current,
2764
2767
  sessionId: e
@@ -2777,8 +2780,8 @@ function Cn(e) {
2777
2780
  let o = r;
2778
2781
  if (o?.Events) {
2779
2782
  let t = o.Events, n = nn(t);
2780
- q.getState().setMessages(n), p(l.current, e, n);
2781
- let r = vn(t, {
2783
+ K.getState().setMessages(n), p(l.current, e, n);
2784
+ let r = _n(t, {
2782
2785
  now: Date.now(),
2783
2786
  staleAfterMs: 1800 * 1e3
2784
2787
  }), a = an(t);
@@ -2788,7 +2791,7 @@ function Cn(e) {
2788
2791
  afterSeqId: a,
2789
2792
  initialEvents: t
2790
2793
  });
2791
- } else q.getState().setMessages([]), Z.getState().setSessionCheckpoints(e, []), Z.getState().setSessionToolReceipts(e, []);
2794
+ } else K.getState().setMessages([]), Z.getState().setSessionCheckpoints(e, []), Z.getState().setSessionToolReceipts(e, []);
2792
2795
  } catch (e) {
2793
2796
  console.error("Failed to load session events:", e);
2794
2797
  }
@@ -2799,73 +2802,73 @@ function Cn(e) {
2799
2802
  i,
2800
2803
  m,
2801
2804
  a
2802
- ]), g = k(async (e = "default-agent", t = null) => {
2805
+ ]), g = O(async (e = "default-agent", t = null) => {
2803
2806
  try {
2804
- let r = R.getState();
2805
- r.sessionsAgentId && r.sessionsAgentId !== e && r.resetSessionPagination(e), R.getState().setLoadingSessions(!0);
2807
+ let r = L.getState();
2808
+ r.sessionsAgentId && r.sessionsAgentId !== e && r.resetSessionPagination(e), L.getState().setLoadingSessions(!0);
2806
2809
  let i = await n.listSessions(e, {
2807
2810
  page: 1,
2808
- pageSize: bn
2811
+ pageSize: yn
2809
2812
  });
2810
- R.getState().upsertSessions(i.Sessions || [], {
2813
+ L.getState().upsertSessions(i.Sessions || [], {
2811
2814
  agentId: e,
2812
2815
  total: Number(i.Total ?? i.Sessions?.length ?? 0),
2813
2816
  page: Number(i.Page ?? 1),
2814
- pageSize: Number(i.PageSize ?? bn),
2817
+ pageSize: Number(i.PageSize ?? yn),
2815
2818
  replace: !0
2816
2819
  });
2817
- let a = R.getState().sessions, o = s.current, c = Te(a, o || t || Ce(e));
2818
- c && c !== o ? h(c) : !c && o && (s.current = null, R.getState().setCurrentSessionId(null), q.getState().setMessages([]), Z.getState().clearSessionCheckpoints());
2820
+ let a = L.getState().sessions, o = s.current, c = Ee(a, o || t || we(e));
2821
+ c && c !== o ? h(c) : !c && o && (s.current = null, L.getState().setCurrentSessionId(null), K.getState().setMessages([]), Z.getState().clearSessionCheckpoints());
2819
2822
  } catch (e) {
2820
- if (e instanceof U) return;
2823
+ if (e instanceof H) return;
2821
2824
  console.error("Failed to fetch sessions:", e);
2822
2825
  } finally {
2823
- R.getState().setLoadingSessions(!1);
2826
+ L.getState().setLoadingSessions(!1);
2824
2827
  }
2825
- }, [n, h]), v = k(async () => {
2826
- let e = R.getState();
2828
+ }, [n, h]), v = O(async () => {
2829
+ let e = L.getState();
2827
2830
  if (e.isLoadingSessions || !e.hasMoreSessions) return;
2828
- let t = ue({
2831
+ let t = de({
2829
2832
  total: e.sessionsTotal,
2830
- pageSize: e.sessionsPageSize || bn,
2833
+ pageSize: e.sessionsPageSize || yn,
2831
2834
  loadedPages: e.loadedPages
2832
2835
  });
2833
2836
  if (!t) return;
2834
- let r = e.sessionsPageSize || bn, i = e.sessionsAgentId || l.current || "default-agent";
2837
+ let r = e.sessionsPageSize || yn, i = e.sessionsAgentId || l.current || "default-agent";
2835
2838
  try {
2836
- R.getState().setLoadingSessions(!0);
2839
+ L.getState().setLoadingSessions(!0);
2837
2840
  let a = await n.listSessions(i, {
2838
2841
  page: t,
2839
2842
  pageSize: r
2840
2843
  });
2841
- R.getState().upsertSessions(a.Sessions || [], {
2844
+ L.getState().upsertSessions(a.Sessions || [], {
2842
2845
  agentId: i,
2843
2846
  total: Number(a.Total ?? e.sessionsTotal),
2844
2847
  page: Number(a.Page ?? t),
2845
2848
  pageSize: Number(a.PageSize ?? r)
2846
2849
  });
2847
2850
  } catch (e) {
2848
- if (e instanceof U) return;
2851
+ if (e instanceof H) return;
2849
2852
  console.error("Failed to load more sessions:", e);
2850
2853
  } finally {
2851
- R.getState().setLoadingSessions(!1);
2854
+ L.getState().setLoadingSessions(!1);
2852
2855
  }
2853
2856
  }, [n]);
2854
- A(() => {
2857
+ k(() => {
2855
2858
  d.current = h;
2856
- }, [h]), A(() => {
2859
+ }, [h]), k(() => {
2857
2860
  f.current = g;
2858
2861
  }, [g]);
2859
- let y = k(async () => {
2862
+ let y = O(async () => {
2860
2863
  try {
2861
2864
  o?.();
2862
2865
  let e = (await n.createSession(t)).SessionId;
2863
- e && (R.getState().upsertSessions([{
2866
+ e && (L.getState().upsertSessions([{
2864
2867
  SessionId: e,
2865
2868
  UpdatedAt: (/* @__PURE__ */ new Date()).toISOString()
2866
- }]), s.current = e, R.getState().setCurrentSessionId(e), q.getState().setMessages([]), Z.getState().setSessionCheckpoints(e, []), Z.getState().setSessionToolReceipts(e, []), r && (_.getState().setMobileSidebarOpen(!1), _.getState().setMobileActionsOpen(!1)), g(t, e));
2869
+ }]), s.current = e, L.getState().setCurrentSessionId(e), K.getState().setMessages([]), Z.getState().setSessionCheckpoints(e, []), Z.getState().setSessionToolReceipts(e, []), r && (_.getState().setMobileSidebarOpen(!1), _.getState().setMobileActionsOpen(!1)), g(t, e));
2867
2870
  } catch (e) {
2868
- if (e instanceof U) return;
2871
+ if (e instanceof H) return;
2869
2872
  console.error("Failed to create session:", e);
2870
2873
  }
2871
2874
  }, [
@@ -2874,11 +2877,11 @@ function Cn(e) {
2874
2877
  o,
2875
2878
  g,
2876
2879
  r
2877
- ]), b = k(async (e) => {
2880
+ ]), b = O(async (e) => {
2878
2881
  try {
2879
- await n.deleteSession(e), R.getState().removeSession(e), R.getState().clearSessionEventCache(e), s.current === e && (s.current = null, q.getState().setMessages([]), Z.getState().clearSessionCheckpoints(e), R.getState().setCurrentSessionId(null), g(t));
2882
+ await n.deleteSession(e), L.getState().removeSession(e), L.getState().clearSessionEventCache(e), s.current === e && (s.current = null, K.getState().setMessages([]), Z.getState().clearSessionCheckpoints(e), L.getState().setCurrentSessionId(null), g(t));
2880
2883
  } catch (e) {
2881
- if (e instanceof U) return;
2884
+ if (e instanceof H) return;
2882
2885
  console.error("Failed to delete session", e);
2883
2886
  }
2884
2887
  }, [
@@ -2890,29 +2893,29 @@ function Cn(e) {
2890
2893
  fetchSessions: g,
2891
2894
  loadMoreSessions: v,
2892
2895
  loadSession: h,
2893
- loadOlderSessionEvents: k(async (e) => {
2894
- let t = R.getState().eventCache[e];
2896
+ loadOlderSessionEvents: O(async (e) => {
2897
+ let t = L.getState().eventCache[e];
2895
2898
  if (!t || t.offset <= 0 || t.isLoadingOlder) return;
2896
- let r = Math.max(0, t.offset - xn), i = t.offset - r;
2899
+ let r = Math.max(0, t.offset - bn), i = t.offset - r;
2897
2900
  try {
2898
- R.getState().setSessionEventLoadingOlder(e, !0);
2901
+ L.getState().setSessionEventLoadingOlder(e, !0);
2899
2902
  let a = await n.listSessionEvents(e, {
2900
2903
  offset: r,
2901
2904
  limit: i
2902
2905
  }), o = rn(a.Events || [], t.events);
2903
- if (R.getState().setSessionEventCache(e, {
2906
+ if (L.getState().setSessionEventCache(e, {
2904
2907
  events: o,
2905
2908
  total: Number(a.Total ?? t.total),
2906
2909
  offset: Number(a.Offset ?? r),
2907
2910
  limit: o.length
2908
2911
  }), s.current === e) {
2909
2912
  let t = nn(o);
2910
- q.getState().setMessages(t), p(l.current, e, t);
2913
+ K.getState().setMessages(t), p(l.current, e, t);
2911
2914
  }
2912
2915
  } catch (e) {
2913
- e instanceof U || console.error("Failed to load older session events:", e);
2916
+ e instanceof H || console.error("Failed to load older session events:", e);
2914
2917
  } finally {
2915
- R.getState().setSessionEventLoadingOlder(e, !1);
2918
+ L.getState().setSessionEventLoadingOlder(e, !1);
2916
2919
  }
2917
2920
  }, [n, p]),
2918
2921
  createNewSession: y,
@@ -2924,8 +2927,8 @@ function Cn(e) {
2924
2927
  }
2925
2928
  //#endregion
2926
2929
  //#region src/components/chat/ConnectedSidebar.tsx
2927
- function wn({ uiCapabilities: e, createNewSession: n, deleteSession: a, loadSession: s, loadMoreSessions: c }) {
2928
- 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({
2930
+ function Cn({ uiCapabilities: e, createNewSession: n, deleteSession: a, loadSession: s, loadMoreSessions: c }) {
2931
+ let u = L((e) => e.sessions), d = L((e) => e.currentSessionId), f = L((e) => e.pinnedSessionIds), m = L((e) => e.isLoadingSessions), h = L((e) => e.hasMoreSessions), g = _((e) => e.sidebarOpen), v = _((e) => e.mobileSidebarOpen), { isMobile: y } = Ie(), b = t(e), { desktopSidebarVisible: ee } = ve({
2929
2932
  isMobile: y,
2930
2933
  desktopSidebarOpen: g,
2931
2934
  mobileSidebarOpen: v
@@ -2954,7 +2957,7 @@ function wn({ uiCapabilities: e, createNewSession: n, deleteSession: a, loadSess
2954
2957
  t.stopPropagation(), a(e);
2955
2958
  },
2956
2959
  onTogglePinSession: (e, t) => {
2957
- t.stopPropagation(), R.getState().togglePinnedSession(e);
2960
+ t.stopPropagation(), L.getState().togglePinnedSession(e);
2958
2961
  },
2959
2962
  onLoadMoreSessions: c,
2960
2963
  sessionTitle: te,
@@ -2975,7 +2978,7 @@ function wn({ uiCapabilities: e, createNewSession: n, deleteSession: a, loadSess
2975
2978
  t.stopPropagation(), a(e);
2976
2979
  },
2977
2980
  onTogglePinSession: (e, t) => {
2978
- t.stopPropagation(), R.getState().togglePinnedSession(e);
2981
+ t.stopPropagation(), L.getState().togglePinnedSession(e);
2979
2982
  },
2980
2983
  onLoadMoreSessions: c,
2981
2984
  sessionTitle: te,
@@ -2987,17 +2990,17 @@ function wn({ uiCapabilities: e, createNewSession: n, deleteSession: a, loadSess
2987
2990
  }
2988
2991
  //#endregion
2989
2992
  //#region src/components/ui/dialog.tsx
2990
- var Tn = M.Root, En = M.Portal, Dn = D.forwardRef(({ className: e, ...t }, n) => /* @__PURE__ */ T(M.Overlay, {
2993
+ var wn = j.Root, Tn = j.Portal, En = D.forwardRef(({ className: e, ...t }, n) => /* @__PURE__ */ T(j.Overlay, {
2991
2994
  ref: n,
2992
2995
  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),
2993
2996
  ...t
2994
2997
  }));
2995
- Dn.displayName = M.Overlay.displayName;
2996
- var On = D.forwardRef(({ className: e, children: t, ...n }, r) => /* @__PURE__ */ E(En, { children: [/* @__PURE__ */ T(Dn, {}), /* @__PURE__ */ E(M.Content, {
2998
+ En.displayName = j.Overlay.displayName;
2999
+ var Dn = D.forwardRef(({ className: e, children: t, ...n }, r) => /* @__PURE__ */ E(Tn, { children: [/* @__PURE__ */ T(En, {}), /* @__PURE__ */ E(j.Content, {
2997
3000
  ref: r,
2998
3001
  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),
2999
3002
  ...n,
3000
- children: [t, /* @__PURE__ */ E(M.Close, {
3003
+ children: [t, /* @__PURE__ */ E(j.Close, {
3001
3004
  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",
3002
3005
  children: [/* @__PURE__ */ T(w, { className: "h-4 w-4" }), /* @__PURE__ */ T("span", {
3003
3006
  className: "sr-only",
@@ -3005,50 +3008,50 @@ var On = D.forwardRef(({ className: e, children: t, ...n }, r) => /* @__PURE__ *
3005
3008
  })]
3006
3009
  })]
3007
3010
  })] }));
3008
- On.displayName = M.Content.displayName;
3009
- var kn = ({ className: e, ...t }) => /* @__PURE__ */ T("div", {
3011
+ Dn.displayName = j.Content.displayName;
3012
+ var On = ({ className: e, ...t }) => /* @__PURE__ */ T("div", {
3010
3013
  className: p("flex flex-col space-y-1.5 text-center sm:text-left", e),
3011
3014
  ...t
3012
3015
  });
3013
- kn.displayName = "DialogHeader";
3014
- var An = ({ className: e, ...t }) => /* @__PURE__ */ T("div", {
3016
+ On.displayName = "DialogHeader";
3017
+ var kn = ({ className: e, ...t }) => /* @__PURE__ */ T("div", {
3015
3018
  className: p("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2", e),
3016
3019
  ...t
3017
3020
  });
3018
- An.displayName = "DialogFooter";
3019
- var jn = D.forwardRef(({ className: e, ...t }, n) => /* @__PURE__ */ T(M.Title, {
3021
+ kn.displayName = "DialogFooter";
3022
+ var An = D.forwardRef(({ className: e, ...t }, n) => /* @__PURE__ */ T(j.Title, {
3020
3023
  ref: n,
3021
3024
  className: p("text-lg font-semibold leading-none tracking-tight", e),
3022
3025
  ...t
3023
3026
  }));
3024
- jn.displayName = M.Title.displayName;
3025
- var Mn = D.forwardRef(({ className: e, ...t }, n) => /* @__PURE__ */ T(M.Description, {
3027
+ An.displayName = j.Title.displayName;
3028
+ var jn = D.forwardRef(({ className: e, ...t }, n) => /* @__PURE__ */ T(j.Description, {
3026
3029
  ref: n,
3027
3030
  className: p("text-sm text-muted-foreground", e),
3028
3031
  ...t
3029
3032
  }));
3030
- Mn.displayName = M.Description.displayName;
3033
+ jn.displayName = j.Description.displayName;
3031
3034
  //#endregion
3032
3035
  //#region src/components/chat/AttachmentPreview.tsx
3033
- function Nn(e, t) {
3036
+ function Mn(e, t) {
3034
3037
  if (!(!t || e)) return {
3035
3038
  width: `min(${t.width}px, calc(100vw - 5rem))`,
3036
3039
  height: `min(${t.height}px, calc(100vh - 9rem))`
3037
3040
  };
3038
3041
  }
3039
- function Pn(e, t) {
3042
+ function Nn(e, t) {
3040
3043
  if (!(!t || e)) return { width: `min(${t.width + 32}px, calc(100vw - 3rem))` };
3041
3044
  }
3042
- function Fn({ attachment: e, isMobile: t, previewImageSize: n, onClose: r, onImageLoad: i }) {
3043
- return /* @__PURE__ */ T(Tn, {
3045
+ function Pn({ attachment: e, isMobile: t, previewImageSize: n, onClose: r, onImageLoad: i }) {
3046
+ return /* @__PURE__ */ T(wn, {
3044
3047
  open: !!e?.url,
3045
3048
  onOpenChange: (e) => !e && r(),
3046
- children: /* @__PURE__ */ E(On, {
3049
+ children: /* @__PURE__ */ E(Dn, {
3047
3050
  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"),
3048
- style: Pn(t, n),
3051
+ style: Nn(t, n),
3049
3052
  children: [/* @__PURE__ */ T("div", {
3050
3053
  className: "flex items-center gap-3 border-b border-slate-800 px-4 py-3 pr-16",
3051
- children: /* @__PURE__ */ T(jn, {
3054
+ children: /* @__PURE__ */ T(An, {
3052
3055
  className: "truncate text-sm font-medium",
3053
3056
  children: e?.name || "附件预览"
3054
3057
  })
@@ -3058,7 +3061,7 @@ function Fn({ attachment: e, isMobile: t, previewImageSize: n, onClose: r, onIma
3058
3061
  src: e.url,
3059
3062
  alt: e.name,
3060
3063
  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)]"),
3061
- style: Nn(t, n),
3064
+ style: Mn(t, n),
3062
3065
  onLoad: (e) => {
3063
3066
  let t = e.currentTarget;
3064
3067
  i({
@@ -3077,7 +3080,7 @@ function Fn({ attachment: e, isMobile: t, previewImageSize: n, onClose: r, onIma
3077
3080
  }
3078
3081
  //#endregion
3079
3082
  //#region src/utils/context.js
3080
- function In(e) {
3083
+ function Fn(e) {
3081
3084
  if (typeof e == "number" && Number.isFinite(e) && e > 0) return e;
3082
3085
  if (typeof e == "string" && e.trim()) {
3083
3086
  let t = Number(e);
@@ -3085,15 +3088,15 @@ function In(e) {
3085
3088
  }
3086
3089
  return null;
3087
3090
  }
3088
- function Ln(e) {
3091
+ function In(e) {
3089
3092
  return /[\u3400-\u4DBF\u4E00-\u9FFF\uF900-\uFAFF]/u.test(e);
3090
3093
  }
3091
- function $(e) {
3094
+ function Ln(e) {
3092
3095
  let t = String(e || "").trim();
3093
3096
  if (!t) return 0;
3094
3097
  let n = 0, r = 0;
3095
3098
  for (let e of t) {
3096
- if (Ln(e)) {
3099
+ if (In(e)) {
3097
3100
  n += 1;
3098
3101
  continue;
3099
3102
  }
@@ -3103,15 +3106,15 @@ function $(e) {
3103
3106
  }
3104
3107
  function Rn(e) {
3105
3108
  if (!e) return 0;
3106
- if (e.role === "system") return e.eventType === "context_checkpoint" ? $(e.summary || "") : 0;
3107
- let t = $(e.content || "");
3108
- return e.tools && (t += Object.values(e.tools).reduce((e, t) => e + $(t?.name || "") + $(t?.args || "") + $(t?.output || ""), 0)), t;
3109
+ if (e.role === "system") return e.eventType === "context_checkpoint" ? Ln(e.summary || "") : 0;
3110
+ let t = Ln(e.content || "");
3111
+ return e.tools && (t += Object.values(e.tools).reduce((e, t) => e + Ln(t?.name || "") + Ln(t?.args || "") + Ln(t?.output || ""), 0)), t;
3109
3112
  }
3110
3113
  function zn(e) {
3111
- return e ? In(e.context_window_tokens) ?? In(e?.limits?.context_window_tokens) : null;
3114
+ return e ? Fn(e.context_window_tokens) ?? Fn(e?.limits?.context_window_tokens) : null;
3112
3115
  }
3113
3116
  function Bn(e) {
3114
- return e ? In(e.auto_compact_threshold_percentage) ?? 84 : 84;
3117
+ return e ? Fn(e.auto_compact_threshold_percentage) ?? 84 : 84;
3115
3118
  }
3116
3119
  function Vn({ messages: e, draftInput: t, selectedModel: n }) {
3117
3120
  let r = zn(n);
@@ -3127,7 +3130,7 @@ function Vn({ messages: e, draftInput: t, selectedModel: n }) {
3127
3130
  percent: Math.min(100, Math.max(0, Math.round(e / r * 100)))
3128
3131
  };
3129
3132
  }
3130
- let a = (e || []).reduce((e, t) => e + Rn(t), 0) + $(t || "");
3133
+ let a = (e || []).reduce((e, t) => e + Rn(t), 0) + Ln(t || "");
3131
3134
  if (a <= 0) return null;
3132
3135
  let o = Math.min(100, Math.max(0, Math.round(a / r * 100)));
3133
3136
  return o >= Bn(n) ? {
@@ -3147,18 +3150,18 @@ function Vn({ messages: e, draftInput: t, selectedModel: n }) {
3147
3150
  //#endregion
3148
3151
  //#region src/components/chat/ConnectedMessageList.tsx
3149
3152
  function Hn({ agentName: e, isMobile: t, onDeleteFeedback: n, onSubmitFeedback: r, onRespondToApproval: i, onStopGeneration: a, onCancelRemote: o, checkpointResumeEnabled: s = !1, onResumeCheckpoint: c, onLoadOlderSessionEvents: l }) {
3150
- 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 = Z((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(() => Vn({
3153
+ let u = K((e) => e.messages), d = L((e) => e.currentSessionId), f = F((e) => !!(e.getSessionActivity(d) && e.isSessionStreaming(d))), p = F((e) => e.getSessionActivity(d)), h = Z((e) => e.getSessionCheckpoints(d)), g = L((e) => d ? e.eventCache[d] : null), v = _((e) => e.input), y = P((e) => e.availableModels), b = P((e) => e.selectedModel), ee = _((e) => e.previewAttachment), te = _((e) => e.previewImageSize), x = A(null), S = A(!0), C = A(!1), ne = A(0), w = A(f), D = A(!1), ie = oe(() => y.find((e) => e.id === b) || null, [y, b]), ae = oe(() => Vn({
3151
3154
  messages: u,
3152
3155
  draftInput: v,
3153
- selectedModel: O
3156
+ selectedModel: ie
3154
3157
  }), [
3155
3158
  v,
3156
3159
  u,
3157
- O
3160
+ ie
3158
3161
  ]);
3159
- return A(() => {
3162
+ return k(() => {
3160
3163
  w.current = f;
3161
- }, [f]), A(() => {
3164
+ }, [f]), k(() => {
3162
3165
  let e = x.current;
3163
3166
  if (!e) return;
3164
3167
  let t = () => {
@@ -3192,7 +3195,7 @@ function Hn({ agentName: e, isMobile: t, onDeleteFeedback: n, onSubmitFeedback:
3192
3195
  g,
3193
3196
  d,
3194
3197
  l
3195
- ]), A(() => {
3198
+ ]), k(() => {
3196
3199
  let e = x.current;
3197
3200
  !e || !S.current || (e.scrollTop = e.scrollHeight, ne.current = e.scrollTop);
3198
3201
  }, [u, f]), /* @__PURE__ */ E(re, { children: [/* @__PURE__ */ T(m, {
@@ -3200,7 +3203,7 @@ function Hn({ agentName: e, isMobile: t, onDeleteFeedback: n, onSubmitFeedback:
3200
3203
  isMobile: t,
3201
3204
  isStreaming: f,
3202
3205
  activity: p,
3203
- contextIndicator: ie,
3206
+ contextIndicator: ae,
3204
3207
  messages: u,
3205
3208
  onDeleteFeedback: n,
3206
3209
  onOpenAttachmentPreview: (e) => {
@@ -3213,7 +3216,7 @@ function Hn({ agentName: e, isMobile: t, onDeleteFeedback: n, onSubmitFeedback:
3213
3216
  checkpoints: s ? h : [],
3214
3217
  onResumeCheckpoint: c,
3215
3218
  scrollRef: x
3216
- }), /* @__PURE__ */ T(Fn, {
3219
+ }), /* @__PURE__ */ T(Pn, {
3217
3220
  attachment: ee,
3218
3221
  isMobile: t,
3219
3222
  previewImageSize: te,
@@ -3245,7 +3248,7 @@ function Gn(e) {
3245
3248
  //#endregion
3246
3249
  //#region src/components/chat/ConnectedComposer.tsx
3247
3250
  function Kn({ composerMaxHeight: e, submitDraft: t, stopGeneration: n, cancelRemote: r, isMobile: i }) {
3248
- 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(() => Vn({
3251
+ let o = _((e) => e.input), s = _((e) => e.attachments), c = L((e) => e.currentSessionId), l = F((e) => !!(e.getSessionActivity(c) && e.isSessionStreaming(c))), u = _((e) => e.queuedDrafts), d = K((e) => e.messages), f = P((e) => e.availableModels), p = P((e) => e.selectedModel), m = A(null), h = A(null), g = oe(() => f.find((e) => e.id === p) || null, [f, p]), v = oe(() => Vn({
3249
3252
  messages: d,
3250
3253
  draftInput: o,
3251
3254
  selectedModel: g
@@ -3253,10 +3256,10 @@ function Kn({ composerMaxHeight: e, submitDraft: t, stopGeneration: n, cancelRem
3253
3256
  o,
3254
3257
  d,
3255
3258
  g
3256
- ]), y = k((e, n) => {
3259
+ ]), y = O((e, n) => {
3257
3260
  !e && n.length === 0 || (_.getState().setInput(""), _.getState().setAttachments([]), t(e, n));
3258
3261
  }, [t]);
3259
- A(() => {
3262
+ k(() => {
3260
3263
  h.current && (h.current.style.height = "auto", h.current.style.height = `${Math.min(h.current.scrollHeight, e)}px`);
3261
3264
  }, [o, e]);
3262
3265
  let b = (t) => {
@@ -3289,7 +3292,7 @@ function Kn({ composerMaxHeight: e, submitDraft: t, stopGeneration: n, cancelRem
3289
3292
  //#endregion
3290
3293
  //#region src/api/session.ts
3291
3294
  async function qn(e, t) {
3292
- let n = await K("ListSessions", {
3295
+ let n = await G("ListSessions", {
3293
3296
  AgentId: e,
3294
3297
  Page: t?.page,
3295
3298
  PageSize: t?.pageSize
@@ -3302,15 +3305,15 @@ async function qn(e, t) {
3302
3305
  };
3303
3306
  }
3304
3307
  async function Jn(e, t) {
3305
- return (await K("CreateSession", { AgentId: e }, t)).Session;
3308
+ return (await G("CreateSession", { AgentId: e }, t)).Session;
3306
3309
  }
3307
3310
  async function Yn(e, t) {
3308
- await K("DeleteSession", { SessionId: e }, t);
3311
+ await G("DeleteSession", { SessionId: e }, t);
3309
3312
  }
3310
3313
  //#endregion
3311
3314
  //#region src/api/events.ts
3312
3315
  async function Xn(e, t) {
3313
- let n = await K("ListSessionEvents", {
3316
+ let n = await G("ListSessionEvents", {
3314
3317
  SessionId: e,
3315
3318
  Offset: t?.offset,
3316
3319
  Limit: t?.limit
@@ -3325,7 +3328,7 @@ async function Xn(e, t) {
3325
3328
  //#endregion
3326
3329
  //#region src/api/run.ts
3327
3330
  async function Zn(e, t) {
3328
- return ze("RunAgent", e, t);
3331
+ return Be("RunAgent", e, t);
3329
3332
  }
3330
3333
  //#endregion
3331
3334
  //#region src/api/checkpoints.ts
@@ -3334,10 +3337,10 @@ async function Qn(e, t) {
3334
3337
  AgentId: e.agentId,
3335
3338
  SessionId: e.sessionId
3336
3339
  };
3337
- return e.runId && (n.RunId = e.runId), K("ListSessionCheckpoints", n, t);
3340
+ return e.runId && (n.RunId = e.runId), G("ListSessionCheckpoints", n, t);
3338
3341
  }
3339
3342
  async function $n(e, t) {
3340
- return K("PreviewCheckpointResume", {
3343
+ return G("PreviewCheckpointResume", {
3341
3344
  AgentId: e.agentId,
3342
3345
  SessionId: e.sessionId,
3343
3346
  RunId: e.runId,
@@ -3349,7 +3352,7 @@ async function er(e, t) {
3349
3352
  AgentId: e.agentId,
3350
3353
  SessionId: e.sessionId
3351
3354
  };
3352
- return e.runId && (n.RunId = e.runId), e.checkpointId && (n.CheckpointId = e.checkpointId), K("ListToolReceipts", n, t);
3355
+ return e.runId && (n.RunId = e.runId), e.checkpointId && (n.CheckpointId = e.checkpointId), G("ListToolReceipts", n, t);
3353
3356
  }
3354
3357
  async function tr(e, t) {
3355
3358
  let n = {
@@ -3359,28 +3362,28 @@ async function tr(e, t) {
3359
3362
  CheckpointId: e.checkpointId,
3360
3363
  Stream: !0
3361
3364
  };
3362
- return e.resumeAttemptId && (n.ResumeAttemptId = e.resumeAttemptId), e.invocationId && (n.InvocationId = e.invocationId), ze("ResumeRun", n, t);
3365
+ return e.resumeAttemptId && (n.ResumeAttemptId = e.resumeAttemptId), e.invocationId && (n.InvocationId = e.invocationId), Be("ResumeRun", n, t);
3363
3366
  }
3364
3367
  //#endregion
3365
3368
  //#region src/api/workspace.ts
3366
3369
  async function nr(e, t, n) {
3367
- return K("ListWorkspaceFiles", {
3370
+ return G("ListWorkspaceFiles", {
3368
3371
  AgentId: e,
3369
3372
  Path: t,
3370
3373
  Recursive: n
3371
3374
  });
3372
3375
  }
3373
3376
  async function rr(e) {
3374
- return Le("AddWorkspaceFile", e);
3377
+ return Re("AddWorkspaceFile", e);
3375
3378
  }
3376
3379
  async function ir(e, t) {
3377
- return K("DeleteWorkspaceFile", {
3380
+ return G("DeleteWorkspaceFile", {
3378
3381
  AgentId: e,
3379
3382
  Path: t
3380
3383
  });
3381
3384
  }
3382
3385
  async function ar(e, t, n) {
3383
- return Re("GetWorkspaceFileContent", {
3386
+ return ze("GetWorkspaceFileContent", {
3384
3387
  AgentId: e,
3385
3388
  FilePath: t
3386
3389
  }, {
@@ -3391,7 +3394,7 @@ async function ar(e, t, n) {
3391
3394
  //#endregion
3392
3395
  //#region src/api/upload.ts
3393
3396
  async function or(e, t) {
3394
- return Le("UploadFile", e, t);
3397
+ return Re("UploadFile", e, t);
3395
3398
  }
3396
3399
  //#endregion
3397
3400
  //#region src/core/api/facade.ts
@@ -3424,26 +3427,26 @@ var sr = class {
3424
3427
  return tr(e, t);
3425
3428
  }
3426
3429
  async subscribeRunEvents(e, t) {
3427
- return Be("SubscribeRunEvents", {
3430
+ return Ve("SubscribeRunEvents", {
3428
3431
  SessionId: e.sessionId,
3429
3432
  InvocationId: e.invocationId,
3430
3433
  AfterSeqId: String(e.afterSeqId)
3431
3434
  }, t);
3432
3435
  }
3433
3436
  async cancelRun(e, t, n) {
3434
- return K("CancelRun", {
3437
+ return G("CancelRun", {
3435
3438
  AgentId: e,
3436
3439
  InvocationId: t
3437
3440
  }, n);
3438
3441
  }
3439
3442
  async getResponseFeedback(e, t) {
3440
- return K("GetResponseFeedback", e, t);
3443
+ return G("GetResponseFeedback", e, t);
3441
3444
  }
3442
3445
  async upsertResponseFeedback(e, t) {
3443
- return K("UpsertResponseFeedback", e, t);
3446
+ return G("UpsertResponseFeedback", e, t);
3444
3447
  }
3445
3448
  async deleteResponseFeedback(e, t) {
3446
- await K("DeleteResponseFeedback", e, t);
3449
+ await G("DeleteResponseFeedback", e, t);
3447
3450
  }
3448
3451
  async listWorkspaceFiles(e, t, n) {
3449
3452
  return nr(e, t, n);
@@ -3458,69 +3461,70 @@ var sr = class {
3458
3461
  return ar(e, t, n);
3459
3462
  }
3460
3463
  async listAgentModels(e) {
3461
- return He(e);
3464
+ return Ue(e);
3462
3465
  }
3463
3466
  async getAgentUiBootstrap() {
3464
- return Ve();
3467
+ return He();
3465
3468
  }
3466
3469
  async uploadFile(e, t) {
3467
3470
  return or(e, t);
3468
3471
  }
3469
- }, cr = new sr(), lr = O.lazy(() => import("./ArtifactsPanel-Bwj57S63.js").then((e) => ({ default: e.ArtifactsPanel }))), ur = O.lazy(() => import("./NativeTerminalPanel-DASBHcE0.js").then((e) => e.n).then((e) => ({ default: e.NativeTerminalPanel })));
3472
+ }, cr = new sr(), lr = ie.lazy(() => import("./ArtifactsPanel-yLxSIEFw.js").then((e) => ({ default: e.ArtifactsPanel }))), ur = ie.lazy(() => import("./NativeTerminalPanel-Bzdmm_Au.js").then((e) => e.n).then((e) => ({ default: e.NativeTerminalPanel })));
3470
3473
  function dr({ apiAdapter: e, initialSurface: r = "chat", routeShell: i } = {}) {
3471
- let a = e || cr, 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({
3472
- isMobile: L,
3473
- viewportHeight: le
3474
- }), { fetchSessions: de, loadMoreSessions: fe, loadSession: pe, loadOlderSessionEvents: me, createNewSession: he, deleteSession: ge, currentSessionIdRef: z, agentIdRef: B, runSubscriptionAbortRef: _e } = Cn({
3474
+ let a = e || cr, o = N((e) => e.agentId), s = L((e) => e.currentSessionId), c = F((e) => e.isStreaming), l = _((e) => e.sidebarOpen), u = _((e) => e.mobileSidebarOpen), d = _((e) => e.mobileActionsOpen), f = N((e) => e.agentName), p = P((e) => e.selectedModel), m = P((e) => e.availableModels), h = P((e) => e.modelSource), v = P((e) => e.modelCatalogLoaded), te = P((e) => e.thinkingMode), x = N((e) => e.agentFramework), S = N((e) => e.workspaceFiles), C = N((e) => e.accessMode), w = _((e) => e.workspacePanelOpen), D = _((e) => e.workspacePanelWidth), ie = _((e) => e.workspacePanelFullscreen), oe = N((e) => e.apiFormats), j = N((e) => e.capabilities), M = ne((e) => e.visible && !!e.content), ce = A([]), le = A(null), { isMobile: I, viewportHeight: ue } = Ie(), de = ye({
3475
+ isMobile: I,
3476
+ viewportHeight: ue
3477
+ }), { fetchSessions: fe, loadMoreSessions: pe, loadSession: me, loadOlderSessionEvents: he, createNewSession: ge, deleteSession: _e, currentSessionIdRef: R, agentIdRef: z, runSubscriptionAbortRef: ve } = Sn({
3475
3478
  agentId: o,
3476
3479
  currentSessionId: s,
3477
- isMobile: L,
3478
- uiCapabilities: M,
3480
+ isMobile: I,
3481
+ uiCapabilities: j,
3479
3482
  api: a,
3480
3483
  resetCompaction: () => {},
3481
- disconnectRun: () => ce.current?.()
3482
- }), ye = k((e) => {
3484
+ disconnectRun: () => le.current?.()
3485
+ }), be = O((e) => {
3483
3486
  if (!e) return;
3484
3487
  let t = () => {
3485
- de(B.current, e), z.current === e && !I.getState().isStreaming && pe(e);
3488
+ fe(z.current, e), R.current === e && !F.getState().isStreaming && me(e);
3486
3489
  };
3487
3490
  queueMicrotask(t), window.setTimeout(t, 1800), window.setTimeout(t, 5e3);
3488
3491
  }, [
3489
- B,
3490
3492
  z,
3491
- de,
3492
- pe
3493
- ]), { submitDraft: be, stopGeneration: xe, disconnectRun: Se, resumeCheckpoint: Ce } = pn({
3493
+ R,
3494
+ fe,
3495
+ me
3496
+ ]), xe = m.find((e) => e.id === p) || null, { submitDraft: Se, stopGeneration: Ce, disconnectRun: we, resumeCheckpoint: Ee } = fn({
3494
3497
  agentId: o,
3495
3498
  currentSessionId: s,
3496
3499
  agentFramework: x,
3497
- apiFormats: ae,
3500
+ apiFormats: oe,
3498
3501
  selectedModel: p,
3502
+ selectedModelMetadata: xe,
3499
3503
  thinkingMode: te,
3500
- uiCapabilities: M,
3501
- isMobile: L,
3504
+ uiCapabilities: j,
3505
+ isMobile: I,
3502
3506
  api: a,
3503
- currentSessionIdRef: z,
3504
- agentIdRef: B,
3505
- queuedDraftRef: se,
3506
- onRunSettled: ye
3507
+ currentSessionIdRef: R,
3508
+ agentIdRef: z,
3509
+ queuedDraftRef: ce,
3510
+ onRunSettled: be
3507
3511
  });
3508
- A(() => {
3509
- ce.current = Se;
3510
- }, [Se]);
3511
- let Te = k(() => {
3512
- let e = z.current;
3513
- _e.current?.abort(), I.getState().stopActivity(), I.getState().stopSessionActivity(e), xe();
3512
+ k(() => {
3513
+ le.current = we;
3514
+ }, [we]);
3515
+ let De = O(() => {
3516
+ let e = R.current;
3517
+ ve.current?.abort(), F.getState().stopActivity(), F.getState().stopSessionActivity(e), Ce();
3514
3518
  }, [
3515
- z,
3516
- _e,
3517
- xe
3518
- ]), Ee = k(async () => {
3519
- let e = z.current, t = I.getState(), n = t.currentRunId || t.getSessionActivity(e)?.runId || "";
3519
+ R,
3520
+ ve,
3521
+ Ce
3522
+ ]), Oe = O(async () => {
3523
+ let e = R.current, t = F.getState(), n = t.currentRunId || t.getSessionActivity(e)?.runId || "";
3520
3524
  if (n) try {
3521
- await a.cancelRun(o, n), I.getState().stopSessionActivity(e, "取消请求已发送,后台运行会停在最近 checkpoint。");
3525
+ await a.cancelRun(o, n), F.getState().stopSessionActivity(e, "取消请求已发送,后台运行会停在最近 checkpoint。");
3522
3526
  } catch (t) {
3523
- console.warn("[App] cancelRun failed:", t), I.getState().updateActivity({
3527
+ console.warn("[App] cancelRun failed:", t), F.getState().updateActivity({
3524
3528
  sessionId: e,
3525
3529
  status: "failed",
3526
3530
  phase: "取消请求失败",
@@ -3528,54 +3532,54 @@ function dr({ apiAdapter: e, initialSurface: r = "chat", routeShell: i } = {}) {
3528
3532
  countEvent: !1
3529
3533
  });
3530
3534
  }
3531
- ye(e);
3535
+ be(e);
3532
3536
  }, [
3533
3537
  a,
3534
3538
  o,
3535
- z,
3536
- ye
3537
- ]), { submitResponseFeedback: De, deleteResponseFeedback: Oe, respondToApproval: ke } = mn({
3539
+ R,
3540
+ be
3541
+ ]), { submitResponseFeedback: ke, deleteResponseFeedback: Ae, respondToApproval: Me } = pn({
3538
3542
  agentId: o,
3539
3543
  currentSessionId: s,
3540
3544
  isStreaming: c,
3541
3545
  api: a,
3542
- submitDraft: be
3546
+ submitDraft: Se
3543
3547
  });
3544
- Ge({ fetchSessions: de }), A(() => {
3545
- B.current = o, z.current = s, we(o, s);
3548
+ Ke({ fetchSessions: fe }), k(() => {
3549
+ z.current = o, R.current = s, Te(o, s);
3546
3550
  }, [
3547
3551
  o,
3548
3552
  s,
3549
- B,
3550
- z
3551
- ]), A(() => {
3552
- L ? _.getState().setWorkspacePanelFullscreen(!1) : (_.getState().setMobileSidebarOpen(!1), _.getState().setMobileActionsOpen(!1));
3553
- }, [L]), A(() => {
3553
+ z,
3554
+ R
3555
+ ]), k(() => {
3556
+ I ? _.getState().setWorkspacePanelFullscreen(!1) : (_.getState().setMobileSidebarOpen(!1), _.getState().setMobileActionsOpen(!1));
3557
+ }, [I]), k(() => {
3554
3558
  w || _.getState().setWorkspacePanelFullscreen(!1);
3555
- }, [w]), A(() => () => {
3556
- _e.current?.abort();
3557
- }, [_e]);
3558
- let je = t(M), Ne = !!M.Thinking, V = g({
3559
+ }, [w]), k(() => () => {
3560
+ ve.current?.abort();
3561
+ }, [ve]);
3562
+ let Pe = t(j), Fe = !!j.Thinking, B = g({
3559
3563
  workspaceFiles: S,
3560
3564
  accessMode: C
3561
- }), Pe = y({ isMobile: L }), H = Ae({
3562
- capability: M.NativeDashboard,
3565
+ }), V = y({ isMobile: I }), H = je({
3566
+ capability: j.NativeDashboard,
3563
3567
  agentFramework: x,
3564
3568
  accessMode: C,
3565
3569
  origin: window.location.origin
3566
- }), U = !je, W = x === "openclaw" ? "OpenClaw" : x === "hermes" ? "Hermes" : "原生运行时", Ie = (m.find((e) => e.id === p) || null)?.display_name || p || "", G = !L && l && je, K = j(!1), [Le, Re] = oe(r === "tui"), ze = Le && !!M.NativeTerminal?.Enabled;
3567
- A(() => {
3568
- K.current || r !== "workspace" || !V || (K.current = !0, _.getState().setWorkspacePanelOpen(!0), _.getState().setWorkspacePanelFullscreen(!0));
3569
- }, [r, V]);
3570
- let Be = /* @__PURE__ */ E("div", {
3570
+ }), U = !Pe, Le = x === "openclaw" ? "OpenClaw" : x === "hermes" ? "Hermes" : "原生运行时", W = xe?.display_name || p || "", G = !I && l && Pe, Re = A(!1), [ze, Be] = se(r === "tui"), Ve = ze && !!j.NativeTerminal?.Enabled;
3571
+ k(() => {
3572
+ Re.current || r !== "workspace" || !B || (Re.current = !0, _.getState().setWorkspacePanelOpen(!0), _.getState().setWorkspacePanelFullscreen(!0));
3573
+ }, [r, B]);
3574
+ let He = /* @__PURE__ */ E("div", {
3571
3575
  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",
3572
3576
  children: [
3573
- /* @__PURE__ */ T(wn, {
3574
- uiCapabilities: M,
3575
- createNewSession: he,
3576
- deleteSession: ge,
3577
- loadSession: pe,
3578
- loadMoreSessions: fe
3577
+ /* @__PURE__ */ T(Cn, {
3578
+ uiCapabilities: j,
3579
+ createNewSession: ge,
3580
+ deleteSession: _e,
3581
+ loadSession: me,
3582
+ loadMoreSessions: pe
3579
3583
  }),
3580
3584
  /* @__PURE__ */ E("main", {
3581
3585
  className: "relative flex min-w-0 flex-1 flex-col bg-white dark:bg-slate-900",
@@ -3583,52 +3587,52 @@ function dr({ apiAdapter: e, initialSurface: r = "chat", routeShell: i } = {}) {
3583
3587
  agentName: f,
3584
3588
  currentSessionId: s,
3585
3589
  nativeLauncherMode: U,
3586
- isMobile: L,
3590
+ isMobile: I,
3587
3591
  sidebarOpen: l,
3588
3592
  mobileSidebarOpen: u,
3589
3593
  onToggleSidebar: () => {
3590
- L ? _.getState().toggleMobileSidebar() : _.getState().toggleSidebar();
3594
+ I ? _.getState().toggleMobileSidebar() : _.getState().toggleSidebar();
3591
3595
  },
3592
3596
  availableModels: m,
3593
3597
  selectedModel: p,
3594
3598
  onSelectModel: (e) => {
3595
- F.getState().setSelectedModel(e), L && _.getState().setMobileActionsOpen(!1);
3599
+ P.getState().setSelectedModel(e), I && _.getState().setMobileActionsOpen(!1);
3596
3600
  },
3597
- selectedModelLabel: Ie,
3601
+ selectedModelLabel: W,
3598
3602
  modelCatalogLoaded: v,
3599
3603
  modelSource: h,
3600
- thinkingEnabled: Ne,
3604
+ thinkingEnabled: Fe,
3601
3605
  thinkingMode: te,
3602
- onSelectThinkingMode: (e) => F.getState().setThinkingMode(Me(e)),
3606
+ onSelectThinkingMode: (e) => P.getState().setThinkingMode(Ne(e)),
3603
3607
  mobileActionsOpen: d,
3604
3608
  onMobileActionsOpenChange: (e) => _.getState().setMobileActionsOpen(e),
3605
- workspaceEnabled: V,
3609
+ workspaceEnabled: B,
3606
3610
  onOpenWorkspace: () => _.getState().setWorkspacePanelOpen(!0),
3607
3611
  nativeManagementLink: H,
3608
- nativeTerminal: M.NativeTerminal
3612
+ nativeTerminal: j.NativeTerminal
3609
3613
  }), U ? /* @__PURE__ */ T(b, {
3610
- productLabel: W,
3614
+ productLabel: Le,
3611
3615
  nativeManagementLink: H,
3612
- nativeTerminal: M.NativeTerminal,
3613
- workspaceEnabled: V,
3616
+ nativeTerminal: j.NativeTerminal,
3617
+ workspaceEnabled: B,
3614
3618
  onOpenWorkspace: () => _.getState().setWorkspacePanelOpen(!0)
3615
3619
  }) : /* @__PURE__ */ E(re, { children: [/* @__PURE__ */ T(Hn, {
3616
3620
  agentName: f,
3617
- isMobile: L,
3618
- onDeleteFeedback: Oe,
3619
- onSubmitFeedback: De,
3620
- onRespondToApproval: ke,
3621
- onStopGeneration: Te,
3622
- onCancelRemote: M.StopRun ? Ee : void 0,
3623
- checkpointResumeEnabled: M.RunLifecycle.Enabled && M.RunLifecycle.Checkpoints && M.RunLifecycle.CheckpointResume,
3624
- onResumeCheckpoint: Ce,
3625
- onLoadOlderSessionEvents: me
3621
+ isMobile: I,
3622
+ onDeleteFeedback: Ae,
3623
+ onSubmitFeedback: ke,
3624
+ onRespondToApproval: Me,
3625
+ onStopGeneration: De,
3626
+ onCancelRemote: j.StopRun ? Oe : void 0,
3627
+ checkpointResumeEnabled: j.RunLifecycle.Enabled && j.RunLifecycle.Checkpoints && j.RunLifecycle.CheckpointResume,
3628
+ onResumeCheckpoint: Ee,
3629
+ onLoadOlderSessionEvents: he
3626
3630
  }), /* @__PURE__ */ T(Kn, {
3627
- composerMaxHeight: ue,
3628
- submitDraft: be,
3629
- stopGeneration: Te,
3630
- cancelRemote: M.StopRun ? Ee : void 0,
3631
- isMobile: L
3631
+ composerMaxHeight: de,
3632
+ submitDraft: Se,
3633
+ stopGeneration: De,
3634
+ cancelRemote: j.StopRun ? Oe : void 0,
3635
+ isMobile: I
3632
3636
  })] })]
3633
3637
  }),
3634
3638
  /* @__PURE__ */ T(ee, {
@@ -3636,22 +3640,22 @@ function dr({ apiAdapter: e, initialSurface: r = "chat", routeShell: i } = {}) {
3636
3640
  capability: S,
3637
3641
  workspacePanelOpen: w,
3638
3642
  workspacePanelWidth: D,
3639
- workspacePanelFullscreen: O,
3640
- isMobile: L,
3641
- workspaceEnabled: V,
3643
+ workspacePanelFullscreen: ie,
3644
+ isMobile: I,
3645
+ workspaceEnabled: B,
3642
3646
  workspaceFiles: S,
3643
- workspacePanelPresentation: Pe,
3647
+ workspacePanelPresentation: V,
3644
3648
  closeWorkspacePanel: () => {
3645
3649
  _.getState().setWorkspacePanelFullscreen(!1), _.getState().setWorkspacePanelOpen(!1);
3646
3650
  },
3647
3651
  handleWorkspacePanelResizeStart: (e) => {
3648
- if (O || L) return;
3652
+ if (ie || I) return;
3649
3653
  e.preventDefault();
3650
- let t = e.clientX, n = D, r = je && G ? 280 : 0, i = document.body.style.cursor, a = document.body.style.userSelect;
3654
+ let t = e.clientX, n = D, r = Pe && G ? 280 : 0, i = document.body.style.cursor, a = document.body.style.userSelect;
3651
3655
  document.body.style.cursor = "col-resize", document.body.style.userSelect = "none";
3652
3656
  let o = (e) => {
3653
3657
  let i = n + t - e.clientX;
3654
- _.getState().setWorkspacePanelWidth(ht(i, window.innerWidth, r));
3658
+ _.getState().setWorkspacePanelWidth(gt(i, window.innerWidth, r));
3655
3659
  }, s = () => {
3656
3660
  document.body.style.cursor = i, document.body.style.userSelect = a, window.removeEventListener("pointermove", o), window.removeEventListener("pointerup", s), window.removeEventListener("pointercancel", s);
3657
3661
  };
@@ -3659,27 +3663,28 @@ function dr({ apiAdapter: e, initialSurface: r = "chat", routeShell: i } = {}) {
3659
3663
  },
3660
3664
  api: a
3661
3665
  }),
3662
- N && /* @__PURE__ */ T(ie, {
3666
+ M && /* @__PURE__ */ T(ae, {
3663
3667
  fallback: null,
3664
3668
  children: /* @__PURE__ */ T(lr, {})
3665
3669
  }),
3666
- ze ? /* @__PURE__ */ T(ie, {
3670
+ Ve ? /* @__PURE__ */ T(ae, {
3667
3671
  fallback: null,
3668
3672
  children: /* @__PURE__ */ T(ur, {
3669
- capability: M.NativeTerminal,
3673
+ capability: j.NativeTerminal,
3670
3674
  open: !0,
3671
- onClose: () => Re(!1)
3675
+ sessionId: s,
3676
+ onClose: () => Be(!1)
3672
3677
  })
3673
3678
  }) : null
3674
3679
  ]
3675
3680
  });
3676
- return i ? /* @__PURE__ */ T(i, { children: Be }) : Be;
3681
+ return i ? /* @__PURE__ */ T(i, { children: He }) : He;
3677
3682
  }
3678
3683
  //#endregion
3679
3684
  //#region src/core/transport/sse-transport.ts
3680
3685
  function fr(e, t) {
3681
3686
  if (e.eventName === "__ping__") {
3682
- I.getState().updateActivity({ countEvent: !1 });
3687
+ F.getState().updateActivity({ countEvent: !1 });
3683
3688
  return;
3684
3689
  }
3685
3690
  t.onEvent(e);
@@ -3687,18 +3692,18 @@ function fr(e, t) {
3687
3692
  var pr = class {
3688
3693
  protocol = "sse-post";
3689
3694
  async connect(e, t) {
3690
- let n = (await ze(e.action, e.body || {}, { signal: e.signal })).getReader(), r = new TextDecoder(), i = "", a = !1;
3695
+ let n = (await Be(e.action, e.body || {}, { signal: e.signal })).getReader(), r = new TextDecoder(), i = "", a = !1;
3691
3696
  return (async () => {
3692
3697
  try {
3693
3698
  for (; !a;) {
3694
3699
  let { value: e, done: a } = await n.read();
3695
3700
  if (a) break;
3696
3701
  i += r.decode(e, { stream: !0 });
3697
- let { chunks: o, remainder: s } = dt(i);
3702
+ let { chunks: o, remainder: s } = ft(i);
3698
3703
  i = s;
3699
3704
  for (let e of o) {
3700
3705
  if (!e.trim()) continue;
3701
- let n = ut(e);
3706
+ let n = dt(e);
3702
3707
  for (let e of n) {
3703
3708
  if (e.eventName === "__done__") {
3704
3709
  t.onComplete();
@@ -3719,18 +3724,18 @@ var pr = class {
3719
3724
  }, mr = class {
3720
3725
  protocol = "sse-get";
3721
3726
  async connect(e, t) {
3722
- let n = (await Be(e.action, e.params || {}, { signal: e.signal })).getReader(), r = new TextDecoder(), i = "", a = !1;
3727
+ let n = (await Ve(e.action, e.params || {}, { signal: e.signal })).getReader(), r = new TextDecoder(), i = "", a = !1;
3723
3728
  return (async () => {
3724
3729
  try {
3725
3730
  for (; !a;) {
3726
3731
  let { value: e, done: a } = await n.read();
3727
3732
  if (a) break;
3728
3733
  i += r.decode(e, { stream: !0 });
3729
- let { chunks: o, remainder: s } = dt(i);
3734
+ let { chunks: o, remainder: s } = ft(i);
3730
3735
  i = s;
3731
3736
  for (let e of o) {
3732
3737
  if (!e.trim()) continue;
3733
- let n = ut(e);
3738
+ let n = dt(e);
3734
3739
  for (let e of n) {
3735
3740
  if (e.eventName === "__done__") {
3736
3741
  t.onComplete();
@@ -3750,4 +3755,4 @@ var pr = class {
3750
3755
  }
3751
3756
  };
3752
3757
  //#endregion
3753
- export { dr as AgentWorkbench, sr as ApiFacadeImpl, xt as RunEngineImpl, mr as SseGetTransport, pr as SsePostTransport, ct as createProtocol };
3758
+ export { dr as AgentWorkbench, sr as ApiFacadeImpl, St as RunEngineImpl, mr as SseGetTransport, pr as SsePostTransport, lt as createProtocol };