@kingsoftcloud/ksadk-web 0.2.13 → 0.2.15

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 (109) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/dist-ksadk/assets/{ArtifactsPanel-BXcrygCd.js → ArtifactsPanel-BQycE-WQ.js} +1 -1
  3. package/dist-ksadk/assets/{CodeBlock-BcCOwv3F.js → CodeBlock-BBNgCUzs.js} +1 -1
  4. package/dist-ksadk/assets/{MathMessageMarkdown-Drzttgxm.js → MathMessageMarkdown-BX8whIUg.js} +1 -1
  5. package/dist-ksadk/assets/{MermaidBlock-mtRNvScL.js → MermaidBlock-D68B7zAv.js} +6 -6
  6. package/dist-ksadk/assets/{NativeTerminalPanel-LnQxyAZB.js → NativeTerminalPanel-CyV-mhO3.js} +1 -1
  7. package/dist-ksadk/assets/{arc-tHdp8jQa.js → arc-wHztMxfp.js} +1 -1
  8. package/dist-ksadk/assets/architecture-7EHR7CIX-CH1wnW5S.js +1 -0
  9. package/dist-ksadk/assets/{architectureDiagram-3BPJPVTR-iz_Q1z15.js → architectureDiagram-3BPJPVTR-HU4hsN_Y.js} +1 -1
  10. package/dist-ksadk/assets/{blockDiagram-GPEHLZMM-UGrJbhBA.js → blockDiagram-GPEHLZMM-DV_1dQBG.js} +1 -1
  11. package/dist-ksadk/assets/{c4Diagram-AAUBKEIU-CXQpIgbq.js → c4Diagram-AAUBKEIU-C5jN6E0t.js} +1 -1
  12. package/dist-ksadk/assets/channel-D20CB9hV.js +1 -0
  13. package/dist-ksadk/assets/{chunk-2J33WTMH-BALTkjHL.js → chunk-2J33WTMH-jhWShx0U.js} +1 -1
  14. package/dist-ksadk/assets/{chunk-4BX2VUAB-ljiuFwa0.js → chunk-4BX2VUAB-BkmP_YIR.js} +1 -1
  15. package/dist-ksadk/assets/{chunk-55IACEB6-CFNeHQBP.js → chunk-55IACEB6-B8cdnfio.js} +1 -1
  16. package/dist-ksadk/assets/{chunk-727SXJPM-C5E5qV45.js → chunk-727SXJPM-I_wsgg4B.js} +1 -1
  17. package/dist-ksadk/assets/{chunk-AQP2D5EJ-qfoH6flS.js → chunk-AQP2D5EJ-CrKE0CjY.js} +1 -1
  18. package/dist-ksadk/assets/{chunk-FMBD7UC4-DigwjG9R.js → chunk-FMBD7UC4-CnBM9mx-.js} +1 -1
  19. package/dist-ksadk/assets/{chunk-ND2GUHAM-XNYKkHA-.js → chunk-ND2GUHAM-CAGmrkrk.js} +1 -1
  20. package/dist-ksadk/assets/chunk-QZHKN3VN-BsgRgQ_j.js +1 -0
  21. package/dist-ksadk/assets/classDiagram-4FO5ZUOK-DjrplkNv.js +1 -0
  22. package/dist-ksadk/assets/classDiagram-v2-Q7XG4LA2-DjrplkNv.js +1 -0
  23. package/dist-ksadk/assets/{cose-bilkent-S5V4N54A-DGqDRX9x.js → cose-bilkent-S5V4N54A-DQutYsST.js} +1 -1
  24. package/dist-ksadk/assets/{dagre-BM42HDAG-CbbJ_rI4.js → dagre-BM42HDAG-BbfWozVQ.js} +1 -1
  25. package/dist-ksadk/assets/{diagram-2AECGRRQ-C8n-HBnY.js → diagram-2AECGRRQ-DTYDG1S6.js} +1 -1
  26. package/dist-ksadk/assets/{diagram-5GNKFQAL-BIta1UbQ.js → diagram-5GNKFQAL-CKo851uX.js} +1 -1
  27. package/dist-ksadk/assets/{diagram-KO2AKTUF-CK9z9G5J.js → diagram-KO2AKTUF-BFGsk7gQ.js} +1 -1
  28. package/dist-ksadk/assets/{diagram-LMA3HP47-Be71txec.js → diagram-LMA3HP47-Cp5eKc5-.js} +1 -1
  29. package/dist-ksadk/assets/{diagram-OG6HWLK6-DGFaZ5wp.js → diagram-OG6HWLK6-BCAPtWc_.js} +1 -1
  30. package/dist-ksadk/assets/{dist-jXQ-bzWe.js → dist-5kdQ7HkY.js} +1 -1
  31. package/dist-ksadk/assets/{dist-CR5MGEiz.js → dist-BA3Q9tGs.js} +1 -1
  32. package/dist-ksadk/assets/{dist-CWYvp3zw.js → dist-BUqHxLuB.js} +1 -1
  33. package/dist-ksadk/assets/{dist-DtQF0aK1.js → dist-BXfxON4M.js} +1 -1
  34. package/dist-ksadk/assets/{dist-BiKbpujX.js → dist-Bs8kNZ5F.js} +1 -1
  35. package/dist-ksadk/assets/{dist-CogLyQpT.js → dist-BzRHvUmK.js} +1 -1
  36. package/dist-ksadk/assets/{dist-Da8ivwwd.js → dist-C0aKpK3w.js} +1 -1
  37. package/dist-ksadk/assets/{dist-D2IzCbzs.js → dist-CA6GPOEx.js} +1 -1
  38. package/dist-ksadk/assets/{dist-C1w53MwT.js → dist-CD2EXfJM.js} +1 -1
  39. package/dist-ksadk/assets/{dist-Db3ZLHDu.js → dist-CF83ONlc.js} +1 -1
  40. package/dist-ksadk/assets/{dist-CjOZLBw0.js → dist-COCV2kJ4.js} +1 -1
  41. package/dist-ksadk/assets/{dist-BW5Ld9f-.js → dist-CRqn22al.js} +1 -1
  42. package/dist-ksadk/assets/{dist-BKUR95NE.js → dist-CcGyKrol.js} +1 -1
  43. package/dist-ksadk/assets/{dist-DZH4wrvX.js → dist-Drg2mY7X.js} +1 -1
  44. package/dist-ksadk/assets/{dist-BPECOwEw.js → dist-DsEBYSvP.js} +1 -1
  45. package/dist-ksadk/assets/{dist-BhIBOiwD.js → dist-Dtq8mlk_.js} +1 -1
  46. package/dist-ksadk/assets/{dist-SfWTEVE-.js → dist-PKzzxEoN.js} +1 -1
  47. package/dist-ksadk/assets/{dist-oiCsxUDb.js → dist-Wc8ZbAXr.js} +1 -1
  48. package/dist-ksadk/assets/{dist-DW68jH2U.js → dist-XvtBlTf3.js} +1 -1
  49. package/dist-ksadk/assets/{dist-C_Z1-ZmA.js → dist-ZTH3VhoY.js} +1 -1
  50. package/dist-ksadk/assets/{dist-D51ocFDT.js → dist-bSp7j4JA.js} +1 -1
  51. package/dist-ksadk/assets/{dist-C5TwAg32.js → dist-ygPYPIzK.js} +1 -1
  52. package/dist-ksadk/assets/{erDiagram-TEJ5UH35-DxpQTwOK.js → erDiagram-TEJ5UH35-B4Ez_K8Y.js} +1 -1
  53. package/dist-ksadk/assets/eventmodeling-FCH6USID-B6kJGZGf.js +1 -0
  54. package/dist-ksadk/assets/{flowDiagram-I6XJVG4X-DtJfiVka.js → flowDiagram-I6XJVG4X-Cugogq8u.js} +1 -1
  55. package/dist-ksadk/assets/{ganttDiagram-6RSMTGT7-Cads5zt8.js → ganttDiagram-6RSMTGT7-BdL2Ptyi.js} +1 -1
  56. package/dist-ksadk/assets/gitGraph-WXDBUCRP-B16H8iV0.js +1 -0
  57. package/dist-ksadk/assets/{gitGraphDiagram-PVQCEYII-pVBGF0kC.js → gitGraphDiagram-PVQCEYII-LTIaD1oy.js} +1 -1
  58. package/dist-ksadk/assets/index-CyqLY8HK.js +165 -0
  59. package/dist-ksadk/assets/info-J43DQDTF-CuylbYl8.js +1 -0
  60. package/dist-ksadk/assets/{infoDiagram-5YYISTIA-DRnfow9x.js → infoDiagram-5YYISTIA-Irvk5ODn.js} +1 -1
  61. package/dist-ksadk/assets/{ishikawaDiagram-YF4QCWOH-Cj4f-Vgb.js → ishikawaDiagram-YF4QCWOH-DvhCdgB4.js} +1 -1
  62. package/dist-ksadk/assets/{journeyDiagram-JHISSGLW-CAlm8MAI.js → journeyDiagram-JHISSGLW-o1H3k05h.js} +1 -1
  63. package/dist-ksadk/assets/{kanban-definition-UN3LZRKU-Dad-GGF-.js → kanban-definition-UN3LZRKU-DwLQeiLo.js} +1 -1
  64. package/dist-ksadk/assets/{katex-C29J-Smv.js → katex-rVASVN_G.js} +1 -1
  65. package/dist-ksadk/assets/{linear-zSHuEM7v.js → linear-6iVzNmCz.js} +1 -1
  66. package/dist-ksadk/assets/{mermaid-parser.core-Cc12WCm1.js → mermaid-parser.core-XdJNoTgS.js} +2 -2
  67. package/dist-ksadk/assets/{mindmap-definition-RKZ34NQL-BaWEag7j.js → mindmap-definition-RKZ34NQL-CytBxVen.js} +1 -1
  68. package/dist-ksadk/assets/packet-YPE3B663-CkTX9qzg.js +1 -0
  69. package/dist-ksadk/assets/pie-LRSECV5Y-D-9Kb8fQ.js +1 -0
  70. package/dist-ksadk/assets/{pieDiagram-4H26LBE5-CUweZZ4V.js → pieDiagram-4H26LBE5-CaevpDml.js} +1 -1
  71. package/dist-ksadk/assets/{quadrantDiagram-W4KKPZXB-r6VGrgUe.js → quadrantDiagram-W4KKPZXB-DN8OUKGZ.js} +1 -1
  72. package/dist-ksadk/assets/radar-GUYGQ44K-9yNm6uCf.js +1 -0
  73. package/dist-ksadk/assets/{requirementDiagram-4Y6WPE33-CODRvc2-.js → requirementDiagram-4Y6WPE33-BCAqWjys.js} +1 -1
  74. package/dist-ksadk/assets/{sankeyDiagram-5OEKKPKP-Bfu8TihS.js → sankeyDiagram-5OEKKPKP-2dMQM1qM.js} +1 -1
  75. package/dist-ksadk/assets/{sequenceDiagram-3UESZ5HK-B0aTqv-7.js → sequenceDiagram-3UESZ5HK-C-bWXa4S.js} +1 -1
  76. package/dist-ksadk/assets/{stateDiagram-AJRCARHV-C5D586Kc.js → stateDiagram-AJRCARHV-D0W5apow.js} +1 -1
  77. package/dist-ksadk/assets/stateDiagram-v2-BHNVJYJU-4EIKDL6E.js +1 -0
  78. package/dist-ksadk/assets/{timeline-definition-PNZ67QCA-BN9QGovG.js → timeline-definition-PNZ67QCA-BW_33mxy.js} +1 -1
  79. package/dist-ksadk/assets/treeView-BLDUP644-Bxe9I30V.js +1 -0
  80. package/dist-ksadk/assets/treemap-LRROVOQU-IPLUPBu2.js +1 -0
  81. package/dist-ksadk/assets/{vennDiagram-CIIHVFJN-DD2DPPQK.js → vennDiagram-CIIHVFJN-CNmwt6el.js} +1 -1
  82. package/dist-ksadk/assets/wardley-L42UT6IY-mW088A4m.js +1 -0
  83. package/dist-ksadk/assets/{wardleyDiagram-YWT4CUSO-BuRKU-mS.js → wardleyDiagram-YWT4CUSO-CzuRPILG.js} +1 -1
  84. package/dist-ksadk/assets/{xychartDiagram-2RQKCTM6-CRK8qmKq.js → xychartDiagram-2RQKCTM6-CuwrcJ7v.js} +1 -1
  85. package/dist-ksadk/index.html +1 -1
  86. package/dist-lib/api/checkpoints.d.ts +2 -2
  87. package/dist-lib/api/checkpoints.d.ts.map +1 -1
  88. package/dist-lib/hooks/useSessionLifecycle.d.ts.map +1 -1
  89. package/dist-lib/runtime.js +263 -235
  90. package/dist-lib/utils/session-event-history.d.ts +21 -0
  91. package/dist-lib/utils/session-event-history.d.ts.map +1 -0
  92. package/dist-lib/utils/session-events.d.ts.map +1 -1
  93. package/package.json +1 -1
  94. package/dist-ksadk/assets/architecture-7EHR7CIX-ld802pvW.js +0 -1
  95. package/dist-ksadk/assets/channel-COAU2EGH.js +0 -1
  96. package/dist-ksadk/assets/chunk-QZHKN3VN-BvzsW0_z.js +0 -1
  97. package/dist-ksadk/assets/classDiagram-4FO5ZUOK-DFTBkc62.js +0 -1
  98. package/dist-ksadk/assets/classDiagram-v2-Q7XG4LA2-DFTBkc62.js +0 -1
  99. package/dist-ksadk/assets/eventmodeling-FCH6USID-CTWi3c6l.js +0 -1
  100. package/dist-ksadk/assets/gitGraph-WXDBUCRP-BUUNILpg.js +0 -1
  101. package/dist-ksadk/assets/index-BmYXEuwx.js +0 -165
  102. package/dist-ksadk/assets/info-J43DQDTF-Bp9uT-J8.js +0 -1
  103. package/dist-ksadk/assets/packet-YPE3B663-BrkZLyQL.js +0 -1
  104. package/dist-ksadk/assets/pie-LRSECV5Y-DjPUnz6v.js +0 -1
  105. package/dist-ksadk/assets/radar-GUYGQ44K-B4p0ZaJn.js +0 -1
  106. package/dist-ksadk/assets/stateDiagram-v2-BHNVJYJU-NgpS71EE.js +0 -1
  107. package/dist-ksadk/assets/treeView-BLDUP644-D52yTg0v.js +0 -1
  108. package/dist-ksadk/assets/treemap-LRROVOQU-BXzm9_qc.js +0 -1
  109. package/dist-ksadk/assets/wardley-L42UT6IY-jE2fE4jx.js +0 -1
@@ -1728,22 +1728,27 @@ var Q = N()((e, t) => ({
1728
1728
  "cancelled",
1729
1729
  "canceled",
1730
1730
  "aborted"
1731
+ ]), Ft = new Set([
1732
+ "tool_call",
1733
+ "tool_result",
1734
+ "stage_tool_call",
1735
+ "stage_tool_result"
1731
1736
  ]);
1732
- function Ft(e) {
1737
+ function It(e) {
1733
1738
  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("") : "";
1734
1739
  }
1735
- function It(e) {
1740
+ function Lt(e) {
1736
1741
  let t = String(e || "").trim();
1737
1742
  return t ? `/agentengine/api/v1/AttachmentContent?FileUri=${encodeURIComponent(t)}` : "";
1738
1743
  }
1739
- function Lt(e) {
1744
+ function Rt(e) {
1740
1745
  return String(e || "").match(/^data:([^;,]+)/)?.[1] || "";
1741
1746
  }
1742
- function Rt(e, t) {
1747
+ function zt(e, t) {
1743
1748
  let n = String(e || "").trim(), r = String(t || "").trim();
1744
1749
  return !n || !r || n === r ? !0 : n.endsWith("/*") ? r.startsWith(n.slice(0, -1)) : r.endsWith("/*") ? n.startsWith(r.slice(0, -1)) : !1;
1745
1750
  }
1746
- function zt(e) {
1751
+ function Bt(e) {
1747
1752
  let t = e?.Content?.parts || [], n = [], r = /* @__PURE__ */ new Map(), i = (e) => {
1748
1753
  let t = `${e.fileUri || e.url || e.name}|${e.type}`;
1749
1754
  r.has(t) || r.set(t, e);
@@ -1773,7 +1778,7 @@ function zt(e) {
1773
1778
  let t = e.file_url.trim();
1774
1779
  i({
1775
1780
  name: e.filename || e.displayName || e.display_name || "attachment",
1776
- url: It(t),
1781
+ url: Lt(t),
1777
1782
  type: e.mime_type || e.mimeType || "application/octet-stream",
1778
1783
  fileUri: t
1779
1784
  });
@@ -1784,7 +1789,7 @@ function zt(e) {
1784
1789
  t && i({
1785
1790
  name: e.filename || e.displayName || e.display_name || "uploaded_image",
1786
1791
  url: t,
1787
- type: e.mime_type || e.mimeType || Lt(t) || "image/*"
1792
+ type: e.mime_type || e.mimeType || Rt(t) || "image/*"
1788
1793
  });
1789
1794
  continue;
1790
1795
  }
@@ -1792,7 +1797,7 @@ function zt(e) {
1792
1797
  let t = String(e.fileData.fileUri || "").trim();
1793
1798
  i({
1794
1799
  name: e.fileData.displayName || "attachment",
1795
- url: It(t),
1800
+ url: Lt(t),
1796
1801
  type: e.fileData.mimeType || "application/octet-stream",
1797
1802
  fileUri: t
1798
1803
  });
@@ -1802,11 +1807,11 @@ function zt(e) {
1802
1807
  for (let e of a) {
1803
1808
  let t = String(e.file_uri || "").trim(), n = {
1804
1809
  name: e.display_name || "attachment",
1805
- url: It(t),
1810
+ url: Lt(t),
1806
1811
  type: e.mime_type || "application/octet-stream",
1807
1812
  fileUri: t
1808
1813
  };
1809
- !n.url && !n.fileUri && Array.from(r.values()).some((e) => e.name === n.name && Rt(e.type, n.type) && (e.url || e.fileUri)) || i(n);
1814
+ !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);
1810
1815
  }
1811
1816
  let o = Array.from(r.values());
1812
1817
  return {
@@ -1814,7 +1819,7 @@ function zt(e) {
1814
1819
  attachments: o.length > 0 ? o : void 0
1815
1820
  };
1816
1821
  }
1817
- function Bt(e) {
1822
+ function Vt(e) {
1818
1823
  let t = e?.Metadata?.responses_output;
1819
1824
  if (!Array.isArray(t)) return {};
1820
1825
  let n = Ke(), r = tt({
@@ -1861,22 +1866,22 @@ function Bt(e) {
1861
1866
  ...Object.keys(a).length > 0 ? { tools: a } : {}
1862
1867
  };
1863
1868
  }
1864
- function Vt(e, t, n) {
1869
+ function Ht(e, t, n) {
1865
1870
  return t === "running" ? e === "prompt_too_long" ? "检测到上下文过长,正在自动压缩历史后重试" : "正在自动压缩上下文" : n ? e === "prompt_too_long" ? "上下文过长,系统已自动压缩历史并重试" : "系统已自动压缩较早的对话上下文" : t === "failed" ? "自动压缩上下文未完成" : e === "prompt_too_long" ? "已完成上下文压缩,并继续当前回复" : "已完成上下文压缩";
1866
1871
  }
1867
- function Ht(e, t) {
1872
+ function Ut(e, t) {
1868
1873
  return [
1869
1874
  e,
1870
1875
  t.content || "",
1871
1876
  t.reasoning || ""
1872
1877
  ].join("\0");
1873
1878
  }
1874
- function Ut(e) {
1879
+ function Wt(e) {
1875
1880
  return e?.Metadata?.responses_mirror === !0 || String(e?.Metadata?.responses_mirror || "").trim().toLowerCase() === "true";
1876
1881
  }
1877
- function Wt(e) {
1882
+ function Gt(e) {
1878
1883
  if (e?.EventType !== "user_message") return "";
1879
- let t = zt(e), n = (t.attachments || []).map((e) => [
1884
+ let t = Bt(e), n = (t.attachments || []).map((e) => [
1880
1885
  e.name || "",
1881
1886
  e.fileUri || "",
1882
1887
  e.url || "",
@@ -1884,16 +1889,16 @@ function Wt(e) {
1884
1889
  ].join("")).sort().join("");
1885
1890
  return [String(t.text || "").trim(), n].join("\0");
1886
1891
  }
1887
- function Gt(e) {
1892
+ function Kt(e) {
1888
1893
  return e?.EventType === "assistant_stream_snapshot";
1889
1894
  }
1890
- function Kt(e) {
1895
+ function qt(e) {
1891
1896
  let t = Number(e?.SeqId || 0);
1892
1897
  if (Number.isFinite(t) && t > 0) return t;
1893
1898
  let n = Number(e?.Timestamp || 0);
1894
1899
  return Number.isFinite(n) ? n : 0;
1895
1900
  }
1896
- function qt(e) {
1901
+ function Jt(e) {
1897
1902
  if (typeof e == "string") return e;
1898
1903
  if (e == null) return "";
1899
1904
  try {
@@ -1902,15 +1907,15 @@ function qt(e) {
1902
1907
  return String(e);
1903
1908
  }
1904
1909
  }
1905
- function Jt(e) {
1910
+ function Yt(e) {
1906
1911
  let t = String(e?.EventType || "");
1907
- if (t !== "tool_call" && t !== "tool_result") return null;
1908
- let n = String(e.Metadata?.tool_name || e.Metadata?.name || e.Metadata?.function_name || Ft(e.Content?.parts) || "tool").trim() || "tool", r = {
1912
+ if (!Ft.has(t)) return null;
1913
+ let n = String(e.Metadata?.tool_name || e.Metadata?.name || e.Metadata?.function_name || It(e.Content?.parts) || "tool").trim() || "tool", r = {
1909
1914
  name: n,
1910
1915
  args: "",
1911
1916
  status: "running"
1912
- }, i = t === "tool_result" ? (() => {
1913
- let t = qt(e.Metadata?.tool_output ?? e.Metadata?.output ?? e.Metadata?.result ?? Ft(e.Content?.parts));
1917
+ }, i = t === "tool_result" || t === "stage_tool_result" ? (() => {
1918
+ let t = Jt(e.Metadata?.tool_output ?? e.Metadata?.output ?? e.Metadata?.result ?? It(e.Content?.parts));
1914
1919
  return {
1915
1920
  ...r,
1916
1921
  output: t,
@@ -1918,7 +1923,7 @@ function Jt(e) {
1918
1923
  };
1919
1924
  })() : {
1920
1925
  ...r,
1921
- args: qt(e.Metadata?.tool_args ?? e.Metadata?.arguments ?? e.Metadata?.args ?? {})
1926
+ args: Jt(e.Metadata?.tool_args ?? e.Metadata?.arguments ?? e.Metadata?.args ?? {})
1922
1927
  };
1923
1928
  return {
1924
1929
  id: e.EventId || String(Date.now() + Math.random()),
@@ -1929,7 +1934,7 @@ function Jt(e) {
1929
1934
  tools: { [n]: i }
1930
1935
  };
1931
1936
  }
1932
- function Yt(e = {}, t = {}) {
1937
+ function Xt(e = {}, t = {}) {
1933
1938
  let n = { ...e || {} };
1934
1939
  for (let [e, r] of Object.entries(t || {})) n[e] = {
1935
1940
  ...n[e] || {},
@@ -1939,7 +1944,7 @@ function Yt(e = {}, t = {}) {
1939
1944
  };
1940
1945
  return n;
1941
1946
  }
1942
- function Xt(e = {}, t = "") {
1947
+ function Zt(e = {}, t = "") {
1943
1948
  let n = String(t || "").trim().toLowerCase(), r = n === "completed" ? "completed" : Pt.has(n) ? "error" : "";
1944
1949
  if (!r) return e;
1945
1950
  let i = !1, a = {};
@@ -1949,10 +1954,10 @@ function Xt(e = {}, t = "") {
1949
1954
  }) : a[t] = n;
1950
1955
  return i ? a : e;
1951
1956
  }
1952
- function Zt(e, t) {
1957
+ function Qt(e, t) {
1953
1958
  return {
1954
1959
  ...e,
1955
- reasoning: Qt(e.reasoning, t.reasoning),
1960
+ reasoning: $t(e.reasoning, t.reasoning),
1956
1961
  tools: {
1957
1962
  ...e.tools || {},
1958
1963
  ...t.tools || {}
@@ -1965,11 +1970,11 @@ function Zt(e, t) {
1965
1970
  id: t.responseId || t.reasoning || t.tools ? t.id : e.id
1966
1971
  };
1967
1972
  }
1968
- function Qt(e = "", t = "") {
1973
+ function $t(e = "", t = "") {
1969
1974
  let n = String(e || ""), r = String(t || "");
1970
1975
  return n ? !r || n.endsWith(r) ? n : r.startsWith(n) ? r : `${n}${r}` : r;
1971
1976
  }
1972
- function $t(e) {
1977
+ function en(e) {
1973
1978
  return {
1974
1979
  id: e.id,
1975
1980
  role: "system",
@@ -1980,10 +1985,10 @@ function $t(e) {
1980
1985
  summary: e.summary,
1981
1986
  historical: e.historical,
1982
1987
  timestamp: e.timestamp,
1983
- content: Vt(e.trigger, e.status, e.historical)
1988
+ content: Ht(e.trigger, e.status, e.historical)
1984
1989
  };
1985
1990
  }
1986
- function en(e) {
1991
+ function tn(e) {
1987
1992
  let t = e?.EventType || "";
1988
1993
  if (t === "run_status") return e.Content?.status === "failed" ? {
1989
1994
  id: e.EventId || String(Date.now() + Math.random()),
@@ -2001,8 +2006,8 @@ function en(e) {
2001
2006
  timestamp: e.Timestamp || Date.now()
2002
2007
  } : null;
2003
2008
  if (t === "context_checkpoint") {
2004
- let t = zt(e);
2005
- return $t({
2009
+ let t = Bt(e);
2010
+ return en({
2006
2011
  id: e.EventId || String(Date.now() + Math.random()),
2007
2012
  timestamp: e.Timestamp || Date.now(),
2008
2013
  status: "completed",
@@ -2013,7 +2018,7 @@ function en(e) {
2013
2018
  });
2014
2019
  }
2015
2020
  if (t === "reasoning") {
2016
- let n = zt(e).text || Ft(e.Metadata?.reasoning);
2021
+ let n = Bt(e).text || It(e.Metadata?.reasoning);
2017
2022
  return n ? {
2018
2023
  id: e.EventId || String(Date.now() + Math.random()),
2019
2024
  role: "model",
@@ -2023,9 +2028,9 @@ function en(e) {
2023
2028
  eventType: t
2024
2029
  } : null;
2025
2030
  }
2026
- if (t === "tool_call" || t === "tool_result") return Jt(e);
2031
+ if (Ft.has(t)) return Yt(e);
2027
2032
  if (t !== "user_message" && t !== "assistant_message" && t !== "assistant_stream_snapshot") return null;
2028
- let n = zt(e), r = t === "assistant_message" ? Bt(e) : {};
2033
+ let n = Bt(e), r = t === "assistant_message" ? Vt(e) : {};
2029
2034
  if (!n.text && !n.attachments?.length && !r.reasoning && !r.tools) return null;
2030
2035
  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();
2031
2036
  return {
@@ -2042,7 +2047,7 @@ function en(e) {
2042
2047
  ...r
2043
2048
  };
2044
2049
  }
2045
- function tn(e = []) {
2050
+ function nn(e = []) {
2046
2051
  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 = [];
2047
2052
  for (let e of s) {
2048
2053
  let t = String(e?.EventId || "").trim();
@@ -2054,30 +2059,30 @@ function tn(e = []) {
2054
2059
  }
2055
2060
  let l = /* @__PURE__ */ new Set(), u = /* @__PURE__ */ new Set(), d = /* @__PURE__ */ new Map();
2056
2061
  for (let e of c) {
2057
- if (e?.EventType !== "user_message" || Ut(e)) {
2062
+ if (e?.EventType !== "user_message" || Wt(e)) {
2058
2063
  if (e?.EventType === "assistant_message") {
2059
2064
  let t = String(e.InvocationId || "").trim();
2060
2065
  t && u.add(t);
2061
2066
  }
2062
- if (Gt(e)) {
2067
+ if (Kt(e)) {
2063
2068
  let t = String(e.InvocationId || "").trim();
2064
2069
  if (t) {
2065
2070
  let n = d.get(t);
2066
- (!n || Kt(e) >= Kt(n)) && d.set(t, e);
2071
+ (!n || qt(e) >= qt(n)) && d.set(t, e);
2067
2072
  }
2068
2073
  }
2069
2074
  continue;
2070
2075
  }
2071
- let t = Wt(e);
2076
+ let t = Gt(e);
2072
2077
  t && l.add(t);
2073
2078
  }
2074
2079
  let f = c.filter((e) => {
2075
- if (Gt(e)) {
2080
+ if (Kt(e)) {
2076
2081
  let t = String(e.InvocationId || "").trim();
2077
2082
  return t ? u.has(t) ? !1 : d.get(t) === e : !0;
2078
2083
  }
2079
- if (e?.EventType !== "user_message" || !Ut(e)) return !0;
2080
- let t = Wt(e);
2084
+ if (e?.EventType !== "user_message" || !Wt(e)) return !0;
2085
+ let t = Gt(e);
2081
2086
  return !t || !l.has(t);
2082
2087
  });
2083
2088
  for (let e of f) {
@@ -2086,13 +2091,16 @@ function tn(e = []) {
2086
2091
  "assistant_message",
2087
2092
  "assistant_stream_snapshot",
2088
2093
  "reasoning",
2089
- "tool_call"
2094
+ "tool_call",
2095
+ "tool_result",
2096
+ "stage_tool_call",
2097
+ "stage_tool_result"
2090
2098
  ].includes(String(e.EventType || "")) && r.add(a), e.EventType === "run_status" && a && (t.set(a, String(e.Content?.status || "").trim()), n.set(a, e));
2091
2099
  }
2092
2100
  let p = [], m = /* @__PURE__ */ new Map(), h = null, g = /* @__PURE__ */ new Map(), _ = (e) => {
2093
2101
  let t = String(e?.responseId || "").trim(), n = t ? m.get(t) : void 0;
2094
2102
  if (n !== void 0) {
2095
- p[n] = Zt(p[n], e);
2103
+ p[n] = Qt(p[n], e);
2096
2104
  return;
2097
2105
  }
2098
2106
  t && m.set(t, p.length), p.push(e);
@@ -2102,13 +2110,13 @@ function tn(e = []) {
2102
2110
  let n = String(e || "").trim();
2103
2111
  if (!n) return {};
2104
2112
  let r = g.get(n);
2105
- return r ? (g.delete(n), { tools: Xt(r.tools, t.get(n)) }) : {};
2113
+ return r ? (g.delete(n), { tools: Zt(r.tools, t.get(n)) }) : {};
2106
2114
  };
2107
2115
  for (let e of f) {
2108
2116
  if (e.EventType === "run_status") continue;
2109
- let t = en(e);
2117
+ let t = tn(e);
2110
2118
  if (!t) continue;
2111
- if (t.eventType === "tool_call" || t.eventType === "tool_result") {
2119
+ if (Ft.has(t.eventType)) {
2112
2120
  let n = String(e.InvocationId || "").trim();
2113
2121
  if (!n) {
2114
2122
  v(), _(t);
@@ -2124,7 +2132,7 @@ function tn(e = []) {
2124
2132
  invocationId: n
2125
2133
  },
2126
2134
  timestamp: Math.max(Number(r?.timestamp || 0), Number(t.timestamp || 0)),
2127
- tools: Yt(r?.tools, t.tools)
2135
+ tools: Xt(r?.tools, t.tools)
2128
2136
  });
2129
2137
  continue;
2130
2138
  }
@@ -2142,7 +2150,7 @@ function tn(e = []) {
2142
2150
  }
2143
2151
  let n = t.eventType === "assistant_message" || t.eventType === "assistant_stream_snapshot";
2144
2152
  if (n && h) {
2145
- let n = String(e.InvocationId || "").trim(), r = Ht(n, t);
2153
+ let n = String(e.InvocationId || "").trim(), r = Ut(n, t);
2146
2154
  if (t.eventType === "assistant_message" && n && a.has(r)) {
2147
2155
  h = null;
2148
2156
  continue;
@@ -2150,12 +2158,12 @@ function tn(e = []) {
2150
2158
  t.eventType === "assistant_message" && n && a.add(r), _({
2151
2159
  ...t,
2152
2160
  ...y(n),
2153
- reasoning: Qt(h.reasoning, t.reasoning)
2161
+ reasoning: $t(h.reasoning, t.reasoning)
2154
2162
  }), h = null;
2155
2163
  continue;
2156
2164
  }
2157
2165
  if (v(), n) {
2158
- let n = String(e.InvocationId || "").trim(), r = Ht(n, t);
2166
+ let n = String(e.InvocationId || "").trim(), r = Ut(n, t);
2159
2167
  if (t.eventType === "assistant_message" && n && a.has(r)) continue;
2160
2168
  t.eventType === "assistant_message" && n && a.add(r), _({
2161
2169
  ...t,
@@ -2168,7 +2176,7 @@ function tn(e = []) {
2168
2176
  v();
2169
2177
  for (let [e, n] of g.entries()) _({
2170
2178
  ...n,
2171
- tools: Xt(n.tools, t.get(e))
2179
+ tools: Zt(n.tools, t.get(e))
2172
2180
  });
2173
2181
  for (let [e, a] of t.entries()) {
2174
2182
  if (a !== "in_progress" || r.has(e) || !i.has(e)) continue;
@@ -2184,7 +2192,7 @@ function tn(e = []) {
2184
2192
  }
2185
2193
  return p.map(({ invocationId: e, ...t }) => t);
2186
2194
  }
2187
- function nn(e = [], t = []) {
2195
+ function rn(e = [], t = []) {
2188
2196
  let n = [], r = /* @__PURE__ */ new Set();
2189
2197
  for (let i of [...Array.isArray(e) ? e : [], ...Array.isArray(t) ? t : []]) {
2190
2198
  let e = String(i?.EventId || "").trim();
@@ -2199,18 +2207,18 @@ function nn(e = [], t = []) {
2199
2207
  return Number.isFinite(n) && Number.isFinite(r) && n !== r ? n - r : Number(e?.Timestamp || 0) - Number(t?.Timestamp || 0);
2200
2208
  });
2201
2209
  }
2202
- function rn(e = []) {
2210
+ function an(e = []) {
2203
2211
  return (Array.isArray(e) ? e : []).reduce((e, t) => {
2204
2212
  let n = Number(t.SeqId || 0);
2205
2213
  return Number.isFinite(n) ? Math.max(e, n) : e;
2206
2214
  }, 0);
2207
2215
  }
2208
- function an(e) {
2216
+ function on(e) {
2209
2217
  return e?.EventType === "run_status" ? Pt.has(String(e.Content?.status || "").trim().toLowerCase()) : !1;
2210
2218
  }
2211
2219
  //#endregion
2212
2220
  //#region src/core/run/dispatcher.ts
2213
- var $ = !1, on = new Set(["completed"]), sn = new Set([
2221
+ var $ = !1, sn = new Set(["completed"]), cn = new Set([
2214
2222
  "failed",
2215
2223
  "error",
2216
2224
  "cancelled",
@@ -2218,7 +2226,7 @@ var $ = !1, on = new Set(["completed"]), sn = new Set([
2218
2226
  "aborted",
2219
2227
  "incomplete"
2220
2228
  ]);
2221
- function cn(e) {
2229
+ function ln(e) {
2222
2230
  $ || ($ = !0, q.getState().patchMessages((t) => [...t, {
2223
2231
  id: e,
2224
2232
  role: "model",
@@ -2227,8 +2235,8 @@ function cn(e) {
2227
2235
  reasoning: ""
2228
2236
  }]));
2229
2237
  }
2230
- function ln(e) {
2231
- let t = String(e || "").trim().toLowerCase(), n = on.has(t) ? "completed" : sn.has(t) ? "error" : null;
2238
+ function un(e) {
2239
+ let t = String(e || "").trim().toLowerCase(), n = sn.has(t) ? "completed" : cn.has(t) ? "error" : null;
2232
2240
  n && q.getState().patchMessages((e) => e.map((e) => {
2233
2241
  if (!e.tools) return e;
2234
2242
  let t = !1, r = Object.fromEntries(Object.entries(e.tools).map(([e, r]) => r.status === "running" ? (t = !0, [e, {
@@ -2241,7 +2249,7 @@ function ln(e) {
2241
2249
  } : e;
2242
2250
  }));
2243
2251
  }
2244
- function un(e) {
2252
+ function dn(e) {
2245
2253
  if (e.sessionId && R.getState().currentSessionId !== e.sessionId) {
2246
2254
  e.type === "stage_changed" && (e.stage === "completing" || e.stage === "error" || e.stage === "cancelled") && ($ = !1);
2247
2255
  return;
@@ -2267,28 +2275,28 @@ function un(e) {
2267
2275
  }]);
2268
2276
  break;
2269
2277
  case "assistant_message_created":
2270
- cn(e.messageId);
2278
+ ln(e.messageId);
2271
2279
  break;
2272
2280
  case "text_delta":
2273
- cn(e.messageId), t.patchMessages((t) => t.map((t) => t.id === e.messageId ? {
2281
+ ln(e.messageId), t.patchMessages((t) => t.map((t) => t.id === e.messageId ? {
2274
2282
  ...t,
2275
2283
  content: t.content + e.delta
2276
2284
  } : t));
2277
2285
  break;
2278
2286
  case "text_final":
2279
- cn(e.messageId), t.patchMessages((t) => t.map((t) => t.id === e.messageId ? {
2287
+ ln(e.messageId), t.patchMessages((t) => t.map((t) => t.id === e.messageId ? {
2280
2288
  ...t,
2281
2289
  content: e.text
2282
2290
  } : t));
2283
2291
  break;
2284
2292
  case "reasoning_delta":
2285
- cn(e.messageId), t.patchMessages((t) => t.map((t) => t.id === e.messageId ? {
2293
+ ln(e.messageId), t.patchMessages((t) => t.map((t) => t.id === e.messageId ? {
2286
2294
  ...t,
2287
2295
  reasoning: (t.reasoning || "") + e.delta
2288
2296
  } : t));
2289
2297
  break;
2290
2298
  case "tool_upsert":
2291
- cn(e.messageId), t.patchMessages((t) => t.map((t) => t.id === e.messageId ? {
2299
+ ln(e.messageId), t.patchMessages((t) => t.map((t) => t.id === e.messageId ? {
2292
2300
  ...t,
2293
2301
  tools: {
2294
2302
  ...t.tools || {},
@@ -2307,7 +2315,7 @@ function un(e) {
2307
2315
  } : t));
2308
2316
  break;
2309
2317
  case "tool_result":
2310
- cn(e.messageId), t.patchMessages((t) => t.map((t) => t.id === e.messageId ? {
2318
+ ln(e.messageId), t.patchMessages((t) => t.map((t) => t.id === e.messageId ? {
2311
2319
  ...t,
2312
2320
  tools: {
2313
2321
  ...t.tools || {},
@@ -2331,7 +2339,7 @@ function un(e) {
2331
2339
  }]);
2332
2340
  break;
2333
2341
  case "compaction": {
2334
- let n = `compaction-${Date.now()}`, r = e.phase === "start" ? "running" : e.phase === "failed" ? "failed" : "completed", i = $t({
2342
+ let n = `compaction-${Date.now()}`, r = e.phase === "start" ? "running" : e.phase === "failed" ? "failed" : "completed", i = en({
2335
2343
  id: n,
2336
2344
  timestamp: Date.now(),
2337
2345
  status: r,
@@ -2367,7 +2375,7 @@ function un(e) {
2367
2375
  }]), $ = !1;
2368
2376
  break;
2369
2377
  case "terminal":
2370
- ln(e.status);
2378
+ un(e.status);
2371
2379
  break;
2372
2380
  case "stream_event":
2373
2381
  if (e.event.EventType === "run_checkpoint" && Q.getState().upsertSessionCheckpoint(e.sessionId || e.event.SessionId, e.event), e.event.EventType === "run_status") {
@@ -2392,12 +2400,12 @@ function un(e) {
2392
2400
  break;
2393
2401
  }
2394
2402
  }
2395
- function dn() {
2403
+ function fn() {
2396
2404
  $ = !1;
2397
2405
  }
2398
2406
  //#endregion
2399
2407
  //#region src/hooks/useRunAgent.ts
2400
- function fn(e) {
2408
+ function pn(e) {
2401
2409
  let t = j(/* @__PURE__ */ new Map()), n = j(() => {}), { agentId: r, apiFormats: i, agentFramework: a, selectedModel: o, selectedModelMetadata: s, thinkingMode: c, currentSessionIdRef: l, queuedDraftRef: u, onRunSettled: d, uiCapabilities: f } = e, p = k((e) => {
2402
2410
  e.updateConfig({
2403
2411
  agentId: r,
@@ -2418,7 +2426,7 @@ function fn(e) {
2418
2426
  f.RunLifecycle?.CheckpointResumePreview
2419
2427
  ]), m = k((n) => {
2420
2428
  let r = String(n || "new-session"), i = t.current.get(r);
2421
- return i ? p(i) : (i = new xt(e.api), p(i), i.subscribe(un), t.current.set(r, i)), i;
2429
+ return i ? p(i) : (i = new xt(e.api), p(i), i.subscribe(dn), t.current.set(r, i)), i;
2422
2430
  }, [e.api, p]);
2423
2431
  A(() => {
2424
2432
  for (let e of t.current.values()) p(e);
@@ -2428,7 +2436,7 @@ function fn(e) {
2428
2436
  }, [u]), g = k((e) => {
2429
2437
  let i = l.current, a = m(i);
2430
2438
  if (a.stage !== "idle") return !1;
2431
- dn(), _.getState().setMobileActionsOpen(!1), I.getState().setSessionStreaming(i, !0);
2439
+ fn(), _.getState().setMobileActionsOpen(!1), I.getState().setSessionStreaming(i, !0);
2432
2440
  let o = e.text.trim(), s = String(Date.now()), c = e.attachments.map((e) => ({
2433
2441
  name: e.name,
2434
2442
  url: URL.createObjectURL(e),
@@ -2510,7 +2518,7 @@ function fn(e) {
2510
2518
  resumeCheckpoint: k((e) => {
2511
2519
  let t = m(e.sessionId);
2512
2520
  if (t.stage !== "idle") return !1;
2513
- dn(), _.getState().setMobileActionsOpen(!1), I.getState().setSessionStreaming(e.sessionId, !0);
2521
+ fn(), _.getState().setMobileActionsOpen(!1), I.getState().setSessionStreaming(e.sessionId, !0);
2514
2522
  let r = t.resumeCheckpoint({
2515
2523
  ...e,
2516
2524
  onSettled: (e) => {
@@ -2520,13 +2528,13 @@ function fn(e) {
2520
2528
  return r || I.getState().setSessionStreaming(e.sessionId, !1), r;
2521
2529
  }, [m, d]),
2522
2530
  resetCompaction: k(() => {
2523
- dn();
2531
+ fn();
2524
2532
  }, [])
2525
2533
  };
2526
2534
  }
2527
2535
  //#endregion
2528
2536
  //#region src/hooks/useFeedback.ts
2529
- function pn(e) {
2537
+ function mn(e) {
2530
2538
  let { agentId: t, currentSessionId: n, isStreaming: r, api: i, submitDraft: a } = e;
2531
2539
  return {
2532
2540
  submitResponseFeedback: k(async (e) => {
@@ -2606,10 +2614,10 @@ function pn(e) {
2606
2614
  }
2607
2615
  //#endregion
2608
2616
  //#region src/utils/run-state.js
2609
- function mn(e) {
2617
+ function hn(e) {
2610
2618
  return String(e?.InvocationId || e?.invocation_id || e?.invocationId || "").trim();
2611
2619
  }
2612
- function hn(e) {
2620
+ function gn(e) {
2613
2621
  let t = e?.Timestamp ?? e?.timestamp ?? e?.created_at ?? e?.CreatedAt;
2614
2622
  if (typeof t == "number" && Number.isFinite(t)) return t > 1e11 ? t : t * 1e3;
2615
2623
  if (typeof t == "string") {
@@ -2618,16 +2626,16 @@ function hn(e) {
2618
2626
  }
2619
2627
  return 0;
2620
2628
  }
2621
- function gn(e) {
2629
+ function _n(e) {
2622
2630
  return String(e?.EventType || e?.event_type || "").trim();
2623
2631
  }
2624
- function _n(e = [], t = {}) {
2632
+ function vn(e = [], t = {}) {
2625
2633
  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;
2626
2634
  for (let e of i) {
2627
- let t = mn(e);
2635
+ let t = hn(e);
2628
2636
  if (!t) continue;
2629
- let i = hn(e);
2630
- i && r.set(t, Math.max(r.get(t) || 0, i)), gn(e) === "run_status" && n.set(t, String(e?.Content?.status || e?.content?.status || "").trim());
2637
+ let i = gn(e);
2638
+ i && r.set(t, Math.max(r.get(t) || 0, i)), _n(e) === "run_status" && n.set(t, String(e?.Content?.status || e?.content?.status || "").trim());
2631
2639
  }
2632
2640
  return Array.from(n.entries()).filter(([e, t]) => {
2633
2641
  let n = r.get(e) || 0, i = n > 0 && a - n > o;
@@ -2635,12 +2643,48 @@ function _n(e = [], t = {}) {
2635
2643
  }).map(([e]) => e);
2636
2644
  }
2637
2645
  //#endregion
2646
+ //#region src/utils/session-event-history.ts
2647
+ async function yn(e, t, n) {
2648
+ let r = Math.max(1, Number(n?.pageSize) || 50), i = n?.shouldContinue || (() => !0), a = () => !i(), o = await t(e, {
2649
+ offset: 0,
2650
+ limit: 1
2651
+ });
2652
+ if (a()) return null;
2653
+ let s = Math.max(0, Number(o.Total ?? o.Events?.length ?? 0) || 0);
2654
+ if (s <= 1) return {
2655
+ events: o.Events || [],
2656
+ total: s,
2657
+ offset: Number(o.Offset ?? 0),
2658
+ limit: Number(o.Limit ?? o.Events?.length ?? 0)
2659
+ };
2660
+ let c = Math.max(0, s - r), l = await t(e, {
2661
+ offset: c,
2662
+ limit: r
2663
+ });
2664
+ if (a()) return null;
2665
+ let u = l.Events || [];
2666
+ for (; c > 0;) {
2667
+ let n = Math.max(0, c - r), i = await t(e, {
2668
+ offset: n,
2669
+ limit: c - n
2670
+ });
2671
+ if (a()) return null;
2672
+ u = rn(i.Events || [], u), c = n;
2673
+ }
2674
+ return {
2675
+ events: u,
2676
+ total: s,
2677
+ offset: 0,
2678
+ limit: u.length
2679
+ };
2680
+ }
2681
+ //#endregion
2638
2682
  //#region src/hooks/useSessionLifecycle.ts
2639
- var vn = 9e4, yn = 30, bn = 50;
2640
- function xn(e, t) {
2683
+ var bn = 9e4, xn = 30, Sn = 50, Cn = 500;
2684
+ function wn(e, t) {
2641
2685
  return t.length ? e.length ? e.length >= t.length : !1 : !0;
2642
2686
  }
2643
- function Sn(e) {
2687
+ function Tn(e) {
2644
2688
  if (e.EventType !== "run_status") return null;
2645
2689
  let t = String(e.Content?.status || "").trim().toLowerCase();
2646
2690
  return t === "completed" ? {
@@ -2654,7 +2698,7 @@ function Sn(e) {
2654
2698
  phase: "后台长任务失败"
2655
2699
  } : null;
2656
2700
  }
2657
- function Cn(e) {
2701
+ function En(e) {
2658
2702
  let { agentId: t, api: n, isMobile: r, resetCompaction: i, uiCapabilities: a, disconnectRun: o } = e, s = j(e.currentSessionId), l = j(e.agentId), u = j(null), d = j(null), f = j(null), p = k(async (e, t, r) => {
2659
2703
  let i = r.filter((e) => c(e, !1, !1));
2660
2704
  if (!i.length) return;
@@ -2688,7 +2732,7 @@ function Cn(e) {
2688
2732
  u.current !== t || t.signal.aborted || t.abort();
2689
2733
  }, o = globalThis.setTimeout(() => {
2690
2734
  a();
2691
- }, vn);
2735
+ }, bn);
2692
2736
  try {
2693
2737
  let o = (await n.subscribeRunEvents({
2694
2738
  sessionId: e.sessionId,
@@ -2718,8 +2762,8 @@ function Cn(e) {
2718
2762
  }
2719
2763
  try {
2720
2764
  let t = JSON.parse(o);
2721
- u = nn(u, [t]), i ||= an(t), r ||= i, t.EventType === "run_checkpoint" && Q.getState().upsertSessionCheckpoint(e.sessionId, t);
2722
- let n = Sn(t);
2765
+ u = rn(u, [t]), i ||= on(t), r ||= i, t.EventType === "run_checkpoint" && Q.getState().upsertSessionCheckpoint(e.sessionId, t);
2766
+ let n = Tn(t);
2723
2767
  if (n && I.getState().updateActivity({
2724
2768
  sessionId: e.sessionId,
2725
2769
  status: n.status,
@@ -2730,8 +2774,8 @@ function Cn(e) {
2730
2774
  a();
2731
2775
  break;
2732
2776
  }
2733
- let c = tn(u);
2734
- xn(c, q.getState().messages) && q.getState().setMessages(c);
2777
+ let c = nn(u);
2778
+ wn(c, q.getState().messages) && q.getState().setMessages(c);
2735
2779
  } catch (e) {
2736
2780
  console.warn("Failed to parse run event data", o, e);
2737
2781
  }
@@ -2747,32 +2791,18 @@ function Cn(e) {
2747
2791
  let t = () => s.current === e;
2748
2792
  R.getState().setCurrentSessionId(e), i(), u.current?.abort(), r && _.getState().setMobileSidebarOpen(!1);
2749
2793
  try {
2750
- let r = R.getState().eventCache[e], i;
2751
- if (r) i = {
2752
- Events: r.events,
2753
- Total: r.total,
2754
- Offset: r.offset,
2755
- Limit: r.limit
2756
- };
2757
- else {
2758
- let r = await n.listSessionEvents(e, {
2759
- offset: 0,
2760
- limit: 1
2761
- }), a = Number(r.Total ?? r.Events?.length ?? 0), o = Math.max(0, a - bn);
2762
- if (i = a <= 1 ? r : await n.listSessionEvents(e, {
2763
- offset: o,
2764
- limit: bn
2765
- }), !t()) return;
2766
- R.getState().setSessionEventCache(e, {
2767
- events: i.Events || [],
2768
- total: a,
2769
- offset: Number(i.Offset ?? o),
2770
- limit: Number(i.Limit ?? i.Events?.length ?? 0)
2771
- });
2772
- }
2773
- if (!t()) return;
2774
- let o = P.getState().capabilities || a;
2775
- o.RunLifecycle.Enabled && o.RunLifecycle.Checkpoints ? (n.listSessionCheckpoints({
2794
+ let r = await yn(e, n.listSessionEvents, {
2795
+ pageSize: Cn,
2796
+ shouldContinue: t
2797
+ });
2798
+ if (!r || (R.getState().setSessionEventCache(e, {
2799
+ events: r.events,
2800
+ total: r.total,
2801
+ offset: r.offset,
2802
+ limit: r.limit
2803
+ }), !t())) return;
2804
+ let i = P.getState().capabilities || a;
2805
+ if (i.RunLifecycle.Enabled && i.RunLifecycle.Checkpoints ? (n.listSessionCheckpoints({
2776
2806
  agentId: l.current,
2777
2807
  sessionId: e
2778
2808
  }).then((t) => {
@@ -2786,20 +2816,18 @@ function Cn(e) {
2786
2816
  Q.getState().setSessionToolReceipts(e, t.ToolReceipts || []);
2787
2817
  }).catch((t) => {
2788
2818
  console.warn("[SessionLifecycle] tool receipt load failed:", t), Q.getState().setSessionToolReceipts(e, []);
2789
- })) : Q.getState().clearSessionCheckpoints(e);
2790
- let s = i;
2791
- if (s?.Events) {
2792
- let n = s.Events, r = tn(n);
2819
+ })) : Q.getState().clearSessionCheckpoints(e), r.events) {
2820
+ let n = r.events, a = nn(n);
2793
2821
  if (!t()) return;
2794
- q.getState().setMessages(r), p(l.current, e, r);
2795
- let i = _n(n, {
2822
+ q.getState().setMessages(a), p(l.current, e, a);
2823
+ let o = vn(n, {
2796
2824
  now: Date.now(),
2797
2825
  staleAfterMs: 1800 * 1e3
2798
- }), a = rn(n);
2799
- o.RunLifecycle.Enabled && o.RunLifecycle.Resume && i[0] && m({
2826
+ }), s = an(n);
2827
+ i.RunLifecycle.Enabled && i.RunLifecycle.Resume && o[0] && m({
2800
2828
  sessionId: e,
2801
- invocationId: i[0],
2802
- afterSeqId: a,
2829
+ invocationId: o[0],
2830
+ afterSeqId: s,
2803
2831
  initialEvents: n
2804
2832
  });
2805
2833
  } else {
@@ -2822,13 +2850,13 @@ function Cn(e) {
2822
2850
  r.sessionsAgentId && r.sessionsAgentId !== e && r.resetSessionPagination(e), R.getState().setLoadingSessions(!0);
2823
2851
  let i = await n.listSessions(e, {
2824
2852
  page: 1,
2825
- pageSize: yn
2853
+ pageSize: xn
2826
2854
  });
2827
2855
  R.getState().upsertSessions(i.Sessions || [], {
2828
2856
  agentId: e,
2829
2857
  total: Number(i.Total ?? i.Sessions?.length ?? 0),
2830
2858
  page: Number(i.Page ?? 1),
2831
- pageSize: Number(i.PageSize ?? yn),
2859
+ pageSize: Number(i.PageSize ?? xn),
2832
2860
  replace: !0
2833
2861
  });
2834
2862
  let a = R.getState().sessions, o = s.current, c = Te(a, o || t || Ce(e));
@@ -2844,11 +2872,11 @@ function Cn(e) {
2844
2872
  if (e.isLoadingSessions || !e.hasMoreSessions) return;
2845
2873
  let t = ue({
2846
2874
  total: e.sessionsTotal,
2847
- pageSize: e.sessionsPageSize || yn,
2875
+ pageSize: e.sessionsPageSize || xn,
2848
2876
  loadedPages: e.loadedPages
2849
2877
  });
2850
2878
  if (!t) return;
2851
- let r = e.sessionsPageSize || yn, i = e.sessionsAgentId || l.current || "default-agent";
2879
+ let r = e.sessionsPageSize || xn, i = e.sessionsAgentId || l.current || "default-agent";
2852
2880
  try {
2853
2881
  R.getState().setLoadingSessions(!0);
2854
2882
  let a = await n.listSessions(i, {
@@ -2910,20 +2938,20 @@ function Cn(e) {
2910
2938
  loadOlderSessionEvents: k(async (e) => {
2911
2939
  let t = R.getState().eventCache[e];
2912
2940
  if (!t || t.offset <= 0 || t.isLoadingOlder) return;
2913
- let r = Math.max(0, t.offset - bn), i = t.offset - r;
2941
+ let r = Math.max(0, t.offset - Sn), i = t.offset - r;
2914
2942
  try {
2915
2943
  R.getState().setSessionEventLoadingOlder(e, !0);
2916
2944
  let a = await n.listSessionEvents(e, {
2917
2945
  offset: r,
2918
2946
  limit: i
2919
- }), o = nn(a.Events || [], t.events);
2947
+ }), o = rn(a.Events || [], t.events);
2920
2948
  if (R.getState().setSessionEventCache(e, {
2921
2949
  events: o,
2922
2950
  total: Number(a.Total ?? t.total),
2923
2951
  offset: Number(a.Offset ?? r),
2924
2952
  limit: o.length
2925
2953
  }), s.current === e) {
2926
- let t = tn(o);
2954
+ let t = nn(o);
2927
2955
  q.getState().setMessages(t), p(l.current, e, t);
2928
2956
  }
2929
2957
  } catch (e) {
@@ -2941,7 +2969,7 @@ function Cn(e) {
2941
2969
  }
2942
2970
  //#endregion
2943
2971
  //#region src/components/chat/ConnectedSidebar.tsx
2944
- function wn({ uiCapabilities: e, createNewSession: n, deleteSession: a, loadSession: s, loadMoreSessions: c }) {
2972
+ function Dn({ uiCapabilities: e, createNewSession: n, deleteSession: a, loadSession: s, loadMoreSessions: c }) {
2945
2973
  let u = R((e) => e.sessions), d = R((e) => e.currentSessionId), f = R((e) => e.pinnedSessionIds), m = R((e) => e.isLoadingSessions), h = R((e) => e.hasMoreSessions), g = _((e) => e.sidebarOpen), v = _((e) => e.mobileSidebarOpen), { isMobile: y } = Fe(), b = t(e), { desktopSidebarVisible: ee } = _e({
2946
2974
  isMobile: y,
2947
2975
  desktopSidebarOpen: g,
@@ -3004,13 +3032,13 @@ function wn({ uiCapabilities: e, createNewSession: n, deleteSession: a, loadSess
3004
3032
  }
3005
3033
  //#endregion
3006
3034
  //#region src/components/ui/dialog.tsx
3007
- var Tn = M.Root, En = M.Portal, Dn = D.forwardRef(({ className: e, ...t }, n) => /* @__PURE__ */ T(M.Overlay, {
3035
+ var On = M.Root, kn = M.Portal, An = D.forwardRef(({ className: e, ...t }, n) => /* @__PURE__ */ T(M.Overlay, {
3008
3036
  ref: n,
3009
3037
  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),
3010
3038
  ...t
3011
3039
  }));
3012
- Dn.displayName = M.Overlay.displayName;
3013
- var On = D.forwardRef(({ className: e, children: t, ...n }, r) => /* @__PURE__ */ E(En, { children: [/* @__PURE__ */ T(Dn, {}), /* @__PURE__ */ E(M.Content, {
3040
+ An.displayName = M.Overlay.displayName;
3041
+ var jn = D.forwardRef(({ className: e, children: t, ...n }, r) => /* @__PURE__ */ E(kn, { children: [/* @__PURE__ */ T(An, {}), /* @__PURE__ */ E(M.Content, {
3014
3042
  ref: r,
3015
3043
  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),
3016
3044
  ...n,
@@ -3022,50 +3050,50 @@ var On = D.forwardRef(({ className: e, children: t, ...n }, r) => /* @__PURE__ *
3022
3050
  })]
3023
3051
  })]
3024
3052
  })] }));
3025
- On.displayName = M.Content.displayName;
3026
- var kn = ({ className: e, ...t }) => /* @__PURE__ */ T("div", {
3053
+ jn.displayName = M.Content.displayName;
3054
+ var Mn = ({ className: e, ...t }) => /* @__PURE__ */ T("div", {
3027
3055
  className: p("flex flex-col space-y-1.5 text-center sm:text-left", e),
3028
3056
  ...t
3029
3057
  });
3030
- kn.displayName = "DialogHeader";
3031
- var An = ({ className: e, ...t }) => /* @__PURE__ */ T("div", {
3058
+ Mn.displayName = "DialogHeader";
3059
+ var Nn = ({ className: e, ...t }) => /* @__PURE__ */ T("div", {
3032
3060
  className: p("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2", e),
3033
3061
  ...t
3034
3062
  });
3035
- An.displayName = "DialogFooter";
3036
- var jn = D.forwardRef(({ className: e, ...t }, n) => /* @__PURE__ */ T(M.Title, {
3063
+ Nn.displayName = "DialogFooter";
3064
+ var Pn = D.forwardRef(({ className: e, ...t }, n) => /* @__PURE__ */ T(M.Title, {
3037
3065
  ref: n,
3038
3066
  className: p("text-lg font-semibold leading-none tracking-tight", e),
3039
3067
  ...t
3040
3068
  }));
3041
- jn.displayName = M.Title.displayName;
3042
- var Mn = D.forwardRef(({ className: e, ...t }, n) => /* @__PURE__ */ T(M.Description, {
3069
+ Pn.displayName = M.Title.displayName;
3070
+ var Fn = D.forwardRef(({ className: e, ...t }, n) => /* @__PURE__ */ T(M.Description, {
3043
3071
  ref: n,
3044
3072
  className: p("text-sm text-muted-foreground", e),
3045
3073
  ...t
3046
3074
  }));
3047
- Mn.displayName = M.Description.displayName;
3075
+ Fn.displayName = M.Description.displayName;
3048
3076
  //#endregion
3049
3077
  //#region src/components/chat/AttachmentPreview.tsx
3050
- function Nn(e, t) {
3078
+ function In(e, t) {
3051
3079
  if (!(!t || e)) return {
3052
3080
  width: `min(${t.width}px, calc(100vw - 5rem))`,
3053
3081
  height: `min(${t.height}px, calc(100vh - 9rem))`
3054
3082
  };
3055
3083
  }
3056
- function Pn(e, t) {
3084
+ function Ln(e, t) {
3057
3085
  if (!(!t || e)) return { width: `min(${t.width + 32}px, calc(100vw - 3rem))` };
3058
3086
  }
3059
- function Fn({ attachment: e, isMobile: t, previewImageSize: n, onClose: r, onImageLoad: i }) {
3060
- return /* @__PURE__ */ T(Tn, {
3087
+ function Rn({ attachment: e, isMobile: t, previewImageSize: n, onClose: r, onImageLoad: i }) {
3088
+ return /* @__PURE__ */ T(On, {
3061
3089
  open: !!e?.url,
3062
3090
  onOpenChange: (e) => !e && r(),
3063
- children: /* @__PURE__ */ E(On, {
3091
+ children: /* @__PURE__ */ E(jn, {
3064
3092
  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"),
3065
- style: Pn(t, n),
3093
+ style: Ln(t, n),
3066
3094
  children: [/* @__PURE__ */ T("div", {
3067
3095
  className: "flex items-center gap-3 border-b border-slate-800 px-4 py-3 pr-16",
3068
- children: /* @__PURE__ */ T(jn, {
3096
+ children: /* @__PURE__ */ T(Pn, {
3069
3097
  className: "truncate text-sm font-medium",
3070
3098
  children: e?.name || "附件预览"
3071
3099
  })
@@ -3075,7 +3103,7 @@ function Fn({ attachment: e, isMobile: t, previewImageSize: n, onClose: r, onIma
3075
3103
  src: e.url,
3076
3104
  alt: e.name,
3077
3105
  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)]"),
3078
- style: Nn(t, n),
3106
+ style: In(t, n),
3079
3107
  onLoad: (e) => {
3080
3108
  let t = e.currentTarget;
3081
3109
  i({
@@ -3094,7 +3122,7 @@ function Fn({ attachment: e, isMobile: t, previewImageSize: n, onClose: r, onIma
3094
3122
  }
3095
3123
  //#endregion
3096
3124
  //#region src/utils/context.js
3097
- function In(e) {
3125
+ function zn(e) {
3098
3126
  if (typeof e == "number" && Number.isFinite(e) && e > 0) return e;
3099
3127
  if (typeof e == "string" && e.trim()) {
3100
3128
  let t = Number(e);
@@ -3102,15 +3130,15 @@ function In(e) {
3102
3130
  }
3103
3131
  return null;
3104
3132
  }
3105
- function Ln(e) {
3133
+ function Bn(e) {
3106
3134
  return /[\u3400-\u4DBF\u4E00-\u9FFF\uF900-\uFAFF]/u.test(e);
3107
3135
  }
3108
- function Rn(e) {
3136
+ function Vn(e) {
3109
3137
  let t = String(e || "").trim();
3110
3138
  if (!t) return 0;
3111
3139
  let n = 0, r = 0;
3112
3140
  for (let e of t) {
3113
- if (Ln(e)) {
3141
+ if (Bn(e)) {
3114
3142
  n += 1;
3115
3143
  continue;
3116
3144
  }
@@ -3118,24 +3146,24 @@ function Rn(e) {
3118
3146
  }
3119
3147
  return Math.max(1, n + Math.ceil(r / 4));
3120
3148
  }
3121
- function zn(e) {
3149
+ function Hn(e) {
3122
3150
  if (!e) return 0;
3123
- if (e.role === "system") return e.eventType === "context_checkpoint" ? Rn(e.summary || "") : 0;
3124
- let t = Rn(e.content || "");
3125
- return e.tools && (t += Object.values(e.tools).reduce((e, t) => e + Rn(t?.name || "") + Rn(t?.args || "") + Rn(t?.output || ""), 0)), t;
3151
+ if (e.role === "system") return e.eventType === "context_checkpoint" ? Vn(e.summary || "") : 0;
3152
+ let t = Vn(e.content || "");
3153
+ return e.tools && (t += Object.values(e.tools).reduce((e, t) => e + Vn(t?.name || "") + Vn(t?.args || "") + Vn(t?.output || ""), 0)), t;
3126
3154
  }
3127
- function Bn(e) {
3128
- return e ? In(e.context_window_tokens) ?? In(e?.limits?.context_window_tokens) : null;
3155
+ function Un(e) {
3156
+ return e ? zn(e.context_window_tokens) ?? zn(e?.limits?.context_window_tokens) : null;
3129
3157
  }
3130
- function Vn(e) {
3131
- return e ? In(e.auto_compact_threshold_percentage) ?? 84 : 84;
3158
+ function Wn(e) {
3159
+ return e ? zn(e.auto_compact_threshold_percentage) ?? 84 : 84;
3132
3160
  }
3133
- function Hn({ messages: e, draftInput: t, selectedModel: n }) {
3134
- let r = Bn(n);
3161
+ function Gn({ messages: e, draftInput: t, selectedModel: n }) {
3162
+ let r = Un(n);
3135
3163
  if (!r) return null;
3136
3164
  let i = [...e || []].reverse().find((e) => e?.role === "system" && e?.eventType === "context_checkpoint" && e?.status === "running");
3137
3165
  if (i) {
3138
- let e = zn(i);
3166
+ let e = Hn(i);
3139
3167
  return {
3140
3168
  label: "正在压缩上下文…",
3141
3169
  phase: "compressing",
@@ -3144,10 +3172,10 @@ function Hn({ messages: e, draftInput: t, selectedModel: n }) {
3144
3172
  percent: Math.min(100, Math.max(0, Math.round(e / r * 100)))
3145
3173
  };
3146
3174
  }
3147
- let a = (e || []).reduce((e, t) => e + zn(t), 0) + Rn(t || "");
3175
+ let a = (e || []).reduce((e, t) => e + Hn(t), 0) + Vn(t || "");
3148
3176
  if (a <= 0) return null;
3149
3177
  let o = Math.min(100, Math.max(0, Math.round(a / r * 100)));
3150
- return o >= Vn(n) ? {
3178
+ return o >= Wn(n) ? {
3151
3179
  label: `估算上下文 ${o}% · 即将压缩`,
3152
3180
  phase: "warning",
3153
3181
  percent: o,
@@ -3163,8 +3191,8 @@ function Hn({ messages: e, draftInput: t, selectedModel: n }) {
3163
3191
  }
3164
3192
  //#endregion
3165
3193
  //#region src/components/chat/ConnectedMessageList.tsx
3166
- function Un({ agentName: e, isMobile: t, onDeleteFeedback: n, onSubmitFeedback: r, onRespondToApproval: i, onStopGeneration: a, onCancelRemote: o, checkpointResumeEnabled: s = !1, onResumeCheckpoint: c, onLoadOlderSessionEvents: l }) {
3167
- let u = q((e) => e.messages), d = R((e) => e.currentSessionId), f = I((e) => !!(e.getSessionActivity(d) && e.isSessionStreaming(d))), p = I((e) => e.getSessionActivity(d)), h = Q((e) => e.getSessionCheckpoints(d)), g = R((e) => d ? e.eventCache[d] : null), v = _((e) => e.input), y = F((e) => e.availableModels), b = F((e) => e.selectedModel), ee = _((e) => e.previewAttachment), te = _((e) => e.previewImageSize), x = j(null), S = j(!0), C = j(!1), ne = j(0), w = j(f), D = j(!1), O = ae(() => y.find((e) => e.id === b) || null, [y, b]), ie = ae(() => Hn({
3194
+ function Kn({ agentName: e, isMobile: t, onDeleteFeedback: n, onSubmitFeedback: r, onRespondToApproval: i, onStopGeneration: a, onCancelRemote: o, checkpointResumeEnabled: s = !1, onResumeCheckpoint: c, onLoadOlderSessionEvents: l }) {
3195
+ let u = q((e) => e.messages), d = R((e) => e.currentSessionId), f = I((e) => !!(e.getSessionActivity(d) && e.isSessionStreaming(d))), p = I((e) => e.getSessionActivity(d)), h = Q((e) => e.getSessionCheckpoints(d)), g = R((e) => d ? e.eventCache[d] : null), v = _((e) => e.input), y = F((e) => e.availableModels), b = F((e) => e.selectedModel), ee = _((e) => e.previewAttachment), te = _((e) => e.previewImageSize), x = j(null), S = j(!0), C = j(!1), ne = j(0), w = j(f), D = j(!1), O = ae(() => y.find((e) => e.id === b) || null, [y, b]), ie = ae(() => Gn({
3168
3196
  messages: u,
3169
3197
  draftInput: v,
3170
3198
  selectedModel: O
@@ -3230,7 +3258,7 @@ function Un({ agentName: e, isMobile: t, onDeleteFeedback: n, onSubmitFeedback:
3230
3258
  checkpoints: s ? h : [],
3231
3259
  onResumeCheckpoint: c,
3232
3260
  scrollRef: x
3233
- }), /* @__PURE__ */ T(Fn, {
3261
+ }), /* @__PURE__ */ T(Rn, {
3234
3262
  attachment: ee,
3235
3263
  isMobile: t,
3236
3264
  previewImageSize: te,
@@ -3242,7 +3270,7 @@ function Un({ agentName: e, isMobile: t, onDeleteFeedback: n, onSubmitFeedback:
3242
3270
  }
3243
3271
  //#endregion
3244
3272
  //#region src/utils/attachment.ts
3245
- function Wn(e) {
3273
+ function qn(e) {
3246
3274
  return [
3247
3275
  e.name,
3248
3276
  e.size,
@@ -3250,19 +3278,19 @@ function Wn(e) {
3250
3278
  e.type
3251
3279
  ].join(":");
3252
3280
  }
3253
- function Gn(e, t) {
3281
+ function Jn(e, t) {
3254
3282
  let n = /* @__PURE__ */ new Map();
3255
- for (let t of e) n.set(Wn(t), t);
3256
- for (let e of t) n.set(Wn(e), e);
3283
+ for (let t of e) n.set(qn(t), t);
3284
+ for (let e of t) n.set(qn(e), e);
3257
3285
  return Array.from(n.values());
3258
3286
  }
3259
- function Kn(e) {
3287
+ function Yn(e) {
3260
3288
  return Array.from(e.clipboardData.items || []).filter((e) => e.kind === "file").map((e) => e.getAsFile()).filter((e) => !!e);
3261
3289
  }
3262
3290
  //#endregion
3263
3291
  //#region src/components/chat/ConnectedComposer.tsx
3264
- function qn({ composerMaxHeight: e, submitDraft: t, stopGeneration: n, cancelRemote: r, isMobile: i }) {
3265
- 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(() => Hn({
3292
+ function Xn({ composerMaxHeight: e, submitDraft: t, stopGeneration: n, cancelRemote: r, isMobile: i }) {
3293
+ let o = _((e) => e.input), s = _((e) => e.attachments), c = R((e) => e.currentSessionId), l = I((e) => !!(e.getSessionActivity(c) && e.isSessionStreaming(c))), u = _((e) => e.queuedDrafts), d = q((e) => e.messages), f = F((e) => e.availableModels), p = F((e) => e.selectedModel), m = j(null), h = j(null), g = ae(() => f.find((e) => e.id === p) || null, [f, p]), v = ae(() => Gn({
3266
3294
  messages: d,
3267
3295
  draftInput: o,
3268
3296
  selectedModel: g
@@ -3279,7 +3307,7 @@ function qn({ composerMaxHeight: e, submitDraft: t, stopGeneration: n, cancelRem
3279
3307
  let b = (t) => {
3280
3308
  _.getState().setInput(t.target.value), t.target.style.height = "auto", t.target.style.height = `${Math.min(t.target.scrollHeight, e)}px`;
3281
3309
  }, ee = (e) => {
3282
- e.length && _.getState().setAttachments((t) => Gn(t, e));
3310
+ e.length && _.getState().setAttachments((t) => Jn(t, e));
3283
3311
  };
3284
3312
  return /* @__PURE__ */ T(a, {
3285
3313
  attachments: s,
@@ -3293,7 +3321,7 @@ function qn({ composerMaxHeight: e, submitDraft: t, stopGeneration: n, cancelRem
3293
3321
  onAppendAttachments: ee,
3294
3322
  onInputChange: b,
3295
3323
  onPaste: (e) => {
3296
- let t = Kn(e);
3324
+ let t = Yn(e);
3297
3325
  t.length && (e.preventDefault(), e.stopPropagation(), ee(t));
3298
3326
  },
3299
3327
  onRemoveAttachment: (e) => _.getState().setAttachments((t) => t.filter((t, n) => n !== e)),
@@ -3305,7 +3333,7 @@ function qn({ composerMaxHeight: e, submitDraft: t, stopGeneration: n, cancelRem
3305
3333
  }
3306
3334
  //#endregion
3307
3335
  //#region src/api/session.ts
3308
- async function Jn(e, t) {
3336
+ async function Zn(e, t) {
3309
3337
  let n = await K("ListSessions", {
3310
3338
  AgentId: e,
3311
3339
  Page: t?.page,
@@ -3318,15 +3346,15 @@ async function Jn(e, t) {
3318
3346
  PageSize: Number.isFinite(Number(n.PageSize)) ? Number(n.PageSize) : t?.pageSize ?? n.Sessions?.length ?? 0
3319
3347
  };
3320
3348
  }
3321
- async function Yn(e, t) {
3349
+ async function Qn(e, t) {
3322
3350
  return (await K("CreateSession", { AgentId: e }, t)).Session;
3323
3351
  }
3324
- async function Xn(e, t) {
3352
+ async function $n(e, t) {
3325
3353
  await K("DeleteSession", { SessionId: e }, t);
3326
3354
  }
3327
3355
  //#endregion
3328
3356
  //#region src/api/events.ts
3329
- async function Zn(e, t) {
3357
+ async function er(e, t) {
3330
3358
  let n = await K("ListSessionEvents", {
3331
3359
  SessionId: e,
3332
3360
  Offset: t?.offset,
@@ -3341,34 +3369,34 @@ async function Zn(e, t) {
3341
3369
  }
3342
3370
  //#endregion
3343
3371
  //#region src/api/run.ts
3344
- async function Qn(e, t) {
3372
+ async function tr(e, t) {
3345
3373
  return ze("RunAgent", e, t);
3346
3374
  }
3347
3375
  //#endregion
3348
3376
  //#region src/api/checkpoints.ts
3349
- async function $n(e, t) {
3377
+ async function nr(e, t) {
3350
3378
  let n = {
3351
3379
  AgentId: e.agentId,
3352
3380
  SessionId: e.sessionId
3353
3381
  };
3354
3382
  return e.runId && (n.RunId = e.runId), K("ListSessionCheckpoints", n, t);
3355
3383
  }
3356
- async function er(e, t) {
3357
- return K("PreviewCheckpointResume", {
3384
+ async function rr(e, t) {
3385
+ return K("GetCheckpointResumePreview", {
3358
3386
  AgentId: e.agentId,
3359
3387
  SessionId: e.sessionId,
3360
3388
  RunId: e.runId,
3361
3389
  CheckpointId: e.checkpointId
3362
3390
  }, t);
3363
3391
  }
3364
- async function tr(e, t) {
3392
+ async function ir(e, t) {
3365
3393
  let n = {
3366
3394
  AgentId: e.agentId,
3367
3395
  SessionId: e.sessionId
3368
3396
  };
3369
3397
  return e.runId && (n.RunId = e.runId), e.checkpointId && (n.CheckpointId = e.checkpointId), K("ListToolReceipts", n, t);
3370
3398
  }
3371
- async function nr(e, t) {
3399
+ async function ar(e, t) {
3372
3400
  let n = {
3373
3401
  AgentId: e.agentId,
3374
3402
  SessionId: e.sessionId,
@@ -3380,23 +3408,23 @@ async function nr(e, t) {
3380
3408
  }
3381
3409
  //#endregion
3382
3410
  //#region src/api/workspace.ts
3383
- async function rr(e, t, n) {
3411
+ async function or(e, t, n) {
3384
3412
  return K("ListWorkspaceFiles", {
3385
3413
  AgentId: e,
3386
3414
  Path: t,
3387
3415
  Recursive: n
3388
3416
  });
3389
3417
  }
3390
- async function ir(e) {
3418
+ async function sr(e) {
3391
3419
  return Le("AddWorkspaceFile", e);
3392
3420
  }
3393
- async function ar(e, t) {
3421
+ async function cr(e, t) {
3394
3422
  return K("DeleteWorkspaceFile", {
3395
3423
  AgentId: e,
3396
3424
  Path: t
3397
3425
  });
3398
3426
  }
3399
- async function or(e, t, n) {
3427
+ async function lr(e, t, n) {
3400
3428
  return Re("GetWorkspaceFileContent", {
3401
3429
  AgentId: e,
3402
3430
  FilePath: t
@@ -3407,38 +3435,38 @@ async function or(e, t, n) {
3407
3435
  }
3408
3436
  //#endregion
3409
3437
  //#region src/api/upload.ts
3410
- async function sr(e, t) {
3438
+ async function ur(e, t) {
3411
3439
  return Le("UploadFile", e, t);
3412
3440
  }
3413
3441
  //#endregion
3414
3442
  //#region src/core/api/facade.ts
3415
- var cr = class {
3443
+ var dr = class {
3416
3444
  async listSessions(e, t) {
3417
- return Jn(e, t);
3445
+ return Zn(e, t);
3418
3446
  }
3419
3447
  async createSession(e, t) {
3420
- return { SessionId: (await Yn(e, t)).SessionId };
3448
+ return { SessionId: (await Qn(e, t)).SessionId };
3421
3449
  }
3422
3450
  async deleteSession(e, t) {
3423
- await Xn(e, t);
3451
+ await $n(e, t);
3424
3452
  }
3425
3453
  async listSessionEvents(e, t) {
3426
- return Zn(e, t);
3454
+ return er(e, t);
3427
3455
  }
3428
3456
  async listSessionCheckpoints(e, t) {
3429
- return $n(e, t);
3457
+ return nr(e, t);
3430
3458
  }
3431
3459
  async previewCheckpointResume(e, t) {
3432
- return er(e, t);
3460
+ return rr(e, t);
3433
3461
  }
3434
3462
  async listToolReceipts(e, t) {
3435
- return tr(e, t);
3463
+ return ir(e, t);
3436
3464
  }
3437
3465
  async runAgent(e, t) {
3438
- return Qn(e, t);
3466
+ return tr(e, t);
3439
3467
  }
3440
3468
  async resumeRun(e, t) {
3441
- return nr(e, t);
3469
+ return ar(e, t);
3442
3470
  }
3443
3471
  async subscribeRunEvents(e, t) {
3444
3472
  return Be("SubscribeRunEvents", {
@@ -3463,16 +3491,16 @@ var cr = class {
3463
3491
  await K("DeleteResponseFeedback", e, t);
3464
3492
  }
3465
3493
  async listWorkspaceFiles(e, t, n) {
3466
- return rr(e, t, n);
3494
+ return or(e, t, n);
3467
3495
  }
3468
3496
  async addWorkspaceFile(e) {
3469
- return ir(e);
3497
+ return sr(e);
3470
3498
  }
3471
3499
  async deleteWorkspaceFile(e, t) {
3472
- await ar(e, t);
3500
+ await cr(e, t);
3473
3501
  }
3474
3502
  async getWorkspaceFileContent(e, t, n) {
3475
- return or(e, t, n);
3503
+ return lr(e, t, n);
3476
3504
  }
3477
3505
  async listAgentModels(e) {
3478
3506
  return He(e);
@@ -3481,14 +3509,14 @@ var cr = class {
3481
3509
  return Ve();
3482
3510
  }
3483
3511
  async uploadFile(e, t) {
3484
- return sr(e, t);
3512
+ return ur(e, t);
3485
3513
  }
3486
- }, lr = new cr(), ur = O.lazy(() => import("./ArtifactsPanel-BCjpJZ9m.js").then((e) => ({ default: e.ArtifactsPanel }))), dr = O.lazy(() => import("./NativeTerminalPanel-C1LtiwB7.js").then((e) => e.n).then((e) => ({ default: e.NativeTerminalPanel })));
3487
- function fr({ apiAdapter: e, initialSurface: r = "chat", routeShell: i } = {}) {
3488
- let a = e || lr, 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({
3514
+ }, fr = new dr(), pr = O.lazy(() => import("./ArtifactsPanel-BCjpJZ9m.js").then((e) => ({ default: e.ArtifactsPanel }))), mr = O.lazy(() => import("./NativeTerminalPanel-C1LtiwB7.js").then((e) => e.n).then((e) => ({ default: e.NativeTerminalPanel })));
3515
+ function hr({ apiAdapter: e, initialSurface: r = "chat", routeShell: i } = {}) {
3516
+ let a = e || fr, o = P((e) => e.agentId), s = R((e) => e.currentSessionId), c = I((e) => e.isStreaming), l = _((e) => e.sidebarOpen), u = _((e) => e.mobileSidebarOpen), d = _((e) => e.mobileActionsOpen), f = P((e) => e.agentName), p = F((e) => e.selectedModel), m = F((e) => e.availableModels), h = F((e) => e.modelSource), v = F((e) => e.modelCatalogLoaded), te = F((e) => e.thinkingMode), x = P((e) => e.agentFramework), S = P((e) => e.workspaceFiles), C = P((e) => e.accessMode), w = _((e) => e.workspacePanelOpen), D = _((e) => e.workspacePanelWidth), O = _((e) => e.workspacePanelFullscreen), ae = P((e) => e.apiFormats), M = P((e) => e.capabilities), N = ne((e) => e.visible && !!e.content), se = j([]), ce = j(null), { isMobile: L, viewportHeight: le } = Fe(), ue = ve({
3489
3517
  isMobile: L,
3490
3518
  viewportHeight: le
3491
- }), { fetchSessions: de, loadMoreSessions: fe, loadSession: pe, loadOlderSessionEvents: me, createNewSession: he, deleteSession: ge, currentSessionIdRef: z, agentIdRef: B, runSubscriptionAbortRef: _e } = Cn({
3519
+ }), { fetchSessions: de, loadMoreSessions: fe, loadSession: pe, loadOlderSessionEvents: me, createNewSession: he, deleteSession: ge, currentSessionIdRef: z, agentIdRef: B, runSubscriptionAbortRef: _e } = En({
3492
3520
  agentId: o,
3493
3521
  currentSessionId: s,
3494
3522
  isMobile: L,
@@ -3502,7 +3530,7 @@ function fr({ apiAdapter: e, initialSurface: r = "chat", routeShell: i } = {}) {
3502
3530
  R.getState().clearSessionEventCache(e), de(B.current, e);
3503
3531
  };
3504
3532
  queueMicrotask(t), window.setTimeout(t, 1800), window.setTimeout(t, 5e3);
3505
- }, [B, de]), be = m.find((e) => e.id === p) || null, { submitDraft: xe, stopGeneration: Se, disconnectRun: Ce, resumeCheckpoint: Te } = fn({
3533
+ }, [B, de]), be = m.find((e) => e.id === p) || null, { submitDraft: xe, stopGeneration: Se, disconnectRun: Ce, resumeCheckpoint: Te } = pn({
3506
3534
  agentId: o,
3507
3535
  currentSessionId: s,
3508
3536
  agentFramework: x,
@@ -3547,7 +3575,7 @@ function fr({ apiAdapter: e, initialSurface: r = "chat", routeShell: i } = {}) {
3547
3575
  o,
3548
3576
  z,
3549
3577
  ye
3550
- ]), { submitResponseFeedback: Oe, deleteResponseFeedback: ke, respondToApproval: je } = pn({
3578
+ ]), { submitResponseFeedback: Oe, deleteResponseFeedback: ke, respondToApproval: je } = mn({
3551
3579
  agentId: o,
3552
3580
  currentSessionId: s,
3553
3581
  isStreaming: c,
@@ -3583,7 +3611,7 @@ function fr({ apiAdapter: e, initialSurface: r = "chat", routeShell: i } = {}) {
3583
3611
  let Ve = /* @__PURE__ */ E("div", {
3584
3612
  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",
3585
3613
  children: [
3586
- /* @__PURE__ */ T(wn, {
3614
+ /* @__PURE__ */ T(Dn, {
3587
3615
  uiCapabilities: M,
3588
3616
  createNewSession: he,
3589
3617
  deleteSession: ge,
@@ -3625,7 +3653,7 @@ function fr({ apiAdapter: e, initialSurface: r = "chat", routeShell: i } = {}) {
3625
3653
  nativeTerminal: M.NativeTerminal,
3626
3654
  workspaceEnabled: V,
3627
3655
  onOpenWorkspace: () => _.getState().setWorkspacePanelOpen(!0)
3628
- }) : /* @__PURE__ */ E(re, { children: [/* @__PURE__ */ T(Un, {
3656
+ }) : /* @__PURE__ */ E(re, { children: [/* @__PURE__ */ T(Kn, {
3629
3657
  agentName: f,
3630
3658
  isMobile: L,
3631
3659
  onDeleteFeedback: ke,
@@ -3636,7 +3664,7 @@ function fr({ apiAdapter: e, initialSurface: r = "chat", routeShell: i } = {}) {
3636
3664
  checkpointResumeEnabled: M.RunLifecycle.Enabled && M.RunLifecycle.Checkpoints && M.RunLifecycle.CheckpointResume,
3637
3665
  onResumeCheckpoint: Te,
3638
3666
  onLoadOlderSessionEvents: me
3639
- }), /* @__PURE__ */ T(qn, {
3667
+ }), /* @__PURE__ */ T(Xn, {
3640
3668
  composerMaxHeight: ue,
3641
3669
  submitDraft: xe,
3642
3670
  stopGeneration: Ee,
@@ -3674,11 +3702,11 @@ function fr({ apiAdapter: e, initialSurface: r = "chat", routeShell: i } = {}) {
3674
3702
  }),
3675
3703
  N && /* @__PURE__ */ T(ie, {
3676
3704
  fallback: null,
3677
- children: /* @__PURE__ */ T(ur, {})
3705
+ children: /* @__PURE__ */ T(pr, {})
3678
3706
  }),
3679
3707
  Be ? /* @__PURE__ */ T(ie, {
3680
3708
  fallback: null,
3681
- children: /* @__PURE__ */ T(dr, {
3709
+ children: /* @__PURE__ */ T(mr, {
3682
3710
  capability: M.NativeTerminal,
3683
3711
  open: !0,
3684
3712
  sessionId: s,
@@ -3691,14 +3719,14 @@ function fr({ apiAdapter: e, initialSurface: r = "chat", routeShell: i } = {}) {
3691
3719
  }
3692
3720
  //#endregion
3693
3721
  //#region src/core/transport/sse-transport.ts
3694
- function pr(e, t) {
3722
+ function gr(e, t) {
3695
3723
  if (e.eventName === "__ping__") {
3696
3724
  I.getState().updateActivity({ countEvent: !1 });
3697
3725
  return;
3698
3726
  }
3699
3727
  t.onEvent(e);
3700
3728
  }
3701
- var mr = class {
3729
+ var _r = class {
3702
3730
  protocol = "sse-post";
3703
3731
  async connect(e, t) {
3704
3732
  let n = (await ze(e.action, e.body || {}, { signal: e.signal })).getReader(), r = new TextDecoder(), i = "", a = !1;
@@ -3718,7 +3746,7 @@ var mr = class {
3718
3746
  t.onComplete();
3719
3747
  return;
3720
3748
  }
3721
- pr(e, t);
3749
+ gr(e, t);
3722
3750
  }
3723
3751
  }
3724
3752
  }
@@ -3730,7 +3758,7 @@ var mr = class {
3730
3758
  a = !0, n.cancel().catch(() => {});
3731
3759
  };
3732
3760
  }
3733
- }, hr = class {
3761
+ }, vr = class {
3734
3762
  protocol = "sse-get";
3735
3763
  async connect(e, t) {
3736
3764
  let n = (await Be(e.action, e.params || {}, { signal: e.signal })).getReader(), r = new TextDecoder(), i = "", a = !1;
@@ -3750,7 +3778,7 @@ var mr = class {
3750
3778
  t.onComplete();
3751
3779
  return;
3752
3780
  }
3753
- pr(e, t);
3781
+ gr(e, t);
3754
3782
  }
3755
3783
  }
3756
3784
  }
@@ -3764,4 +3792,4 @@ var mr = class {
3764
3792
  }
3765
3793
  };
3766
3794
  //#endregion
3767
- export { fr as AgentWorkbench, cr as ApiFacadeImpl, xt as RunEngineImpl, hr as SseGetTransport, mr as SsePostTransport, ct as createProtocol };
3795
+ export { hr as AgentWorkbench, dr as ApiFacadeImpl, xt as RunEngineImpl, vr as SseGetTransport, _r as SsePostTransport, ct as createProtocol };