@kingsoftcloud/ksadk-web 0.2.7 → 0.2.9

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 (112) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/README.md +14 -3
  3. package/dist-ksadk/assets/{ArtifactsPanel-CMS54WAp.js → ArtifactsPanel-SSyx1aCo.js} +1 -1
  4. package/dist-ksadk/assets/{CodeBlock-CHZaDmho.js → CodeBlock-YQ5vXzYH.js} +1 -1
  5. package/dist-ksadk/assets/{MathMessageMarkdown-Cx9VSNQ8.js → MathMessageMarkdown-CflwKEe7.js} +1 -1
  6. package/dist-ksadk/assets/{MermaidBlock-CV56XpfU.js → MermaidBlock-nbjqLbuu.js} +6 -6
  7. package/dist-ksadk/assets/{NativeTerminalPanel-BrbZygfC.js → NativeTerminalPanel-DxAh9H8z.js} +1 -1
  8. package/dist-ksadk/assets/{arc-D3eSpKQi.js → arc-QSfvB8Et.js} +1 -1
  9. package/dist-ksadk/assets/architecture-7EHR7CIX-C19PcYz-.js +1 -0
  10. package/dist-ksadk/assets/{architectureDiagram-3BPJPVTR-DLe5RfvU.js → architectureDiagram-3BPJPVTR-CILqFpDC.js} +1 -1
  11. package/dist-ksadk/assets/{blockDiagram-GPEHLZMM-jrFAO8Bq.js → blockDiagram-GPEHLZMM-DD53Zgkb.js} +1 -1
  12. package/dist-ksadk/assets/{c4Diagram-AAUBKEIU-BFwiG9fe.js → c4Diagram-AAUBKEIU-DjS3CJER.js} +1 -1
  13. package/dist-ksadk/assets/channel-eJj5zetk.js +1 -0
  14. package/dist-ksadk/assets/{chunk-2J33WTMH-5Qlobtnj.js → chunk-2J33WTMH-CBEtb1wr.js} +1 -1
  15. package/dist-ksadk/assets/{chunk-4BX2VUAB-ou66Tq9f.js → chunk-4BX2VUAB-CqF_-u4a.js} +1 -1
  16. package/dist-ksadk/assets/{chunk-55IACEB6-CDvMSeFu.js → chunk-55IACEB6-lR2vu_yR.js} +1 -1
  17. package/dist-ksadk/assets/{chunk-727SXJPM-t3ZfYPXH.js → chunk-727SXJPM-DvjC_wor.js} +1 -1
  18. package/dist-ksadk/assets/{chunk-AQP2D5EJ-CqPYcHtF.js → chunk-AQP2D5EJ-BVUaV9p1.js} +1 -1
  19. package/dist-ksadk/assets/{chunk-FMBD7UC4-C79rRamw.js → chunk-FMBD7UC4-Cc8_1XC_.js} +1 -1
  20. package/dist-ksadk/assets/{chunk-ND2GUHAM-EqP27pbM.js → chunk-ND2GUHAM-CAHh5eAF.js} +1 -1
  21. package/dist-ksadk/assets/chunk-QZHKN3VN-D4mip6Il.js +1 -0
  22. package/dist-ksadk/assets/classDiagram-4FO5ZUOK-33PbfFSW.js +1 -0
  23. package/dist-ksadk/assets/classDiagram-v2-Q7XG4LA2-33PbfFSW.js +1 -0
  24. package/dist-ksadk/assets/{cose-bilkent-S5V4N54A-QMqM6zta.js → cose-bilkent-S5V4N54A-CW6wiY80.js} +1 -1
  25. package/dist-ksadk/assets/{dagre-BM42HDAG-CEakrtKq.js → dagre-BM42HDAG-BH_tWldy.js} +1 -1
  26. package/dist-ksadk/assets/{diagram-2AECGRRQ-BxdbhhCX.js → diagram-2AECGRRQ-ljY0ga-3.js} +1 -1
  27. package/dist-ksadk/assets/{diagram-5GNKFQAL-DBpIlxtZ.js → diagram-5GNKFQAL-BjZ8yg4e.js} +1 -1
  28. package/dist-ksadk/assets/{diagram-KO2AKTUF-D4COO3HT.js → diagram-KO2AKTUF-D5-e50p6.js} +1 -1
  29. package/dist-ksadk/assets/{diagram-LMA3HP47-DBSZ6aUz.js → diagram-LMA3HP47-CIMbgA2R.js} +1 -1
  30. package/dist-ksadk/assets/{diagram-OG6HWLK6-CxLsy00E.js → diagram-OG6HWLK6-CHAv8n8N.js} +1 -1
  31. package/dist-ksadk/assets/{dist-DelwQd2b.js → dist-8fhwk8tR.js} +1 -1
  32. package/dist-ksadk/assets/{dist-BOHSAqwD.js → dist-B-8AvGwU.js} +1 -1
  33. package/dist-ksadk/assets/{dist-DqLb8QP7.js → dist-BFWeVh8Y.js} +1 -1
  34. package/dist-ksadk/assets/{dist-6WsdpRSO.js → dist-BQFXkYCL.js} +1 -1
  35. package/dist-ksadk/assets/{dist-CXnbkk51.js → dist-Bh8Jo1Hy.js} +1 -1
  36. package/dist-ksadk/assets/{dist-z5-DHNYg.js → dist-C-TuGFEP.js} +1 -1
  37. package/dist-ksadk/assets/{dist-Cxij5I4C.js → dist-CA7FMnEq.js} +1 -1
  38. package/dist-ksadk/assets/{dist-aq2knWnw.js → dist-CH8X1hMv.js} +1 -1
  39. package/dist-ksadk/assets/{dist-C4IRfjf3.js → dist-CPGAEeVO.js} +1 -1
  40. package/dist-ksadk/assets/{dist-O8eCswTX.js → dist-CSdL9G4U.js} +1 -1
  41. package/dist-ksadk/assets/{dist-DxJZpRF1.js → dist-CefsMd33.js} +1 -1
  42. package/dist-ksadk/assets/{dist-Cpz8Cm0v.js → dist-CjTwd1ba.js} +1 -1
  43. package/dist-ksadk/assets/{dist-DGm-pByN.js → dist-CwcMj9TX.js} +1 -1
  44. package/dist-ksadk/assets/{dist-CqCrM4le.js → dist-DHqMtxSi.js} +1 -1
  45. package/dist-ksadk/assets/{dist-CTCQXcX7.js → dist-DkE5j5qa.js} +1 -1
  46. package/dist-ksadk/assets/{dist-BWf6mC8G.js → dist-DplOU2XC.js} +1 -1
  47. package/dist-ksadk/assets/{dist-BEmeO2N2.js → dist-DxbIq1y9.js} +1 -1
  48. package/dist-ksadk/assets/{dist-JOlStfdO.js → dist-Gtm38p17.js} +1 -1
  49. package/dist-ksadk/assets/{dist-Cqzpy7oO.js → dist-YCkBmRQg.js} +1 -1
  50. package/dist-ksadk/assets/{dist-D_gCRUxt.js → dist-k2YXzXki.js} +1 -1
  51. package/dist-ksadk/assets/{dist-CJmvMGxs.js → dist-lBacVcOX.js} +1 -1
  52. package/dist-ksadk/assets/{dist-BeLlHcxS.js → dist-miJcQ_QT.js} +1 -1
  53. package/dist-ksadk/assets/{erDiagram-TEJ5UH35-CsjpG1Xb.js → erDiagram-TEJ5UH35-Buxp9SL_.js} +1 -1
  54. package/dist-ksadk/assets/eventmodeling-FCH6USID-DmbjPnMI.js +1 -0
  55. package/dist-ksadk/assets/{flowDiagram-I6XJVG4X-DZo3QdjC.js → flowDiagram-I6XJVG4X-CNQ7RUqk.js} +1 -1
  56. package/dist-ksadk/assets/{ganttDiagram-6RSMTGT7-BGeXMpCW.js → ganttDiagram-6RSMTGT7-BR4K2g25.js} +1 -1
  57. package/dist-ksadk/assets/gitGraph-WXDBUCRP-Bc_9dlTu.js +1 -0
  58. package/dist-ksadk/assets/{gitGraphDiagram-PVQCEYII-CEgx70IJ.js → gitGraphDiagram-PVQCEYII-D5xJeGM-.js} +1 -1
  59. package/dist-ksadk/assets/index-B6Jvzl61.js +165 -0
  60. package/dist-ksadk/assets/info-J43DQDTF-B8Y6xmyb.js +1 -0
  61. package/dist-ksadk/assets/{infoDiagram-5YYISTIA-D7Mjh6YU.js → infoDiagram-5YYISTIA-Dx3WJJ7c.js} +1 -1
  62. package/dist-ksadk/assets/{ishikawaDiagram-YF4QCWOH-Dd4tDuCg.js → ishikawaDiagram-YF4QCWOH-CinAgPok.js} +1 -1
  63. package/dist-ksadk/assets/{journeyDiagram-JHISSGLW-D8l_bo2Y.js → journeyDiagram-JHISSGLW-CvHK1ISY.js} +1 -1
  64. package/dist-ksadk/assets/{kanban-definition-UN3LZRKU-CPTqBqad.js → kanban-definition-UN3LZRKU-CdVmYG0i.js} +1 -1
  65. package/dist-ksadk/assets/{katex-Cj6SHGk0.js → katex-j3gWbtq2.js} +1 -1
  66. package/dist-ksadk/assets/{linear-CtOo2EUV.js → linear-CSzugA0M.js} +1 -1
  67. package/dist-ksadk/assets/{mermaid-parser.core-BeKhTKTv.js → mermaid-parser.core-x5RuQqLN.js} +2 -2
  68. package/dist-ksadk/assets/{mindmap-definition-RKZ34NQL-Cyeeb4Uv.js → mindmap-definition-RKZ34NQL-DHeHLEl4.js} +1 -1
  69. package/dist-ksadk/assets/packet-YPE3B663-BrYG7omE.js +1 -0
  70. package/dist-ksadk/assets/pie-LRSECV5Y-_wNpvHX3.js +1 -0
  71. package/dist-ksadk/assets/{pieDiagram-4H26LBE5-CYoruq9a.js → pieDiagram-4H26LBE5-Bn-CBt6T.js} +1 -1
  72. package/dist-ksadk/assets/{quadrantDiagram-W4KKPZXB-9Iyq0jYH.js → quadrantDiagram-W4KKPZXB-DvSMM3_k.js} +1 -1
  73. package/dist-ksadk/assets/radar-GUYGQ44K-BaVGJTci.js +1 -0
  74. package/dist-ksadk/assets/{requirementDiagram-4Y6WPE33-Dm-mLxH0.js → requirementDiagram-4Y6WPE33-Bs1Umaod.js} +1 -1
  75. package/dist-ksadk/assets/{sankeyDiagram-5OEKKPKP-BhpH0-7G.js → sankeyDiagram-5OEKKPKP-uM4nwFIR.js} +1 -1
  76. package/dist-ksadk/assets/{sequenceDiagram-3UESZ5HK-DUPsgMMP.js → sequenceDiagram-3UESZ5HK-CUM1cPop.js} +1 -1
  77. package/dist-ksadk/assets/{stateDiagram-AJRCARHV-XbM4cbgm.js → stateDiagram-AJRCARHV-BMhsQxg0.js} +1 -1
  78. package/dist-ksadk/assets/stateDiagram-v2-BHNVJYJU-B1hvuTKv.js +1 -0
  79. package/dist-ksadk/assets/{timeline-definition-PNZ67QCA-Tday4gED.js → timeline-definition-PNZ67QCA-DqOyQzFY.js} +1 -1
  80. package/dist-ksadk/assets/treeView-BLDUP644-SGPboZ5y.js +1 -0
  81. package/dist-ksadk/assets/treemap-LRROVOQU-DuxD3lqD.js +1 -0
  82. package/dist-ksadk/assets/{vennDiagram-CIIHVFJN-BOg1GA8S.js → vennDiagram-CIIHVFJN-CL6ie2Ap.js} +1 -1
  83. package/dist-ksadk/assets/wardley-L42UT6IY-D9w6kgpb.js +1 -0
  84. package/dist-ksadk/assets/{wardleyDiagram-YWT4CUSO-Cy5RnJwi.js → wardleyDiagram-YWT4CUSO-CoLkaHQx.js} +1 -1
  85. package/dist-ksadk/assets/{xychartDiagram-2RQKCTM6-DHamdSL0.js → xychartDiagram-2RQKCTM6-D3W-LOH6.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-DFx9Y2xE.js → ArtifactsPanel--CQyb4ZY.js} +1 -1
  89. package/dist-lib/{CodeBlock-liGJ8t29.js → CodeBlock-Bwiebu9v.js} +1 -1
  90. package/dist-lib/{MathMessageMarkdown-hWMdpCVN.js → MathMessageMarkdown-BYzR9y8h.js} +2 -2
  91. package/dist-lib/{NativeTerminalPanel-q4ECX8EX.js → NativeTerminalPanel-BctkNn1k.js} +1 -1
  92. package/dist-lib/{WorkspacePanelContainer-26j9UzyY.js → WorkspacePanelContainer-CtS_M-Qt.js} +170 -167
  93. package/dist-lib/components.js +2 -2
  94. package/dist-lib/runtime.js +17 -18
  95. package/dist-lib/utils/tool-display.d.ts.map +1 -1
  96. package/package.json +1 -1
  97. package/dist-ksadk/assets/architecture-7EHR7CIX-aKvaoHF-.js +0 -1
  98. package/dist-ksadk/assets/channel-BNEchGhD.js +0 -1
  99. package/dist-ksadk/assets/chunk-QZHKN3VN-DVqYdfgL.js +0 -1
  100. package/dist-ksadk/assets/classDiagram-4FO5ZUOK-DoFK3UDf.js +0 -1
  101. package/dist-ksadk/assets/classDiagram-v2-Q7XG4LA2-DoFK3UDf.js +0 -1
  102. package/dist-ksadk/assets/eventmodeling-FCH6USID-CnNj0sZg.js +0 -1
  103. package/dist-ksadk/assets/gitGraph-WXDBUCRP-CYAnXGvP.js +0 -1
  104. package/dist-ksadk/assets/index-DiS5sSwc.js +0 -165
  105. package/dist-ksadk/assets/info-J43DQDTF-CqhaeVQF.js +0 -1
  106. package/dist-ksadk/assets/packet-YPE3B663-D42EsLYz.js +0 -1
  107. package/dist-ksadk/assets/pie-LRSECV5Y-Cgre-V_q.js +0 -1
  108. package/dist-ksadk/assets/radar-GUYGQ44K-_FsLsLP1.js +0 -1
  109. package/dist-ksadk/assets/stateDiagram-v2-BHNVJYJU-C1h6ve7b.js +0 -1
  110. package/dist-ksadk/assets/treeView-BLDUP644-5bkV6oHA.js +0 -1
  111. package/dist-ksadk/assets/treemap-LRROVOQU-Ck8wquEY.js +0 -1
  112. package/dist-ksadk/assets/wardley-L42UT6IY-DPQZ7fpa.js +0 -1
@@ -205,7 +205,7 @@ var Ye = M.forwardRef(({ className: e, ...t }, n) => /* @__PURE__ */ A(B.Descrip
205
205
  Ye.displayName = B.Description.displayName;
206
206
  //#endregion
207
207
  //#region src/components/chat/ChatHeader.tsx
208
- var Xe = F(() => import("./NativeTerminalPanel-q4ECX8EX.js").then((e) => e.n).then((e) => ({ default: e.NativeTerminalPanel })));
208
+ var Xe = F(() => import("./NativeTerminalPanel-BctkNn1k.js").then((e) => e.n).then((e) => ({ default: e.NativeTerminalPanel })));
209
209
  function Ze({ availableModels: e, selectedModel: t, onSelectModel: n, selectedModelLabel: r, modelCatalogLoaded: i, modelSource: a, thinkingEnabled: o, thinkingMode: s, onSelectThinkingMode: c, compact: l = !1 }) {
210
210
  let u = J("rounded-full border border-slate-200 bg-white px-3 py-2 text-sm text-slate-700 outline-none transition-colors focus:ring-1 focus:ring-blue-500 dark:border-slate-700 dark:bg-slate-900 dark:text-slate-300", l ? "w-full" : "max-w-[13rem]"), d = e.length > 1 ? /* @__PURE__ */ A("select", {
211
211
  value: t,
@@ -489,7 +489,7 @@ function ut(e) {
489
489
  }
490
490
  //#endregion
491
491
  //#region src/components/MessageMarkdown.tsx
492
- var dt = N.lazy(() => import("./CodeBlock-liGJ8t29.js").then((e) => ({ default: e.CodeBlock }))), ft = N.lazy(() => import("./MermaidBlock-BFNE1NN8.js").then((e) => ({ default: e.MermaidBlock }))), pt = N.lazy(() => import("./MathMessageMarkdown-hWMdpCVN.js").then((e) => ({ default: e.MathMessageMarkdown })));
492
+ var dt = N.lazy(() => import("./CodeBlock-Bwiebu9v.js").then((e) => ({ default: e.CodeBlock }))), ft = N.lazy(() => import("./MermaidBlock-BFNE1NN8.js").then((e) => ({ default: e.MermaidBlock }))), pt = N.lazy(() => import("./MathMessageMarkdown-BYzR9y8h.js").then((e) => ({ default: e.MathMessageMarkdown })));
493
493
  function mt(e) {
494
494
  return /\$[^$]+\$|\$\$[^$]+\$\$/.test(e);
495
495
  }
@@ -703,33 +703,36 @@ function jt(e) {
703
703
  function Mt(e) {
704
704
  return e == null || e === !1 ? !1 : typeof e == "string" ? e.trim().length > 0 : typeof e == "object" ? Object.keys(e).length > 0 : !0;
705
705
  }
706
- function Nt(e, t = 0) {
706
+ function Nt(e) {
707
+ return String(e?.status || "").trim().toLowerCase() === "accepted_not_extracted";
708
+ }
709
+ function Pt(e, t = 0) {
707
710
  if (!e || t > 4) return !1;
708
711
  if (typeof e == "string") {
709
712
  let n = Dt(e);
710
- return n !== e && Nt(n, t + 1);
713
+ return n !== e && Pt(n, t + 1);
711
714
  }
712
- if (Array.isArray(e)) return e.some((e) => Nt(e, t + 1));
713
- if (typeof e != "object") return !1;
715
+ if (Array.isArray(e)) return e.some((e) => Pt(e, t + 1));
716
+ if (typeof e != "object" || Nt(e)) return !1;
714
717
  if (At(e.ok) || At(e.success)) return !0;
715
718
  let n = jt(e.ok) || jt(e.success), r = String(e.status || "").trim().toLowerCase();
716
719
  return !n && [
717
720
  "error",
718
721
  "failed",
719
722
  "failure"
720
- ].includes(r) || !n && (Mt(e.error_type) || Mt(e.error_message) || Mt(e.error)) ? !0 : Object.values(e).some((e) => Nt(e, t + 1));
721
- }
722
- function Pt(e) {
723
- return e == null || e === "" ? !1 : Nt(kt(e));
723
+ ].includes(r) || !n && (Mt(e.error_type) || Mt(e.error_message) || Mt(e.error)) ? !0 : Object.values(e).some((e) => Pt(e, t + 1));
724
724
  }
725
725
  function Ft(e) {
726
+ return e == null || e === "" ? !1 : Pt(kt(e));
727
+ }
728
+ function It(e) {
726
729
  if (e == null || e === "") return "";
727
730
  let t = kt(e);
728
731
  return typeof t == "string" ? t : JSON.stringify(t, null, 2);
729
732
  }
730
733
  //#endregion
731
734
  //#region src/utils/clipboard.js
732
- async function It(e, t = globalThis) {
735
+ async function Lt(e, t = globalThis) {
733
736
  let n = String(e ?? ""), r = t?.navigator;
734
737
  if (r?.clipboard?.writeText) try {
735
738
  return await r.clipboard.writeText(n), !0;
@@ -748,7 +751,7 @@ async function It(e, t = globalThis) {
748
751
  }
749
752
  //#endregion
750
753
  //#region src/utils/session-helpers.ts
751
- function Lt(e) {
754
+ function Rt(e) {
752
755
  let t = e.UpdatedAt;
753
756
  if (typeof t == "string") {
754
757
  let e = Date.parse(t);
@@ -756,19 +759,19 @@ function Lt(e) {
756
759
  }
757
760
  return typeof t == "number" ? t : 0;
758
761
  }
759
- function Rt(e, t) {
762
+ function zt(e, t) {
760
763
  let n = /* @__PURE__ */ new Map();
761
764
  for (let t of e) t?.SessionId && n.set(t.SessionId, t);
762
765
  for (let e of t) e?.SessionId && n.set(e.SessionId, {
763
766
  ...n.get(e.SessionId) || {},
764
767
  ...e
765
768
  });
766
- return Array.from(n.values()).sort((e, t) => Lt(t) - Lt(e));
769
+ return Array.from(n.values()).sort((e, t) => Rt(t) - Rt(e));
767
770
  }
768
- function zt(e) {
771
+ function Bt(e) {
769
772
  return String(e.Title || "").trim() || String(e.FirstPrompt || "").trim() || "新对话";
770
773
  }
771
- function Bt(e) {
774
+ function Vt(e) {
772
775
  if (!e) return "";
773
776
  if (typeof e == "string") {
774
777
  let t = Date.parse(e);
@@ -788,31 +791,31 @@ function Bt(e) {
788
791
  }
789
792
  //#endregion
790
793
  //#region src/components/chat/ChatMessageList.tsx
791
- function Vt(e) {
794
+ function Ht(e) {
792
795
  let t = Math.max(0, Math.floor(e / 1e3)), n = Math.floor(t / 60), r = t % 60;
793
796
  return n <= 0 ? `${r}s` : `${n}m ${String(r).padStart(2, "0")}s`;
794
797
  }
795
- function Ht(e) {
798
+ function Ut(e) {
796
799
  return e < 1e3 ? "刚刚" : e < 6e4 ? `${Math.floor(e / 1e3)} 秒前` : `${Math.floor(e / 6e4)} 分钟前`;
797
800
  }
798
- function Ut(e) {
801
+ function Wt(e) {
799
802
  let t = Number(e);
800
803
  return !Number.isFinite(t) || t <= 0 ? "0" : t < 1e3 ? String(Math.round(t)) : t < 1e6 ? `${Math.round(t / 100) / 10}k` : `${Math.round(t / 1e5) / 10}m`;
801
804
  }
802
- function Wt({ contextIndicator: e }) {
805
+ function Gt({ contextIndicator: e }) {
803
806
  let t = e?.usedTokens, n = e?.contextWindowTokens;
804
807
  return !t || !n ? null : /* @__PURE__ */ j("span", {
805
808
  className: "token-count-pulse hidden font-mono text-slate-400 dark:text-slate-500 sm:inline",
806
809
  title: `估算 token:${Math.round(t)} / ${Math.round(n)}`,
807
810
  children: [
808
811
  "估算 token ",
809
- Ut(t),
812
+ Wt(t),
810
813
  " / ",
811
- Ut(n)
814
+ Wt(n)
812
815
  ]
813
816
  }, Math.round(t));
814
817
  }
815
- function Gt({ activity: e, contextIndicator: t, onStopGeneration: r, onCancelRemote: i }) {
818
+ function Kt({ activity: e, contextIndicator: t, onStopGeneration: r, onCancelRemote: i }) {
816
819
  let [a, o] = z(() => Date.now());
817
820
  L(() => {
818
821
  let e = window.setInterval(() => o(Date.now()), 1e3);
@@ -831,7 +834,7 @@ function Gt({ activity: e, contextIndicator: t, onStopGeneration: r, onCancelRem
831
834
  /* @__PURE__ */ j("span", { children: [
832
835
  e.source === "restore" ? "恢复" : "运行",
833
836
  " ",
834
- Vt(a - e.startedAt)
837
+ Ht(a - e.startedAt)
835
838
  ] }),
836
839
  s ? /* @__PURE__ */ A("span", {
837
840
  className: J("inline-block h-1.5 w-1.5 flex-shrink-0 rounded-full", c ? "bg-emerald-400" : "bg-slate-300 dark:bg-slate-600"),
@@ -841,10 +844,10 @@ function Gt({ activity: e, contextIndicator: t, onStopGeneration: r, onCancelRem
841
844
  className: "text-slate-400 dark:text-slate-500",
842
845
  children: [e.eventCount, " ev"]
843
846
  }),
844
- /* @__PURE__ */ A(Wt, { contextIndicator: t }),
847
+ /* @__PURE__ */ A(Gt, { contextIndicator: t }),
845
848
  /* @__PURE__ */ A("span", {
846
849
  className: "hidden text-slate-400 dark:text-slate-500 sm:inline",
847
- children: Ht(a - e.lastEventAt)
850
+ children: Ut(a - e.lastEventAt)
848
851
  }),
849
852
  s && (r || i) ? /* @__PURE__ */ j("div", {
850
853
  className: "flex flex-shrink-0 gap-1",
@@ -865,7 +868,7 @@ function Gt({ activity: e, contextIndicator: t, onStopGeneration: r, onCancelRem
865
868
  ]
866
869
  });
867
870
  }
868
- function Kt({ agentName: e }) {
871
+ function qt({ agentName: e }) {
869
872
  return /* @__PURE__ */ j("div", {
870
873
  className: "flex flex-col items-center justify-center min-h-[50vh] px-4",
871
874
  children: [
@@ -888,7 +891,7 @@ function Kt({ agentName: e }) {
888
891
  ]
889
892
  });
890
893
  }
891
- function qt(e) {
894
+ function Jt(e) {
892
895
  let t = String(e || "").trim();
893
896
  return t ? {
894
897
  stream: "流式执行中",
@@ -900,7 +903,7 @@ function qt(e) {
900
903
  after_tool: "工具执行后"
901
904
  }[t] || t : "保存运行状态";
902
905
  }
903
- function Jt(e) {
906
+ function Yt(e) {
904
907
  return {
905
908
  completed: "已完成",
906
909
  checkpointed: "已保存",
@@ -912,7 +915,7 @@ function Jt(e) {
912
915
  pending: "等待中"
913
916
  }[String(e || "").trim().toLowerCase()] || "";
914
917
  }
915
- function Yt(e, t) {
918
+ function Xt(e, t) {
916
919
  return t.stage ? t.stage : t.phase && ![
917
920
  "stream",
918
921
  "running",
@@ -923,14 +926,14 @@ function Yt(e, t) {
923
926
  "after_tool"
924
927
  ].includes(t.phase) ? t.phase : e === 0 ? "最新状态快照" : `状态快照 #${e + 1}`;
925
928
  }
926
- function Xt(e, t) {
929
+ function Zt(e, t) {
927
930
  return `第 ${Math.max(1, t - e)}/${Math.max(1, t)} 阶段`;
928
931
  }
929
- function Zt(e, t = 8, n = 4) {
932
+ function Qt(e, t = 8, n = 4) {
930
933
  let r = String(e || "").trim();
931
934
  return r ? r.length <= t + n + 1 ? r : `${r.slice(0, t)}...${r.slice(-n)}` : "";
932
935
  }
933
- function Qt({ checkpoints: e, isStreaming: t, onResumeCheckpoint: r }) {
936
+ function $t({ checkpoints: e, isStreaming: t, onResumeCheckpoint: r }) {
934
937
  if (!e.length || !r) return null;
935
938
  let i = e.filter((e) => {
936
939
  let t = String(e.status || "").trim().toLowerCase();
@@ -970,11 +973,11 @@ function Qt({ checkpoints: e, isStreaming: t, onResumeCheckpoint: r }) {
970
973
  }), /* @__PURE__ */ A("div", {
971
974
  className: "custom-scrollbar flex max-h-[24rem] flex-col gap-1.5 overflow-y-auto pr-1",
972
975
  children: e.map((i, a) => {
973
- let o = t || !i.sessionId, s = Xt(a, e.length), c = Yt(a, i), l = qt(i.phase), u = Jt(i.status) || (a === 0 ? "推荐" : ""), d = Zt(i.checkpointId), f = Zt(i.runId, 10, 4);
976
+ let o = t || !i.sessionId, s = Zt(a, e.length), c = Xt(a, i), l = Jt(i.phase), u = Yt(i.status) || (a === 0 ? "推荐" : ""), d = Qt(i.checkpointId), f = Qt(i.runId, 10, 4);
974
977
  return /* @__PURE__ */ j("div", {
975
978
  className: "grid min-h-[4.35rem] grid-cols-[1.75rem_minmax(0,1fr)_auto] items-center gap-2 rounded-md border border-slate-200/70 bg-slate-50/70 px-2.5 py-2 transition hover:border-blue-200 hover:bg-blue-50/40 dark:border-slate-700/70 dark:bg-slate-950/30 dark:hover:border-blue-800 dark:hover:bg-blue-950/20",
976
979
  title: [
977
- i.timestamp ? `时间:${Bt(i.timestamp)}` : "",
980
+ i.timestamp ? `时间:${Vt(i.timestamp)}` : "",
978
981
  d ? `checkpoint:${i.checkpointId}` : "",
979
982
  f ? `run:${i.runId}` : ""
980
983
  ].filter(Boolean).join("\n") || void 0,
@@ -1024,7 +1027,7 @@ function Qt({ checkpoints: e, isStreaming: t, onResumeCheckpoint: r }) {
1024
1027
  children: l
1025
1028
  }), i.timestamp ? /* @__PURE__ */ A("span", {
1026
1029
  className: "hidden flex-shrink-0 sm:inline",
1027
- children: Bt(i.timestamp)
1030
+ children: Vt(i.timestamp)
1028
1031
  }) : null]
1029
1032
  })
1030
1033
  ]
@@ -1050,7 +1053,7 @@ function Qt({ checkpoints: e, isStreaming: t, onResumeCheckpoint: r }) {
1050
1053
  })]
1051
1054
  });
1052
1055
  }
1053
- function $t({ attachments: e, isMobile: t, onOpenAttachmentPreview: n }) {
1056
+ function en({ attachments: e, isMobile: t, onOpenAttachmentPreview: n }) {
1054
1057
  return /* @__PURE__ */ A("div", {
1055
1058
  className: "mb-3 flex flex-wrap gap-3",
1056
1059
  children: e.map((e, r) => e.type.startsWith("image/") ? e.url ? /* @__PURE__ */ A("button", {
@@ -1082,7 +1085,7 @@ function $t({ attachments: e, isMobile: t, onOpenAttachmentPreview: n }) {
1082
1085
  }, `${e.name}-${r}`))
1083
1086
  });
1084
1087
  }
1085
- function en({ message: e }) {
1088
+ function tn({ message: e }) {
1086
1089
  return /* @__PURE__ */ A("div", {
1087
1090
  className: "w-full px-0 py-2 sm:px-4",
1088
1091
  children: /* @__PURE__ */ j("div", {
@@ -1110,15 +1113,15 @@ function en({ message: e }) {
1110
1113
  })
1111
1114
  });
1112
1115
  }
1113
- function tn({ label: e, tone: t, value: r }) {
1114
- let [i, o] = z("idle"), s = Ft(r);
1116
+ function nn({ label: e, tone: t, value: r }) {
1117
+ let [i, o] = z("idle"), s = It(r);
1115
1118
  L(() => {
1116
1119
  if (i === "idle") return;
1117
1120
  let e = window.setTimeout(() => o("idle"), 1600);
1118
1121
  return () => window.clearTimeout(e);
1119
1122
  }, [i]);
1120
1123
  let c = async () => {
1121
- o(await It(s) ? "copied" : "failed");
1124
+ o(await Lt(s) ? "copied" : "failed");
1122
1125
  };
1123
1126
  return /* @__PURE__ */ j("div", { children: [/* @__PURE__ */ j("div", {
1124
1127
  className: "mb-1 flex items-center justify-between gap-2",
@@ -1138,7 +1141,7 @@ function tn({ label: e, tone: t, value: r }) {
1138
1141
  children: s
1139
1142
  })] });
1140
1143
  }
1141
- function nn({ isLastMessage: e, isStreaming: t, message: n, onDeleteFeedback: r, onSubmitFeedback: i }) {
1144
+ function rn({ isLastMessage: e, isStreaming: t, message: n, onDeleteFeedback: r, onSubmitFeedback: i }) {
1142
1145
  let [a, o] = z(!1), [s, c] = z(n.feedback?.comment || ""), l = yt(n, t, e), u = !!n.feedback?.pending, d = n.feedback?.rating;
1143
1146
  return l ? /* @__PURE__ */ j("div", {
1144
1147
  className: "mt-3 flex flex-col gap-2",
@@ -1222,12 +1225,12 @@ function nn({ isLastMessage: e, isStreaming: t, message: n, onDeleteFeedback: r,
1222
1225
  ]
1223
1226
  }) : null;
1224
1227
  }
1225
- function rn({ agentName: e, isMobile: i, isStreaming: a, isLastMessage: o, message: s, onDeleteFeedback: c, onOpenAttachmentPreview: l, onRespondToApproval: u, onSubmitFeedback: d }) {
1228
+ function an({ agentName: e, isMobile: i, isStreaming: a, isLastMessage: o, message: s, onDeleteFeedback: c, onOpenAttachmentPreview: l, onRespondToApproval: u, onSubmitFeedback: d }) {
1226
1229
  return s.role === "user" ? /* @__PURE__ */ A("div", {
1227
1230
  className: "mb-3 flex justify-end",
1228
1231
  children: /* @__PURE__ */ j("div", {
1229
1232
  className: "max-w-[80%] rounded-2xl rounded-br-sm bg-blue-600 px-3.5 py-2.5 text-[14px] leading-relaxed text-white dark:bg-blue-500",
1230
- children: [s.attachments?.length ? /* @__PURE__ */ A($t, {
1233
+ children: [s.attachments?.length ? /* @__PURE__ */ A(en, {
1231
1234
  attachments: s.attachments,
1232
1235
  isMobile: i,
1233
1236
  onOpenAttachmentPreview: l
@@ -1240,7 +1243,7 @@ function rn({ agentName: e, isMobile: i, isStreaming: a, isLastMessage: o, messa
1240
1243
  className: "mb-1.5 flex items-center gap-2 text-xs text-slate-400",
1241
1244
  children: [/* @__PURE__ */ A(t, { className: "w-3.5 h-3.5" }), /* @__PURE__ */ A("span", { children: e })]
1242
1245
  }),
1243
- s.attachments?.length ? /* @__PURE__ */ A($t, {
1246
+ s.attachments?.length ? /* @__PURE__ */ A(en, {
1244
1247
  attachments: s.attachments,
1245
1248
  isMobile: i,
1246
1249
  onOpenAttachmentPreview: l
@@ -1320,12 +1323,12 @@ function rn({ agentName: e, isMobile: i, isStreaming: a, isLastMessage: o, messa
1320
1323
  })
1321
1324
  ]
1322
1325
  }) : null,
1323
- e.args ? /* @__PURE__ */ A(tn, {
1326
+ e.args ? /* @__PURE__ */ A(nn, {
1324
1327
  label: "入参 (Args)",
1325
1328
  tone: "input",
1326
1329
  value: e.args
1327
1330
  }) : null,
1328
- e.output ? /* @__PURE__ */ A(tn, {
1331
+ e.output ? /* @__PURE__ */ A(nn, {
1329
1332
  label: "输出 (Output)",
1330
1333
  tone: e.status === "error" ? "error" : "output",
1331
1334
  value: e.output
@@ -1337,7 +1340,7 @@ function rn({ agentName: e, isMobile: i, isStreaming: a, isLastMessage: o, messa
1337
1340
  className: "w-full break-words",
1338
1341
  children: s.content ? /* @__PURE__ */ A(X, { content: s.content }) : a && o && !s.reasoning && !s.tools ? /* @__PURE__ */ A("span", { className: "ml-1 mt-2 inline-block h-4 w-2 animate-pulse rounded-sm bg-emerald-500 align-middle opacity-80 shadow-sm" }) : null
1339
1342
  }),
1340
- /* @__PURE__ */ A(nn, {
1343
+ /* @__PURE__ */ A(rn, {
1341
1344
  isLastMessage: o,
1342
1345
  isStreaming: a,
1343
1346
  message: s,
@@ -1347,17 +1350,17 @@ function rn({ agentName: e, isMobile: i, isStreaming: a, isLastMessage: o, messa
1347
1350
  ]
1348
1351
  });
1349
1352
  }
1350
- function an({ agentName: e, isMobile: t, isStreaming: n, activity: r, contextIndicator: i, messages: a, onDeleteFeedback: o, onOpenAttachmentPreview: s, onRespondToApproval: c, onSubmitFeedback: l, onStopGeneration: u, onCancelRemote: d, checkpoints: f = [], onResumeCheckpoint: p, scrollRef: m }) {
1353
+ function on({ agentName: e, isMobile: t, isStreaming: n, activity: r, contextIndicator: i, messages: a, onDeleteFeedback: o, onOpenAttachmentPreview: s, onRespondToApproval: c, onSubmitFeedback: l, onStopGeneration: u, onCancelRemote: d, checkpoints: f = [], onResumeCheckpoint: p, scrollRef: m }) {
1351
1354
  return /* @__PURE__ */ j("div", {
1352
1355
  ref: m,
1353
1356
  className: J("custom-scrollbar relative min-h-0 flex-1 overflow-y-auto scroll-smooth", t ? "px-3 py-3" : "px-4 py-5"),
1354
1357
  children: [/* @__PURE__ */ j("div", {
1355
1358
  className: J("mx-auto flex w-full max-w-[64rem] flex-col", r ? "pb-10 sm:pb-10" : "pb-6 sm:pb-8"),
1356
- children: [/* @__PURE__ */ A(Qt, {
1359
+ children: [/* @__PURE__ */ A($t, {
1357
1360
  checkpoints: f,
1358
1361
  isStreaming: n,
1359
1362
  onResumeCheckpoint: p
1360
- }), a.length === 0 ? /* @__PURE__ */ A(Kt, { agentName: e }) : a.map((r, i) => r.role === "system" ? /* @__PURE__ */ A(en, { message: r }, r.id || i) : /* @__PURE__ */ A(rn, {
1363
+ }), a.length === 0 ? /* @__PURE__ */ A(qt, { agentName: e }) : a.map((r, i) => r.role === "system" ? /* @__PURE__ */ A(tn, { message: r }, r.id || i) : /* @__PURE__ */ A(an, {
1361
1364
  agentName: e,
1362
1365
  isMobile: t,
1363
1366
  isStreaming: n,
@@ -1370,7 +1373,7 @@ function an({ agentName: e, isMobile: t, isStreaming: n, activity: r, contextInd
1370
1373
  }, r.id || i))]
1371
1374
  }), r ? /* @__PURE__ */ A("div", {
1372
1375
  className: "sticky bottom-1 z-20 mx-auto flex w-full max-w-[64rem] justify-end",
1373
- children: /* @__PURE__ */ A(Gt, {
1376
+ children: /* @__PURE__ */ A(Kt, {
1374
1377
  activity: r,
1375
1378
  contextIndicator: i,
1376
1379
  onStopGeneration: u,
@@ -1381,13 +1384,13 @@ function an({ agentName: e, isMobile: t, isStreaming: n, activity: r, contextInd
1381
1384
  }
1382
1385
  //#endregion
1383
1386
  //#region src/utils/session-list.js
1384
- var on = new Set([
1387
+ var sn = new Set([
1385
1388
  "in_progress",
1386
1389
  "running",
1387
1390
  "queued",
1388
1391
  "pending"
1389
- ]), sn = 300 * 1e3;
1390
- function cn(e) {
1392
+ ]), cn = 300 * 1e3;
1393
+ function ln(e) {
1391
1394
  let t = e?.UpdatedAt ?? e?.updated_at;
1392
1395
  if (typeof t == "string") {
1393
1396
  let e = Date.parse(t);
@@ -1395,10 +1398,10 @@ function cn(e) {
1395
1398
  }
1396
1399
  return typeof t == "number" && Number.isFinite(t) ? t : 0;
1397
1400
  }
1398
- function ln(e) {
1401
+ function un(e) {
1399
1402
  return String(e || "").trim().toLowerCase();
1400
1403
  }
1401
- function un(e) {
1404
+ function dn(e) {
1402
1405
  if (!e) return "";
1403
1406
  let t = typeof e == "number" ? new Date(e > 1e11 ? e : e * 1e3) : new Date(e);
1404
1407
  return Number.isNaN(t.getTime()) ? "" : t.toLocaleString("zh-CN", {
@@ -1410,7 +1413,7 @@ function un(e) {
1410
1413
  hour12: !1
1411
1414
  });
1412
1415
  }
1413
- function dn(e) {
1416
+ function fn(e) {
1414
1417
  return [
1415
1418
  e?.Title,
1416
1419
  e?.Summary,
@@ -1419,33 +1422,33 @@ function dn(e) {
1419
1422
  e?.SessionId,
1420
1423
  e?.Model?.display_name,
1421
1424
  e?.Model?.id
1422
- ].map(ln).join(" ");
1425
+ ].map(un).join(" ");
1423
1426
  }
1424
- function fn(e, t = {}) {
1425
- if (!on.has(ln(e?.ActiveRunStatus))) return !1;
1426
- let n = cn(e);
1427
+ function pn(e, t = {}) {
1428
+ if (!sn.has(un(e?.ActiveRunStatus))) return !1;
1429
+ let n = ln(e);
1427
1430
  if (!n) return !0;
1428
- let r = Number.isFinite(Number(t.now)) ? Number(t.now) : Date.now(), i = Number.isFinite(Number(t.activeStaleAfterMs)) ? Number(t.activeStaleAfterMs) : sn;
1431
+ let r = Number.isFinite(Number(t.now)) ? Number(t.now) : Date.now(), i = Number.isFinite(Number(t.activeStaleAfterMs)) ? Number(t.activeStaleAfterMs) : cn;
1429
1432
  return r - n <= i;
1430
1433
  }
1431
- function pn(e = [], t = "", n = {}) {
1432
- let r = ln(t);
1433
- return (Array.isArray(e) ? e : []).filter((e) => e?.SessionId).filter((e) => !r || dn(e).includes(r)).slice().sort((e, t) => {
1434
- let r = +!!fn(e, n), i = +!!fn(t, n);
1435
- return r === i ? cn(t) - cn(e) : i - r;
1434
+ function mn(e = [], t = "", n = {}) {
1435
+ let r = un(t);
1436
+ return (Array.isArray(e) ? e : []).filter((e) => e?.SessionId).filter((e) => !r || fn(e).includes(r)).slice().sort((e, t) => {
1437
+ let r = +!!pn(e, n), i = +!!pn(t, n);
1438
+ return r === i ? ln(t) - ln(e) : i - r;
1436
1439
  });
1437
1440
  }
1438
- function mn(e, t = {}) {
1439
- let n = fn(e, t);
1441
+ function hn(e, t = {}) {
1442
+ let n = pn(e, t);
1440
1443
  return {
1441
1444
  running: n,
1442
- label: n ? "" : un(e?.UpdatedAt ?? e?.updated_at)
1445
+ label: n ? "" : dn(e?.UpdatedAt ?? e?.updated_at)
1443
1446
  };
1444
1447
  }
1445
1448
  //#endregion
1446
1449
  //#region src/components/chat/ChatSidebar.tsx
1447
- function hn({ sessions: e, currentSessionId: t, onCreateNewSession: n, onSelectSession: r, onDeleteSession: i, sessionTitle: a, className: o }) {
1448
- let [s, c] = z(""), l = fe(() => pn(e, s), [e, s]);
1450
+ function gn({ sessions: e, currentSessionId: t, onCreateNewSession: n, onSelectSession: r, onDeleteSession: i, sessionTitle: a, className: o }) {
1451
+ let [s, c] = z(""), l = fe(() => mn(e, s), [e, s]);
1449
1452
  return /* @__PURE__ */ j("div", {
1450
1453
  className: J("flex h-full min-h-0 flex-col bg-slate-50 dark:bg-slate-950/80", o),
1451
1454
  children: [
@@ -1480,7 +1483,7 @@ function hn({ sessions: e, currentSessionId: t, onCreateNewSession: n, onSelectS
1480
1483
  }), /* @__PURE__ */ A("div", {
1481
1484
  className: "flex flex-col gap-1.5",
1482
1485
  children: l.length > 0 ? l.map((e) => {
1483
- let n = mn(e);
1486
+ let n = hn(e);
1484
1487
  return /* @__PURE__ */ j("div", {
1485
1488
  role: "button",
1486
1489
  tabIndex: 0,
@@ -1535,8 +1538,8 @@ function hn({ sessions: e, currentSessionId: t, onCreateNewSession: n, onSelectS
1535
1538
  }
1536
1539
  //#endregion
1537
1540
  //#region src/components/native/NativeRuntimeLauncher.tsx
1538
- var gn = F(() => import("./NativeTerminalPanel-q4ECX8EX.js").then((e) => e.n).then((e) => ({ default: e.NativeTerminalPanel })));
1539
- function _n({ productLabel: e = "原生运行时", nativeManagementLink: t, nativeTerminal: n, workspaceEnabled: r, onOpenWorkspace: i }) {
1541
+ var _n = F(() => import("./NativeTerminalPanel-BctkNn1k.js").then((e) => e.n).then((e) => ({ default: e.NativeTerminalPanel })));
1542
+ function vn({ productLabel: e = "原生运行时", nativeManagementLink: t, nativeTerminal: n, workspaceEnabled: r, onOpenWorkspace: i }) {
1540
1543
  let a = !!n?.Enabled, [o, c] = z(!1);
1541
1544
  return /* @__PURE__ */ j("section", {
1542
1545
  className: "flex min-h-0 flex-1 overflow-y-auto bg-[radial-gradient(circle_at_top_left,rgba(14,165,233,0.12),transparent_34%),linear-gradient(135deg,#f8fafc_0%,#ffffff_48%,#f1f5f9_100%)] px-4 py-8 dark:bg-[radial-gradient(circle_at_top_left,rgba(14,165,233,0.16),transparent_34%),linear-gradient(135deg,#020617_0%,#0f172a_52%,#111827_100%)] sm:px-8",
@@ -1656,7 +1659,7 @@ function _n({ productLabel: e = "原生运行时", nativeManagementLink: t, nati
1656
1659
  })
1657
1660
  }), n && o ? /* @__PURE__ */ A(P, {
1658
1661
  fallback: null,
1659
- children: /* @__PURE__ */ A(gn, {
1662
+ children: /* @__PURE__ */ A(_n, {
1660
1663
  capability: n,
1661
1664
  open: o,
1662
1665
  onClose: () => c(!1)
@@ -1666,10 +1669,10 @@ function _n({ productLabel: e = "原生运行时", nativeManagementLink: t, nati
1666
1669
  }
1667
1670
  //#endregion
1668
1671
  //#region src/stores/ui.ts
1669
- function vn(e, t) {
1672
+ function yn(e, t) {
1670
1673
  return typeof t == "function" ? t(e) : t;
1671
1674
  }
1672
- var yn = U()((e) => ({
1675
+ var bn = U()((e) => ({
1673
1676
  sidebarOpen: !0,
1674
1677
  mobileSidebarOpen: !1,
1675
1678
  mobileActionsOpen: !1,
@@ -1692,10 +1695,10 @@ var yn = U()((e) => ({
1692
1695
  setWorkspacePanelWidth: (t) => e({ workspacePanelWidth: t }),
1693
1696
  setWorkspacePanelFullscreen: (t) => e({ workspacePanelFullscreen: t }),
1694
1697
  setInput: (t) => e({ input: t }),
1695
- setAttachments: (t) => e((e) => ({ attachments: vn(e.attachments, t) })),
1698
+ setAttachments: (t) => e((e) => ({ attachments: yn(e.attachments, t) })),
1696
1699
  setPreviewAttachment: (t) => e({ previewAttachment: t }),
1697
1700
  setPreviewImageSize: (t) => e({ previewImageSize: t }),
1698
- setQueuedDrafts: (t) => e((e) => ({ queuedDrafts: vn(e.queuedDrafts, t) })),
1701
+ setQueuedDrafts: (t) => e((e) => ({ queuedDrafts: yn(e.queuedDrafts, t) })),
1699
1702
  pushToast: (t, n = "info") => e((e) => ({ toasts: [...e.toasts, {
1700
1703
  id: String(Date.now() + Math.random()),
1701
1704
  message: t,
@@ -1706,11 +1709,11 @@ var yn = U()((e) => ({
1706
1709
  }));
1707
1710
  //#endregion
1708
1711
  //#region src/components/workspace/FileEditor.tsx
1709
- function bn(e) {
1712
+ function xn(e) {
1710
1713
  let t = String(e || "").split("/").pop() || "", n = t.lastIndexOf(".");
1711
1714
  return n >= 0 ? t.slice(n) : "";
1712
1715
  }
1713
- function xn(e) {
1716
+ function Sn(e) {
1714
1717
  return Te.matchFilename(ze, `file${e}`);
1715
1718
  }
1716
1719
  function Q({ content: e, path: t, readOnly: n = !1, onSave: r, onDirtyChange: i, onContentChange: a, getContentRef: o }) {
@@ -1779,7 +1782,7 @@ function Q({ content: e, path: t, readOnly: n = !1, onSave: r, onDirtyChange: i,
1779
1782
  parent: s.current
1780
1783
  });
1781
1784
  c.current = a, o && (o.current = () => a.state.doc.toString());
1782
- let f = xn(bn(t));
1785
+ let f = Sn(xn(t));
1783
1786
  return f && f.load().then((e) => {
1784
1787
  c.current && c.current.dispatch({ effects: l.current.reconfigure(e) });
1785
1788
  }).catch(() => {}), () => {
@@ -1797,7 +1800,7 @@ function Q({ content: e, path: t, readOnly: n = !1, onSave: r, onDirtyChange: i,
1797
1800
  }, [e, g]), L(() => {
1798
1801
  let e = c.current;
1799
1802
  if (!e) return;
1800
- let n = xn(bn(t));
1803
+ let n = Sn(xn(t));
1801
1804
  n ? n.load().then((e) => {
1802
1805
  c.current && c.current.dispatch({ effects: l.current.reconfigure(e) });
1803
1806
  }).catch(() => {}) : e.dispatch({ effects: l.current.reconfigure([]) });
@@ -1822,7 +1825,7 @@ function Q({ content: e, path: t, readOnly: n = !1, onSave: r, onDirtyChange: i,
1822
1825
  }
1823
1826
  //#endregion
1824
1827
  //#region src/components/workspace/FilePreview.tsx
1825
- function Sn({ content: e, objectUrl: t, kind: n, filename: r, path: i }) {
1828
+ function Cn({ content: e, objectUrl: t, kind: n, filename: r, path: i }) {
1826
1829
  return n === "markdown" ? /* @__PURE__ */ A(X, { content: e || "" }) : n === "image" && t ? /* @__PURE__ */ A("div", {
1827
1830
  className: "flex items-center justify-center p-4",
1828
1831
  children: /* @__PURE__ */ A("img", {
@@ -1851,10 +1854,10 @@ function Sn({ content: e, objectUrl: t, kind: n, filename: r, path: i }) {
1851
1854
  }
1852
1855
  //#endregion
1853
1856
  //#region src/utils/sandbox.ts
1854
- function Cn(e) {
1857
+ function wn(e) {
1855
1858
  return e.replace(/&/g, "&amp;").replace(/"/g, "&quot;").replace(/</g, "&lt;").replace(/>/g, "&gt;");
1856
1859
  }
1857
- function wn(e) {
1860
+ function Tn(e) {
1858
1861
  let t = e.endsWith("/") ? e : `${e}/`;
1859
1862
  if (typeof window > "u") return "'self'";
1860
1863
  try {
@@ -1863,11 +1866,11 @@ function wn(e) {
1863
1866
  return "'self'";
1864
1867
  }
1865
1868
  }
1866
- function Tn(...e) {
1869
+ function En(...e) {
1867
1870
  return Array.from(new Set(e.filter((e) => !!e))).join(" ");
1868
1871
  }
1869
- function En(e) {
1870
- let t = e ? wn(e) : void 0, n = Tn("'unsafe-inline'", "'unsafe-eval'", "'self'", "https:", t), r = Tn("'self'", "https:", t);
1872
+ function Dn(e) {
1873
+ let t = e ? Tn(e) : void 0, n = En("'unsafe-inline'", "'unsafe-eval'", "'self'", "https:", t), r = En("'self'", "https:", t);
1871
1874
  return [
1872
1875
  "default-src 'none'",
1873
1876
  `script-src ${n}`,
@@ -1881,7 +1884,7 @@ function En(e) {
1881
1884
  "base-uri 'self'"
1882
1885
  ].join("; ");
1883
1886
  }
1884
- function Dn(e) {
1887
+ function On(e) {
1885
1888
  try {
1886
1889
  let t = new URL(e, window.location.href);
1887
1890
  return [
@@ -1893,8 +1896,8 @@ function Dn(e) {
1893
1896
  return !1;
1894
1897
  }
1895
1898
  }
1896
- function On(e, t = {}) {
1897
- let { channelId: n, basePath: r } = typeof t == "string" ? { channelId: t } : t, i = En(r), a = `<script>
1899
+ function kn(e, t = {}) {
1900
+ let { channelId: n, basePath: r } = typeof t == "string" ? { channelId: t } : t, i = Dn(r), a = `<script>
1898
1901
  function ksadkScrollToHash(rawHref) {
1899
1902
  if (!rawHref || rawHref === '#') return;
1900
1903
  var rawId = rawHref.slice(1);
@@ -1926,24 +1929,24 @@ document.addEventListener('click', function(event) {
1926
1929
  }, '*');
1927
1930
  }
1928
1931
  }, true);
1929
- <\/script>`, o = `${`<meta http-equiv="Content-Security-Policy" content="${Cn(i)}">`}${r ? `<base href="${Cn(r)}">` : ""}${a}`;
1932
+ <\/script>`, o = `${`<meta http-equiv="Content-Security-Policy" content="${wn(i)}">`}${r ? `<base href="${wn(r)}">` : ""}${a}`;
1930
1933
  return /<head[^>]*>/i.test(e) ? e.replace(/<head[^>]*>/i, `$&${o}`) : `${o}${e}`;
1931
1934
  }
1932
- function kn(e, t) {
1935
+ function An(e, t) {
1933
1936
  let n = R(null);
1934
1937
  L(() => (n.current = (n) => {
1935
1938
  if (n.source !== e.current?.contentWindow || n.data?.type !== "ksadk:linkClick" || t && n.data?.channelId !== t) return;
1936
1939
  let r = n.data?.href;
1937
- typeof r == "string" && r && Dn(r) && window.open(r, "_blank", "noopener,noreferrer");
1940
+ typeof r == "string" && r && On(r) && window.open(r, "_blank", "noopener,noreferrer");
1938
1941
  }, window.addEventListener("message", n.current), () => {
1939
1942
  n.current && window.removeEventListener("message", n.current);
1940
1943
  }), [e, t]);
1941
1944
  }
1942
- var An = "/_ksadk/workspace/v1/files", jn = new Set([
1945
+ var jn = "/_ksadk/workspace/v1/files", Mn = new Set([
1943
1946
  ".md",
1944
1947
  ".markdown",
1945
1948
  ".mdx"
1946
- ]), Mn = new Set([".pdf"]), Nn = new Set([
1949
+ ]), Nn = new Set([".pdf"]), Pn = new Set([
1947
1950
  ".png",
1948
1951
  ".jpg",
1949
1952
  ".jpeg",
@@ -1952,7 +1955,7 @@ var An = "/_ksadk/workspace/v1/files", jn = new Set([
1952
1955
  ".svg",
1953
1956
  ".bmp",
1954
1957
  ".ico"
1955
- ]), Pn = new Set(/* @__PURE__ */ ".txt,.log,.json,.yaml,.yml,.xml,.html,.css,.js,.jsx,.ts,.tsx,.py,.sh,.sql,.csv,.tsv,.toml,.ini,.env,.lock,.conf,.c,.cc,.cpp,.go,.java,.rs".split(",")), Fn = new Set([
1958
+ ]), Fn = new Set(/* @__PURE__ */ ".txt,.log,.json,.yaml,.yml,.xml,.html,.css,.js,.jsx,.ts,.tsx,.py,.sh,.sql,.csv,.tsv,.toml,.ini,.env,.lock,.conf,.c,.cc,.cpp,.go,.java,.rs".split(",")), In = new Set([
1956
1959
  "application/json",
1957
1960
  "application/ld+json",
1958
1961
  "application/xml",
@@ -1981,40 +1984,40 @@ function $(e) {
1981
1984
  }
1982
1985
  return n.length > 0 ? n.join("/") : ".";
1983
1986
  }
1984
- function In(e) {
1987
+ function Ln(e) {
1985
1988
  let t = $(e);
1986
1989
  return t === "." ? "" : t.split("/").filter(Boolean).map((e) => encodeURIComponent(e)).join("/");
1987
1990
  }
1988
- function Ln(e) {
1989
- let t = In(e);
1990
- return t ? `${An}/${t}` : An;
1991
- }
1992
1991
  function Rn(e) {
1993
- let t = $(e);
1994
- if (t === "." || !t.includes("/")) return `${An}/`;
1995
- let n = In(t.substring(0, t.lastIndexOf("/")));
1996
- return n ? `${An}/${n}/` : `${An}/`;
1992
+ let t = Ln(e);
1993
+ return t ? `${jn}/${t}` : jn;
1997
1994
  }
1998
1995
  function zn(e) {
1999
- return $(e) === ".";
1996
+ let t = $(e);
1997
+ if (t === "." || !t.includes("/")) return `${jn}/`;
1998
+ let n = Ln(t.substring(0, t.lastIndexOf("/")));
1999
+ return n ? `${jn}/${n}/` : `${jn}/`;
2000
2000
  }
2001
2001
  function Bn(e) {
2002
+ return $(e) === ".";
2003
+ }
2004
+ function Vn(e) {
2002
2005
  let t = $(e);
2003
2006
  return t === "." ? "/" : `/${t}`;
2004
2007
  }
2005
- function Vn(e) {
2008
+ function Hn(e) {
2006
2009
  let t = String(e || "").split("/").pop() || "", n = t.lastIndexOf(".");
2007
2010
  return n >= 0 ? t.slice(n).toLowerCase() : "";
2008
2011
  }
2009
- function Hn(e) {
2012
+ function Un(e) {
2010
2013
  return String(e || "").split(";")[0].trim().toLowerCase();
2011
2014
  }
2012
- var Un = new Set([".html", ".htm"]);
2013
- function Wn({ path: e, mimeType: t }) {
2014
- let n = Vn(e), r = Hn(t);
2015
- return r === "text/html" || Un.has(n) ? "html" : r === "text/markdown" || jn.has(n) ? "markdown" : r === "application/pdf" || Mn.has(n) ? "pdf" : r.startsWith("image/") || Nn.has(n) ? "image" : r.startsWith("text/") || Fn.has(r) || Pn.has(n) ? "text" : "unsupported";
2015
+ var Wn = new Set([".html", ".htm"]);
2016
+ function Gn({ path: e, mimeType: t }) {
2017
+ let n = Hn(e), r = Un(t);
2018
+ return r === "text/html" || Wn.has(n) ? "html" : r === "text/markdown" || Mn.has(n) ? "markdown" : r === "application/pdf" || Nn.has(n) ? "pdf" : r.startsWith("image/") || Pn.has(n) ? "image" : r.startsWith("text/") || In.has(r) || Fn.has(n) ? "text" : "unsupported";
2016
2019
  }
2017
- var Gn = new Set([
2020
+ var Kn = new Set([
2018
2021
  ".txt",
2019
2022
  ".log",
2020
2023
  ".csv",
@@ -2024,11 +2027,11 @@ var Gn = new Set([
2024
2027
  ".conf",
2025
2028
  ".lock"
2026
2029
  ]);
2027
- function Kn({ path: e, mimeType: t }) {
2028
- let n = Vn(e), r = Hn(t);
2029
- return Un.has(n) || r === "text/html" ? "html" : r === "text/markdown" || jn.has(n) ? "markdown" : r === "application/pdf" || Mn.has(n) || r.startsWith("image/") || Nn.has(n) ? null : Gn.has(n) || r === "text/plain" ? "text" : r.startsWith("text/") || Fn.has(r) || Pn.has(n) ? "code" : null;
2030
+ function qn({ path: e, mimeType: t }) {
2031
+ let n = Hn(e), r = Un(t);
2032
+ return Wn.has(n) || r === "text/html" ? "html" : r === "text/markdown" || Mn.has(n) ? "markdown" : r === "application/pdf" || Nn.has(n) || r.startsWith("image/") || Pn.has(n) ? null : Kn.has(n) || r === "text/plain" ? "text" : r.startsWith("text/") || In.has(r) || Fn.has(n) ? "code" : null;
2030
2033
  }
2031
- function qn({ isMobile: e }) {
2034
+ function Jn({ isMobile: e }) {
2032
2035
  return e ? {
2033
2036
  renderMode: "sheet",
2034
2037
  modal: !0,
@@ -2043,7 +2046,7 @@ function qn({ isMobile: e }) {
2043
2046
  side: "right"
2044
2047
  };
2045
2048
  }
2046
- function Jn() {
2049
+ function Yn() {
2047
2050
  let e = 0;
2048
2051
  return {
2049
2052
  next(t) {
@@ -2060,15 +2063,15 @@ function Jn() {
2060
2063
  }
2061
2064
  };
2062
2065
  }
2063
- function Yn({ workspaceFiles: e, accessMode: t }) {
2066
+ function Xn({ workspaceFiles: e, accessMode: t }) {
2064
2067
  if (!e?.Enabled) return !1;
2065
2068
  let n = String(t || "").trim().toLowerCase();
2066
2069
  return n === "owner" || n === "private";
2067
2070
  }
2068
2071
  //#endregion
2069
2072
  //#region src/components/workspace/HtmlPreview.tsx
2070
- function Xn({ content: e, path: t, onSave: n, onDirtyChange: r, getContentRef: a, isMobile: o }) {
2071
- let l = R(null), u = de(), [d, f] = z("preview"), p = Rn(t), m = Ln(t), h = I(() => On(e, {
2073
+ function Zn({ content: e, path: t, onSave: n, onDirtyChange: r, getContentRef: a, isMobile: o }) {
2074
+ let l = R(null), u = de(), [d, f] = z("preview"), p = zn(t), m = Rn(t), h = I(() => kn(e, {
2072
2075
  basePath: p,
2073
2076
  channelId: u
2074
2077
  }), [
@@ -2081,7 +2084,7 @@ function Xn({ content: e, path: t, onSave: n, onDirtyChange: r, getContentRef: a
2081
2084
  ee(h());
2082
2085
  }, 300);
2083
2086
  return () => clearTimeout(e);
2084
- }, [h]), kn(l, u);
2087
+ }, [h]), An(l, u);
2085
2088
  let _ = I(() => {
2086
2089
  let e = new Blob([g], { type: "text/html;charset=utf-8" }), t = URL.createObjectURL(e), n = window.open(t, "_blank", "noopener,noreferrer");
2087
2090
  window.setTimeout(() => URL.revokeObjectURL(t), 3e4), n || window.open(m, "_blank", "noopener,noreferrer");
@@ -2150,12 +2153,12 @@ function Xn({ content: e, path: t, onSave: n, onDirtyChange: r, getContentRef: a
2150
2153
  }
2151
2154
  //#endregion
2152
2155
  //#region src/components/workspace/MarkdownPreview.tsx
2153
- function Zn(e) {
2156
+ function Qn(e) {
2154
2157
  e.current && clearTimeout(e.current);
2155
2158
  }
2156
- function Qn({ content: e, path: t, onSave: n, onDirtyChange: r, getContentRef: a, isMobile: o }) {
2159
+ function $n({ content: e, path: t, onSave: n, onDirtyChange: r, getContentRef: a, isMobile: o }) {
2157
2160
  let [s, l] = z("editor"), [u, d] = z(e), f = R(null);
2158
- return L(() => (Zn(f), f.current = setTimeout(() => d(e), 300), () => Zn(f)), [e]), o ? /* @__PURE__ */ j("div", {
2161
+ return L(() => (Qn(f), f.current = setTimeout(() => d(e), 300), () => Qn(f)), [e]), o ? /* @__PURE__ */ j("div", {
2159
2162
  className: "flex h-full flex-col",
2160
2163
  children: [/* @__PURE__ */ j("div", {
2161
2164
  className: "flex items-center gap-1 border-b border-slate-200/30 px-2 py-1.5 dark:border-slate-700/30",
@@ -2205,23 +2208,23 @@ function Qn({ content: e, path: t, onSave: n, onDirtyChange: r, getContentRef: a
2205
2208
  }
2206
2209
  //#endregion
2207
2210
  //#region src/components/workspace/WorkspacePanel.tsx
2208
- var $n = "/agentengine/api/v1/GetWorkspaceFileContent", er = 4e3;
2209
- function tr(e) {
2211
+ var er = "/agentengine/api/v1/GetWorkspaceFileContent", tr = 4e3;
2212
+ function nr(e) {
2210
2213
  let t = $(e);
2211
2214
  if (!t || t === ".") return ".";
2212
2215
  let n = t.split("/").filter(Boolean);
2213
2216
  return n.length <= 1 ? "." : n.slice(0, -1).join("/");
2214
2217
  }
2215
- function nr(e) {
2218
+ function rr(e) {
2216
2219
  if (!e) return "";
2217
2220
  let t = Date.parse(e);
2218
2221
  return Number.isNaN(t) ? e : new Date(t).toLocaleString();
2219
2222
  }
2220
- function rr(e) {
2223
+ function ir(e) {
2221
2224
  let t = Number(e);
2222
2225
  return !Number.isFinite(t) || t <= 0 ? "0 B" : t < 1024 ? `${t} B` : t < 1024 * 1024 ? `${(t / 1024).toFixed(1)} KB` : t < 1024 * 1024 * 1024 ? `${(t / (1024 * 1024)).toFixed(1)} MB` : `${(t / (1024 * 1024 * 1024)).toFixed(1)} GB`;
2223
2226
  }
2224
- var ir = [
2227
+ var ar = [
2225
2228
  {
2226
2229
  label: "Markdown",
2227
2230
  detail: ".md .markdown .mdx"
@@ -2243,10 +2246,10 @@ var ir = [
2243
2246
  detail: "CSV TSV"
2244
2247
  }
2245
2248
  ];
2246
- function ar(e) {
2247
- return Ln(e);
2249
+ function or(e) {
2250
+ return Rn(e);
2248
2251
  }
2249
- function or({ label: e, showSupportedTypes: t = !1 }) {
2252
+ function sr({ label: e, showSupportedTypes: t = !1 }) {
2250
2253
  return /* @__PURE__ */ A("div", {
2251
2254
  className: "flex h-full min-h-[16rem] flex-col items-center justify-center px-6 text-center",
2252
2255
  children: /* @__PURE__ */ j("div", {
@@ -2260,7 +2263,7 @@ function or({ label: e, showSupportedTypes: t = !1 }) {
2260
2263
  }),
2261
2264
  /* @__PURE__ */ A("div", {
2262
2265
  className: "mt-2 grid gap-2",
2263
- children: ir.map((e) => /* @__PURE__ */ j("div", {
2266
+ children: ar.map((e) => /* @__PURE__ */ j("div", {
2264
2267
  className: "rounded-xl border border-slate-200 bg-white px-3 py-2 dark:border-slate-800 dark:bg-slate-950",
2265
2268
  children: [/* @__PURE__ */ A("div", {
2266
2269
  className: "text-sm font-medium text-slate-700 dark:text-slate-200",
@@ -2280,11 +2283,11 @@ function or({ label: e, showSupportedTypes: t = !1 }) {
2280
2283
  })
2281
2284
  });
2282
2285
  }
2283
- function sr({ agentId: t, capability: n, open: r, onClose: i, isFullscreen: a = !1, onToggleFullscreen: s, isMobile: c = !1, api: m }) {
2284
- let g = R(null), _ = R(null), [y, te] = z(!1), [b, ne] = z("."), [x, ie] = z([]), [C, w] = z(!1), [T, E] = z(!1), [ae, oe] = z(!1), [ue, D] = z(""), [O, k] = z(null), [M, N] = z(null), [P, F] = z(!1), [de, B] = z(!1), pe = R(null), V = R(null), H = R("selection"), U = R(Jn()), W = fe(() => x.find((e) => e.Path === O) ?? null, [x, O]), G = fe(() => W ? Kn({
2286
+ function cr({ agentId: t, capability: n, open: r, onClose: i, isFullscreen: a = !1, onToggleFullscreen: s, isMobile: c = !1, api: m }) {
2287
+ let g = R(null), _ = R(null), [y, te] = z(!1), [b, ne] = z("."), [x, ie] = z([]), [C, w] = z(!1), [T, E] = z(!1), [ae, oe] = z(!1), [ue, D] = z(""), [O, k] = z(null), [M, N] = z(null), [P, F] = z(!1), [de, B] = z(!1), pe = R(null), V = R(null), H = R("selection"), U = R(Yn()), W = fe(() => x.find((e) => e.Path === O) ?? null, [x, O]), G = fe(() => W ? qn({
2285
2288
  path: W.Path,
2286
2289
  mimeType: W.MimeType
2287
- }) : null, [W]), me = I(() => P ? window.confirm("当前文件有未保存的更改,确定要离开吗?") : !0, [P]), he = n.ContentPath || $n, ge = n.RootLabel || "Workspace", _e = ge ? `${ge.charAt(0).toUpperCase()}${ge.slice(1)}` : "Workspace", ve = Bn(b), K = I(() => {
2290
+ }) : null, [W]), me = I(() => P ? window.confirm("当前文件有未保存的更改,确定要离开吗?") : !0, [P]), he = n.ContentPath || er, ge = n.RootLabel || "Workspace", _e = ge ? `${ge.charAt(0).toUpperCase()}${ge.slice(1)}` : "Workspace", ve = Vn(b), K = I(() => {
2288
2291
  _.current &&= (URL.revokeObjectURL(_.current), null);
2289
2292
  }, []);
2290
2293
  L(() => () => K(), [K]);
@@ -2316,7 +2319,7 @@ function sr({ agentId: t, capability: n, open: r, onClose: i, isFullscreen: a =
2316
2319
  if (!r || P || !y) return;
2317
2320
  let e = window.setInterval(() => {
2318
2321
  q(b, { background: !0 });
2319
- }, er);
2322
+ }, tr);
2320
2323
  return () => window.clearInterval(e);
2321
2324
  }, [
2322
2325
  b,
@@ -2326,7 +2329,7 @@ function sr({ agentId: t, capability: n, open: r, onClose: i, isFullscreen: a =
2326
2329
  r
2327
2330
  ]);
2328
2331
  let ye = I(async (e) => {
2329
- let n = U.current.next(e.Path), r = Wn({
2332
+ let n = U.current.next(e.Path), r = Gn({
2330
2333
  path: e.Path,
2331
2334
  mimeType: e.MimeType
2332
2335
  });
@@ -2349,7 +2352,7 @@ function sr({ agentId: t, capability: n, open: r, onClose: i, isFullscreen: a =
2349
2352
  let r = await m.getWorkspaceFileContent(t, e.Path, { asText: !1 });
2350
2353
  if (!U.current.isCurrent(n)) return;
2351
2354
  if (r instanceof Blob) {
2352
- let t = e.MimeType || "", i = Wn({
2355
+ let t = e.MimeType || "", i = Gn({
2353
2356
  path: e.Path,
2354
2357
  mimeType: t
2355
2358
  });
@@ -2366,7 +2369,7 @@ function sr({ agentId: t, capability: n, open: r, onClose: i, isFullscreen: a =
2366
2369
  }
2367
2370
  let a = await r.text();
2368
2371
  if (!U.current.isCurrent(n)) return;
2369
- let o = Wn({
2372
+ let o = Gn({
2370
2373
  path: e.Path,
2371
2374
  mimeType: t
2372
2375
  });
@@ -2378,7 +2381,7 @@ function sr({ agentId: t, capability: n, open: r, onClose: i, isFullscreen: a =
2378
2381
  content: a
2379
2382
  });
2380
2383
  } else {
2381
- let t = e.MimeType || "", n = Wn({
2384
+ let t = e.MimeType || "", n = Gn({
2382
2385
  path: e.Path,
2383
2386
  mimeType: t
2384
2387
  });
@@ -2426,7 +2429,7 @@ function sr({ agentId: t, capability: n, open: r, onClose: i, isFullscreen: a =
2426
2429
  try {
2427
2430
  for (let r of Array.from(e)) {
2428
2431
  if (r.size > n.MaxUploadBytes) throw Error(`文件 ${r.name} 超过上传上限`);
2429
- let e = zn(b) ? r.name : `${b}/${r.name}`, i = new FormData();
2432
+ let e = Bn(b) ? r.name : `${b}/${r.name}`, i = new FormData();
2430
2433
  i.append("file", r), i.append("AgentId", t), i.append("Path", e), await m.addWorkspaceFile(i);
2431
2434
  }
2432
2435
  await q(b);
@@ -2442,12 +2445,12 @@ function sr({ agentId: t, capability: n, open: r, onClose: i, isFullscreen: a =
2442
2445
  if (window.confirm(`删除 ${r} ?`)) {
2443
2446
  D("");
2444
2447
  try {
2445
- await m.deleteWorkspaceFile(t, r), O && $(O) === r && (k(null), F(!1)), await q(e.Type === "directory" && ($(b) === r || $(b).startsWith(`${r}/`)) ? tr(r) : b);
2448
+ await m.deleteWorkspaceFile(t, r), O && $(O) === r && (k(null), F(!1)), await q(e.Type === "directory" && ($(b) === r || $(b).startsWith(`${r}/`)) ? nr(r) : b);
2446
2449
  } catch (e) {
2447
2450
  console.error("Failed to delete workspace file:", e), D(e instanceof Error ? e.message : String(e));
2448
2451
  }
2449
2452
  }
2450
- }, Se = () => !W || W.Type !== "file" ? /* @__PURE__ */ A(or, {
2453
+ }, Se = () => !W || W.Type !== "file" ? /* @__PURE__ */ A(sr, {
2451
2454
  label: "从左侧选择文件后在这里查看内容预览。",
2452
2455
  showSupportedTypes: !0
2453
2456
  }) : !M || M.path !== W.Path || M.status === "loading" ? /* @__PURE__ */ A("div", {
@@ -2456,26 +2459,26 @@ function sr({ agentId: t, capability: n, open: r, onClose: i, isFullscreen: a =
2456
2459
  className: "inline-flex items-center gap-2 rounded-full border border-slate-200 bg-white px-4 py-2 text-sm text-slate-500 shadow-sm dark:border-slate-800 dark:bg-slate-900 dark:text-slate-400",
2457
2460
  children: [/* @__PURE__ */ A(p, { className: "h-4 w-4 animate-spin" }), "正在加载预览..."]
2458
2461
  })
2459
- }) : M.status === "error" ? /* @__PURE__ */ A(or, { label: M.error || "文件预览加载失败。" }) : M.kind === "markdown" ? /* @__PURE__ */ A(Qn, {
2462
+ }) : M.status === "error" ? /* @__PURE__ */ A(sr, { label: M.error || "文件预览加载失败。" }) : M.kind === "markdown" ? /* @__PURE__ */ A($n, {
2460
2463
  content: M.content || "",
2461
2464
  path: W.Path,
2462
2465
  onSave: Ce,
2463
2466
  onDirtyChange: F,
2464
2467
  getContentRef: pe,
2465
2468
  isMobile: c
2466
- }) : M.kind === "image" && M.objectUrl ? /* @__PURE__ */ A(Sn, {
2469
+ }) : M.kind === "image" && M.objectUrl ? /* @__PURE__ */ A(Cn, {
2467
2470
  content: null,
2468
2471
  objectUrl: M.objectUrl,
2469
2472
  kind: "image",
2470
2473
  filename: W.Name,
2471
2474
  mimeType: M.mimeType || ""
2472
- }) : M.kind === "pdf" && M.objectUrl ? /* @__PURE__ */ A(Sn, {
2475
+ }) : M.kind === "pdf" && M.objectUrl ? /* @__PURE__ */ A(Cn, {
2473
2476
  content: null,
2474
2477
  objectUrl: M.objectUrl,
2475
2478
  kind: "pdf",
2476
2479
  filename: W.Name,
2477
2480
  mimeType: M.mimeType || ""
2478
- }) : M.kind === "html" ? /* @__PURE__ */ A(Xn, {
2481
+ }) : M.kind === "html" ? /* @__PURE__ */ A(Zn, {
2479
2482
  content: M.content || "",
2480
2483
  path: W.Path,
2481
2484
  onSave: Ce,
@@ -2490,7 +2493,7 @@ function sr({ agentId: t, capability: n, open: r, onClose: i, isFullscreen: a =
2490
2493
  onSave: Ce,
2491
2494
  onDirtyChange: F,
2492
2495
  getContentRef: pe
2493
- }) : /* @__PURE__ */ A(Sn, {
2496
+ }) : /* @__PURE__ */ A(Cn, {
2494
2497
  content: null,
2495
2498
  kind: "unsupported",
2496
2499
  filename: W.Name,
@@ -2612,9 +2615,9 @@ function sr({ agentId: t, capability: n, open: r, onClose: i, isFullscreen: a =
2612
2615
  children: [/* @__PURE__ */ A("button", {
2613
2616
  type: "button",
2614
2617
  onClick: () => {
2615
- me() && q(tr(b));
2618
+ me() && q(nr(b));
2616
2619
  },
2617
- disabled: C || zn(b),
2620
+ disabled: C || Bn(b),
2618
2621
  className: "rounded-md p-1.5 text-slate-500 transition hover:bg-slate-100 disabled:cursor-not-allowed disabled:opacity-40 dark:text-slate-400 dark:hover:bg-slate-900",
2619
2622
  title: "返回上级目录",
2620
2623
  children: /* @__PURE__ */ A(e, { className: "h-4 w-4" })
@@ -2647,10 +2650,10 @@ function sr({ agentId: t, capability: n, open: r, onClose: i, isFullscreen: a =
2647
2650
  }) : /* @__PURE__ */ A("div", {
2648
2651
  className: "space-y-0.5",
2649
2652
  children: x.map((e) => {
2650
- let t = Wn({
2653
+ let t = Gn({
2651
2654
  path: e.Path,
2652
2655
  mimeType: e.MimeType
2653
- }), r = O === e.Path, i = e.Type === "file" ? ar(e.Path) : "";
2656
+ }), r = O === e.Path, i = e.Type === "file" ? or(e.Path) : "";
2654
2657
  return /* @__PURE__ */ j("div", {
2655
2658
  title: e.Path,
2656
2659
  className: J("group flex items-center gap-1 rounded-lg px-1.5 py-1 transition", r ? "bg-slate-100 text-slate-950 dark:bg-slate-800 dark:text-slate-50" : "text-slate-700 hover:bg-slate-50 dark:text-slate-300 dark:hover:bg-slate-900"),
@@ -2674,7 +2677,7 @@ function sr({ agentId: t, capability: n, open: r, onClose: i, isFullscreen: a =
2674
2677
  children: e.Name
2675
2678
  }), /* @__PURE__ */ A("div", {
2676
2679
  className: J("truncate text-[11px] leading-4", r ? "text-slate-500 dark:text-slate-400" : "text-slate-400"),
2677
- children: e.Type === "directory" ? "目录" : rr(e.SizeBytes)
2680
+ children: e.Type === "directory" ? "目录" : ir(e.SizeBytes)
2678
2681
  })]
2679
2682
  })]
2680
2683
  }), /* @__PURE__ */ j("div", {
@@ -2717,9 +2720,9 @@ function sr({ agentId: t, capability: n, open: r, onClose: i, isFullscreen: a =
2717
2720
  /* @__PURE__ */ j("div", {
2718
2721
  className: "mt-1 text-[11px] text-slate-400",
2719
2722
  children: [
2720
- rr(W.SizeBytes),
2723
+ ir(W.SizeBytes),
2721
2724
  W.MimeType ? ` · ${W.MimeType}` : "",
2722
- W.ModifiedAt ? ` · ${nr(W.ModifiedAt)}` : ""
2725
+ W.ModifiedAt ? ` · ${rr(W.ModifiedAt)}` : ""
2723
2726
  ]
2724
2727
  })
2725
2728
  ]
@@ -2753,7 +2756,7 @@ function sr({ agentId: t, capability: n, open: r, onClose: i, isFullscreen: a =
2753
2756
  }
2754
2757
  //#endregion
2755
2758
  //#region src/components/workspace/WorkspacePanelContainer.tsx
2756
- function cr({ agentId: e, capability: t, workspacePanelOpen: n, workspacePanelWidth: r, workspacePanelFullscreen: i, isMobile: a, workspaceEnabled: o, workspaceFiles: s, workspacePanelPresentation: c, closeWorkspacePanel: l, handleWorkspacePanelResizeStart: u, api: d }) {
2759
+ function lr({ agentId: e, capability: t, workspacePanelOpen: n, workspacePanelWidth: r, workspacePanelFullscreen: i, isMobile: a, workspaceEnabled: o, workspaceFiles: s, workspacePanelPresentation: c, closeWorkspacePanel: l, handleWorkspacePanelResizeStart: u, api: d }) {
2757
2760
  let f = c.renderMode === "inline", p = c.renderMode === "sheet";
2758
2761
  return !o || !s ? null : /* @__PURE__ */ j(k, { children: [f ? /* @__PURE__ */ j(k, { children: [n && !i ? /* @__PURE__ */ A("div", {
2759
2762
  role: "separator",
@@ -2764,20 +2767,20 @@ function cr({ agentId: e, capability: t, workspacePanelOpen: n, workspacePanelWi
2764
2767
  }) : null, /* @__PURE__ */ A("aside", {
2765
2768
  style: n && !i ? { width: `${r}px` } : void 0,
2766
2769
  className: J(i ? "fixed inset-0 z-40 flex h-[var(--app-height)] w-screen overflow-hidden bg-white dark:bg-slate-950" : "hidden h-full flex-shrink-0 overflow-hidden bg-white transition-[width] duration-200 ease-out dark:bg-slate-950 md:flex", n ? "border-l border-slate-200/30 dark:border-slate-800/40" : "w-0 border-l border-transparent"),
2767
- children: n ? /* @__PURE__ */ A(sr, {
2770
+ children: n ? /* @__PURE__ */ A(cr, {
2768
2771
  agentId: e,
2769
2772
  capability: t,
2770
2773
  open: n,
2771
2774
  onClose: l,
2772
2775
  isFullscreen: i,
2773
- onToggleFullscreen: () => yn.getState().setWorkspacePanelFullscreen(!i),
2776
+ onToggleFullscreen: () => bn.getState().setWorkspacePanelFullscreen(!i),
2774
2777
  isMobile: a,
2775
2778
  api: d
2776
2779
  }) : null
2777
2780
  })] }) : null, p ? /* @__PURE__ */ A(Ve, {
2778
2781
  open: n,
2779
2782
  onOpenChange: (e) => {
2780
- e || yn.getState().setWorkspacePanelFullscreen(!1), yn.getState().setWorkspacePanelOpen(e);
2783
+ e || bn.getState().setWorkspacePanelFullscreen(!1), bn.getState().setWorkspacePanelOpen(e);
2781
2784
  },
2782
2785
  modal: c.modal,
2783
2786
  children: /* @__PURE__ */ j(Ge, {
@@ -2797,7 +2800,7 @@ function cr({ agentId: e, capability: t, workspacePanelOpen: n, workspacePanelWi
2797
2800
  className: "sr-only",
2798
2801
  children: "浏览、上传和预览 Workspace 文件。"
2799
2802
  }),
2800
- /* @__PURE__ */ A(sr, {
2803
+ /* @__PURE__ */ A(cr, {
2801
2804
  agentId: e,
2802
2805
  capability: t,
2803
2806
  open: n,
@@ -2810,4 +2813,4 @@ function cr({ agentId: e, capability: t, workspacePanelOpen: n, workspacePanelWi
2810
2813
  }) : null] });
2811
2814
  }
2812
2815
  //#endregion
2813
- export { J as A, ut as C, Ye as D, Ge as E, Je as O, X as S, Ve as T, Tt as _, kn as a, wt as b, hn as c, Rt as d, It as f, xt as g, bt as h, On as i, Be as k, an as l, St as m, Yn as n, yn as o, Pt as p, qn as r, _n as s, cr as t, zt as u, Ct as v, Qe as w, yt as x, vt as y };
2816
+ export { J as A, ut as C, Ye as D, Ge as E, Je as O, X as S, Ve as T, Tt as _, An as a, wt as b, gn as c, zt as d, Lt as f, xt as g, bt as h, kn as i, Be as k, on as l, St as m, Xn as n, bn as o, Ft as p, Jn as r, vn as s, lr as t, Bt as u, Ct as v, Qe as w, yt as x, vt as y };