@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.
- package/CHANGELOG.md +19 -0
- package/README.md +14 -3
- package/dist-ksadk/assets/{ArtifactsPanel-CMS54WAp.js → ArtifactsPanel-SSyx1aCo.js} +1 -1
- package/dist-ksadk/assets/{CodeBlock-CHZaDmho.js → CodeBlock-YQ5vXzYH.js} +1 -1
- package/dist-ksadk/assets/{MathMessageMarkdown-Cx9VSNQ8.js → MathMessageMarkdown-CflwKEe7.js} +1 -1
- package/dist-ksadk/assets/{MermaidBlock-CV56XpfU.js → MermaidBlock-nbjqLbuu.js} +6 -6
- package/dist-ksadk/assets/{NativeTerminalPanel-BrbZygfC.js → NativeTerminalPanel-DxAh9H8z.js} +1 -1
- package/dist-ksadk/assets/{arc-D3eSpKQi.js → arc-QSfvB8Et.js} +1 -1
- package/dist-ksadk/assets/architecture-7EHR7CIX-C19PcYz-.js +1 -0
- package/dist-ksadk/assets/{architectureDiagram-3BPJPVTR-DLe5RfvU.js → architectureDiagram-3BPJPVTR-CILqFpDC.js} +1 -1
- package/dist-ksadk/assets/{blockDiagram-GPEHLZMM-jrFAO8Bq.js → blockDiagram-GPEHLZMM-DD53Zgkb.js} +1 -1
- package/dist-ksadk/assets/{c4Diagram-AAUBKEIU-BFwiG9fe.js → c4Diagram-AAUBKEIU-DjS3CJER.js} +1 -1
- package/dist-ksadk/assets/channel-eJj5zetk.js +1 -0
- package/dist-ksadk/assets/{chunk-2J33WTMH-5Qlobtnj.js → chunk-2J33WTMH-CBEtb1wr.js} +1 -1
- package/dist-ksadk/assets/{chunk-4BX2VUAB-ou66Tq9f.js → chunk-4BX2VUAB-CqF_-u4a.js} +1 -1
- package/dist-ksadk/assets/{chunk-55IACEB6-CDvMSeFu.js → chunk-55IACEB6-lR2vu_yR.js} +1 -1
- package/dist-ksadk/assets/{chunk-727SXJPM-t3ZfYPXH.js → chunk-727SXJPM-DvjC_wor.js} +1 -1
- package/dist-ksadk/assets/{chunk-AQP2D5EJ-CqPYcHtF.js → chunk-AQP2D5EJ-BVUaV9p1.js} +1 -1
- package/dist-ksadk/assets/{chunk-FMBD7UC4-C79rRamw.js → chunk-FMBD7UC4-Cc8_1XC_.js} +1 -1
- package/dist-ksadk/assets/{chunk-ND2GUHAM-EqP27pbM.js → chunk-ND2GUHAM-CAHh5eAF.js} +1 -1
- package/dist-ksadk/assets/chunk-QZHKN3VN-D4mip6Il.js +1 -0
- package/dist-ksadk/assets/classDiagram-4FO5ZUOK-33PbfFSW.js +1 -0
- package/dist-ksadk/assets/classDiagram-v2-Q7XG4LA2-33PbfFSW.js +1 -0
- package/dist-ksadk/assets/{cose-bilkent-S5V4N54A-QMqM6zta.js → cose-bilkent-S5V4N54A-CW6wiY80.js} +1 -1
- package/dist-ksadk/assets/{dagre-BM42HDAG-CEakrtKq.js → dagre-BM42HDAG-BH_tWldy.js} +1 -1
- package/dist-ksadk/assets/{diagram-2AECGRRQ-BxdbhhCX.js → diagram-2AECGRRQ-ljY0ga-3.js} +1 -1
- package/dist-ksadk/assets/{diagram-5GNKFQAL-DBpIlxtZ.js → diagram-5GNKFQAL-BjZ8yg4e.js} +1 -1
- package/dist-ksadk/assets/{diagram-KO2AKTUF-D4COO3HT.js → diagram-KO2AKTUF-D5-e50p6.js} +1 -1
- package/dist-ksadk/assets/{diagram-LMA3HP47-DBSZ6aUz.js → diagram-LMA3HP47-CIMbgA2R.js} +1 -1
- package/dist-ksadk/assets/{diagram-OG6HWLK6-CxLsy00E.js → diagram-OG6HWLK6-CHAv8n8N.js} +1 -1
- package/dist-ksadk/assets/{dist-DelwQd2b.js → dist-8fhwk8tR.js} +1 -1
- package/dist-ksadk/assets/{dist-BOHSAqwD.js → dist-B-8AvGwU.js} +1 -1
- package/dist-ksadk/assets/{dist-DqLb8QP7.js → dist-BFWeVh8Y.js} +1 -1
- package/dist-ksadk/assets/{dist-6WsdpRSO.js → dist-BQFXkYCL.js} +1 -1
- package/dist-ksadk/assets/{dist-CXnbkk51.js → dist-Bh8Jo1Hy.js} +1 -1
- package/dist-ksadk/assets/{dist-z5-DHNYg.js → dist-C-TuGFEP.js} +1 -1
- package/dist-ksadk/assets/{dist-Cxij5I4C.js → dist-CA7FMnEq.js} +1 -1
- package/dist-ksadk/assets/{dist-aq2knWnw.js → dist-CH8X1hMv.js} +1 -1
- package/dist-ksadk/assets/{dist-C4IRfjf3.js → dist-CPGAEeVO.js} +1 -1
- package/dist-ksadk/assets/{dist-O8eCswTX.js → dist-CSdL9G4U.js} +1 -1
- package/dist-ksadk/assets/{dist-DxJZpRF1.js → dist-CefsMd33.js} +1 -1
- package/dist-ksadk/assets/{dist-Cpz8Cm0v.js → dist-CjTwd1ba.js} +1 -1
- package/dist-ksadk/assets/{dist-DGm-pByN.js → dist-CwcMj9TX.js} +1 -1
- package/dist-ksadk/assets/{dist-CqCrM4le.js → dist-DHqMtxSi.js} +1 -1
- package/dist-ksadk/assets/{dist-CTCQXcX7.js → dist-DkE5j5qa.js} +1 -1
- package/dist-ksadk/assets/{dist-BWf6mC8G.js → dist-DplOU2XC.js} +1 -1
- package/dist-ksadk/assets/{dist-BEmeO2N2.js → dist-DxbIq1y9.js} +1 -1
- package/dist-ksadk/assets/{dist-JOlStfdO.js → dist-Gtm38p17.js} +1 -1
- package/dist-ksadk/assets/{dist-Cqzpy7oO.js → dist-YCkBmRQg.js} +1 -1
- package/dist-ksadk/assets/{dist-D_gCRUxt.js → dist-k2YXzXki.js} +1 -1
- package/dist-ksadk/assets/{dist-CJmvMGxs.js → dist-lBacVcOX.js} +1 -1
- package/dist-ksadk/assets/{dist-BeLlHcxS.js → dist-miJcQ_QT.js} +1 -1
- package/dist-ksadk/assets/{erDiagram-TEJ5UH35-CsjpG1Xb.js → erDiagram-TEJ5UH35-Buxp9SL_.js} +1 -1
- package/dist-ksadk/assets/eventmodeling-FCH6USID-DmbjPnMI.js +1 -0
- package/dist-ksadk/assets/{flowDiagram-I6XJVG4X-DZo3QdjC.js → flowDiagram-I6XJVG4X-CNQ7RUqk.js} +1 -1
- package/dist-ksadk/assets/{ganttDiagram-6RSMTGT7-BGeXMpCW.js → ganttDiagram-6RSMTGT7-BR4K2g25.js} +1 -1
- package/dist-ksadk/assets/gitGraph-WXDBUCRP-Bc_9dlTu.js +1 -0
- package/dist-ksadk/assets/{gitGraphDiagram-PVQCEYII-CEgx70IJ.js → gitGraphDiagram-PVQCEYII-D5xJeGM-.js} +1 -1
- package/dist-ksadk/assets/index-B6Jvzl61.js +165 -0
- package/dist-ksadk/assets/info-J43DQDTF-B8Y6xmyb.js +1 -0
- package/dist-ksadk/assets/{infoDiagram-5YYISTIA-D7Mjh6YU.js → infoDiagram-5YYISTIA-Dx3WJJ7c.js} +1 -1
- package/dist-ksadk/assets/{ishikawaDiagram-YF4QCWOH-Dd4tDuCg.js → ishikawaDiagram-YF4QCWOH-CinAgPok.js} +1 -1
- package/dist-ksadk/assets/{journeyDiagram-JHISSGLW-D8l_bo2Y.js → journeyDiagram-JHISSGLW-CvHK1ISY.js} +1 -1
- package/dist-ksadk/assets/{kanban-definition-UN3LZRKU-CPTqBqad.js → kanban-definition-UN3LZRKU-CdVmYG0i.js} +1 -1
- package/dist-ksadk/assets/{katex-Cj6SHGk0.js → katex-j3gWbtq2.js} +1 -1
- package/dist-ksadk/assets/{linear-CtOo2EUV.js → linear-CSzugA0M.js} +1 -1
- package/dist-ksadk/assets/{mermaid-parser.core-BeKhTKTv.js → mermaid-parser.core-x5RuQqLN.js} +2 -2
- package/dist-ksadk/assets/{mindmap-definition-RKZ34NQL-Cyeeb4Uv.js → mindmap-definition-RKZ34NQL-DHeHLEl4.js} +1 -1
- package/dist-ksadk/assets/packet-YPE3B663-BrYG7omE.js +1 -0
- package/dist-ksadk/assets/pie-LRSECV5Y-_wNpvHX3.js +1 -0
- package/dist-ksadk/assets/{pieDiagram-4H26LBE5-CYoruq9a.js → pieDiagram-4H26LBE5-Bn-CBt6T.js} +1 -1
- package/dist-ksadk/assets/{quadrantDiagram-W4KKPZXB-9Iyq0jYH.js → quadrantDiagram-W4KKPZXB-DvSMM3_k.js} +1 -1
- package/dist-ksadk/assets/radar-GUYGQ44K-BaVGJTci.js +1 -0
- package/dist-ksadk/assets/{requirementDiagram-4Y6WPE33-Dm-mLxH0.js → requirementDiagram-4Y6WPE33-Bs1Umaod.js} +1 -1
- package/dist-ksadk/assets/{sankeyDiagram-5OEKKPKP-BhpH0-7G.js → sankeyDiagram-5OEKKPKP-uM4nwFIR.js} +1 -1
- package/dist-ksadk/assets/{sequenceDiagram-3UESZ5HK-DUPsgMMP.js → sequenceDiagram-3UESZ5HK-CUM1cPop.js} +1 -1
- package/dist-ksadk/assets/{stateDiagram-AJRCARHV-XbM4cbgm.js → stateDiagram-AJRCARHV-BMhsQxg0.js} +1 -1
- package/dist-ksadk/assets/stateDiagram-v2-BHNVJYJU-B1hvuTKv.js +1 -0
- package/dist-ksadk/assets/{timeline-definition-PNZ67QCA-Tday4gED.js → timeline-definition-PNZ67QCA-DqOyQzFY.js} +1 -1
- package/dist-ksadk/assets/treeView-BLDUP644-SGPboZ5y.js +1 -0
- package/dist-ksadk/assets/treemap-LRROVOQU-DuxD3lqD.js +1 -0
- package/dist-ksadk/assets/{vennDiagram-CIIHVFJN-BOg1GA8S.js → vennDiagram-CIIHVFJN-CL6ie2Ap.js} +1 -1
- package/dist-ksadk/assets/wardley-L42UT6IY-D9w6kgpb.js +1 -0
- package/dist-ksadk/assets/{wardleyDiagram-YWT4CUSO-Cy5RnJwi.js → wardleyDiagram-YWT4CUSO-CoLkaHQx.js} +1 -1
- package/dist-ksadk/assets/{xychartDiagram-2RQKCTM6-DHamdSL0.js → xychartDiagram-2RQKCTM6-D3W-LOH6.js} +1 -1
- package/dist-ksadk/index.html +1 -1
- package/dist-lib/App.d.ts.map +1 -1
- package/dist-lib/{ArtifactsPanel-DFx9Y2xE.js → ArtifactsPanel--CQyb4ZY.js} +1 -1
- package/dist-lib/{CodeBlock-liGJ8t29.js → CodeBlock-Bwiebu9v.js} +1 -1
- package/dist-lib/{MathMessageMarkdown-hWMdpCVN.js → MathMessageMarkdown-BYzR9y8h.js} +2 -2
- package/dist-lib/{NativeTerminalPanel-q4ECX8EX.js → NativeTerminalPanel-BctkNn1k.js} +1 -1
- package/dist-lib/{WorkspacePanelContainer-26j9UzyY.js → WorkspacePanelContainer-CtS_M-Qt.js} +170 -167
- package/dist-lib/components.js +2 -2
- package/dist-lib/runtime.js +17 -18
- package/dist-lib/utils/tool-display.d.ts.map +1 -1
- package/package.json +1 -1
- package/dist-ksadk/assets/architecture-7EHR7CIX-aKvaoHF-.js +0 -1
- package/dist-ksadk/assets/channel-BNEchGhD.js +0 -1
- package/dist-ksadk/assets/chunk-QZHKN3VN-DVqYdfgL.js +0 -1
- package/dist-ksadk/assets/classDiagram-4FO5ZUOK-DoFK3UDf.js +0 -1
- package/dist-ksadk/assets/classDiagram-v2-Q7XG4LA2-DoFK3UDf.js +0 -1
- package/dist-ksadk/assets/eventmodeling-FCH6USID-CnNj0sZg.js +0 -1
- package/dist-ksadk/assets/gitGraph-WXDBUCRP-CYAnXGvP.js +0 -1
- package/dist-ksadk/assets/index-DiS5sSwc.js +0 -165
- package/dist-ksadk/assets/info-J43DQDTF-CqhaeVQF.js +0 -1
- package/dist-ksadk/assets/packet-YPE3B663-D42EsLYz.js +0 -1
- package/dist-ksadk/assets/pie-LRSECV5Y-Cgre-V_q.js +0 -1
- package/dist-ksadk/assets/radar-GUYGQ44K-_FsLsLP1.js +0 -1
- package/dist-ksadk/assets/stateDiagram-v2-BHNVJYJU-C1h6ve7b.js +0 -1
- package/dist-ksadk/assets/treeView-BLDUP644-5bkV6oHA.js +0 -1
- package/dist-ksadk/assets/treemap-LRROVOQU-Ck8wquEY.js +0 -1
- package/dist-ksadk/assets/wardley-L42UT6IY-DPQZ7fpa.js +0 -1
package/dist-lib/{WorkspacePanelContainer-26j9UzyY.js → WorkspacePanelContainer-CtS_M-Qt.js}
RENAMED
|
@@ -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-
|
|
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-
|
|
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
|
|
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 &&
|
|
713
|
+
return n !== e && Pt(n, t + 1);
|
|
711
714
|
}
|
|
712
|
-
if (Array.isArray(e)) return e.some((e) =>
|
|
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) =>
|
|
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
|
|
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
|
|
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
|
|
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) =>
|
|
769
|
+
return Array.from(n.values()).sort((e, t) => Rt(t) - Rt(e));
|
|
767
770
|
}
|
|
768
|
-
function
|
|
771
|
+
function Bt(e) {
|
|
769
772
|
return String(e.Title || "").trim() || String(e.FirstPrompt || "").trim() || "新对话";
|
|
770
773
|
}
|
|
771
|
-
function
|
|
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
|
|
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
|
|
798
|
+
function Ut(e) {
|
|
796
799
|
return e < 1e3 ? "刚刚" : e < 6e4 ? `${Math.floor(e / 1e3)} 秒前` : `${Math.floor(e / 6e4)} 分钟前`;
|
|
797
800
|
}
|
|
798
|
-
function
|
|
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
|
|
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
|
-
|
|
812
|
+
Wt(t),
|
|
810
813
|
" / ",
|
|
811
|
-
|
|
814
|
+
Wt(n)
|
|
812
815
|
]
|
|
813
816
|
}, Math.round(t));
|
|
814
817
|
}
|
|
815
|
-
function
|
|
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
|
-
|
|
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(
|
|
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:
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
929
|
+
function Zt(e, t) {
|
|
927
930
|
return `第 ${Math.max(1, t - e)}/${Math.max(1, t)} 阶段`;
|
|
928
931
|
}
|
|
929
|
-
function
|
|
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
|
|
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 =
|
|
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 ? `时间:${
|
|
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:
|
|
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
|
|
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
|
|
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
|
|
1114
|
-
let [i, o] = z("idle"), s =
|
|
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
|
|
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
|
|
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
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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
|
|
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(
|
|
1359
|
+
children: [/* @__PURE__ */ A($t, {
|
|
1357
1360
|
checkpoints: f,
|
|
1358
1361
|
isStreaming: n,
|
|
1359
1362
|
onResumeCheckpoint: p
|
|
1360
|
-
}), a.length === 0 ? /* @__PURE__ */ A(
|
|
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(
|
|
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
|
|
1387
|
+
var sn = new Set([
|
|
1385
1388
|
"in_progress",
|
|
1386
1389
|
"running",
|
|
1387
1390
|
"queued",
|
|
1388
1391
|
"pending"
|
|
1389
|
-
]),
|
|
1390
|
-
function
|
|
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
|
|
1401
|
+
function un(e) {
|
|
1399
1402
|
return String(e || "").trim().toLowerCase();
|
|
1400
1403
|
}
|
|
1401
|
-
function
|
|
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
|
|
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(
|
|
1425
|
+
].map(un).join(" ");
|
|
1423
1426
|
}
|
|
1424
|
-
function
|
|
1425
|
-
if (!
|
|
1426
|
-
let n =
|
|
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) :
|
|
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
|
|
1432
|
-
let r =
|
|
1433
|
-
return (Array.isArray(e) ? e : []).filter((e) => e?.SessionId).filter((e) => !r ||
|
|
1434
|
-
let r = +!!
|
|
1435
|
-
return r === i ?
|
|
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
|
|
1439
|
-
let n =
|
|
1441
|
+
function hn(e, t = {}) {
|
|
1442
|
+
let n = pn(e, t);
|
|
1440
1443
|
return {
|
|
1441
1444
|
running: n,
|
|
1442
|
-
label: n ? "" :
|
|
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
|
|
1448
|
-
let [s, c] = z(""), l = fe(() =>
|
|
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 =
|
|
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
|
|
1539
|
-
function
|
|
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(
|
|
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
|
|
1672
|
+
function yn(e, t) {
|
|
1670
1673
|
return typeof t == "function" ? t(e) : t;
|
|
1671
1674
|
}
|
|
1672
|
-
var
|
|
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:
|
|
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:
|
|
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
|
|
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
|
|
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(
|
|
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(
|
|
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
|
|
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
|
|
1857
|
+
function wn(e) {
|
|
1855
1858
|
return e.replace(/&/g, "&").replace(/"/g, """).replace(/</g, "<").replace(/>/g, ">");
|
|
1856
1859
|
}
|
|
1857
|
-
function
|
|
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
|
|
1869
|
+
function En(...e) {
|
|
1867
1870
|
return Array.from(new Set(e.filter((e) => !!e))).join(" ");
|
|
1868
1871
|
}
|
|
1869
|
-
function
|
|
1870
|
-
let t = e ?
|
|
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
|
|
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
|
|
1897
|
-
let { channelId: n, basePath: r } = typeof t == "string" ? { channelId: t } : t, i =
|
|
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="${
|
|
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
|
|
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 &&
|
|
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
|
|
1945
|
+
var jn = "/_ksadk/workspace/v1/files", Mn = new Set([
|
|
1943
1946
|
".md",
|
|
1944
1947
|
".markdown",
|
|
1945
1948
|
".mdx"
|
|
1946
|
-
]),
|
|
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
|
-
]),
|
|
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
|
|
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 =
|
|
1994
|
-
|
|
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
|
-
|
|
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
|
|
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
|
|
2012
|
+
function Un(e) {
|
|
2010
2013
|
return String(e || "").split(";")[0].trim().toLowerCase();
|
|
2011
2014
|
}
|
|
2012
|
-
var
|
|
2013
|
-
function
|
|
2014
|
-
let n =
|
|
2015
|
-
return r === "text/html" ||
|
|
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
|
|
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
|
|
2028
|
-
let n =
|
|
2029
|
-
return
|
|
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
|
|
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
|
|
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
|
|
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
|
|
2071
|
-
let l = R(null), u = de(), [d, f] = z("preview"), p =
|
|
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]),
|
|
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
|
|
2156
|
+
function Qn(e) {
|
|
2154
2157
|
e.current && clearTimeout(e.current);
|
|
2155
2158
|
}
|
|
2156
|
-
function
|
|
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(() => (
|
|
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
|
|
2209
|
-
function
|
|
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
|
|
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
|
|
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
|
|
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
|
|
2247
|
-
return
|
|
2249
|
+
function or(e) {
|
|
2250
|
+
return Rn(e);
|
|
2248
2251
|
}
|
|
2249
|
-
function
|
|
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:
|
|
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
|
|
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(
|
|
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 ||
|
|
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
|
-
},
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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}/`)) ?
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
2618
|
+
me() && q(nr(b));
|
|
2616
2619
|
},
|
|
2617
|
-
disabled: C ||
|
|
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 =
|
|
2653
|
+
let t = Gn({
|
|
2651
2654
|
path: e.Path,
|
|
2652
2655
|
mimeType: e.MimeType
|
|
2653
|
-
}), r = O === e.Path, i = e.Type === "file" ?
|
|
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" ? "目录" :
|
|
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
|
-
|
|
2723
|
+
ir(W.SizeBytes),
|
|
2721
2724
|
W.MimeType ? ` · ${W.MimeType}` : "",
|
|
2722
|
-
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
|
|
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(
|
|
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: () =>
|
|
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 ||
|
|
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(
|
|
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 _,
|
|
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 };
|