@kingsoftcloud/ksadk-web 0.2.9 → 0.2.11

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 (144) hide show
  1. package/CHANGELOG.md +27 -0
  2. package/dist-ksadk/assets/{ArtifactsPanel-SSyx1aCo.js → ArtifactsPanel-BF4v3fIu.js} +1 -1
  3. package/dist-ksadk/assets/{CodeBlock-YQ5vXzYH.js → CodeBlock-MkPxZeyx.js} +1 -1
  4. package/dist-ksadk/assets/{MathMessageMarkdown-CflwKEe7.js → MathMessageMarkdown-BtAniUMT.js} +1 -1
  5. package/dist-ksadk/assets/{MermaidBlock-nbjqLbuu.js → MermaidBlock-B7_vB2SD.js} +6 -6
  6. package/dist-ksadk/assets/NativeTerminalPanel-DKuFni1-.js +1 -0
  7. package/dist-ksadk/assets/{arc-QSfvB8Et.js → arc-DcxNT_so.js} +1 -1
  8. package/dist-ksadk/assets/architecture-7EHR7CIX-BHyTI6bf.js +1 -0
  9. package/dist-ksadk/assets/{architectureDiagram-3BPJPVTR-CILqFpDC.js → architectureDiagram-3BPJPVTR-BrLH3CLV.js} +1 -1
  10. package/dist-ksadk/assets/{blockDiagram-GPEHLZMM-DD53Zgkb.js → blockDiagram-GPEHLZMM-D4lvcIrU.js} +1 -1
  11. package/dist-ksadk/assets/{c4Diagram-AAUBKEIU-DjS3CJER.js → c4Diagram-AAUBKEIU-v644IW0m.js} +1 -1
  12. package/dist-ksadk/assets/channel-BH5WJ3h3.js +1 -0
  13. package/dist-ksadk/assets/{chunk-2J33WTMH-CBEtb1wr.js → chunk-2J33WTMH-CI4vAXF2.js} +1 -1
  14. package/dist-ksadk/assets/{chunk-4BX2VUAB-CqF_-u4a.js → chunk-4BX2VUAB-B7f3Nw20.js} +1 -1
  15. package/dist-ksadk/assets/{chunk-55IACEB6-lR2vu_yR.js → chunk-55IACEB6-Ba9KW173.js} +1 -1
  16. package/dist-ksadk/assets/{chunk-727SXJPM-DvjC_wor.js → chunk-727SXJPM-CBkuHlWy.js} +1 -1
  17. package/dist-ksadk/assets/{chunk-AQP2D5EJ-BVUaV9p1.js → chunk-AQP2D5EJ-cWD88O0R.js} +1 -1
  18. package/dist-ksadk/assets/{chunk-FMBD7UC4-Cc8_1XC_.js → chunk-FMBD7UC4-BUrLnsHX.js} +1 -1
  19. package/dist-ksadk/assets/{chunk-ND2GUHAM-CAHh5eAF.js → chunk-ND2GUHAM-B_uYv3IA.js} +1 -1
  20. package/dist-ksadk/assets/chunk-QZHKN3VN-yZAr1Dj8.js +1 -0
  21. package/dist-ksadk/assets/classDiagram-4FO5ZUOK-Cav8Io0V.js +1 -0
  22. package/dist-ksadk/assets/classDiagram-v2-Q7XG4LA2-Cav8Io0V.js +1 -0
  23. package/dist-ksadk/assets/{cose-bilkent-S5V4N54A-CW6wiY80.js → cose-bilkent-S5V4N54A-Ob1AOX07.js} +1 -1
  24. package/dist-ksadk/assets/{dagre-BM42HDAG-BH_tWldy.js → dagre-BM42HDAG-Cw2ELnlF.js} +1 -1
  25. package/dist-ksadk/assets/{diagram-2AECGRRQ-ljY0ga-3.js → diagram-2AECGRRQ-BIR6If7W.js} +1 -1
  26. package/dist-ksadk/assets/{diagram-5GNKFQAL-BjZ8yg4e.js → diagram-5GNKFQAL-CaECh3Vg.js} +1 -1
  27. package/dist-ksadk/assets/{diagram-KO2AKTUF-D5-e50p6.js → diagram-KO2AKTUF-D3V-rrkc.js} +1 -1
  28. package/dist-ksadk/assets/{diagram-LMA3HP47-CIMbgA2R.js → diagram-LMA3HP47-BzEyff8c.js} +1 -1
  29. package/dist-ksadk/assets/{diagram-OG6HWLK6-CHAv8n8N.js → diagram-OG6HWLK6-Bgthbllv.js} +1 -1
  30. package/dist-ksadk/assets/{dist-CjTwd1ba.js → dist-B4yXtSg3.js} +1 -1
  31. package/dist-ksadk/assets/{dist-Bh8Jo1Hy.js → dist-B8ZWpW4i.js} +1 -1
  32. package/dist-ksadk/assets/{dist-B-8AvGwU.js → dist-BE76hYy3.js} +1 -1
  33. package/dist-ksadk/assets/{dist-lBacVcOX.js → dist-BI5M27-4.js} +1 -1
  34. package/dist-ksadk/assets/{dist-C-TuGFEP.js → dist-BZzeSVME.js} +1 -1
  35. package/dist-ksadk/assets/{dist-CSdL9G4U.js → dist-BbsQ32yZ.js} +1 -1
  36. package/dist-ksadk/assets/{dist-DHqMtxSi.js → dist-Br4tabXH.js} +1 -1
  37. package/dist-ksadk/assets/{dist-BFWeVh8Y.js → dist-C1FbzTlR.js} +1 -1
  38. package/dist-ksadk/assets/{dist-miJcQ_QT.js → dist-CJVD8Qen.js} +1 -1
  39. package/dist-ksadk/assets/{dist-CwcMj9TX.js → dist-CQj_mZtX.js} +1 -1
  40. package/dist-ksadk/assets/{dist-DkE5j5qa.js → dist-CltMulHu.js} +1 -1
  41. package/dist-ksadk/assets/{dist-CA7FMnEq.js → dist-CprtF_Yw.js} +1 -1
  42. package/dist-ksadk/assets/{dist-YCkBmRQg.js → dist-Cs_CrFvx.js} +1 -1
  43. package/dist-ksadk/assets/{dist-BQFXkYCL.js → dist-CtpPIyFY.js} +1 -1
  44. package/dist-ksadk/assets/{dist-CPGAEeVO.js → dist-DNQ5Xgkl.js} +1 -1
  45. package/dist-ksadk/assets/{dist-DxbIq1y9.js → dist-DhwceB_X.js} +1 -1
  46. package/dist-ksadk/assets/{dist-DplOU2XC.js → dist-FWZSQYuG.js} +1 -1
  47. package/dist-ksadk/assets/{dist-k2YXzXki.js → dist-FgO6dUv_.js} +1 -1
  48. package/dist-ksadk/assets/{dist-CefsMd33.js → dist-SOaE0trD.js} +1 -1
  49. package/dist-ksadk/assets/{dist-CH8X1hMv.js → dist-loAWb-yY.js} +1 -1
  50. package/dist-ksadk/assets/{dist-8fhwk8tR.js → dist-qmkcKPdJ.js} +1 -1
  51. package/dist-ksadk/assets/{dist-Gtm38p17.js → dist-xjcaveNh.js} +1 -1
  52. package/dist-ksadk/assets/{erDiagram-TEJ5UH35-Buxp9SL_.js → erDiagram-TEJ5UH35-C_N1U6ND.js} +1 -1
  53. package/dist-ksadk/assets/eventmodeling-FCH6USID-D4JVqRuD.js +1 -0
  54. package/dist-ksadk/assets/{flowDiagram-I6XJVG4X-CNQ7RUqk.js → flowDiagram-I6XJVG4X-Cu2-GdOp.js} +1 -1
  55. package/dist-ksadk/assets/{ganttDiagram-6RSMTGT7-BR4K2g25.js → ganttDiagram-6RSMTGT7-CFMrfxGE.js} +1 -1
  56. package/dist-ksadk/assets/gitGraph-WXDBUCRP-Dhb2APoT.js +1 -0
  57. package/dist-ksadk/assets/{gitGraphDiagram-PVQCEYII-D5xJeGM-.js → gitGraphDiagram-PVQCEYII-DMfMwZL3.js} +1 -1
  58. package/dist-ksadk/assets/{index-CAl5bzeo.css → index-DAURbCsP.css} +1 -1
  59. package/dist-ksadk/assets/index-NDLr6qy9.js +165 -0
  60. package/dist-ksadk/assets/info-J43DQDTF-Bd0FU_kK.js +1 -0
  61. package/dist-ksadk/assets/{infoDiagram-5YYISTIA-Dx3WJJ7c.js → infoDiagram-5YYISTIA-cBZXniHy.js} +1 -1
  62. package/dist-ksadk/assets/{ishikawaDiagram-YF4QCWOH-CinAgPok.js → ishikawaDiagram-YF4QCWOH-Byt-LQw-.js} +1 -1
  63. package/dist-ksadk/assets/{journeyDiagram-JHISSGLW-CvHK1ISY.js → journeyDiagram-JHISSGLW-BtY3m69h.js} +1 -1
  64. package/dist-ksadk/assets/{kanban-definition-UN3LZRKU-CdVmYG0i.js → kanban-definition-UN3LZRKU-C6iN0sWn.js} +1 -1
  65. package/dist-ksadk/assets/{katex-j3gWbtq2.js → katex-DJ8K3DD_.js} +1 -1
  66. package/dist-ksadk/assets/{linear-CSzugA0M.js → linear-CUfNl6zg.js} +1 -1
  67. package/dist-ksadk/assets/{mermaid-parser.core-x5RuQqLN.js → mermaid-parser.core-xgL8Vh_R.js} +2 -2
  68. package/dist-ksadk/assets/{mindmap-definition-RKZ34NQL-DHeHLEl4.js → mindmap-definition-RKZ34NQL-BkGzz7Z2.js} +1 -1
  69. package/dist-ksadk/assets/packet-YPE3B663-BLs1Uxy0.js +1 -0
  70. package/dist-ksadk/assets/pie-LRSECV5Y-DwzfGu6H.js +1 -0
  71. package/dist-ksadk/assets/{pieDiagram-4H26LBE5-Bn-CBt6T.js → pieDiagram-4H26LBE5-BIH7P3Lx.js} +1 -1
  72. package/dist-ksadk/assets/{quadrantDiagram-W4KKPZXB-DvSMM3_k.js → quadrantDiagram-W4KKPZXB-C2xbbI2c.js} +1 -1
  73. package/dist-ksadk/assets/radar-GUYGQ44K-eGejGVHG.js +1 -0
  74. package/dist-ksadk/assets/{requirementDiagram-4Y6WPE33-Bs1Umaod.js → requirementDiagram-4Y6WPE33-ByFUrTNV.js} +1 -1
  75. package/dist-ksadk/assets/{sankeyDiagram-5OEKKPKP-uM4nwFIR.js → sankeyDiagram-5OEKKPKP-vGZbAxiz.js} +1 -1
  76. package/dist-ksadk/assets/{sequenceDiagram-3UESZ5HK-CUM1cPop.js → sequenceDiagram-3UESZ5HK-ZkwUIiu3.js} +1 -1
  77. package/dist-ksadk/assets/{stateDiagram-AJRCARHV-BMhsQxg0.js → stateDiagram-AJRCARHV-BdbKWYq8.js} +1 -1
  78. package/dist-ksadk/assets/stateDiagram-v2-BHNVJYJU-DiPVQ0cz.js +1 -0
  79. package/dist-ksadk/assets/{timeline-definition-PNZ67QCA-DqOyQzFY.js → timeline-definition-PNZ67QCA-B5QfJdJp.js} +1 -1
  80. package/dist-ksadk/assets/treeView-BLDUP644-C6UbCLlZ.js +1 -0
  81. package/dist-ksadk/assets/treemap-LRROVOQU-Bk3Xcttl.js +1 -0
  82. package/dist-ksadk/assets/{vennDiagram-CIIHVFJN-CL6ie2Ap.js → vennDiagram-CIIHVFJN-zcCHPgCd.js} +1 -1
  83. package/dist-ksadk/assets/wardley-L42UT6IY-DpJI-Lu5.js +1 -0
  84. package/dist-ksadk/assets/{wardleyDiagram-YWT4CUSO-CoLkaHQx.js → wardleyDiagram-YWT4CUSO-CUTRM1sP.js} +1 -1
  85. package/dist-ksadk/assets/{xychartDiagram-2RQKCTM6-D3W-LOH6.js → xychartDiagram-2RQKCTM6-gvfSgBXS.js} +1 -1
  86. package/dist-ksadk/index.html +2 -2
  87. package/dist-lib/App.d.ts +3 -1
  88. package/dist-lib/App.d.ts.map +1 -1
  89. package/dist-lib/{ArtifactsPanel--CQyb4ZY.js → ArtifactsPanel-yLxSIEFw.js} +4 -4
  90. package/dist-lib/{CodeBlock-Bwiebu9v.js → CodeBlock-CKy7sFkN.js} +1 -1
  91. package/dist-lib/{MathMessageMarkdown-BYzR9y8h.js → MathMessageMarkdown-D0fGt004.js} +2 -2
  92. package/dist-lib/{NativeTerminalPanel-BctkNn1k.js → NativeTerminalPanel-Bzdmm_Au.js} +105 -81
  93. package/dist-lib/{WorkspacePanelContainer-CtS_M-Qt.js → WorkspacePanelContainer-BTxXY3RS.js} +926 -833
  94. package/dist-lib/api/events.d.ts +12 -1
  95. package/dist-lib/api/events.d.ts.map +1 -1
  96. package/dist-lib/api/session.d.ts +11 -2
  97. package/dist-lib/api/session.d.ts.map +1 -1
  98. package/dist-lib/components/chat/ChatHeader.d.ts.map +1 -1
  99. package/dist-lib/components/chat/ChatMessageList.d.ts.map +1 -1
  100. package/dist-lib/components/chat/ChatSidebar.d.ts +6 -1
  101. package/dist-lib/components/chat/ChatSidebar.d.ts.map +1 -1
  102. package/dist-lib/components/chat/ConnectedMessageList.d.ts +2 -1
  103. package/dist-lib/components/chat/ConnectedMessageList.d.ts.map +1 -1
  104. package/dist-lib/components/chat/ConnectedSidebar.d.ts +2 -1
  105. package/dist-lib/components/chat/ConnectedSidebar.d.ts.map +1 -1
  106. package/dist-lib/components/native/NativeTerminalPanel.d.ts +3 -1
  107. package/dist-lib/components/native/NativeTerminalPanel.d.ts.map +1 -1
  108. package/dist-lib/components.js +3 -3
  109. package/dist-lib/core/api/facade.d.ts +13 -4
  110. package/dist-lib/core/api/facade.d.ts.map +1 -1
  111. package/dist-lib/core/api/types.d.ts +13 -1
  112. package/dist-lib/core/api/types.d.ts.map +1 -1
  113. package/dist-lib/hooks/useSessionLifecycle.d.ts +2 -0
  114. package/dist-lib/hooks/useSessionLifecycle.d.ts.map +1 -1
  115. package/dist-lib/runtime.js +1108 -817
  116. package/dist-lib/stores/checkpoint.d.ts.map +1 -1
  117. package/dist-lib/stores/session.d.ts +35 -1
  118. package/dist-lib/stores/session.d.ts.map +1 -1
  119. package/dist-lib/styles.css +1 -1
  120. package/dist-lib/utils/message-virtualization.d.ts +21 -0
  121. package/dist-lib/utils/message-virtualization.d.ts.map +1 -0
  122. package/dist-lib/utils/session-list.d.ts.map +1 -1
  123. package/dist-lib/utils/session-pagination.d.ts +20 -0
  124. package/dist-lib/utils/session-pagination.d.ts.map +1 -0
  125. package/dist-lib/utils/terminal-session.d.ts +1 -0
  126. package/dist-lib/utils/terminal-session.d.ts.map +1 -1
  127. package/package.json +1 -1
  128. package/dist-ksadk/assets/NativeTerminalPanel-DxAh9H8z.js +0 -1
  129. package/dist-ksadk/assets/architecture-7EHR7CIX-C19PcYz-.js +0 -1
  130. package/dist-ksadk/assets/channel-eJj5zetk.js +0 -1
  131. package/dist-ksadk/assets/chunk-QZHKN3VN-D4mip6Il.js +0 -1
  132. package/dist-ksadk/assets/classDiagram-4FO5ZUOK-33PbfFSW.js +0 -1
  133. package/dist-ksadk/assets/classDiagram-v2-Q7XG4LA2-33PbfFSW.js +0 -1
  134. package/dist-ksadk/assets/eventmodeling-FCH6USID-DmbjPnMI.js +0 -1
  135. package/dist-ksadk/assets/gitGraph-WXDBUCRP-Bc_9dlTu.js +0 -1
  136. package/dist-ksadk/assets/index-B6Jvzl61.js +0 -165
  137. package/dist-ksadk/assets/info-J43DQDTF-B8Y6xmyb.js +0 -1
  138. package/dist-ksadk/assets/packet-YPE3B663-BrYG7omE.js +0 -1
  139. package/dist-ksadk/assets/pie-LRSECV5Y-_wNpvHX3.js +0 -1
  140. package/dist-ksadk/assets/radar-GUYGQ44K-BaVGJTci.js +0 -1
  141. package/dist-ksadk/assets/stateDiagram-v2-BHNVJYJU-B1hvuTKv.js +0 -1
  142. package/dist-ksadk/assets/treeView-BLDUP644-SGPboZ5y.js +0 -1
  143. package/dist-ksadk/assets/treemap-LRROVOQU-DuxD3lqD.js +0 -1
  144. package/dist-ksadk/assets/wardley-L42UT6IY-D9w6kgpb.js +0 -1
@@ -1,14 +1,14 @@
1
1
  import { i as e, t } from "./capabilities-CiyyeRQ9.js";
2
- import { A as n, D as r, E as i, O as a, T as o, _ as s, b as c, c as l, d 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 ee, s as te, t as y, u as b, v as x, w as ne, x as S, y as C } from "./WorkspacePanelContainer-CtS_M-Qt.js";
3
- import { t as re } from "./artifact-BfFsPe5A.js";
4
- import { X as ie } from "lucide-react";
5
- import { Fragment as ae, jsx as w, jsxs as T } from "react/jsx-runtime";
6
- import * as E from "react";
7
- import D, { Suspense as oe, useCallback as O, useEffect as k, useMemo as se, useRef as A, useState as ce } from "react";
8
- import * as j from "@radix-ui/react-dialog";
9
- import { create as M } from "zustand";
2
+ import { C as n, D as r, E as i, O as a, T as o, _ as s, b as c, c as l, f as u, g as d, h as f, k as p, l as m, m as h, n as g, o as _, p as v, r as y, s as b, t as ee, u as te, v as x, w as S, y as C } from "./WorkspacePanelContainer-BTxXY3RS.js";
3
+ import { t as ne } from "./artifact-BfFsPe5A.js";
4
+ import { X as w } from "lucide-react";
5
+ import { Fragment as re, jsx as T, jsxs as E } from "react/jsx-runtime";
6
+ import * as D from "react";
7
+ import O, { Suspense as ie, useCallback as k, useEffect as A, useMemo as ae, useRef as j, useState as oe } from "react";
8
+ import * as M from "@radix-ui/react-dialog";
9
+ import { create as N } from "zustand";
10
10
  //#region src/stores/bootstrap.ts
11
- var N = M()((t) => ({
11
+ var P = N()((t) => ({
12
12
  agentId: "default-agent",
13
13
  agentName: "Agent",
14
14
  agentFramework: "",
@@ -26,7 +26,7 @@ var N = M()((t) => ({
26
26
  }));
27
27
  //#endregion
28
28
  //#region src/stores/model.ts
29
- function le(e, t) {
29
+ function se(e, t) {
30
30
  let n = /* @__PURE__ */ new Map();
31
31
  for (let t of e) t?.id && n.set(t.id, t);
32
32
  for (let e of t) e?.id && n.set(e.id, {
@@ -35,18 +35,18 @@ function le(e, t) {
35
35
  });
36
36
  return Array.from(n.values()).sort((e, t) => e.id.localeCompare(t.id));
37
37
  }
38
- var P = M()((e) => ({
38
+ var F = N()((e) => ({
39
39
  availableModels: [],
40
40
  selectedModel: "",
41
41
  modelSource: "",
42
42
  modelCatalogLoaded: !1,
43
43
  thinkingMode: "auto",
44
- upsertModels: (t) => e((e) => ({ availableModels: le(e.availableModels, t) })),
44
+ upsertModels: (t) => e((e) => ({ availableModels: se(e.availableModels, t) })),
45
45
  setSelectedModel: (t) => e({ selectedModel: t }),
46
46
  setModelSource: (t) => e({ modelSource: t }),
47
47
  setModelCatalogLoaded: (t) => e({ modelCatalogLoaded: t }),
48
48
  setThinkingMode: (t) => e({ thinkingMode: t })
49
- })), ue = (e) => !!(e && e.status !== "completed" && e.status !== "failed" && e.status !== "stopped"), F = M()((e, t) => ({
49
+ })), ce = (e) => !!(e && e.status !== "completed" && e.status !== "failed" && e.status !== "stopped"), I = N()((e, t) => ({
50
50
  isStreaming: !1,
51
51
  currentRunId: "",
52
52
  stopRequested: !1,
@@ -55,9 +55,9 @@ var P = M()((e) => ({
55
55
  setStreaming: (t) => e({ isStreaming: t }),
56
56
  setSessionStreaming: (t, n) => e((e) => {
57
57
  let r = String(t || "");
58
- return r ? n ? { isStreaming: !0 } : e.sessionActivities[r] ? { isStreaming: Object.entries(e.sessionActivities).some(([e, t]) => e !== r && ue(t)) } : { isStreaming: Object.values(e.sessionActivities).some(ue) } : { isStreaming: n };
58
+ return r ? n ? { isStreaming: !0 } : e.sessionActivities[r] ? { isStreaming: Object.entries(e.sessionActivities).some(([e, t]) => e !== r && ce(t)) } : { isStreaming: Object.values(e.sessionActivities).some(ce) } : { isStreaming: n };
59
59
  }),
60
- isSessionStreaming: (e) => ue(t().getSessionActivity(e)),
60
+ isSessionStreaming: (e) => ce(t().getSessionActivity(e)),
61
61
  getSessionActivity: (e) => {
62
62
  let n = String(e || "");
63
63
  return n && t().sessionActivities[n] || null;
@@ -156,6 +156,33 @@ var P = M()((e) => ({
156
156
  })
157
157
  }));
158
158
  //#endregion
159
+ //#region src/utils/session-pagination.js
160
+ function L(e = /* @__PURE__ */ new Set(), t = []) {
161
+ let n = new Set(e);
162
+ for (let e of t) {
163
+ let t = Number(e);
164
+ Number.isFinite(t) && t > 0 && n.add(t);
165
+ }
166
+ return new Set(Array.from(n).sort((e, t) => e - t));
167
+ }
168
+ function le({ sessionsLength: e = 0, total: t = 0, page: n = 0, pageSize: r = 30, loadedPages: i = /* @__PURE__ */ new Set() } = {}) {
169
+ let a = Math.max(0, Number(t) || 0), o = Math.max(0, Number(e) || 0);
170
+ return {
171
+ total: a,
172
+ page: Math.max(0, Number(n) || 0),
173
+ pageSize: Math.max(1, Number(r) || 30),
174
+ loadedPages: L(i),
175
+ hasMore: o < a
176
+ };
177
+ }
178
+ function ue({ total: e = 0, pageSize: t = 30, loadedPages: n = /* @__PURE__ */ new Set() } = {}) {
179
+ let r = Math.max(0, Number(e) || 0), i = Math.max(1, Number(t) || 30);
180
+ if (r <= 0) return null;
181
+ let a = Math.ceil(r / i);
182
+ for (let e = 1; e <= a; e += 1) if (!n.has(e)) return e;
183
+ return null;
184
+ }
185
+ //#endregion
159
186
  //#region src/stores/session.ts
160
187
  function de(e) {
161
188
  let t = e.UpdatedAt;
@@ -165,68 +192,173 @@ function de(e) {
165
192
  }
166
193
  return typeof t == "number" ? t : 0;
167
194
  }
168
- function fe(e, t) {
169
- let n = /* @__PURE__ */ new Map();
170
- for (let t of e) t?.SessionId && n.set(t.SessionId, t);
171
- for (let e of t) e?.SessionId && n.set(e.SessionId, {
172
- ...n.get(e.SessionId) || {},
195
+ var fe = "ksadk.pinnedSessionIds";
196
+ function pe() {
197
+ try {
198
+ let e = globalThis.localStorage?.getItem(fe), t = e ? JSON.parse(e) : [];
199
+ return Array.isArray(t) ? t.filter((e) => typeof e == "string") : [];
200
+ } catch {
201
+ return [];
202
+ }
203
+ }
204
+ function me(e) {
205
+ try {
206
+ globalThis.localStorage?.setItem(fe, JSON.stringify(e));
207
+ } catch {}
208
+ }
209
+ function he(e, t) {
210
+ let n = new Set(t);
211
+ return e.slice().sort((e, t) => {
212
+ let r = +!!n.has(e.SessionId), i = +!!n.has(t.SessionId);
213
+ return r === i ? de(t) - de(e) : i - r;
214
+ });
215
+ }
216
+ function ge(e, t, n) {
217
+ let r = /* @__PURE__ */ new Map();
218
+ for (let t of e) t?.SessionId && r.set(t.SessionId, t);
219
+ for (let e of t) e?.SessionId && r.set(e.SessionId, {
220
+ ...r.get(e.SessionId) || {},
173
221
  ...e
174
222
  });
175
- return Array.from(n.values()).sort((e, t) => de(t) - de(e));
223
+ return he(Array.from(r.values()), n);
176
224
  }
177
- var I = M()((e) => ({
225
+ var R = N()((e) => ({
178
226
  sessions: [],
179
227
  currentSessionId: null,
180
- setSessions: (t) => e({ sessions: t }),
228
+ sessionsAgentId: "",
229
+ sessionsTotal: 0,
230
+ sessionsPage: 0,
231
+ sessionsPageSize: 30,
232
+ loadedPages: /* @__PURE__ */ new Set(),
233
+ hasMoreSessions: !1,
234
+ isLoadingSessions: !1,
235
+ pinnedSessionIds: pe(),
236
+ eventCache: {},
237
+ setSessions: (t) => e((e) => ({ sessions: he(t, e.pinnedSessionIds) })),
181
238
  setCurrentSessionId: (t) => e({ currentSessionId: t }),
182
- upsertSessions: (t) => e((e) => ({ sessions: fe(e.sessions, t) })),
183
- removeSession: (t) => e((e) => ({ sessions: e.sessions.filter((e) => e.SessionId !== t) }))
184
- })), pe = .28;
185
- function me(e, t = 768) {
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({
241
+ sessionsLength: r.length,
242
+ total: o,
243
+ page: i,
244
+ pageSize: a,
245
+ loadedPages: s
246
+ });
247
+ return {
248
+ sessions: r,
249
+ sessionsAgentId: n?.agentId ?? e.sessionsAgentId,
250
+ sessionsTotal: c.total,
251
+ sessionsPage: c.page,
252
+ sessionsPageSize: c.pageSize,
253
+ loadedPages: c.loadedPages,
254
+ hasMoreSessions: c.hasMore
255
+ };
256
+ }),
257
+ removeSession: (t) => e((e) => {
258
+ let n = e.sessions.filter((e) => e.SessionId !== t), r = Math.max(0, e.sessionsTotal - 1);
259
+ return {
260
+ sessions: n,
261
+ sessionsTotal: r,
262
+ hasMoreSessions: le({
263
+ sessionsLength: n.length,
264
+ total: r,
265
+ page: e.sessionsPage,
266
+ pageSize: e.sessionsPageSize,
267
+ loadedPages: e.loadedPages
268
+ }).hasMore,
269
+ pinnedSessionIds: e.pinnedSessionIds.filter((e) => e !== t)
270
+ };
271
+ }),
272
+ setLoadingSessions: (t) => e({ isLoadingSessions: t }),
273
+ resetSessionPagination: (t) => e({
274
+ sessions: [],
275
+ sessionsAgentId: t,
276
+ sessionsTotal: 0,
277
+ sessionsPage: 0,
278
+ loadedPages: /* @__PURE__ */ new Set(),
279
+ hasMoreSessions: !1,
280
+ isLoadingSessions: !1
281
+ }),
282
+ togglePinnedSession: (t) => e((e) => {
283
+ let n = new Set(e.pinnedSessionIds);
284
+ n.has(t) ? n.delete(t) : n.add(t);
285
+ let r = Array.from(n);
286
+ return me(r), {
287
+ pinnedSessionIds: r,
288
+ sessions: he(e.sessions, r)
289
+ };
290
+ }),
291
+ setSessionEventCache: (t, n) => e((e) => ({ eventCache: {
292
+ ...e.eventCache,
293
+ [t]: {
294
+ events: n.events,
295
+ total: n.total,
296
+ offset: n.offset,
297
+ limit: n.limit,
298
+ isLoadingOlder: n.isLoadingOlder ?? !1
299
+ }
300
+ } })),
301
+ setSessionEventLoadingOlder: (t, n) => e((e) => {
302
+ let r = e.eventCache[t];
303
+ return r ? { eventCache: {
304
+ ...e.eventCache,
305
+ [t]: {
306
+ ...r,
307
+ isLoadingOlder: n
308
+ }
309
+ } } : {};
310
+ }),
311
+ clearSessionEventCache: (t) => e((e) => {
312
+ if (!t) return { eventCache: {} };
313
+ let n = { ...e.eventCache };
314
+ return delete n[t], { eventCache: n };
315
+ })
316
+ })), z = .28;
317
+ function B(e, t = 768) {
186
318
  return Number(e) <= t;
187
319
  }
188
- function L({ isMobile: e, desktopSidebarOpen: t, mobileSidebarOpen: n }) {
320
+ function _e({ isMobile: e, desktopSidebarOpen: t, mobileSidebarOpen: n }) {
189
321
  return {
190
322
  desktopSidebarVisible: !e && !!t,
191
323
  mobileDrawerVisible: !!(e && n)
192
324
  };
193
325
  }
194
- function he({ isMobile: e, viewportHeight: t, desktopMaxHeight: n = 160 }) {
326
+ function ve({ isMobile: e, viewportHeight: t, desktopMaxHeight: n = 160 }) {
195
327
  if (!e) return n;
196
328
  let r = Number(t);
197
329
  if (!Number.isFinite(r) || r <= 0) return n;
198
- let i = Math.floor(r * pe);
330
+ let i = Math.floor(r * z);
199
331
  return Math.max(120, Math.min(n, i));
200
332
  }
201
333
  //#endregion
202
334
  //#region src/utils/session.js
203
- var R = "ksadk:webui:selected-session:";
204
- function z(e) {
335
+ var ye = "ksadk:webui:selected-session:";
336
+ function be(e) {
205
337
  return String(e || "").trim() || "default-agent";
206
338
  }
207
- function B(e) {
339
+ function xe(e) {
208
340
  if (e && typeof e.getItem == "function") return e;
209
341
  try {
210
342
  if (typeof window < "u" && window.localStorage) return window.localStorage;
211
343
  } catch {}
212
344
  return null;
213
345
  }
214
- function ge(e) {
215
- return `${R}${z(e)}`;
346
+ function Se(e) {
347
+ return `${ye}${be(e)}`;
216
348
  }
217
- function _e(e, t) {
218
- let n = B(t);
349
+ function Ce(e, t) {
350
+ let n = xe(t);
219
351
  if (!n) return null;
220
352
  try {
221
- return String(n.getItem(ge(e)) || "").trim() || null;
353
+ return String(n.getItem(Se(e)) || "").trim() || null;
222
354
  } catch {
223
355
  return null;
224
356
  }
225
357
  }
226
- function ve(e, t, n) {
227
- let r = B(n);
358
+ function we(e, t, n) {
359
+ let r = xe(n);
228
360
  if (!r) return;
229
- let i = ge(e), a = String(t || "").trim();
361
+ let i = Se(e), a = String(t || "").trim();
230
362
  try {
231
363
  if (a) {
232
364
  r.setItem(i, a);
@@ -235,7 +367,7 @@ function ve(e, t, n) {
235
367
  r.removeItem(i);
236
368
  } catch {}
237
369
  }
238
- function ye(e, t) {
370
+ function Te(e, t) {
239
371
  if (!Array.isArray(e) || e.length === 0) return null;
240
372
  let n = String(t || "").trim();
241
373
  if (n && e.some((e) => String(e?.SessionId || "").trim() === n)) return n;
@@ -247,66 +379,66 @@ function ye(e, t) {
247
379
  }
248
380
  //#endregion
249
381
  //#region src/utils/native-platform.js
250
- var be = new Map([["openclaw", "OpenClaw"], ["hermes", "Hermes"]]);
251
- function xe(e) {
382
+ var Ee = new Map([["openclaw", "OpenClaw"], ["hermes", "Hermes"]]);
383
+ function De(e) {
252
384
  return String(e || "").trim().toLowerCase();
253
385
  }
254
- function Se(e) {
386
+ function Oe(e) {
255
387
  return String(e || "").trim().toLowerCase();
256
388
  }
257
- function Ce(e) {
389
+ function ke(e) {
258
390
  try {
259
391
  return new URL("/", e).toString();
260
392
  } catch {
261
393
  return "/";
262
394
  }
263
395
  }
264
- function we({ capability: e, agentFramework: t, accessMode: n, origin: r }) {
265
- let i = xe(n);
396
+ function Ae({ capability: e, agentFramework: t, accessMode: n, origin: r }) {
397
+ let i = De(n);
266
398
  if (i !== "owner" && i !== "private" || !e?.Enabled) return null;
267
- let a = be.get(Se(t)) || "运行时";
399
+ let a = Ee.get(Oe(t)) || "运行时";
268
400
  return {
269
- href: typeof e.Href == "string" && e.Href ? new URL(e.Href, Ce(r)).toString() : Ce(r),
401
+ href: typeof e.Href == "string" && e.Href ? new URL(e.Href, ke(r)).toString() : ke(r),
270
402
  label: typeof e.Label == "string" && e.Label ? e.Label : "管理平台",
271
403
  title: `打开 ${a} 原生管理平台`
272
404
  };
273
405
  }
274
406
  //#endregion
275
407
  //#region src/utils/model-options.js
276
- var Te = new Set([
408
+ var je = new Set([
277
409
  "auto",
278
410
  "enabled",
279
411
  "disabled"
280
412
  ]);
281
- function Ee(e) {
413
+ function Me(e) {
282
414
  let t = String(e || "").trim().toLowerCase();
283
- return Te.has(t) ? t : "auto";
415
+ return je.has(t) ? t : "auto";
284
416
  }
285
- function De(e) {
286
- let t = Ee(e);
417
+ function Ne(e) {
418
+ let t = Me(e);
287
419
  if (t === "disabled") return { thinking: { type: "disabled" } };
288
420
  if (t === "enabled") return { thinking: { type: "enabled" } };
289
421
  }
290
422
  //#endregion
291
423
  //#region src/hooks/useResponsiveViewport.ts
292
- function Oe() {
424
+ function V() {
293
425
  return typeof window > "u" ? 900 : Math.round(window.visualViewport?.height || window.innerHeight || 900);
294
426
  }
295
- function ke() {
427
+ function Pe() {
296
428
  return typeof window > "u" ? {
297
429
  isMobile: !1,
298
430
  viewportHeight: 900
299
431
  } : {
300
- isMobile: me(window.innerWidth, 768),
301
- viewportHeight: Oe()
432
+ isMobile: B(window.innerWidth, 768),
433
+ viewportHeight: V()
302
434
  };
303
435
  }
304
- function Ae() {
305
- let [e, t] = ce(() => ke());
306
- return k(() => {
436
+ function Fe() {
437
+ let [e, t] = oe(() => Pe());
438
+ return A(() => {
307
439
  if (typeof window > "u") return;
308
440
  let e = window.matchMedia("(max-width: 768px)"), n = () => {
309
- t(ke());
441
+ t(Pe());
310
442
  };
311
443
  n();
312
444
  let r = typeof e.addEventListener == "function" ? (e.addEventListener("change", n), () => e.removeEventListener("change", n)) : (e.addListener(n), () => e.removeListener(n));
@@ -317,76 +449,76 @@ function Ae() {
317
449
  }
318
450
  //#endregion
319
451
  //#region src/api/client.ts
320
- var V = class extends Error {
452
+ var H = class extends Error {
321
453
  code;
322
454
  detail;
323
455
  constructor(e, t, n) {
324
456
  super(t), this.name = "ApiError", this.code = e, this.detail = n;
325
457
  }
326
- }, je = class extends Error {
458
+ }, U = class extends Error {
327
459
  constructor(e = "请求已取消") {
328
460
  super(e), this.name = "CancelledError";
329
461
  }
330
- }, H = "/agentengine/api/v1";
331
- async function Me(e) {
462
+ }, W = "/agentengine/api/v1";
463
+ async function Ie(e) {
332
464
  let t;
333
465
  try {
334
466
  t = await e.json();
335
467
  } catch {
336
- throw new V(-2, "响应格式异常");
468
+ throw new H(-2, "响应格式异常");
337
469
  }
338
- if (!e.ok) throw new V(e.status, t?.Message || `HTTP ${e.status}`, t);
339
- if (t?.Code !== void 0 && t.Code !== 0) throw new V(t.Code, t.Message || "请求失败", t);
470
+ if (!e.ok) throw new H(e.status, t?.Message || `HTTP ${e.status}`, t);
471
+ if (t?.Code !== void 0 && t.Code !== 0) throw new H(t.Code, t.Message || "请求失败", t);
340
472
  return t.Data;
341
473
  }
342
- function U(e) {
343
- throw e instanceof DOMException && e.name === "AbortError" ? new je() : e;
474
+ function G(e) {
475
+ throw e instanceof DOMException && e.name === "AbortError" ? new U() : e;
344
476
  }
345
- async function W(e, t, n) {
477
+ async function K(e, t, n) {
346
478
  let r;
347
479
  try {
348
- r = await fetch(`${H}/${e}`, {
480
+ r = await fetch(`${W}/${e}`, {
349
481
  method: "POST",
350
482
  headers: { "Content-Type": "application/json" },
351
483
  body: JSON.stringify(t),
352
484
  signal: n?.signal
353
485
  });
354
486
  } catch (e) {
355
- throw U(e);
487
+ throw G(e);
356
488
  }
357
- return Me(r);
489
+ return Ie(r);
358
490
  }
359
- async function Ne(e, t, n) {
491
+ async function Le(e, t, n) {
360
492
  let r;
361
493
  try {
362
- r = await fetch(`${H}/${e}`, {
494
+ r = await fetch(`${W}/${e}`, {
363
495
  method: "POST",
364
496
  body: t,
365
497
  signal: n?.signal
366
498
  });
367
499
  } catch (e) {
368
- throw U(e);
500
+ throw G(e);
369
501
  }
370
- return Me(r);
502
+ return Ie(r);
371
503
  }
372
- async function Pe(e, t, n) {
373
- let r = new URLSearchParams(t).toString(), i = r ? `${H}/${e}?${r}` : `${H}/${e}`, a;
504
+ async function Re(e, t, n) {
505
+ let r = new URLSearchParams(t).toString(), i = r ? `${W}/${e}?${r}` : `${W}/${e}`, a;
374
506
  try {
375
507
  a = await fetch(i, { signal: n?.signal });
376
508
  } catch (e) {
377
- throw U(e);
509
+ throw G(e);
378
510
  }
379
- if (!a.ok) throw new V(a.status, `资源获取失败: ${a.statusText}`);
511
+ if (!a.ok) throw new H(a.status, `资源获取失败: ${a.statusText}`);
380
512
  try {
381
513
  return n?.asText ? await a.text() : await a.blob();
382
514
  } catch {
383
- throw new V(-3, "文件读取失败");
515
+ throw new H(-3, "文件读取失败");
384
516
  }
385
517
  }
386
- async function Fe(e, t, n) {
518
+ async function ze(e, t, n) {
387
519
  let r;
388
520
  try {
389
- r = await fetch(`${H}/${e}`, {
521
+ r = await fetch(`${W}/${e}`, {
390
522
  method: "POST",
391
523
  headers: {
392
524
  "Content-Type": "application/json",
@@ -396,92 +528,92 @@ async function Fe(e, t, n) {
396
528
  signal: n?.signal
397
529
  });
398
530
  } catch (e) {
399
- throw U(e);
531
+ throw G(e);
400
532
  }
401
- if (!r.ok) throw new V(r.status, `流式请求失败: ${r.statusText}`);
402
- if (!r.body) throw new V(-1, "无法获取响应流");
533
+ if (!r.ok) throw new H(r.status, `流式请求失败: ${r.statusText}`);
534
+ if (!r.body) throw new H(-1, "无法获取响应流");
403
535
  return r.body;
404
536
  }
405
- async function Ie(e, t, n) {
406
- let r = new URLSearchParams(t).toString(), i = r ? `${H}/${e}?${r}` : `${H}/${e}`, a;
537
+ async function Be(e, t, n) {
538
+ let r = new URLSearchParams(t).toString(), i = r ? `${W}/${e}?${r}` : `${W}/${e}`, a;
407
539
  try {
408
540
  a = await fetch(i, {
409
541
  headers: { Accept: "text/event-stream" },
410
542
  signal: n?.signal
411
543
  });
412
544
  } catch (e) {
413
- throw U(e);
545
+ throw G(e);
414
546
  }
415
- if (!a.ok) throw new V(a.status, `流式订阅失败: ${a.statusText}`);
416
- if (!a.body) throw new V(-1, "无法获取响应流");
547
+ if (!a.ok) throw new H(a.status, `流式订阅失败: ${a.statusText}`);
548
+ if (!a.body) throw new H(-1, "无法获取响应流");
417
549
  return a.body;
418
550
  }
419
551
  //#endregion
420
552
  //#region src/api/bootstrap.ts
421
- async function Le() {
422
- return W("GetAgentUiBootstrap", {});
553
+ async function Ve() {
554
+ return K("GetAgentUiBootstrap", {});
423
555
  }
424
556
  //#endregion
425
557
  //#region src/api/model.ts
426
- async function Re(e) {
427
- return W("ListAgentModels", { AgentId: e });
558
+ async function He(e) {
559
+ return K("ListAgentModels", { AgentId: e });
428
560
  }
429
561
  //#endregion
430
562
  //#region src/hooks/useBootstrap.ts
431
- function ze(e) {
563
+ function Ue(e) {
432
564
  if (!Array.isArray(e)) return ["responses", "chat_completions"];
433
565
  let t = e.filter((e) => e === "responses" || e === "chat_completions");
434
566
  return t.length > 0 ? t : ["responses", "chat_completions"];
435
567
  }
436
- async function Be(e) {
568
+ async function We(e) {
437
569
  try {
438
- let t = await Re(e), n = t?.Models;
439
- Array.isArray(n) && P.getState().upsertModels(n);
570
+ let t = await He(e), n = t?.Models;
571
+ Array.isArray(n) && F.getState().upsertModels(n);
440
572
  let r = t;
441
- r?.Current && P.getState().setSelectedModel(String(r.Current)), r?.Source && P.getState().setModelSource(String(r.Source));
573
+ r?.Current && F.getState().setSelectedModel(String(r.Current)), r?.Source && F.getState().setModelSource(String(r.Source));
442
574
  } catch (e) {
443
575
  console.error("Failed to fetch models:", e);
444
576
  } finally {
445
- P.getState().setModelCatalogLoaded(!0);
577
+ F.getState().setModelCatalogLoaded(!0);
446
578
  }
447
579
  }
448
- function Ve(n) {
449
- k(() => {
580
+ function Ge(n) {
581
+ A(() => {
450
582
  (async () => {
451
583
  try {
452
- let r = await Le(), i = r, a = i?.Agent, o = String(a?.AgentId || "default-agent");
453
- if (N.getState().setAgentId(o), a?.Name) {
584
+ let r = await Ve(), i = r, a = i?.Agent, o = String(a?.AgentId || "default-agent");
585
+ if (P.getState().setAgentId(o), a?.Name) {
454
586
  let e = String(a.Name);
455
- N.getState().setAgentName(e), document.title = e;
587
+ P.getState().setAgentName(e), document.title = e;
456
588
  }
457
589
  let s = String(a?.Framework || "").trim().toLowerCase();
458
- N.getState().setAgentFramework(s);
590
+ P.getState().setAgentFramework(s);
459
591
  let c = e(r);
460
- N.getState().setCapabilities(c), N.getState().setApiFormats(ze(c.HostedChat.ApiFormats)), N.getState().setAccessMode(String(i?.AccessMode || "Owner"));
592
+ P.getState().setCapabilities(c), P.getState().setApiFormats(Ue(c.HostedChat.ApiFormats)), P.getState().setAccessMode(String(i?.AccessMode || "Owner"));
461
593
  let l = c.WorkspaceFiles && i?.WorkspaceFiles ? i.WorkspaceFiles : null;
462
- N.getState().setWorkspaceFiles(l), l || _.getState().setWorkspacePanelOpen(!1), t(c) && n.fetchSessions(o, _e(o));
594
+ P.getState().setWorkspaceFiles(l), l || _.getState().setWorkspacePanelOpen(!1), t(c) && n.fetchSessions(o, Ce(o));
463
595
  let u = i?.Model;
464
- u?.id && (P.getState().setSelectedModel(u.id), P.getState().upsertModels([u]), P.getState().setModelSource(u.source || "")), Be(o);
596
+ u?.id && (F.getState().setSelectedModel(u.id), F.getState().upsertModels([u]), F.getState().setModelSource(u.source || "")), We(o);
465
597
  } catch (t) {
466
- console.error("Failed to fetch bootstrap:", t), N.getState().setCapabilities(e({ Data: {
598
+ console.error("Failed to fetch bootstrap:", t), P.getState().setCapabilities(e({ Data: {
467
599
  Agent: { Framework: "" },
468
600
  ApiFormats: ["responses", "chat_completions"],
469
601
  Capabilities: {}
470
- } })), n.fetchSessions("default-agent", _e("default-agent")), Be("default-agent");
602
+ } })), n.fetchSessions("default-agent", Ce("default-agent")), We("default-agent");
471
603
  }
472
604
  })();
473
605
  }, []);
474
606
  }
475
607
  //#endregion
476
608
  //#region src/stores/message.ts
477
- var G = M()((e) => ({
609
+ var q = N()((e) => ({
478
610
  messages: [],
479
611
  setMessages: (t) => e({ messages: t }),
480
612
  patchMessages: (t) => e((e) => ({ messages: t(e.messages) }))
481
613
  }));
482
614
  //#endregion
483
615
  //#region src/utils/responses-stream.js
484
- function He() {
616
+ function Ke() {
485
617
  return {
486
618
  toolNames: /* @__PURE__ */ new Map(),
487
619
  toolArguments: /* @__PURE__ */ new Map(),
@@ -489,55 +621,55 @@ function He() {
489
621
  currentResponseId: ""
490
622
  };
491
623
  }
492
- function Ue(e) {
624
+ function qe(e) {
493
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 : "";
494
626
  }
495
- function K(e) {
627
+ function J(e) {
496
628
  return e == null ? "" : typeof e == "string" ? e : typeof e == "object" ? JSON.stringify(e, null, 2) : String(e);
497
629
  }
498
- function q(...e) {
630
+ function Y(...e) {
499
631
  for (let t of e) {
500
- let e = Ue(t);
632
+ let e = qe(t);
501
633
  if (e) return e;
502
634
  }
503
635
  return "";
504
636
  }
505
- function We(e, t) {
637
+ function Je(e, t) {
506
638
  return String(e?.id || e?.item_id || e?.call_id || t?.item_id || t?.call_id || t?.output_index || "");
507
639
  }
508
- function Ge(e, t, n, r, i) {
640
+ function Ye(e, t, n, r, i) {
509
641
  t && (e.toolNames.set(t, r), e.toolArguments.set(t, i));
510
642
  let a = String(n?.call_id || "");
511
643
  a && (e.callIds.set(a, t || r), e.toolNames.set(a, r), e.toolArguments.set(a, i));
512
644
  }
513
- function Ke(e, t, n, r = "tool") {
645
+ function Xe(e, t, n, r = "tool") {
514
646
  let i = String(n?.call_id || "");
515
647
  return String(n?.name || n?.tool_name || (t ? e.toolNames.get(t) : "") || (i ? e.toolNames.get(i) : "") || r);
516
648
  }
517
- function qe(e) {
649
+ function Ze(e) {
518
650
  if (!e || typeof e != "object") return "";
519
- let t = Ue(e.content);
520
- return q(e.output_text, e.text, e.summary_text, e.summary, e.delta, t);
651
+ let t = qe(e.content);
652
+ return Y(e.output_text, e.text, e.summary_text, e.summary, e.delta, t);
521
653
  }
522
- function Je(e) {
523
- let t = e?.response && typeof e.response == "object" ? e.response : e, n = q(t?.output_text, t?.text);
654
+ function Qe(e) {
655
+ let t = e?.response && typeof e.response == "object" ? e.response : e, n = Y(t?.output_text, t?.text);
524
656
  if (n) return n;
525
657
  let r = Array.isArray(t?.output) ? t.output : [];
526
658
  for (let e of r) {
527
- let t = qe(e);
659
+ let t = Ze(e);
528
660
  if (t) return t;
529
661
  }
530
662
  return "";
531
663
  }
532
- function Ye(e) {
664
+ function $e(e) {
533
665
  let t = e?.response && typeof e.response == "object" ? e.response : e;
534
666
  return Array.isArray(t?.output) ? t.output : [];
535
667
  }
536
- function Xe({ data: e, state: t, status: n }) {
537
- let r = e?.item || e?.output_item || e || {}, i = String(r.type || "").trim(), a = We(r, e);
668
+ function et({ data: e, state: t, status: n }) {
669
+ let r = e?.item || e?.output_item || e || {}, i = String(r.type || "").trim(), a = Je(r, e);
538
670
  if (i === "function_call") {
539
- let e = Ke(t, a, r), i = K(r.arguments ?? r.args ?? r.input);
540
- return Ge(t, a, r, e, i), [{
671
+ let e = Xe(t, a, r), i = J(r.arguments ?? r.args ?? r.input);
672
+ return Ye(t, a, r, e, i), [{
541
673
  type: "tool_upsert",
542
674
  name: e,
543
675
  args: i,
@@ -546,27 +678,27 @@ function Xe({ data: e, state: t, status: n }) {
546
678
  }
547
679
  if (i === "function_call_output") return [{
548
680
  type: "tool_result",
549
- name: Ke(t, a, r),
550
- output: K(r.output ?? r.result ?? r.content)
681
+ name: Xe(t, a, r),
682
+ output: J(r.output ?? r.result ?? r.content)
551
683
  }];
552
684
  if (i === "mcp_approval_request") return [{
553
685
  type: "tool_upsert",
554
686
  name: String(r.name || "approval"),
555
- args: K(r.arguments ?? r.args),
687
+ args: J(r.arguments ?? r.args),
556
688
  status: "paused",
557
689
  approvalRequestId: String(r.id || r.approval_request_id || ""),
558
690
  previousResponseId: String(e?.response_id || t.currentResponseId || ""),
559
691
  serverLabel: String(r.server_label || "")
560
692
  }];
561
693
  if (i === "reasoning" || i === "reasoning_summary" || i === "reasoning_summary_text") {
562
- let e = qe(r);
694
+ let e = Ze(r);
563
695
  return e ? [{
564
696
  type: "reasoning_delta",
565
697
  text: e
566
698
  }] : [];
567
699
  }
568
700
  if (i === "message") {
569
- let e = qe(r);
701
+ let e = Ze(r);
570
702
  return e ? [{
571
703
  type: n === "completed" ? "text_final" : "text_delta",
572
704
  text: e
@@ -574,31 +706,31 @@ function Xe({ data: e, state: t, status: n }) {
574
706
  }
575
707
  return [];
576
708
  }
577
- function Ze({ eventName: e, data: t, state: n }) {
709
+ function tt({ eventName: e, data: t, state: n }) {
578
710
  let r = String(t?.type || e || "").trim(), i = String(t?.id || t?.response?.id || t?.response_id || "");
579
711
  if (i.startsWith("resp_") && (n.currentResponseId = i), r === "response.tool_call") return [{
580
712
  type: "tool_upsert",
581
713
  name: String(t?.name || t?.tool_name || "tool"),
582
- args: K(t?.args ?? t?.arguments),
714
+ args: J(t?.args ?? t?.arguments),
583
715
  status: "running"
584
716
  }];
585
717
  if (r === "response.tool_result" || r === "response.ksadk.tool_result") return [{
586
718
  type: "tool_result",
587
719
  name: String(t?.name || t?.tool_name || "tool"),
588
- output: K(t?.output ?? t?.result)
720
+ output: J(t?.output ?? t?.result)
589
721
  }];
590
- if (r === "response.output_item.added") return Xe({
722
+ if (r === "response.output_item.added") return et({
591
723
  data: t,
592
724
  state: n,
593
725
  status: "running"
594
726
  });
595
- if (r === "response.output_item.done") return Xe({
727
+ if (r === "response.output_item.done") return et({
596
728
  data: t,
597
729
  state: n,
598
730
  status: "completed"
599
731
  });
600
732
  if (r === "response.function_call_arguments.delta") {
601
- let e = String(t?.item_id || t?.call_id || ""), r = Ke(n, e, t), i = `${n.toolArguments.get(e) || ""}${String(t?.delta || "")}`;
733
+ let e = String(t?.item_id || t?.call_id || ""), r = Xe(n, e, t), i = `${n.toolArguments.get(e) || ""}${String(t?.delta || "")}`;
602
734
  return n.toolArguments.set(e, i), [{
603
735
  type: "tool_upsert",
604
736
  name: r,
@@ -607,7 +739,7 @@ function Ze({ eventName: e, data: t, state: n }) {
607
739
  }];
608
740
  }
609
741
  if (r === "response.function_call_arguments.done") {
610
- let e = String(t?.item_id || t?.call_id || ""), r = Ke(n, e, t), i = K(t?.arguments ?? n.toolArguments.get(e));
742
+ let e = String(t?.item_id || t?.call_id || ""), r = Xe(n, e, t), i = J(t?.arguments ?? n.toolArguments.get(e));
611
743
  return n.toolArguments.set(e, i), [{
612
744
  type: "tool_upsert",
613
745
  name: r,
@@ -616,28 +748,28 @@ function Ze({ eventName: e, data: t, state: n }) {
616
748
  }];
617
749
  }
618
750
  if (r === "response.reasoning.delta" || r === "response.reasoning_text.delta" || r === "response.reasoning_summary.delta" || r === "response.reasoning_summary_text.delta") {
619
- let e = q(t?.delta, t?.text);
751
+ let e = Y(t?.delta, t?.text);
620
752
  return e ? [{
621
753
  type: "reasoning_delta",
622
754
  text: e
623
755
  }] : [];
624
756
  }
625
757
  if (r === "response.output_text.delta") {
626
- let e = q(t?.delta, t?.text);
758
+ let e = Y(t?.delta, t?.text);
627
759
  return e ? [{
628
760
  type: "text_delta",
629
761
  text: e
630
762
  }] : [];
631
763
  }
632
764
  if (r === "response.output_text.done") {
633
- let e = q(t?.text, t?.delta);
765
+ let e = Y(t?.text, t?.delta);
634
766
  return e ? [{
635
767
  type: "text_final",
636
768
  text: e
637
769
  }] : [];
638
770
  }
639
771
  if (r === "response.content_part.delta") {
640
- let e = String(t?.part?.type || t?.delta?.type || t?.content_type || ""), n = q(t?.delta?.text, t?.delta, t?.text);
772
+ let e = String(t?.part?.type || t?.delta?.type || t?.content_type || ""), n = Y(t?.delta?.text, t?.delta, t?.text);
641
773
  return n ? e.includes("reasoning") ? [{
642
774
  type: "reasoning_delta",
643
775
  text: n
@@ -647,7 +779,7 @@ function Ze({ eventName: e, data: t, state: n }) {
647
779
  }] : [];
648
780
  }
649
781
  if (r === "response.completed") {
650
- let e = Je(t), r = Ye(t).flatMap((e) => Xe({
782
+ let e = Qe(t), r = $e(t).flatMap((e) => et({
651
783
  data: {
652
784
  ...t,
653
785
  item: e
@@ -698,13 +830,13 @@ function Ze({ eventName: e, data: t, state: n }) {
698
830
  }
699
831
  //#endregion
700
832
  //#region src/core/stream/responses-protocol.ts
701
- var Qe = class {
833
+ var nt = class {
702
834
  id = "responses";
703
835
  createState() {
704
- return He();
836
+ return Ke();
705
837
  }
706
838
  parse(e, t) {
707
- return Ze({
839
+ return tt({
708
840
  eventName: e.eventName,
709
841
  data: e.data,
710
842
  state: t
@@ -726,23 +858,23 @@ var Qe = class {
726
858
  };
727
859
  //#endregion
728
860
  //#region src/utils/stream-parsing.ts
729
- function $e(e) {
861
+ function rt(e) {
730
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("") : "";
731
863
  }
732
- function et(e) {
864
+ function it(e) {
733
865
  return e && typeof e == "object" ? e : {};
734
866
  }
735
- function tt(e) {
736
- let t = et(e).choices, n = et(Array.isArray(t) ? t[0] : null), r = et(n.delta), i = et(n.message);
867
+ function at(e) {
868
+ let t = it(e).choices, n = it(Array.isArray(t) ? t[0] : null), r = it(n.delta), i = it(n.message);
737
869
  return {
738
- content: $e(r.content),
739
- reasoning: $e(r.reasoning_content),
740
- finalText: $e(i.content)
870
+ content: rt(r.content),
871
+ reasoning: rt(r.reasoning_content),
872
+ finalText: rt(i.content)
741
873
  };
742
874
  }
743
875
  //#endregion
744
876
  //#region src/core/stream/chat-completions-protocol.ts
745
- var nt = class {
877
+ var ot = class {
746
878
  id = "chat_completions";
747
879
  createState() {
748
880
  return {};
@@ -750,7 +882,7 @@ var nt = class {
750
882
  parse(e) {
751
883
  let t = e.data;
752
884
  if (typeof t != "object" || !t) return [];
753
- let n = tt(t), r = [];
885
+ let n = at(t), r = [];
754
886
  return n.reasoning && r.push({
755
887
  type: "reasoning_delta",
756
888
  text: n.reasoning
@@ -762,14 +894,14 @@ var nt = class {
762
894
  text: n.finalText
763
895
  }), r;
764
896
  }
765
- }, rt = /* @__PURE__ */ new Map();
766
- rt.set("responses", new Qe()), rt.set("chat_completions", new nt());
767
- function it(e) {
768
- return rt.get(e) || rt.get("responses");
897
+ }, st = /* @__PURE__ */ new Map();
898
+ st.set("responses", new nt()), st.set("chat_completions", new ot());
899
+ function ct(e) {
900
+ return st.get(e) || st.get("responses");
769
901
  }
770
902
  //#endregion
771
903
  //#region src/utils/stream-control.js
772
- function at(e = []) {
904
+ function lt(e = []) {
773
905
  return e.some((e) => {
774
906
  if (e?.type !== "terminal") return !1;
775
907
  let t = String(e.status || "").toLowerCase();
@@ -778,7 +910,7 @@ function at(e = []) {
778
910
  }
779
911
  //#endregion
780
912
  //#region src/core/transport/sse-parser.ts
781
- function ot(e) {
913
+ function ut(e) {
782
914
  let t = [], n = e.trim();
783
915
  if (!n) return t;
784
916
  let r = n.split("\n");
@@ -808,7 +940,7 @@ function ot(e) {
808
940
  }
809
941
  return t;
810
942
  }
811
- function st(e) {
943
+ function dt(e) {
812
944
  let t = e.split("\n\n");
813
945
  return {
814
946
  chunks: t,
@@ -817,21 +949,21 @@ function st(e) {
817
949
  }
818
950
  //#endregion
819
951
  //#region src/utils/error.ts
820
- function ct(e) {
952
+ function ft(e) {
821
953
  return e instanceof Error ? e.message : String(e);
822
954
  }
823
- var lt = 1280;
824
- function ut(e) {
955
+ var pt = 1280;
956
+ function mt(e) {
825
957
  let { apiFormats: t } = e;
826
958
  return t.includes("responses") ? "responses" : t.includes("chat_completions") ? "chat_completions" : "responses";
827
959
  }
828
- function dt(e, t, n) {
829
- let r = Math.min(lt, Math.max(420, t - n - 360));
960
+ function ht(e, t, n) {
961
+ let r = Math.min(pt, Math.max(420, t - n - 360));
830
962
  return Math.min(Math.max(e, 420), r);
831
963
  }
832
964
  //#endregion
833
965
  //#region src/core/run/engine.ts
834
- var ft = new Set([
966
+ var gt = new Set([
835
967
  "completed",
836
968
  "failed",
837
969
  "error",
@@ -839,12 +971,12 @@ var ft = new Set([
839
971
  "canceled",
840
972
  "aborted"
841
973
  ]);
842
- function pt(e) {
974
+ function _t(e) {
843
975
  if (e.EventType !== "run_status") return null;
844
976
  let t = String(e.Content?.status || "").trim().toLowerCase();
845
- return ft.has(t) ? t : null;
977
+ return gt.has(t) ? t : null;
846
978
  }
847
- function mt(e, t) {
979
+ function vt(e, t) {
848
980
  let n = String(t?.type || e || "").trim();
849
981
  if (n === "response.created") return {
850
982
  phase: "运行已创建",
@@ -890,11 +1022,11 @@ function mt(e, t) {
890
1022
  status: "failed"
891
1023
  } : null;
892
1024
  }
893
- function ht() {
1025
+ function yt() {
894
1026
  let e = globalThis.crypto;
895
1027
  return e && typeof e.randomUUID == "function" ? `run_${e.randomUUID()}` : `run_${Date.now()}_${Math.random().toString(16).slice(2)}`;
896
1028
  }
897
- var gt = {
1029
+ var bt = {
898
1030
  idle: [
899
1031
  "creating-session",
900
1032
  "uploading-files",
@@ -932,7 +1064,7 @@ var gt = {
932
1064
  ],
933
1065
  error: ["connecting", "idle"],
934
1066
  cancelled: ["idle"]
935
- }, _t = class {
1067
+ }, xt = class {
936
1068
  _stage = "idle";
937
1069
  listeners = /* @__PURE__ */ new Set();
938
1070
  abortController = null;
@@ -966,7 +1098,7 @@ var gt = {
966
1098
  for (let e of this.listeners) e(t);
967
1099
  }
968
1100
  setStage(e) {
969
- let t = gt[this._stage];
1101
+ let t = bt[this._stage];
970
1102
  t && !t.includes(e) && console.warn(`[RunEngine] Invalid transition: ${this._stage} → ${e}`), this._stage = e, this.emit({
971
1103
  type: "stage_changed",
972
1104
  stage: e
@@ -993,11 +1125,11 @@ var gt = {
993
1125
  status: "connecting",
994
1126
  countEvent: !1
995
1127
  });
996
- let a = t ? "responses" : ut({
1128
+ let a = t ? "responses" : mt({
997
1129
  agentFramework: this.config.agentFramework,
998
1130
  apiFormats: this.config.apiFormats
999
- }), o = it(a), s = o.createState(), c = ht();
1000
- F.getState().setCurrentRunId(c);
1131
+ }), o = ct(a), s = o.createState(), c = yt();
1132
+ I.getState().setCurrentRunId(c);
1001
1133
  let l = this.buildRequestBody(n, a, t, e, i, c), u = await this.api.runAgent(l, { signal: this.abortController?.signal });
1002
1134
  this.setStage("streaming"), this.emit({
1003
1135
  type: "activity",
@@ -1024,7 +1156,7 @@ var gt = {
1024
1156
  f.terminalStatus = (await this.consumeStream(e, o, s, t)).terminalStatus;
1025
1157
  }
1026
1158
  if (f.terminalStatus === "cancelled") {
1027
- this.setStage("stopping"), F.getState().stopActivity("运行时已取消本次执行。"), this.emit({
1159
+ this.setStage("stopping"), I.getState().stopActivity("运行时已取消本次执行。"), this.emit({
1028
1160
  type: "activity",
1029
1161
  phase: "运行已取消",
1030
1162
  status: "stopped",
@@ -1058,18 +1190,18 @@ var gt = {
1058
1190
  error: e instanceof Error ? e : Error(String(e))
1059
1191
  })));
1060
1192
  } finally {
1061
- F.getState().setStreaming(!1), this.setStage("idle"), this.activeCompactionId = null, this.activeSessionId = null, e.onSettled?.(n);
1193
+ I.getState().setStreaming(!1), this.setStage("idle"), this.activeCompactionId = null, this.activeSessionId = null, e.onSettled?.(n);
1062
1194
  }
1063
1195
  })(), !0;
1064
1196
  }
1065
1197
  stop() {
1066
- this._stage !== "idle" && (this.setStage("stopping"), this.abortController?.abort(), F.getState().stopActivity(), F.getState().setCurrentRunId(""), this.setStage("cancelled"), this.emit({
1198
+ this._stage !== "idle" && (this.setStage("stopping"), this.abortController?.abort(), I.getState().stopActivity(), I.getState().setCurrentRunId(""), this.setStage("cancelled"), this.emit({
1067
1199
  type: "system_message",
1068
1200
  content: "已停止接收本次输出;如果运行时不支持取消,后台执行可能仍会继续。"
1069
1201
  }));
1070
1202
  }
1071
1203
  disconnect() {
1072
- this._stage !== "idle" && (this.abortController?.abort(), F.getState().setStreaming(!1), F.getState().clearActivity(), this._stage = "idle", this.activeCompactionId = null, this.activeSessionId = null);
1204
+ this._stage !== "idle" && (this.abortController?.abort(), I.getState().setStreaming(!1), I.getState().clearActivity(), this._stage = "idle", this.activeCompactionId = null, this.activeSessionId = null);
1073
1205
  }
1074
1206
  async cancelRemote(e) {
1075
1207
  try {
@@ -1080,7 +1212,7 @@ var gt = {
1080
1212
  this.stop();
1081
1213
  }
1082
1214
  resumeRun(e) {
1083
- this.abortController?.abort(), this.abortController = new AbortController(), this.activeSessionId = e.sessionId, F.getState().setCurrentRunId(e.invocationId), this.setStage("connecting"), this.emit({
1215
+ this.abortController?.abort(), this.abortController = new AbortController(), this.activeSessionId = e.sessionId, I.getState().setCurrentRunId(e.invocationId), this.setStage("connecting"), this.emit({
1084
1216
  type: "activity",
1085
1217
  phase: "恢复运行事件订阅",
1086
1218
  status: "connecting",
@@ -1104,11 +1236,11 @@ var gt = {
1104
1236
  let { value: e, done: n } = await r.read();
1105
1237
  if (n) break;
1106
1238
  a += i.decode(e, { stream: !0 });
1107
- let { chunks: o, remainder: s } = st(a);
1239
+ let { chunks: o, remainder: s } = dt(a);
1108
1240
  a = s;
1109
1241
  for (let e of o) {
1110
1242
  if (!e.trim()) continue;
1111
- let n = ot(e);
1243
+ let n = ut(e);
1112
1244
  for (let e of n) e.eventName !== "__done__" && (this.emit({
1113
1245
  type: "activity",
1114
1246
  phase: "收到恢复事件",
@@ -1116,7 +1248,7 @@ var gt = {
1116
1248
  }), this.emit({
1117
1249
  type: "stream_event",
1118
1250
  event: e.data
1119
- }), t = pt(e.data) || t);
1251
+ }), t = _t(e.data) || t);
1120
1252
  }
1121
1253
  }
1122
1254
  this.setStage("completing"), t === "cancelled" || t === "canceled" || t === "aborted" ? this.emit({
@@ -1138,15 +1270,15 @@ var gt = {
1138
1270
  } catch (e) {
1139
1271
  e instanceof DOMException && e.name === "AbortError" || console.error("Failed to subscribe to run events:", e);
1140
1272
  } finally {
1141
- F.getState().setStreaming(!1), F.getState().setCurrentRunId(""), this.setStage("idle"), this.activeSessionId = null;
1273
+ I.getState().setStreaming(!1), I.getState().setCurrentRunId(""), this.setStage("idle"), this.activeSessionId = null;
1142
1274
  }
1143
1275
  })();
1144
1276
  }
1145
1277
  resumeCheckpoint(e) {
1146
1278
  if (this._stage !== "idle") return !1;
1147
1279
  this.abortController = new AbortController(), this.activeSessionId = e.sessionId;
1148
- let t = ht();
1149
- return F.getState().setCurrentRunId(t), (async () => {
1280
+ let t = yt();
1281
+ return I.getState().setCurrentRunId(t), (async () => {
1150
1282
  try {
1151
1283
  if (this.setStage("connecting"), this.emit({
1152
1284
  type: "activity",
@@ -1178,7 +1310,7 @@ var gt = {
1178
1310
  checkpointId: e.checkpointId,
1179
1311
  resumeAttemptId: e.resumeAttemptId,
1180
1312
  invocationId: t
1181
- }, { signal: this.abortController?.signal }), r = it("responses"), i = r.createState();
1313
+ }, { signal: this.abortController?.signal }), r = ct("responses"), i = r.createState();
1182
1314
  this.setStage("streaming"), this.emit({
1183
1315
  type: "activity",
1184
1316
  source: "restore",
@@ -1189,7 +1321,7 @@ var gt = {
1189
1321
  let a = `msg-${Date.now()}`, o = await this.consumeStream(n, r, i, a);
1190
1322
  if (o.terminalStatus && o.terminalStatus !== "completed") {
1191
1323
  if (o.terminalStatus === "cancelled") {
1192
- this.setStage("stopping"), F.getState().stopActivity("运行时已取消本次恢复。"), this.emit({
1324
+ this.setStage("stopping"), I.getState().stopActivity("运行时已取消本次恢复。"), this.emit({
1193
1325
  type: "activity",
1194
1326
  source: "restore",
1195
1327
  phase: "恢复已取消",
@@ -1220,7 +1352,7 @@ var gt = {
1220
1352
  error: e instanceof Error ? e : Error(String(e))
1221
1353
  }));
1222
1354
  } finally {
1223
- F.getState().setStreaming(!1), F.getState().setCurrentRunId(""), this.setStage("idle"), this.activeSessionId = null, e.onSettled?.(e.sessionId);
1355
+ I.getState().setStreaming(!1), I.getState().setCurrentRunId(""), this.setStage("idle"), this.activeSessionId = null, e.onSettled?.(e.sessionId);
1224
1356
  }
1225
1357
  })(), !0;
1226
1358
  }
@@ -1254,7 +1386,7 @@ var gt = {
1254
1386
  } catch (e) {
1255
1387
  this.emit({
1256
1388
  type: "system_message",
1257
- content: `【系统提示】图片 ${t.name} 读取失败,原因: ${ct(e)}`
1389
+ content: `【系统提示】图片 ${t.name} 读取失败,原因: ${ft(e)}`
1258
1390
  });
1259
1391
  }
1260
1392
  continue;
@@ -1271,7 +1403,7 @@ var gt = {
1271
1403
  } catch (e) {
1272
1404
  this.emit({
1273
1405
  type: "system_message",
1274
- content: `【系统提示】文件 ${t.name} 上传失败,原因: ${ct(e)}`
1406
+ content: `【系统提示】文件 ${t.name} 上传失败,原因: ${ft(e)}`
1275
1407
  });
1276
1408
  }
1277
1409
  }
@@ -1290,7 +1422,7 @@ var gt = {
1290
1422
  Stream: !0,
1291
1423
  ApiFormat: t,
1292
1424
  Model: this.config.selectedModel || void 0,
1293
- ModelOptions: De(Ee(this.config.thinkingMode))
1425
+ ModelOptions: Ne(Me(this.config.thinkingMode))
1294
1426
  };
1295
1427
  if (n) o.ResponsesInput = r.responsesInput, o.PreviousResponseId = r.previousResponseId;
1296
1428
  else {
@@ -1318,32 +1450,32 @@ var gt = {
1318
1450
  type: "assistant_message_created",
1319
1451
  messageId: r
1320
1452
  })), o += a.decode(e, { stream: !0 });
1321
- let { chunks: u, remainder: d } = st(o);
1453
+ let { chunks: u, remainder: d } = dt(o);
1322
1454
  o = d;
1323
1455
  for (let e of u) {
1324
1456
  if (!e.trim()) continue;
1325
1457
  if (this.isCompactionChunk(e)) {
1326
- let t = ot(e);
1458
+ let t = ut(e);
1327
1459
  for (let e of t) e.eventName.startsWith("response.compaction") && this.upsertCompactionMessage({
1328
1460
  ...e.data,
1329
1461
  phase: e.eventName.split(".").pop()
1330
1462
  });
1331
1463
  continue;
1332
1464
  }
1333
- let a = ot(e), o = !1, c;
1465
+ let a = ut(e), o = !1, c;
1334
1466
  for (let e of a) {
1335
1467
  if (e.eventName === "__done__") {
1336
1468
  o = !0;
1337
1469
  continue;
1338
1470
  }
1339
- let i = mt(e.eventName, e.data);
1471
+ let i = vt(e.eventName, e.data);
1340
1472
  i && this.emit({
1341
1473
  type: "activity",
1342
1474
  ...i
1343
1475
  });
1344
1476
  let a = t.parse(e, n);
1345
1477
  for (let e of a) this.dispatchAction(e, r);
1346
- if (at(a)) {
1478
+ if (lt(a)) {
1347
1479
  o = !0;
1348
1480
  let e = a.find((e) => e.type === "terminal");
1349
1481
  c = e && "status" in e ? String(e.status || "") : void 0;
@@ -1454,98 +1586,98 @@ var gt = {
1454
1586
  phase: "failed"
1455
1587
  }), null);
1456
1588
  }
1457
- }, vt = [], yt = [];
1458
- function J(e) {
1589
+ }, St = [], Ct = [];
1590
+ function X(e) {
1459
1591
  return typeof e == "string" ? e.trim() : "";
1460
1592
  }
1461
- function bt(e) {
1593
+ function wt(e) {
1462
1594
  let t = typeof e == "number" ? e : Number(e);
1463
1595
  return Number.isFinite(t) ? t : void 0;
1464
1596
  }
1465
- function xt(e) {
1597
+ function Tt(e) {
1466
1598
  return typeof e == "string" || typeof e == "number" ? e : void 0;
1467
1599
  }
1468
- function Y(e) {
1600
+ function Et(e) {
1469
1601
  return e && typeof e == "object" && !Array.isArray(e) ? e : void 0;
1470
1602
  }
1471
- function St(e) {
1603
+ function Dt(e) {
1472
1604
  return e !== null;
1473
1605
  }
1474
- function Ct(e) {
1606
+ function Ot(e) {
1475
1607
  return e !== null;
1476
1608
  }
1477
- function wt(e) {
1609
+ function kt(e) {
1478
1610
  return [...e].sort((e, t) => {
1479
1611
  let n = t.seqId ?? -1, r = e.seqId ?? -1;
1480
1612
  return n === r ? (Date.parse(String(t.timestamp || "")) || 0) - (Date.parse(String(e.timestamp || "")) || 0) : n - r;
1481
1613
  });
1482
1614
  }
1483
- function Tt(e) {
1615
+ function At(e) {
1484
1616
  return [...e].sort((e, t) => {
1485
1617
  let n = t.seqId ?? -1, r = e.seqId ?? -1;
1486
1618
  return n === r ? (Date.parse(String(t.timestamp || "")) || 0) - (Date.parse(String(e.timestamp || "")) || 0) : n - r;
1487
1619
  });
1488
1620
  }
1489
- function Et(e) {
1490
- return wt(e)[0]?.runId || "";
1621
+ function jt(e) {
1622
+ return kt(e)[0]?.runId || "";
1491
1623
  }
1492
- function Dt(e) {
1493
- let t = Et(e);
1624
+ function Mt(e) {
1625
+ let t = jt(e);
1494
1626
  return t ? e.filter((e) => e.runId === t) : [];
1495
1627
  }
1496
- function Ot(e) {
1497
- let t = Y(e);
1628
+ function Nt(e) {
1629
+ let t = Et(e);
1498
1630
  if (!t) return null;
1499
- let n = Y(t.Metadata ?? t.metadata), r = Y(t.Content ?? t.content), i = J(t.CheckpointId ?? t.checkpointId ?? t.checkpoint_id ?? n?.checkpoint_id ?? n?.checkpointId ?? r?.checkpoint_id ?? r?.checkpointId), a = J(t.RunId ?? t.runId ?? t.run_id ?? n?.run_id ?? n?.runId ?? r?.run_id ?? r?.runId);
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);
1500
1632
  return !i || !a ? null : {
1501
1633
  checkpointId: i,
1502
1634
  runId: a,
1503
- sessionId: J(t.SessionId ?? t.sessionId ?? t.session_id) || void 0,
1504
- invocationId: J(t.InvocationId ?? t.invocationId ?? t.invocation_id) || void 0,
1505
- seqId: bt(t.SeqId ?? t.seqId ?? t.seq_id),
1506
- timestamp: xt(t.Timestamp ?? t.timestamp ?? t.CreatedAt ?? t.createdAt),
1507
- framework: J(t.Framework ?? t.framework ?? n?.framework ?? r?.framework) || void 0,
1508
- frameworkRef: Y(t.FrameworkRef ?? t.frameworkRef ?? t.framework_ref ?? n?.framework_ref ?? n?.frameworkRef),
1509
- phase: J(t.Phase ?? t.phase ?? n?.phase ?? r?.phase) || void 0,
1510
- stage: J(t.Stage ?? t.stage ?? n?.stage ?? n?.title) || void 0,
1511
- summary: J(t.Summary ?? t.summary ?? n?.summary ?? n?.description) || void 0,
1512
- nextAction: J(t.NextAction ?? t.nextAction ?? t.next_action ?? n?.nextAction ?? n?.next_action) || void 0,
1513
- status: J(t.Status ?? t.status ?? n?.status ?? r?.status) || void 0,
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,
1514
1646
  metadata: n
1515
1647
  };
1516
1648
  }
1517
- function kt(e) {
1518
- let t = Y(e);
1649
+ function Pt(e) {
1650
+ let t = Et(e);
1519
1651
  if (!t) return null;
1520
- let n = J(t.ReceiptId ?? t.receiptId ?? t.receipt_id), r = J(t.IdempotencyKey ?? t.idempotencyKey ?? t.idempotency_key), i = J(t.ToolName ?? t.toolName ?? t.tool_name);
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);
1521
1653
  return !n || !r || !i ? null : {
1522
1654
  receiptId: n,
1523
1655
  idempotencyKey: r,
1524
1656
  toolName: i,
1525
- toolCallId: J(t.ToolCallId ?? t.toolCallId ?? t.tool_call_id) || void 0,
1526
- runId: J(t.RunId ?? t.runId ?? t.run_id) || void 0,
1527
- checkpointId: J(t.CheckpointId ?? t.checkpointId ?? t.checkpoint_id) || void 0,
1528
- sessionId: J(t.SessionId ?? t.sessionId ?? t.session_id) || void 0,
1529
- invocationId: J(t.InvocationId ?? t.invocationId ?? t.invocation_id) || void 0,
1530
- seqId: bt(t.SeqId ?? t.seqId ?? t.seq_id),
1531
- timestamp: xt(t.Timestamp ?? t.timestamp ?? t.CreatedAt ?? t.createdAt),
1532
- status: J(t.Status ?? t.status) || void 0,
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,
1533
1665
  replayed: !!(t.Replayed ?? t.replayed),
1534
- metadata: Y(t.Metadata ?? t.metadata)
1666
+ metadata: Et(t.Metadata ?? t.metadata)
1535
1667
  };
1536
1668
  }
1537
- var X = M()((e, t) => ({
1669
+ var Z = N()((e, t) => ({
1538
1670
  checkpointsBySessionId: {},
1539
1671
  toolReceiptsBySessionId: {},
1540
1672
  setSessionCheckpoints: (t, n) => e((e) => ({ checkpointsBySessionId: {
1541
1673
  ...e.checkpointsBySessionId,
1542
- [t]: wt(Dt(n.map(Ot).filter(St).map((e) => ({
1674
+ [t]: kt(Mt(n.map(Nt).filter(Dt).map((e) => ({
1543
1675
  ...e,
1544
1676
  sessionId: e.sessionId || t
1545
1677
  }))))
1546
1678
  } })),
1547
1679
  upsertSessionCheckpoint: (t, n) => {
1548
- let r = Ot(n);
1680
+ let r = Nt(n);
1549
1681
  r && e((e) => {
1550
1682
  let n = e.checkpointsBySessionId[t] || [];
1551
1683
  r.sessionId = r.sessionId || t;
@@ -1554,27 +1686,27 @@ var X = M()((e, t) => ({
1554
1686
  ...i.get(r.checkpointId),
1555
1687
  ...r
1556
1688
  });
1557
- let a = Dt([...i.values()]);
1689
+ let a = Mt([...i.values()]);
1558
1690
  return { checkpointsBySessionId: {
1559
1691
  ...e.checkpointsBySessionId,
1560
- [t]: wt(a)
1692
+ [t]: kt(a)
1561
1693
  } };
1562
1694
  });
1563
1695
  },
1564
1696
  getSessionCheckpoints: (e) => {
1565
1697
  let n = String(e || "");
1566
- return n && t().checkpointsBySessionId[n] || vt;
1698
+ return n && t().checkpointsBySessionId[n] || St;
1567
1699
  },
1568
1700
  setSessionToolReceipts: (t, n) => e((e) => ({ toolReceiptsBySessionId: {
1569
1701
  ...e.toolReceiptsBySessionId,
1570
- [t]: Tt(n.map(kt).filter(Ct).map((e) => ({
1702
+ [t]: At(n.map(Pt).filter(Ot).map((e) => ({
1571
1703
  ...e,
1572
1704
  sessionId: e.sessionId || t
1573
1705
  })))
1574
1706
  } })),
1575
1707
  getSessionToolReceipts: (e) => {
1576
1708
  let n = String(e || "");
1577
- return n && t().toolReceiptsBySessionId[n] || yt;
1709
+ return n && t().toolReceiptsBySessionId[n] || Ct;
1578
1710
  },
1579
1711
  clearSessionCheckpoints: (t) => e((e) => {
1580
1712
  let n = String(t || "");
@@ -1582,13 +1714,13 @@ var X = M()((e, t) => ({
1582
1714
  checkpointsBySessionId: {},
1583
1715
  toolReceiptsBySessionId: {}
1584
1716
  };
1585
- let { [n]: r, ...i } = e.checkpointsBySessionId, { [n]: a, ...o } = e.toolReceiptsBySessionId;
1586
- return {
1587
- checkpointsBySessionId: i,
1588
- toolReceiptsBySessionId: o
1717
+ let r = { ...e.checkpointsBySessionId }, i = { ...e.toolReceiptsBySessionId };
1718
+ return delete r[n], delete i[n], {
1719
+ checkpointsBySessionId: r,
1720
+ toolReceiptsBySessionId: i
1589
1721
  };
1590
1722
  })
1591
- })), At = new Set([
1723
+ })), Ft = new Set([
1592
1724
  "completed",
1593
1725
  "failed",
1594
1726
  "error",
@@ -1596,21 +1728,21 @@ var X = M()((e, t) => ({
1596
1728
  "canceled",
1597
1729
  "aborted"
1598
1730
  ]);
1599
- function jt(e) {
1731
+ function It(e) {
1600
1732
  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("") : "";
1601
1733
  }
1602
- function Mt(e) {
1734
+ function Lt(e) {
1603
1735
  let t = String(e || "").trim();
1604
1736
  return t ? `/agentengine/api/v1/AttachmentContent?FileUri=${encodeURIComponent(t)}` : "";
1605
1737
  }
1606
- function Nt(e) {
1738
+ function Rt(e) {
1607
1739
  return String(e || "").match(/^data:([^;,]+)/)?.[1] || "";
1608
1740
  }
1609
- function Pt(e, t) {
1741
+ function zt(e, t) {
1610
1742
  let n = String(e || "").trim(), r = String(t || "").trim();
1611
1743
  return !n || !r || n === r ? !0 : n.endsWith("/*") ? r.startsWith(n.slice(0, -1)) : r.endsWith("/*") ? n.startsWith(r.slice(0, -1)) : !1;
1612
1744
  }
1613
- function Ft(e) {
1745
+ function Bt(e) {
1614
1746
  let t = e?.Content?.parts || [], n = [], r = /* @__PURE__ */ new Map(), i = (e) => {
1615
1747
  let t = `${e.fileUri || e.url || e.name}|${e.type}`;
1616
1748
  r.has(t) || r.set(t, e);
@@ -1640,7 +1772,7 @@ function Ft(e) {
1640
1772
  let t = e.file_url.trim();
1641
1773
  i({
1642
1774
  name: e.filename || e.displayName || e.display_name || "attachment",
1643
- url: Mt(t),
1775
+ url: Lt(t),
1644
1776
  type: e.mime_type || e.mimeType || "application/octet-stream",
1645
1777
  fileUri: t
1646
1778
  });
@@ -1651,7 +1783,7 @@ function Ft(e) {
1651
1783
  t && i({
1652
1784
  name: e.filename || e.displayName || e.display_name || "uploaded_image",
1653
1785
  url: t,
1654
- type: e.mime_type || e.mimeType || Nt(t) || "image/*"
1786
+ type: e.mime_type || e.mimeType || Rt(t) || "image/*"
1655
1787
  });
1656
1788
  continue;
1657
1789
  }
@@ -1659,7 +1791,7 @@ function Ft(e) {
1659
1791
  let t = String(e.fileData.fileUri || "").trim();
1660
1792
  i({
1661
1793
  name: e.fileData.displayName || "attachment",
1662
- url: Mt(t),
1794
+ url: Lt(t),
1663
1795
  type: e.fileData.mimeType || "application/octet-stream",
1664
1796
  fileUri: t
1665
1797
  });
@@ -1669,11 +1801,11 @@ function Ft(e) {
1669
1801
  for (let e of a) {
1670
1802
  let t = String(e.file_uri || "").trim(), n = {
1671
1803
  name: e.display_name || "attachment",
1672
- url: Mt(t),
1804
+ url: Lt(t),
1673
1805
  type: e.mime_type || "application/octet-stream",
1674
1806
  fileUri: t
1675
1807
  };
1676
- !n.url && !n.fileUri && Array.from(r.values()).some((e) => e.name === n.name && Pt(e.type, n.type) && (e.url || e.fileUri)) || i(n);
1808
+ !n.url && !n.fileUri && Array.from(r.values()).some((e) => e.name === n.name && zt(e.type, n.type) && (e.url || e.fileUri)) || i(n);
1677
1809
  }
1678
1810
  let o = Array.from(r.values());
1679
1811
  return {
@@ -1681,10 +1813,10 @@ function Ft(e) {
1681
1813
  attachments: o.length > 0 ? o : void 0
1682
1814
  };
1683
1815
  }
1684
- function It(e) {
1816
+ function Vt(e) {
1685
1817
  let t = e?.Metadata?.responses_output;
1686
1818
  if (!Array.isArray(t)) return {};
1687
- let n = He(), r = Ze({
1819
+ let n = Ke(), r = tt({
1688
1820
  eventName: "response.completed",
1689
1821
  data: { response: {
1690
1822
  id: String(e.Metadata?.response_id || ""),
@@ -1720,7 +1852,7 @@ function It(e) {
1720
1852
  },
1721
1853
  name: e.name,
1722
1854
  output: e.output,
1723
- status: v(e.output) ? "error" : "completed"
1855
+ status: u(e.output) ? "error" : "completed"
1724
1856
  });
1725
1857
  }
1726
1858
  return {
@@ -1728,22 +1860,22 @@ function It(e) {
1728
1860
  ...Object.keys(a).length > 0 ? { tools: a } : {}
1729
1861
  };
1730
1862
  }
1731
- function Lt(e, t, n) {
1863
+ function Ht(e, t, n) {
1732
1864
  return t === "running" ? e === "prompt_too_long" ? "检测到上下文过长,正在自动压缩历史后重试" : "正在自动压缩上下文" : n ? e === "prompt_too_long" ? "上下文过长,系统已自动压缩历史并重试" : "系统已自动压缩较早的对话上下文" : t === "failed" ? "自动压缩上下文未完成" : e === "prompt_too_long" ? "已完成上下文压缩,并继续当前回复" : "已完成上下文压缩";
1733
1865
  }
1734
- function Rt(e, t) {
1866
+ function Ut(e, t) {
1735
1867
  return [
1736
1868
  e,
1737
1869
  t.content || "",
1738
1870
  t.reasoning || ""
1739
1871
  ].join("\0");
1740
1872
  }
1741
- function zt(e) {
1873
+ function Wt(e) {
1742
1874
  return e?.Metadata?.responses_mirror === !0 || String(e?.Metadata?.responses_mirror || "").trim().toLowerCase() === "true";
1743
1875
  }
1744
- function Bt(e) {
1876
+ function Gt(e) {
1745
1877
  if (e?.EventType !== "user_message") return "";
1746
- let t = Ft(e), n = (t.attachments || []).map((e) => [
1878
+ let t = Bt(e), n = (t.attachments || []).map((e) => [
1747
1879
  e.name || "",
1748
1880
  e.fileUri || "",
1749
1881
  e.url || "",
@@ -1751,16 +1883,16 @@ function Bt(e) {
1751
1883
  ].join("")).sort().join("");
1752
1884
  return [String(t.text || "").trim(), n].join("\0");
1753
1885
  }
1754
- function Vt(e) {
1886
+ function Kt(e) {
1755
1887
  return e?.EventType === "assistant_stream_snapshot";
1756
1888
  }
1757
- function Ht(e) {
1889
+ function qt(e) {
1758
1890
  let t = Number(e?.SeqId || 0);
1759
1891
  if (Number.isFinite(t) && t > 0) return t;
1760
1892
  let n = Number(e?.Timestamp || 0);
1761
1893
  return Number.isFinite(n) ? n : 0;
1762
1894
  }
1763
- function Ut(e) {
1895
+ function Jt(e) {
1764
1896
  if (typeof e == "string") return e;
1765
1897
  if (e == null) return "";
1766
1898
  try {
@@ -1769,23 +1901,23 @@ function Ut(e) {
1769
1901
  return String(e);
1770
1902
  }
1771
1903
  }
1772
- function Wt(e) {
1904
+ function Yt(e) {
1773
1905
  let t = String(e?.EventType || "");
1774
1906
  if (t !== "tool_call" && t !== "tool_result") return null;
1775
- let n = String(e.Metadata?.tool_name || e.Metadata?.name || e.Metadata?.function_name || jt(e.Content?.parts) || "tool").trim() || "tool", r = {
1907
+ let n = String(e.Metadata?.tool_name || e.Metadata?.name || e.Metadata?.function_name || It(e.Content?.parts) || "tool").trim() || "tool", r = {
1776
1908
  name: n,
1777
1909
  args: "",
1778
1910
  status: "running"
1779
1911
  }, i = t === "tool_result" ? (() => {
1780
- let t = Ut(e.Metadata?.tool_output ?? e.Metadata?.output ?? e.Metadata?.result ?? jt(e.Content?.parts));
1912
+ let t = Jt(e.Metadata?.tool_output ?? e.Metadata?.output ?? e.Metadata?.result ?? It(e.Content?.parts));
1781
1913
  return {
1782
1914
  ...r,
1783
1915
  output: t,
1784
- status: v(t) ? "error" : "completed"
1916
+ status: u(t) ? "error" : "completed"
1785
1917
  };
1786
1918
  })() : {
1787
1919
  ...r,
1788
- args: Ut(e.Metadata?.tool_args ?? e.Metadata?.arguments ?? e.Metadata?.args ?? {})
1920
+ args: Jt(e.Metadata?.tool_args ?? e.Metadata?.arguments ?? e.Metadata?.args ?? {})
1789
1921
  };
1790
1922
  return {
1791
1923
  id: e.EventId || String(Date.now() + Math.random()),
@@ -1796,7 +1928,7 @@ function Wt(e) {
1796
1928
  tools: { [n]: i }
1797
1929
  };
1798
1930
  }
1799
- function Gt(e = {}, t = {}) {
1931
+ function Xt(e = {}, t = {}) {
1800
1932
  let n = { ...e || {} };
1801
1933
  for (let [e, r] of Object.entries(t || {})) n[e] = {
1802
1934
  ...n[e] || {},
@@ -1806,8 +1938,8 @@ function Gt(e = {}, t = {}) {
1806
1938
  };
1807
1939
  return n;
1808
1940
  }
1809
- function Kt(e = {}, t = "") {
1810
- let n = String(t || "").trim().toLowerCase(), r = n === "completed" ? "completed" : At.has(n) ? "error" : "";
1941
+ function Zt(e = {}, t = "") {
1942
+ let n = String(t || "").trim().toLowerCase(), r = n === "completed" ? "completed" : Ft.has(n) ? "error" : "";
1811
1943
  if (!r) return e;
1812
1944
  let i = !1, a = {};
1813
1945
  for (let [t, n] of Object.entries(e || {})) n?.status === "running" ? (i = !0, a[t] = {
@@ -1816,10 +1948,10 @@ function Kt(e = {}, t = "") {
1816
1948
  }) : a[t] = n;
1817
1949
  return i ? a : e;
1818
1950
  }
1819
- function qt(e, t) {
1951
+ function Qt(e, t) {
1820
1952
  return {
1821
1953
  ...e,
1822
- reasoning: Jt(e.reasoning, t.reasoning),
1954
+ reasoning: $t(e.reasoning, t.reasoning),
1823
1955
  tools: {
1824
1956
  ...e.tools || {},
1825
1957
  ...t.tools || {}
@@ -1832,11 +1964,11 @@ function qt(e, t) {
1832
1964
  id: t.responseId || t.reasoning || t.tools ? t.id : e.id
1833
1965
  };
1834
1966
  }
1835
- function Jt(e = "", t = "") {
1967
+ function $t(e = "", t = "") {
1836
1968
  let n = String(e || ""), r = String(t || "");
1837
1969
  return n ? !r || n.endsWith(r) ? n : r.startsWith(n) ? r : `${n}${r}` : r;
1838
1970
  }
1839
- function Yt(e) {
1971
+ function en(e) {
1840
1972
  return {
1841
1973
  id: e.id,
1842
1974
  role: "system",
@@ -1847,10 +1979,10 @@ function Yt(e) {
1847
1979
  summary: e.summary,
1848
1980
  historical: e.historical,
1849
1981
  timestamp: e.timestamp,
1850
- content: Lt(e.trigger, e.status, e.historical)
1982
+ content: Ht(e.trigger, e.status, e.historical)
1851
1983
  };
1852
1984
  }
1853
- function Xt(e) {
1985
+ function tn(e) {
1854
1986
  let t = e?.EventType || "";
1855
1987
  if (t === "run_status") return e.Content?.status === "failed" ? {
1856
1988
  id: e.EventId || String(Date.now() + Math.random()),
@@ -1868,8 +2000,8 @@ function Xt(e) {
1868
2000
  timestamp: e.Timestamp || Date.now()
1869
2001
  } : null;
1870
2002
  if (t === "context_checkpoint") {
1871
- let t = Ft(e);
1872
- return Yt({
2003
+ let t = Bt(e);
2004
+ return en({
1873
2005
  id: e.EventId || String(Date.now() + Math.random()),
1874
2006
  timestamp: e.Timestamp || Date.now(),
1875
2007
  status: "completed",
@@ -1880,7 +2012,7 @@ function Xt(e) {
1880
2012
  });
1881
2013
  }
1882
2014
  if (t === "reasoning") {
1883
- let n = Ft(e).text || jt(e.Metadata?.reasoning);
2015
+ let n = Bt(e).text || It(e.Metadata?.reasoning);
1884
2016
  return n ? {
1885
2017
  id: e.EventId || String(Date.now() + Math.random()),
1886
2018
  role: "model",
@@ -1890,9 +2022,9 @@ function Xt(e) {
1890
2022
  eventType: t
1891
2023
  } : null;
1892
2024
  }
1893
- if (t === "tool_call" || t === "tool_result") return Wt(e);
2025
+ if (t === "tool_call" || t === "tool_result") return Yt(e);
1894
2026
  if (t !== "user_message" && t !== "assistant_message" && t !== "assistant_stream_snapshot") return null;
1895
- let n = Ft(e), r = t === "assistant_message" ? It(e) : {};
2027
+ let n = Bt(e), r = t === "assistant_message" ? Vt(e) : {};
1896
2028
  if (!n.text && !n.attachments?.length && !r.reasoning && !r.tools) return null;
1897
2029
  let i = String(e.Metadata?.response_id || e.Metadata?.ResponseId || "").trim(), a = String(e.Metadata?.trace_id || e.Metadata?.TraceId || "").trim(), o = String(e.Metadata?.root_span_id || e.Metadata?.rootSpanId || e.Metadata?.RootSpanId || "").trim();
1898
2030
  return {
@@ -1909,7 +2041,7 @@ function Xt(e) {
1909
2041
  ...r
1910
2042
  };
1911
2043
  }
1912
- function Zt(e = []) {
2044
+ function nn(e = []) {
1913
2045
  let t = /* @__PURE__ */ new Map(), n = /* @__PURE__ */ new Map(), r = /* @__PURE__ */ new Set(), i = /* @__PURE__ */ new Set(), a = /* @__PURE__ */ new Set(), o = /* @__PURE__ */ new Set(), s = Array.isArray(e) ? e : [], c = [];
1914
2046
  for (let e of s) {
1915
2047
  let t = String(e?.EventId || "").trim();
@@ -1921,30 +2053,30 @@ function Zt(e = []) {
1921
2053
  }
1922
2054
  let l = /* @__PURE__ */ new Set(), u = /* @__PURE__ */ new Set(), d = /* @__PURE__ */ new Map();
1923
2055
  for (let e of c) {
1924
- if (e?.EventType !== "user_message" || zt(e)) {
2056
+ if (e?.EventType !== "user_message" || Wt(e)) {
1925
2057
  if (e?.EventType === "assistant_message") {
1926
2058
  let t = String(e.InvocationId || "").trim();
1927
2059
  t && u.add(t);
1928
2060
  }
1929
- if (Vt(e)) {
2061
+ if (Kt(e)) {
1930
2062
  let t = String(e.InvocationId || "").trim();
1931
2063
  if (t) {
1932
2064
  let n = d.get(t);
1933
- (!n || Ht(e) >= Ht(n)) && d.set(t, e);
2065
+ (!n || qt(e) >= qt(n)) && d.set(t, e);
1934
2066
  }
1935
2067
  }
1936
2068
  continue;
1937
2069
  }
1938
- let t = Bt(e);
2070
+ let t = Gt(e);
1939
2071
  t && l.add(t);
1940
2072
  }
1941
2073
  let f = c.filter((e) => {
1942
- if (Vt(e)) {
2074
+ if (Kt(e)) {
1943
2075
  let t = String(e.InvocationId || "").trim();
1944
2076
  return t ? u.has(t) ? !1 : d.get(t) === e : !0;
1945
2077
  }
1946
- if (e?.EventType !== "user_message" || !zt(e)) return !0;
1947
- let t = Bt(e);
2078
+ if (e?.EventType !== "user_message" || !Wt(e)) return !0;
2079
+ let t = Gt(e);
1948
2080
  return !t || !l.has(t);
1949
2081
  });
1950
2082
  for (let e of f) {
@@ -1959,21 +2091,21 @@ function Zt(e = []) {
1959
2091
  let p = [], m = /* @__PURE__ */ new Map(), h = null, g = /* @__PURE__ */ new Map(), _ = (e) => {
1960
2092
  let t = String(e?.responseId || "").trim(), n = t ? m.get(t) : void 0;
1961
2093
  if (n !== void 0) {
1962
- p[n] = qt(p[n], e);
2094
+ p[n] = Qt(p[n], e);
1963
2095
  return;
1964
2096
  }
1965
2097
  t && m.set(t, p.length), p.push(e);
1966
2098
  }, v = () => {
1967
2099
  h &&= (_(h), null);
1968
- }, ee = (e) => {
2100
+ }, y = (e) => {
1969
2101
  let n = String(e || "").trim();
1970
2102
  if (!n) return {};
1971
2103
  let r = g.get(n);
1972
- return r ? (g.delete(n), { tools: Kt(r.tools, t.get(n)) }) : {};
2104
+ return r ? (g.delete(n), { tools: Zt(r.tools, t.get(n)) }) : {};
1973
2105
  };
1974
2106
  for (let e of f) {
1975
2107
  if (e.EventType === "run_status") continue;
1976
- let t = Xt(e);
2108
+ let t = tn(e);
1977
2109
  if (!t) continue;
1978
2110
  if (t.eventType === "tool_call" || t.eventType === "tool_result") {
1979
2111
  let n = String(e.InvocationId || "").trim();
@@ -1991,7 +2123,7 @@ function Zt(e = []) {
1991
2123
  invocationId: n
1992
2124
  },
1993
2125
  timestamp: Math.max(Number(r?.timestamp || 0), Number(t.timestamp || 0)),
1994
- tools: Gt(r?.tools, t.tools)
2126
+ tools: Xt(r?.tools, t.tools)
1995
2127
  });
1996
2128
  continue;
1997
2129
  }
@@ -2009,24 +2141,24 @@ function Zt(e = []) {
2009
2141
  }
2010
2142
  let n = t.eventType === "assistant_message" || t.eventType === "assistant_stream_snapshot";
2011
2143
  if (n && h) {
2012
- let n = String(e.InvocationId || "").trim(), r = Rt(n, t);
2144
+ let n = String(e.InvocationId || "").trim(), r = Ut(n, t);
2013
2145
  if (t.eventType === "assistant_message" && n && a.has(r)) {
2014
2146
  h = null;
2015
2147
  continue;
2016
2148
  }
2017
2149
  t.eventType === "assistant_message" && n && a.add(r), _({
2018
2150
  ...t,
2019
- ...ee(n),
2020
- reasoning: Jt(h.reasoning, t.reasoning)
2151
+ ...y(n),
2152
+ reasoning: $t(h.reasoning, t.reasoning)
2021
2153
  }), h = null;
2022
2154
  continue;
2023
2155
  }
2024
2156
  if (v(), n) {
2025
- let n = String(e.InvocationId || "").trim(), r = Rt(n, t);
2157
+ let n = String(e.InvocationId || "").trim(), r = Ut(n, t);
2026
2158
  if (t.eventType === "assistant_message" && n && a.has(r)) continue;
2027
2159
  t.eventType === "assistant_message" && n && a.add(r), _({
2028
2160
  ...t,
2029
- ...ee(n)
2161
+ ...y(n)
2030
2162
  });
2031
2163
  continue;
2032
2164
  }
@@ -2035,7 +2167,7 @@ function Zt(e = []) {
2035
2167
  v();
2036
2168
  for (let [e, n] of g.entries()) _({
2037
2169
  ...n,
2038
- tools: Kt(n.tools, t.get(e))
2170
+ tools: Zt(n.tools, t.get(e))
2039
2171
  });
2040
2172
  for (let [e, a] of t.entries()) {
2041
2173
  if (a !== "in_progress" || r.has(e) || !i.has(e)) continue;
@@ -2051,7 +2183,7 @@ function Zt(e = []) {
2051
2183
  }
2052
2184
  return p.map(({ invocationId: e, ...t }) => t);
2053
2185
  }
2054
- function Qt(e = [], t = []) {
2186
+ function rn(e = [], t = []) {
2055
2187
  let n = [], r = /* @__PURE__ */ new Set();
2056
2188
  for (let i of [...Array.isArray(e) ? e : [], ...Array.isArray(t) ? t : []]) {
2057
2189
  let e = String(i?.EventId || "").trim();
@@ -2066,18 +2198,18 @@ function Qt(e = [], t = []) {
2066
2198
  return Number.isFinite(n) && Number.isFinite(r) && n !== r ? n - r : Number(e?.Timestamp || 0) - Number(t?.Timestamp || 0);
2067
2199
  });
2068
2200
  }
2069
- function $t(e = []) {
2201
+ function an(e = []) {
2070
2202
  return (Array.isArray(e) ? e : []).reduce((e, t) => {
2071
2203
  let n = Number(t.SeqId || 0);
2072
2204
  return Number.isFinite(n) ? Math.max(e, n) : e;
2073
2205
  }, 0);
2074
2206
  }
2075
- function en(e) {
2076
- return e?.EventType === "run_status" ? At.has(String(e.Content?.status || "").trim().toLowerCase()) : !1;
2207
+ function on(e) {
2208
+ return e?.EventType === "run_status" ? Ft.has(String(e.Content?.status || "").trim().toLowerCase()) : !1;
2077
2209
  }
2078
2210
  //#endregion
2079
2211
  //#region src/core/run/dispatcher.ts
2080
- var Z = !1, tn = new Set(["completed"]), nn = new Set([
2212
+ var Q = !1, sn = new Set(["completed"]), cn = new Set([
2081
2213
  "failed",
2082
2214
  "error",
2083
2215
  "cancelled",
@@ -2085,8 +2217,8 @@ var Z = !1, tn = new Set(["completed"]), nn = new Set([
2085
2217
  "aborted",
2086
2218
  "incomplete"
2087
2219
  ]);
2088
- function Q(e) {
2089
- Z || (Z = !0, G.getState().patchMessages((t) => [...t, {
2220
+ function ln(e) {
2221
+ Q || (Q = !0, q.getState().patchMessages((t) => [...t, {
2090
2222
  id: e,
2091
2223
  role: "model",
2092
2224
  content: "",
@@ -2094,9 +2226,9 @@ function Q(e) {
2094
2226
  reasoning: ""
2095
2227
  }]));
2096
2228
  }
2097
- function rn(e) {
2098
- let t = String(e || "").trim().toLowerCase(), n = tn.has(t) ? "completed" : nn.has(t) ? "error" : null;
2099
- n && G.getState().patchMessages((e) => e.map((e) => {
2229
+ function un(e) {
2230
+ 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) => {
2100
2232
  if (!e.tools) return e;
2101
2233
  let t = !1, r = Object.fromEntries(Object.entries(e.tools).map(([e, r]) => r.status === "running" ? (t = !0, [e, {
2102
2234
  ...r,
@@ -2108,15 +2240,15 @@ function rn(e) {
2108
2240
  } : e;
2109
2241
  }));
2110
2242
  }
2111
- function an(e) {
2112
- if (e.sessionId && I.getState().currentSessionId !== e.sessionId) {
2113
- e.type === "stage_changed" && (e.stage === "completing" || e.stage === "error" || e.stage === "cancelled") && (Z = !1);
2243
+ function dn(e) {
2244
+ if (e.sessionId && R.getState().currentSessionId !== e.sessionId) {
2245
+ e.type === "stage_changed" && (e.stage === "completing" || e.stage === "error" || e.stage === "cancelled") && (Q = !1);
2114
2246
  return;
2115
2247
  }
2116
- let t = G.getState();
2248
+ let t = q.getState();
2117
2249
  switch (e.type) {
2118
2250
  case "activity":
2119
- F.getState().updateActivity({
2251
+ I.getState().updateActivity({
2120
2252
  sessionId: e.sessionId,
2121
2253
  source: e.source,
2122
2254
  status: e.status,
@@ -2134,28 +2266,28 @@ function an(e) {
2134
2266
  }]);
2135
2267
  break;
2136
2268
  case "assistant_message_created":
2137
- Q(e.messageId);
2269
+ ln(e.messageId);
2138
2270
  break;
2139
2271
  case "text_delta":
2140
- Q(e.messageId), t.patchMessages((t) => t.map((t) => t.id === e.messageId ? {
2272
+ ln(e.messageId), t.patchMessages((t) => t.map((t) => t.id === e.messageId ? {
2141
2273
  ...t,
2142
2274
  content: t.content + e.delta
2143
2275
  } : t));
2144
2276
  break;
2145
2277
  case "text_final":
2146
- Q(e.messageId), t.patchMessages((t) => t.map((t) => t.id === e.messageId ? {
2278
+ ln(e.messageId), t.patchMessages((t) => t.map((t) => t.id === e.messageId ? {
2147
2279
  ...t,
2148
2280
  content: e.text
2149
2281
  } : t));
2150
2282
  break;
2151
2283
  case "reasoning_delta":
2152
- Q(e.messageId), t.patchMessages((t) => t.map((t) => t.id === e.messageId ? {
2284
+ ln(e.messageId), t.patchMessages((t) => t.map((t) => t.id === e.messageId ? {
2153
2285
  ...t,
2154
2286
  reasoning: (t.reasoning || "") + e.delta
2155
2287
  } : t));
2156
2288
  break;
2157
2289
  case "tool_upsert":
2158
- Q(e.messageId), t.patchMessages((t) => t.map((t) => t.id === e.messageId ? {
2290
+ ln(e.messageId), t.patchMessages((t) => t.map((t) => t.id === e.messageId ? {
2159
2291
  ...t,
2160
2292
  tools: {
2161
2293
  ...t.tools || {},
@@ -2174,7 +2306,7 @@ function an(e) {
2174
2306
  } : t));
2175
2307
  break;
2176
2308
  case "tool_result":
2177
- Q(e.messageId), t.patchMessages((t) => t.map((t) => t.id === e.messageId ? {
2309
+ ln(e.messageId), t.patchMessages((t) => t.map((t) => t.id === e.messageId ? {
2178
2310
  ...t,
2179
2311
  tools: {
2180
2312
  ...t.tools || {},
@@ -2184,7 +2316,7 @@ function an(e) {
2184
2316
  args: ""
2185
2317
  },
2186
2318
  output: e.output,
2187
- status: v(e.output) ? "error" : "completed"
2319
+ status: u(e.output) ? "error" : "completed"
2188
2320
  }
2189
2321
  }
2190
2322
  } : t));
@@ -2198,7 +2330,7 @@ function an(e) {
2198
2330
  }]);
2199
2331
  break;
2200
2332
  case "compaction": {
2201
- let n = `compaction-${Date.now()}`, r = e.phase === "start" ? "running" : e.phase === "failed" ? "failed" : "completed", i = Yt({
2333
+ let n = `compaction-${Date.now()}`, r = e.phase === "start" ? "running" : e.phase === "failed" ? "failed" : "completed", i = en({
2202
2334
  id: n,
2203
2335
  timestamp: Date.now(),
2204
2336
  status: r,
@@ -2212,16 +2344,16 @@ function an(e) {
2212
2344
  break;
2213
2345
  }
2214
2346
  case "stage_changed":
2215
- 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), Z = !1);
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);
2216
2348
  break;
2217
2349
  case "stream_ended":
2218
- F.getState().setSessionStreaming(e.sessionId, !1), globalThis.setTimeout(() => {
2219
- let t = F.getState();
2350
+ I.getState().setSessionStreaming(e.sessionId, !1), globalThis.setTimeout(() => {
2351
+ let t = I.getState();
2220
2352
  t.getSessionActivity(e.sessionId)?.status === "completed" && t.clearSessionActivity(e.sessionId);
2221
- }, 2400), Z = !1;
2353
+ }, 2400), Q = !1;
2222
2354
  break;
2223
2355
  case "error":
2224
- F.getState().setSessionStreaming(e.sessionId, !1), F.getState().updateActivity({
2356
+ I.getState().setSessionStreaming(e.sessionId, !1), I.getState().updateActivity({
2225
2357
  sessionId: e.sessionId,
2226
2358
  status: "failed",
2227
2359
  phase: "连接断开或生成出错",
@@ -2231,25 +2363,25 @@ function an(e) {
2231
2363
  role: "model",
2232
2364
  content: "连接断开或生成出错。",
2233
2365
  timestamp: Date.now()
2234
- }]), Z = !1;
2366
+ }]), Q = !1;
2235
2367
  break;
2236
2368
  case "terminal":
2237
- rn(e.status);
2369
+ un(e.status);
2238
2370
  break;
2239
2371
  case "stream_event":
2240
- if (e.event.EventType === "run_checkpoint" && X.getState().upsertSessionCheckpoint(e.sessionId || e.event.SessionId, e.event), e.event.EventType === "run_status") {
2372
+ if (e.event.EventType === "run_checkpoint" && Z.getState().upsertSessionCheckpoint(e.sessionId || e.event.SessionId, e.event), e.event.EventType === "run_status") {
2241
2373
  let t = String(e.event.Content?.status || "").trim().toLowerCase();
2242
- t === "completed" ? F.getState().updateActivity({
2374
+ t === "completed" ? I.getState().updateActivity({
2243
2375
  sessionId: e.sessionId || e.event.SessionId,
2244
2376
  status: "completed",
2245
2377
  phase: "后台长任务已完成",
2246
2378
  countEvent: !1
2247
- }) : t === "cancelled" || t === "canceled" || t === "aborted" ? F.getState().updateActivity({
2379
+ }) : t === "cancelled" || t === "canceled" || t === "aborted" ? I.getState().updateActivity({
2248
2380
  sessionId: e.sessionId || e.event.SessionId,
2249
2381
  status: "stopped",
2250
2382
  phase: "后台长任务已取消",
2251
2383
  countEvent: !1
2252
- }) : (t === "failed" || t === "error") && F.getState().updateActivity({
2384
+ }) : (t === "failed" || t === "error") && I.getState().updateActivity({
2253
2385
  sessionId: e.sessionId || e.event.SessionId,
2254
2386
  status: "failed",
2255
2387
  phase: "后台长任务失败",
@@ -2259,13 +2391,13 @@ function an(e) {
2259
2391
  break;
2260
2392
  }
2261
2393
  }
2262
- function on() {
2263
- Z = !1;
2394
+ function fn() {
2395
+ Q = !1;
2264
2396
  }
2265
2397
  //#endregion
2266
2398
  //#region src/hooks/useRunAgent.ts
2267
- function sn(e) {
2268
- let t = A(/* @__PURE__ */ new Map()), n = A(() => {}), { agentId: r, apiFormats: i, agentFramework: a, selectedModel: o, thinkingMode: s, currentSessionIdRef: c, queuedDraftRef: l, onRunSettled: u, uiCapabilities: d } = e, f = O((e) => {
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) => {
2269
2401
  e.updateConfig({
2270
2402
  agentId: r,
2271
2403
  apiFormats: i,
@@ -2281,25 +2413,25 @@ function sn(e) {
2281
2413
  o,
2282
2414
  s,
2283
2415
  d.RunLifecycle?.CheckpointResumePreview
2284
- ]), p = O((n) => {
2416
+ ]), p = k((n) => {
2285
2417
  let r = String(n || "new-session"), i = t.current.get(r);
2286
- return i ? f(i) : (i = new _t(e.api), f(i), i.subscribe(an), t.current.set(r, i)), i;
2418
+ return i ? f(i) : (i = new xt(e.api), f(i), i.subscribe(dn), t.current.set(r, i)), i;
2287
2419
  }, [e.api, f]);
2288
- k(() => {
2420
+ A(() => {
2289
2421
  for (let e of t.current.values()) f(e);
2290
2422
  }, [f]);
2291
- let m = O((e) => {
2423
+ let m = k((e) => {
2292
2424
  l.current.push(e), _.getState().setQueuedDrafts((t) => [...t, e]);
2293
- }, [l]), h = O((e) => {
2425
+ }, [l]), h = k((e) => {
2294
2426
  let i = c.current, a = p(i);
2295
2427
  if (a.stage !== "idle") return !1;
2296
- on(), _.getState().setMobileActionsOpen(!1), F.getState().setSessionStreaming(i, !0);
2428
+ fn(), _.getState().setMobileActionsOpen(!1), I.getState().setSessionStreaming(i, !0);
2297
2429
  let o = e.text.trim(), s = String(Date.now()), l = e.attachments.map((e) => ({
2298
2430
  name: e.name,
2299
2431
  url: URL.createObjectURL(e),
2300
2432
  type: e.type || "application/octet-stream"
2301
2433
  }));
2302
- (o || l.length > 0) && G.getState().patchMessages((e) => [...e, {
2434
+ (o || l.length > 0) && q.getState().patchMessages((e) => [...e, {
2303
2435
  id: s,
2304
2436
  role: "user",
2305
2437
  content: o,
@@ -2313,24 +2445,24 @@ function sn(e) {
2313
2445
  previousResponseId: e.previousResponseId,
2314
2446
  sessionId: i,
2315
2447
  onSessionCreated: (e) => {
2316
- I.getState().upsertSessions([{
2448
+ R.getState().upsertSessions([{
2317
2449
  SessionId: e,
2318
2450
  UpdatedAt: (/* @__PURE__ */ new Date()).toISOString()
2319
- }]), c.current = e, ve(r, e), I.getState().setCurrentSessionId(e), i !== e && t.current.set(e, a);
2451
+ }]), c.current = e, we(r, e), R.getState().setCurrentSessionId(e), i !== e && t.current.set(e, a);
2320
2452
  },
2321
2453
  onSessionUpsert: () => {},
2322
2454
  onSettled: (e) => {
2323
2455
  u?.(e), n.current();
2324
2456
  }
2325
2457
  });
2326
- return d || F.getState().setSessionStreaming(i, !1), d;
2458
+ return d || I.getState().setSessionStreaming(i, !1), d;
2327
2459
  }, [
2328
2460
  r,
2329
2461
  c,
2330
2462
  p,
2331
2463
  u
2332
2464
  ]);
2333
- return k(() => {
2465
+ return A(() => {
2334
2466
  n.current = () => {
2335
2467
  let e = l.current.shift();
2336
2468
  if (!e) {
@@ -2342,14 +2474,14 @@ function sn(e) {
2342
2474
  });
2343
2475
  };
2344
2476
  }, [l, h]), {
2345
- submitDraft: O(async (e, t, n, r) => {
2477
+ submitDraft: k(async (e, t, n, r) => {
2346
2478
  let i = {
2347
2479
  text: e,
2348
2480
  attachments: t,
2349
2481
  responsesInput: n,
2350
2482
  previousResponseId: r
2351
2483
  };
2352
- if (p(c.current).stage !== "idle" && F.getState().isSessionStreaming(c.current)) {
2484
+ if (p(c.current).stage !== "idle" && I.getState().isSessionStreaming(c.current)) {
2353
2485
  n === void 0 && m({
2354
2486
  text: e,
2355
2487
  attachments: t
@@ -2366,39 +2498,39 @@ function sn(e) {
2366
2498
  p,
2367
2499
  h
2368
2500
  ]),
2369
- stopGeneration: O(() => {
2501
+ stopGeneration: k(() => {
2370
2502
  p(c.current).stop();
2371
2503
  }, [c, p]),
2372
- disconnectRun: O(() => {
2504
+ disconnectRun: k(() => {
2373
2505
  p(c.current).disconnect();
2374
2506
  }, [c, p]),
2375
- resumeCheckpoint: O((e) => {
2507
+ resumeCheckpoint: k((e) => {
2376
2508
  let t = p(e.sessionId);
2377
2509
  if (t.stage !== "idle") return !1;
2378
- on(), _.getState().setMobileActionsOpen(!1), F.getState().setSessionStreaming(e.sessionId, !0);
2510
+ fn(), _.getState().setMobileActionsOpen(!1), I.getState().setSessionStreaming(e.sessionId, !0);
2379
2511
  let r = t.resumeCheckpoint({
2380
2512
  ...e,
2381
2513
  onSettled: (e) => {
2382
2514
  u?.(e), n.current();
2383
2515
  }
2384
2516
  });
2385
- return r || F.getState().setSessionStreaming(e.sessionId, !1), r;
2517
+ return r || I.getState().setSessionStreaming(e.sessionId, !1), r;
2386
2518
  }, [p, u]),
2387
- resetCompaction: O(() => {
2388
- on();
2519
+ resetCompaction: k(() => {
2520
+ fn();
2389
2521
  }, [])
2390
2522
  };
2391
2523
  }
2392
2524
  //#endregion
2393
2525
  //#region src/hooks/useFeedback.ts
2394
- function cn(e) {
2526
+ function mn(e) {
2395
2527
  let { agentId: t, currentSessionId: n, isStreaming: r, api: i, submitDraft: a } = e;
2396
2528
  return {
2397
- submitResponseFeedback: O(async (e) => {
2529
+ submitResponseFeedback: k(async (e) => {
2398
2530
  if (!n) return;
2399
2531
  let r = null;
2400
- G.getState().patchMessages((t) => {
2401
- let n = h(t, {
2532
+ q.getState().patchMessages((t) => {
2533
+ let n = v(t, {
2402
2534
  messageId: e.message.id,
2403
2535
  rating: e.rating,
2404
2536
  comment: e.comment || ""
@@ -2406,19 +2538,19 @@ function cn(e) {
2406
2538
  return r = n.previousFeedback, n.nextMessages;
2407
2539
  });
2408
2540
  try {
2409
- let r = C((await i.upsertResponseFeedback(d({
2541
+ let r = x((await i.upsertResponseFeedback(f({
2410
2542
  agentId: t,
2411
2543
  sessionId: n,
2412
2544
  message: e.message,
2413
2545
  rating: e.rating,
2414
2546
  comment: e.comment || ""
2415
2547
  })))?.Feedback);
2416
- r && G.getState().patchMessages((t) => x(t, {
2548
+ r && q.getState().patchMessages((t) => s(t, {
2417
2549
  messageId: e.message.id,
2418
2550
  feedback: r
2419
2551
  }));
2420
2552
  } catch (t) {
2421
- console.error("Failed to submit response feedback:", t), G.getState().patchMessages((t) => c(t, {
2553
+ console.error("Failed to submit response feedback:", t), q.getState().patchMessages((t) => C(t, {
2422
2554
  messageId: e.message.id,
2423
2555
  previousFeedback: r
2424
2556
  }));
@@ -2428,18 +2560,18 @@ function cn(e) {
2428
2560
  n,
2429
2561
  i
2430
2562
  ]),
2431
- deleteResponseFeedback: O(async (e) => {
2563
+ deleteResponseFeedback: k(async (e) => {
2432
2564
  if (!n) return;
2433
2565
  let r = e.feedback ? { ...e.feedback } : null;
2434
- G.getState().patchMessages((t) => s(t, { messageId: e.id }));
2566
+ q.getState().patchMessages((t) => d(t, { messageId: e.id }));
2435
2567
  try {
2436
- await i.deleteResponseFeedback(f({
2568
+ await i.deleteResponseFeedback(h({
2437
2569
  agentId: t,
2438
2570
  sessionId: n,
2439
2571
  message: e
2440
2572
  }));
2441
2573
  } catch (t) {
2442
- console.error("Failed to delete response feedback:", t), G.getState().patchMessages((t) => c(t, {
2574
+ console.error("Failed to delete response feedback:", t), q.getState().patchMessages((t) => C(t, {
2443
2575
  messageId: e.id,
2444
2576
  previousFeedback: r
2445
2577
  }));
@@ -2449,14 +2581,14 @@ function cn(e) {
2449
2581
  n,
2450
2582
  i
2451
2583
  ]),
2452
- respondToApproval: O((e) => {
2453
- !e.approvalRequestId || r || (G.getState().patchMessages((t) => t.map((t) => ({
2584
+ respondToApproval: k((e) => {
2585
+ !e.approvalRequestId || r || (q.getState().patchMessages((t) => t.map((t) => ({
2454
2586
  ...t,
2455
2587
  tools: t.tools ? Object.fromEntries(Object.entries(t.tools).map(([t, n]) => [t, n.approvalRequestId === e.approvalRequestId ? {
2456
2588
  ...n,
2457
2589
  approvalStatus: e.approve ? "approved" : "rejected"
2458
2590
  } : n])) : t.tools
2459
- }))), G.getState().patchMessages((t) => [...t, {
2591
+ }))), q.getState().patchMessages((t) => [...t, {
2460
2592
  id: String(Date.now() + Math.random()),
2461
2593
  role: "system",
2462
2594
  content: e.approve ? "已批准工具调用,正在继续运行。" : "已拒绝工具调用,正在通知运行时。",
@@ -2471,10 +2603,10 @@ function cn(e) {
2471
2603
  }
2472
2604
  //#endregion
2473
2605
  //#region src/utils/run-state.js
2474
- function ln(e) {
2606
+ function hn(e) {
2475
2607
  return String(e?.InvocationId || e?.invocation_id || e?.invocationId || "").trim();
2476
2608
  }
2477
- function un(e) {
2609
+ function gn(e) {
2478
2610
  let t = e?.Timestamp ?? e?.timestamp ?? e?.created_at ?? e?.CreatedAt;
2479
2611
  if (typeof t == "number" && Number.isFinite(t)) return t > 1e11 ? t : t * 1e3;
2480
2612
  if (typeof t == "string") {
@@ -2483,16 +2615,16 @@ function un(e) {
2483
2615
  }
2484
2616
  return 0;
2485
2617
  }
2486
- function dn(e) {
2618
+ function _n(e) {
2487
2619
  return String(e?.EventType || e?.event_type || "").trim();
2488
2620
  }
2489
- function fn(e = [], t = {}) {
2621
+ function vn(e = [], t = {}) {
2490
2622
  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;
2491
2623
  for (let e of i) {
2492
- let t = ln(e);
2624
+ let t = hn(e);
2493
2625
  if (!t) continue;
2494
- let i = un(e);
2495
- i && r.set(t, Math.max(r.get(t) || 0, i)), dn(e) === "run_status" && n.set(t, String(e?.Content?.status || e?.content?.status || "").trim());
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());
2496
2628
  }
2497
2629
  return Array.from(n.entries()).filter(([e, t]) => {
2498
2630
  let n = r.get(e) || 0, i = n > 0 && a - n > o;
@@ -2501,8 +2633,8 @@ function fn(e = [], t = {}) {
2501
2633
  }
2502
2634
  //#endregion
2503
2635
  //#region src/hooks/useSessionLifecycle.ts
2504
- var pn = 9e4;
2505
- function mn(e) {
2636
+ var yn = 9e4, bn = 30, xn = 50;
2637
+ function Sn(e) {
2506
2638
  if (e.EventType !== "run_status") return null;
2507
2639
  let t = String(e.Content?.status || "").trim().toLowerCase();
2508
2640
  return t === "completed" ? {
@@ -2516,9 +2648,9 @@ function mn(e) {
2516
2648
  phase: "后台长任务失败"
2517
2649
  } : null;
2518
2650
  }
2519
- function hn(e) {
2520
- let { agentId: t, api: n, isMobile: r, resetCompaction: i, uiCapabilities: a, disconnectRun: o } = e, s = A(e.currentSessionId), c = A(e.agentId), l = A(null), d = A(null), f = A(null), p = O(async (e, t, r) => {
2521
- let i = r.filter((e) => S(e, !1, !1));
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) => {
2653
+ let i = r.filter((e) => c(e, !1, !1));
2522
2654
  if (!i.length) return;
2523
2655
  let a = await Promise.all(i.map(async (r) => {
2524
2656
  try {
@@ -2527,7 +2659,7 @@ function hn(e) {
2527
2659
  SessionId: t,
2528
2660
  ResponseId: r.responseId,
2529
2661
  EventId: r.eventId
2530
- }), a = i?.Feedback ? C(i.Feedback) : null;
2662
+ }), a = i?.Feedback ? x(i.Feedback) : null;
2531
2663
  return a ? {
2532
2664
  messageId: r.id,
2533
2665
  feedback: a
@@ -2538,26 +2670,26 @@ function hn(e) {
2538
2670
  }));
2539
2671
  if (s.current !== t) return;
2540
2672
  let o = new Map(a.filter((e) => !!e).map((e) => [e.messageId, e.feedback]));
2541
- o.size && G.getState().patchMessages((e) => e.map((e) => o.has(e.id) ? {
2673
+ o.size && q.getState().patchMessages((e) => e.map((e) => o.has(e.id) ? {
2542
2674
  ...e,
2543
2675
  feedback: o.get(e.id)
2544
2676
  } : e));
2545
- }, [n]), m = O(async (e) => {
2546
- l.current?.abort();
2677
+ }, [n]), m = k(async (e) => {
2678
+ u.current?.abort();
2547
2679
  let t = new AbortController();
2548
- l.current = t;
2680
+ u.current = t;
2549
2681
  let r = !1, i = !1, a = () => {
2550
- l.current !== t || t.signal.aborted || t.abort();
2682
+ u.current !== t || t.signal.aborted || t.abort();
2551
2683
  }, o = globalThis.setTimeout(() => {
2552
2684
  a();
2553
- }, pn);
2685
+ }, yn);
2554
2686
  try {
2555
2687
  let a = (await n.subscribeRunEvents({
2556
2688
  sessionId: e.sessionId,
2557
2689
  invocationId: e.invocationId,
2558
2690
  afterSeqId: e.afterSeqId
2559
2691
  }, { signal: t.signal })).getReader(), o = new TextDecoder(), s = "", c = Array.isArray(e.initialEvents) ? e.initialEvents : [];
2560
- for (F.getState().setCurrentRunId(e.invocationId), F.getState().updateActivity({
2692
+ for (I.getState().setCurrentRunId(e.invocationId), I.getState().updateActivity({
2561
2693
  sessionId: e.sessionId,
2562
2694
  status: "running",
2563
2695
  phase: "后台长任务运行中",
@@ -2580,17 +2712,17 @@ function hn(e) {
2580
2712
  }
2581
2713
  try {
2582
2714
  let t = JSON.parse(a);
2583
- c = Qt(c, [t]), i ||= en(t), r ||= i, t.EventType === "run_checkpoint" && X.getState().upsertSessionCheckpoint(e.sessionId, t);
2584
- let n = mn(t);
2585
- n && F.getState().updateActivity({
2715
+ 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({
2586
2718
  sessionId: e.sessionId,
2587
2719
  status: n.status,
2588
2720
  phase: n.phase,
2589
2721
  detail: e.invocationId,
2590
2722
  countEvent: !1
2591
2723
  });
2592
- let o = Zt(c);
2593
- G.getState().setMessages(o);
2724
+ let o = nn(c);
2725
+ q.getState().setMessages(o);
2594
2726
  } catch (e) {
2595
2727
  console.warn("Failed to parse run event data", a, e);
2596
2728
  }
@@ -2599,42 +2731,64 @@ function hn(e) {
2599
2731
  } catch (e) {
2600
2732
  e instanceof DOMException && e.name === "AbortError" || console.error("Failed to subscribe run events:", e);
2601
2733
  } finally {
2602
- globalThis.clearTimeout(o), l.current === t && (l.current = null), F.getState().setCurrentRunId(""), r && s.current === e.sessionId && d.current?.(e.sessionId), f.current?.(c.current, e.sessionId);
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);
2603
2735
  }
2604
- }, [n]), h = O(async (e) => {
2605
- s.current = e, I.getState().setCurrentSessionId(e), i(), l.current?.abort(), r && _.getState().setMobileSidebarOpen(!1);
2736
+ }, [n]), h = k(async (e) => {
2737
+ s.current = e, R.getState().setCurrentSessionId(e), i(), u.current?.abort(), r && _.getState().setMobileSidebarOpen(!1);
2606
2738
  try {
2607
- let t = await n.listSessionEvents(e), r = N.getState().capabilities || a;
2608
- r.RunLifecycle.Enabled && r.RunLifecycle.Checkpoints ? (n.listSessionCheckpoints({
2609
- agentId: c.current,
2739
+ let t = R.getState().eventCache[e], r;
2740
+ if (t) r = {
2741
+ Events: t.events,
2742
+ Total: t.total,
2743
+ Offset: t.offset,
2744
+ Limit: t.limit
2745
+ };
2746
+ else {
2747
+ let t = await n.listSessionEvents(e, {
2748
+ offset: 0,
2749
+ limit: 1
2750
+ }), i = Number(t.Total ?? t.Events?.length ?? 0), a = Math.max(0, i - xn);
2751
+ r = i <= 1 ? t : await n.listSessionEvents(e, {
2752
+ offset: a,
2753
+ limit: xn
2754
+ }), R.getState().setSessionEventCache(e, {
2755
+ events: r.Events || [],
2756
+ total: i,
2757
+ offset: Number(r.Offset ?? a),
2758
+ limit: Number(r.Limit ?? r.Events?.length ?? 0)
2759
+ });
2760
+ }
2761
+ let i = P.getState().capabilities || a;
2762
+ i.RunLifecycle.Enabled && i.RunLifecycle.Checkpoints ? (n.listSessionCheckpoints({
2763
+ agentId: l.current,
2610
2764
  sessionId: e
2611
2765
  }).then((t) => {
2612
- X.getState().setSessionCheckpoints(e, t.Checkpoints || []);
2766
+ Z.getState().setSessionCheckpoints(e, t.Checkpoints || []);
2613
2767
  }).catch((t) => {
2614
- console.warn("[SessionLifecycle] checkpoint load failed:", t), X.getState().setSessionCheckpoints(e, []);
2768
+ console.warn("[SessionLifecycle] checkpoint load failed:", t), Z.getState().setSessionCheckpoints(e, []);
2615
2769
  }), n.listToolReceipts({
2616
- agentId: c.current,
2770
+ agentId: l.current,
2617
2771
  sessionId: e
2618
2772
  }).then((t) => {
2619
- X.getState().setSessionToolReceipts(e, t.ToolReceipts || []);
2773
+ Z.getState().setSessionToolReceipts(e, t.ToolReceipts || []);
2620
2774
  }).catch((t) => {
2621
- console.warn("[SessionLifecycle] tool receipt load failed:", t), X.getState().setSessionToolReceipts(e, []);
2622
- })) : X.getState().clearSessionCheckpoints(e);
2623
- let i = t;
2624
- if (i?.Events) {
2625
- let t = i.Events, n = Zt(t);
2626
- G.getState().setMessages(n), p(c.current, e, n);
2627
- let a = fn(t, {
2775
+ console.warn("[SessionLifecycle] tool receipt load failed:", t), Z.getState().setSessionToolReceipts(e, []);
2776
+ })) : Z.getState().clearSessionCheckpoints(e);
2777
+ let o = r;
2778
+ if (o?.Events) {
2779
+ let t = o.Events, n = nn(t);
2780
+ q.getState().setMessages(n), p(l.current, e, n);
2781
+ let r = vn(t, {
2628
2782
  now: Date.now(),
2629
2783
  staleAfterMs: 1800 * 1e3
2630
- }), o = $t(t);
2631
- r.RunLifecycle.Enabled && r.RunLifecycle.Resume && a[0] && m({
2784
+ }), a = an(t);
2785
+ i.RunLifecycle.Enabled && i.RunLifecycle.Resume && r[0] && m({
2632
2786
  sessionId: e,
2633
- invocationId: a[0],
2634
- afterSeqId: o,
2787
+ invocationId: r[0],
2788
+ afterSeqId: a,
2635
2789
  initialEvents: t
2636
2790
  });
2637
- } else G.getState().setMessages([]), X.getState().setSessionCheckpoints(e, []), X.getState().setSessionToolReceipts(e, []);
2791
+ } else q.getState().setMessages([]), Z.getState().setSessionCheckpoints(e, []), Z.getState().setSessionToolReceipts(e, []);
2638
2792
  } catch (e) {
2639
2793
  console.error("Failed to load session events:", e);
2640
2794
  }
@@ -2644,190 +2798,275 @@ function hn(e) {
2644
2798
  p,
2645
2799
  i,
2646
2800
  m,
2647
- a.RunLifecycle.Enabled,
2648
- a.RunLifecycle.Checkpoints,
2649
- a.RunLifecycle.Resume
2650
- ]), g = O(async (e = "default-agent", t = null) => {
2801
+ a
2802
+ ]), g = k(async (e = "default-agent", t = null) => {
2651
2803
  try {
2652
- let r = await n.listSessions(e), i = u(I.getState().sessions, r);
2653
- I.getState().setSessions(i);
2654
- let a = s.current, o = ye(i, a || t || _e(e));
2655
- o && o !== a ? h(o) : !o && a && (s.current = null, I.getState().setCurrentSessionId(null), G.getState().setMessages([]), X.getState().clearSessionCheckpoints());
2804
+ let r = R.getState();
2805
+ r.sessionsAgentId && r.sessionsAgentId !== e && r.resetSessionPagination(e), R.getState().setLoadingSessions(!0);
2806
+ let i = await n.listSessions(e, {
2807
+ page: 1,
2808
+ pageSize: bn
2809
+ });
2810
+ R.getState().upsertSessions(i.Sessions || [], {
2811
+ agentId: e,
2812
+ total: Number(i.Total ?? i.Sessions?.length ?? 0),
2813
+ page: Number(i.Page ?? 1),
2814
+ pageSize: Number(i.PageSize ?? bn),
2815
+ replace: !0
2816
+ });
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());
2656
2819
  } catch (e) {
2657
- if (e instanceof je) return;
2820
+ if (e instanceof U) return;
2658
2821
  console.error("Failed to fetch sessions:", e);
2822
+ } finally {
2823
+ R.getState().setLoadingSessions(!1);
2824
+ }
2825
+ }, [n, h]), v = k(async () => {
2826
+ let e = R.getState();
2827
+ if (e.isLoadingSessions || !e.hasMoreSessions) return;
2828
+ let t = ue({
2829
+ total: e.sessionsTotal,
2830
+ pageSize: e.sessionsPageSize || bn,
2831
+ loadedPages: e.loadedPages
2832
+ });
2833
+ if (!t) return;
2834
+ let r = e.sessionsPageSize || bn, i = e.sessionsAgentId || l.current || "default-agent";
2835
+ try {
2836
+ R.getState().setLoadingSessions(!0);
2837
+ let a = await n.listSessions(i, {
2838
+ page: t,
2839
+ pageSize: r
2840
+ });
2841
+ R.getState().upsertSessions(a.Sessions || [], {
2842
+ agentId: i,
2843
+ total: Number(a.Total ?? e.sessionsTotal),
2844
+ page: Number(a.Page ?? t),
2845
+ pageSize: Number(a.PageSize ?? r)
2846
+ });
2847
+ } catch (e) {
2848
+ if (e instanceof U) return;
2849
+ console.error("Failed to load more sessions:", e);
2850
+ } finally {
2851
+ R.getState().setLoadingSessions(!1);
2659
2852
  }
2660
- }, [n, h]);
2661
- return k(() => {
2853
+ }, [n]);
2854
+ A(() => {
2662
2855
  d.current = h;
2663
- }, [h]), k(() => {
2856
+ }, [h]), A(() => {
2664
2857
  f.current = g;
2665
- }, [g]), {
2858
+ }, [g]);
2859
+ let y = k(async () => {
2860
+ try {
2861
+ o?.();
2862
+ let e = (await n.createSession(t)).SessionId;
2863
+ e && (R.getState().upsertSessions([{
2864
+ SessionId: e,
2865
+ 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));
2867
+ } catch (e) {
2868
+ if (e instanceof U) return;
2869
+ console.error("Failed to create session:", e);
2870
+ }
2871
+ }, [
2872
+ t,
2873
+ n,
2874
+ o,
2875
+ g,
2876
+ r
2877
+ ]), b = k(async (e) => {
2878
+ 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));
2880
+ } catch (e) {
2881
+ if (e instanceof U) return;
2882
+ console.error("Failed to delete session", e);
2883
+ }
2884
+ }, [
2885
+ t,
2886
+ n,
2887
+ g
2888
+ ]);
2889
+ return {
2666
2890
  fetchSessions: g,
2891
+ loadMoreSessions: v,
2667
2892
  loadSession: h,
2668
- createNewSession: O(async () => {
2893
+ loadOlderSessionEvents: k(async (e) => {
2894
+ let t = R.getState().eventCache[e];
2895
+ if (!t || t.offset <= 0 || t.isLoadingOlder) return;
2896
+ let r = Math.max(0, t.offset - xn), i = t.offset - r;
2669
2897
  try {
2670
- o?.();
2671
- let e = (await n.createSession(t)).SessionId;
2672
- e && (I.getState().upsertSessions([{
2673
- SessionId: e,
2674
- UpdatedAt: (/* @__PURE__ */ new Date()).toISOString()
2675
- }]), s.current = e, I.getState().setCurrentSessionId(e), G.getState().setMessages([]), X.getState().setSessionCheckpoints(e, []), X.getState().setSessionToolReceipts(e, []), r && (_.getState().setMobileSidebarOpen(!1), _.getState().setMobileActionsOpen(!1)), g(t, e));
2676
- } catch (e) {
2677
- if (e instanceof je) return;
2678
- console.error("Failed to create session:", e);
2679
- }
2680
- }, [
2681
- t,
2682
- n,
2683
- o,
2684
- g,
2685
- r
2686
- ]),
2687
- deleteSession: O(async (e) => {
2688
- try {
2689
- await n.deleteSession(e), I.getState().removeSession(e), s.current === e && (s.current = null, G.getState().setMessages([]), X.getState().clearSessionCheckpoints(e), I.getState().setCurrentSessionId(null), g(t));
2898
+ R.getState().setSessionEventLoadingOlder(e, !0);
2899
+ let a = await n.listSessionEvents(e, {
2900
+ offset: r,
2901
+ limit: i
2902
+ }), o = rn(a.Events || [], t.events);
2903
+ if (R.getState().setSessionEventCache(e, {
2904
+ events: o,
2905
+ total: Number(a.Total ?? t.total),
2906
+ offset: Number(a.Offset ?? r),
2907
+ limit: o.length
2908
+ }), s.current === e) {
2909
+ let t = nn(o);
2910
+ q.getState().setMessages(t), p(l.current, e, t);
2911
+ }
2690
2912
  } catch (e) {
2691
- if (e instanceof je) return;
2692
- console.error("Failed to delete session", e);
2913
+ e instanceof U || console.error("Failed to load older session events:", e);
2914
+ } finally {
2915
+ R.getState().setSessionEventLoadingOlder(e, !1);
2693
2916
  }
2694
- }, [
2695
- t,
2696
- n,
2697
- g
2698
- ]),
2917
+ }, [n, p]),
2918
+ createNewSession: y,
2919
+ deleteSession: b,
2699
2920
  currentSessionIdRef: s,
2700
- agentIdRef: c,
2701
- runSubscriptionAbortRef: l
2921
+ agentIdRef: l,
2922
+ runSubscriptionAbortRef: u
2702
2923
  };
2703
2924
  }
2704
2925
  //#endregion
2705
2926
  //#region src/components/chat/ConnectedSidebar.tsx
2706
- function gn({ uiCapabilities: e, createNewSession: s, deleteSession: c, loadSession: u }) {
2707
- let d = I((e) => e.sessions), f = I((e) => e.currentSessionId), p = _((e) => e.sidebarOpen), m = _((e) => e.mobileSidebarOpen), { isMobile: h } = Ae(), g = t(e), { desktopSidebarVisible: v } = L({
2708
- isMobile: h,
2709
- desktopSidebarOpen: p,
2710
- mobileSidebarOpen: m
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({
2929
+ isMobile: y,
2930
+ desktopSidebarOpen: g,
2931
+ mobileSidebarOpen: v
2711
2932
  });
2712
- return g ? h ? /* @__PURE__ */ w(o, {
2713
- open: m,
2933
+ return b ? y ? /* @__PURE__ */ T(S, {
2934
+ open: v,
2714
2935
  onOpenChange: (e) => _.getState().setMobileSidebarOpen(e),
2715
- children: /* @__PURE__ */ T(i, {
2936
+ children: /* @__PURE__ */ E(o, {
2716
2937
  side: "left",
2717
2938
  className: "w-[88vw] max-w-sm border-slate-200 bg-slate-50 p-0 dark:border-slate-800 dark:bg-slate-950",
2718
2939
  children: [
2719
- /* @__PURE__ */ w(a, {
2940
+ /* @__PURE__ */ T(r, {
2720
2941
  className: "sr-only",
2721
2942
  children: "历史记录"
2722
2943
  }),
2723
- /* @__PURE__ */ w(r, {
2944
+ /* @__PURE__ */ T(i, {
2724
2945
  className: "sr-only",
2725
2946
  children: "查看和切换历史对话。"
2726
2947
  }),
2727
- /* @__PURE__ */ w(l, {
2728
- sessions: d,
2729
- currentSessionId: f,
2730
- onCreateNewSession: s,
2731
- onSelectSession: u,
2732
- onDeleteSession: c,
2733
- sessionTitle: b
2948
+ /* @__PURE__ */ T(l, {
2949
+ sessions: u,
2950
+ currentSessionId: d,
2951
+ onCreateNewSession: n,
2952
+ onSelectSession: s,
2953
+ onDeleteSession: (e, t) => {
2954
+ t.stopPropagation(), a(e);
2955
+ },
2956
+ onTogglePinSession: (e, t) => {
2957
+ t.stopPropagation(), R.getState().togglePinnedSession(e);
2958
+ },
2959
+ onLoadMoreSessions: c,
2960
+ sessionTitle: te,
2961
+ pinnedSessionIds: f,
2962
+ hasMoreSessions: h,
2963
+ isLoadingSessions: m
2734
2964
  })
2735
2965
  ]
2736
2966
  })
2737
- }) : /* @__PURE__ */ w("aside", {
2738
- className: n("flex-shrink-0 overflow-hidden border-r border-slate-200 transition-[width] duration-300 ease-in-out dark:border-slate-800", v ? "w-[280px]" : "w-0 border-r-0"),
2739
- children: /* @__PURE__ */ w(l, {
2740
- sessions: d,
2741
- currentSessionId: f,
2742
- onCreateNewSession: s,
2743
- onSelectSession: u,
2744
- onDeleteSession: c,
2745
- sessionTitle: b
2967
+ }) : /* @__PURE__ */ T("aside", {
2968
+ className: p("flex-shrink-0 overflow-hidden border-r border-slate-200 transition-[width] duration-300 ease-in-out dark:border-slate-800", ee ? "w-[280px]" : "w-0 border-r-0"),
2969
+ children: /* @__PURE__ */ T(l, {
2970
+ sessions: u,
2971
+ currentSessionId: d,
2972
+ onCreateNewSession: n,
2973
+ onSelectSession: s,
2974
+ onDeleteSession: (e, t) => {
2975
+ t.stopPropagation(), a(e);
2976
+ },
2977
+ onTogglePinSession: (e, t) => {
2978
+ t.stopPropagation(), R.getState().togglePinnedSession(e);
2979
+ },
2980
+ onLoadMoreSessions: c,
2981
+ sessionTitle: te,
2982
+ pinnedSessionIds: f,
2983
+ hasMoreSessions: h,
2984
+ isLoadingSessions: m
2746
2985
  })
2747
2986
  }) : null;
2748
2987
  }
2749
2988
  //#endregion
2750
2989
  //#region src/components/ui/dialog.tsx
2751
- var _n = j.Root, vn = j.Portal, yn = E.forwardRef(({ className: e, ...t }, r) => /* @__PURE__ */ w(j.Overlay, {
2752
- ref: r,
2753
- className: n("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),
2990
+ var Tn = M.Root, En = M.Portal, Dn = D.forwardRef(({ className: e, ...t }, n) => /* @__PURE__ */ T(M.Overlay, {
2991
+ ref: n,
2992
+ 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),
2754
2993
  ...t
2755
2994
  }));
2756
- yn.displayName = j.Overlay.displayName;
2757
- var bn = E.forwardRef(({ className: e, children: t, ...r }, i) => /* @__PURE__ */ T(vn, { children: [/* @__PURE__ */ w(yn, {}), /* @__PURE__ */ T(j.Content, {
2758
- ref: i,
2759
- className: n("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),
2760
- ...r,
2761
- children: [t, /* @__PURE__ */ T(j.Close, {
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, {
2997
+ ref: r,
2998
+ 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
+ ...n,
3000
+ children: [t, /* @__PURE__ */ E(M.Close, {
2762
3001
  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",
2763
- children: [/* @__PURE__ */ w(ie, { className: "h-4 w-4" }), /* @__PURE__ */ w("span", {
3002
+ children: [/* @__PURE__ */ T(w, { className: "h-4 w-4" }), /* @__PURE__ */ T("span", {
2764
3003
  className: "sr-only",
2765
3004
  children: "Close"
2766
3005
  })]
2767
3006
  })]
2768
3007
  })] }));
2769
- bn.displayName = j.Content.displayName;
2770
- var xn = ({ className: e, ...t }) => /* @__PURE__ */ w("div", {
2771
- className: n("flex flex-col space-y-1.5 text-center sm:text-left", e),
3008
+ On.displayName = M.Content.displayName;
3009
+ var kn = ({ className: e, ...t }) => /* @__PURE__ */ T("div", {
3010
+ className: p("flex flex-col space-y-1.5 text-center sm:text-left", e),
2772
3011
  ...t
2773
3012
  });
2774
- xn.displayName = "DialogHeader";
2775
- var Sn = ({ className: e, ...t }) => /* @__PURE__ */ w("div", {
2776
- className: n("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2", e),
3013
+ kn.displayName = "DialogHeader";
3014
+ var An = ({ className: e, ...t }) => /* @__PURE__ */ T("div", {
3015
+ className: p("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2", e),
2777
3016
  ...t
2778
3017
  });
2779
- Sn.displayName = "DialogFooter";
2780
- var Cn = E.forwardRef(({ className: e, ...t }, r) => /* @__PURE__ */ w(j.Title, {
2781
- ref: r,
2782
- className: n("text-lg font-semibold leading-none tracking-tight", e),
3018
+ An.displayName = "DialogFooter";
3019
+ var jn = D.forwardRef(({ className: e, ...t }, n) => /* @__PURE__ */ T(M.Title, {
3020
+ ref: n,
3021
+ className: p("text-lg font-semibold leading-none tracking-tight", e),
2783
3022
  ...t
2784
3023
  }));
2785
- Cn.displayName = j.Title.displayName;
2786
- var wn = E.forwardRef(({ className: e, ...t }, r) => /* @__PURE__ */ w(j.Description, {
2787
- ref: r,
2788
- className: n("text-sm text-muted-foreground", e),
3024
+ jn.displayName = M.Title.displayName;
3025
+ var Mn = D.forwardRef(({ className: e, ...t }, n) => /* @__PURE__ */ T(M.Description, {
3026
+ ref: n,
3027
+ className: p("text-sm text-muted-foreground", e),
2789
3028
  ...t
2790
3029
  }));
2791
- wn.displayName = j.Description.displayName;
3030
+ Mn.displayName = M.Description.displayName;
2792
3031
  //#endregion
2793
3032
  //#region src/components/chat/AttachmentPreview.tsx
2794
- function Tn(e, t) {
3033
+ function Nn(e, t) {
2795
3034
  if (!(!t || e)) return {
2796
3035
  width: `min(${t.width}px, calc(100vw - 5rem))`,
2797
3036
  height: `min(${t.height}px, calc(100vh - 9rem))`
2798
3037
  };
2799
3038
  }
2800
- function En(e, t) {
3039
+ function Pn(e, t) {
2801
3040
  if (!(!t || e)) return { width: `min(${t.width + 32}px, calc(100vw - 3rem))` };
2802
3041
  }
2803
- function Dn({ attachment: e, isMobile: t, previewImageSize: r, onClose: i, onImageLoad: a }) {
2804
- return /* @__PURE__ */ w(_n, {
3042
+ function Fn({ attachment: e, isMobile: t, previewImageSize: n, onClose: r, onImageLoad: i }) {
3043
+ return /* @__PURE__ */ T(Tn, {
2805
3044
  open: !!e?.url,
2806
- onOpenChange: (e) => !e && i(),
2807
- children: /* @__PURE__ */ T(bn, {
2808
- className: n("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"),
2809
- style: En(t, r),
2810
- children: [/* @__PURE__ */ w("div", {
3045
+ onOpenChange: (e) => !e && r(),
3046
+ children: /* @__PURE__ */ E(On, {
3047
+ 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),
3049
+ children: [/* @__PURE__ */ T("div", {
2811
3050
  className: "flex items-center gap-3 border-b border-slate-800 px-4 py-3 pr-16",
2812
- children: /* @__PURE__ */ w(Cn, {
3051
+ children: /* @__PURE__ */ T(jn, {
2813
3052
  className: "truncate text-sm font-medium",
2814
3053
  children: e?.name || "附件预览"
2815
3054
  })
2816
- }), /* @__PURE__ */ w("div", {
2817
- className: n("flex items-center justify-center overflow-auto bg-slate-950", t ? "h-full p-4 pb-[calc(var(--safe-area-bottom)+1rem)]" : "max-h-[calc(100vh-7rem)] p-4"),
2818
- children: e ? e.type.startsWith("image/") ? /* @__PURE__ */ w("img", {
3055
+ }), /* @__PURE__ */ T("div", {
3056
+ className: p("flex items-center justify-center overflow-auto bg-slate-950", t ? "h-full p-4 pb-[calc(var(--safe-area-bottom)+1rem)]" : "max-h-[calc(100vh-7rem)] p-4"),
3057
+ children: e ? e.type.startsWith("image/") ? /* @__PURE__ */ T("img", {
2819
3058
  src: e.url,
2820
3059
  alt: e.name,
2821
- className: n("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)]"),
2822
- style: Tn(t, r),
3060
+ 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),
2823
3062
  onLoad: (e) => {
2824
3063
  let t = e.currentTarget;
2825
- a({
3064
+ i({
2826
3065
  width: t.naturalWidth,
2827
3066
  height: t.naturalHeight
2828
3067
  });
2829
3068
  }
2830
- }) : /* @__PURE__ */ w("iframe", {
3069
+ }) : /* @__PURE__ */ T("iframe", {
2831
3070
  src: e.url,
2832
3071
  title: e.name,
2833
3072
  className: "h-full min-h-[24rem] w-full rounded-xl border border-slate-800 bg-white"
@@ -2838,7 +3077,7 @@ function Dn({ attachment: e, isMobile: t, previewImageSize: r, onClose: i, onIma
2838
3077
  }
2839
3078
  //#endregion
2840
3079
  //#region src/utils/context.js
2841
- function On(e) {
3080
+ function In(e) {
2842
3081
  if (typeof e == "number" && Number.isFinite(e) && e > 0) return e;
2843
3082
  if (typeof e == "string" && e.trim()) {
2844
3083
  let t = Number(e);
@@ -2846,7 +3085,7 @@ function On(e) {
2846
3085
  }
2847
3086
  return null;
2848
3087
  }
2849
- function kn(e) {
3088
+ function Ln(e) {
2850
3089
  return /[\u3400-\u4DBF\u4E00-\u9FFF\uF900-\uFAFF]/u.test(e);
2851
3090
  }
2852
3091
  function $(e) {
@@ -2854,7 +3093,7 @@ function $(e) {
2854
3093
  if (!t) return 0;
2855
3094
  let n = 0, r = 0;
2856
3095
  for (let e of t) {
2857
- if (kn(e)) {
3096
+ if (Ln(e)) {
2858
3097
  n += 1;
2859
3098
  continue;
2860
3099
  }
@@ -2862,24 +3101,24 @@ function $(e) {
2862
3101
  }
2863
3102
  return Math.max(1, n + Math.ceil(r / 4));
2864
3103
  }
2865
- function An(e) {
3104
+ function Rn(e) {
2866
3105
  if (!e) return 0;
2867
3106
  if (e.role === "system") return e.eventType === "context_checkpoint" ? $(e.summary || "") : 0;
2868
3107
  let t = $(e.content || "");
2869
3108
  return e.tools && (t += Object.values(e.tools).reduce((e, t) => e + $(t?.name || "") + $(t?.args || "") + $(t?.output || ""), 0)), t;
2870
3109
  }
2871
- function jn(e) {
2872
- return e ? On(e.context_window_tokens) ?? On(e?.limits?.context_window_tokens) : null;
3110
+ function zn(e) {
3111
+ return e ? In(e.context_window_tokens) ?? In(e?.limits?.context_window_tokens) : null;
2873
3112
  }
2874
- function Mn(e) {
2875
- return e ? On(e.auto_compact_threshold_percentage) ?? 84 : 84;
3113
+ function Bn(e) {
3114
+ return e ? In(e.auto_compact_threshold_percentage) ?? 84 : 84;
2876
3115
  }
2877
- function Nn({ messages: e, draftInput: t, selectedModel: n }) {
2878
- let r = jn(n);
3116
+ function Vn({ messages: e, draftInput: t, selectedModel: n }) {
3117
+ let r = zn(n);
2879
3118
  if (!r) return null;
2880
3119
  let i = [...e || []].reverse().find((e) => e?.role === "system" && e?.eventType === "context_checkpoint" && e?.status === "running");
2881
3120
  if (i) {
2882
- let e = An(i);
3121
+ let e = Rn(i);
2883
3122
  return {
2884
3123
  label: "正在压缩上下文…",
2885
3124
  phase: "compressing",
@@ -2888,10 +3127,10 @@ function Nn({ messages: e, draftInput: t, selectedModel: n }) {
2888
3127
  percent: Math.min(100, Math.max(0, Math.round(e / r * 100)))
2889
3128
  };
2890
3129
  }
2891
- let a = (e || []).reduce((e, t) => e + An(t), 0) + $(t || "");
3130
+ let a = (e || []).reduce((e, t) => e + Rn(t), 0) + $(t || "");
2892
3131
  if (a <= 0) return null;
2893
3132
  let o = Math.min(100, Math.max(0, Math.round(a / r * 100)));
2894
- return o >= Mn(n) ? {
3133
+ return o >= Bn(n) ? {
2895
3134
  label: `估算上下文 ${o}% · 即将压缩`,
2896
3135
  phase: "warning",
2897
3136
  percent: o,
@@ -2907,45 +3146,62 @@ function Nn({ messages: e, draftInput: t, selectedModel: n }) {
2907
3146
  }
2908
3147
  //#endregion
2909
3148
  //#region src/components/chat/ConnectedMessageList.tsx
2910
- function Pn({ agentName: e, isMobile: t, onDeleteFeedback: n, onSubmitFeedback: r, onRespondToApproval: i, onStopGeneration: a, onCancelRemote: o, checkpointResumeEnabled: s = !1, onResumeCheckpoint: c }) {
2911
- let l = G((e) => e.messages), u = I((e) => e.currentSessionId), d = F((e) => !!(e.getSessionActivity(u) && e.isSessionStreaming(u))), f = F((e) => e.getSessionActivity(u)), p = X((e) => e.getSessionCheckpoints(u)), h = _((e) => e.input), g = P((e) => e.availableModels), v = P((e) => e.selectedModel), ee = _((e) => e.previewAttachment), te = _((e) => e.previewImageSize), y = A(null), b = A(!0), x = A(!1), ne = A(0), S = A(d), C = se(() => g.find((e) => e.id === v) || null, [g, v]), re = se(() => Nn({
2912
- messages: l,
2913
- draftInput: h,
2914
- selectedModel: C
3149
+ 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({
3151
+ messages: u,
3152
+ draftInput: v,
3153
+ selectedModel: O
2915
3154
  }), [
2916
- h,
2917
- l,
2918
- C
3155
+ v,
3156
+ u,
3157
+ O
2919
3158
  ]);
2920
- return k(() => {
2921
- S.current = d;
2922
- }, [d]), k(() => {
2923
- let e = y.current;
3159
+ return A(() => {
3160
+ w.current = f;
3161
+ }, [f]), A(() => {
3162
+ let e = x.current;
2924
3163
  if (!e) return;
2925
3164
  let t = () => {
2926
3165
  let t = e.scrollHeight - e.scrollTop - e.clientHeight, n = e.scrollTop < ne.current - 2;
2927
- if (ne.current = e.scrollTop, S.current && n) {
2928
- x.current = !0, b.current = !1;
3166
+ if (ne.current = e.scrollTop, e.scrollTop < 200 && d && g && g.offset > 0 && !g.isLoadingOlder && !D.current && l) {
3167
+ let t = e.scrollHeight;
3168
+ D.current = !0, l(d).then(() => {
3169
+ requestAnimationFrame(() => {
3170
+ let e = x.current;
3171
+ if (!e) return;
3172
+ let n = e.scrollHeight - t;
3173
+ e.scrollTop += n, ne.current = e.scrollTop;
3174
+ });
3175
+ }).finally(() => {
3176
+ D.current = !1;
3177
+ });
3178
+ }
3179
+ if (w.current && n) {
3180
+ C.current = !0, S.current = !1;
2929
3181
  return;
2930
3182
  }
2931
- if (x.current) {
3183
+ if (C.current) {
2932
3184
  let e = t <= 12;
2933
- x.current = !e, b.current = e;
3185
+ C.current = !e, S.current = e;
2934
3186
  return;
2935
3187
  }
2936
- b.current = t < 96;
3188
+ S.current = t < 96;
2937
3189
  };
2938
3190
  return t(), e.addEventListener("scroll", t, { passive: !0 }), () => e.removeEventListener("scroll", t);
2939
- }, []), k(() => {
2940
- let e = y.current;
2941
- !e || !b.current || (e.scrollTop = e.scrollHeight, ne.current = e.scrollTop);
2942
- }, [l, d]), /* @__PURE__ */ T(ae, { children: [/* @__PURE__ */ w(m, {
3191
+ }, [
3192
+ g,
3193
+ d,
3194
+ l
3195
+ ]), A(() => {
3196
+ let e = x.current;
3197
+ !e || !S.current || (e.scrollTop = e.scrollHeight, ne.current = e.scrollTop);
3198
+ }, [u, f]), /* @__PURE__ */ E(re, { children: [/* @__PURE__ */ T(m, {
2943
3199
  agentName: e,
2944
3200
  isMobile: t,
2945
- isStreaming: d,
2946
- activity: f,
2947
- contextIndicator: re,
2948
- messages: l,
3201
+ isStreaming: f,
3202
+ activity: p,
3203
+ contextIndicator: ie,
3204
+ messages: u,
2949
3205
  onDeleteFeedback: n,
2950
3206
  onOpenAttachmentPreview: (e) => {
2951
3207
  _.getState().setPreviewAttachment(e), _.getState().setPreviewImageSize(null);
@@ -2954,10 +3210,10 @@ function Pn({ agentName: e, isMobile: t, onDeleteFeedback: n, onSubmitFeedback:
2954
3210
  onSubmitFeedback: r,
2955
3211
  onStopGeneration: a,
2956
3212
  onCancelRemote: o,
2957
- checkpoints: s ? p : [],
3213
+ checkpoints: s ? h : [],
2958
3214
  onResumeCheckpoint: c,
2959
- scrollRef: y
2960
- }), /* @__PURE__ */ w(Dn, {
3215
+ scrollRef: x
3216
+ }), /* @__PURE__ */ T(Fn, {
2961
3217
  attachment: ee,
2962
3218
  isMobile: t,
2963
3219
  previewImageSize: te,
@@ -2969,7 +3225,7 @@ function Pn({ agentName: e, isMobile: t, onDeleteFeedback: n, onSubmitFeedback:
2969
3225
  }
2970
3226
  //#endregion
2971
3227
  //#region src/utils/attachment.ts
2972
- function Fn(e) {
3228
+ function Un(e) {
2973
3229
  return [
2974
3230
  e.name,
2975
3231
  e.size,
@@ -2977,105 +3233,125 @@ function Fn(e) {
2977
3233
  e.type
2978
3234
  ].join(":");
2979
3235
  }
2980
- function In(e, t) {
3236
+ function Wn(e, t) {
2981
3237
  let n = /* @__PURE__ */ new Map();
2982
- for (let t of e) n.set(Fn(t), t);
2983
- for (let e of t) n.set(Fn(e), e);
3238
+ for (let t of e) n.set(Un(t), t);
3239
+ for (let e of t) n.set(Un(e), e);
2984
3240
  return Array.from(n.values());
2985
3241
  }
2986
- function Ln(e) {
3242
+ function Gn(e) {
2987
3243
  return Array.from(e.clipboardData.items || []).filter((e) => e.kind === "file").map((e) => e.getAsFile()).filter((e) => !!e);
2988
3244
  }
2989
3245
  //#endregion
2990
3246
  //#region src/components/chat/ConnectedComposer.tsx
2991
- function Rn({ composerMaxHeight: e, submitDraft: t, stopGeneration: n, cancelRemote: r, isMobile: i }) {
2992
- let a = _((e) => e.input), o = _((e) => e.attachments), s = I((e) => e.currentSessionId), c = F((e) => !!(e.getSessionActivity(s) && e.isSessionStreaming(s))), l = _((e) => e.queuedDrafts), u = G((e) => e.messages), d = P((e) => e.availableModels), f = P((e) => e.selectedModel), m = A(null), h = A(null), g = se(() => d.find((e) => e.id === f) || null, [d, f]), v = se(() => Nn({
2993
- messages: u,
2994
- draftInput: a,
3247
+ 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({
3249
+ messages: d,
3250
+ draftInput: o,
2995
3251
  selectedModel: g
2996
3252
  }), [
2997
- a,
2998
- u,
3253
+ o,
3254
+ d,
2999
3255
  g
3000
- ]), ee = O((e, n) => {
3256
+ ]), y = k((e, n) => {
3001
3257
  !e && n.length === 0 || (_.getState().setInput(""), _.getState().setAttachments([]), t(e, n));
3002
3258
  }, [t]);
3003
- k(() => {
3259
+ A(() => {
3004
3260
  h.current && (h.current.style.height = "auto", h.current.style.height = `${Math.min(h.current.scrollHeight, e)}px`);
3005
- }, [a, e]);
3006
- let te = (t) => {
3261
+ }, [o, e]);
3262
+ let b = (t) => {
3007
3263
  _.getState().setInput(t.target.value), t.target.style.height = "auto", t.target.style.height = `${Math.min(t.target.scrollHeight, e)}px`;
3008
- }, y = (e) => {
3009
- e.length && _.getState().setAttachments((t) => In(t, e));
3264
+ }, ee = (e) => {
3265
+ e.length && _.getState().setAttachments((t) => Wn(t, e));
3010
3266
  };
3011
- return /* @__PURE__ */ w(p, {
3012
- attachments: o,
3267
+ return /* @__PURE__ */ T(a, {
3268
+ attachments: s,
3013
3269
  composerContextIndicator: v,
3014
3270
  composerMaxHeight: e,
3015
3271
  fileInputRef: m,
3016
- input: a,
3272
+ input: o,
3017
3273
  isMobile: i,
3018
- isStreaming: c,
3019
- queuedDrafts: l,
3020
- onAppendAttachments: y,
3021
- onInputChange: te,
3274
+ isStreaming: l,
3275
+ queuedDrafts: u,
3276
+ onAppendAttachments: ee,
3277
+ onInputChange: b,
3022
3278
  onPaste: (e) => {
3023
- let t = Ln(e);
3024
- t.length && (e.preventDefault(), e.stopPropagation(), y(t));
3279
+ let t = Gn(e);
3280
+ t.length && (e.preventDefault(), e.stopPropagation(), ee(t));
3025
3281
  },
3026
3282
  onRemoveAttachment: (e) => _.getState().setAttachments((t) => t.filter((t, n) => n !== e)),
3027
3283
  onStopGeneration: n,
3028
3284
  onCancelRemote: r,
3029
- onSubmit: ee,
3285
+ onSubmit: y,
3030
3286
  textareaRef: h
3031
3287
  });
3032
3288
  }
3033
3289
  //#endregion
3034
3290
  //#region src/api/session.ts
3035
- async function zn(e, t) {
3036
- return (await W("ListSessions", { AgentId: e }, t)).Sessions ?? [];
3291
+ async function qn(e, t) {
3292
+ let n = await K("ListSessions", {
3293
+ AgentId: e,
3294
+ Page: t?.page,
3295
+ PageSize: t?.pageSize
3296
+ }, t);
3297
+ return {
3298
+ Sessions: n.Sessions ?? [],
3299
+ Total: Number.isFinite(Number(n.Total)) ? Number(n.Total) : n.Sessions?.length ?? 0,
3300
+ Page: Number.isFinite(Number(n.Page)) ? Number(n.Page) : t?.page ?? 1,
3301
+ PageSize: Number.isFinite(Number(n.PageSize)) ? Number(n.PageSize) : t?.pageSize ?? n.Sessions?.length ?? 0
3302
+ };
3037
3303
  }
3038
- async function Bn(e, t) {
3039
- return (await W("CreateSession", { AgentId: e }, t)).Session;
3304
+ async function Jn(e, t) {
3305
+ return (await K("CreateSession", { AgentId: e }, t)).Session;
3040
3306
  }
3041
- async function Vn(e, t) {
3042
- await W("DeleteSession", { SessionId: e }, t);
3307
+ async function Yn(e, t) {
3308
+ await K("DeleteSession", { SessionId: e }, t);
3043
3309
  }
3044
3310
  //#endregion
3045
3311
  //#region src/api/events.ts
3046
- async function Hn(e) {
3047
- return W("ListSessionEvents", { SessionId: e });
3312
+ async function Xn(e, t) {
3313
+ let n = await K("ListSessionEvents", {
3314
+ SessionId: e,
3315
+ Offset: t?.offset,
3316
+ Limit: t?.limit
3317
+ }, t);
3318
+ return {
3319
+ Events: n.Events ?? [],
3320
+ Total: Number.isFinite(Number(n.Total)) ? Number(n.Total) : n.Events?.length ?? 0,
3321
+ Offset: Number.isFinite(Number(n.Offset)) ? Number(n.Offset) : t?.offset ?? 0,
3322
+ Limit: Number.isFinite(Number(n.Limit)) ? Number(n.Limit) : t?.limit ?? n.Events?.length ?? 0
3323
+ };
3048
3324
  }
3049
3325
  //#endregion
3050
3326
  //#region src/api/run.ts
3051
- async function Un(e, t) {
3052
- return Fe("RunAgent", e, t);
3327
+ async function Zn(e, t) {
3328
+ return ze("RunAgent", e, t);
3053
3329
  }
3054
3330
  //#endregion
3055
3331
  //#region src/api/checkpoints.ts
3056
- async function Wn(e, t) {
3332
+ async function Qn(e, t) {
3057
3333
  let n = {
3058
3334
  AgentId: e.agentId,
3059
3335
  SessionId: e.sessionId
3060
3336
  };
3061
- return e.runId && (n.RunId = e.runId), W("ListSessionCheckpoints", n, t);
3337
+ return e.runId && (n.RunId = e.runId), K("ListSessionCheckpoints", n, t);
3062
3338
  }
3063
- async function Gn(e, t) {
3064
- return W("PreviewCheckpointResume", {
3339
+ async function $n(e, t) {
3340
+ return K("PreviewCheckpointResume", {
3065
3341
  AgentId: e.agentId,
3066
3342
  SessionId: e.sessionId,
3067
3343
  RunId: e.runId,
3068
3344
  CheckpointId: e.checkpointId
3069
3345
  }, t);
3070
3346
  }
3071
- async function Kn(e, t) {
3347
+ async function er(e, t) {
3072
3348
  let n = {
3073
3349
  AgentId: e.agentId,
3074
3350
  SessionId: e.sessionId
3075
3351
  };
3076
- return e.runId && (n.RunId = e.runId), e.checkpointId && (n.CheckpointId = e.checkpointId), W("ListToolReceipts", n, t);
3352
+ return e.runId && (n.RunId = e.runId), e.checkpointId && (n.CheckpointId = e.checkpointId), K("ListToolReceipts", n, t);
3077
3353
  }
3078
- async function qn(e, t) {
3354
+ async function tr(e, t) {
3079
3355
  let n = {
3080
3356
  AgentId: e.agentId,
3081
3357
  SessionId: e.sessionId,
@@ -3083,28 +3359,28 @@ async function qn(e, t) {
3083
3359
  CheckpointId: e.checkpointId,
3084
3360
  Stream: !0
3085
3361
  };
3086
- return e.resumeAttemptId && (n.ResumeAttemptId = e.resumeAttemptId), e.invocationId && (n.InvocationId = e.invocationId), Fe("ResumeRun", n, t);
3362
+ return e.resumeAttemptId && (n.ResumeAttemptId = e.resumeAttemptId), e.invocationId && (n.InvocationId = e.invocationId), ze("ResumeRun", n, t);
3087
3363
  }
3088
3364
  //#endregion
3089
3365
  //#region src/api/workspace.ts
3090
- async function Jn(e, t, n) {
3091
- return W("ListWorkspaceFiles", {
3366
+ async function nr(e, t, n) {
3367
+ return K("ListWorkspaceFiles", {
3092
3368
  AgentId: e,
3093
3369
  Path: t,
3094
3370
  Recursive: n
3095
3371
  });
3096
3372
  }
3097
- async function Yn(e) {
3098
- return Ne("AddWorkspaceFile", e);
3373
+ async function rr(e) {
3374
+ return Le("AddWorkspaceFile", e);
3099
3375
  }
3100
- async function Xn(e, t) {
3101
- return W("DeleteWorkspaceFile", {
3376
+ async function ir(e, t) {
3377
+ return K("DeleteWorkspaceFile", {
3102
3378
  AgentId: e,
3103
3379
  Path: t
3104
3380
  });
3105
3381
  }
3106
- async function Zn(e, t, n) {
3107
- return Pe("GetWorkspaceFileContent", {
3382
+ async function ar(e, t, n) {
3383
+ return Re("GetWorkspaceFileContent", {
3108
3384
  AgentId: e,
3109
3385
  FilePath: t
3110
3386
  }, {
@@ -3114,137 +3390,137 @@ async function Zn(e, t, n) {
3114
3390
  }
3115
3391
  //#endregion
3116
3392
  //#region src/api/upload.ts
3117
- async function Qn(e, t) {
3118
- return Ne("UploadFile", e, t);
3393
+ async function or(e, t) {
3394
+ return Le("UploadFile", e, t);
3119
3395
  }
3120
3396
  //#endregion
3121
3397
  //#region src/core/api/facade.ts
3122
- var $n = class {
3398
+ var sr = class {
3123
3399
  async listSessions(e, t) {
3124
- return await zn(e, t);
3400
+ return qn(e, t);
3125
3401
  }
3126
3402
  async createSession(e, t) {
3127
- return { SessionId: (await Bn(e, t)).SessionId };
3403
+ return { SessionId: (await Jn(e, t)).SessionId };
3128
3404
  }
3129
3405
  async deleteSession(e, t) {
3130
- await Vn(e, t);
3406
+ await Yn(e, t);
3131
3407
  }
3132
- async listSessionEvents(e) {
3133
- return Hn(e);
3408
+ async listSessionEvents(e, t) {
3409
+ return Xn(e, t);
3134
3410
  }
3135
3411
  async listSessionCheckpoints(e, t) {
3136
- return Wn(e, t);
3412
+ return Qn(e, t);
3137
3413
  }
3138
3414
  async previewCheckpointResume(e, t) {
3139
- return Gn(e, t);
3415
+ return $n(e, t);
3140
3416
  }
3141
3417
  async listToolReceipts(e, t) {
3142
- return Kn(e, t);
3418
+ return er(e, t);
3143
3419
  }
3144
3420
  async runAgent(e, t) {
3145
- return Un(e, t);
3421
+ return Zn(e, t);
3146
3422
  }
3147
3423
  async resumeRun(e, t) {
3148
- return qn(e, t);
3424
+ return tr(e, t);
3149
3425
  }
3150
3426
  async subscribeRunEvents(e, t) {
3151
- return Ie("SubscribeRunEvents", {
3427
+ return Be("SubscribeRunEvents", {
3152
3428
  SessionId: e.sessionId,
3153
3429
  InvocationId: e.invocationId,
3154
3430
  AfterSeqId: String(e.afterSeqId)
3155
3431
  }, t);
3156
3432
  }
3157
3433
  async cancelRun(e, t, n) {
3158
- return W("CancelRun", {
3434
+ return K("CancelRun", {
3159
3435
  AgentId: e,
3160
3436
  InvocationId: t
3161
3437
  }, n);
3162
3438
  }
3163
3439
  async getResponseFeedback(e, t) {
3164
- return W("GetResponseFeedback", e, t);
3440
+ return K("GetResponseFeedback", e, t);
3165
3441
  }
3166
3442
  async upsertResponseFeedback(e, t) {
3167
- return W("UpsertResponseFeedback", e, t);
3443
+ return K("UpsertResponseFeedback", e, t);
3168
3444
  }
3169
3445
  async deleteResponseFeedback(e, t) {
3170
- await W("DeleteResponseFeedback", e, t);
3446
+ await K("DeleteResponseFeedback", e, t);
3171
3447
  }
3172
3448
  async listWorkspaceFiles(e, t, n) {
3173
- return Jn(e, t, n);
3449
+ return nr(e, t, n);
3174
3450
  }
3175
3451
  async addWorkspaceFile(e) {
3176
- return Yn(e);
3452
+ return rr(e);
3177
3453
  }
3178
3454
  async deleteWorkspaceFile(e, t) {
3179
- await Xn(e, t);
3455
+ await ir(e, t);
3180
3456
  }
3181
3457
  async getWorkspaceFileContent(e, t, n) {
3182
- return Zn(e, t, n);
3458
+ return ar(e, t, n);
3183
3459
  }
3184
3460
  async listAgentModels(e) {
3185
- return Re(e);
3461
+ return He(e);
3186
3462
  }
3187
3463
  async getAgentUiBootstrap() {
3188
- return Le();
3464
+ return Ve();
3189
3465
  }
3190
3466
  async uploadFile(e, t) {
3191
- return Qn(e, t);
3467
+ return or(e, t);
3192
3468
  }
3193
- }, er = new $n(), tr = D.lazy(() => import("./ArtifactsPanel--CQyb4ZY.js").then((e) => ({ default: e.ArtifactsPanel })));
3194
- function nr({ apiAdapter: e, routeShell: n } = {}) {
3195
- let r = e || er, i = N((e) => e.agentId), a = I((e) => e.currentSessionId), o = F((e) => e.isStreaming), s = _((e) => e.sidebarOpen), c = _((e) => e.mobileSidebarOpen), l = _((e) => e.mobileActionsOpen), u = N((e) => e.agentName), d = P((e) => e.selectedModel), f = P((e) => e.availableModels), p = P((e) => e.modelSource), m = P((e) => e.modelCatalogLoaded), h = P((e) => e.thinkingMode), v = N((e) => e.agentFramework), b = N((e) => e.workspaceFiles), x = N((e) => e.accessMode), S = _((e) => e.workspacePanelOpen), C = _((e) => e.workspacePanelWidth), ie = _((e) => e.workspacePanelFullscreen), E = N((e) => e.apiFormats), D = N((e) => e.capabilities), se = re((e) => e.visible && !!e.content), ce = A([]), j = A(null), { isMobile: M, viewportHeight: le } = Ae(), ue = he({
3196
- isMobile: M,
3469
+ }, cr = new sr(), lr = O.lazy(() => import("./ArtifactsPanel-yLxSIEFw.js").then((e) => ({ default: e.ArtifactsPanel }))), ur = O.lazy(() => import("./NativeTerminalPanel-Bzdmm_Au.js").then((e) => e.n).then((e) => ({ default: e.NativeTerminalPanel })));
3470
+ 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,
3197
3473
  viewportHeight: le
3198
- }), { fetchSessions: de, loadSession: fe, createNewSession: pe, deleteSession: me, currentSessionIdRef: L, agentIdRef: R, runSubscriptionAbortRef: z } = hn({
3199
- agentId: i,
3200
- currentSessionId: a,
3201
- isMobile: M,
3202
- uiCapabilities: D,
3203
- api: r,
3474
+ }), { fetchSessions: de, loadMoreSessions: fe, loadSession: pe, loadOlderSessionEvents: me, createNewSession: he, deleteSession: ge, currentSessionIdRef: z, agentIdRef: B, runSubscriptionAbortRef: _e } = Cn({
3475
+ agentId: o,
3476
+ currentSessionId: s,
3477
+ isMobile: L,
3478
+ uiCapabilities: M,
3479
+ api: a,
3204
3480
  resetCompaction: () => {},
3205
- disconnectRun: () => j.current?.()
3206
- }), B = O((e) => {
3481
+ disconnectRun: () => ce.current?.()
3482
+ }), ye = k((e) => {
3207
3483
  if (!e) return;
3208
3484
  let t = () => {
3209
- de(R.current, e), L.current === e && !F.getState().isStreaming && fe(e);
3485
+ de(B.current, e), z.current === e && !I.getState().isStreaming && pe(e);
3210
3486
  };
3211
3487
  queueMicrotask(t), window.setTimeout(t, 1800), window.setTimeout(t, 5e3);
3212
3488
  }, [
3213
- R,
3214
- L,
3489
+ B,
3490
+ z,
3215
3491
  de,
3216
- fe
3217
- ]), { submitDraft: ge, stopGeneration: _e, disconnectRun: ye, resumeCheckpoint: be } = sn({
3218
- agentId: i,
3219
- currentSessionId: a,
3220
- agentFramework: v,
3221
- apiFormats: E,
3222
- selectedModel: d,
3223
- thinkingMode: h,
3224
- uiCapabilities: D,
3225
- isMobile: M,
3226
- api: r,
3227
- currentSessionIdRef: L,
3228
- agentIdRef: R,
3229
- queuedDraftRef: ce,
3230
- onRunSettled: B
3492
+ pe
3493
+ ]), { submitDraft: be, stopGeneration: xe, disconnectRun: Se, resumeCheckpoint: Ce } = pn({
3494
+ agentId: o,
3495
+ currentSessionId: s,
3496
+ agentFramework: x,
3497
+ apiFormats: ae,
3498
+ selectedModel: p,
3499
+ thinkingMode: te,
3500
+ uiCapabilities: M,
3501
+ isMobile: L,
3502
+ api: a,
3503
+ currentSessionIdRef: z,
3504
+ agentIdRef: B,
3505
+ queuedDraftRef: se,
3506
+ onRunSettled: ye
3231
3507
  });
3232
- k(() => {
3233
- j.current = ye;
3234
- }, [ye]);
3235
- let xe = O(() => {
3236
- let e = L.current;
3237
- z.current?.abort(), F.getState().stopActivity(), F.getState().stopSessionActivity(e), _e();
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();
3238
3514
  }, [
3239
- L,
3240
3515
  z,
3241
- _e
3242
- ]), Se = O(async () => {
3243
- let e = L.current, t = F.getState(), n = t.currentRunId || t.getSessionActivity(e)?.runId || "";
3516
+ _e,
3517
+ xe
3518
+ ]), Ee = k(async () => {
3519
+ let e = z.current, t = I.getState(), n = t.currentRunId || t.getSessionActivity(e)?.runId || "";
3244
3520
  if (n) try {
3245
- await r.cancelRun(i, n), F.getState().stopSessionActivity(e, "取消请求已发送,后台运行会停在最近 checkpoint。");
3521
+ await a.cancelRun(o, n), I.getState().stopSessionActivity(e, "取消请求已发送,后台运行会停在最近 checkpoint。");
3246
3522
  } catch (t) {
3247
- console.warn("[App] cancelRun failed:", t), F.getState().updateActivity({
3523
+ console.warn("[App] cancelRun failed:", t), I.getState().updateActivity({
3248
3524
  sessionId: e,
3249
3525
  status: "failed",
3250
3526
  phase: "取消请求失败",
@@ -3252,169 +3528,184 @@ function nr({ apiAdapter: e, routeShell: n } = {}) {
3252
3528
  countEvent: !1
3253
3529
  });
3254
3530
  }
3255
- B(e);
3531
+ ye(e);
3256
3532
  }, [
3257
- r,
3258
- i,
3259
- L,
3260
- B
3261
- ]), { submitResponseFeedback: Ce, deleteResponseFeedback: Te, respondToApproval: De } = cn({
3262
- agentId: i,
3263
- currentSessionId: a,
3264
- isStreaming: o,
3265
- api: r,
3266
- submitDraft: ge
3533
+ a,
3534
+ o,
3535
+ z,
3536
+ ye
3537
+ ]), { submitResponseFeedback: De, deleteResponseFeedback: Oe, respondToApproval: ke } = mn({
3538
+ agentId: o,
3539
+ currentSessionId: s,
3540
+ isStreaming: c,
3541
+ api: a,
3542
+ submitDraft: be
3267
3543
  });
3268
- Ve({ fetchSessions: de }), k(() => {
3269
- R.current = i, L.current = a, ve(i, a);
3544
+ Ge({ fetchSessions: de }), A(() => {
3545
+ B.current = o, z.current = s, we(o, s);
3270
3546
  }, [
3271
- i,
3272
- a,
3273
- R,
3274
- L
3275
- ]), k(() => {
3276
- M ? _.getState().setWorkspacePanelFullscreen(!1) : (_.getState().setMobileSidebarOpen(!1), _.getState().setMobileActionsOpen(!1));
3277
- }, [M]), k(() => {
3278
- S || _.getState().setWorkspacePanelFullscreen(!1);
3279
- }, [S]), k(() => () => {
3280
- z.current?.abort();
3281
- }, [z]);
3282
- let Oe = t(D), ke = !!D.Thinking, V = g({
3283
- workspaceFiles: b,
3284
- accessMode: x
3285
- }), je = ee({ isMobile: M }), H = we({
3286
- capability: D.NativeDashboard,
3287
- agentFramework: v,
3288
- accessMode: x,
3547
+ o,
3548
+ s,
3549
+ B,
3550
+ z
3551
+ ]), A(() => {
3552
+ L ? _.getState().setWorkspacePanelFullscreen(!1) : (_.getState().setMobileSidebarOpen(!1), _.getState().setMobileActionsOpen(!1));
3553
+ }, [L]), A(() => {
3554
+ w || _.getState().setWorkspacePanelFullscreen(!1);
3555
+ }, [w]), A(() => () => {
3556
+ _e.current?.abort();
3557
+ }, [_e]);
3558
+ let je = t(M), Ne = !!M.Thinking, V = g({
3559
+ workspaceFiles: S,
3560
+ accessMode: C
3561
+ }), Pe = y({ isMobile: L }), H = Ae({
3562
+ capability: M.NativeDashboard,
3563
+ agentFramework: x,
3564
+ accessMode: C,
3289
3565
  origin: window.location.origin
3290
- }), Me = !Oe, U = v === "openclaw" ? "OpenClaw" : v === "hermes" ? "Hermes" : "原生运行时", W = (f.find((e) => e.id === d) || null)?.display_name || d || "", Ne = !M && s && Oe, Pe = /* @__PURE__ */ T("div", {
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", {
3291
3571
  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",
3292
3572
  children: [
3293
- /* @__PURE__ */ w(gn, {
3294
- uiCapabilities: D,
3295
- createNewSession: pe,
3296
- deleteSession: me,
3297
- loadSession: fe
3573
+ /* @__PURE__ */ T(wn, {
3574
+ uiCapabilities: M,
3575
+ createNewSession: he,
3576
+ deleteSession: ge,
3577
+ loadSession: pe,
3578
+ loadMoreSessions: fe
3298
3579
  }),
3299
- /* @__PURE__ */ T("main", {
3580
+ /* @__PURE__ */ E("main", {
3300
3581
  className: "relative flex min-w-0 flex-1 flex-col bg-white dark:bg-slate-900",
3301
- children: [/* @__PURE__ */ w(ne, {
3302
- agentName: u,
3303
- currentSessionId: a,
3304
- nativeLauncherMode: Me,
3305
- isMobile: M,
3306
- sidebarOpen: s,
3307
- mobileSidebarOpen: c,
3582
+ children: [/* @__PURE__ */ T(n, {
3583
+ agentName: f,
3584
+ currentSessionId: s,
3585
+ nativeLauncherMode: U,
3586
+ isMobile: L,
3587
+ sidebarOpen: l,
3588
+ mobileSidebarOpen: u,
3308
3589
  onToggleSidebar: () => {
3309
- M ? _.getState().toggleMobileSidebar() : _.getState().toggleSidebar();
3590
+ L ? _.getState().toggleMobileSidebar() : _.getState().toggleSidebar();
3310
3591
  },
3311
- availableModels: f,
3312
- selectedModel: d,
3592
+ availableModels: m,
3593
+ selectedModel: p,
3313
3594
  onSelectModel: (e) => {
3314
- P.getState().setSelectedModel(e), M && _.getState().setMobileActionsOpen(!1);
3595
+ F.getState().setSelectedModel(e), L && _.getState().setMobileActionsOpen(!1);
3315
3596
  },
3316
- selectedModelLabel: W,
3317
- modelCatalogLoaded: m,
3318
- modelSource: p,
3319
- thinkingEnabled: ke,
3320
- thinkingMode: h,
3321
- onSelectThinkingMode: (e) => P.getState().setThinkingMode(Ee(e)),
3322
- mobileActionsOpen: l,
3597
+ selectedModelLabel: Ie,
3598
+ modelCatalogLoaded: v,
3599
+ modelSource: h,
3600
+ thinkingEnabled: Ne,
3601
+ thinkingMode: te,
3602
+ onSelectThinkingMode: (e) => F.getState().setThinkingMode(Me(e)),
3603
+ mobileActionsOpen: d,
3323
3604
  onMobileActionsOpenChange: (e) => _.getState().setMobileActionsOpen(e),
3324
3605
  workspaceEnabled: V,
3325
3606
  onOpenWorkspace: () => _.getState().setWorkspacePanelOpen(!0),
3326
3607
  nativeManagementLink: H,
3327
- nativeTerminal: D.NativeTerminal
3328
- }), Me ? /* @__PURE__ */ w(te, {
3329
- productLabel: U,
3608
+ nativeTerminal: M.NativeTerminal
3609
+ }), U ? /* @__PURE__ */ T(b, {
3610
+ productLabel: W,
3330
3611
  nativeManagementLink: H,
3331
- nativeTerminal: D.NativeTerminal,
3612
+ nativeTerminal: M.NativeTerminal,
3332
3613
  workspaceEnabled: V,
3333
3614
  onOpenWorkspace: () => _.getState().setWorkspacePanelOpen(!0)
3334
- }) : /* @__PURE__ */ T(ae, { children: [/* @__PURE__ */ w(Pn, {
3335
- agentName: u,
3336
- isMobile: M,
3337
- onDeleteFeedback: Te,
3338
- onSubmitFeedback: Ce,
3339
- onRespondToApproval: De,
3340
- onStopGeneration: xe,
3341
- onCancelRemote: D.StopRun ? Se : void 0,
3342
- checkpointResumeEnabled: D.RunLifecycle.Enabled && D.RunLifecycle.Checkpoints && D.RunLifecycle.CheckpointResume,
3343
- onResumeCheckpoint: be
3344
- }), /* @__PURE__ */ w(Rn, {
3615
+ }) : /* @__PURE__ */ E(re, { children: [/* @__PURE__ */ T(Hn, {
3616
+ 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
3626
+ }), /* @__PURE__ */ T(Kn, {
3345
3627
  composerMaxHeight: ue,
3346
- submitDraft: ge,
3347
- stopGeneration: xe,
3348
- cancelRemote: D.StopRun ? Se : void 0,
3349
- isMobile: M
3628
+ submitDraft: be,
3629
+ stopGeneration: Te,
3630
+ cancelRemote: M.StopRun ? Ee : void 0,
3631
+ isMobile: L
3350
3632
  })] })]
3351
3633
  }),
3352
- /* @__PURE__ */ w(y, {
3353
- agentId: i,
3354
- capability: b,
3355
- workspacePanelOpen: S,
3356
- workspacePanelWidth: C,
3357
- workspacePanelFullscreen: ie,
3358
- isMobile: M,
3634
+ /* @__PURE__ */ T(ee, {
3635
+ agentId: o,
3636
+ capability: S,
3637
+ workspacePanelOpen: w,
3638
+ workspacePanelWidth: D,
3639
+ workspacePanelFullscreen: O,
3640
+ isMobile: L,
3359
3641
  workspaceEnabled: V,
3360
- workspaceFiles: b,
3361
- workspacePanelPresentation: je,
3642
+ workspaceFiles: S,
3643
+ workspacePanelPresentation: Pe,
3362
3644
  closeWorkspacePanel: () => {
3363
3645
  _.getState().setWorkspacePanelFullscreen(!1), _.getState().setWorkspacePanelOpen(!1);
3364
3646
  },
3365
3647
  handleWorkspacePanelResizeStart: (e) => {
3366
- if (ie || M) return;
3648
+ if (O || L) return;
3367
3649
  e.preventDefault();
3368
- let t = e.clientX, n = C, r = Oe && Ne ? 280 : 0, i = document.body.style.cursor, a = document.body.style.userSelect;
3650
+ let t = e.clientX, n = D, r = je && G ? 280 : 0, i = document.body.style.cursor, a = document.body.style.userSelect;
3369
3651
  document.body.style.cursor = "col-resize", document.body.style.userSelect = "none";
3370
3652
  let o = (e) => {
3371
3653
  let i = n + t - e.clientX;
3372
- _.getState().setWorkspacePanelWidth(dt(i, window.innerWidth, r));
3654
+ _.getState().setWorkspacePanelWidth(ht(i, window.innerWidth, r));
3373
3655
  }, s = () => {
3374
3656
  document.body.style.cursor = i, document.body.style.userSelect = a, window.removeEventListener("pointermove", o), window.removeEventListener("pointerup", s), window.removeEventListener("pointercancel", s);
3375
3657
  };
3376
3658
  window.addEventListener("pointermove", o), window.addEventListener("pointerup", s), window.addEventListener("pointercancel", s);
3377
3659
  },
3378
- api: r
3660
+ api: a
3379
3661
  }),
3380
- se && /* @__PURE__ */ w(oe, {
3662
+ N && /* @__PURE__ */ T(ie, {
3381
3663
  fallback: null,
3382
- children: /* @__PURE__ */ w(tr, {})
3383
- })
3664
+ children: /* @__PURE__ */ T(lr, {})
3665
+ }),
3666
+ ze ? /* @__PURE__ */ T(ie, {
3667
+ fallback: null,
3668
+ children: /* @__PURE__ */ T(ur, {
3669
+ capability: M.NativeTerminal,
3670
+ open: !0,
3671
+ sessionId: s,
3672
+ onClose: () => Re(!1)
3673
+ })
3674
+ }) : null
3384
3675
  ]
3385
3676
  });
3386
- return n ? /* @__PURE__ */ w(n, { children: Pe }) : Pe;
3677
+ return i ? /* @__PURE__ */ T(i, { children: Be }) : Be;
3387
3678
  }
3388
3679
  //#endregion
3389
3680
  //#region src/core/transport/sse-transport.ts
3390
- function rr(e, t) {
3681
+ function fr(e, t) {
3391
3682
  if (e.eventName === "__ping__") {
3392
- F.getState().updateActivity({ countEvent: !1 });
3683
+ I.getState().updateActivity({ countEvent: !1 });
3393
3684
  return;
3394
3685
  }
3395
3686
  t.onEvent(e);
3396
3687
  }
3397
- var ir = class {
3688
+ var pr = class {
3398
3689
  protocol = "sse-post";
3399
3690
  async connect(e, t) {
3400
- let n = (await Fe(e.action, e.body || {}, { signal: e.signal })).getReader(), r = new TextDecoder(), i = "", a = !1;
3691
+ let n = (await ze(e.action, e.body || {}, { signal: e.signal })).getReader(), r = new TextDecoder(), i = "", a = !1;
3401
3692
  return (async () => {
3402
3693
  try {
3403
3694
  for (; !a;) {
3404
3695
  let { value: e, done: a } = await n.read();
3405
3696
  if (a) break;
3406
3697
  i += r.decode(e, { stream: !0 });
3407
- let { chunks: o, remainder: s } = st(i);
3698
+ let { chunks: o, remainder: s } = dt(i);
3408
3699
  i = s;
3409
3700
  for (let e of o) {
3410
3701
  if (!e.trim()) continue;
3411
- let n = ot(e);
3702
+ let n = ut(e);
3412
3703
  for (let e of n) {
3413
3704
  if (e.eventName === "__done__") {
3414
3705
  t.onComplete();
3415
3706
  return;
3416
3707
  }
3417
- rr(e, t);
3708
+ fr(e, t);
3418
3709
  }
3419
3710
  }
3420
3711
  }
@@ -3426,27 +3717,27 @@ var ir = class {
3426
3717
  a = !0, n.cancel().catch(() => {});
3427
3718
  };
3428
3719
  }
3429
- }, ar = class {
3720
+ }, mr = class {
3430
3721
  protocol = "sse-get";
3431
3722
  async connect(e, t) {
3432
- let n = (await Ie(e.action, e.params || {}, { signal: e.signal })).getReader(), r = new TextDecoder(), i = "", a = !1;
3723
+ let n = (await Be(e.action, e.params || {}, { signal: e.signal })).getReader(), r = new TextDecoder(), i = "", a = !1;
3433
3724
  return (async () => {
3434
3725
  try {
3435
3726
  for (; !a;) {
3436
3727
  let { value: e, done: a } = await n.read();
3437
3728
  if (a) break;
3438
3729
  i += r.decode(e, { stream: !0 });
3439
- let { chunks: o, remainder: s } = st(i);
3730
+ let { chunks: o, remainder: s } = dt(i);
3440
3731
  i = s;
3441
3732
  for (let e of o) {
3442
3733
  if (!e.trim()) continue;
3443
- let n = ot(e);
3734
+ let n = ut(e);
3444
3735
  for (let e of n) {
3445
3736
  if (e.eventName === "__done__") {
3446
3737
  t.onComplete();
3447
3738
  return;
3448
3739
  }
3449
- rr(e, t);
3740
+ fr(e, t);
3450
3741
  }
3451
3742
  }
3452
3743
  }
@@ -3460,4 +3751,4 @@ var ir = class {
3460
3751
  }
3461
3752
  };
3462
3753
  //#endregion
3463
- export { nr as AgentWorkbench, $n as ApiFacadeImpl, _t as RunEngineImpl, ar as SseGetTransport, ir as SsePostTransport, it as createProtocol };
3754
+ export { dr as AgentWorkbench, sr as ApiFacadeImpl, xt as RunEngineImpl, mr as SseGetTransport, pr as SsePostTransport, ct as createProtocol };