@kingsoftcloud/ksadk-web 0.2.11 → 0.2.13

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 (120) hide show
  1. package/CHANGELOG.md +24 -0
  2. package/README.md +22 -0
  3. package/dist-ksadk/assets/{ArtifactsPanel-BF4v3fIu.js → ArtifactsPanel-BXcrygCd.js} +1 -1
  4. package/dist-ksadk/assets/{CodeBlock-MkPxZeyx.js → CodeBlock-BcCOwv3F.js} +1 -1
  5. package/dist-ksadk/assets/{MathMessageMarkdown-BtAniUMT.js → MathMessageMarkdown-Drzttgxm.js} +1 -1
  6. package/dist-ksadk/assets/{MermaidBlock-B7_vB2SD.js → MermaidBlock-mtRNvScL.js} +6 -6
  7. package/dist-ksadk/assets/{NativeTerminalPanel-DKuFni1-.js → NativeTerminalPanel-LnQxyAZB.js} +1 -1
  8. package/dist-ksadk/assets/{arc-DcxNT_so.js → arc-tHdp8jQa.js} +1 -1
  9. package/dist-ksadk/assets/architecture-7EHR7CIX-ld802pvW.js +1 -0
  10. package/dist-ksadk/assets/{architectureDiagram-3BPJPVTR-BrLH3CLV.js → architectureDiagram-3BPJPVTR-iz_Q1z15.js} +1 -1
  11. package/dist-ksadk/assets/{blockDiagram-GPEHLZMM-D4lvcIrU.js → blockDiagram-GPEHLZMM-UGrJbhBA.js} +1 -1
  12. package/dist-ksadk/assets/{c4Diagram-AAUBKEIU-v644IW0m.js → c4Diagram-AAUBKEIU-CXQpIgbq.js} +1 -1
  13. package/dist-ksadk/assets/channel-COAU2EGH.js +1 -0
  14. package/dist-ksadk/assets/{chunk-2J33WTMH-CI4vAXF2.js → chunk-2J33WTMH-BALTkjHL.js} +1 -1
  15. package/dist-ksadk/assets/{chunk-4BX2VUAB-B7f3Nw20.js → chunk-4BX2VUAB-ljiuFwa0.js} +1 -1
  16. package/dist-ksadk/assets/{chunk-55IACEB6-Ba9KW173.js → chunk-55IACEB6-CFNeHQBP.js} +1 -1
  17. package/dist-ksadk/assets/{chunk-727SXJPM-CBkuHlWy.js → chunk-727SXJPM-C5E5qV45.js} +1 -1
  18. package/dist-ksadk/assets/{chunk-AQP2D5EJ-cWD88O0R.js → chunk-AQP2D5EJ-qfoH6flS.js} +1 -1
  19. package/dist-ksadk/assets/{chunk-FMBD7UC4-BUrLnsHX.js → chunk-FMBD7UC4-DigwjG9R.js} +1 -1
  20. package/dist-ksadk/assets/{chunk-ND2GUHAM-B_uYv3IA.js → chunk-ND2GUHAM-XNYKkHA-.js} +1 -1
  21. package/dist-ksadk/assets/chunk-QZHKN3VN-BvzsW0_z.js +1 -0
  22. package/dist-ksadk/assets/classDiagram-4FO5ZUOK-DFTBkc62.js +1 -0
  23. package/dist-ksadk/assets/classDiagram-v2-Q7XG4LA2-DFTBkc62.js +1 -0
  24. package/dist-ksadk/assets/{cose-bilkent-S5V4N54A-Ob1AOX07.js → cose-bilkent-S5V4N54A-DGqDRX9x.js} +1 -1
  25. package/dist-ksadk/assets/{dagre-BM42HDAG-Cw2ELnlF.js → dagre-BM42HDAG-CbbJ_rI4.js} +1 -1
  26. package/dist-ksadk/assets/{diagram-2AECGRRQ-BIR6If7W.js → diagram-2AECGRRQ-C8n-HBnY.js} +1 -1
  27. package/dist-ksadk/assets/{diagram-5GNKFQAL-CaECh3Vg.js → diagram-5GNKFQAL-BIta1UbQ.js} +1 -1
  28. package/dist-ksadk/assets/{diagram-KO2AKTUF-D3V-rrkc.js → diagram-KO2AKTUF-CK9z9G5J.js} +1 -1
  29. package/dist-ksadk/assets/{diagram-LMA3HP47-BzEyff8c.js → diagram-LMA3HP47-Be71txec.js} +1 -1
  30. package/dist-ksadk/assets/{diagram-OG6HWLK6-Bgthbllv.js → diagram-OG6HWLK6-DGFaZ5wp.js} +1 -1
  31. package/dist-ksadk/assets/{dist-BbsQ32yZ.js → dist-BKUR95NE.js} +1 -1
  32. package/dist-ksadk/assets/{dist-xjcaveNh.js → dist-BPECOwEw.js} +1 -1
  33. package/dist-ksadk/assets/{dist-FgO6dUv_.js → dist-BW5Ld9f-.js} +1 -1
  34. package/dist-ksadk/assets/{dist-Br4tabXH.js → dist-BhIBOiwD.js} +1 -1
  35. package/dist-ksadk/assets/{dist-CQj_mZtX.js → dist-BiKbpujX.js} +1 -1
  36. package/dist-ksadk/assets/{dist-C1FbzTlR.js → dist-C1w53MwT.js} +1 -1
  37. package/dist-ksadk/assets/{dist-qmkcKPdJ.js → dist-C5TwAg32.js} +1 -1
  38. package/dist-ksadk/assets/{dist-FWZSQYuG.js → dist-CR5MGEiz.js} +1 -1
  39. package/dist-ksadk/assets/{dist-SOaE0trD.js → dist-CWYvp3zw.js} +1 -1
  40. package/dist-ksadk/assets/{dist-BI5M27-4.js → dist-C_Z1-ZmA.js} +1 -1
  41. package/dist-ksadk/assets/{dist-loAWb-yY.js → dist-CjOZLBw0.js} +1 -1
  42. package/dist-ksadk/assets/{dist-CtpPIyFY.js → dist-CogLyQpT.js} +1 -1
  43. package/dist-ksadk/assets/{dist-DhwceB_X.js → dist-D2IzCbzs.js} +1 -1
  44. package/dist-ksadk/assets/{dist-CJVD8Qen.js → dist-D51ocFDT.js} +1 -1
  45. package/dist-ksadk/assets/{dist-CltMulHu.js → dist-DW68jH2U.js} +1 -1
  46. package/dist-ksadk/assets/{dist-CprtF_Yw.js → dist-DZH4wrvX.js} +1 -1
  47. package/dist-ksadk/assets/{dist-DNQ5Xgkl.js → dist-Da8ivwwd.js} +1 -1
  48. package/dist-ksadk/assets/{dist-B8ZWpW4i.js → dist-Db3ZLHDu.js} +1 -1
  49. package/dist-ksadk/assets/{dist-Cs_CrFvx.js → dist-DtQF0aK1.js} +1 -1
  50. package/dist-ksadk/assets/{dist-B4yXtSg3.js → dist-SfWTEVE-.js} +1 -1
  51. package/dist-ksadk/assets/{dist-BZzeSVME.js → dist-jXQ-bzWe.js} +1 -1
  52. package/dist-ksadk/assets/{dist-BE76hYy3.js → dist-oiCsxUDb.js} +1 -1
  53. package/dist-ksadk/assets/{erDiagram-TEJ5UH35-C_N1U6ND.js → erDiagram-TEJ5UH35-DxpQTwOK.js} +1 -1
  54. package/dist-ksadk/assets/eventmodeling-FCH6USID-CTWi3c6l.js +1 -0
  55. package/dist-ksadk/assets/{flowDiagram-I6XJVG4X-Cu2-GdOp.js → flowDiagram-I6XJVG4X-DtJfiVka.js} +1 -1
  56. package/dist-ksadk/assets/{ganttDiagram-6RSMTGT7-CFMrfxGE.js → ganttDiagram-6RSMTGT7-Cads5zt8.js} +1 -1
  57. package/dist-ksadk/assets/gitGraph-WXDBUCRP-BUUNILpg.js +1 -0
  58. package/dist-ksadk/assets/{gitGraphDiagram-PVQCEYII-DMfMwZL3.js → gitGraphDiagram-PVQCEYII-pVBGF0kC.js} +1 -1
  59. package/dist-ksadk/assets/index-BmYXEuwx.js +165 -0
  60. package/dist-ksadk/assets/info-J43DQDTF-Bp9uT-J8.js +1 -0
  61. package/dist-ksadk/assets/{infoDiagram-5YYISTIA-cBZXniHy.js → infoDiagram-5YYISTIA-DRnfow9x.js} +1 -1
  62. package/dist-ksadk/assets/{ishikawaDiagram-YF4QCWOH-Byt-LQw-.js → ishikawaDiagram-YF4QCWOH-Cj4f-Vgb.js} +1 -1
  63. package/dist-ksadk/assets/{journeyDiagram-JHISSGLW-BtY3m69h.js → journeyDiagram-JHISSGLW-CAlm8MAI.js} +1 -1
  64. package/dist-ksadk/assets/{kanban-definition-UN3LZRKU-C6iN0sWn.js → kanban-definition-UN3LZRKU-Dad-GGF-.js} +1 -1
  65. package/dist-ksadk/assets/{katex-DJ8K3DD_.js → katex-C29J-Smv.js} +1 -1
  66. package/dist-ksadk/assets/{linear-CUfNl6zg.js → linear-zSHuEM7v.js} +1 -1
  67. package/dist-ksadk/assets/{mermaid-parser.core-xgL8Vh_R.js → mermaid-parser.core-Cc12WCm1.js} +2 -2
  68. package/dist-ksadk/assets/{mindmap-definition-RKZ34NQL-BkGzz7Z2.js → mindmap-definition-RKZ34NQL-BaWEag7j.js} +1 -1
  69. package/dist-ksadk/assets/packet-YPE3B663-BrkZLyQL.js +1 -0
  70. package/dist-ksadk/assets/pie-LRSECV5Y-DjPUnz6v.js +1 -0
  71. package/dist-ksadk/assets/{pieDiagram-4H26LBE5-BIH7P3Lx.js → pieDiagram-4H26LBE5-CUweZZ4V.js} +1 -1
  72. package/dist-ksadk/assets/{quadrantDiagram-W4KKPZXB-C2xbbI2c.js → quadrantDiagram-W4KKPZXB-r6VGrgUe.js} +1 -1
  73. package/dist-ksadk/assets/radar-GUYGQ44K-B4p0ZaJn.js +1 -0
  74. package/dist-ksadk/assets/{requirementDiagram-4Y6WPE33-ByFUrTNV.js → requirementDiagram-4Y6WPE33-CODRvc2-.js} +1 -1
  75. package/dist-ksadk/assets/{sankeyDiagram-5OEKKPKP-vGZbAxiz.js → sankeyDiagram-5OEKKPKP-Bfu8TihS.js} +1 -1
  76. package/dist-ksadk/assets/{sequenceDiagram-3UESZ5HK-ZkwUIiu3.js → sequenceDiagram-3UESZ5HK-B0aTqv-7.js} +1 -1
  77. package/dist-ksadk/assets/{stateDiagram-AJRCARHV-BdbKWYq8.js → stateDiagram-AJRCARHV-C5D586Kc.js} +1 -1
  78. package/dist-ksadk/assets/stateDiagram-v2-BHNVJYJU-NgpS71EE.js +1 -0
  79. package/dist-ksadk/assets/{timeline-definition-PNZ67QCA-B5QfJdJp.js → timeline-definition-PNZ67QCA-BN9QGovG.js} +1 -1
  80. package/dist-ksadk/assets/treeView-BLDUP644-D52yTg0v.js +1 -0
  81. package/dist-ksadk/assets/treemap-LRROVOQU-BXzm9_qc.js +1 -0
  82. package/dist-ksadk/assets/{vennDiagram-CIIHVFJN-zcCHPgCd.js → vennDiagram-CIIHVFJN-DD2DPPQK.js} +1 -1
  83. package/dist-ksadk/assets/wardley-L42UT6IY-jE2fE4jx.js +1 -0
  84. package/dist-ksadk/assets/{wardleyDiagram-YWT4CUSO-CUTRM1sP.js → wardleyDiagram-YWT4CUSO-BuRKU-mS.js} +1 -1
  85. package/dist-ksadk/assets/{xychartDiagram-2RQKCTM6-gvfSgBXS.js → xychartDiagram-2RQKCTM6-CRK8qmKq.js} +1 -1
  86. package/dist-ksadk/index.html +1 -1
  87. package/dist-lib/App.d.ts.map +1 -1
  88. package/dist-lib/{ArtifactsPanel-yLxSIEFw.js → ArtifactsPanel-BCjpJZ9m.js} +1 -1
  89. package/dist-lib/{CodeBlock-CKy7sFkN.js → CodeBlock-CnIj5U9o.js} +1 -1
  90. package/dist-lib/{MathMessageMarkdown-D0fGt004.js → MathMessageMarkdown-DdjmAxKr.js} +2 -2
  91. package/dist-lib/{NativeTerminalPanel-Bzdmm_Au.js → NativeTerminalPanel-C1LtiwB7.js} +1 -1
  92. package/dist-lib/{WorkspacePanelContainer-BTxXY3RS.js → WorkspacePanelContainer-DyFPcWsD.js} +18 -13
  93. package/dist-lib/components.js +2 -2
  94. package/dist-lib/core/run/engine.d.ts.map +1 -1
  95. package/dist-lib/core/run/types.d.ts +2 -0
  96. package/dist-lib/core/run/types.d.ts.map +1 -1
  97. package/dist-lib/hooks/useBootstrap.d.ts +1 -0
  98. package/dist-lib/hooks/useBootstrap.d.ts.map +1 -1
  99. package/dist-lib/hooks/useRunAgent.d.ts +2 -0
  100. package/dist-lib/hooks/useRunAgent.d.ts.map +1 -1
  101. package/dist-lib/hooks/useSessionLifecycle.d.ts.map +1 -1
  102. package/dist-lib/runtime.js +342 -329
  103. package/dist-lib/utils/markdown.d.ts.map +1 -1
  104. package/package.json +1 -1
  105. package/dist-ksadk/assets/architecture-7EHR7CIX-BHyTI6bf.js +0 -1
  106. package/dist-ksadk/assets/channel-BH5WJ3h3.js +0 -1
  107. package/dist-ksadk/assets/chunk-QZHKN3VN-yZAr1Dj8.js +0 -1
  108. package/dist-ksadk/assets/classDiagram-4FO5ZUOK-Cav8Io0V.js +0 -1
  109. package/dist-ksadk/assets/classDiagram-v2-Q7XG4LA2-Cav8Io0V.js +0 -1
  110. package/dist-ksadk/assets/eventmodeling-FCH6USID-D4JVqRuD.js +0 -1
  111. package/dist-ksadk/assets/gitGraph-WXDBUCRP-Dhb2APoT.js +0 -1
  112. package/dist-ksadk/assets/index-NDLr6qy9.js +0 -165
  113. package/dist-ksadk/assets/info-J43DQDTF-Bd0FU_kK.js +0 -1
  114. package/dist-ksadk/assets/packet-YPE3B663-BLs1Uxy0.js +0 -1
  115. package/dist-ksadk/assets/pie-LRSECV5Y-DwzfGu6H.js +0 -1
  116. package/dist-ksadk/assets/radar-GUYGQ44K-eGejGVHG.js +0 -1
  117. package/dist-ksadk/assets/stateDiagram-v2-BHNVJYJU-DiPVQ0cz.js +0 -1
  118. package/dist-ksadk/assets/treeView-BLDUP644-C6UbCLlZ.js +0 -1
  119. package/dist-ksadk/assets/treemap-LRROVOQU-Bk3Xcttl.js +0 -1
  120. package/dist-ksadk/assets/wardley-L42UT6IY-DpJI-Lu5.js +0 -1
@@ -1,5 +1,5 @@
1
1
  import { i as e, t } from "./capabilities-CiyyeRQ9.js";
2
- import { C as n, D as r, E as i, O as a, T as o, _ as s, b as c, c as l, f as u, g as d, h as f, k as p, l as m, m as h, n as g, o as _, p as v, r as y, s as b, t as ee, u as te, v as x, w as S, y as C } from "./WorkspacePanelContainer-BTxXY3RS.js";
2
+ import { C as n, D as r, E as i, O as a, T as o, _ as s, b as c, c as l, f as u, g as d, h as f, k as p, l as m, m as h, n as g, o as _, p as v, r as y, s as b, t as ee, u as te, v as x, w as S, y as C } from "./WorkspacePanelContainer-DyFPcWsD.js";
3
3
  import { t as ne } from "./artifact-BfFsPe5A.js";
4
4
  import { X as w } from "lucide-react";
5
5
  import { Fragment as re, jsx as T, jsxs as E } from "react/jsx-runtime";
@@ -421,24 +421,24 @@ function Ne(e) {
421
421
  }
422
422
  //#endregion
423
423
  //#region src/hooks/useResponsiveViewport.ts
424
- function V() {
424
+ function Pe() {
425
425
  return typeof window > "u" ? 900 : Math.round(window.visualViewport?.height || window.innerHeight || 900);
426
426
  }
427
- function Pe() {
427
+ function V() {
428
428
  return typeof window > "u" ? {
429
429
  isMobile: !1,
430
430
  viewportHeight: 900
431
431
  } : {
432
432
  isMobile: B(window.innerWidth, 768),
433
- viewportHeight: V()
433
+ viewportHeight: Pe()
434
434
  };
435
435
  }
436
436
  function Fe() {
437
- let [e, t] = oe(() => Pe());
437
+ let [e, t] = oe(() => V());
438
438
  return A(() => {
439
439
  if (typeof window > "u") return;
440
440
  let e = window.matchMedia("(max-width: 768px)"), n = () => {
441
- t(Pe());
441
+ t(V());
442
442
  };
443
443
  n();
444
444
  let r = typeof e.addEventListener == "function" ? (e.addEventListener("change", n), () => e.removeEventListener("change", n)) : (e.addListener(n), () => e.removeListener(n));
@@ -570,7 +570,7 @@ async function We(e) {
570
570
  let t = await He(e), n = t?.Models;
571
571
  Array.isArray(n) && F.getState().upsertModels(n);
572
572
  let r = t;
573
- r?.Current && F.getState().setSelectedModel(String(r.Current)), r?.Source && F.getState().setModelSource(String(r.Source));
573
+ r?.Current && !F.getState().selectedModel && F.getState().setSelectedModel(String(r.Current)), r?.Source && F.getState().setModelSource(String(r.Source));
574
574
  } catch (e) {
575
575
  console.error("Failed to fetch models:", e);
576
576
  } finally {
@@ -1392,7 +1392,7 @@ var bt = {
1392
1392
  continue;
1393
1393
  }
1394
1394
  let e = new FormData();
1395
- e.append("file", t);
1395
+ e.append("file", t), e.append("AgentId", this.config.agentId);
1396
1396
  try {
1397
1397
  let r = await this.api.uploadFile(e, { signal: this.abortController?.signal });
1398
1398
  r?.FileData?.fileUri && n.push({
@@ -1422,6 +1422,7 @@ var bt = {
1422
1422
  Stream: !0,
1423
1423
  ApiFormat: t,
1424
1424
  Model: this.config.selectedModel || void 0,
1425
+ ModelMetadata: this.config.selectedModelMetadata || void 0,
1425
1426
  ModelOptions: Ne(Me(this.config.thinkingMode))
1426
1427
  };
1427
1428
  if (n) o.ResponsesInput = r.responsesInput, o.PreviousResponseId = r.previousResponseId;
@@ -1597,38 +1598,38 @@ function wt(e) {
1597
1598
  function Tt(e) {
1598
1599
  return typeof e == "string" || typeof e == "number" ? e : void 0;
1599
1600
  }
1600
- function Et(e) {
1601
+ function Z(e) {
1601
1602
  return e && typeof e == "object" && !Array.isArray(e) ? e : void 0;
1602
1603
  }
1603
- function Dt(e) {
1604
+ function Et(e) {
1604
1605
  return e !== null;
1605
1606
  }
1606
- function Ot(e) {
1607
+ function Dt(e) {
1607
1608
  return e !== null;
1608
1609
  }
1609
- function kt(e) {
1610
+ function Ot(e) {
1610
1611
  return [...e].sort((e, t) => {
1611
1612
  let n = t.seqId ?? -1, r = e.seqId ?? -1;
1612
1613
  return n === r ? (Date.parse(String(t.timestamp || "")) || 0) - (Date.parse(String(e.timestamp || "")) || 0) : n - r;
1613
1614
  });
1614
1615
  }
1615
- function At(e) {
1616
+ function kt(e) {
1616
1617
  return [...e].sort((e, t) => {
1617
1618
  let n = t.seqId ?? -1, r = e.seqId ?? -1;
1618
1619
  return n === r ? (Date.parse(String(t.timestamp || "")) || 0) - (Date.parse(String(e.timestamp || "")) || 0) : n - r;
1619
1620
  });
1620
1621
  }
1621
- function jt(e) {
1622
- return kt(e)[0]?.runId || "";
1622
+ function At(e) {
1623
+ return Ot(e)[0]?.runId || "";
1623
1624
  }
1624
- function Mt(e) {
1625
- let t = jt(e);
1625
+ function jt(e) {
1626
+ let t = At(e);
1626
1627
  return t ? e.filter((e) => e.runId === t) : [];
1627
1628
  }
1628
- function Nt(e) {
1629
- let t = Et(e);
1629
+ function Mt(e) {
1630
+ let t = Z(e);
1630
1631
  if (!t) return null;
1631
- let n = Et(t.Metadata ?? t.metadata), r = Et(t.Content ?? t.content), i = X(t.CheckpointId ?? t.checkpointId ?? t.checkpoint_id ?? n?.checkpoint_id ?? n?.checkpointId ?? r?.checkpoint_id ?? r?.checkpointId), a = X(t.RunId ?? t.runId ?? t.run_id ?? n?.run_id ?? n?.runId ?? r?.run_id ?? r?.runId);
1632
+ let n = Z(t.Metadata ?? t.metadata), r = Z(t.Content ?? t.content), i = X(t.CheckpointId ?? t.checkpointId ?? t.checkpoint_id ?? n?.checkpoint_id ?? n?.checkpointId ?? r?.checkpoint_id ?? r?.checkpointId), a = X(t.RunId ?? t.runId ?? t.run_id ?? n?.run_id ?? n?.runId ?? r?.run_id ?? r?.runId);
1632
1633
  return !i || !a ? null : {
1633
1634
  checkpointId: i,
1634
1635
  runId: a,
@@ -1637,7 +1638,7 @@ function Nt(e) {
1637
1638
  seqId: wt(t.SeqId ?? t.seqId ?? t.seq_id),
1638
1639
  timestamp: Tt(t.Timestamp ?? t.timestamp ?? t.CreatedAt ?? t.createdAt),
1639
1640
  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
+ frameworkRef: Z(t.FrameworkRef ?? t.frameworkRef ?? t.framework_ref ?? n?.framework_ref ?? n?.frameworkRef),
1641
1642
  phase: X(t.Phase ?? t.phase ?? n?.phase ?? r?.phase) || void 0,
1642
1643
  stage: X(t.Stage ?? t.stage ?? n?.stage ?? n?.title) || void 0,
1643
1644
  summary: X(t.Summary ?? t.summary ?? n?.summary ?? n?.description) || void 0,
@@ -1646,8 +1647,8 @@ function Nt(e) {
1646
1647
  metadata: n
1647
1648
  };
1648
1649
  }
1649
- function Pt(e) {
1650
- let t = Et(e);
1650
+ function Nt(e) {
1651
+ let t = Z(e);
1651
1652
  if (!t) return null;
1652
1653
  let n = X(t.ReceiptId ?? t.receiptId ?? t.receipt_id), r = X(t.IdempotencyKey ?? t.idempotencyKey ?? t.idempotency_key), i = X(t.ToolName ?? t.toolName ?? t.tool_name);
1653
1654
  return !n || !r || !i ? null : {
@@ -1663,21 +1664,21 @@ function Pt(e) {
1663
1664
  timestamp: Tt(t.Timestamp ?? t.timestamp ?? t.CreatedAt ?? t.createdAt),
1664
1665
  status: X(t.Status ?? t.status) || void 0,
1665
1666
  replayed: !!(t.Replayed ?? t.replayed),
1666
- metadata: Et(t.Metadata ?? t.metadata)
1667
+ metadata: Z(t.Metadata ?? t.metadata)
1667
1668
  };
1668
1669
  }
1669
- var Z = N()((e, t) => ({
1670
+ var Q = N()((e, t) => ({
1670
1671
  checkpointsBySessionId: {},
1671
1672
  toolReceiptsBySessionId: {},
1672
1673
  setSessionCheckpoints: (t, n) => e((e) => ({ checkpointsBySessionId: {
1673
1674
  ...e.checkpointsBySessionId,
1674
- [t]: kt(Mt(n.map(Nt).filter(Dt).map((e) => ({
1675
+ [t]: Ot(jt(n.map(Mt).filter(Et).map((e) => ({
1675
1676
  ...e,
1676
1677
  sessionId: e.sessionId || t
1677
1678
  }))))
1678
1679
  } })),
1679
1680
  upsertSessionCheckpoint: (t, n) => {
1680
- let r = Nt(n);
1681
+ let r = Mt(n);
1681
1682
  r && e((e) => {
1682
1683
  let n = e.checkpointsBySessionId[t] || [];
1683
1684
  r.sessionId = r.sessionId || t;
@@ -1686,10 +1687,10 @@ var Z = N()((e, t) => ({
1686
1687
  ...i.get(r.checkpointId),
1687
1688
  ...r
1688
1689
  });
1689
- let a = Mt([...i.values()]);
1690
+ let a = jt([...i.values()]);
1690
1691
  return { checkpointsBySessionId: {
1691
1692
  ...e.checkpointsBySessionId,
1692
- [t]: kt(a)
1693
+ [t]: Ot(a)
1693
1694
  } };
1694
1695
  });
1695
1696
  },
@@ -1699,7 +1700,7 @@ var Z = N()((e, t) => ({
1699
1700
  },
1700
1701
  setSessionToolReceipts: (t, n) => e((e) => ({ toolReceiptsBySessionId: {
1701
1702
  ...e.toolReceiptsBySessionId,
1702
- [t]: At(n.map(Pt).filter(Ot).map((e) => ({
1703
+ [t]: kt(n.map(Nt).filter(Dt).map((e) => ({
1703
1704
  ...e,
1704
1705
  sessionId: e.sessionId || t
1705
1706
  })))
@@ -1720,7 +1721,7 @@ var Z = N()((e, t) => ({
1720
1721
  toolReceiptsBySessionId: i
1721
1722
  };
1722
1723
  })
1723
- })), Ft = new Set([
1724
+ })), Pt = new Set([
1724
1725
  "completed",
1725
1726
  "failed",
1726
1727
  "error",
@@ -1728,21 +1729,21 @@ var Z = N()((e, t) => ({
1728
1729
  "canceled",
1729
1730
  "aborted"
1730
1731
  ]);
1731
- function It(e) {
1732
+ function Ft(e) {
1732
1733
  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("") : "";
1733
1734
  }
1734
- function Lt(e) {
1735
+ function It(e) {
1735
1736
  let t = String(e || "").trim();
1736
1737
  return t ? `/agentengine/api/v1/AttachmentContent?FileUri=${encodeURIComponent(t)}` : "";
1737
1738
  }
1738
- function Rt(e) {
1739
+ function Lt(e) {
1739
1740
  return String(e || "").match(/^data:([^;,]+)/)?.[1] || "";
1740
1741
  }
1741
- function zt(e, t) {
1742
+ function Rt(e, t) {
1742
1743
  let n = String(e || "").trim(), r = String(t || "").trim();
1743
1744
  return !n || !r || n === r ? !0 : n.endsWith("/*") ? r.startsWith(n.slice(0, -1)) : r.endsWith("/*") ? n.startsWith(r.slice(0, -1)) : !1;
1744
1745
  }
1745
- function Bt(e) {
1746
+ function zt(e) {
1746
1747
  let t = e?.Content?.parts || [], n = [], r = /* @__PURE__ */ new Map(), i = (e) => {
1747
1748
  let t = `${e.fileUri || e.url || e.name}|${e.type}`;
1748
1749
  r.has(t) || r.set(t, e);
@@ -1772,7 +1773,7 @@ function Bt(e) {
1772
1773
  let t = e.file_url.trim();
1773
1774
  i({
1774
1775
  name: e.filename || e.displayName || e.display_name || "attachment",
1775
- url: Lt(t),
1776
+ url: It(t),
1776
1777
  type: e.mime_type || e.mimeType || "application/octet-stream",
1777
1778
  fileUri: t
1778
1779
  });
@@ -1783,7 +1784,7 @@ function Bt(e) {
1783
1784
  t && i({
1784
1785
  name: e.filename || e.displayName || e.display_name || "uploaded_image",
1785
1786
  url: t,
1786
- type: e.mime_type || e.mimeType || Rt(t) || "image/*"
1787
+ type: e.mime_type || e.mimeType || Lt(t) || "image/*"
1787
1788
  });
1788
1789
  continue;
1789
1790
  }
@@ -1791,7 +1792,7 @@ function Bt(e) {
1791
1792
  let t = String(e.fileData.fileUri || "").trim();
1792
1793
  i({
1793
1794
  name: e.fileData.displayName || "attachment",
1794
- url: Lt(t),
1795
+ url: It(t),
1795
1796
  type: e.fileData.mimeType || "application/octet-stream",
1796
1797
  fileUri: t
1797
1798
  });
@@ -1801,11 +1802,11 @@ function Bt(e) {
1801
1802
  for (let e of a) {
1802
1803
  let t = String(e.file_uri || "").trim(), n = {
1803
1804
  name: e.display_name || "attachment",
1804
- url: Lt(t),
1805
+ url: It(t),
1805
1806
  type: e.mime_type || "application/octet-stream",
1806
1807
  fileUri: t
1807
1808
  };
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);
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);
1809
1810
  }
1810
1811
  let o = Array.from(r.values());
1811
1812
  return {
@@ -1813,7 +1814,7 @@ function Bt(e) {
1813
1814
  attachments: o.length > 0 ? o : void 0
1814
1815
  };
1815
1816
  }
1816
- function Vt(e) {
1817
+ function Bt(e) {
1817
1818
  let t = e?.Metadata?.responses_output;
1818
1819
  if (!Array.isArray(t)) return {};
1819
1820
  let n = Ke(), r = tt({
@@ -1860,22 +1861,22 @@ function Vt(e) {
1860
1861
  ...Object.keys(a).length > 0 ? { tools: a } : {}
1861
1862
  };
1862
1863
  }
1863
- function Ht(e, t, n) {
1864
+ function Vt(e, t, n) {
1864
1865
  return t === "running" ? e === "prompt_too_long" ? "检测到上下文过长,正在自动压缩历史后重试" : "正在自动压缩上下文" : n ? e === "prompt_too_long" ? "上下文过长,系统已自动压缩历史并重试" : "系统已自动压缩较早的对话上下文" : t === "failed" ? "自动压缩上下文未完成" : e === "prompt_too_long" ? "已完成上下文压缩,并继续当前回复" : "已完成上下文压缩";
1865
1866
  }
1866
- function Ut(e, t) {
1867
+ function Ht(e, t) {
1867
1868
  return [
1868
1869
  e,
1869
1870
  t.content || "",
1870
1871
  t.reasoning || ""
1871
1872
  ].join("\0");
1872
1873
  }
1873
- function Wt(e) {
1874
+ function Ut(e) {
1874
1875
  return e?.Metadata?.responses_mirror === !0 || String(e?.Metadata?.responses_mirror || "").trim().toLowerCase() === "true";
1875
1876
  }
1876
- function Gt(e) {
1877
+ function Wt(e) {
1877
1878
  if (e?.EventType !== "user_message") return "";
1878
- let t = Bt(e), n = (t.attachments || []).map((e) => [
1879
+ let t = zt(e), n = (t.attachments || []).map((e) => [
1879
1880
  e.name || "",
1880
1881
  e.fileUri || "",
1881
1882
  e.url || "",
@@ -1883,16 +1884,16 @@ function Gt(e) {
1883
1884
  ].join("")).sort().join("");
1884
1885
  return [String(t.text || "").trim(), n].join("\0");
1885
1886
  }
1886
- function Kt(e) {
1887
+ function Gt(e) {
1887
1888
  return e?.EventType === "assistant_stream_snapshot";
1888
1889
  }
1889
- function qt(e) {
1890
+ function Kt(e) {
1890
1891
  let t = Number(e?.SeqId || 0);
1891
1892
  if (Number.isFinite(t) && t > 0) return t;
1892
1893
  let n = Number(e?.Timestamp || 0);
1893
1894
  return Number.isFinite(n) ? n : 0;
1894
1895
  }
1895
- function Jt(e) {
1896
+ function qt(e) {
1896
1897
  if (typeof e == "string") return e;
1897
1898
  if (e == null) return "";
1898
1899
  try {
@@ -1901,15 +1902,15 @@ function Jt(e) {
1901
1902
  return String(e);
1902
1903
  }
1903
1904
  }
1904
- function Yt(e) {
1905
+ function Jt(e) {
1905
1906
  let t = String(e?.EventType || "");
1906
1907
  if (t !== "tool_call" && t !== "tool_result") return null;
1907
- let n = String(e.Metadata?.tool_name || e.Metadata?.name || e.Metadata?.function_name || It(e.Content?.parts) || "tool").trim() || "tool", r = {
1908
+ let n = String(e.Metadata?.tool_name || e.Metadata?.name || e.Metadata?.function_name || Ft(e.Content?.parts) || "tool").trim() || "tool", r = {
1908
1909
  name: n,
1909
1910
  args: "",
1910
1911
  status: "running"
1911
1912
  }, i = t === "tool_result" ? (() => {
1912
- let t = Jt(e.Metadata?.tool_output ?? e.Metadata?.output ?? e.Metadata?.result ?? It(e.Content?.parts));
1913
+ let t = qt(e.Metadata?.tool_output ?? e.Metadata?.output ?? e.Metadata?.result ?? Ft(e.Content?.parts));
1913
1914
  return {
1914
1915
  ...r,
1915
1916
  output: t,
@@ -1917,7 +1918,7 @@ function Yt(e) {
1917
1918
  };
1918
1919
  })() : {
1919
1920
  ...r,
1920
- args: Jt(e.Metadata?.tool_args ?? e.Metadata?.arguments ?? e.Metadata?.args ?? {})
1921
+ args: qt(e.Metadata?.tool_args ?? e.Metadata?.arguments ?? e.Metadata?.args ?? {})
1921
1922
  };
1922
1923
  return {
1923
1924
  id: e.EventId || String(Date.now() + Math.random()),
@@ -1928,7 +1929,7 @@ function Yt(e) {
1928
1929
  tools: { [n]: i }
1929
1930
  };
1930
1931
  }
1931
- function Xt(e = {}, t = {}) {
1932
+ function Yt(e = {}, t = {}) {
1932
1933
  let n = { ...e || {} };
1933
1934
  for (let [e, r] of Object.entries(t || {})) n[e] = {
1934
1935
  ...n[e] || {},
@@ -1938,8 +1939,8 @@ function Xt(e = {}, t = {}) {
1938
1939
  };
1939
1940
  return n;
1940
1941
  }
1941
- function Zt(e = {}, t = "") {
1942
- let n = String(t || "").trim().toLowerCase(), r = n === "completed" ? "completed" : Ft.has(n) ? "error" : "";
1942
+ function Xt(e = {}, t = "") {
1943
+ let n = String(t || "").trim().toLowerCase(), r = n === "completed" ? "completed" : Pt.has(n) ? "error" : "";
1943
1944
  if (!r) return e;
1944
1945
  let i = !1, a = {};
1945
1946
  for (let [t, n] of Object.entries(e || {})) n?.status === "running" ? (i = !0, a[t] = {
@@ -1948,10 +1949,10 @@ function Zt(e = {}, t = "") {
1948
1949
  }) : a[t] = n;
1949
1950
  return i ? a : e;
1950
1951
  }
1951
- function Qt(e, t) {
1952
+ function Zt(e, t) {
1952
1953
  return {
1953
1954
  ...e,
1954
- reasoning: $t(e.reasoning, t.reasoning),
1955
+ reasoning: Qt(e.reasoning, t.reasoning),
1955
1956
  tools: {
1956
1957
  ...e.tools || {},
1957
1958
  ...t.tools || {}
@@ -1964,11 +1965,11 @@ function Qt(e, t) {
1964
1965
  id: t.responseId || t.reasoning || t.tools ? t.id : e.id
1965
1966
  };
1966
1967
  }
1967
- function $t(e = "", t = "") {
1968
+ function Qt(e = "", t = "") {
1968
1969
  let n = String(e || ""), r = String(t || "");
1969
1970
  return n ? !r || n.endsWith(r) ? n : r.startsWith(n) ? r : `${n}${r}` : r;
1970
1971
  }
1971
- function en(e) {
1972
+ function $t(e) {
1972
1973
  return {
1973
1974
  id: e.id,
1974
1975
  role: "system",
@@ -1979,10 +1980,10 @@ function en(e) {
1979
1980
  summary: e.summary,
1980
1981
  historical: e.historical,
1981
1982
  timestamp: e.timestamp,
1982
- content: Ht(e.trigger, e.status, e.historical)
1983
+ content: Vt(e.trigger, e.status, e.historical)
1983
1984
  };
1984
1985
  }
1985
- function tn(e) {
1986
+ function en(e) {
1986
1987
  let t = e?.EventType || "";
1987
1988
  if (t === "run_status") return e.Content?.status === "failed" ? {
1988
1989
  id: e.EventId || String(Date.now() + Math.random()),
@@ -2000,8 +2001,8 @@ function tn(e) {
2000
2001
  timestamp: e.Timestamp || Date.now()
2001
2002
  } : null;
2002
2003
  if (t === "context_checkpoint") {
2003
- let t = Bt(e);
2004
- return en({
2004
+ let t = zt(e);
2005
+ return $t({
2005
2006
  id: e.EventId || String(Date.now() + Math.random()),
2006
2007
  timestamp: e.Timestamp || Date.now(),
2007
2008
  status: "completed",
@@ -2012,7 +2013,7 @@ function tn(e) {
2012
2013
  });
2013
2014
  }
2014
2015
  if (t === "reasoning") {
2015
- let n = Bt(e).text || It(e.Metadata?.reasoning);
2016
+ let n = zt(e).text || Ft(e.Metadata?.reasoning);
2016
2017
  return n ? {
2017
2018
  id: e.EventId || String(Date.now() + Math.random()),
2018
2019
  role: "model",
@@ -2022,9 +2023,9 @@ function tn(e) {
2022
2023
  eventType: t
2023
2024
  } : null;
2024
2025
  }
2025
- if (t === "tool_call" || t === "tool_result") return Yt(e);
2026
+ if (t === "tool_call" || t === "tool_result") return Jt(e);
2026
2027
  if (t !== "user_message" && t !== "assistant_message" && t !== "assistant_stream_snapshot") return null;
2027
- let n = Bt(e), r = t === "assistant_message" ? Vt(e) : {};
2028
+ let n = zt(e), r = t === "assistant_message" ? Bt(e) : {};
2028
2029
  if (!n.text && !n.attachments?.length && !r.reasoning && !r.tools) return null;
2029
2030
  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();
2030
2031
  return {
@@ -2041,7 +2042,7 @@ function tn(e) {
2041
2042
  ...r
2042
2043
  };
2043
2044
  }
2044
- function nn(e = []) {
2045
+ function tn(e = []) {
2045
2046
  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 = [];
2046
2047
  for (let e of s) {
2047
2048
  let t = String(e?.EventId || "").trim();
@@ -2053,30 +2054,30 @@ function nn(e = []) {
2053
2054
  }
2054
2055
  let l = /* @__PURE__ */ new Set(), u = /* @__PURE__ */ new Set(), d = /* @__PURE__ */ new Map();
2055
2056
  for (let e of c) {
2056
- if (e?.EventType !== "user_message" || Wt(e)) {
2057
+ if (e?.EventType !== "user_message" || Ut(e)) {
2057
2058
  if (e?.EventType === "assistant_message") {
2058
2059
  let t = String(e.InvocationId || "").trim();
2059
2060
  t && u.add(t);
2060
2061
  }
2061
- if (Kt(e)) {
2062
+ if (Gt(e)) {
2062
2063
  let t = String(e.InvocationId || "").trim();
2063
2064
  if (t) {
2064
2065
  let n = d.get(t);
2065
- (!n || qt(e) >= qt(n)) && d.set(t, e);
2066
+ (!n || Kt(e) >= Kt(n)) && d.set(t, e);
2066
2067
  }
2067
2068
  }
2068
2069
  continue;
2069
2070
  }
2070
- let t = Gt(e);
2071
+ let t = Wt(e);
2071
2072
  t && l.add(t);
2072
2073
  }
2073
2074
  let f = c.filter((e) => {
2074
- if (Kt(e)) {
2075
+ if (Gt(e)) {
2075
2076
  let t = String(e.InvocationId || "").trim();
2076
2077
  return t ? u.has(t) ? !1 : d.get(t) === e : !0;
2077
2078
  }
2078
- if (e?.EventType !== "user_message" || !Wt(e)) return !0;
2079
- let t = Gt(e);
2079
+ if (e?.EventType !== "user_message" || !Ut(e)) return !0;
2080
+ let t = Wt(e);
2080
2081
  return !t || !l.has(t);
2081
2082
  });
2082
2083
  for (let e of f) {
@@ -2091,7 +2092,7 @@ function nn(e = []) {
2091
2092
  let p = [], m = /* @__PURE__ */ new Map(), h = null, g = /* @__PURE__ */ new Map(), _ = (e) => {
2092
2093
  let t = String(e?.responseId || "").trim(), n = t ? m.get(t) : void 0;
2093
2094
  if (n !== void 0) {
2094
- p[n] = Qt(p[n], e);
2095
+ p[n] = Zt(p[n], e);
2095
2096
  return;
2096
2097
  }
2097
2098
  t && m.set(t, p.length), p.push(e);
@@ -2101,11 +2102,11 @@ function nn(e = []) {
2101
2102
  let n = String(e || "").trim();
2102
2103
  if (!n) return {};
2103
2104
  let r = g.get(n);
2104
- return r ? (g.delete(n), { tools: Zt(r.tools, t.get(n)) }) : {};
2105
+ return r ? (g.delete(n), { tools: Xt(r.tools, t.get(n)) }) : {};
2105
2106
  };
2106
2107
  for (let e of f) {
2107
2108
  if (e.EventType === "run_status") continue;
2108
- let t = tn(e);
2109
+ let t = en(e);
2109
2110
  if (!t) continue;
2110
2111
  if (t.eventType === "tool_call" || t.eventType === "tool_result") {
2111
2112
  let n = String(e.InvocationId || "").trim();
@@ -2123,7 +2124,7 @@ function nn(e = []) {
2123
2124
  invocationId: n
2124
2125
  },
2125
2126
  timestamp: Math.max(Number(r?.timestamp || 0), Number(t.timestamp || 0)),
2126
- tools: Xt(r?.tools, t.tools)
2127
+ tools: Yt(r?.tools, t.tools)
2127
2128
  });
2128
2129
  continue;
2129
2130
  }
@@ -2141,7 +2142,7 @@ function nn(e = []) {
2141
2142
  }
2142
2143
  let n = t.eventType === "assistant_message" || t.eventType === "assistant_stream_snapshot";
2143
2144
  if (n && h) {
2144
- let n = String(e.InvocationId || "").trim(), r = Ut(n, t);
2145
+ let n = String(e.InvocationId || "").trim(), r = Ht(n, t);
2145
2146
  if (t.eventType === "assistant_message" && n && a.has(r)) {
2146
2147
  h = null;
2147
2148
  continue;
@@ -2149,12 +2150,12 @@ function nn(e = []) {
2149
2150
  t.eventType === "assistant_message" && n && a.add(r), _({
2150
2151
  ...t,
2151
2152
  ...y(n),
2152
- reasoning: $t(h.reasoning, t.reasoning)
2153
+ reasoning: Qt(h.reasoning, t.reasoning)
2153
2154
  }), h = null;
2154
2155
  continue;
2155
2156
  }
2156
2157
  if (v(), n) {
2157
- let n = String(e.InvocationId || "").trim(), r = Ut(n, t);
2158
+ let n = String(e.InvocationId || "").trim(), r = Ht(n, t);
2158
2159
  if (t.eventType === "assistant_message" && n && a.has(r)) continue;
2159
2160
  t.eventType === "assistant_message" && n && a.add(r), _({
2160
2161
  ...t,
@@ -2167,7 +2168,7 @@ function nn(e = []) {
2167
2168
  v();
2168
2169
  for (let [e, n] of g.entries()) _({
2169
2170
  ...n,
2170
- tools: Zt(n.tools, t.get(e))
2171
+ tools: Xt(n.tools, t.get(e))
2171
2172
  });
2172
2173
  for (let [e, a] of t.entries()) {
2173
2174
  if (a !== "in_progress" || r.has(e) || !i.has(e)) continue;
@@ -2183,7 +2184,7 @@ function nn(e = []) {
2183
2184
  }
2184
2185
  return p.map(({ invocationId: e, ...t }) => t);
2185
2186
  }
2186
- function rn(e = [], t = []) {
2187
+ function nn(e = [], t = []) {
2187
2188
  let n = [], r = /* @__PURE__ */ new Set();
2188
2189
  for (let i of [...Array.isArray(e) ? e : [], ...Array.isArray(t) ? t : []]) {
2189
2190
  let e = String(i?.EventId || "").trim();
@@ -2198,18 +2199,18 @@ function rn(e = [], t = []) {
2198
2199
  return Number.isFinite(n) && Number.isFinite(r) && n !== r ? n - r : Number(e?.Timestamp || 0) - Number(t?.Timestamp || 0);
2199
2200
  });
2200
2201
  }
2201
- function an(e = []) {
2202
+ function rn(e = []) {
2202
2203
  return (Array.isArray(e) ? e : []).reduce((e, t) => {
2203
2204
  let n = Number(t.SeqId || 0);
2204
2205
  return Number.isFinite(n) ? Math.max(e, n) : e;
2205
2206
  }, 0);
2206
2207
  }
2207
- function on(e) {
2208
- return e?.EventType === "run_status" ? Ft.has(String(e.Content?.status || "").trim().toLowerCase()) : !1;
2208
+ function an(e) {
2209
+ return e?.EventType === "run_status" ? Pt.has(String(e.Content?.status || "").trim().toLowerCase()) : !1;
2209
2210
  }
2210
2211
  //#endregion
2211
2212
  //#region src/core/run/dispatcher.ts
2212
- var Q = !1, sn = new Set(["completed"]), cn = new Set([
2213
+ var $ = !1, on = new Set(["completed"]), sn = new Set([
2213
2214
  "failed",
2214
2215
  "error",
2215
2216
  "cancelled",
@@ -2217,8 +2218,8 @@ var Q = !1, sn = new Set(["completed"]), cn = new Set([
2217
2218
  "aborted",
2218
2219
  "incomplete"
2219
2220
  ]);
2220
- function ln(e) {
2221
- Q || (Q = !0, q.getState().patchMessages((t) => [...t, {
2221
+ function cn(e) {
2222
+ $ || ($ = !0, q.getState().patchMessages((t) => [...t, {
2222
2223
  id: e,
2223
2224
  role: "model",
2224
2225
  content: "",
@@ -2226,8 +2227,8 @@ function ln(e) {
2226
2227
  reasoning: ""
2227
2228
  }]));
2228
2229
  }
2229
- function un(e) {
2230
- let t = String(e || "").trim().toLowerCase(), n = sn.has(t) ? "completed" : cn.has(t) ? "error" : null;
2230
+ function ln(e) {
2231
+ let t = String(e || "").trim().toLowerCase(), n = on.has(t) ? "completed" : sn.has(t) ? "error" : null;
2231
2232
  n && q.getState().patchMessages((e) => e.map((e) => {
2232
2233
  if (!e.tools) return e;
2233
2234
  let t = !1, r = Object.fromEntries(Object.entries(e.tools).map(([e, r]) => r.status === "running" ? (t = !0, [e, {
@@ -2240,9 +2241,9 @@ function un(e) {
2240
2241
  } : e;
2241
2242
  }));
2242
2243
  }
2243
- function dn(e) {
2244
+ function un(e) {
2244
2245
  if (e.sessionId && R.getState().currentSessionId !== e.sessionId) {
2245
- e.type === "stage_changed" && (e.stage === "completing" || e.stage === "error" || e.stage === "cancelled") && (Q = !1);
2246
+ e.type === "stage_changed" && (e.stage === "completing" || e.stage === "error" || e.stage === "cancelled") && ($ = !1);
2246
2247
  return;
2247
2248
  }
2248
2249
  let t = q.getState();
@@ -2266,28 +2267,28 @@ function dn(e) {
2266
2267
  }]);
2267
2268
  break;
2268
2269
  case "assistant_message_created":
2269
- ln(e.messageId);
2270
+ cn(e.messageId);
2270
2271
  break;
2271
2272
  case "text_delta":
2272
- ln(e.messageId), t.patchMessages((t) => t.map((t) => t.id === e.messageId ? {
2273
+ cn(e.messageId), t.patchMessages((t) => t.map((t) => t.id === e.messageId ? {
2273
2274
  ...t,
2274
2275
  content: t.content + e.delta
2275
2276
  } : t));
2276
2277
  break;
2277
2278
  case "text_final":
2278
- ln(e.messageId), t.patchMessages((t) => t.map((t) => t.id === e.messageId ? {
2279
+ cn(e.messageId), t.patchMessages((t) => t.map((t) => t.id === e.messageId ? {
2279
2280
  ...t,
2280
2281
  content: e.text
2281
2282
  } : t));
2282
2283
  break;
2283
2284
  case "reasoning_delta":
2284
- ln(e.messageId), t.patchMessages((t) => t.map((t) => t.id === e.messageId ? {
2285
+ cn(e.messageId), t.patchMessages((t) => t.map((t) => t.id === e.messageId ? {
2285
2286
  ...t,
2286
2287
  reasoning: (t.reasoning || "") + e.delta
2287
2288
  } : t));
2288
2289
  break;
2289
2290
  case "tool_upsert":
2290
- ln(e.messageId), t.patchMessages((t) => t.map((t) => t.id === e.messageId ? {
2291
+ cn(e.messageId), t.patchMessages((t) => t.map((t) => t.id === e.messageId ? {
2291
2292
  ...t,
2292
2293
  tools: {
2293
2294
  ...t.tools || {},
@@ -2306,7 +2307,7 @@ function dn(e) {
2306
2307
  } : t));
2307
2308
  break;
2308
2309
  case "tool_result":
2309
- ln(e.messageId), t.patchMessages((t) => t.map((t) => t.id === e.messageId ? {
2310
+ cn(e.messageId), t.patchMessages((t) => t.map((t) => t.id === e.messageId ? {
2310
2311
  ...t,
2311
2312
  tools: {
2312
2313
  ...t.tools || {},
@@ -2330,7 +2331,7 @@ function dn(e) {
2330
2331
  }]);
2331
2332
  break;
2332
2333
  case "compaction": {
2333
- let n = `compaction-${Date.now()}`, r = e.phase === "start" ? "running" : e.phase === "failed" ? "failed" : "completed", i = en({
2334
+ let n = `compaction-${Date.now()}`, r = e.phase === "start" ? "running" : e.phase === "failed" ? "failed" : "completed", i = $t({
2334
2335
  id: n,
2335
2336
  timestamp: Date.now(),
2336
2337
  status: r,
@@ -2344,13 +2345,13 @@ function dn(e) {
2344
2345
  break;
2345
2346
  }
2346
2347
  case "stage_changed":
2347
- e.stage === "streaming" || e.stage === "connecting" ? I.getState().setSessionStreaming(e.sessionId, !0) : (e.stage === "completing" || e.stage === "error" || e.stage === "cancelled") && (I.getState().setSessionStreaming(e.sessionId, !1), Q = !1);
2348
+ e.stage === "streaming" || e.stage === "connecting" ? I.getState().setSessionStreaming(e.sessionId, !0) : (e.stage === "completing" || e.stage === "error" || e.stage === "cancelled") && (I.getState().setSessionStreaming(e.sessionId, !1), $ = !1);
2348
2349
  break;
2349
2350
  case "stream_ended":
2350
2351
  I.getState().setSessionStreaming(e.sessionId, !1), globalThis.setTimeout(() => {
2351
2352
  let t = I.getState();
2352
2353
  t.getSessionActivity(e.sessionId)?.status === "completed" && t.clearSessionActivity(e.sessionId);
2353
- }, 2400), Q = !1;
2354
+ }, 2400), $ = !1;
2354
2355
  break;
2355
2356
  case "error":
2356
2357
  I.getState().setSessionStreaming(e.sessionId, !1), I.getState().updateActivity({
@@ -2363,13 +2364,13 @@ function dn(e) {
2363
2364
  role: "model",
2364
2365
  content: "连接断开或生成出错。",
2365
2366
  timestamp: Date.now()
2366
- }]), Q = !1;
2367
+ }]), $ = !1;
2367
2368
  break;
2368
2369
  case "terminal":
2369
- un(e.status);
2370
+ ln(e.status);
2370
2371
  break;
2371
2372
  case "stream_event":
2372
- if (e.event.EventType === "run_checkpoint" && Z.getState().upsertSessionCheckpoint(e.sessionId || e.event.SessionId, e.event), e.event.EventType === "run_status") {
2373
+ if (e.event.EventType === "run_checkpoint" && Q.getState().upsertSessionCheckpoint(e.sessionId || e.event.SessionId, e.event), e.event.EventType === "run_status") {
2373
2374
  let t = String(e.event.Content?.status || "").trim().toLowerCase();
2374
2375
  t === "completed" ? I.getState().updateActivity({
2375
2376
  sessionId: e.sessionId || e.event.SessionId,
@@ -2391,20 +2392,21 @@ function dn(e) {
2391
2392
  break;
2392
2393
  }
2393
2394
  }
2394
- function fn() {
2395
- Q = !1;
2395
+ function dn() {
2396
+ $ = !1;
2396
2397
  }
2397
2398
  //#endregion
2398
2399
  //#region src/hooks/useRunAgent.ts
2399
- function pn(e) {
2400
- let t = j(/* @__PURE__ */ new Map()), n = j(() => {}), { agentId: r, apiFormats: i, agentFramework: a, selectedModel: o, thinkingMode: s, currentSessionIdRef: c, queuedDraftRef: l, onRunSettled: u, uiCapabilities: d } = e, f = k((e) => {
2400
+ function fn(e) {
2401
+ let t = 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) => {
2401
2402
  e.updateConfig({
2402
2403
  agentId: r,
2403
2404
  apiFormats: i,
2404
2405
  agentFramework: a,
2405
2406
  selectedModel: o,
2406
- thinkingMode: s,
2407
- checkpointResumePreviewEnabled: !!d.RunLifecycle?.CheckpointResumePreview
2407
+ selectedModelMetadata: s,
2408
+ thinkingMode: c,
2409
+ checkpointResumePreviewEnabled: !!f.RunLifecycle?.CheckpointResumePreview
2408
2410
  });
2409
2411
  }, [
2410
2412
  r,
@@ -2412,33 +2414,34 @@ function pn(e) {
2412
2414
  a,
2413
2415
  o,
2414
2416
  s,
2415
- d.RunLifecycle?.CheckpointResumePreview
2416
- ]), p = k((n) => {
2417
+ c,
2418
+ f.RunLifecycle?.CheckpointResumePreview
2419
+ ]), m = k((n) => {
2417
2420
  let r = String(n || "new-session"), i = t.current.get(r);
2418
- return i ? f(i) : (i = new xt(e.api), f(i), i.subscribe(dn), t.current.set(r, i)), i;
2419
- }, [e.api, f]);
2421
+ return i ? p(i) : (i = new xt(e.api), p(i), i.subscribe(un), t.current.set(r, i)), i;
2422
+ }, [e.api, p]);
2420
2423
  A(() => {
2421
- for (let e of t.current.values()) f(e);
2422
- }, [f]);
2423
- let m = k((e) => {
2424
- l.current.push(e), _.getState().setQueuedDrafts((t) => [...t, e]);
2425
- }, [l]), h = k((e) => {
2426
- let i = c.current, a = p(i);
2424
+ for (let e of t.current.values()) p(e);
2425
+ }, [p]);
2426
+ let h = k((e) => {
2427
+ u.current.push(e), _.getState().setQueuedDrafts((t) => [...t, e]);
2428
+ }, [u]), g = k((e) => {
2429
+ let i = l.current, a = m(i);
2427
2430
  if (a.stage !== "idle") return !1;
2428
- fn(), _.getState().setMobileActionsOpen(!1), I.getState().setSessionStreaming(i, !0);
2429
- let o = e.text.trim(), s = String(Date.now()), l = e.attachments.map((e) => ({
2431
+ dn(), _.getState().setMobileActionsOpen(!1), I.getState().setSessionStreaming(i, !0);
2432
+ let o = e.text.trim(), s = String(Date.now()), c = e.attachments.map((e) => ({
2430
2433
  name: e.name,
2431
2434
  url: URL.createObjectURL(e),
2432
2435
  type: e.type || "application/octet-stream"
2433
2436
  }));
2434
- (o || l.length > 0) && q.getState().patchMessages((e) => [...e, {
2437
+ (o || c.length > 0) && q.getState().patchMessages((e) => [...e, {
2435
2438
  id: s,
2436
2439
  role: "user",
2437
2440
  content: o,
2438
2441
  timestamp: Date.now(),
2439
- attachments: l.length ? l : void 0
2442
+ attachments: c.length ? c : void 0
2440
2443
  }]);
2441
- let d = a.start({
2444
+ let u = a.start({
2442
2445
  text: e.text,
2443
2446
  attachments: e.attachments,
2444
2447
  responsesInput: e.responsesInput,
@@ -2448,32 +2451,32 @@ function pn(e) {
2448
2451
  R.getState().upsertSessions([{
2449
2452
  SessionId: e,
2450
2453
  UpdatedAt: (/* @__PURE__ */ new Date()).toISOString()
2451
- }]), c.current = e, we(r, e), R.getState().setCurrentSessionId(e), i !== e && t.current.set(e, a);
2454
+ }]), l.current = e, we(r, e), R.getState().setCurrentSessionId(e), i !== e && t.current.set(e, a);
2452
2455
  },
2453
2456
  onSessionUpsert: () => {},
2454
2457
  onSettled: (e) => {
2455
- u?.(e), n.current();
2458
+ d?.(e), n.current();
2456
2459
  }
2457
2460
  });
2458
- return d || I.getState().setSessionStreaming(i, !1), d;
2461
+ return u || I.getState().setSessionStreaming(i, !1), u;
2459
2462
  }, [
2460
2463
  r,
2461
- c,
2462
- p,
2463
- u
2464
+ l,
2465
+ m,
2466
+ d
2464
2467
  ]);
2465
2468
  return A(() => {
2466
2469
  n.current = () => {
2467
- let e = l.current.shift();
2470
+ let e = u.current.shift();
2468
2471
  if (!e) {
2469
2472
  _.getState().setQueuedDrafts([]);
2470
2473
  return;
2471
2474
  }
2472
2475
  _.getState().setQueuedDrafts((e) => e.slice(1)), queueMicrotask(() => {
2473
- h(e) || (l.current.unshift(e), _.getState().setQueuedDrafts((t) => [e, ...t]));
2476
+ g(e) || (u.current.unshift(e), _.getState().setQueuedDrafts((t) => [e, ...t]));
2474
2477
  });
2475
2478
  };
2476
- }, [l, h]), {
2479
+ }, [u, g]), {
2477
2480
  submitDraft: k(async (e, t, n, r) => {
2478
2481
  let i = {
2479
2482
  text: e,
@@ -2481,49 +2484,49 @@ function pn(e) {
2481
2484
  responsesInput: n,
2482
2485
  previousResponseId: r
2483
2486
  };
2484
- if (p(c.current).stage !== "idle" && I.getState().isSessionStreaming(c.current)) {
2485
- n === void 0 && m({
2487
+ if (m(l.current).stage !== "idle" && I.getState().isSessionStreaming(l.current)) {
2488
+ n === void 0 && h({
2486
2489
  text: e,
2487
2490
  attachments: t
2488
2491
  });
2489
2492
  return;
2490
2493
  }
2491
- !h(i) && n === void 0 && m({
2494
+ !g(i) && n === void 0 && h({
2492
2495
  text: e,
2493
2496
  attachments: t
2494
2497
  });
2495
2498
  }, [
2496
- c,
2499
+ l,
2500
+ h,
2497
2501
  m,
2498
- p,
2499
- h
2502
+ g
2500
2503
  ]),
2501
2504
  stopGeneration: k(() => {
2502
- p(c.current).stop();
2503
- }, [c, p]),
2505
+ m(l.current).stop();
2506
+ }, [l, m]),
2504
2507
  disconnectRun: k(() => {
2505
- p(c.current).disconnect();
2506
- }, [c, p]),
2508
+ m(l.current).disconnect();
2509
+ }, [l, m]),
2507
2510
  resumeCheckpoint: k((e) => {
2508
- let t = p(e.sessionId);
2511
+ let t = m(e.sessionId);
2509
2512
  if (t.stage !== "idle") return !1;
2510
- fn(), _.getState().setMobileActionsOpen(!1), I.getState().setSessionStreaming(e.sessionId, !0);
2513
+ dn(), _.getState().setMobileActionsOpen(!1), I.getState().setSessionStreaming(e.sessionId, !0);
2511
2514
  let r = t.resumeCheckpoint({
2512
2515
  ...e,
2513
2516
  onSettled: (e) => {
2514
- u?.(e), n.current();
2517
+ d?.(e), n.current();
2515
2518
  }
2516
2519
  });
2517
2520
  return r || I.getState().setSessionStreaming(e.sessionId, !1), r;
2518
- }, [p, u]),
2521
+ }, [m, d]),
2519
2522
  resetCompaction: k(() => {
2520
- fn();
2523
+ dn();
2521
2524
  }, [])
2522
2525
  };
2523
2526
  }
2524
2527
  //#endregion
2525
2528
  //#region src/hooks/useFeedback.ts
2526
- function mn(e) {
2529
+ function pn(e) {
2527
2530
  let { agentId: t, currentSessionId: n, isStreaming: r, api: i, submitDraft: a } = e;
2528
2531
  return {
2529
2532
  submitResponseFeedback: k(async (e) => {
@@ -2603,10 +2606,10 @@ function mn(e) {
2603
2606
  }
2604
2607
  //#endregion
2605
2608
  //#region src/utils/run-state.js
2606
- function hn(e) {
2609
+ function mn(e) {
2607
2610
  return String(e?.InvocationId || e?.invocation_id || e?.invocationId || "").trim();
2608
2611
  }
2609
- function gn(e) {
2612
+ function hn(e) {
2610
2613
  let t = e?.Timestamp ?? e?.timestamp ?? e?.created_at ?? e?.CreatedAt;
2611
2614
  if (typeof t == "number" && Number.isFinite(t)) return t > 1e11 ? t : t * 1e3;
2612
2615
  if (typeof t == "string") {
@@ -2615,16 +2618,16 @@ function gn(e) {
2615
2618
  }
2616
2619
  return 0;
2617
2620
  }
2618
- function _n(e) {
2621
+ function gn(e) {
2619
2622
  return String(e?.EventType || e?.event_type || "").trim();
2620
2623
  }
2621
- function vn(e = [], t = {}) {
2624
+ function _n(e = [], t = {}) {
2622
2625
  let n = /* @__PURE__ */ new Map(), r = /* @__PURE__ */ new Map(), i = Array.isArray(e) ? e : [], a = Number.isFinite(Number(t.now)) ? Number(t.now) : Date.now(), o = Number.isFinite(Number(t.staleAfterMs)) ? Number(t.staleAfterMs) : 1800 * 1e3;
2623
2626
  for (let e of i) {
2624
- let t = hn(e);
2627
+ let t = mn(e);
2625
2628
  if (!t) continue;
2626
- let i = gn(e);
2627
- i && r.set(t, Math.max(r.get(t) || 0, i)), _n(e) === "run_status" && n.set(t, String(e?.Content?.status || e?.content?.status || "").trim());
2629
+ let i = hn(e);
2630
+ i && r.set(t, Math.max(r.get(t) || 0, i)), gn(e) === "run_status" && n.set(t, String(e?.Content?.status || e?.content?.status || "").trim());
2628
2631
  }
2629
2632
  return Array.from(n.entries()).filter(([e, t]) => {
2630
2633
  let n = r.get(e) || 0, i = n > 0 && a - n > o;
@@ -2633,7 +2636,10 @@ function vn(e = [], t = {}) {
2633
2636
  }
2634
2637
  //#endregion
2635
2638
  //#region src/hooks/useSessionLifecycle.ts
2636
- var yn = 9e4, bn = 30, xn = 50;
2639
+ var vn = 9e4, yn = 30, bn = 50;
2640
+ function xn(e, t) {
2641
+ return t.length ? e.length ? e.length >= t.length : !1 : !0;
2642
+ }
2637
2643
  function Sn(e) {
2638
2644
  if (e.EventType !== "run_status") return null;
2639
2645
  let t = String(e.Content?.status || "").trim().toLowerCase();
@@ -2682,13 +2688,13 @@ function Cn(e) {
2682
2688
  u.current !== t || t.signal.aborted || t.abort();
2683
2689
  }, o = globalThis.setTimeout(() => {
2684
2690
  a();
2685
- }, yn);
2691
+ }, vn);
2686
2692
  try {
2687
- let a = (await n.subscribeRunEvents({
2693
+ let o = (await n.subscribeRunEvents({
2688
2694
  sessionId: e.sessionId,
2689
2695
  invocationId: e.invocationId,
2690
2696
  afterSeqId: e.afterSeqId
2691
- }, { signal: t.signal })).getReader(), o = new TextDecoder(), s = "", c = Array.isArray(e.initialEvents) ? e.initialEvents : [];
2697
+ }, { signal: t.signal })).getReader(), c = new TextDecoder(), l = "", u = Array.isArray(e.initialEvents) ? e.initialEvents : [];
2692
2698
  for (I.getState().setCurrentRunId(e.invocationId), I.getState().updateActivity({
2693
2699
  sessionId: e.sessionId,
2694
2700
  status: "running",
@@ -2696,35 +2702,38 @@ function Cn(e) {
2696
2702
  detail: e.invocationId,
2697
2703
  countEvent: !1
2698
2704
  }); !i;) {
2699
- let { value: t, done: n } = await a.read();
2705
+ let { value: t, done: n } = await o.read();
2700
2706
  if (n) break;
2701
- s += o.decode(t, { stream: !0 });
2702
- let l = s.split("\n\n");
2703
- s = l.pop() || "";
2704
- for (let t of l) {
2707
+ l += c.decode(t, { stream: !0 });
2708
+ let d = l.split("\n\n");
2709
+ l = d.pop() || "";
2710
+ for (let t of d) {
2705
2711
  if (!t.trim()) continue;
2706
2712
  let n = [];
2707
2713
  for (let e of t.split("\n")) e.startsWith("data:") && n.push(e.substring(5).trim());
2708
- let a = n.join("\n").trim();
2709
- if (!a || a === "[DONE]") {
2710
- i = a === "[DONE]", r ||= i;
2714
+ let o = n.join("\n").trim();
2715
+ if (!o || o === "[DONE]") {
2716
+ i = o === "[DONE]", r ||= i;
2711
2717
  continue;
2712
2718
  }
2713
2719
  try {
2714
- let t = JSON.parse(a);
2715
- c = rn(c, [t]), i ||= on(t), r ||= i, t.EventType === "run_checkpoint" && Z.getState().upsertSessionCheckpoint(e.sessionId, t);
2720
+ 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);
2716
2722
  let n = Sn(t);
2717
- n && I.getState().updateActivity({
2723
+ if (n && I.getState().updateActivity({
2718
2724
  sessionId: e.sessionId,
2719
2725
  status: n.status,
2720
2726
  phase: n.phase,
2721
2727
  detail: e.invocationId,
2722
2728
  countEvent: !1
2723
- });
2724
- let o = nn(c);
2725
- q.getState().setMessages(o);
2729
+ }), s.current !== e.sessionId) {
2730
+ a();
2731
+ break;
2732
+ }
2733
+ let c = tn(u);
2734
+ xn(c, q.getState().messages) && q.getState().setMessages(c);
2726
2735
  } catch (e) {
2727
- console.warn("Failed to parse run event data", a, e);
2736
+ console.warn("Failed to parse run event data", o, e);
2728
2737
  }
2729
2738
  }
2730
2739
  }
@@ -2734,61 +2743,69 @@ function Cn(e) {
2734
2743
  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);
2735
2744
  }
2736
2745
  }, [n]), h = k(async (e) => {
2737
- s.current = e, R.getState().setCurrentSessionId(e), i(), u.current?.abort(), r && _.getState().setMobileSidebarOpen(!1);
2746
+ s.current = e;
2747
+ let t = () => s.current === e;
2748
+ R.getState().setCurrentSessionId(e), i(), u.current?.abort(), r && _.getState().setMobileSidebarOpen(!1);
2738
2749
  try {
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
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
2745
2756
  };
2746
2757
  else {
2747
- let t = await n.listSessionEvents(e, {
2758
+ let r = await n.listSessionEvents(e, {
2748
2759
  offset: 0,
2749
2760
  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)
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)
2759
2771
  });
2760
2772
  }
2761
- let i = P.getState().capabilities || a;
2762
- i.RunLifecycle.Enabled && i.RunLifecycle.Checkpoints ? (n.listSessionCheckpoints({
2773
+ if (!t()) return;
2774
+ let o = P.getState().capabilities || a;
2775
+ o.RunLifecycle.Enabled && o.RunLifecycle.Checkpoints ? (n.listSessionCheckpoints({
2763
2776
  agentId: l.current,
2764
2777
  sessionId: e
2765
2778
  }).then((t) => {
2766
- Z.getState().setSessionCheckpoints(e, t.Checkpoints || []);
2779
+ Q.getState().setSessionCheckpoints(e, t.Checkpoints || []);
2767
2780
  }).catch((t) => {
2768
- console.warn("[SessionLifecycle] checkpoint load failed:", t), Z.getState().setSessionCheckpoints(e, []);
2781
+ console.warn("[SessionLifecycle] checkpoint load failed:", t), Q.getState().setSessionCheckpoints(e, []);
2769
2782
  }), n.listToolReceipts({
2770
2783
  agentId: l.current,
2771
2784
  sessionId: e
2772
2785
  }).then((t) => {
2773
- Z.getState().setSessionToolReceipts(e, t.ToolReceipts || []);
2786
+ Q.getState().setSessionToolReceipts(e, t.ToolReceipts || []);
2774
2787
  }).catch((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, {
2788
+ 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);
2793
+ if (!t()) return;
2794
+ q.getState().setMessages(r), p(l.current, e, r);
2795
+ let i = _n(n, {
2782
2796
  now: Date.now(),
2783
2797
  staleAfterMs: 1800 * 1e3
2784
- }), a = an(t);
2785
- i.RunLifecycle.Enabled && i.RunLifecycle.Resume && r[0] && m({
2798
+ }), a = rn(n);
2799
+ o.RunLifecycle.Enabled && o.RunLifecycle.Resume && i[0] && m({
2786
2800
  sessionId: e,
2787
- invocationId: r[0],
2801
+ invocationId: i[0],
2788
2802
  afterSeqId: a,
2789
- initialEvents: t
2803
+ initialEvents: n
2790
2804
  });
2791
- } else q.getState().setMessages([]), Z.getState().setSessionCheckpoints(e, []), Z.getState().setSessionToolReceipts(e, []);
2805
+ } else {
2806
+ if (!t()) return;
2807
+ q.getState().setMessages([]), Q.getState().setSessionCheckpoints(e, []), Q.getState().setSessionToolReceipts(e, []);
2808
+ }
2792
2809
  } catch (e) {
2793
2810
  console.error("Failed to load session events:", e);
2794
2811
  }
@@ -2805,17 +2822,17 @@ function Cn(e) {
2805
2822
  r.sessionsAgentId && r.sessionsAgentId !== e && r.resetSessionPagination(e), R.getState().setLoadingSessions(!0);
2806
2823
  let i = await n.listSessions(e, {
2807
2824
  page: 1,
2808
- pageSize: bn
2825
+ pageSize: yn
2809
2826
  });
2810
2827
  R.getState().upsertSessions(i.Sessions || [], {
2811
2828
  agentId: e,
2812
2829
  total: Number(i.Total ?? i.Sessions?.length ?? 0),
2813
2830
  page: Number(i.Page ?? 1),
2814
- pageSize: Number(i.PageSize ?? bn),
2831
+ pageSize: Number(i.PageSize ?? yn),
2815
2832
  replace: !0
2816
2833
  });
2817
2834
  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());
2835
+ c && c !== o ? h(c) : !c && o && (s.current = null, R.getState().setCurrentSessionId(null), q.getState().setMessages([]), Q.getState().clearSessionCheckpoints());
2819
2836
  } catch (e) {
2820
2837
  if (e instanceof U) return;
2821
2838
  console.error("Failed to fetch sessions:", e);
@@ -2827,11 +2844,11 @@ function Cn(e) {
2827
2844
  if (e.isLoadingSessions || !e.hasMoreSessions) return;
2828
2845
  let t = ue({
2829
2846
  total: e.sessionsTotal,
2830
- pageSize: e.sessionsPageSize || bn,
2847
+ pageSize: e.sessionsPageSize || yn,
2831
2848
  loadedPages: e.loadedPages
2832
2849
  });
2833
2850
  if (!t) return;
2834
- let r = e.sessionsPageSize || bn, i = e.sessionsAgentId || l.current || "default-agent";
2851
+ let r = e.sessionsPageSize || yn, i = e.sessionsAgentId || l.current || "default-agent";
2835
2852
  try {
2836
2853
  R.getState().setLoadingSessions(!0);
2837
2854
  let a = await n.listSessions(i, {
@@ -2863,7 +2880,7 @@ function Cn(e) {
2863
2880
  e && (R.getState().upsertSessions([{
2864
2881
  SessionId: e,
2865
2882
  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));
2883
+ }]), s.current = e, R.getState().setCurrentSessionId(e), q.getState().setMessages([]), Q.getState().setSessionCheckpoints(e, []), Q.getState().setSessionToolReceipts(e, []), r && (_.getState().setMobileSidebarOpen(!1), _.getState().setMobileActionsOpen(!1)), g(t, e));
2867
2884
  } catch (e) {
2868
2885
  if (e instanceof U) return;
2869
2886
  console.error("Failed to create session:", e);
@@ -2876,7 +2893,7 @@ function Cn(e) {
2876
2893
  r
2877
2894
  ]), b = k(async (e) => {
2878
2895
  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));
2896
+ await n.deleteSession(e), R.getState().removeSession(e), R.getState().clearSessionEventCache(e), s.current === e && (s.current = null, q.getState().setMessages([]), Q.getState().clearSessionCheckpoints(e), R.getState().setCurrentSessionId(null), g(t));
2880
2897
  } catch (e) {
2881
2898
  if (e instanceof U) return;
2882
2899
  console.error("Failed to delete session", e);
@@ -2893,20 +2910,20 @@ function Cn(e) {
2893
2910
  loadOlderSessionEvents: k(async (e) => {
2894
2911
  let t = R.getState().eventCache[e];
2895
2912
  if (!t || t.offset <= 0 || t.isLoadingOlder) return;
2896
- let r = Math.max(0, t.offset - xn), i = t.offset - r;
2913
+ let r = Math.max(0, t.offset - bn), i = t.offset - r;
2897
2914
  try {
2898
2915
  R.getState().setSessionEventLoadingOlder(e, !0);
2899
2916
  let a = await n.listSessionEvents(e, {
2900
2917
  offset: r,
2901
2918
  limit: i
2902
- }), o = rn(a.Events || [], t.events);
2919
+ }), o = nn(a.Events || [], t.events);
2903
2920
  if (R.getState().setSessionEventCache(e, {
2904
2921
  events: o,
2905
2922
  total: Number(a.Total ?? t.total),
2906
2923
  offset: Number(a.Offset ?? r),
2907
2924
  limit: o.length
2908
2925
  }), s.current === e) {
2909
- let t = nn(o);
2926
+ let t = tn(o);
2910
2927
  q.getState().setMessages(t), p(l.current, e, t);
2911
2928
  }
2912
2929
  } catch (e) {
@@ -3088,7 +3105,7 @@ function In(e) {
3088
3105
  function Ln(e) {
3089
3106
  return /[\u3400-\u4DBF\u4E00-\u9FFF\uF900-\uFAFF]/u.test(e);
3090
3107
  }
3091
- function $(e) {
3108
+ function Rn(e) {
3092
3109
  let t = String(e || "").trim();
3093
3110
  if (!t) return 0;
3094
3111
  let n = 0, r = 0;
@@ -3101,24 +3118,24 @@ function $(e) {
3101
3118
  }
3102
3119
  return Math.max(1, n + Math.ceil(r / 4));
3103
3120
  }
3104
- function Rn(e) {
3121
+ function zn(e) {
3105
3122
  if (!e) return 0;
3106
- if (e.role === "system") return e.eventType === "context_checkpoint" ? $(e.summary || "") : 0;
3107
- let t = $(e.content || "");
3108
- return e.tools && (t += Object.values(e.tools).reduce((e, t) => e + $(t?.name || "") + $(t?.args || "") + $(t?.output || ""), 0)), t;
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;
3109
3126
  }
3110
- function zn(e) {
3127
+ function Bn(e) {
3111
3128
  return e ? In(e.context_window_tokens) ?? In(e?.limits?.context_window_tokens) : null;
3112
3129
  }
3113
- function Bn(e) {
3130
+ function Vn(e) {
3114
3131
  return e ? In(e.auto_compact_threshold_percentage) ?? 84 : 84;
3115
3132
  }
3116
- function Vn({ messages: e, draftInput: t, selectedModel: n }) {
3117
- let r = zn(n);
3133
+ function Hn({ messages: e, draftInput: t, selectedModel: n }) {
3134
+ let r = Bn(n);
3118
3135
  if (!r) return null;
3119
3136
  let i = [...e || []].reverse().find((e) => e?.role === "system" && e?.eventType === "context_checkpoint" && e?.status === "running");
3120
3137
  if (i) {
3121
- let e = Rn(i);
3138
+ let e = zn(i);
3122
3139
  return {
3123
3140
  label: "正在压缩上下文…",
3124
3141
  phase: "compressing",
@@ -3127,10 +3144,10 @@ function Vn({ messages: e, draftInput: t, selectedModel: n }) {
3127
3144
  percent: Math.min(100, Math.max(0, Math.round(e / r * 100)))
3128
3145
  };
3129
3146
  }
3130
- let a = (e || []).reduce((e, t) => e + Rn(t), 0) + $(t || "");
3147
+ let a = (e || []).reduce((e, t) => e + zn(t), 0) + Rn(t || "");
3131
3148
  if (a <= 0) return null;
3132
3149
  let o = Math.min(100, Math.max(0, Math.round(a / r * 100)));
3133
- return o >= Bn(n) ? {
3150
+ return o >= Vn(n) ? {
3134
3151
  label: `估算上下文 ${o}% · 即将压缩`,
3135
3152
  phase: "warning",
3136
3153
  percent: o,
@@ -3146,8 +3163,8 @@ function Vn({ messages: e, draftInput: t, selectedModel: n }) {
3146
3163
  }
3147
3164
  //#endregion
3148
3165
  //#region src/components/chat/ConnectedMessageList.tsx
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({
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({
3151
3168
  messages: u,
3152
3169
  draftInput: v,
3153
3170
  selectedModel: O
@@ -3225,7 +3242,7 @@ function Hn({ agentName: e, isMobile: t, onDeleteFeedback: n, onSubmitFeedback:
3225
3242
  }
3226
3243
  //#endregion
3227
3244
  //#region src/utils/attachment.ts
3228
- function Un(e) {
3245
+ function Wn(e) {
3229
3246
  return [
3230
3247
  e.name,
3231
3248
  e.size,
@@ -3233,19 +3250,19 @@ function Un(e) {
3233
3250
  e.type
3234
3251
  ].join(":");
3235
3252
  }
3236
- function Wn(e, t) {
3253
+ function Gn(e, t) {
3237
3254
  let n = /* @__PURE__ */ new Map();
3238
- for (let t of e) n.set(Un(t), t);
3239
- for (let e of t) n.set(Un(e), e);
3255
+ for (let t of e) n.set(Wn(t), t);
3256
+ for (let e of t) n.set(Wn(e), e);
3240
3257
  return Array.from(n.values());
3241
3258
  }
3242
- function Gn(e) {
3259
+ function Kn(e) {
3243
3260
  return Array.from(e.clipboardData.items || []).filter((e) => e.kind === "file").map((e) => e.getAsFile()).filter((e) => !!e);
3244
3261
  }
3245
3262
  //#endregion
3246
3263
  //#region src/components/chat/ConnectedComposer.tsx
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({
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({
3249
3266
  messages: d,
3250
3267
  draftInput: o,
3251
3268
  selectedModel: g
@@ -3262,7 +3279,7 @@ function Kn({ composerMaxHeight: e, submitDraft: t, stopGeneration: n, cancelRem
3262
3279
  let b = (t) => {
3263
3280
  _.getState().setInput(t.target.value), t.target.style.height = "auto", t.target.style.height = `${Math.min(t.target.scrollHeight, e)}px`;
3264
3281
  }, ee = (e) => {
3265
- e.length && _.getState().setAttachments((t) => Wn(t, e));
3282
+ e.length && _.getState().setAttachments((t) => Gn(t, e));
3266
3283
  };
3267
3284
  return /* @__PURE__ */ T(a, {
3268
3285
  attachments: s,
@@ -3276,7 +3293,7 @@ function Kn({ composerMaxHeight: e, submitDraft: t, stopGeneration: n, cancelRem
3276
3293
  onAppendAttachments: ee,
3277
3294
  onInputChange: b,
3278
3295
  onPaste: (e) => {
3279
- let t = Gn(e);
3296
+ let t = Kn(e);
3280
3297
  t.length && (e.preventDefault(), e.stopPropagation(), ee(t));
3281
3298
  },
3282
3299
  onRemoveAttachment: (e) => _.getState().setAttachments((t) => t.filter((t, n) => n !== e)),
@@ -3288,7 +3305,7 @@ function Kn({ composerMaxHeight: e, submitDraft: t, stopGeneration: n, cancelRem
3288
3305
  }
3289
3306
  //#endregion
3290
3307
  //#region src/api/session.ts
3291
- async function qn(e, t) {
3308
+ async function Jn(e, t) {
3292
3309
  let n = await K("ListSessions", {
3293
3310
  AgentId: e,
3294
3311
  Page: t?.page,
@@ -3301,15 +3318,15 @@ async function qn(e, t) {
3301
3318
  PageSize: Number.isFinite(Number(n.PageSize)) ? Number(n.PageSize) : t?.pageSize ?? n.Sessions?.length ?? 0
3302
3319
  };
3303
3320
  }
3304
- async function Jn(e, t) {
3321
+ async function Yn(e, t) {
3305
3322
  return (await K("CreateSession", { AgentId: e }, t)).Session;
3306
3323
  }
3307
- async function Yn(e, t) {
3324
+ async function Xn(e, t) {
3308
3325
  await K("DeleteSession", { SessionId: e }, t);
3309
3326
  }
3310
3327
  //#endregion
3311
3328
  //#region src/api/events.ts
3312
- async function Xn(e, t) {
3329
+ async function Zn(e, t) {
3313
3330
  let n = await K("ListSessionEvents", {
3314
3331
  SessionId: e,
3315
3332
  Offset: t?.offset,
@@ -3324,19 +3341,19 @@ async function Xn(e, t) {
3324
3341
  }
3325
3342
  //#endregion
3326
3343
  //#region src/api/run.ts
3327
- async function Zn(e, t) {
3344
+ async function Qn(e, t) {
3328
3345
  return ze("RunAgent", e, t);
3329
3346
  }
3330
3347
  //#endregion
3331
3348
  //#region src/api/checkpoints.ts
3332
- async function Qn(e, t) {
3349
+ async function $n(e, t) {
3333
3350
  let n = {
3334
3351
  AgentId: e.agentId,
3335
3352
  SessionId: e.sessionId
3336
3353
  };
3337
3354
  return e.runId && (n.RunId = e.runId), K("ListSessionCheckpoints", n, t);
3338
3355
  }
3339
- async function $n(e, t) {
3356
+ async function er(e, t) {
3340
3357
  return K("PreviewCheckpointResume", {
3341
3358
  AgentId: e.agentId,
3342
3359
  SessionId: e.sessionId,
@@ -3344,14 +3361,14 @@ async function $n(e, t) {
3344
3361
  CheckpointId: e.checkpointId
3345
3362
  }, t);
3346
3363
  }
3347
- async function er(e, t) {
3364
+ async function tr(e, t) {
3348
3365
  let n = {
3349
3366
  AgentId: e.agentId,
3350
3367
  SessionId: e.sessionId
3351
3368
  };
3352
3369
  return e.runId && (n.RunId = e.runId), e.checkpointId && (n.CheckpointId = e.checkpointId), K("ListToolReceipts", n, t);
3353
3370
  }
3354
- async function tr(e, t) {
3371
+ async function nr(e, t) {
3355
3372
  let n = {
3356
3373
  AgentId: e.agentId,
3357
3374
  SessionId: e.sessionId,
@@ -3363,23 +3380,23 @@ async function tr(e, t) {
3363
3380
  }
3364
3381
  //#endregion
3365
3382
  //#region src/api/workspace.ts
3366
- async function nr(e, t, n) {
3383
+ async function rr(e, t, n) {
3367
3384
  return K("ListWorkspaceFiles", {
3368
3385
  AgentId: e,
3369
3386
  Path: t,
3370
3387
  Recursive: n
3371
3388
  });
3372
3389
  }
3373
- async function rr(e) {
3390
+ async function ir(e) {
3374
3391
  return Le("AddWorkspaceFile", e);
3375
3392
  }
3376
- async function ir(e, t) {
3393
+ async function ar(e, t) {
3377
3394
  return K("DeleteWorkspaceFile", {
3378
3395
  AgentId: e,
3379
3396
  Path: t
3380
3397
  });
3381
3398
  }
3382
- async function ar(e, t, n) {
3399
+ async function or(e, t, n) {
3383
3400
  return Re("GetWorkspaceFileContent", {
3384
3401
  AgentId: e,
3385
3402
  FilePath: t
@@ -3390,38 +3407,38 @@ async function ar(e, t, n) {
3390
3407
  }
3391
3408
  //#endregion
3392
3409
  //#region src/api/upload.ts
3393
- async function or(e, t) {
3410
+ async function sr(e, t) {
3394
3411
  return Le("UploadFile", e, t);
3395
3412
  }
3396
3413
  //#endregion
3397
3414
  //#region src/core/api/facade.ts
3398
- var sr = class {
3415
+ var cr = class {
3399
3416
  async listSessions(e, t) {
3400
- return qn(e, t);
3417
+ return Jn(e, t);
3401
3418
  }
3402
3419
  async createSession(e, t) {
3403
- return { SessionId: (await Jn(e, t)).SessionId };
3420
+ return { SessionId: (await Yn(e, t)).SessionId };
3404
3421
  }
3405
3422
  async deleteSession(e, t) {
3406
- await Yn(e, t);
3423
+ await Xn(e, t);
3407
3424
  }
3408
3425
  async listSessionEvents(e, t) {
3409
- return Xn(e, t);
3426
+ return Zn(e, t);
3410
3427
  }
3411
3428
  async listSessionCheckpoints(e, t) {
3412
- return Qn(e, t);
3429
+ return $n(e, t);
3413
3430
  }
3414
3431
  async previewCheckpointResume(e, t) {
3415
- return $n(e, t);
3432
+ return er(e, t);
3416
3433
  }
3417
3434
  async listToolReceipts(e, t) {
3418
- return er(e, t);
3435
+ return tr(e, t);
3419
3436
  }
3420
3437
  async runAgent(e, t) {
3421
- return Zn(e, t);
3438
+ return Qn(e, t);
3422
3439
  }
3423
3440
  async resumeRun(e, t) {
3424
- return tr(e, t);
3441
+ return nr(e, t);
3425
3442
  }
3426
3443
  async subscribeRunEvents(e, t) {
3427
3444
  return Be("SubscribeRunEvents", {
@@ -3446,16 +3463,16 @@ var sr = class {
3446
3463
  await K("DeleteResponseFeedback", e, t);
3447
3464
  }
3448
3465
  async listWorkspaceFiles(e, t, n) {
3449
- return nr(e, t, n);
3466
+ return rr(e, t, n);
3450
3467
  }
3451
3468
  async addWorkspaceFile(e) {
3452
- return rr(e);
3469
+ return ir(e);
3453
3470
  }
3454
3471
  async deleteWorkspaceFile(e, t) {
3455
- await ir(e, t);
3472
+ await ar(e, t);
3456
3473
  }
3457
3474
  async getWorkspaceFileContent(e, t, n) {
3458
- return ar(e, t, n);
3475
+ return or(e, t, n);
3459
3476
  }
3460
3477
  async listAgentModels(e) {
3461
3478
  return He(e);
@@ -3464,11 +3481,11 @@ var sr = class {
3464
3481
  return Ve();
3465
3482
  }
3466
3483
  async uploadFile(e, t) {
3467
- return or(e, t);
3484
+ return sr(e, t);
3468
3485
  }
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({
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({
3472
3489
  isMobile: L,
3473
3490
  viewportHeight: le
3474
3491
  }), { fetchSessions: de, loadMoreSessions: fe, loadSession: pe, loadOlderSessionEvents: me, createNewSession: he, deleteSession: ge, currentSessionIdRef: z, agentIdRef: B, runSubscriptionAbortRef: _e } = Cn({
@@ -3482,20 +3499,16 @@ function dr({ apiAdapter: e, initialSurface: r = "chat", routeShell: i } = {}) {
3482
3499
  }), ye = k((e) => {
3483
3500
  if (!e) return;
3484
3501
  let t = () => {
3485
- de(B.current, e), z.current === e && !I.getState().isStreaming && pe(e);
3502
+ R.getState().clearSessionEventCache(e), de(B.current, e);
3486
3503
  };
3487
3504
  queueMicrotask(t), window.setTimeout(t, 1800), window.setTimeout(t, 5e3);
3488
- }, [
3489
- B,
3490
- z,
3491
- de,
3492
- pe
3493
- ]), { submitDraft: be, stopGeneration: xe, disconnectRun: Se, resumeCheckpoint: Ce } = pn({
3505
+ }, [B, de]), be = m.find((e) => e.id === p) || null, { submitDraft: xe, stopGeneration: Se, disconnectRun: Ce, resumeCheckpoint: Te } = fn({
3494
3506
  agentId: o,
3495
3507
  currentSessionId: s,
3496
3508
  agentFramework: x,
3497
3509
  apiFormats: ae,
3498
3510
  selectedModel: p,
3511
+ selectedModelMetadata: be,
3499
3512
  thinkingMode: te,
3500
3513
  uiCapabilities: M,
3501
3514
  isMobile: L,
@@ -3506,16 +3519,16 @@ function dr({ apiAdapter: e, initialSurface: r = "chat", routeShell: i } = {}) {
3506
3519
  onRunSettled: ye
3507
3520
  });
3508
3521
  A(() => {
3509
- ce.current = Se;
3510
- }, [Se]);
3511
- let Te = k(() => {
3522
+ ce.current = Ce;
3523
+ }, [Ce]);
3524
+ let Ee = k(() => {
3512
3525
  let e = z.current;
3513
- _e.current?.abort(), I.getState().stopActivity(), I.getState().stopSessionActivity(e), xe();
3526
+ _e.current?.abort(), I.getState().stopActivity(), I.getState().stopSessionActivity(e), Se();
3514
3527
  }, [
3515
3528
  z,
3516
3529
  _e,
3517
- xe
3518
- ]), Ee = k(async () => {
3530
+ Se
3531
+ ]), De = k(async () => {
3519
3532
  let e = z.current, t = I.getState(), n = t.currentRunId || t.getSessionActivity(e)?.runId || "";
3520
3533
  if (n) try {
3521
3534
  await a.cancelRun(o, n), I.getState().stopSessionActivity(e, "取消请求已发送,后台运行会停在最近 checkpoint。");
@@ -3534,12 +3547,12 @@ function dr({ apiAdapter: e, initialSurface: r = "chat", routeShell: i } = {}) {
3534
3547
  o,
3535
3548
  z,
3536
3549
  ye
3537
- ]), { submitResponseFeedback: De, deleteResponseFeedback: Oe, respondToApproval: ke } = mn({
3550
+ ]), { submitResponseFeedback: Oe, deleteResponseFeedback: ke, respondToApproval: je } = pn({
3538
3551
  agentId: o,
3539
3552
  currentSessionId: s,
3540
3553
  isStreaming: c,
3541
3554
  api: a,
3542
- submitDraft: be
3555
+ submitDraft: xe
3543
3556
  });
3544
3557
  Ge({ fetchSessions: de }), A(() => {
3545
3558
  B.current = o, z.current = s, we(o, s);
@@ -3555,19 +3568,19 @@ function dr({ apiAdapter: e, initialSurface: r = "chat", routeShell: i } = {}) {
3555
3568
  }, [w]), A(() => () => {
3556
3569
  _e.current?.abort();
3557
3570
  }, [_e]);
3558
- let je = t(M), Ne = !!M.Thinking, V = g({
3571
+ let Ne = t(M), Pe = !!M.Thinking, V = g({
3559
3572
  workspaceFiles: S,
3560
3573
  accessMode: C
3561
- }), Pe = y({ isMobile: L }), H = Ae({
3574
+ }), H = y({ isMobile: L }), U = Ae({
3562
3575
  capability: M.NativeDashboard,
3563
3576
  agentFramework: x,
3564
3577
  accessMode: C,
3565
3578
  origin: window.location.origin
3566
- }), U = !je, W = x === "openclaw" ? "OpenClaw" : x === "hermes" ? "Hermes" : "原生运行时", Ie = (m.find((e) => e.id === p) || null)?.display_name || p || "", G = !L && l && je, K = j(!1), [Le, Re] = oe(r === "tui"), ze = Le && !!M.NativeTerminal?.Enabled;
3579
+ }), W = !Ne, Ie = x === "openclaw" ? "OpenClaw" : x === "hermes" ? "Hermes" : "原生运行时", G = be?.display_name || p || "", K = !L && l && Ne, Le = j(!1), [Re, ze] = oe(r === "tui"), Be = Re && !!M.NativeTerminal?.Enabled;
3567
3580
  A(() => {
3568
- K.current || r !== "workspace" || !V || (K.current = !0, _.getState().setWorkspacePanelOpen(!0), _.getState().setWorkspacePanelFullscreen(!0));
3581
+ Le.current || r !== "workspace" || !V || (Le.current = !0, _.getState().setWorkspacePanelOpen(!0), _.getState().setWorkspacePanelFullscreen(!0));
3569
3582
  }, [r, V]);
3570
- let Be = /* @__PURE__ */ E("div", {
3583
+ let Ve = /* @__PURE__ */ E("div", {
3571
3584
  className: "flex h-[var(--app-height)] min-h-[var(--app-height)] overflow-hidden bg-white font-sans text-slate-800 dark:bg-slate-900 dark:text-slate-200",
3572
3585
  children: [
3573
3586
  /* @__PURE__ */ T(wn, {
@@ -3582,7 +3595,7 @@ function dr({ apiAdapter: e, initialSurface: r = "chat", routeShell: i } = {}) {
3582
3595
  children: [/* @__PURE__ */ T(n, {
3583
3596
  agentName: f,
3584
3597
  currentSessionId: s,
3585
- nativeLauncherMode: U,
3598
+ nativeLauncherMode: W,
3586
3599
  isMobile: L,
3587
3600
  sidebarOpen: l,
3588
3601
  mobileSidebarOpen: u,
@@ -3594,40 +3607,40 @@ function dr({ apiAdapter: e, initialSurface: r = "chat", routeShell: i } = {}) {
3594
3607
  onSelectModel: (e) => {
3595
3608
  F.getState().setSelectedModel(e), L && _.getState().setMobileActionsOpen(!1);
3596
3609
  },
3597
- selectedModelLabel: Ie,
3610
+ selectedModelLabel: G,
3598
3611
  modelCatalogLoaded: v,
3599
3612
  modelSource: h,
3600
- thinkingEnabled: Ne,
3613
+ thinkingEnabled: Pe,
3601
3614
  thinkingMode: te,
3602
3615
  onSelectThinkingMode: (e) => F.getState().setThinkingMode(Me(e)),
3603
3616
  mobileActionsOpen: d,
3604
3617
  onMobileActionsOpenChange: (e) => _.getState().setMobileActionsOpen(e),
3605
3618
  workspaceEnabled: V,
3606
3619
  onOpenWorkspace: () => _.getState().setWorkspacePanelOpen(!0),
3607
- nativeManagementLink: H,
3620
+ nativeManagementLink: U,
3608
3621
  nativeTerminal: M.NativeTerminal
3609
- }), U ? /* @__PURE__ */ T(b, {
3610
- productLabel: W,
3611
- nativeManagementLink: H,
3622
+ }), W ? /* @__PURE__ */ T(b, {
3623
+ productLabel: Ie,
3624
+ nativeManagementLink: U,
3612
3625
  nativeTerminal: M.NativeTerminal,
3613
3626
  workspaceEnabled: V,
3614
3627
  onOpenWorkspace: () => _.getState().setWorkspacePanelOpen(!0)
3615
- }) : /* @__PURE__ */ E(re, { children: [/* @__PURE__ */ T(Hn, {
3628
+ }) : /* @__PURE__ */ E(re, { children: [/* @__PURE__ */ T(Un, {
3616
3629
  agentName: f,
3617
3630
  isMobile: L,
3618
- onDeleteFeedback: Oe,
3619
- onSubmitFeedback: De,
3620
- onRespondToApproval: ke,
3621
- onStopGeneration: Te,
3622
- onCancelRemote: M.StopRun ? Ee : void 0,
3631
+ onDeleteFeedback: ke,
3632
+ onSubmitFeedback: Oe,
3633
+ onRespondToApproval: je,
3634
+ onStopGeneration: Ee,
3635
+ onCancelRemote: M.StopRun ? De : void 0,
3623
3636
  checkpointResumeEnabled: M.RunLifecycle.Enabled && M.RunLifecycle.Checkpoints && M.RunLifecycle.CheckpointResume,
3624
- onResumeCheckpoint: Ce,
3637
+ onResumeCheckpoint: Te,
3625
3638
  onLoadOlderSessionEvents: me
3626
- }), /* @__PURE__ */ T(Kn, {
3639
+ }), /* @__PURE__ */ T(qn, {
3627
3640
  composerMaxHeight: ue,
3628
- submitDraft: be,
3629
- stopGeneration: Te,
3630
- cancelRemote: M.StopRun ? Ee : void 0,
3641
+ submitDraft: xe,
3642
+ stopGeneration: Ee,
3643
+ cancelRemote: M.StopRun ? De : void 0,
3631
3644
  isMobile: L
3632
3645
  })] })]
3633
3646
  }),
@@ -3640,14 +3653,14 @@ function dr({ apiAdapter: e, initialSurface: r = "chat", routeShell: i } = {}) {
3640
3653
  isMobile: L,
3641
3654
  workspaceEnabled: V,
3642
3655
  workspaceFiles: S,
3643
- workspacePanelPresentation: Pe,
3656
+ workspacePanelPresentation: H,
3644
3657
  closeWorkspacePanel: () => {
3645
3658
  _.getState().setWorkspacePanelFullscreen(!1), _.getState().setWorkspacePanelOpen(!1);
3646
3659
  },
3647
3660
  handleWorkspacePanelResizeStart: (e) => {
3648
3661
  if (O || L) return;
3649
3662
  e.preventDefault();
3650
- let t = e.clientX, n = D, r = je && G ? 280 : 0, i = document.body.style.cursor, a = document.body.style.userSelect;
3663
+ let t = e.clientX, n = D, r = Ne && K ? 280 : 0, i = document.body.style.cursor, a = document.body.style.userSelect;
3651
3664
  document.body.style.cursor = "col-resize", document.body.style.userSelect = "none";
3652
3665
  let o = (e) => {
3653
3666
  let i = n + t - e.clientX;
@@ -3661,31 +3674,31 @@ function dr({ apiAdapter: e, initialSurface: r = "chat", routeShell: i } = {}) {
3661
3674
  }),
3662
3675
  N && /* @__PURE__ */ T(ie, {
3663
3676
  fallback: null,
3664
- children: /* @__PURE__ */ T(lr, {})
3677
+ children: /* @__PURE__ */ T(ur, {})
3665
3678
  }),
3666
- ze ? /* @__PURE__ */ T(ie, {
3679
+ Be ? /* @__PURE__ */ T(ie, {
3667
3680
  fallback: null,
3668
- children: /* @__PURE__ */ T(ur, {
3681
+ children: /* @__PURE__ */ T(dr, {
3669
3682
  capability: M.NativeTerminal,
3670
3683
  open: !0,
3671
3684
  sessionId: s,
3672
- onClose: () => Re(!1)
3685
+ onClose: () => ze(!1)
3673
3686
  })
3674
3687
  }) : null
3675
3688
  ]
3676
3689
  });
3677
- return i ? /* @__PURE__ */ T(i, { children: Be }) : Be;
3690
+ return i ? /* @__PURE__ */ T(i, { children: Ve }) : Ve;
3678
3691
  }
3679
3692
  //#endregion
3680
3693
  //#region src/core/transport/sse-transport.ts
3681
- function fr(e, t) {
3694
+ function pr(e, t) {
3682
3695
  if (e.eventName === "__ping__") {
3683
3696
  I.getState().updateActivity({ countEvent: !1 });
3684
3697
  return;
3685
3698
  }
3686
3699
  t.onEvent(e);
3687
3700
  }
3688
- var pr = class {
3701
+ var mr = class {
3689
3702
  protocol = "sse-post";
3690
3703
  async connect(e, t) {
3691
3704
  let n = (await ze(e.action, e.body || {}, { signal: e.signal })).getReader(), r = new TextDecoder(), i = "", a = !1;
@@ -3705,7 +3718,7 @@ var pr = class {
3705
3718
  t.onComplete();
3706
3719
  return;
3707
3720
  }
3708
- fr(e, t);
3721
+ pr(e, t);
3709
3722
  }
3710
3723
  }
3711
3724
  }
@@ -3717,7 +3730,7 @@ var pr = class {
3717
3730
  a = !0, n.cancel().catch(() => {});
3718
3731
  };
3719
3732
  }
3720
- }, mr = class {
3733
+ }, hr = class {
3721
3734
  protocol = "sse-get";
3722
3735
  async connect(e, t) {
3723
3736
  let n = (await Be(e.action, e.params || {}, { signal: e.signal })).getReader(), r = new TextDecoder(), i = "", a = !1;
@@ -3737,7 +3750,7 @@ var pr = class {
3737
3750
  t.onComplete();
3738
3751
  return;
3739
3752
  }
3740
- fr(e, t);
3753
+ pr(e, t);
3741
3754
  }
3742
3755
  }
3743
3756
  }
@@ -3751,4 +3764,4 @@ var pr = class {
3751
3764
  }
3752
3765
  };
3753
3766
  //#endregion
3754
- export { dr as AgentWorkbench, sr as ApiFacadeImpl, xt as RunEngineImpl, mr as SseGetTransport, pr as SsePostTransport, ct as createProtocol };
3767
+ export { fr as AgentWorkbench, cr as ApiFacadeImpl, xt as RunEngineImpl, hr as SseGetTransport, mr as SsePostTransport, ct as createProtocol };