termdock 1.4.359 → 1.4.361
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/dist/client/assets/{AndroidMirrorView-SpjoKKYZ.js → AndroidMirrorView-DvaQ4bWE.js} +1 -1
- package/dist/client/assets/AndroidMirrorView-DvaQ4bWE.js.br +0 -0
- package/dist/client/assets/{AndroidMirrorView-SpjoKKYZ.js.gz → AndroidMirrorView-DvaQ4bWE.js.gz} +0 -0
- package/dist/client/assets/{App-BXyQinZW.js → App-Bb2gVHKa.js} +7 -7
- package/dist/client/assets/App-Bb2gVHKa.js.br +0 -0
- package/dist/client/assets/App-Bb2gVHKa.js.gz +0 -0
- package/dist/client/assets/{ArchitecturePanel-DUwBHRpo.js → ArchitecturePanel-DFFG7FcG.js} +2 -2
- package/dist/client/assets/ArchitecturePanel-DFFG7FcG.js.br +0 -0
- package/dist/client/assets/ArchitecturePanel-DFFG7FcG.js.gz +0 -0
- package/dist/client/assets/{ChangeWalkthroughPanel-CVBQbHpG.js → ChangeWalkthroughPanel-BC7zpkq3.js} +1 -1
- package/dist/client/assets/ChangeWalkthroughPanel-BC7zpkq3.js.br +0 -0
- package/dist/client/assets/ChangeWalkthroughPanel-BC7zpkq3.js.gz +0 -0
- package/dist/client/assets/{ChatRichContent-BI5iYvRf.js → ChatRichContent-C9mQPbwk.js} +3 -3
- package/dist/client/assets/ChatRichContent-C9mQPbwk.js.br +0 -0
- package/dist/client/assets/ChatRichContent-C9mQPbwk.js.gz +0 -0
- package/dist/client/assets/{CollaborationMainWorkspace-qYw6Sv3a.js → CollaborationMainWorkspace-v_Kf8bk2.js} +1 -1
- package/dist/client/assets/CollaborationMainWorkspace-v_Kf8bk2.js.br +0 -0
- package/dist/client/assets/CollaborationMainWorkspace-v_Kf8bk2.js.gz +0 -0
- package/dist/client/assets/CollaborationTaskContent-Cm0uanGi.js +1 -0
- package/dist/client/assets/{ComputerControlView-Dmmuxujg.js → ComputerControlView-BQnieqiC.js} +3 -3
- package/dist/client/assets/ComputerControlView-BQnieqiC.js.br +0 -0
- package/dist/client/assets/ComputerControlView-BQnieqiC.js.gz +0 -0
- package/dist/client/assets/{DagPlayground-D1FkpA0b.js → DagPlayground-DditHOVX.js} +1 -1
- package/dist/client/assets/DagPlayground-DditHOVX.js.br +0 -0
- package/dist/client/assets/DagPlayground-DditHOVX.js.gz +0 -0
- package/dist/client/assets/{DiffLab-C4y3Mu1m.js → DiffLab-p4rsngvx.js} +1 -1
- package/dist/client/assets/DiffLab-p4rsngvx.js.br +0 -0
- package/dist/client/assets/DiffLab-p4rsngvx.js.gz +0 -0
- package/dist/client/assets/{DiffReview-DVaOXs0z.js → DiffReview-9a_DXlXn.js} +1 -1
- package/dist/client/assets/DiffReview-9a_DXlXn.js.br +0 -0
- package/dist/client/assets/DiffReview-9a_DXlXn.js.gz +0 -0
- package/dist/client/assets/{DiffReviewLab-C49n0eG5.js → DiffReviewLab-BpI3iTts.js} +1 -1
- package/dist/client/assets/DiffReviewLab-BpI3iTts.js.br +0 -0
- package/dist/client/assets/DiffReviewLab-BpI3iTts.js.gz +0 -0
- package/dist/client/assets/{DiffViewer-C_YHDsAf.js → DiffViewer-25DyaFuh.js} +1 -1
- package/dist/client/assets/DiffViewer-25DyaFuh.js.br +0 -0
- package/dist/client/assets/DiffViewer-25DyaFuh.js.gz +0 -0
- package/dist/client/assets/{GitLoadingSkeleton-Bm1UqrDS.js → GitLoadingSkeleton-D5nkNhPE.js} +1 -1
- package/dist/client/assets/GitLoadingSkeleton-D5nkNhPE.js.br +0 -0
- package/dist/client/assets/GitLoadingSkeleton-D5nkNhPE.js.gz +0 -0
- package/dist/client/assets/{Markdown-CohgsLqO.js → Markdown-BQK61rwW.js} +2 -2
- package/dist/client/assets/Markdown-BQK61rwW.js.br +0 -0
- package/dist/client/assets/Markdown-BQK61rwW.js.gz +0 -0
- package/dist/client/assets/{ModelPreview-a0HGTXuA.js → ModelPreview-DSMm4U4j.js} +1 -1
- package/dist/client/assets/ModelPreview-DSMm4U4j.js.br +0 -0
- package/dist/client/assets/ModelPreview-DSMm4U4j.js.gz +0 -0
- package/dist/client/assets/{RecordingSaveDialog-BKec4LtD.js → RecordingSaveDialog-SqE6T39W.js} +1 -1
- package/dist/client/assets/RecordingSaveDialog-SqE6T39W.js.br +0 -0
- package/dist/client/assets/RecordingSaveDialog-SqE6T39W.js.gz +0 -0
- package/dist/client/assets/{RightSidebar-CxeEK1fi.js → RightSidebar-Cyd0Hm6s.js} +3 -3
- package/dist/client/assets/RightSidebar-Cyd0Hm6s.js.br +0 -0
- package/dist/client/assets/RightSidebar-Cyd0Hm6s.js.gz +0 -0
- package/dist/client/assets/SessionChatView-BNFqLvSD.js +25 -0
- package/dist/client/assets/SessionChatView-BNFqLvSD.js.br +0 -0
- package/dist/client/assets/SessionChatView-BNFqLvSD.js.gz +0 -0
- package/dist/client/assets/{SessionResourceSidebar-D8kJh4k1.js → SessionResourceSidebar-yPQNWbtX.js} +2 -2
- package/dist/client/assets/SessionResourceSidebar-yPQNWbtX.js.br +0 -0
- package/dist/client/assets/SessionResourceSidebar-yPQNWbtX.js.gz +0 -0
- package/dist/client/assets/{TodoWorkspace-ByyjDuIT.js → TodoWorkspace-B_GBeg3U.js} +1 -1
- package/dist/client/assets/TodoWorkspace-B_GBeg3U.js.br +0 -0
- package/dist/client/assets/TodoWorkspace-B_GBeg3U.js.gz +0 -0
- package/dist/client/assets/{abnfDiagram-VCTEODGH-9jetKIey.js → abnfDiagram-VCTEODGH-CPmxTXWR.js} +1 -1
- package/dist/client/assets/abnfDiagram-VCTEODGH-CPmxTXWR.js.br +0 -0
- package/dist/client/assets/abnfDiagram-VCTEODGH-CPmxTXWR.js.gz +0 -0
- package/dist/client/assets/{app-CjIJnhRC.js → app-CG7UnlvD.js} +4 -4
- package/dist/client/assets/app-CG7UnlvD.js.br +0 -0
- package/dist/client/assets/app-CG7UnlvD.js.gz +0 -0
- package/dist/client/assets/{arc-D_lxie76.js → arc-B4o5ErLe.js} +1 -1
- package/dist/client/assets/arc-B4o5ErLe.js.br +0 -0
- package/dist/client/assets/arc-B4o5ErLe.js.gz +0 -0
- package/dist/client/assets/{architectureDiagram-5GKGNRK7-IgNQYras.js → architectureDiagram-5GKGNRK7-CxB-DJ3M.js} +1 -1
- package/dist/client/assets/architectureDiagram-5GKGNRK7-CxB-DJ3M.js.br +0 -0
- package/dist/client/assets/architectureDiagram-5GKGNRK7-CxB-DJ3M.js.gz +0 -0
- package/dist/client/assets/{arrow-down-Dd0wVXN3.js → arrow-down-C3OQpvij.js} +1 -1
- package/dist/client/assets/{blockDiagram-I7D4REHJ-Rzz3EdOw.js → blockDiagram-I7D4REHJ-DMH3Ew64.js} +1 -1
- package/dist/client/assets/blockDiagram-I7D4REHJ-DMH3Ew64.js.br +0 -0
- package/dist/client/assets/blockDiagram-I7D4REHJ-DMH3Ew64.js.gz +0 -0
- package/dist/client/assets/{c4Diagram-7LVT6UL2-BDooBgn9.js → c4Diagram-7LVT6UL2-BeAPmp6T.js} +1 -1
- package/dist/client/assets/c4Diagram-7LVT6UL2-BeAPmp6T.js.br +0 -0
- package/dist/client/assets/c4Diagram-7LVT6UL2-BeAPmp6T.js.gz +0 -0
- package/dist/client/assets/channel-D0j6Em2u.js +1 -0
- package/dist/client/assets/{chevron-left-gddD8oDV.js → chevron-left-BS8PE--U.js} +1 -1
- package/dist/client/assets/{chunk-2Q5K7J3B-CaRGzemz.js → chunk-2Q5K7J3B-N1tJpI75.js} +1 -1
- package/dist/client/assets/{chunk-5VM5RSS4-DwFHSPNj.js → chunk-5VM5RSS4-Bk2ct6QD.js} +1 -1
- package/dist/client/assets/{chunk-F27PBJKO-DURRKDWg.js → chunk-F27PBJKO-CxZzshwv.js} +1 -1
- package/dist/client/assets/chunk-F27PBJKO-CxZzshwv.js.br +0 -0
- package/dist/client/assets/chunk-F27PBJKO-CxZzshwv.js.gz +0 -0
- package/dist/client/assets/{chunk-IMKFNOWR-DiI7TuKc.js → chunk-IMKFNOWR-B1kZ4qQ8.js} +1 -1
- package/dist/client/assets/chunk-IMKFNOWR-B1kZ4qQ8.js.br +0 -0
- package/dist/client/assets/chunk-IMKFNOWR-B1kZ4qQ8.js.gz +0 -0
- package/dist/client/assets/{chunk-JWPE2WC7-Cg9jVt2w.js → chunk-JWPE2WC7-BrLueD3X.js} +1 -1
- package/dist/client/assets/{chunk-POPQ4Y6H-BnV4j8Y0.js → chunk-POPQ4Y6H-CLdvlIcP.js} +1 -1
- package/dist/client/assets/{chunk-SVP7TREG-DO0KH1lL.js → chunk-SVP7TREG-DnY33T6h.js} +1 -1
- package/dist/client/assets/chunk-SVP7TREG-DnY33T6h.js.br +0 -0
- package/dist/client/assets/chunk-SVP7TREG-DnY33T6h.js.gz +0 -0
- package/dist/client/assets/{chunk-TICWLB2K-DOcrTdPc.js → chunk-TICWLB2K-CF5UiDQa.js} +1 -1
- package/dist/client/assets/chunk-TICWLB2K-CF5UiDQa.js.br +0 -0
- package/dist/client/assets/chunk-TICWLB2K-CF5UiDQa.js.gz +0 -0
- package/dist/client/assets/{chunk-XXDRQBXY-DR-p5Zy1.js → chunk-XXDRQBXY-IxRQZCF6.js} +1 -1
- package/dist/client/assets/{circle-DhTLygNL.js → circle-BbMJmnZN.js} +1 -1
- package/dist/client/assets/classDiagram-ZZMXUADV-DqwCeJFc.js +1 -0
- package/dist/client/assets/classDiagram-v2-VYDZK3BY-DqwCeJFc.js +1 -0
- package/dist/client/assets/{clipboard-HGyJkE2L.js → clipboard-Bc3Y4SV-.js} +1 -1
- package/dist/client/assets/{clipboardText-DN1ZamHf.js → clipboardText-CQBpBKPz.js} +1 -1
- package/dist/client/assets/clipboardText-CQBpBKPz.js.br +0 -0
- package/dist/client/assets/clipboardText-CQBpBKPz.js.gz +0 -0
- package/dist/client/assets/{clipboardText-DfV7Sfy1.css → clipboardText-CvzDT_9N.css} +1 -1
- package/dist/client/assets/clipboardText-CvzDT_9N.css.br +0 -0
- package/dist/client/assets/clipboardText-CvzDT_9N.css.gz +0 -0
- package/dist/client/assets/{cose-bilkent-JH36ORCC-DAd_FgYn.js → cose-bilkent-JH36ORCC-BzcBs1L3.js} +1 -1
- package/dist/client/assets/cose-bilkent-JH36ORCC-BzcBs1L3.js.br +0 -0
- package/dist/client/assets/cose-bilkent-JH36ORCC-BzcBs1L3.js.gz +0 -0
- package/dist/client/assets/{cynefin-OW5HDTMX-gLgHGAg1.js → cynefin-OW5HDTMX-B28ddXz6.js} +1 -1
- package/dist/client/assets/cynefin-OW5HDTMX-B28ddXz6.js.br +0 -0
- package/dist/client/assets/{cynefin-OW5HDTMX-gLgHGAg1.js.gz → cynefin-OW5HDTMX-B28ddXz6.js.gz} +0 -0
- package/dist/client/assets/{cynefinDiagram-5FMLGOSQ-CfZcuwNN.js → cynefinDiagram-5FMLGOSQ-CvnkcRMN.js} +1 -1
- package/dist/client/assets/cynefinDiagram-5FMLGOSQ-CvnkcRMN.js.br +0 -0
- package/dist/client/assets/cynefinDiagram-5FMLGOSQ-CvnkcRMN.js.gz +0 -0
- package/dist/client/assets/{dagre-GXQ25YYZ-D4hv95zo.js → dagre-GXQ25YYZ-CbpdGfwk.js} +1 -1
- package/dist/client/assets/dagre-GXQ25YYZ-CbpdGfwk.js.br +0 -0
- package/dist/client/assets/dagre-GXQ25YYZ-CbpdGfwk.js.gz +0 -0
- package/dist/client/assets/{diagram-S7CK7UJ4-C6QPCa-U.js → diagram-S7CK7UJ4-CkzVORHp.js} +1 -1
- package/dist/client/assets/diagram-S7CK7UJ4-CkzVORHp.js.br +0 -0
- package/dist/client/assets/diagram-S7CK7UJ4-CkzVORHp.js.gz +0 -0
- package/dist/client/assets/{diagram-UQ7AKVKN-BGJFrMY0.js → diagram-UQ7AKVKN-CVYt9t-d.js} +1 -1
- package/dist/client/assets/diagram-UQ7AKVKN-CVYt9t-d.js.br +0 -0
- package/dist/client/assets/diagram-UQ7AKVKN-CVYt9t-d.js.gz +0 -0
- package/dist/client/assets/{diagram-VSXAHHWV-N_wUYR-P.js → diagram-VSXAHHWV-CGajU0EV.js} +1 -1
- package/dist/client/assets/diagram-VSXAHHWV-CGajU0EV.js.br +0 -0
- package/dist/client/assets/diagram-VSXAHHWV-CGajU0EV.js.gz +0 -0
- package/dist/client/assets/{diagram-VX7I27RA-TTIdEQxJ.js → diagram-VX7I27RA-vYtp1P52.js} +1 -1
- package/dist/client/assets/diagram-VX7I27RA-vYtp1P52.js.br +0 -0
- package/dist/client/assets/diagram-VX7I27RA-vYtp1P52.js.gz +0 -0
- package/dist/client/assets/{diagram-Z3DM3KII-B5T47CF8.js → diagram-Z3DM3KII-DrlbY-rQ.js} +1 -1
- package/dist/client/assets/diagram-Z3DM3KII-DrlbY-rQ.js.br +0 -0
- package/dist/client/assets/diagram-Z3DM3KII-DrlbY-rQ.js.gz +0 -0
- package/dist/client/assets/{ebnfDiagram-PWID7BFC-BCVWN-6S.js → ebnfDiagram-PWID7BFC-Li843jVA.js} +1 -1
- package/dist/client/assets/ebnfDiagram-PWID7BFC-Li843jVA.js.br +0 -0
- package/dist/client/assets/ebnfDiagram-PWID7BFC-Li843jVA.js.gz +0 -0
- package/dist/client/assets/{erDiagram-RLTQ6QDP-carErB-Q.js → erDiagram-RLTQ6QDP-Bk6D65-Y.js} +1 -1
- package/dist/client/assets/erDiagram-RLTQ6QDP-Bk6D65-Y.js.br +0 -0
- package/dist/client/assets/erDiagram-RLTQ6QDP-Bk6D65-Y.js.gz +0 -0
- package/dist/client/assets/{external-link-BB8IuvZq.js → external-link-CUbXNBYc.js} +1 -1
- package/dist/client/assets/{flowDiagram-HODETNUW-Cntq-S4F.js → flowDiagram-HODETNUW-BBEGJbRE.js} +1 -1
- package/dist/client/assets/flowDiagram-HODETNUW-BBEGJbRE.js.br +0 -0
- package/dist/client/assets/flowDiagram-HODETNUW-BBEGJbRE.js.gz +0 -0
- package/dist/client/assets/{ganttDiagram-EL5Y4UJY-CDSctkKx.js → ganttDiagram-EL5Y4UJY-DcqIS8PT.js} +1 -1
- package/dist/client/assets/ganttDiagram-EL5Y4UJY-DcqIS8PT.js.br +0 -0
- package/dist/client/assets/ganttDiagram-EL5Y4UJY-DcqIS8PT.js.gz +0 -0
- package/dist/client/assets/{git-compare-9RABXSu5.js → git-compare-TvhljhDy.js} +1 -1
- package/dist/client/assets/{gitGraphDiagram-WWUBYQGX-bQpGwghF.js → gitGraphDiagram-WWUBYQGX-BO_waWtj.js} +1 -1
- package/dist/client/assets/gitGraphDiagram-WWUBYQGX-BO_waWtj.js.br +0 -0
- package/dist/client/assets/gitGraphDiagram-WWUBYQGX-BO_waWtj.js.gz +0 -0
- package/dist/client/assets/{index-VX_KQ4Kx.css → index-Db6cTvcd.css} +1 -1
- package/dist/client/assets/index-Db6cTvcd.css.br +0 -0
- package/dist/client/assets/{index-VX_KQ4Kx.css.gz → index-Db6cTvcd.css.gz} +0 -0
- package/dist/client/assets/{infoDiagram-27XIBGKW-RiSy10Xu.js → infoDiagram-27XIBGKW-eURiwH5i.js} +1 -1
- package/dist/client/assets/{ishikawaDiagram-5VMMS53U-aIPkdxQG.js → ishikawaDiagram-5VMMS53U-jYYxASiy.js} +1 -1
- package/dist/client/assets/ishikawaDiagram-5VMMS53U-jYYxASiy.js.br +0 -0
- package/dist/client/assets/ishikawaDiagram-5VMMS53U-jYYxASiy.js.gz +0 -0
- package/dist/client/assets/{journeyDiagram-3NMN7TZE-B_qkh4CF.js → journeyDiagram-3NMN7TZE-DnW1TBIv.js} +1 -1
- package/dist/client/assets/journeyDiagram-3NMN7TZE-DnW1TBIv.js.br +0 -0
- package/dist/client/assets/journeyDiagram-3NMN7TZE-DnW1TBIv.js.gz +0 -0
- package/dist/client/assets/{kanban-definition-UXKFOSKX-Cqg9G98I.js → kanban-definition-UXKFOSKX-CcPfae--.js} +1 -1
- package/dist/client/assets/kanban-definition-UXKFOSKX-CcPfae--.js.br +0 -0
- package/dist/client/assets/kanban-definition-UXKFOSKX-CcPfae--.js.gz +0 -0
- package/dist/client/assets/{layout-DsxXkS4m.js → layout-HBanbinE.js} +1 -1
- package/dist/client/assets/layout-HBanbinE.js.br +0 -0
- package/dist/client/assets/layout-HBanbinE.js.gz +0 -0
- package/dist/client/assets/{linear-YxCELrSW.js → linear-OVIirOu4.js} +1 -1
- package/dist/client/assets/{linear-YxCELrSW.js.br → linear-OVIirOu4.js.br} +0 -0
- package/dist/client/assets/linear-OVIirOu4.js.gz +0 -0
- package/dist/client/assets/{link-C7B3CQkJ.js → link-DP9WqPQf.js} +1 -1
- package/dist/client/assets/link-DP9WqPQf.js.br +0 -0
- package/dist/client/assets/link-DP9WqPQf.js.gz +0 -0
- package/dist/client/assets/{list-tree-CA4WMncL.js → list-tree-TZoK4D1s.js} +1 -1
- package/dist/client/assets/{maximize-2-C2r-kY_c.js → maximize-2-Duk9ucVy.js} +1 -1
- package/dist/client/assets/{mermaid.core-BX4Yidib.js → mermaid.core-Dkp6JxgQ.js} +5 -5
- package/dist/client/assets/mermaid.core-Dkp6JxgQ.js.br +0 -0
- package/dist/client/assets/mermaid.core-Dkp6JxgQ.js.gz +0 -0
- package/dist/client/assets/{mindmap-definition-YA3MSWOX-Bj2fCwN5.js → mindmap-definition-YA3MSWOX-LqBs5pfH.js} +1 -1
- package/dist/client/assets/mindmap-definition-YA3MSWOX-LqBs5pfH.js.br +0 -0
- package/dist/client/assets/mindmap-definition-YA3MSWOX-LqBs5pfH.js.gz +0 -0
- package/dist/client/assets/{passwordBootstrap-CPlia7G3.js → passwordBootstrap-D8EJVph5.js} +1 -1
- package/dist/client/assets/passwordBootstrap-D8EJVph5.js.br +0 -0
- package/dist/client/assets/passwordBootstrap-D8EJVph5.js.gz +0 -0
- package/dist/client/assets/{pegDiagram-XKGWAZYB-DCJ-5qA2.js → pegDiagram-XKGWAZYB-BZWd3pI7.js} +1 -1
- package/dist/client/assets/pegDiagram-XKGWAZYB-BZWd3pI7.js.br +0 -0
- package/dist/client/assets/pegDiagram-XKGWAZYB-BZWd3pI7.js.gz +0 -0
- package/dist/client/assets/{pieDiagram-E7YTZNPT-DFxDtRlY.js → pieDiagram-E7YTZNPT-DmhK_nc-.js} +1 -1
- package/dist/client/assets/pieDiagram-E7YTZNPT-DmhK_nc-.js.br +0 -0
- package/dist/client/assets/pieDiagram-E7YTZNPT-DmhK_nc-.js.gz +0 -0
- package/dist/client/assets/{quadrantDiagram-AXDQQJYC-BlwkSa_A.js → quadrantDiagram-AXDQQJYC-Dt5EPEjj.js} +1 -1
- package/dist/client/assets/quadrantDiagram-AXDQQJYC-Dt5EPEjj.js.br +0 -0
- package/dist/client/assets/quadrantDiagram-AXDQQJYC-Dt5EPEjj.js.gz +0 -0
- package/dist/client/assets/{quote-DYO_qxPl.js → quote-BWHaYR1j.js} +1 -1
- package/dist/client/assets/{railroadDiagram-O6MQD6OU-DjtRafKE.js → railroadDiagram-O6MQD6OU-RSvmvEvu.js} +1 -1
- package/dist/client/assets/railroadDiagram-O6MQD6OU-RSvmvEvu.js.br +0 -0
- package/dist/client/assets/railroadDiagram-O6MQD6OU-RSvmvEvu.js.gz +0 -0
- package/dist/client/assets/{rdpSession-De-iS1CL.js → rdpSession-lNNwVCpP.js} +1 -1
- package/dist/client/assets/rdpSession-lNNwVCpP.js.br +0 -0
- package/dist/client/assets/rdpSession-lNNwVCpP.js.gz +0 -0
- package/dist/client/assets/{referenceSelection-Cb24Tb01.js → referenceSelection-CYduiLc1.js} +1 -1
- package/dist/client/assets/referenceSelection-CYduiLc1.js.br +0 -0
- package/dist/client/assets/referenceSelection-CYduiLc1.js.gz +0 -0
- package/dist/client/assets/{requirementDiagram-BXWQKSXE-B1skd4Aj.js → requirementDiagram-BXWQKSXE-CXFONPV2.js} +1 -1
- package/dist/client/assets/requirementDiagram-BXWQKSXE-CXFONPV2.js.br +0 -0
- package/dist/client/assets/requirementDiagram-BXWQKSXE-CXFONPV2.js.gz +0 -0
- package/dist/client/assets/{sankeyDiagram-P5KCCOFB-2hK1yoP1.js → sankeyDiagram-P5KCCOFB-Dl-Bi6cO.js} +1 -1
- package/dist/client/assets/sankeyDiagram-P5KCCOFB-Dl-Bi6cO.js.br +0 -0
- package/dist/client/assets/sankeyDiagram-P5KCCOFB-Dl-Bi6cO.js.gz +0 -0
- package/dist/client/assets/{search-DwVySubQ.js → search-g7nZaX-p.js} +1 -1
- package/dist/client/assets/{sequenceDiagram-WJ2MYXX4-DIqwThjL.js → sequenceDiagram-WJ2MYXX4-ri1bCZN1.js} +1 -1
- package/dist/client/assets/sequenceDiagram-WJ2MYXX4-ri1bCZN1.js.br +0 -0
- package/dist/client/assets/sequenceDiagram-WJ2MYXX4-ri1bCZN1.js.gz +0 -0
- package/dist/client/assets/{sizeCapture-INFHLROL-CwYlm-u0.js → sizeCapture-INFHLROL-BgXXpEV-.js} +1 -1
- package/dist/client/assets/sizeCapture-INFHLROL-BgXXpEV-.js.br +0 -0
- package/dist/client/assets/sizeCapture-INFHLROL-BgXXpEV-.js.gz +0 -0
- package/dist/client/assets/{stateDiagram-D77RDMKH-D8Zz2h7U.js → stateDiagram-D77RDMKH-MOS7hXrp.js} +1 -1
- package/dist/client/assets/stateDiagram-D77RDMKH-MOS7hXrp.js.br +0 -0
- package/dist/client/assets/stateDiagram-D77RDMKH-MOS7hXrp.js.gz +0 -0
- package/dist/client/assets/stateDiagram-v2-MP3YSRHH-qosY6j11.js +1 -0
- package/dist/client/assets/{sun-E4HSsh7y.js → sun-Docz24Gq.js} +1 -1
- package/dist/client/assets/{swimlanes-42K2YHIH-ChciX-e9.js → swimlanes-42K2YHIH-_nzqhPpE.js} +1 -1
- package/dist/client/assets/swimlanes-42K2YHIH-_nzqhPpE.js.br +0 -0
- package/dist/client/assets/swimlanes-42K2YHIH-_nzqhPpE.js.gz +0 -0
- package/dist/client/assets/swimlanesDiagram-VR7AAH4N-L8D1VDHW.js +8 -0
- package/dist/client/assets/{swiper-CDQegRag.js → swiper-Bge5b7oc.js} +1 -1
- package/dist/client/assets/swiper-Bge5b7oc.js.br +0 -0
- package/dist/client/assets/swiper-Bge5b7oc.js.gz +0 -0
- package/dist/client/assets/{timeline-definition-24CTP7MA-Dm-MR8Y4.js → timeline-definition-24CTP7MA-EoOfhpT4.js} +1 -1
- package/dist/client/assets/timeline-definition-24CTP7MA-EoOfhpT4.js.br +0 -0
- package/dist/client/assets/timeline-definition-24CTP7MA-EoOfhpT4.js.gz +0 -0
- package/dist/client/assets/{triangle-alert-BM5V0mRC.js → triangle-alert-DUjdvUeM.js} +1 -1
- package/dist/client/assets/{unplug-Dp1XvCMt.js → unplug-wUkIQYu0.js} +1 -1
- package/dist/client/assets/{use-gesture-react.esm-BHdJ-ZCI.js → use-gesture-react.esm-uKjWuDRY.js} +1 -1
- package/dist/client/assets/use-gesture-react.esm-uKjWuDRY.js.br +0 -0
- package/dist/client/assets/use-gesture-react.esm-uKjWuDRY.js.gz +0 -0
- package/dist/client/assets/{vennDiagram-4TSXK5OY-DIjmm5vd.js → vennDiagram-4TSXK5OY-Ch6yr7S0.js} +1 -1
- package/dist/client/assets/vennDiagram-4TSXK5OY-Ch6yr7S0.js.br +0 -0
- package/dist/client/assets/vennDiagram-4TSXK5OY-Ch6yr7S0.js.gz +0 -0
- package/dist/client/assets/{videoCompression-DPpn-S8r.js → videoCompression-cikNovzj.js} +1 -1
- package/dist/client/assets/videoCompression-cikNovzj.js.br +0 -0
- package/dist/client/assets/videoCompression-cikNovzj.js.gz +0 -0
- package/dist/client/assets/{wardleyDiagram-VM6X3IG4-Dxxn-JlX.js → wardleyDiagram-VM6X3IG4-D2PomnGY.js} +1 -1
- package/dist/client/assets/wardleyDiagram-VM6X3IG4-D2PomnGY.js.br +0 -0
- package/dist/client/assets/wardleyDiagram-VM6X3IG4-D2PomnGY.js.gz +0 -0
- package/dist/client/assets/{xychartDiagram-S5SC5T6Z-B7fqiF5T.js → xychartDiagram-S5SC5T6Z-Wj3WqOzn.js} +1 -1
- package/dist/client/assets/xychartDiagram-S5SC5T6Z-Wj3WqOzn.js.br +0 -0
- package/dist/client/assets/xychartDiagram-S5SC5T6Z-Wj3WqOzn.js.gz +0 -0
- package/dist/client/index.html +2 -2
- package/dist/client/index.html.br +0 -0
- package/dist/client/index.html.gz +0 -0
- package/dist/client/sw.js +1 -1
- package/dist/client/sw.js.br +0 -0
- package/dist/client/sw.js.gz +0 -0
- package/dist/server/utils/requestDeadline.js +1 -0
- package/package.json +1 -1
- package/runtime-manifest.json +3 -3
- package/dist/client/assets/AndroidMirrorView-SpjoKKYZ.js.br +0 -0
- package/dist/client/assets/App-BXyQinZW.js.br +0 -0
- package/dist/client/assets/App-BXyQinZW.js.gz +0 -0
- package/dist/client/assets/ArchitecturePanel-DUwBHRpo.js.br +0 -0
- package/dist/client/assets/ArchitecturePanel-DUwBHRpo.js.gz +0 -0
- package/dist/client/assets/ChangeWalkthroughPanel-CVBQbHpG.js.br +0 -0
- package/dist/client/assets/ChangeWalkthroughPanel-CVBQbHpG.js.gz +0 -0
- package/dist/client/assets/ChatRichContent-BI5iYvRf.js.br +0 -0
- package/dist/client/assets/ChatRichContent-BI5iYvRf.js.gz +0 -0
- package/dist/client/assets/CollaborationMainWorkspace-qYw6Sv3a.js.br +0 -0
- package/dist/client/assets/CollaborationMainWorkspace-qYw6Sv3a.js.gz +0 -0
- package/dist/client/assets/CollaborationTaskContent-DLxe6Zyf.js +0 -1
- package/dist/client/assets/ComputerControlView-Dmmuxujg.js.br +0 -0
- package/dist/client/assets/ComputerControlView-Dmmuxujg.js.gz +0 -0
- package/dist/client/assets/DagPlayground-D1FkpA0b.js.br +0 -0
- package/dist/client/assets/DagPlayground-D1FkpA0b.js.gz +0 -0
- package/dist/client/assets/DiffLab-C4y3Mu1m.js.br +0 -0
- package/dist/client/assets/DiffLab-C4y3Mu1m.js.gz +0 -0
- package/dist/client/assets/DiffReview-DVaOXs0z.js.br +0 -0
- package/dist/client/assets/DiffReview-DVaOXs0z.js.gz +0 -0
- package/dist/client/assets/DiffReviewLab-C49n0eG5.js.br +0 -0
- package/dist/client/assets/DiffReviewLab-C49n0eG5.js.gz +0 -0
- package/dist/client/assets/DiffViewer-C_YHDsAf.js.br +0 -0
- package/dist/client/assets/DiffViewer-C_YHDsAf.js.gz +0 -0
- package/dist/client/assets/GitLoadingSkeleton-Bm1UqrDS.js.br +0 -0
- package/dist/client/assets/GitLoadingSkeleton-Bm1UqrDS.js.gz +0 -0
- package/dist/client/assets/Markdown-CohgsLqO.js.br +0 -0
- package/dist/client/assets/Markdown-CohgsLqO.js.gz +0 -0
- package/dist/client/assets/ModelPreview-a0HGTXuA.js.br +0 -0
- package/dist/client/assets/ModelPreview-a0HGTXuA.js.gz +0 -0
- package/dist/client/assets/RecordingSaveDialog-BKec4LtD.js.br +0 -0
- package/dist/client/assets/RecordingSaveDialog-BKec4LtD.js.gz +0 -0
- package/dist/client/assets/RightSidebar-CxeEK1fi.js.br +0 -0
- package/dist/client/assets/RightSidebar-CxeEK1fi.js.gz +0 -0
- package/dist/client/assets/SessionChatView-Bk5DIrLU.js +0 -20
- package/dist/client/assets/SessionChatView-Bk5DIrLU.js.br +0 -0
- package/dist/client/assets/SessionChatView-Bk5DIrLU.js.gz +0 -0
- package/dist/client/assets/SessionResourceSidebar-D8kJh4k1.js.br +0 -0
- package/dist/client/assets/SessionResourceSidebar-D8kJh4k1.js.gz +0 -0
- package/dist/client/assets/TodoWorkspace-ByyjDuIT.js.br +0 -0
- package/dist/client/assets/TodoWorkspace-ByyjDuIT.js.gz +0 -0
- package/dist/client/assets/abnfDiagram-VCTEODGH-9jetKIey.js.br +0 -0
- package/dist/client/assets/abnfDiagram-VCTEODGH-9jetKIey.js.gz +0 -0
- package/dist/client/assets/app-CjIJnhRC.js.br +0 -0
- package/dist/client/assets/app-CjIJnhRC.js.gz +0 -0
- package/dist/client/assets/arc-D_lxie76.js.br +0 -0
- package/dist/client/assets/arc-D_lxie76.js.gz +0 -0
- package/dist/client/assets/architectureDiagram-5GKGNRK7-IgNQYras.js.br +0 -0
- package/dist/client/assets/architectureDiagram-5GKGNRK7-IgNQYras.js.gz +0 -0
- package/dist/client/assets/blockDiagram-I7D4REHJ-Rzz3EdOw.js.br +0 -0
- package/dist/client/assets/blockDiagram-I7D4REHJ-Rzz3EdOw.js.gz +0 -0
- package/dist/client/assets/c4Diagram-7LVT6UL2-BDooBgn9.js.br +0 -0
- package/dist/client/assets/c4Diagram-7LVT6UL2-BDooBgn9.js.gz +0 -0
- package/dist/client/assets/channel-DCcxp7JL.js +0 -1
- package/dist/client/assets/chunk-F27PBJKO-DURRKDWg.js.br +0 -0
- package/dist/client/assets/chunk-F27PBJKO-DURRKDWg.js.gz +0 -0
- package/dist/client/assets/chunk-IMKFNOWR-DiI7TuKc.js.br +0 -0
- package/dist/client/assets/chunk-IMKFNOWR-DiI7TuKc.js.gz +0 -0
- package/dist/client/assets/chunk-SVP7TREG-DO0KH1lL.js.br +0 -0
- package/dist/client/assets/chunk-SVP7TREG-DO0KH1lL.js.gz +0 -0
- package/dist/client/assets/chunk-TICWLB2K-DOcrTdPc.js.br +0 -0
- package/dist/client/assets/chunk-TICWLB2K-DOcrTdPc.js.gz +0 -0
- package/dist/client/assets/classDiagram-ZZMXUADV-B34NqDOF.js +0 -1
- package/dist/client/assets/classDiagram-v2-VYDZK3BY-B34NqDOF.js +0 -1
- package/dist/client/assets/clipboardText-DN1ZamHf.js.br +0 -0
- package/dist/client/assets/clipboardText-DN1ZamHf.js.gz +0 -0
- package/dist/client/assets/clipboardText-DfV7Sfy1.css.br +0 -0
- package/dist/client/assets/clipboardText-DfV7Sfy1.css.gz +0 -0
- package/dist/client/assets/cose-bilkent-JH36ORCC-DAd_FgYn.js.br +0 -0
- package/dist/client/assets/cose-bilkent-JH36ORCC-DAd_FgYn.js.gz +0 -0
- package/dist/client/assets/cynefin-OW5HDTMX-gLgHGAg1.js.br +0 -0
- package/dist/client/assets/cynefinDiagram-5FMLGOSQ-CfZcuwNN.js.br +0 -0
- package/dist/client/assets/cynefinDiagram-5FMLGOSQ-CfZcuwNN.js.gz +0 -0
- package/dist/client/assets/dagre-GXQ25YYZ-D4hv95zo.js.br +0 -0
- package/dist/client/assets/dagre-GXQ25YYZ-D4hv95zo.js.gz +0 -0
- package/dist/client/assets/diagram-S7CK7UJ4-C6QPCa-U.js.br +0 -0
- package/dist/client/assets/diagram-S7CK7UJ4-C6QPCa-U.js.gz +0 -0
- package/dist/client/assets/diagram-UQ7AKVKN-BGJFrMY0.js.br +0 -0
- package/dist/client/assets/diagram-UQ7AKVKN-BGJFrMY0.js.gz +0 -0
- package/dist/client/assets/diagram-VSXAHHWV-N_wUYR-P.js.br +0 -0
- package/dist/client/assets/diagram-VSXAHHWV-N_wUYR-P.js.gz +0 -0
- package/dist/client/assets/diagram-VX7I27RA-TTIdEQxJ.js.br +0 -0
- package/dist/client/assets/diagram-VX7I27RA-TTIdEQxJ.js.gz +0 -0
- package/dist/client/assets/diagram-Z3DM3KII-B5T47CF8.js.br +0 -0
- package/dist/client/assets/diagram-Z3DM3KII-B5T47CF8.js.gz +0 -0
- package/dist/client/assets/ebnfDiagram-PWID7BFC-BCVWN-6S.js.br +0 -0
- package/dist/client/assets/ebnfDiagram-PWID7BFC-BCVWN-6S.js.gz +0 -0
- package/dist/client/assets/erDiagram-RLTQ6QDP-carErB-Q.js.br +0 -0
- package/dist/client/assets/erDiagram-RLTQ6QDP-carErB-Q.js.gz +0 -0
- package/dist/client/assets/flowDiagram-HODETNUW-Cntq-S4F.js.br +0 -0
- package/dist/client/assets/flowDiagram-HODETNUW-Cntq-S4F.js.gz +0 -0
- package/dist/client/assets/ganttDiagram-EL5Y4UJY-CDSctkKx.js.br +0 -0
- package/dist/client/assets/ganttDiagram-EL5Y4UJY-CDSctkKx.js.gz +0 -0
- package/dist/client/assets/gitGraphDiagram-WWUBYQGX-bQpGwghF.js.br +0 -0
- package/dist/client/assets/gitGraphDiagram-WWUBYQGX-bQpGwghF.js.gz +0 -0
- package/dist/client/assets/index-VX_KQ4Kx.css.br +0 -0
- package/dist/client/assets/ishikawaDiagram-5VMMS53U-aIPkdxQG.js.br +0 -0
- package/dist/client/assets/ishikawaDiagram-5VMMS53U-aIPkdxQG.js.gz +0 -0
- package/dist/client/assets/journeyDiagram-3NMN7TZE-B_qkh4CF.js.br +0 -0
- package/dist/client/assets/journeyDiagram-3NMN7TZE-B_qkh4CF.js.gz +0 -0
- package/dist/client/assets/kanban-definition-UXKFOSKX-Cqg9G98I.js.br +0 -0
- package/dist/client/assets/kanban-definition-UXKFOSKX-Cqg9G98I.js.gz +0 -0
- package/dist/client/assets/layout-DsxXkS4m.js.br +0 -0
- package/dist/client/assets/layout-DsxXkS4m.js.gz +0 -0
- package/dist/client/assets/linear-YxCELrSW.js.gz +0 -0
- package/dist/client/assets/link-C7B3CQkJ.js.br +0 -0
- package/dist/client/assets/link-C7B3CQkJ.js.gz +0 -0
- package/dist/client/assets/mermaid.core-BX4Yidib.js.br +0 -0
- package/dist/client/assets/mermaid.core-BX4Yidib.js.gz +0 -0
- package/dist/client/assets/mindmap-definition-YA3MSWOX-Bj2fCwN5.js.br +0 -0
- package/dist/client/assets/mindmap-definition-YA3MSWOX-Bj2fCwN5.js.gz +0 -0
- package/dist/client/assets/passwordBootstrap-CPlia7G3.js.br +0 -0
- package/dist/client/assets/passwordBootstrap-CPlia7G3.js.gz +0 -0
- package/dist/client/assets/pegDiagram-XKGWAZYB-DCJ-5qA2.js.br +0 -0
- package/dist/client/assets/pegDiagram-XKGWAZYB-DCJ-5qA2.js.gz +0 -0
- package/dist/client/assets/pieDiagram-E7YTZNPT-DFxDtRlY.js.br +0 -0
- package/dist/client/assets/pieDiagram-E7YTZNPT-DFxDtRlY.js.gz +0 -0
- package/dist/client/assets/quadrantDiagram-AXDQQJYC-BlwkSa_A.js.br +0 -0
- package/dist/client/assets/quadrantDiagram-AXDQQJYC-BlwkSa_A.js.gz +0 -0
- package/dist/client/assets/railroadDiagram-O6MQD6OU-DjtRafKE.js.br +0 -0
- package/dist/client/assets/railroadDiagram-O6MQD6OU-DjtRafKE.js.gz +0 -0
- package/dist/client/assets/rdpSession-De-iS1CL.js.br +0 -0
- package/dist/client/assets/rdpSession-De-iS1CL.js.gz +0 -0
- package/dist/client/assets/referenceSelection-Cb24Tb01.js.br +0 -0
- package/dist/client/assets/referenceSelection-Cb24Tb01.js.gz +0 -0
- package/dist/client/assets/requirementDiagram-BXWQKSXE-B1skd4Aj.js.br +0 -0
- package/dist/client/assets/requirementDiagram-BXWQKSXE-B1skd4Aj.js.gz +0 -0
- package/dist/client/assets/sankeyDiagram-P5KCCOFB-2hK1yoP1.js.br +0 -0
- package/dist/client/assets/sankeyDiagram-P5KCCOFB-2hK1yoP1.js.gz +0 -0
- package/dist/client/assets/sequenceDiagram-WJ2MYXX4-DIqwThjL.js.br +0 -0
- package/dist/client/assets/sequenceDiagram-WJ2MYXX4-DIqwThjL.js.gz +0 -0
- package/dist/client/assets/sizeCapture-INFHLROL-CwYlm-u0.js.br +0 -0
- package/dist/client/assets/sizeCapture-INFHLROL-CwYlm-u0.js.gz +0 -0
- package/dist/client/assets/stateDiagram-D77RDMKH-D8Zz2h7U.js.br +0 -0
- package/dist/client/assets/stateDiagram-D77RDMKH-D8Zz2h7U.js.gz +0 -0
- package/dist/client/assets/stateDiagram-v2-MP3YSRHH-e3_uvNTv.js +0 -1
- package/dist/client/assets/swimlanes-42K2YHIH-ChciX-e9.js.br +0 -0
- package/dist/client/assets/swimlanes-42K2YHIH-ChciX-e9.js.gz +0 -0
- package/dist/client/assets/swimlanesDiagram-VR7AAH4N-CnK3uMUF.js +0 -8
- package/dist/client/assets/swiper-CDQegRag.js.br +0 -0
- package/dist/client/assets/swiper-CDQegRag.js.gz +0 -0
- package/dist/client/assets/timeline-definition-24CTP7MA-Dm-MR8Y4.js.br +0 -0
- package/dist/client/assets/timeline-definition-24CTP7MA-Dm-MR8Y4.js.gz +0 -0
- package/dist/client/assets/use-gesture-react.esm-BHdJ-ZCI.js.br +0 -0
- package/dist/client/assets/use-gesture-react.esm-BHdJ-ZCI.js.gz +0 -0
- package/dist/client/assets/vennDiagram-4TSXK5OY-DIjmm5vd.js.br +0 -0
- package/dist/client/assets/vennDiagram-4TSXK5OY-DIjmm5vd.js.gz +0 -0
- package/dist/client/assets/videoCompression-DPpn-S8r.js.br +0 -0
- package/dist/client/assets/videoCompression-DPpn-S8r.js.gz +0 -0
- package/dist/client/assets/wardleyDiagram-VM6X3IG4-Dxxn-JlX.js.br +0 -0
- package/dist/client/assets/wardleyDiagram-VM6X3IG4-Dxxn-JlX.js.gz +0 -0
- package/dist/client/assets/xychartDiagram-S5SC5T6Z-B7fqiF5T.js.br +0 -0
- package/dist/client/assets/xychartDiagram-S5SC5T6Z-B7fqiF5T.js.gz +0 -0
|
Binary file
|
|
Binary file
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/Markdown-
|
|
2
|
-
import{a$ as gt,bz as At,eA as he,cr as e,a9 as Dt,n as et,dD as tt,dE as Mt,eB as Je,O as yt,a8 as Se,cH as Ft,C as Lt,L as Tt,R as jt,s as Pt,u as It,m as Ot,h as Pe,Y as vt,e as Bt,c as Ht,g as wt,eM as dt,eS as _t}from"./app-CjIJnhRC.js";import{b as s,r as Nt}from"./dnd-BCFAPC0L.js";import{k as Ve,p as Ie,A as kt,g as qt,H as Ut,h as Wt,c as Ue,a as fe,b as St,d as Jt,f as nt,l as Vt,n as Kt,i as Xt,D as Re,e as Yt}from"./link-C7B3CQkJ.js";import{U as Zt,u as Gt,F as Qt}from"./RecordingSaveDialog-BKec4LtD.js";import{L as er}from"./DiffViewer-C_YHDsAf.js";import{u as tr}from"./swiper-CDQegRag.js";import rr from"./purify.es-4eNOHKSq.js";import{l as sr,i as nr}from"./Markdown-CohgsLqO.js";import{e as ir}from"./AndroidMirrorView-SpjoKKYZ.js";import{S as ar}from"./RightSidebar-CxeEK1fi.js";import{N as mt}from"./GitLoadingSkeleton-Bm1UqrDS.js";import"./react-XDCjal2T.js";import"./terminal-DaiFCKy_.js";import"./use-gesture-react.esm-BHdJ-ZCI.js";import"./gestureArbiter-DszagC-d.js";import"./referenceSelection-Cb24Tb01.js";import"./git-compare-9RABXSu5.js";import"./list-tree-CA4WMncL.js";import"./v4-EwEgHOG0.js";import"./unplug-Dp1XvCMt.js";import"./circle-DhTLygNL.js";import"./DiffReview-DVaOXs0z.js";import"./triangle-alert-BM5V0mRC.js";import"./ChangeWalkthroughPanel-CVBQbHpG.js";import"./chevron-left-gddD8oDV.js";import"./maximize-2-C2r-kY_c.js";import"./search-DwVySubQ.js";import"./arrow-down-Dd0wVXN3.js";const lr=[["path",{d:"M17 7 7 17",key:"15tmo1"}],["path",{d:"M17 17H7V7",key:"1org7z"}]],cr=gt("arrow-down-left",lr);const or=[["path",{d:"m15 15 6 6",key:"1s409w"}],["path",{d:"m15 9 6-6",key:"ko1vev"}],["path",{d:"M21 16v5h-5",key:"1ck2sf"}],["path",{d:"M21 8V3h-5",key:"1qoq8a"}],["path",{d:"M3 16v5h5",key:"1t08am"}],["path",{d:"m3 21 6-6",key:"wwnumi"}],["path",{d:"M3 8V3h5",key:"1ln10m"}],["path",{d:"M9 9 3 3",key:"v551iv"}]],ur=gt("expand",or);function dr(r,o){const a=new Map,d={id:"all-perspectives",title:o,summary:r.summary,nodes:[],edges:[]};return r.perspectives.forEach((p,n)=>{const x=`perspective${n}`,g=new Map(p.nodes.map((u,l)=>[u.id,`${x}_node${l}`]));a.set(x,{perspective:p.id}),d.nodes.push({id:x,title:p.title,summary:p.summary,files:[],description:p.description});for(const u of p.nodes){const l=g.get(u.id);a.set(l,{perspective:p.id,node:u.id}),d.nodes.push({...u,id:l,parentId:u.parentId?g.get(u.parentId):x})}d.edges.push(...p.edges.map(u=>({...u,from:g.get(u.from),to:g.get(u.to)})))}),{view:d,references:a}}async function $e(r,o,a,d){const p=new URLSearchParams({root:r}),n=await fetch(`/api/terminal/architecture/${o}${d?"":`${o.includes("?")?"&":"?"}${p}`}`,{signal:a,cache:"no-store",...d?{method:"PUT",headers:{"Content-Type":"application/json","X-XSRF-TOKEN":await At()},body:JSON.stringify({root:r,...d})}:{}}),x=await n.json();if(!n.ok)throw new Error(x.error||`HTTP ${n.status}`);return x}async function mr(r,o){const a=await $e(r,"documents",o);if(!Array.isArray(a.files))throw new Error("Invalid architecture library");return[...new Set(a.files.filter(d=>typeof d=="string"&&Ve(d)))].sort()}async function We(r,o,a){if(!Ve(o))throw new Error("Invalid architecture file");const d=await $e(r,`document?${new URLSearchParams({file:o})}`,a);if(!("document"in d)||d.revision!==null&&typeof d.revision!="string")throw new Error("Invalid architecture response");return{document:d.document?Ie(JSON.stringify(d.document)):null,revision:typeof d.revision=="string"?d.revision:null}}async function hr(r,o,a,d,p,n,x){const g=await $e(r,"field",void 0,{file:o,perspective:a,node:d,field:p,value:n,revision:x});return Ie(JSON.stringify(g.document))}async function xr(r,o,a){const d=await $e(r,`history?${new URLSearchParams({file:o})}`,a);if(!Array.isArray(d.versions))throw new Error("Invalid architecture history");return d.versions}async function pr(r,o){return $e(r,`bundle?${new URLSearchParams({file:o})}`)}async function fr(r,o,a){const d=await $e(r,"bundle",void 0,{bundle:o,revision:a});return Ie(JSON.stringify(d.document))}async function br(r,o,a,d){const p=await $e(r,"document",void 0,{file:o,document:a,...d!==void 0?{revision:d}:{}});return Ie(JSON.stringify(p.document))}const gr=s.lazy(()=>Dt(()=>import("./Markdown-CohgsLqO.js").then(r=>r.a),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11])).then(r=>({default:r.Markdown})));function rt(r,o){return o?{description:"说明",diagram:"关系图源码",context:"上下文",constraint:"约束",concern:"问题与风险",todo:"待办",note:"备注"}[r]:{description:"Description",diagram:"Diagram source",context:"Context",constraint:"Constraints",concern:"Concerns",todo:"To do",note:"Notes"}[r]}function st({value:r,rootPath:o,onEdit:a,onOpenFile:d}){const{locale:p}=he(),n=p==="zh",x=r.description?.replace(/^#\s+([^\n]+)\n\s*/,(u,l)=>l.trim()===r.title?"":u),g=u=>e.jsx(s.Suspense,{fallback:e.jsx("p",{className:"whitespace-pre-wrap text-sm",children:u}),children:e.jsx(gr,{variant:"document",content:u,rootPath:o,onLocalLinkOpen:l=>d?.({path:o&&l.path.startsWith(`${o}/`)?l.path.slice(o.length+1):l.path})})});return e.jsxs("div",{className:"space-y-2",children:[x&&e.jsx("div",{className:"min-w-0 overflow-x-auto",children:g(x)}),kt.filter(u=>u!=="description"&&r[u]).map(u=>e.jsxs("details",{className:"rounded-lg border border-border/15 px-2",children:[e.jsx("summary",{className:"min-h-11 cursor-pointer py-3 text-xs font-medium",children:rt(u,n)}),e.jsxs("div",{className:"min-w-0 overflow-x-auto pb-2",children:[u==="diagram"?e.jsx("pre",{className:"whitespace-pre-wrap break-all text-xs",children:r[u]}):g(r[u]),a&&e.jsx("button",{type:"button",className:"min-h-11 rounded px-2 text-xs text-primary hover:bg-surface-elevated",onClick:()=>a(u),children:n?"编辑此字段":"Edit field"})]})]},u)),a&&e.jsx("button",{type:"button",className:"min-h-11 rounded-lg px-3 text-xs text-primary hover:bg-surface-elevated",onClick:()=>a("description"),children:n?"编辑文档":"Edit document"}),r.meta&&e.jsxs("details",{children:[e.jsx("summary",{className:"min-h-11 cursor-pointer py-3 text-xs text-muted-foreground",children:n?"版本信息":"Version information"}),e.jsx("dl",{className:"grid grid-cols-[auto_1fr] gap-x-3 gap-y-1 break-all pb-3 text-xs text-muted-foreground",children:Object.entries(r.meta).filter(([u])=>u!=="previousDiagram").map(([u,l])=>e.jsxs("div",{className:"contents",children:[e.jsx("dt",{children:{created:n?"创建":"Created",updated:n?"更新":"Updated",updateCount:n?"更新次数":"Updates",gitCommit:"Commit",gitBranch:n?"分支":"Branch"}[u]??u}),e.jsx("dd",{children:String(l)})]},u))})]})]})}function Qe({root:r,file:o,perspective:a,node:d,initialField:p,onSaved:n,onCancel:x}){const{locale:g}=he(),u=g==="zh",[l,T]=s.useState(null),[M,k]=s.useState(p),[C,E]=s.useState(""),[v,R]=s.useState(""),[z,S]=s.useState(""),[c,f]=s.useState(!1),h=s.useRef(!0),y=s.useRef(0);s.useEffect(()=>{h.current=!0;const A=++y.current;T(null),S("");const _=new AbortController;return We(r,o,_.signal).then(I=>{!_.signal.aborted&&A===y.current&&T(I)}).catch(I=>{!_.signal.aborted&&A===y.current&&S(String(I.message))}),()=>{h.current=!1,++y.current,_.abort()}},[r,o]),s.useEffect(()=>{const A=l?.document?.perspectives.find(W=>W.id===a),_=d?A?.nodes.find(W=>W.id===d):A;if(!_||!A)return;const I=_[M]??(M==="description"?_.summary:M==="diagram"?qt(A,d):"");E(I),R(I)},[l,a,d,M]);const $=C!==v;return e.jsxs("form",{className:"flex min-h-0 flex-1 flex-col gap-3",onSubmit:A=>{if(A.preventDefault(),!l||c||!$)return;const _=y.current;f(!0),S(""),hr(r,o,a,d,M,C,l.revision).then(I=>{h.current&&_===y.current&&n(I)}).catch(I=>{h.current&&_===y.current&&S(I.message)}).finally(()=>{h.current&&_===y.current&&f(!1)})},children:[e.jsxs("label",{className:"flex items-center gap-2 text-xs",children:[u?"字段":"Field",e.jsx("select",{"aria-label":u?"文档字段":"Document field",className:"min-h-11 min-w-0 flex-1 rounded bg-surface-2 px-2",value:M,disabled:c||$,onChange:A=>k(A.target.value),children:kt.map(A=>e.jsx("option",{value:A,children:rt(A,u)},A))})]}),$&&e.jsx("p",{className:"text-xs text-muted-foreground",children:u?"保存当前字段后可切换字段。":"Save this field before switching fields."}),!l&&!z&&e.jsx("p",{role:"status",className:"text-xs",children:u?"读取最新文档…":"Loading the latest document…"}),e.jsx("textarea",{"aria-label":rt(M,u),spellCheck:!1,className:"min-h-56 w-full flex-1 resize-y rounded-lg border border-border/30 bg-surface-2 p-3 font-mono text-sm focus-visible:ring-2 focus-visible:ring-ring",disabled:!l||c,maxLength:1e5,value:C,onChange:A=>E(A.target.value)}),z&&e.jsx("p",{role:"alert",className:"break-words text-xs text-destructive",children:z}),e.jsxs("div",{className:"sticky bottom-0 flex gap-2 bg-surface py-2",children:[e.jsx("button",{type:"submit",className:"min-h-11 rounded-lg bg-primary/15 px-4 text-sm text-primary disabled:opacity-40",disabled:!l||c||!$,children:c?u?"保存中…":"Saving…":u?"保存":"Save"}),e.jsx("button",{type:"button",className:"min-h-11 rounded-lg px-4 text-sm hover:bg-surface-elevated",disabled:c,onClick:x,children:u?"取消":"Cancel"})]})]})}function yr({root:r,file:o,document:a,onLoaded:d}){const{locale:p}=he(),n=p==="zh",[x,g]=s.useState(""),[u,l]=s.useState(""),[T,M]=s.useState(!1),[k,C]=s.useState(null),[E,v]=s.useState(null),R=s.useRef(null),z=s.useRef(0);s.useEffect(()=>(z.current++,v(null),C(null),g(""),l(""),M(!1),()=>{z.current++}),[r,o]);async function S(f){const h=++z.current;M(!0),g(""),l("");try{await f(()=>h===z.current)}catch(y){h===z.current&&g(y instanceof Error?y.message:String(y))}finally{h===z.current&&M(!1)}}const c="inline-flex min-h-11 items-center gap-1.5 rounded-lg px-3 text-xs hover:bg-surface-elevated disabled:opacity-40";return e.jsxs("details",{className:"rounded-lg border border-border/15 px-3",children:[e.jsx("summary",{className:"min-h-11 cursor-pointer py-3 text-xs text-muted-foreground",children:n?"历史、导入与分享":"History, import and sharing"}),e.jsxs("div",{className:"flex flex-wrap gap-1",children:[e.jsxs("button",{className:c,type:"button",disabled:T||!a,onClick:()=>{S(async f=>{const h=await xr(r,o);f()&&C(h)})},children:[e.jsx(Ut,{size:14}),n?"更新差异":"Changes"]}),e.jsxs("button",{className:c,type:"button",disabled:T||!a,onClick:()=>{S(async()=>{await tt(new Blob([JSON.stringify(a,null,2)],{type:"application/json"}),"termdock-architecture.json")})},children:[e.jsx(et,{size:14}),"JSON"]}),e.jsxs("button",{className:c,type:"button",disabled:T||!a,onClick:()=>{S(async()=>{const f=await pr(r,o);await tt(new Blob([JSON.stringify(f,null,2)],{type:"application/json"}),"architecture.omm.json")})},children:[e.jsx(et,{size:14}),".omm"]}),e.jsxs("button",{className:c,type:"button",disabled:T,onClick:()=>R.current?.click(),children:[e.jsx(Zt,{size:14}),n?"导入":"Import"]}),e.jsxs("button",{className:c,type:"button",disabled:T||!a,onClick:()=>{S(async()=>{const f=Mt(),h=Wt(window.location.origin,{root:r,file:o,...f?{peerId:f.targetPeerId,serviceName:f.serviceName}:{}});await navigator.clipboard.writeText(h),l(n?"链接已复制,打开时需要登录此 Termdock 服务。":"Link copied. Sign in to this Termdock service to view it.")})},children:[e.jsx(er,{size:14}),n?"复制查看链接":"Copy viewer link"]})]}),e.jsx("input",{ref:R,hidden:!0,type:"file",accept:".json,application/json",onChange:f=>{const h=f.target.files?.[0];f.target.value="",h&&S(async y=>{if(h.size>5e6)throw new Error(n?"文档超过 5 MB。":"Document exceeds 5 MB.");const $=await h.text();if(!y())return;const A=JSON.parse($);if(A?.format==="termdock-omm-bundle"){const Y=await We(r,".omm");if(!y())return;v({name:h.name,value:A,file:".omm",revision:Y.revision});return}const _=Ie($),I=_.analysis?Ue(_.analysis):fe,W=await We(r,I);y()&&v({name:h.name,value:_,file:I,revision:W.revision})})}}),E&&e.jsxs("div",{className:"my-2 rounded-lg bg-surface-2 p-3 text-xs",children:[e.jsxs("p",{className:"break-all",children:[E.name," → ",E.file]}),e.jsx("p",{className:"mt-1 text-muted-foreground",children:E.file===".omm"?n?"合并文档中的目录和字段;同名字段将更新。":"Merge bundled directories and fields; matching fields are updated.":n?"保存为此范围的架构,并保留此前的版本。":"Save this scope and retain its previous version."}),e.jsxs("div",{className:"mt-2 flex gap-2",children:[e.jsx("button",{className:`${c} text-primary`,disabled:T,type:"button",onClick:()=>{S(async f=>{const h=E.file===".omm"?await fr(r,E.value,E.revision):await br(r,E.file,E.value,E.revision);f()&&(v(null),d(E.file,h))})},children:n?"确认导入":"Import document"}),e.jsx("button",{className:c,disabled:T,type:"button",onClick:()=>v(null),children:n?"取消":"Cancel"})]})]}),T&&e.jsx("p",{role:"status",className:"py-2 text-xs",children:n?"处理中…":"Working…"}),x&&e.jsx("p",{role:"alert",className:"break-words py-2 text-xs text-destructive",children:x}),u&&e.jsx("p",{role:"status",className:"py-2 text-xs text-muted-foreground",children:u}),k&&e.jsxs("div",{className:"space-y-2 pb-3",children:[k.length===0&&e.jsx("p",{className:"text-xs text-muted-foreground",children:n?"还没有历史版本。使用原生命令或文档编辑保存后会保留版本。":"No previous versions. Native saves and document edits retain history."}),k.map(f=>e.jsxs("details",{children:[e.jsxs("summary",{className:"min-h-11 cursor-pointer py-3 text-xs",children:[new Date(f.savedAt).toLocaleString()," · ",f.changes.length," ",n?"处差异":"changes"]}),e.jsx("ul",{className:"space-y-1 text-xs text-muted-foreground",children:f.changes.map((h,y)=>e.jsxs("li",{className:"break-words",children:[h.kind==="added"?"+":h.kind==="removed"?"−":"~"," ",h.perspective?h.title:n?"项目总览":h.title," · ",h.fields.join(", ")]},y))})]},f.id))]})]})}async function jr(r,o,a=fe){const{document:d}=await We(r,a,o);if(d?.analysis&&Ue(d.analysis)!==a)throw new St("Architecture scope does not match its file");return d}async function vr(r,o){return mr(r,o)}function wr({view:r,parentId:o,selectedId:a,onSelect:d,active:p=!0,referenceWidth:n,inspector:x,inspectorStage:g="details",onDismissInspector:u,onExpandedChange:l,navigation:T,heading:M}){const{t:k,locale:C}=he(),[E,v]=s.useState(1),R=s.useId().replace(/[^a-zA-Z0-9]/g,""),z=s.useRef(null),S=s.useRef(null),c=s.useRef(null),f=s.useRef(null),h=s.useRef(null),[y,$]=s.useState(""),[A,_]=s.useState(!1),[I,W]=s.useState(1),Y=s.useRef(1),[F,ie]=s.useState(!1),be=s.useRef(!0),X=s.useRef({inspector:x,onDismissInspector:u});X.current={inspector:x,onDismissInspector:u};const q=s.useRef(l);q.current=l;const Q=s.useRef({left:0,top:0}),[ae,oe]=s.useState(!1),[le,xe]=s.useState({width:320,height:320,clipHeight:0}),j=s.useRef(new Map),J=tr((i,w)=>{j.current.delete(w)&&(H.current=!0)},!0),H=s.useRef(!1),ue=s.useRef(0),U=s.useMemo(()=>Jt(r,o,E),[r,o,E]),ce=s.useMemo(()=>nt(r,o).edges,[r,o]),K=s.useMemo(()=>{const i=y.match(/viewBox="([^"]+)"/)?.[1].split(/\s+/).map(Number),w=i?.[2]||320,m=i?.[3]||240,D=F?window.innerWidth:n||le.width,N=Math.max(1,Math.min(1.4,Math.max(160,D-24)/w));return{width:w,height:m,scale:N}},[y,le.width,F,n]),ge={width:K.width*K.scale*I,height:K.height*K.scale*I},Z=(i,w,m)=>{const D=Math.max(.01,Math.min(4,i)),N=S.current;if(N){const V=N.getBoundingClientRect(),je=w===void 0?N.clientWidth/2:w-V.left,te=m===void 0?N.clientHeight/2:m-V.top,re=D/Y.current,pe=(N.scrollLeft+je)*re-je,Ae=(N.scrollTop+te)*re-te,De=()=>{S.current===N&&(N.scrollLeft=pe,N.scrollTop=Ae)};window.requestAnimationFrame?window.requestAnimationFrame(De):window.setTimeout(De,0)}Y.current=D,W(D)},L=()=>{Y.current=1,W(1),S.current&&(S.current.scrollLeft=0,S.current.scrollTop=0)};s.useEffect(()=>{let i=!1;return $(""),_(!1),L(),oe(!1),j.current.clear(),U.nodes.length>300?(_(!0),()=>{i=!0}):(sr().then(async w=>{nr(w);const m=await w.render(`td-architecture-${R}`,U.code);i||$(rr.sanitize(m.svg,{USE_PROFILES:{svg:!0,svgFilters:!0}}))}).catch(()=>{i||_(!0)}),()=>{i=!0})},[U.code,R]),s.useEffect(()=>{p||ie(!1)},[p]),s.useEffect(()=>{q.current?.(F)},[F]),s.useEffect(()=>()=>q.current?.(!1),[]),s.useLayoutEffect(()=>{const i=S.current;if(i)return i.scrollLeft=Q.current.left,i.scrollTop=Q.current.top,()=>{Q.current={left:i.scrollLeft,top:i.scrollTop}}},[F,!!y]),s.useEffect(()=>{const i=S.current;if(!i)return;const w=i.closest("[data-architecture-content]"),m=()=>{xe({width:i.clientWidth||320,height:i.clientHeight||320,clipHeight:w?.clientHeight||0})};m();const D=new ResizeObserver(m);return D.observe(i),w&&D.observe(w),()=>D.disconnect()},[y,F]),Je(c,F&&p,()=>{X.current.inspector?X.current.onDismissInspector?.():ie(!1)},()=>be.current?h.current:null),s.useEffect(()=>{if(!F)return;const i=document.body.style.overflow;return document.body.style.overflow="hidden",()=>{document.body.style.overflow=i,j.current.clear()}},[F]),s.useLayoutEffect(()=>{const i=z.current?.querySelector("svg"),w=i?.querySelector("g");if(!(!i||!w||typeof w.getBBox!="function"))try{const m=w.getBBox();if(![m.x,m.y,m.width,m.height].every(Number.isFinite)||m.width<=0||m.height<=0)return;const D=`${m.x-16} ${m.y-16} ${m.width+32} ${m.height+32}`;if(i.getAttribute("viewBox")===D)return;i.setAttribute("viewBox",D),$(i.outerHTML)}catch{}},[y,F]),s.useLayoutEffect(()=>{z.current?.querySelectorAll("g.node, g.cluster").forEach(i=>{const w=Number(i.id.match(/(?:^|-)n(\d+)(?:-|$)/)?.[1]),m=U.nodes[w];if(!m)return;i.dataset.architectureRole=m.role,i.dataset.architectureNode=m.id,i.dataset.architectureRelated=String(!!a&&ce.some(N=>N.from===a&&N.to===m.id||N.to===a&&N.from===m.id));const D=i.matches("g.cluster")?i.querySelector("g.cluster-label")??i:i;D!==i&&(i.removeAttribute("role"),i.removeAttribute("tabindex")),D.dataset.architectureNode=m.id,D.setAttribute("role","button"),D.setAttribute("tabindex","0"),D.setAttribute("aria-label",m.title),D.setAttribute("aria-pressed",String(a===m.id)),i.setAttribute("aria-pressed",String(a===m.id))})}),s.useLayoutEffect(()=>{if(!a||g==="source"||g==="analysis")return;const i=S.current,w=[...z.current?.querySelectorAll("[data-architecture-node]")??[]].find(re=>re.dataset.architectureNode===a);if(!i||!w)return;let m=i.getBoundingClientRect();const D=i.closest("[data-architecture-content]");if(!F&&D&&m.width>24&&m.height>24){const re=D.getBoundingClientRect();re.height>160&&m.height<=re.height&&(m.top<re.top?D.scrollTop+=m.top-re.top:m.bottom>re.bottom&&(D.scrollTop+=m.bottom-re.bottom),m=i.getBoundingClientRect());const pe=Math.max(m.top,re.top),Ae=Math.min(m.bottom,re.bottom);m=new DOMRect(m.left,pe,m.width,Math.max(0,Ae-pe))}const N=w.getBoundingClientRect();if(m.width<=24||m.height<=24||N.width<=0||N.height<=0)return;const V=12,je=N.width>m.width-2*V?(N.left+N.right-m.left-m.right)/2:N.left<m.left+V?N.left-m.left-V:N.right>m.right-V?N.right-m.right+V:0,te=N.height>m.height-2*V?(N.top+N.bottom-m.top-m.bottom)/2:N.top<m.top+V?N.top-m.top-V:N.bottom>m.bottom-V?N.bottom-m.bottom+V:0;i.scrollLeft+=je,i.scrollTop+=te},[a,le.width,le.height,le.clipHeight,F,g,y]);const ee=i=>{[...z.current?.querySelectorAll("[data-architecture-node]")??[]].find(w=>w.dataset.architectureNode===i)?.focus?.({preventScroll:!0}),d(i)},B="flex h-11 min-w-11 items-center justify-center rounded-lg px-2 hover:bg-surface-elevated focus-visible:ring-2 focus-visible:ring-ring disabled:opacity-40",Ce=e.jsxs(e.Fragment,{children:[e.jsx("button",{type:"button",className:B,"aria-label":k("architecture.zoomOut"),disabled:I<=.01,onClick:()=>Z(Y.current/1.25),children:e.jsx(ir,{size:17})}),e.jsxs("button",{type:"button",className:`${B} text-xs tabular-nums`,"aria-label":k("architecture.resetZoom"),title:k("architecture.resetZoom"),onClick:L,children:[Math.round(K.scale*I*100),"%"]}),e.jsx("button",{type:"button",className:B,"aria-label":k("architecture.zoomIn"),disabled:I>=4,onClick:()=>Z(Y.current*1.25),children:e.jsx(yt,{size:17})}),e.jsx("button",{type:"button",className:B,"aria-label":k("architecture.fitGraph"),onClick:()=>Z(Math.min((le.width-24)/K.width,(le.height-24)/K.height)/K.scale),children:e.jsx(ar,{size:17})}),!F&&e.jsx("button",{ref:h,type:"button",className:B,"aria-label":k("architecture.fullscreen"),onClick:()=>{be.current=!0,ie(!0)},children:e.jsx(ur,{size:17})}),e.jsx("button",{type:"button",className:B,"aria-label":k("architecture.download"),disabled:!y,onClick:()=>{oe(!1),tt(new Blob([y],{type:"image/svg+xml"}),`architecture-${r.id}.svg`).catch(()=>oe(!0))},children:e.jsx(et,{size:17})})]}),Oe=r.nodes.find(i=>i.id===o)?.title??r.title,me=e.jsxs(e.Fragment,{children:[F?e.jsxs("header",{className:"shrink-0 border-b border-border/15 px-2 py-1",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("div",{className:"min-w-0 flex-1 px-1",children:M??e.jsx("h2",{className:"truncate text-xs font-semibold",title:Oe,children:Oe})}),e.jsxs("label",{className:"flex shrink-0 items-center gap-1 text-xs text-muted-foreground",children:[C==="zh"?"展开":"Levels",e.jsx("select",{"aria-label":C==="zh"?"展开层级":"Expand levels",className:"h-11 max-w-20 rounded bg-surface px-1 text-foreground",value:E,onChange:i=>v(Number(i.target.value)),children:[0,1,2,6].map(i=>e.jsx("option",{value:i,children:i===0?C==="zh"?"当前层":"Current":i===6?C==="zh"?"全部":"All":`${i}`},i))})]}),e.jsx("button",{ref:f,type:"button",className:B,"aria-label":k("architecture.closeFullscreen"),onClick:()=>ie(!1),children:e.jsx(Se,{size:18})})]}),e.jsx("div",{className:"flex items-center justify-between gap-1",title:k("architecture.panHint"),children:Ce})]}):e.jsxs("div",{className:"shrink-0 border-b border-border/15 bg-surface-2 px-2 py-1",children:[e.jsx("div",{className:"flex items-center justify-between gap-1",children:Ce}),e.jsxs("div",{className:"flex flex-wrap items-center justify-between gap-1 px-1 text-xs text-muted-foreground",children:[e.jsx("span",{children:k("architecture.panHint")}),e.jsxs("label",{className:"flex items-center gap-2 text-xs text-muted-foreground",children:[C==="zh"?"展开层级":"Expand levels",e.jsx("select",{"aria-label":C==="zh"?"展开层级":"Expand levels",className:"min-h-8 rounded bg-surface-2 px-2 text-foreground",value:E,onChange:i=>v(Number(i.target.value)),children:[0,1,2,6].map(i=>e.jsx("option",{value:i,children:i===0?C==="zh"?"当前层":"Current level":i===6?C==="zh"?"全部":"All":`${i}`},i))})]})]})]}),F&&T&&e.jsx("div",{className:"shrink-0 px-2",children:T}),ae&&e.jsx("p",{role:"alert",className:"px-3 py-2 text-xs text-destructive",children:k("architecture.downloadFailed")}),e.jsxs("div",{className:F?"relative flex min-h-0 flex-1 flex-col overflow-hidden min-[768px]:flex-row":"relative",children:[A?e.jsx("p",{role:"alert",className:"p-4 text-sm text-muted-foreground",children:U.nodes.length>300?C==="zh"?"图中模块较多,请减少展开层级或选择单个视角。":"This graph has many modules. Expand fewer levels or select one perspective.":k("architecture.diagramFailed")}):y?e.jsx("div",{ref:S,"data-sidebar-gesture-ignore":!0,className:`termdock-architecture-viewport overflow-auto overscroll-contain p-3 ${F?"min-h-0 min-w-0 flex-1":"h-[min(50dvh,26rem)]"}`,style:{touchAction:"none",maxHeight:!F&&le.clipHeight?Math.max(160,le.clipHeight-150):void 0},onPointerDown:i=>{if(i.button!==0)return;J(i),j.current.size||(H.current=!1,ue.current=0);const w=i.target.closest("[data-architecture-node]")?.getAttribute("data-architecture-node")??void 0;j.current.set(i.pointerId,{x:i.clientX,y:i.clientY,nodeId:w}),j.current.size>1&&(H.current=!0);try{i.currentTarget.setPointerCapture?.(i.pointerId)}catch{}},onPointerMove:i=>{const w=j.current.get(i.pointerId);if(!w)return;const m=[...j.current.values()];j.current.set(i.pointerId,{...w,x:i.clientX,y:i.clientY});const D=[...j.current.values()];if(D.length>=2){const N=te=>Math.hypot(te[0].x-te[1].x,te[0].y-te[1].y),V=N(m),je=N(D);V>0&&Z(Y.current*je/V,(D[0].x+D[1].x)/2,(D[0].y+D[1].y)/2),H.current=!0}else{const N=w.x-i.clientX,V=w.y-i.clientY;ue.current+=Math.hypot(N,V),ue.current>5&&(H.current=!0),i.currentTarget.scrollLeft+=N,i.currentTarget.scrollTop+=V}},onPointerUp:i=>{const w=j.current.get(i.pointerId),m=j.current.size===1&&!H.current&&w?.nodeId;j.current.delete(i.pointerId),m&&(H.current=!0,ee(m))},onPointerCancel:i=>{j.current.delete(i.pointerId),H.current=!0},onLostPointerCapture:i=>{j.current.delete(i.pointerId)},children:e.jsx("div",{ref:z,role:"group","aria-label":k("architecture.modules"),className:"termdock-architecture-diagram mx-auto",style:ge,onClick:i=>{if(H.current)return;const m=i.target.closest("[data-architecture-node]")?.getAttribute("data-architecture-node");m&&ee(m)},onKeyDown:i=>{if(i.key!=="Enter"&&i.key!==" ")return;const w=i.target.closest("[data-architecture-node]")?.getAttribute("data-architecture-node");w&&(i.preventDefault(),ee(w))},dangerouslySetInnerHTML:{__html:y}})}):e.jsx("p",{role:"status",className:"p-4 text-sm text-muted-foreground",children:k("architecture.rendering")}),F&&x]})]});return F?Nt.createPortal(e.jsx("section",{ref:c,tabIndex:-1,role:"dialog","aria-modal":"true","aria-label":k("architecture.diagram"),"data-sidebar-gesture-ignore":!0,className:"fixed inset-0 z-modal-panel flex flex-col overflow-hidden bg-surface text-foreground pt-[env(safe-area-inset-top)] pb-[env(safe-area-inset-bottom)]",children:me}),document.body):e.jsx("section",{className:"overflow-clip rounded-xl border border-border/20 bg-surface-2","aria-label":k("architecture.diagram"),children:me})}function ke(r,o){let a=r.trim().replace(/^@/,"");/^([`"']).*\1$/.test(a)&&(a=a.slice(1,-1)),a=a.replace(/\\ /g," ").replace(/:\d+(?:-\d+)?$/,"").replace(/\/+$/,""),/^([`"']).*\1$/.test(a)&&(a=a.slice(1,-1));const d=o.replace(/\/+$/,"");if(a.startsWith("/")){if(!a.startsWith(`${d}/`))return null;a=a.slice(d.length+1)}return a=a.replace(/^\.\//,""),a.length<=1024&&Vt(a)?a:null}function ht(r,o){const a=[...r.matchAll(/^# (.+?): hunk \d+,/gm)].map(x=>x[1]),p=(a.length?a:r.split(/\r?\n/).map(x=>x.trim()).filter(Boolean)).map(x=>ke(x,o));if(p.some(x=>x===null))return null;const n=[...new Set(p)];return n.length<=20?n:null}function $t({rootPath:r,initialDirectory:o,selected:a,onChange:d,selectionDisabled:p=!1,compact:n=!1}){const{t:x}=he(),g=Ft(r),u=Gt(o||g,g),l=u.path,[T,M]=s.useState(""),[k,C]=s.useState(null),[E,v]=s.useState(0),[R,z]=s.useState(null);s.useEffect(()=>{if(!R)return;const $=window.setTimeout(()=>z(null),1800);return()=>window.clearTimeout($)},[R]);const S=new Set(a.map($=>`${g==="/"?"":g}/${$}`)),c=$=>{const A=ke($,g);p||!A||a.includes(A)||a.length>=20||d([...a,A])},f=$=>{$!==g&&!ke($,g)||(u.navigate($),M(""),C(null))},h=`inline-flex shrink-0 items-center justify-center rounded-lg text-xs hover:bg-surface-elevated focus-visible:ring-2 focus-visible:ring-ring disabled:opacity-40 ${n?"h-8 w-8 [@media(pointer:coarse)]:h-11 [@media(pointer:coarse)]:w-11":"h-11 w-11"}`,y=ke(l,g);return e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"shrink-0 px-2 py-1",children:e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx(Qt,{buttonClassName:h,iconSize:17,parent:{disabled:!u.canGoParent,onClick:()=>{u.goParent(),M(""),C(null)}},root:{disabled:l===g,onClick:()=>f(g)}}),e.jsx("span",{className:"min-w-0 flex-1 truncate text-xs font-medium",title:l,children:y??(l.split("/").pop()||"/")}),y&&e.jsx("button",{type:"button",className:`${h} text-primary`,disabled:p||!a.includes(y)&&a.length>=20,"aria-label":`${x("architecture.addScopeReference")}: ${l.split("/").pop()}`,title:y,"aria-pressed":a.includes(y),onClick:()=>c(l),children:a.includes(y)?e.jsx(Lt,{size:15}):e.jsx(Tt,{size:15})}),e.jsx("button",{type:"button",className:h,"aria-label":x("rightSidebar.refreshFiles"),onClick:()=>{v($=>$+1)},children:e.jsx(jt,{size:15})})]})}),p&&e.jsx("p",{role:"alert",className:"shrink-0 px-3 pb-2 text-xs text-muted-foreground",children:x("architecture.correctPathsFirst")}),e.jsx("div",{className:"shrink-0 border-b border-border/15 px-3 pb-2",children:e.jsx("input",{"aria-label":x("architecture.searchScopePaths"),placeholder:x("architecture.searchScopePaths"),value:T,onChange:$=>M($.target.value),className:`${n?"h-9 [@media(pointer:coarse)]:h-11":"h-11"} w-full rounded-lg border border-border/20 bg-surface-2 px-3 text-sm focus-visible:ring-2 focus-visible:ring-ring`})}),e.jsx("div",{className:"min-h-0 flex-1 overflow-auto overscroll-contain bg-surface",children:e.jsx(Pt,{rootPath:l,selectedFilePath:k,onFileSelect:$=>{C($),c($)},onDirectoryRoot:f,onPathReference:c,getReferenceText:$=>ke($,g)??$,query:T,onReferenceCopied:z,copiedReferenceKey:R,onSearchFromDirectory:f,referenceSelection:{paths:S,label:x("architecture.addScopeReference"),disabled:p||a.length>=20}},`${l}:${E}`)})]})}function Nr({rootPath:r,initialDirectory:o,initial:a,onConfirm:d,onCancel:p}){const{t:n}=he(),x=s.useRef(null);Je(x,!0,p);const g=s.useId(),[u,l]=s.useState(a);s.useEffect(()=>{const M=document.body.style.overflow;return document.body.style.overflow="hidden",()=>{document.body.style.overflow=M}},[]);const T="inline-flex min-h-11 items-center justify-center gap-1.5 rounded-lg px-3 text-xs hover:bg-surface-elevated focus-visible:ring-2 focus-visible:ring-ring disabled:opacity-40";return Nt.createPortal(e.jsxs("div",{className:"fixed inset-0 z-popover flex items-center justify-center p-[max(0.75rem,env(safe-area-inset-top))]",children:[e.jsx("button",{type:"button",className:"absolute inset-0 z-10 cursor-default bg-[var(--app-backdrop)]","aria-label":n("common.cancel"),onClick:p}),e.jsxs("section",{ref:x,id:`${g}-dialog`,tabIndex:-1,role:"dialog","aria-modal":"true","aria-labelledby":g,"aria-describedby":`${g}-hint`,className:"relative z-20 flex h-full max-h-[42rem] w-full max-w-xl flex-col overflow-hidden rounded-xl border border-border/20 bg-surface text-foreground shadow-xl",children:[e.jsxs("header",{className:"shrink-0 px-3 py-1",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("h2",{id:g,className:"min-w-0 flex-1 text-sm font-semibold",title:n("architecture.browsePathsHint"),children:n("architecture.choosePaths")}),e.jsx("button",{type:"button",className:T,"aria-label":n("common.close"),onClick:p,children:e.jsx(Se,{size:17})})]}),e.jsx("p",{id:`${g}-hint`,className:"sr-only",children:n("architecture.browsePathsHint")})]}),e.jsx($t,{rootPath:r,initialDirectory:o,selected:u,onChange:l}),e.jsxs("footer",{className:"shrink-0 space-y-2 border-t border-border/15 p-3",children:[e.jsxs("p",{className:"text-xs text-muted-foreground",children:[n("architecture.selectedPaths")," ",u.length," / 20"]}),u.length>0&&e.jsx("div",{className:"flex max-h-24 flex-wrap gap-1 overflow-y-auto",children:u.map(M=>e.jsxs("button",{type:"button",className:`${T} min-w-0 max-w-full bg-surface-2`,"aria-label":`${n("architecture.removePath")}: ${M}`,onClick:()=>l(k=>k.filter(C=>C!==M)),children:[e.jsx("span",{className:"truncate font-mono",children:M}),e.jsx(Se,{size:13,className:"shrink-0"})]},M))}),e.jsxs("div",{className:"flex justify-end gap-2",children:[e.jsx("button",{type:"button",className:T,onClick:p,children:n("common.cancel")}),e.jsx("button",{type:"button",className:`${T} bg-primary/15 text-primary`,onClick:()=>d(u),children:n("architecture.usePaths")})]})]})]})]}),document.body)}function xt({rootPath:r,initial:o,outputFile:a,currentFile:d,currentDirectory:p,active:n=!0,onInsertPrompt:x,onPrepared:g,onClose:u}){const{t:l,locale:T}=he(),M=s.useRef(null),k=s.useRef(null);Je(k,n,u),s.useLayoutEffect(()=>{n&&k.current?.scrollIntoView?.({block:"start"})},[n]);const[C,E]=s.useState(!1);s.useLayoutEffect(()=>{const L=k.current;if(!n||!L)return;const ee=()=>E(L.clientWidth>=900);if(ee(),typeof ResizeObserver>"u")return;const B=new ResizeObserver(ee);return B.observe(L),()=>B.disconnect()},[n]);const v=s.useId(),[R,z]=s.useState(o.kind),[S,c]=s.useState(o.target),[f,h]=s.useState(o.paths.join(`
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/Markdown-BQK61rwW.js","assets/app-CG7UnlvD.js","assets/react-XDCjal2T.js","assets/dnd-BCFAPC0L.js","assets/terminal-DaiFCKy_.js","assets/index-Db6cTvcd.css","assets/swiper-Bge5b7oc.js","assets/swiper-C2J0D0kV.css","assets/use-gesture-react.esm-uKjWuDRY.js","assets/referenceSelection-CYduiLc1.js","assets/list-tree-TZoK4D1s.js","assets/Markdown-DKQhs57e.css"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{a$ as gt,bz as At,eA as he,cr as e,a9 as Dt,n as et,dD as tt,dE as Mt,eB as Je,O as yt,a8 as Se,cH as Ft,C as Lt,L as Tt,R as jt,s as Pt,u as It,m as Ot,h as Pe,Y as vt,e as Bt,c as Ht,g as wt,eM as dt,eS as _t}from"./app-CG7UnlvD.js";import{b as s,r as Nt}from"./dnd-BCFAPC0L.js";import{k as Ve,p as Ie,A as kt,g as qt,H as Ut,h as Wt,c as Ue,a as fe,b as St,d as Jt,f as nt,l as Vt,n as Kt,i as Xt,D as Re,e as Yt}from"./link-DP9WqPQf.js";import{U as Zt,u as Gt,F as Qt}from"./RecordingSaveDialog-SqE6T39W.js";import{L as er}from"./DiffViewer-25DyaFuh.js";import{u as tr}from"./swiper-Bge5b7oc.js";import rr from"./purify.es-4eNOHKSq.js";import{l as sr,i as nr}from"./Markdown-BQK61rwW.js";import{e as ir}from"./AndroidMirrorView-DvaQ4bWE.js";import{S as ar}from"./RightSidebar-Cyd0Hm6s.js";import{N as mt}from"./GitLoadingSkeleton-D5nkNhPE.js";import"./react-XDCjal2T.js";import"./terminal-DaiFCKy_.js";import"./use-gesture-react.esm-uKjWuDRY.js";import"./gestureArbiter-DszagC-d.js";import"./referenceSelection-CYduiLc1.js";import"./git-compare-TvhljhDy.js";import"./list-tree-TZoK4D1s.js";import"./v4-EwEgHOG0.js";import"./unplug-wUkIQYu0.js";import"./circle-BbMJmnZN.js";import"./DiffReview-9a_DXlXn.js";import"./triangle-alert-DUjdvUeM.js";import"./ChangeWalkthroughPanel-BC7zpkq3.js";import"./chevron-left-BS8PE--U.js";import"./maximize-2-Duk9ucVy.js";import"./search-g7nZaX-p.js";import"./arrow-down-C3OQpvij.js";const lr=[["path",{d:"M17 7 7 17",key:"15tmo1"}],["path",{d:"M17 17H7V7",key:"1org7z"}]],cr=gt("arrow-down-left",lr);const or=[["path",{d:"m15 15 6 6",key:"1s409w"}],["path",{d:"m15 9 6-6",key:"ko1vev"}],["path",{d:"M21 16v5h-5",key:"1ck2sf"}],["path",{d:"M21 8V3h-5",key:"1qoq8a"}],["path",{d:"M3 16v5h5",key:"1t08am"}],["path",{d:"m3 21 6-6",key:"wwnumi"}],["path",{d:"M3 8V3h5",key:"1ln10m"}],["path",{d:"M9 9 3 3",key:"v551iv"}]],ur=gt("expand",or);function dr(r,o){const a=new Map,d={id:"all-perspectives",title:o,summary:r.summary,nodes:[],edges:[]};return r.perspectives.forEach((p,n)=>{const x=`perspective${n}`,g=new Map(p.nodes.map((u,l)=>[u.id,`${x}_node${l}`]));a.set(x,{perspective:p.id}),d.nodes.push({id:x,title:p.title,summary:p.summary,files:[],description:p.description});for(const u of p.nodes){const l=g.get(u.id);a.set(l,{perspective:p.id,node:u.id}),d.nodes.push({...u,id:l,parentId:u.parentId?g.get(u.parentId):x})}d.edges.push(...p.edges.map(u=>({...u,from:g.get(u.from),to:g.get(u.to)})))}),{view:d,references:a}}async function $e(r,o,a,d){const p=new URLSearchParams({root:r}),n=await fetch(`/api/terminal/architecture/${o}${d?"":`${o.includes("?")?"&":"?"}${p}`}`,{signal:a,cache:"no-store",...d?{method:"PUT",headers:{"Content-Type":"application/json","X-XSRF-TOKEN":await At()},body:JSON.stringify({root:r,...d})}:{}}),x=await n.json();if(!n.ok)throw new Error(x.error||`HTTP ${n.status}`);return x}async function mr(r,o){const a=await $e(r,"documents",o);if(!Array.isArray(a.files))throw new Error("Invalid architecture library");return[...new Set(a.files.filter(d=>typeof d=="string"&&Ve(d)))].sort()}async function We(r,o,a){if(!Ve(o))throw new Error("Invalid architecture file");const d=await $e(r,`document?${new URLSearchParams({file:o})}`,a);if(!("document"in d)||d.revision!==null&&typeof d.revision!="string")throw new Error("Invalid architecture response");return{document:d.document?Ie(JSON.stringify(d.document)):null,revision:typeof d.revision=="string"?d.revision:null}}async function hr(r,o,a,d,p,n,x){const g=await $e(r,"field",void 0,{file:o,perspective:a,node:d,field:p,value:n,revision:x});return Ie(JSON.stringify(g.document))}async function xr(r,o,a){const d=await $e(r,`history?${new URLSearchParams({file:o})}`,a);if(!Array.isArray(d.versions))throw new Error("Invalid architecture history");return d.versions}async function pr(r,o){return $e(r,`bundle?${new URLSearchParams({file:o})}`)}async function fr(r,o,a){const d=await $e(r,"bundle",void 0,{bundle:o,revision:a});return Ie(JSON.stringify(d.document))}async function br(r,o,a,d){const p=await $e(r,"document",void 0,{file:o,document:a,...d!==void 0?{revision:d}:{}});return Ie(JSON.stringify(p.document))}const gr=s.lazy(()=>Dt(()=>import("./Markdown-BQK61rwW.js").then(r=>r.a),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11])).then(r=>({default:r.Markdown})));function rt(r,o){return o?{description:"说明",diagram:"关系图源码",context:"上下文",constraint:"约束",concern:"问题与风险",todo:"待办",note:"备注"}[r]:{description:"Description",diagram:"Diagram source",context:"Context",constraint:"Constraints",concern:"Concerns",todo:"To do",note:"Notes"}[r]}function st({value:r,rootPath:o,onEdit:a,onOpenFile:d}){const{locale:p}=he(),n=p==="zh",x=r.description?.replace(/^#\s+([^\n]+)\n\s*/,(u,l)=>l.trim()===r.title?"":u),g=u=>e.jsx(s.Suspense,{fallback:e.jsx("p",{className:"whitespace-pre-wrap text-sm",children:u}),children:e.jsx(gr,{variant:"document",content:u,rootPath:o,onLocalLinkOpen:l=>d?.({path:o&&l.path.startsWith(`${o}/`)?l.path.slice(o.length+1):l.path})})});return e.jsxs("div",{className:"space-y-2",children:[x&&e.jsx("div",{className:"min-w-0 overflow-x-auto",children:g(x)}),kt.filter(u=>u!=="description"&&r[u]).map(u=>e.jsxs("details",{className:"rounded-lg border border-border/15 px-2",children:[e.jsx("summary",{className:"min-h-11 cursor-pointer py-3 text-xs font-medium",children:rt(u,n)}),e.jsxs("div",{className:"min-w-0 overflow-x-auto pb-2",children:[u==="diagram"?e.jsx("pre",{className:"whitespace-pre-wrap break-all text-xs",children:r[u]}):g(r[u]),a&&e.jsx("button",{type:"button",className:"min-h-11 rounded px-2 text-xs text-primary hover:bg-surface-elevated",onClick:()=>a(u),children:n?"编辑此字段":"Edit field"})]})]},u)),a&&e.jsx("button",{type:"button",className:"min-h-11 rounded-lg px-3 text-xs text-primary hover:bg-surface-elevated",onClick:()=>a("description"),children:n?"编辑文档":"Edit document"}),r.meta&&e.jsxs("details",{children:[e.jsx("summary",{className:"min-h-11 cursor-pointer py-3 text-xs text-muted-foreground",children:n?"版本信息":"Version information"}),e.jsx("dl",{className:"grid grid-cols-[auto_1fr] gap-x-3 gap-y-1 break-all pb-3 text-xs text-muted-foreground",children:Object.entries(r.meta).filter(([u])=>u!=="previousDiagram").map(([u,l])=>e.jsxs("div",{className:"contents",children:[e.jsx("dt",{children:{created:n?"创建":"Created",updated:n?"更新":"Updated",updateCount:n?"更新次数":"Updates",gitCommit:"Commit",gitBranch:n?"分支":"Branch"}[u]??u}),e.jsx("dd",{children:String(l)})]},u))})]})]})}function Qe({root:r,file:o,perspective:a,node:d,initialField:p,onSaved:n,onCancel:x}){const{locale:g}=he(),u=g==="zh",[l,T]=s.useState(null),[M,k]=s.useState(p),[C,E]=s.useState(""),[v,R]=s.useState(""),[z,S]=s.useState(""),[c,f]=s.useState(!1),h=s.useRef(!0),y=s.useRef(0);s.useEffect(()=>{h.current=!0;const A=++y.current;T(null),S("");const _=new AbortController;return We(r,o,_.signal).then(I=>{!_.signal.aborted&&A===y.current&&T(I)}).catch(I=>{!_.signal.aborted&&A===y.current&&S(String(I.message))}),()=>{h.current=!1,++y.current,_.abort()}},[r,o]),s.useEffect(()=>{const A=l?.document?.perspectives.find(W=>W.id===a),_=d?A?.nodes.find(W=>W.id===d):A;if(!_||!A)return;const I=_[M]??(M==="description"?_.summary:M==="diagram"?qt(A,d):"");E(I),R(I)},[l,a,d,M]);const $=C!==v;return e.jsxs("form",{className:"flex min-h-0 flex-1 flex-col gap-3",onSubmit:A=>{if(A.preventDefault(),!l||c||!$)return;const _=y.current;f(!0),S(""),hr(r,o,a,d,M,C,l.revision).then(I=>{h.current&&_===y.current&&n(I)}).catch(I=>{h.current&&_===y.current&&S(I.message)}).finally(()=>{h.current&&_===y.current&&f(!1)})},children:[e.jsxs("label",{className:"flex items-center gap-2 text-xs",children:[u?"字段":"Field",e.jsx("select",{"aria-label":u?"文档字段":"Document field",className:"min-h-11 min-w-0 flex-1 rounded bg-surface-2 px-2",value:M,disabled:c||$,onChange:A=>k(A.target.value),children:kt.map(A=>e.jsx("option",{value:A,children:rt(A,u)},A))})]}),$&&e.jsx("p",{className:"text-xs text-muted-foreground",children:u?"保存当前字段后可切换字段。":"Save this field before switching fields."}),!l&&!z&&e.jsx("p",{role:"status",className:"text-xs",children:u?"读取最新文档…":"Loading the latest document…"}),e.jsx("textarea",{"aria-label":rt(M,u),spellCheck:!1,className:"min-h-56 w-full flex-1 resize-y rounded-lg border border-border/30 bg-surface-2 p-3 font-mono text-sm focus-visible:ring-2 focus-visible:ring-ring",disabled:!l||c,maxLength:1e5,value:C,onChange:A=>E(A.target.value)}),z&&e.jsx("p",{role:"alert",className:"break-words text-xs text-destructive",children:z}),e.jsxs("div",{className:"sticky bottom-0 flex gap-2 bg-surface py-2",children:[e.jsx("button",{type:"submit",className:"min-h-11 rounded-lg bg-primary/15 px-4 text-sm text-primary disabled:opacity-40",disabled:!l||c||!$,children:c?u?"保存中…":"Saving…":u?"保存":"Save"}),e.jsx("button",{type:"button",className:"min-h-11 rounded-lg px-4 text-sm hover:bg-surface-elevated",disabled:c,onClick:x,children:u?"取消":"Cancel"})]})]})}function yr({root:r,file:o,document:a,onLoaded:d}){const{locale:p}=he(),n=p==="zh",[x,g]=s.useState(""),[u,l]=s.useState(""),[T,M]=s.useState(!1),[k,C]=s.useState(null),[E,v]=s.useState(null),R=s.useRef(null),z=s.useRef(0);s.useEffect(()=>(z.current++,v(null),C(null),g(""),l(""),M(!1),()=>{z.current++}),[r,o]);async function S(f){const h=++z.current;M(!0),g(""),l("");try{await f(()=>h===z.current)}catch(y){h===z.current&&g(y instanceof Error?y.message:String(y))}finally{h===z.current&&M(!1)}}const c="inline-flex min-h-11 items-center gap-1.5 rounded-lg px-3 text-xs hover:bg-surface-elevated disabled:opacity-40";return e.jsxs("details",{className:"rounded-lg border border-border/15 px-3",children:[e.jsx("summary",{className:"min-h-11 cursor-pointer py-3 text-xs text-muted-foreground",children:n?"历史、导入与分享":"History, import and sharing"}),e.jsxs("div",{className:"flex flex-wrap gap-1",children:[e.jsxs("button",{className:c,type:"button",disabled:T||!a,onClick:()=>{S(async f=>{const h=await xr(r,o);f()&&C(h)})},children:[e.jsx(Ut,{size:14}),n?"更新差异":"Changes"]}),e.jsxs("button",{className:c,type:"button",disabled:T||!a,onClick:()=>{S(async()=>{await tt(new Blob([JSON.stringify(a,null,2)],{type:"application/json"}),"termdock-architecture.json")})},children:[e.jsx(et,{size:14}),"JSON"]}),e.jsxs("button",{className:c,type:"button",disabled:T||!a,onClick:()=>{S(async()=>{const f=await pr(r,o);await tt(new Blob([JSON.stringify(f,null,2)],{type:"application/json"}),"architecture.omm.json")})},children:[e.jsx(et,{size:14}),".omm"]}),e.jsxs("button",{className:c,type:"button",disabled:T,onClick:()=>R.current?.click(),children:[e.jsx(Zt,{size:14}),n?"导入":"Import"]}),e.jsxs("button",{className:c,type:"button",disabled:T||!a,onClick:()=>{S(async()=>{const f=Mt(),h=Wt(window.location.origin,{root:r,file:o,...f?{peerId:f.targetPeerId,serviceName:f.serviceName}:{}});await navigator.clipboard.writeText(h),l(n?"链接已复制,打开时需要登录此 Termdock 服务。":"Link copied. Sign in to this Termdock service to view it.")})},children:[e.jsx(er,{size:14}),n?"复制查看链接":"Copy viewer link"]})]}),e.jsx("input",{ref:R,hidden:!0,type:"file",accept:".json,application/json",onChange:f=>{const h=f.target.files?.[0];f.target.value="",h&&S(async y=>{if(h.size>5e6)throw new Error(n?"文档超过 5 MB。":"Document exceeds 5 MB.");const $=await h.text();if(!y())return;const A=JSON.parse($);if(A?.format==="termdock-omm-bundle"){const Y=await We(r,".omm");if(!y())return;v({name:h.name,value:A,file:".omm",revision:Y.revision});return}const _=Ie($),I=_.analysis?Ue(_.analysis):fe,W=await We(r,I);y()&&v({name:h.name,value:_,file:I,revision:W.revision})})}}),E&&e.jsxs("div",{className:"my-2 rounded-lg bg-surface-2 p-3 text-xs",children:[e.jsxs("p",{className:"break-all",children:[E.name," → ",E.file]}),e.jsx("p",{className:"mt-1 text-muted-foreground",children:E.file===".omm"?n?"合并文档中的目录和字段;同名字段将更新。":"Merge bundled directories and fields; matching fields are updated.":n?"保存为此范围的架构,并保留此前的版本。":"Save this scope and retain its previous version."}),e.jsxs("div",{className:"mt-2 flex gap-2",children:[e.jsx("button",{className:`${c} text-primary`,disabled:T,type:"button",onClick:()=>{S(async f=>{const h=E.file===".omm"?await fr(r,E.value,E.revision):await br(r,E.file,E.value,E.revision);f()&&(v(null),d(E.file,h))})},children:n?"确认导入":"Import document"}),e.jsx("button",{className:c,disabled:T,type:"button",onClick:()=>v(null),children:n?"取消":"Cancel"})]})]}),T&&e.jsx("p",{role:"status",className:"py-2 text-xs",children:n?"处理中…":"Working…"}),x&&e.jsx("p",{role:"alert",className:"break-words py-2 text-xs text-destructive",children:x}),u&&e.jsx("p",{role:"status",className:"py-2 text-xs text-muted-foreground",children:u}),k&&e.jsxs("div",{className:"space-y-2 pb-3",children:[k.length===0&&e.jsx("p",{className:"text-xs text-muted-foreground",children:n?"还没有历史版本。使用原生命令或文档编辑保存后会保留版本。":"No previous versions. Native saves and document edits retain history."}),k.map(f=>e.jsxs("details",{children:[e.jsxs("summary",{className:"min-h-11 cursor-pointer py-3 text-xs",children:[new Date(f.savedAt).toLocaleString()," · ",f.changes.length," ",n?"处差异":"changes"]}),e.jsx("ul",{className:"space-y-1 text-xs text-muted-foreground",children:f.changes.map((h,y)=>e.jsxs("li",{className:"break-words",children:[h.kind==="added"?"+":h.kind==="removed"?"−":"~"," ",h.perspective?h.title:n?"项目总览":h.title," · ",h.fields.join(", ")]},y))})]},f.id))]})]})}async function jr(r,o,a=fe){const{document:d}=await We(r,a,o);if(d?.analysis&&Ue(d.analysis)!==a)throw new St("Architecture scope does not match its file");return d}async function vr(r,o){return mr(r,o)}function wr({view:r,parentId:o,selectedId:a,onSelect:d,active:p=!0,referenceWidth:n,inspector:x,inspectorStage:g="details",onDismissInspector:u,onExpandedChange:l,navigation:T,heading:M}){const{t:k,locale:C}=he(),[E,v]=s.useState(1),R=s.useId().replace(/[^a-zA-Z0-9]/g,""),z=s.useRef(null),S=s.useRef(null),c=s.useRef(null),f=s.useRef(null),h=s.useRef(null),[y,$]=s.useState(""),[A,_]=s.useState(!1),[I,W]=s.useState(1),Y=s.useRef(1),[F,ie]=s.useState(!1),be=s.useRef(!0),X=s.useRef({inspector:x,onDismissInspector:u});X.current={inspector:x,onDismissInspector:u};const q=s.useRef(l);q.current=l;const Q=s.useRef({left:0,top:0}),[ae,oe]=s.useState(!1),[le,xe]=s.useState({width:320,height:320,clipHeight:0}),j=s.useRef(new Map),J=tr((i,w)=>{j.current.delete(w)&&(H.current=!0)},!0),H=s.useRef(!1),ue=s.useRef(0),U=s.useMemo(()=>Jt(r,o,E),[r,o,E]),ce=s.useMemo(()=>nt(r,o).edges,[r,o]),K=s.useMemo(()=>{const i=y.match(/viewBox="([^"]+)"/)?.[1].split(/\s+/).map(Number),w=i?.[2]||320,m=i?.[3]||240,D=F?window.innerWidth:n||le.width,N=Math.max(1,Math.min(1.4,Math.max(160,D-24)/w));return{width:w,height:m,scale:N}},[y,le.width,F,n]),ge={width:K.width*K.scale*I,height:K.height*K.scale*I},Z=(i,w,m)=>{const D=Math.max(.01,Math.min(4,i)),N=S.current;if(N){const V=N.getBoundingClientRect(),je=w===void 0?N.clientWidth/2:w-V.left,te=m===void 0?N.clientHeight/2:m-V.top,re=D/Y.current,pe=(N.scrollLeft+je)*re-je,Ae=(N.scrollTop+te)*re-te,De=()=>{S.current===N&&(N.scrollLeft=pe,N.scrollTop=Ae)};window.requestAnimationFrame?window.requestAnimationFrame(De):window.setTimeout(De,0)}Y.current=D,W(D)},L=()=>{Y.current=1,W(1),S.current&&(S.current.scrollLeft=0,S.current.scrollTop=0)};s.useEffect(()=>{let i=!1;return $(""),_(!1),L(),oe(!1),j.current.clear(),U.nodes.length>300?(_(!0),()=>{i=!0}):(sr().then(async w=>{nr(w);const m=await w.render(`td-architecture-${R}`,U.code);i||$(rr.sanitize(m.svg,{USE_PROFILES:{svg:!0,svgFilters:!0}}))}).catch(()=>{i||_(!0)}),()=>{i=!0})},[U.code,R]),s.useEffect(()=>{p||ie(!1)},[p]),s.useEffect(()=>{q.current?.(F)},[F]),s.useEffect(()=>()=>q.current?.(!1),[]),s.useLayoutEffect(()=>{const i=S.current;if(i)return i.scrollLeft=Q.current.left,i.scrollTop=Q.current.top,()=>{Q.current={left:i.scrollLeft,top:i.scrollTop}}},[F,!!y]),s.useEffect(()=>{const i=S.current;if(!i)return;const w=i.closest("[data-architecture-content]"),m=()=>{xe({width:i.clientWidth||320,height:i.clientHeight||320,clipHeight:w?.clientHeight||0})};m();const D=new ResizeObserver(m);return D.observe(i),w&&D.observe(w),()=>D.disconnect()},[y,F]),Je(c,F&&p,()=>{X.current.inspector?X.current.onDismissInspector?.():ie(!1)},()=>be.current?h.current:null),s.useEffect(()=>{if(!F)return;const i=document.body.style.overflow;return document.body.style.overflow="hidden",()=>{document.body.style.overflow=i,j.current.clear()}},[F]),s.useLayoutEffect(()=>{const i=z.current?.querySelector("svg"),w=i?.querySelector("g");if(!(!i||!w||typeof w.getBBox!="function"))try{const m=w.getBBox();if(![m.x,m.y,m.width,m.height].every(Number.isFinite)||m.width<=0||m.height<=0)return;const D=`${m.x-16} ${m.y-16} ${m.width+32} ${m.height+32}`;if(i.getAttribute("viewBox")===D)return;i.setAttribute("viewBox",D),$(i.outerHTML)}catch{}},[y,F]),s.useLayoutEffect(()=>{z.current?.querySelectorAll("g.node, g.cluster").forEach(i=>{const w=Number(i.id.match(/(?:^|-)n(\d+)(?:-|$)/)?.[1]),m=U.nodes[w];if(!m)return;i.dataset.architectureRole=m.role,i.dataset.architectureNode=m.id,i.dataset.architectureRelated=String(!!a&&ce.some(N=>N.from===a&&N.to===m.id||N.to===a&&N.from===m.id));const D=i.matches("g.cluster")?i.querySelector("g.cluster-label")??i:i;D!==i&&(i.removeAttribute("role"),i.removeAttribute("tabindex")),D.dataset.architectureNode=m.id,D.setAttribute("role","button"),D.setAttribute("tabindex","0"),D.setAttribute("aria-label",m.title),D.setAttribute("aria-pressed",String(a===m.id)),i.setAttribute("aria-pressed",String(a===m.id))})}),s.useLayoutEffect(()=>{if(!a||g==="source"||g==="analysis")return;const i=S.current,w=[...z.current?.querySelectorAll("[data-architecture-node]")??[]].find(re=>re.dataset.architectureNode===a);if(!i||!w)return;let m=i.getBoundingClientRect();const D=i.closest("[data-architecture-content]");if(!F&&D&&m.width>24&&m.height>24){const re=D.getBoundingClientRect();re.height>160&&m.height<=re.height&&(m.top<re.top?D.scrollTop+=m.top-re.top:m.bottom>re.bottom&&(D.scrollTop+=m.bottom-re.bottom),m=i.getBoundingClientRect());const pe=Math.max(m.top,re.top),Ae=Math.min(m.bottom,re.bottom);m=new DOMRect(m.left,pe,m.width,Math.max(0,Ae-pe))}const N=w.getBoundingClientRect();if(m.width<=24||m.height<=24||N.width<=0||N.height<=0)return;const V=12,je=N.width>m.width-2*V?(N.left+N.right-m.left-m.right)/2:N.left<m.left+V?N.left-m.left-V:N.right>m.right-V?N.right-m.right+V:0,te=N.height>m.height-2*V?(N.top+N.bottom-m.top-m.bottom)/2:N.top<m.top+V?N.top-m.top-V:N.bottom>m.bottom-V?N.bottom-m.bottom+V:0;i.scrollLeft+=je,i.scrollTop+=te},[a,le.width,le.height,le.clipHeight,F,g,y]);const ee=i=>{[...z.current?.querySelectorAll("[data-architecture-node]")??[]].find(w=>w.dataset.architectureNode===i)?.focus?.({preventScroll:!0}),d(i)},B="flex h-11 min-w-11 items-center justify-center rounded-lg px-2 hover:bg-surface-elevated focus-visible:ring-2 focus-visible:ring-ring disabled:opacity-40",Ce=e.jsxs(e.Fragment,{children:[e.jsx("button",{type:"button",className:B,"aria-label":k("architecture.zoomOut"),disabled:I<=.01,onClick:()=>Z(Y.current/1.25),children:e.jsx(ir,{size:17})}),e.jsxs("button",{type:"button",className:`${B} text-xs tabular-nums`,"aria-label":k("architecture.resetZoom"),title:k("architecture.resetZoom"),onClick:L,children:[Math.round(K.scale*I*100),"%"]}),e.jsx("button",{type:"button",className:B,"aria-label":k("architecture.zoomIn"),disabled:I>=4,onClick:()=>Z(Y.current*1.25),children:e.jsx(yt,{size:17})}),e.jsx("button",{type:"button",className:B,"aria-label":k("architecture.fitGraph"),onClick:()=>Z(Math.min((le.width-24)/K.width,(le.height-24)/K.height)/K.scale),children:e.jsx(ar,{size:17})}),!F&&e.jsx("button",{ref:h,type:"button",className:B,"aria-label":k("architecture.fullscreen"),onClick:()=>{be.current=!0,ie(!0)},children:e.jsx(ur,{size:17})}),e.jsx("button",{type:"button",className:B,"aria-label":k("architecture.download"),disabled:!y,onClick:()=>{oe(!1),tt(new Blob([y],{type:"image/svg+xml"}),`architecture-${r.id}.svg`).catch(()=>oe(!0))},children:e.jsx(et,{size:17})})]}),Oe=r.nodes.find(i=>i.id===o)?.title??r.title,me=e.jsxs(e.Fragment,{children:[F?e.jsxs("header",{className:"shrink-0 border-b border-border/15 px-2 py-1",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("div",{className:"min-w-0 flex-1 px-1",children:M??e.jsx("h2",{className:"truncate text-xs font-semibold",title:Oe,children:Oe})}),e.jsxs("label",{className:"flex shrink-0 items-center gap-1 text-xs text-muted-foreground",children:[C==="zh"?"展开":"Levels",e.jsx("select",{"aria-label":C==="zh"?"展开层级":"Expand levels",className:"h-11 max-w-20 rounded bg-surface px-1 text-foreground",value:E,onChange:i=>v(Number(i.target.value)),children:[0,1,2,6].map(i=>e.jsx("option",{value:i,children:i===0?C==="zh"?"当前层":"Current":i===6?C==="zh"?"全部":"All":`${i}`},i))})]}),e.jsx("button",{ref:f,type:"button",className:B,"aria-label":k("architecture.closeFullscreen"),onClick:()=>ie(!1),children:e.jsx(Se,{size:18})})]}),e.jsx("div",{className:"flex items-center justify-between gap-1",title:k("architecture.panHint"),children:Ce})]}):e.jsxs("div",{className:"shrink-0 border-b border-border/15 bg-surface-2 px-2 py-1",children:[e.jsx("div",{className:"flex items-center justify-between gap-1",children:Ce}),e.jsxs("div",{className:"flex flex-wrap items-center justify-between gap-1 px-1 text-xs text-muted-foreground",children:[e.jsx("span",{children:k("architecture.panHint")}),e.jsxs("label",{className:"flex items-center gap-2 text-xs text-muted-foreground",children:[C==="zh"?"展开层级":"Expand levels",e.jsx("select",{"aria-label":C==="zh"?"展开层级":"Expand levels",className:"min-h-8 rounded bg-surface-2 px-2 text-foreground",value:E,onChange:i=>v(Number(i.target.value)),children:[0,1,2,6].map(i=>e.jsx("option",{value:i,children:i===0?C==="zh"?"当前层":"Current level":i===6?C==="zh"?"全部":"All":`${i}`},i))})]})]})]}),F&&T&&e.jsx("div",{className:"shrink-0 px-2",children:T}),ae&&e.jsx("p",{role:"alert",className:"px-3 py-2 text-xs text-destructive",children:k("architecture.downloadFailed")}),e.jsxs("div",{className:F?"relative flex min-h-0 flex-1 flex-col overflow-hidden min-[768px]:flex-row":"relative",children:[A?e.jsx("p",{role:"alert",className:"p-4 text-sm text-muted-foreground",children:U.nodes.length>300?C==="zh"?"图中模块较多,请减少展开层级或选择单个视角。":"This graph has many modules. Expand fewer levels or select one perspective.":k("architecture.diagramFailed")}):y?e.jsx("div",{ref:S,"data-sidebar-gesture-ignore":!0,className:`termdock-architecture-viewport overflow-auto overscroll-contain p-3 ${F?"min-h-0 min-w-0 flex-1":"h-[min(50dvh,26rem)]"}`,style:{touchAction:"none",maxHeight:!F&&le.clipHeight?Math.max(160,le.clipHeight-150):void 0},onPointerDown:i=>{if(i.button!==0)return;J(i),j.current.size||(H.current=!1,ue.current=0);const w=i.target.closest("[data-architecture-node]")?.getAttribute("data-architecture-node")??void 0;j.current.set(i.pointerId,{x:i.clientX,y:i.clientY,nodeId:w}),j.current.size>1&&(H.current=!0);try{i.currentTarget.setPointerCapture?.(i.pointerId)}catch{}},onPointerMove:i=>{const w=j.current.get(i.pointerId);if(!w)return;const m=[...j.current.values()];j.current.set(i.pointerId,{...w,x:i.clientX,y:i.clientY});const D=[...j.current.values()];if(D.length>=2){const N=te=>Math.hypot(te[0].x-te[1].x,te[0].y-te[1].y),V=N(m),je=N(D);V>0&&Z(Y.current*je/V,(D[0].x+D[1].x)/2,(D[0].y+D[1].y)/2),H.current=!0}else{const N=w.x-i.clientX,V=w.y-i.clientY;ue.current+=Math.hypot(N,V),ue.current>5&&(H.current=!0),i.currentTarget.scrollLeft+=N,i.currentTarget.scrollTop+=V}},onPointerUp:i=>{const w=j.current.get(i.pointerId),m=j.current.size===1&&!H.current&&w?.nodeId;j.current.delete(i.pointerId),m&&(H.current=!0,ee(m))},onPointerCancel:i=>{j.current.delete(i.pointerId),H.current=!0},onLostPointerCapture:i=>{j.current.delete(i.pointerId)},children:e.jsx("div",{ref:z,role:"group","aria-label":k("architecture.modules"),className:"termdock-architecture-diagram mx-auto",style:ge,onClick:i=>{if(H.current)return;const m=i.target.closest("[data-architecture-node]")?.getAttribute("data-architecture-node");m&&ee(m)},onKeyDown:i=>{if(i.key!=="Enter"&&i.key!==" ")return;const w=i.target.closest("[data-architecture-node]")?.getAttribute("data-architecture-node");w&&(i.preventDefault(),ee(w))},dangerouslySetInnerHTML:{__html:y}})}):e.jsx("p",{role:"status",className:"p-4 text-sm text-muted-foreground",children:k("architecture.rendering")}),F&&x]})]});return F?Nt.createPortal(e.jsx("section",{ref:c,tabIndex:-1,role:"dialog","aria-modal":"true","aria-label":k("architecture.diagram"),"data-sidebar-gesture-ignore":!0,className:"fixed inset-0 z-modal-panel flex flex-col overflow-hidden bg-surface text-foreground pt-[env(safe-area-inset-top)] pb-[env(safe-area-inset-bottom)]",children:me}),document.body):e.jsx("section",{className:"overflow-clip rounded-xl border border-border/20 bg-surface-2","aria-label":k("architecture.diagram"),children:me})}function ke(r,o){let a=r.trim().replace(/^@/,"");/^([`"']).*\1$/.test(a)&&(a=a.slice(1,-1)),a=a.replace(/\\ /g," ").replace(/:\d+(?:-\d+)?$/,"").replace(/\/+$/,""),/^([`"']).*\1$/.test(a)&&(a=a.slice(1,-1));const d=o.replace(/\/+$/,"");if(a.startsWith("/")){if(!a.startsWith(`${d}/`))return null;a=a.slice(d.length+1)}return a=a.replace(/^\.\//,""),a.length<=1024&&Vt(a)?a:null}function ht(r,o){const a=[...r.matchAll(/^# (.+?): hunk \d+,/gm)].map(x=>x[1]),p=(a.length?a:r.split(/\r?\n/).map(x=>x.trim()).filter(Boolean)).map(x=>ke(x,o));if(p.some(x=>x===null))return null;const n=[...new Set(p)];return n.length<=20?n:null}function $t({rootPath:r,initialDirectory:o,selected:a,onChange:d,selectionDisabled:p=!1,compact:n=!1}){const{t:x}=he(),g=Ft(r),u=Gt(o||g,g),l=u.path,[T,M]=s.useState(""),[k,C]=s.useState(null),[E,v]=s.useState(0),[R,z]=s.useState(null);s.useEffect(()=>{if(!R)return;const $=window.setTimeout(()=>z(null),1800);return()=>window.clearTimeout($)},[R]);const S=new Set(a.map($=>`${g==="/"?"":g}/${$}`)),c=$=>{const A=ke($,g);p||!A||a.includes(A)||a.length>=20||d([...a,A])},f=$=>{$!==g&&!ke($,g)||(u.navigate($),M(""),C(null))},h=`inline-flex shrink-0 items-center justify-center rounded-lg text-xs hover:bg-surface-elevated focus-visible:ring-2 focus-visible:ring-ring disabled:opacity-40 ${n?"h-8 w-8 [@media(pointer:coarse)]:h-11 [@media(pointer:coarse)]:w-11":"h-11 w-11"}`,y=ke(l,g);return e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"shrink-0 px-2 py-1",children:e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx(Qt,{buttonClassName:h,iconSize:17,parent:{disabled:!u.canGoParent,onClick:()=>{u.goParent(),M(""),C(null)}},root:{disabled:l===g,onClick:()=>f(g)}}),e.jsx("span",{className:"min-w-0 flex-1 truncate text-xs font-medium",title:l,children:y??(l.split("/").pop()||"/")}),y&&e.jsx("button",{type:"button",className:`${h} text-primary`,disabled:p||!a.includes(y)&&a.length>=20,"aria-label":`${x("architecture.addScopeReference")}: ${l.split("/").pop()}`,title:y,"aria-pressed":a.includes(y),onClick:()=>c(l),children:a.includes(y)?e.jsx(Lt,{size:15}):e.jsx(Tt,{size:15})}),e.jsx("button",{type:"button",className:h,"aria-label":x("rightSidebar.refreshFiles"),onClick:()=>{v($=>$+1)},children:e.jsx(jt,{size:15})})]})}),p&&e.jsx("p",{role:"alert",className:"shrink-0 px-3 pb-2 text-xs text-muted-foreground",children:x("architecture.correctPathsFirst")}),e.jsx("div",{className:"shrink-0 border-b border-border/15 px-3 pb-2",children:e.jsx("input",{"aria-label":x("architecture.searchScopePaths"),placeholder:x("architecture.searchScopePaths"),value:T,onChange:$=>M($.target.value),className:`${n?"h-9 [@media(pointer:coarse)]:h-11":"h-11"} w-full rounded-lg border border-border/20 bg-surface-2 px-3 text-sm focus-visible:ring-2 focus-visible:ring-ring`})}),e.jsx("div",{className:"min-h-0 flex-1 overflow-auto overscroll-contain bg-surface",children:e.jsx(Pt,{rootPath:l,selectedFilePath:k,onFileSelect:$=>{C($),c($)},onDirectoryRoot:f,onPathReference:c,getReferenceText:$=>ke($,g)??$,query:T,onReferenceCopied:z,copiedReferenceKey:R,onSearchFromDirectory:f,referenceSelection:{paths:S,label:x("architecture.addScopeReference"),disabled:p||a.length>=20}},`${l}:${E}`)})]})}function Nr({rootPath:r,initialDirectory:o,initial:a,onConfirm:d,onCancel:p}){const{t:n}=he(),x=s.useRef(null);Je(x,!0,p);const g=s.useId(),[u,l]=s.useState(a);s.useEffect(()=>{const M=document.body.style.overflow;return document.body.style.overflow="hidden",()=>{document.body.style.overflow=M}},[]);const T="inline-flex min-h-11 items-center justify-center gap-1.5 rounded-lg px-3 text-xs hover:bg-surface-elevated focus-visible:ring-2 focus-visible:ring-ring disabled:opacity-40";return Nt.createPortal(e.jsxs("div",{className:"fixed inset-0 z-popover flex items-center justify-center p-[max(0.75rem,env(safe-area-inset-top))]",children:[e.jsx("button",{type:"button",className:"absolute inset-0 z-10 cursor-default bg-[var(--app-backdrop)]","aria-label":n("common.cancel"),onClick:p}),e.jsxs("section",{ref:x,id:`${g}-dialog`,tabIndex:-1,role:"dialog","aria-modal":"true","aria-labelledby":g,"aria-describedby":`${g}-hint`,className:"relative z-20 flex h-full max-h-[42rem] w-full max-w-xl flex-col overflow-hidden rounded-xl border border-border/20 bg-surface text-foreground shadow-xl",children:[e.jsxs("header",{className:"shrink-0 px-3 py-1",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("h2",{id:g,className:"min-w-0 flex-1 text-sm font-semibold",title:n("architecture.browsePathsHint"),children:n("architecture.choosePaths")}),e.jsx("button",{type:"button",className:T,"aria-label":n("common.close"),onClick:p,children:e.jsx(Se,{size:17})})]}),e.jsx("p",{id:`${g}-hint`,className:"sr-only",children:n("architecture.browsePathsHint")})]}),e.jsx($t,{rootPath:r,initialDirectory:o,selected:u,onChange:l}),e.jsxs("footer",{className:"shrink-0 space-y-2 border-t border-border/15 p-3",children:[e.jsxs("p",{className:"text-xs text-muted-foreground",children:[n("architecture.selectedPaths")," ",u.length," / 20"]}),u.length>0&&e.jsx("div",{className:"flex max-h-24 flex-wrap gap-1 overflow-y-auto",children:u.map(M=>e.jsxs("button",{type:"button",className:`${T} min-w-0 max-w-full bg-surface-2`,"aria-label":`${n("architecture.removePath")}: ${M}`,onClick:()=>l(k=>k.filter(C=>C!==M)),children:[e.jsx("span",{className:"truncate font-mono",children:M}),e.jsx(Se,{size:13,className:"shrink-0"})]},M))}),e.jsxs("div",{className:"flex justify-end gap-2",children:[e.jsx("button",{type:"button",className:T,onClick:p,children:n("common.cancel")}),e.jsx("button",{type:"button",className:`${T} bg-primary/15 text-primary`,onClick:()=>d(u),children:n("architecture.usePaths")})]})]})]})]}),document.body)}function xt({rootPath:r,initial:o,outputFile:a,currentFile:d,currentDirectory:p,active:n=!0,onInsertPrompt:x,onPrepared:g,onClose:u}){const{t:l,locale:T}=he(),M=s.useRef(null),k=s.useRef(null);Je(k,n,u),s.useLayoutEffect(()=>{n&&k.current?.scrollIntoView?.({block:"start"})},[n]);const[C,E]=s.useState(!1);s.useLayoutEffect(()=>{const L=k.current;if(!n||!L)return;const ee=()=>E(L.clientWidth>=900);if(ee(),typeof ResizeObserver>"u")return;const B=new ResizeObserver(ee);return B.observe(L),()=>B.disconnect()},[n]);const v=s.useId(),[R,z]=s.useState(o.kind),[S,c]=s.useState(o.target),[f,h]=s.useState(o.paths.join(`
|
|
3
3
|
`)),[y,$]=s.useState(o.depth),[A,_]=s.useState(o.focus),[I,W]=s.useState(null),[Y,F]=s.useState(!1),[ie,be]=s.useState(!1),X=s.useRef(0);s.useEffect(()=>()=>{X.current++},[]),s.useEffect(()=>{n||(X.current++,F(!1),be(!1))},[n]);const q=ht(f,r),Q=d?ke(d,r):null,ae=p?ke(p,r):null,oe=ae?p:Q?d.slice(0,d.lastIndexOf("/")):r,xe=n&&C&&R!=="project"&&!a&&!ie;let j=null;try{(R==="project"||q)&&(j=Kt({kind:R,target:S,paths:q??[],depth:y,focus:A}))}catch{}const J=j?Xt(r,T,j,a):"",H="inline-flex min-h-11 items-center justify-center gap-1.5 rounded-lg text-xs font-medium transition hover:bg-surface-elevated focus-visible:ring-2 focus-visible:ring-ring disabled:opacity-40",ue=`${H} px-3`,U=`${H} px-1`,ce="min-h-10 w-full min-w-0 rounded-lg border border-border/20 bg-surface px-2 py-2 text-sm text-foreground focus-visible:ring-2 focus-visible:ring-ring",K=()=>{X.current++,F(!1),W(null)},ge=L=>{h(q?[...new Set([...q,L])].join(`
|
|
4
4
|
`):`${f.trim()}
|
|
5
5
|
${L}`),K()},Z=j;return e.jsxs("div",{ref:k,id:`${v}-workspace`,tabIndex:-1,className:xe?"grid min-h-0 min-w-0 flex-1 grid-cols-[20rem_minmax(0,1fr)] grid-rows-[minmax(0,1fr)] items-start gap-3":"min-w-0 shrink-0",children:[xe&&e.jsxs("section",{"aria-label":l("architecture.choosePaths"),"aria-describedby":`${v}-browser-hint`,className:"flex h-full min-h-0 min-w-0 flex-col overflow-hidden rounded-xl border border-border/20 bg-surface-2",children:[e.jsxs("header",{className:"flex min-h-9 shrink-0 items-center gap-2 px-3",children:[e.jsx("h3",{className:"min-w-0 flex-1 truncate text-xs font-medium",title:l("architecture.browsePathsHint"),children:l("architecture.choosePaths")}),e.jsxs("p",{role:"status","aria-label":`${l("architecture.selectedPaths")} ${q?.length??0} / 20`,className:"shrink-0 text-xs tabular-nums text-muted-foreground",children:[q?.length??0," / 20"]}),e.jsx("p",{id:`${v}-browser-hint`,className:"sr-only",children:l("architecture.browsePathsHint")})]}),e.jsx($t,{compact:!0,rootPath:r,initialDirectory:oe,selected:q??[],selectionDisabled:!q,onChange:L=>{h(L.join(`
|
|
Binary file
|
|
Binary file
|
package/dist/client/assets/{ChangeWalkthroughPanel-CVBQbHpG.js → ChangeWalkthroughPanel-BC7zpkq3.js}
RENAMED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a$ as ie,eA as ce,cr as s,Y as le,h as de,L as me,k as he}from"./app-CjIJnhRC.js";import{b as D}from"./dnd-BCFAPC0L.js";import{C as ue}from"./chevron-left-gddD8oDV.js";import{M as xe}from"./maximize-2-C2r-kY_c.js";import{G as fe,T as pe}from"./triangle-alert-BM5V0mRC.js";const ye=[["path",{d:"m14 10 7-7",key:"oa77jy"}],["path",{d:"M20 10h-6V4",key:"mjg0md"}],["path",{d:"m3 21 7-7",key:"tjx5ai"}],["path",{d:"M4 14h6v6",key:"rmj7iw"}]],ge=ie("minimize-2",ye);function be(t,d){return(d?t.filter(o=>o.repoRoot===d):t).slice().sort((o,r)=>r.injectedAt-o.injectedAt)[0]??null}function ke(t){switch(t){case"entry":case"source":return"bg-sky-400";case"ui":return"bg-fuchsia-400";case"risk":return"bg-destructive";case"test":return"bg-emerald-400";default:return"bg-primary"}}function ve(t){if(!t)return;const d=typeof t.sectionIndex=="number"?` section ${t.sectionIndex+1}`:"",i=typeof t.hunkIndex=="number"?` hunk ${t.hunkIndex+1}`:"";return`${t.filePath}${i}${d}`}function Q({anchor:t,children:d,onNavigate:i,className:o,style:r,elementRef:g,onActivate:l}){return!t&&!l?s.jsx("span",{ref:g,className:o,style:r,children:d}):s.jsx("button",{ref:g,type:"button",onClick:()=>{l?.(),t&&i(t)},title:ve(t),className:`${o} text-left transition hover:border-primary/35 hover:bg-primary/15 active:scale-[0.99]`,style:r,children:d})}const H=190,X=92,q=132,Ne=28,C=16,J=18,T=54,ee=24,re=18,we=8,B=24,z=["rgb(var(--primary-rgb))","rgb(var(--accent-rgb))","rgb(var(--warning-rgb))","rgb(var(--success-rgb))","rgb(192 132 252)"];function te(t){return z[t%z.length]}function je(t,d){return`${t.from}->${t.to}:${d}`}function Me(t,d,i){const o=Math.max(d.get(t)?.length??0,i.get(t)?.length??0);return Math.max(X,36+Math.max(0,o-1)*re)}function ne(t,d,i){if(i<=1)return t.y+t.height/2;const o=Math.max(0,t.height-36),r=Math.min(o,(i-1)*re);return t.y+t.height/2-r/2+r/(i-1)*d}function se(t,d,i){return t.slice().sort((o,r)=>{const g=d[o],l=d[r],a=i==="from"?g.toNode:g.fromNode,h=i==="from"?l.toNode:l.fromNode;return a.y-h.y||a.index-h.index||g.index-l.index})}function Ee(t,d){const i=new Map;for(const o of t){if(Math.abs(o.toNode.layer-o.fromNode.layer)!==1)continue;const r=`${o.fromNode.layer}:${o.toNode.layer}`,g=i.get(r)??[];g.push(o),i.set(r,g)}for(const o of i.values()){o.sort((h,x)=>(h.fromY+h.toY)/2-(x.fromY+x.toY)/2||h.index-x.index);const r=[];o.forEach((h,x)=>{const N=(h.fromY+h.toY)/2,M=Math.max(B,d[h.key]??0)/2;if(x===0){r.push(N);return}const w=o[x-1],E=Math.max(B,d[w.key]??0)/2;r.push(Math.max(N,r[x-1]+E+M+we))});const g=r.reduce((h,x,N)=>h+x-(o[N].fromY+o[N].toY)/2,0)/Math.max(1,r.length),l=Math.min(...r.map((h,x)=>h-g-Math.max(B,d[o[x].key]??0)/2)),a=Math.max(0,C-l);o.forEach((h,x)=>{h.laneY=r[x]-g+a})}}function $e(t,d,i={},o={}){const r=new Map(t.map((n,m)=>[n.id,{node:n,index:m}])),g=d.filter(n=>r.has(n.from)&&r.has(n.to)),l=new Map,a=new Map;for(const n of t)l.set(n.id,[]),a.set(n.id,[]);for(const n of g)l.get(n.to)?.push(n.from),a.get(n.from)?.push(n.to);const h=new Map,x=new Set,N=n=>{const m=h.get(n);if(m!==void 0)return m;if(x.has(n))return 0;x.add(n);const c=l.get(n)??[],u=c.length===0?0:Math.max(...c.map(N))+1;return x.delete(n),h.set(n,u),u};for(const n of t)N(n.id);const M=new Map;for(const n of t){const m=h.get(n.id)??0,c=M.get(m)??[],u=r.get(n.id);u&&c.push(u),M.set(m,c)}const w=[];for(const[n,m]of M.entries()){m.sort((u,f)=>u.index-f.index);let c=C+T;m.forEach(({node:u,index:f},j)=>{const I=Math.max(Me(u.id,l,a),Math.ceil(i[u.id]??X));w.push({node:u,index:f,layer:n,row:j,x:C+n*(H+q),y:c,height:I}),c+=I+Ne})}const E=new Map(w.map(n=>[n.node.id,n])),v=g.flatMap((n,m)=>{const c=E.get(n.from),u=E.get(n.to);return!c||!u?[]:[{...n,key:je(n,m),index:m,fromNode:c,toNode:u,routeIndex:m,fromPortIndex:0,toPortIndex:0,fromY:c.y+c.height/2,toY:u.y+u.height/2,laneY:(c.y+c.height/2+u.y+u.height/2)/2}]}),$=new Map,G=new Map;v.forEach((n,m)=>{$.set(n.from,[...$.get(n.from)??[],m]),G.set(n.to,[...G.get(n.to)??[],m])});for(const[n,m]of $){const c=se(m,v,"from");c.forEach((u,f)=>{const j=v[u];j.fromPortIndex=f,j.fromY=ne(E.get(n),f,c.length)})}for(const[n,m]of G){const c=se(m,v,"to");c.forEach((u,f)=>{const j=v[u];j.toPortIndex=f,j.toY=ne(E.get(n),f,c.length)})}Ee(v,o);let Y=0;v.forEach(n=>{const m=Math.min(n.fromNode.layer,n.toNode.layer),c=Math.max(n.fromNode.layer,n.toNode.layer);if(c-m<=1)return;const f=Y;Y+=1,n.routeIndex=f;const j=w.filter(A=>A.layer>=m&&A.layer<=c),I=Math.min(...j.map(A=>A.y))-ee-(Math.floor(f/2)+1)*J,O=Math.max(...j.map(A=>A.y+A.height))+ee+(Math.floor(f/2)+1)*J;n.laneY=f%2===0?Math.max(C,I):O});const S=Math.max(0,...w.map(n=>n.layer)),W=Math.max(C+T+X,...w.map(n=>n.y+n.height),...v.map(n=>n.laneY+Math.max(B,o[n.key]??0)/2));return{nodes:w,edges:v,width:C*2+(S+1)*H+S*q,height:W+C+T}}function oe(t,d=12){const i=t[0];if(!i)return"";const o=[`M ${i.x} ${i.y}`];for(let r=1;r<t.length;r+=1){const g=t[r-1],l=t[r],a=t[r+1];if(!a){o.push(`L ${l.x} ${l.y}`);continue}const h=l.x-g.x,x=l.y-g.y,N=a.x-l.x,M=a.y-l.y,w=Math.abs(h)+Math.abs(x),E=Math.abs(N)+Math.abs(M);if(w===0||E===0||h&&N||x&&M){o.push(`L ${l.x} ${l.y}`);continue}const v=Math.min(d,w/2,E/2),$={x:l.x-Math.sign(h)*v,y:l.y-Math.sign(x)*v},G={x:l.x+Math.sign(N)*v,y:l.y+Math.sign(M)*v};o.push(`L ${$.x} ${$.y}`),o.push(`Q ${l.x} ${l.y} ${G.x} ${G.y}`)}return o.join(" ")}function _e(t){const d=t.fromNode.x+H+8,i=t.fromY,o=t.toNode.x-8,r=t.toY,g=Math.abs(t.toNode.layer-t.fromNode.layer),l=d+22+t.fromPortIndex*5,a=o-22-t.toPortIndex*5;return g<=1?oe([{x:d,y:i},{x:l,y:i},{x:l,y:t.laneY},{x:a,y:t.laneY},{x:a,y:r},{x:o,y:r}]):oe([{x:d,y:i},{x:l,y:i},{x:l,y:t.laneY},{x:a,y:t.laneY},{x:a,y:r},{x:o,y:r}])}function De(t){const d=t.fromNode.x+H+8,i=t.toNode.x-8,o=Math.abs(t.toNode.layer-t.fromNode.layer),r=Math.max(34,Math.abs(i-d));return o<=1?{x:(d+i)/2,y:t.laneY,maxWidth:Math.max(72,Math.min(108,r-34))}:{x:(d+i)/2,y:t.laneY,maxWidth:Math.max(84,Math.min(120,r*.3))}}function Pe({walkthroughs:t,repoRoot:d,onNavigate:i,fullscreen:o=!1,onToggleFullscreen:r}){const{t:g}=ce(),l=D.useId(),a=be(t,d),h=D.useRef(new Map),x=D.useRef(new Map),[N,M]=D.useState({}),[w,E]=D.useState({}),[v,$]=D.useState(null),[G,Y]=D.useState(null),[S,W]=D.useState(null),[n,m]=D.useState(null),c=D.useMemo(()=>a?$e(a.nodes,a.edges,N,w):null,[N,w,a]);if(D.useLayoutEffect(()=>{if(!a)return;const e={};for(const p of a.nodes){const b=h.current.get(p.id);b&&(e[p.id]=b.offsetHeight)}M(p=>{const b=Object.keys(p),_=Object.keys(e);return b.length===_.length&&_.every(k=>p[k]===e[k])?p:e});const y={};for(const[p,b]of x.current)y[p]=b.offsetHeight;E(p=>{const b=Object.keys(p),_=Object.keys(y);return b.length===_.length&&_.every(k=>p[k]===y[k])?p:y})},[a]),!a||!c)return null;const u=`walkthrough-arrow-${l.replace(/[^a-zA-Z0-9_-]/g,"")||"default"}`,f=S??n,j=f?null:v??G,I=c.edges.some(e=>e.key===j)?j:null,O=c.edges.find(e=>e.key===I),A=f?c.edges.filter(e=>e.from===f||e.to===f):[],U=f?new Set(A.map(e=>e.key)):null,F=f?new Set([f,...A.flatMap(e=>[e.from,e.to])]):O?new Set([O.from,O.to]):null,K=new Map(a.sections.filter(e=>e.nodeId&&e.anchor).map(e=>[e.nodeId,e.anchor])),L=a.nodes.filter(e=>e.anchor??K.get(e.id)),R=L.findIndex(e=>e.id===n),V=e=>{if(L.length===0)return;const y=R<0?e<0?L.length-1:0:Math.min(L.length-1,Math.max(0,R+e)),p=L[y],b=p.anchor??K.get(p.id);b&&(m(p.id),Y(null),i(b))};return s.jsxs("section",{className:"mb-2 px-0 py-0",children:[s.jsxs("div",{className:"flex min-w-0 items-center gap-2",children:[s.jsx("span",{className:"flex h-7 w-7 shrink-0 items-center justify-center rounded-md bg-primary/12 text-primary",children:s.jsx(le,{size:14})}),s.jsxs("div",{className:"min-w-0 flex-1",children:[s.jsx("div",{className:"whitespace-normal break-words text-[12px] font-semibold leading-snug text-foreground",children:a.title}),a.summary&&s.jsx("div",{className:"mt-0.5 text-[10px] leading-snug text-muted-foreground",children:a.summary})]}),s.jsxs("div",{className:"flex shrink-0 items-center gap-1",children:[o&&L.length>0&&s.jsxs(s.Fragment,{children:[s.jsx("button",{type:"button",onClick:()=>V(-1),disabled:R===0,className:"inline-flex h-8 w-8 items-center justify-center rounded-md text-muted-foreground transition hover:bg-surface-2 hover:text-foreground active:scale-95 disabled:pointer-events-none disabled:opacity-30",title:"Previous change","aria-label":"Previous change",children:s.jsx(ue,{size:15})}),s.jsxs("span",{className:"min-w-8 text-center text-[10px] tabular-nums text-muted-foreground",children:[R<0?"—":R+1,"/",L.length]}),s.jsx("button",{type:"button",onClick:()=>V(1),disabled:R===L.length-1,className:"inline-flex h-8 w-8 items-center justify-center rounded-md text-muted-foreground transition hover:bg-surface-2 hover:text-foreground active:scale-95 disabled:pointer-events-none disabled:opacity-30",title:"Next change","aria-label":"Next change",children:s.jsx(de,{size:15})})]}),r&&s.jsx("button",{type:"button",onClick:r,className:"inline-flex h-8 w-8 items-center justify-center rounded-md text-muted-foreground transition hover:bg-surface-2 hover:text-foreground active:scale-95",title:o?"Exit full-screen DAG review":"Review from DAG in full screen","aria-label":o?"Exit full-screen DAG review":"Review from DAG in full screen",children:o?s.jsx(ge,{size:15}):s.jsx(xe,{size:15})})]})]}),a.highlights.length>0&&s.jsx("div",{className:"mt-2 grid gap-1.5",children:a.highlights.slice(0,4).map((e,y)=>s.jsxs("div",{className:"rounded-md bg-surface-2 px-2 py-1.5",children:[s.jsxs("div",{className:"flex min-w-0 items-center gap-1.5",children:[e.tag&&s.jsx("span",{className:"shrink-0 rounded bg-surface-elevated px-1.5 py-0.5 text-[9px] font-semibold text-primary",children:e.tag}),s.jsx("span",{className:"min-w-0 flex-1 whitespace-normal break-words text-[11px] font-semibold leading-snug text-foreground",children:e.what})]}),s.jsx("div",{className:"mt-0.5 text-[10px] leading-snug text-muted-foreground",children:e.effect})]},`${e.what}-${y}`))}),a.nodes.length>0&&s.jsxs("div",{className:"mt-2",children:[s.jsxs("div",{className:"mb-1 flex items-center justify-between gap-2 text-[10px] text-muted-foreground",children:[s.jsxs("div",{className:"flex items-center gap-1.5 font-semibold uppercase tracking-[0.12em]",children:[s.jsx(fe,{size:11}),"DAG"]}),a.edges.some(e=>e.label?.trim())&&s.jsx("span",{className:"normal-case tracking-normal",children:g("diffViewer.focusPathHint")})]}),s.jsx("div",{className:"overflow-x-auto rounded-md border border-border/15 bg-surface-2 p-1.5",onWheel:e=>e.stopPropagation(),children:s.jsxs("div",{className:"relative",style:{width:c.width,height:c.height},children:[s.jsxs("svg",{className:"absolute inset-0",width:c.width,height:c.height,"aria-hidden":"true",children:[s.jsx("defs",{children:z.map((e,y)=>s.jsx("marker",{id:`${u}-${y}`,viewBox:"0 0 10 10",refX:"8.5",refY:"5",markerWidth:"5",markerHeight:"5",orient:"auto",markerUnits:"strokeWidth",children:s.jsx("path",{d:"M0,0 L10,5 L0,10 Z",fill:e})},e))}),c.edges.map(e=>{const y=_e(e),p=te(e.index),b=I===e.key||!!U?.has(e.key),_=!!((I||f)&&!b);return s.jsxs("g",{className:"transition-opacity duration-150",style:{opacity:_?.3:1},children:[s.jsx("path",{className:"pointer-events-none",d:y,fill:"none",stroke:"var(--surface-2)",strokeWidth:b?7:5,strokeLinecap:"round"}),s.jsx("path",{className:"pointer-events-none transition-[stroke-width,opacity] duration-150",d:y,fill:"none",stroke:p,strokeWidth:b?3:1.8,strokeLinecap:"round",markerEnd:`url(#${u}-${e.index%z.length})`}),s.jsx("path",{"data-dag-edge":e.key,d:y,fill:"none",stroke:"transparent",strokeWidth:"14",className:"cursor-pointer",onPointerEnter:()=>$(e.key),onPointerLeave:()=>$(k=>k===e.key?null:k),onClick:()=>{m(null),Y(k=>k===e.key?null:e.key)}}),s.jsx("circle",{className:"pointer-events-none",cx:e.fromNode.x+H+8,cy:e.fromY,r:b?4:3,fill:p,stroke:"var(--surface-2)",strokeWidth:"2"}),s.jsx("circle",{className:"pointer-events-none",cx:e.toNode.x-8,cy:e.toY,r:b?4:3,fill:p,stroke:"var(--surface-2)",strokeWidth:"2"})]},e.key)})]}),c.edges.map(e=>{const y=e.label?.trim();if(!y)return null;const{x:p,y:b,maxWidth:_}=De(e),k=te(e.index),Z=I===e.key||!!U?.has(e.key),ae=!!((I||f)&&!Z);return s.jsxs("button",{ref:P=>{P?x.current.set(e.key,P):x.current.delete(e.key)},type:"button","data-dag-edge-label":e.key,className:"absolute -translate-x-1/2 -translate-y-1/2 whitespace-normal break-words rounded-md border bg-surface-elevated px-1.5 py-1 text-center text-[9px] leading-[11px] shadow-sm transition-[opacity,box-shadow,transform] duration-150 [overflow-wrap:anywhere] hover:shadow-md focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/60",style:{left:p,top:b,maxWidth:_,width:"max-content",borderColor:k,color:k,opacity:ae?.38:1,boxShadow:Z?`0 0 0 2px ${k}, 0 6px 18px rgb(0 0 0 / 0.24)`:void 0},title:`${e.fromNode.index+1} ${e.fromNode.node.title} → ${e.toNode.index+1} ${e.toNode.node.title}${e.desc?`
|
|
1
|
+
import{a$ as ie,eA as ce,cr as s,Y as le,h as de,L as me,k as he}from"./app-CG7UnlvD.js";import{b as D}from"./dnd-BCFAPC0L.js";import{C as ue}from"./chevron-left-BS8PE--U.js";import{M as xe}from"./maximize-2-Duk9ucVy.js";import{G as fe,T as pe}from"./triangle-alert-DUjdvUeM.js";const ye=[["path",{d:"m14 10 7-7",key:"oa77jy"}],["path",{d:"M20 10h-6V4",key:"mjg0md"}],["path",{d:"m3 21 7-7",key:"tjx5ai"}],["path",{d:"M4 14h6v6",key:"rmj7iw"}]],ge=ie("minimize-2",ye);function be(t,d){return(d?t.filter(o=>o.repoRoot===d):t).slice().sort((o,r)=>r.injectedAt-o.injectedAt)[0]??null}function ke(t){switch(t){case"entry":case"source":return"bg-sky-400";case"ui":return"bg-fuchsia-400";case"risk":return"bg-destructive";case"test":return"bg-emerald-400";default:return"bg-primary"}}function ve(t){if(!t)return;const d=typeof t.sectionIndex=="number"?` section ${t.sectionIndex+1}`:"",i=typeof t.hunkIndex=="number"?` hunk ${t.hunkIndex+1}`:"";return`${t.filePath}${i}${d}`}function Q({anchor:t,children:d,onNavigate:i,className:o,style:r,elementRef:g,onActivate:l}){return!t&&!l?s.jsx("span",{ref:g,className:o,style:r,children:d}):s.jsx("button",{ref:g,type:"button",onClick:()=>{l?.(),t&&i(t)},title:ve(t),className:`${o} text-left transition hover:border-primary/35 hover:bg-primary/15 active:scale-[0.99]`,style:r,children:d})}const H=190,X=92,q=132,Ne=28,C=16,J=18,T=54,ee=24,re=18,we=8,B=24,z=["rgb(var(--primary-rgb))","rgb(var(--accent-rgb))","rgb(var(--warning-rgb))","rgb(var(--success-rgb))","rgb(192 132 252)"];function te(t){return z[t%z.length]}function je(t,d){return`${t.from}->${t.to}:${d}`}function Me(t,d,i){const o=Math.max(d.get(t)?.length??0,i.get(t)?.length??0);return Math.max(X,36+Math.max(0,o-1)*re)}function ne(t,d,i){if(i<=1)return t.y+t.height/2;const o=Math.max(0,t.height-36),r=Math.min(o,(i-1)*re);return t.y+t.height/2-r/2+r/(i-1)*d}function se(t,d,i){return t.slice().sort((o,r)=>{const g=d[o],l=d[r],a=i==="from"?g.toNode:g.fromNode,h=i==="from"?l.toNode:l.fromNode;return a.y-h.y||a.index-h.index||g.index-l.index})}function Ee(t,d){const i=new Map;for(const o of t){if(Math.abs(o.toNode.layer-o.fromNode.layer)!==1)continue;const r=`${o.fromNode.layer}:${o.toNode.layer}`,g=i.get(r)??[];g.push(o),i.set(r,g)}for(const o of i.values()){o.sort((h,x)=>(h.fromY+h.toY)/2-(x.fromY+x.toY)/2||h.index-x.index);const r=[];o.forEach((h,x)=>{const N=(h.fromY+h.toY)/2,M=Math.max(B,d[h.key]??0)/2;if(x===0){r.push(N);return}const w=o[x-1],E=Math.max(B,d[w.key]??0)/2;r.push(Math.max(N,r[x-1]+E+M+we))});const g=r.reduce((h,x,N)=>h+x-(o[N].fromY+o[N].toY)/2,0)/Math.max(1,r.length),l=Math.min(...r.map((h,x)=>h-g-Math.max(B,d[o[x].key]??0)/2)),a=Math.max(0,C-l);o.forEach((h,x)=>{h.laneY=r[x]-g+a})}}function $e(t,d,i={},o={}){const r=new Map(t.map((n,m)=>[n.id,{node:n,index:m}])),g=d.filter(n=>r.has(n.from)&&r.has(n.to)),l=new Map,a=new Map;for(const n of t)l.set(n.id,[]),a.set(n.id,[]);for(const n of g)l.get(n.to)?.push(n.from),a.get(n.from)?.push(n.to);const h=new Map,x=new Set,N=n=>{const m=h.get(n);if(m!==void 0)return m;if(x.has(n))return 0;x.add(n);const c=l.get(n)??[],u=c.length===0?0:Math.max(...c.map(N))+1;return x.delete(n),h.set(n,u),u};for(const n of t)N(n.id);const M=new Map;for(const n of t){const m=h.get(n.id)??0,c=M.get(m)??[],u=r.get(n.id);u&&c.push(u),M.set(m,c)}const w=[];for(const[n,m]of M.entries()){m.sort((u,f)=>u.index-f.index);let c=C+T;m.forEach(({node:u,index:f},j)=>{const I=Math.max(Me(u.id,l,a),Math.ceil(i[u.id]??X));w.push({node:u,index:f,layer:n,row:j,x:C+n*(H+q),y:c,height:I}),c+=I+Ne})}const E=new Map(w.map(n=>[n.node.id,n])),v=g.flatMap((n,m)=>{const c=E.get(n.from),u=E.get(n.to);return!c||!u?[]:[{...n,key:je(n,m),index:m,fromNode:c,toNode:u,routeIndex:m,fromPortIndex:0,toPortIndex:0,fromY:c.y+c.height/2,toY:u.y+u.height/2,laneY:(c.y+c.height/2+u.y+u.height/2)/2}]}),$=new Map,G=new Map;v.forEach((n,m)=>{$.set(n.from,[...$.get(n.from)??[],m]),G.set(n.to,[...G.get(n.to)??[],m])});for(const[n,m]of $){const c=se(m,v,"from");c.forEach((u,f)=>{const j=v[u];j.fromPortIndex=f,j.fromY=ne(E.get(n),f,c.length)})}for(const[n,m]of G){const c=se(m,v,"to");c.forEach((u,f)=>{const j=v[u];j.toPortIndex=f,j.toY=ne(E.get(n),f,c.length)})}Ee(v,o);let Y=0;v.forEach(n=>{const m=Math.min(n.fromNode.layer,n.toNode.layer),c=Math.max(n.fromNode.layer,n.toNode.layer);if(c-m<=1)return;const f=Y;Y+=1,n.routeIndex=f;const j=w.filter(A=>A.layer>=m&&A.layer<=c),I=Math.min(...j.map(A=>A.y))-ee-(Math.floor(f/2)+1)*J,O=Math.max(...j.map(A=>A.y+A.height))+ee+(Math.floor(f/2)+1)*J;n.laneY=f%2===0?Math.max(C,I):O});const S=Math.max(0,...w.map(n=>n.layer)),W=Math.max(C+T+X,...w.map(n=>n.y+n.height),...v.map(n=>n.laneY+Math.max(B,o[n.key]??0)/2));return{nodes:w,edges:v,width:C*2+(S+1)*H+S*q,height:W+C+T}}function oe(t,d=12){const i=t[0];if(!i)return"";const o=[`M ${i.x} ${i.y}`];for(let r=1;r<t.length;r+=1){const g=t[r-1],l=t[r],a=t[r+1];if(!a){o.push(`L ${l.x} ${l.y}`);continue}const h=l.x-g.x,x=l.y-g.y,N=a.x-l.x,M=a.y-l.y,w=Math.abs(h)+Math.abs(x),E=Math.abs(N)+Math.abs(M);if(w===0||E===0||h&&N||x&&M){o.push(`L ${l.x} ${l.y}`);continue}const v=Math.min(d,w/2,E/2),$={x:l.x-Math.sign(h)*v,y:l.y-Math.sign(x)*v},G={x:l.x+Math.sign(N)*v,y:l.y+Math.sign(M)*v};o.push(`L ${$.x} ${$.y}`),o.push(`Q ${l.x} ${l.y} ${G.x} ${G.y}`)}return o.join(" ")}function _e(t){const d=t.fromNode.x+H+8,i=t.fromY,o=t.toNode.x-8,r=t.toY,g=Math.abs(t.toNode.layer-t.fromNode.layer),l=d+22+t.fromPortIndex*5,a=o-22-t.toPortIndex*5;return g<=1?oe([{x:d,y:i},{x:l,y:i},{x:l,y:t.laneY},{x:a,y:t.laneY},{x:a,y:r},{x:o,y:r}]):oe([{x:d,y:i},{x:l,y:i},{x:l,y:t.laneY},{x:a,y:t.laneY},{x:a,y:r},{x:o,y:r}])}function De(t){const d=t.fromNode.x+H+8,i=t.toNode.x-8,o=Math.abs(t.toNode.layer-t.fromNode.layer),r=Math.max(34,Math.abs(i-d));return o<=1?{x:(d+i)/2,y:t.laneY,maxWidth:Math.max(72,Math.min(108,r-34))}:{x:(d+i)/2,y:t.laneY,maxWidth:Math.max(84,Math.min(120,r*.3))}}function Pe({walkthroughs:t,repoRoot:d,onNavigate:i,fullscreen:o=!1,onToggleFullscreen:r}){const{t:g}=ce(),l=D.useId(),a=be(t,d),h=D.useRef(new Map),x=D.useRef(new Map),[N,M]=D.useState({}),[w,E]=D.useState({}),[v,$]=D.useState(null),[G,Y]=D.useState(null),[S,W]=D.useState(null),[n,m]=D.useState(null),c=D.useMemo(()=>a?$e(a.nodes,a.edges,N,w):null,[N,w,a]);if(D.useLayoutEffect(()=>{if(!a)return;const e={};for(const p of a.nodes){const b=h.current.get(p.id);b&&(e[p.id]=b.offsetHeight)}M(p=>{const b=Object.keys(p),_=Object.keys(e);return b.length===_.length&&_.every(k=>p[k]===e[k])?p:e});const y={};for(const[p,b]of x.current)y[p]=b.offsetHeight;E(p=>{const b=Object.keys(p),_=Object.keys(y);return b.length===_.length&&_.every(k=>p[k]===y[k])?p:y})},[a]),!a||!c)return null;const u=`walkthrough-arrow-${l.replace(/[^a-zA-Z0-9_-]/g,"")||"default"}`,f=S??n,j=f?null:v??G,I=c.edges.some(e=>e.key===j)?j:null,O=c.edges.find(e=>e.key===I),A=f?c.edges.filter(e=>e.from===f||e.to===f):[],U=f?new Set(A.map(e=>e.key)):null,F=f?new Set([f,...A.flatMap(e=>[e.from,e.to])]):O?new Set([O.from,O.to]):null,K=new Map(a.sections.filter(e=>e.nodeId&&e.anchor).map(e=>[e.nodeId,e.anchor])),L=a.nodes.filter(e=>e.anchor??K.get(e.id)),R=L.findIndex(e=>e.id===n),V=e=>{if(L.length===0)return;const y=R<0?e<0?L.length-1:0:Math.min(L.length-1,Math.max(0,R+e)),p=L[y],b=p.anchor??K.get(p.id);b&&(m(p.id),Y(null),i(b))};return s.jsxs("section",{className:"mb-2 px-0 py-0",children:[s.jsxs("div",{className:"flex min-w-0 items-center gap-2",children:[s.jsx("span",{className:"flex h-7 w-7 shrink-0 items-center justify-center rounded-md bg-primary/12 text-primary",children:s.jsx(le,{size:14})}),s.jsxs("div",{className:"min-w-0 flex-1",children:[s.jsx("div",{className:"whitespace-normal break-words text-[12px] font-semibold leading-snug text-foreground",children:a.title}),a.summary&&s.jsx("div",{className:"mt-0.5 text-[10px] leading-snug text-muted-foreground",children:a.summary})]}),s.jsxs("div",{className:"flex shrink-0 items-center gap-1",children:[o&&L.length>0&&s.jsxs(s.Fragment,{children:[s.jsx("button",{type:"button",onClick:()=>V(-1),disabled:R===0,className:"inline-flex h-8 w-8 items-center justify-center rounded-md text-muted-foreground transition hover:bg-surface-2 hover:text-foreground active:scale-95 disabled:pointer-events-none disabled:opacity-30",title:"Previous change","aria-label":"Previous change",children:s.jsx(ue,{size:15})}),s.jsxs("span",{className:"min-w-8 text-center text-[10px] tabular-nums text-muted-foreground",children:[R<0?"—":R+1,"/",L.length]}),s.jsx("button",{type:"button",onClick:()=>V(1),disabled:R===L.length-1,className:"inline-flex h-8 w-8 items-center justify-center rounded-md text-muted-foreground transition hover:bg-surface-2 hover:text-foreground active:scale-95 disabled:pointer-events-none disabled:opacity-30",title:"Next change","aria-label":"Next change",children:s.jsx(de,{size:15})})]}),r&&s.jsx("button",{type:"button",onClick:r,className:"inline-flex h-8 w-8 items-center justify-center rounded-md text-muted-foreground transition hover:bg-surface-2 hover:text-foreground active:scale-95",title:o?"Exit full-screen DAG review":"Review from DAG in full screen","aria-label":o?"Exit full-screen DAG review":"Review from DAG in full screen",children:o?s.jsx(ge,{size:15}):s.jsx(xe,{size:15})})]})]}),a.highlights.length>0&&s.jsx("div",{className:"mt-2 grid gap-1.5",children:a.highlights.slice(0,4).map((e,y)=>s.jsxs("div",{className:"rounded-md bg-surface-2 px-2 py-1.5",children:[s.jsxs("div",{className:"flex min-w-0 items-center gap-1.5",children:[e.tag&&s.jsx("span",{className:"shrink-0 rounded bg-surface-elevated px-1.5 py-0.5 text-[9px] font-semibold text-primary",children:e.tag}),s.jsx("span",{className:"min-w-0 flex-1 whitespace-normal break-words text-[11px] font-semibold leading-snug text-foreground",children:e.what})]}),s.jsx("div",{className:"mt-0.5 text-[10px] leading-snug text-muted-foreground",children:e.effect})]},`${e.what}-${y}`))}),a.nodes.length>0&&s.jsxs("div",{className:"mt-2",children:[s.jsxs("div",{className:"mb-1 flex items-center justify-between gap-2 text-[10px] text-muted-foreground",children:[s.jsxs("div",{className:"flex items-center gap-1.5 font-semibold uppercase tracking-[0.12em]",children:[s.jsx(fe,{size:11}),"DAG"]}),a.edges.some(e=>e.label?.trim())&&s.jsx("span",{className:"normal-case tracking-normal",children:g("diffViewer.focusPathHint")})]}),s.jsx("div",{className:"overflow-x-auto rounded-md border border-border/15 bg-surface-2 p-1.5",onWheel:e=>e.stopPropagation(),children:s.jsxs("div",{className:"relative",style:{width:c.width,height:c.height},children:[s.jsxs("svg",{className:"absolute inset-0",width:c.width,height:c.height,"aria-hidden":"true",children:[s.jsx("defs",{children:z.map((e,y)=>s.jsx("marker",{id:`${u}-${y}`,viewBox:"0 0 10 10",refX:"8.5",refY:"5",markerWidth:"5",markerHeight:"5",orient:"auto",markerUnits:"strokeWidth",children:s.jsx("path",{d:"M0,0 L10,5 L0,10 Z",fill:e})},e))}),c.edges.map(e=>{const y=_e(e),p=te(e.index),b=I===e.key||!!U?.has(e.key),_=!!((I||f)&&!b);return s.jsxs("g",{className:"transition-opacity duration-150",style:{opacity:_?.3:1},children:[s.jsx("path",{className:"pointer-events-none",d:y,fill:"none",stroke:"var(--surface-2)",strokeWidth:b?7:5,strokeLinecap:"round"}),s.jsx("path",{className:"pointer-events-none transition-[stroke-width,opacity] duration-150",d:y,fill:"none",stroke:p,strokeWidth:b?3:1.8,strokeLinecap:"round",markerEnd:`url(#${u}-${e.index%z.length})`}),s.jsx("path",{"data-dag-edge":e.key,d:y,fill:"none",stroke:"transparent",strokeWidth:"14",className:"cursor-pointer",onPointerEnter:()=>$(e.key),onPointerLeave:()=>$(k=>k===e.key?null:k),onClick:()=>{m(null),Y(k=>k===e.key?null:e.key)}}),s.jsx("circle",{className:"pointer-events-none",cx:e.fromNode.x+H+8,cy:e.fromY,r:b?4:3,fill:p,stroke:"var(--surface-2)",strokeWidth:"2"}),s.jsx("circle",{className:"pointer-events-none",cx:e.toNode.x-8,cy:e.toY,r:b?4:3,fill:p,stroke:"var(--surface-2)",strokeWidth:"2"})]},e.key)})]}),c.edges.map(e=>{const y=e.label?.trim();if(!y)return null;const{x:p,y:b,maxWidth:_}=De(e),k=te(e.index),Z=I===e.key||!!U?.has(e.key),ae=!!((I||f)&&!Z);return s.jsxs("button",{ref:P=>{P?x.current.set(e.key,P):x.current.delete(e.key)},type:"button","data-dag-edge-label":e.key,className:"absolute -translate-x-1/2 -translate-y-1/2 whitespace-normal break-words rounded-md border bg-surface-elevated px-1.5 py-1 text-center text-[9px] leading-[11px] shadow-sm transition-[opacity,box-shadow,transform] duration-150 [overflow-wrap:anywhere] hover:shadow-md focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/60",style:{left:p,top:b,maxWidth:_,width:"max-content",borderColor:k,color:k,opacity:ae?.38:1,boxShadow:Z?`0 0 0 2px ${k}, 0 6px 18px rgb(0 0 0 / 0.24)`:void 0},title:`${e.fromNode.index+1} ${e.fromNode.node.title} → ${e.toNode.index+1} ${e.toNode.node.title}${e.desc?`
|
|
2
2
|
${e.desc}`:""}`,"aria-pressed":G===e.key,onPointerEnter:()=>$(e.key),onPointerLeave:()=>$(P=>P===e.key?null:P),onClick:()=>{m(null),Y(P=>P===e.key?null:e.key)},children:[s.jsxs("span",{className:"block font-bold tabular-nums",children:[e.fromNode.index+1," → ",e.toNode.index+1]}),s.jsx("span",{className:"block text-muted-foreground",children:y})]},`${e.key}-label`)}),c.nodes.map(({node:e,index:y,x:p,y:b,height:_})=>s.jsxs(Q,{elementRef:k=>{k?h.current.set(e.id,k):h.current.delete(e.id)},anchor:e.anchor??K.get(e.id),onActivate:()=>{m(e.id),Y(null)},onNavigate:i,className:`absolute overflow-hidden rounded-lg border bg-surface/95 px-2.5 py-2 text-foreground shadow-[0_10px_24px_rgba(0,0,0,0.18)] transition-[opacity,border-color,box-shadow] duration-150 ${F?.has(e.id)?"border-primary/60 shadow-[0_0_0_1px_rgb(var(--primary-rgb)/0.28),0_10px_24px_rgba(0,0,0,0.22)]":F?"border-border/15 opacity-40":"border-border/25"}`,style:{left:p,top:b,width:H,minHeight:_},children:[s.jsx("span",{className:"absolute inset-0",onPointerEnter:()=>W(e.id),onPointerLeave:()=>W(k=>k===e.id?null:k)}),s.jsx("span",{className:`pointer-events-none absolute bottom-2 left-0 top-2 w-[3px] rounded-r-full ${ke(e.kind)}`}),s.jsxs("div",{className:"pointer-events-none relative flex min-w-0 items-center gap-1.5",children:[s.jsx("span",{className:"flex h-4 w-4 shrink-0 items-center justify-center rounded-full bg-primary/15 text-[9px] font-bold text-primary",children:y+1}),s.jsx("span",{className:"min-w-0 flex-1 whitespace-normal break-words text-[11px] font-semibold leading-snug text-foreground",children:e.title}),e.anchor&&s.jsx(me,{size:11,className:"shrink-0 opacity-70"})]}),e.kind&&s.jsx("div",{className:"pointer-events-none relative mt-0.5 truncate text-[9px] font-semibold uppercase tracking-[0.08em] text-muted-foreground/80",children:e.kind}),s.jsx("div",{className:"pointer-events-none relative mt-0.5 whitespace-normal break-words text-[10px] leading-snug text-muted-foreground",children:e.business})]},e.id))]})})]}),(a.risks.length>0||a.checks.length>0)&&s.jsxs("div",{className:"mt-2 grid gap-1.5",children:[a.risks.slice(0,3).map((e,y)=>s.jsxs(Q,{anchor:e.anchor,onNavigate:i,className:"flex w-full items-start gap-1.5 rounded-md border border-[rgb(var(--warning-rgb)_/_0.25)] bg-[rgb(var(--warning-rgb)_/_0.10)] px-2 py-1.5 text-[10px] text-muted-foreground",children:[s.jsx(pe,{size:12,className:"mt-0.5 shrink-0 text-[color:var(--warning)]"}),s.jsx("span",{className:"min-w-0 whitespace-normal break-words leading-snug",children:e.title})]},`${e.title}-${y}`)),a.checks.slice(0,3).map((e,y)=>s.jsxs("div",{className:"flex items-start gap-1.5 rounded-md bg-surface-2 px-2 py-1.5 text-[10px] text-muted-foreground",children:[s.jsx(he,{size:12,className:"mt-0.5 shrink-0 text-primary"}),s.jsx("span",{className:"min-w-0 whitespace-normal break-words leading-snug",children:e})]},`${e}-${y}`))]})]})}export{Pe as C,ge as M};
|
|
Binary file
|
|
Binary file
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/index-ByrWASlZ.js","assets/react-XDCjal2T.js","assets/RightSidebar-
|
|
2
|
-
import{a$ as ba,a9 as Bo,cr as g,dE as va,b2 as Er,q as _a,eB as wa,a8 as Sa,as as ka,C as $a,dh as Oa,r as ja}from"./app-CjIJnhRC.js";import{b as w,r as xa}from"./dnd-BCFAPC0L.js";import{C as jt}from"./SessionChatView-Bk5DIrLU.js";import{C as Aa}from"./circle-DhTLygNL.js";import{S as Ea}from"./search-DwVySubQ.js";import{E as za}from"./external-link-BB8IuvZq.js";import"./react-XDCjal2T.js";import"./terminal-DaiFCKy_.js";import"./clipboardText-DN1ZamHf.js";import"./Markdown-CohgsLqO.js";import"./swiper-CDQegRag.js";import"./use-gesture-react.esm-BHdJ-ZCI.js";import"./referenceSelection-Cb24Tb01.js";import"./list-tree-CA4WMncL.js";import"./quote-DYO_qxPl.js";import"./arrow-down-Dd0wVXN3.js";const Ia=[["path",{d:"m3 16 4 4 4-4",key:"1co6wj"}],["path",{d:"M7 20V4",key:"1yoxec"}],["path",{d:"m21 8-4-4-4 4",key:"1c9v7m"}],["path",{d:"M17 4v16",key:"7dpous"}]],Ta=ba("arrow-down-up",Ia),Ra=globalThis;Ra[Symbol.for("openui.devtools.autoMount")]=!0;const Na=2e3;function Pa(e){const t=e?.OPENUI_POSTHOG_HOST??"https://dgoeivjus9jfp.cloudfront.net";return{apiKey:e?.OPENUI_POSTHOG_KEY??"phc_3OLW53x09ZTVZSV6BEpj5uycj3ooqR6KOemOjx04e3D",captureUrl:new URL("/capture/",t).toString()}}function $n(e){return e==="1"||e?.toLowerCase()==="true"}function Ca(e){return $n(e?.OPENUI_TELEMETRY_DISABLED)||$n(e?.DO_NOT_TRACK)}function Za(e){return $n(e?.OPENUI_RUNTIME_TELEMETRY_ENABLED)&&!Ca(e)}function qo(e){const t=e.trim();if(!t)return"";try{const r=new URL(t),o=bt(decodeURIComponent(r.pathname));if(r.protocol==="file:")return`file:${o}`;if(r.host)return zr(r.host,o)}catch{}if(/^[A-Za-z]:[\\/]/.test(t))return bt(t);const n=/^(?:[^@/\s]+@)?([^:/\s]+):(.+)$/.exec(t);return n?zr(n[1],n[2]):bt(t)}function zr(e,t){const n=e.trim().toLowerCase(),r=bt(t);return r?`${n}/${r}`:n}function bt(e){return e.trim().replace(/\\/g,"/").replace(/^\/+|\/+$/g,"").replace(/\.git$/i,"")}function On(e){const t=Object.values(e).filter(r=>typeof r=="number");return Object.entries(e).filter(([r,o])=>t.indexOf(+r)===-1).map(([r,o])=>o)}function Ir(e,t="|"){return e.map(n=>Yo(n)).join(t)}function jn(e,t){return typeof t=="bigint"?t.toString():t}class Ma{constructor(t){this._getter=t,this._value=void 0}get value(){const t=this._getter;return t!==void 0&&(this._value=t(),this._getter=void 0),this._value}}function Qn(e){return new Ma(e)}function Da(e){return e==null}function Yn(e){const t=e.startsWith("^")?1:0,n=e.endsWith("$")?e.length-1:e.length;return e.slice(t,n)}function Ua(e,t){const n=e/t,r=Math.round(n),o=4*Number.EPSILON*Math.max(Math.abs(n),1);return Math.abs(n-r)<o?0:n-r}function $e(e,t,n){Object.defineProperty(e,t,{value:n,writable:!0,enumerable:!0,configurable:!0})}function Jo(e){const t=Object.getOwnPropertyDescriptor(e,"shape");return t?.get?t.get.raw:t?.value}function ke(e){return Jo(e._zod.def)??e._zod.def.shape}function Vo(e,t,n){Object.defineProperty(e,t,{get(){const r=n();return $e(this,t,r),r},enumerable:!0,configurable:!0})}function Ko(e,t,n){t in e?$e(e,t,n):e[t]=n}function Ce(e,t,n,r){const o=ke(t);for(const s of n){const i=Object.getOwnPropertyDescriptor(o,s);i.enumerable&&(i.get?Vo(e,s,()=>{const a=t._zod.def.shape[s];return r?r(a,s):a}):Ko(e,s,r?r(i.value,s):i.value))}}function Fa(e,t){for(const n of Reflect.ownKeys(t)){const r=Object.getOwnPropertyDescriptor(t,n);r.enumerable&&(r.get?Vo(e,n,()=>t[n]):Ko(e,n,r.value))}}function ue(...e){const t={};for(const n of e){const r=Object.getOwnPropertyDescriptors(n);Object.assign(t,r)}return Object.defineProperties({},t)}function La(e){return JSON.stringify(e)}function Ba(e){return e.toLowerCase().trim().replace(/[^\w\s-]/g,"").replace(/[\s_-]+/g,"-").replace(/^-+|-+$/g,"")}const Wo="captureStackTrace"in Error?Error.captureStackTrace:(...e)=>{};function xt(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}const qa=Qn(()=>{if(ye.jitless||typeof navigator<"u"&&navigator?.userAgent?.includes("Cloudflare"))return!1;try{const e=Function;return new e(""),!0}catch{return!1}});function Le(e){if(xt(e)===!1)return!1;const t=e.constructor;if(t===void 0||typeof t!="function")return!0;const n=t.prototype;return!(xt(n)===!1||Object.prototype.hasOwnProperty.call(n,"isPrototypeOf")===!1)}function Qo(e){return Le(e)?{...e}:Array.isArray(e)?[...e]:e instanceof Map?new Map(e):e instanceof Set?new Set(e):e}const Ja=new Set(["string","number","symbol"]);function Be(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function Oe(e,t,n){const r=new e._zod.constr(t??e._zod.def);return(!t||n?.parent)&&(r._zod.parent=e),r}function A(e){const t=e;if(!t)return{};if(typeof t=="string")return{error:()=>t};if(t?.message!==void 0){if(t?.error!==void 0)throw new Error("Cannot specify both `message` and `error` params");t.error=t.message}return delete t.message,typeof t.error=="string"?{...t,error:()=>t.error}:t}function Yo(e){return typeof e=="bigint"?e.toString()+"n":typeof e=="string"?`"${e}"`:`${e}`}function Va(e){return Object.keys(e).filter(t=>e[t]._zod.optin!==void 0&&e[t]._zod.optout==="optional")}const Go={safeint:[Number.MIN_SAFE_INTEGER,Number.MAX_SAFE_INTEGER],int32:[-2147483648,2147483647],uint32:[0,4294967295],float32:[-34028234663852886e22,34028234663852886e22],float64:[-Number.MAX_VALUE,Number.MAX_VALUE]},Ka={int64:[BigInt("-9223372036854775808"),BigInt("9223372036854775807")],uint64:[BigInt(0),BigInt("18446744073709551615")]};function Wa(e,t){const n=e._zod.def,r=n.checks;if(r&&r.length>0)throw new Error(".pick() cannot be used on object schemas containing refinements");const s={};return Ce(s,e,Wt(e,t)),Oe(e,ue(n,{shape:s,checks:[]}))}function Wt(e,t){const n=ke(e),r=[];for(const o of Reflect.ownKeys(t)){if(!Object.getOwnPropertyDescriptor(n,o)?.enumerable)throw new Error(`Unrecognized key: "${String(o)}"`);t[o]&&r.push(o)}return r}function Qa(e,t){const n=e._zod.def,r=n.checks;if(r&&r.length>0)throw new Error(".omit() cannot be used on object schemas containing refinements");const s=new Set(Wt(e,t)),i={};return Ce(i,e,Reflect.ownKeys(ke(e)).filter(a=>!s.has(a))),Oe(e,ue(n,{shape:i,checks:[]}))}function Ya(e,t){if(!Le(t))throw new Error("Invalid input to extend: expected a plain object");const n=e._zod.def.checks;if(n&&n.length>0){const o=ke(e);for(const s of Reflect.ownKeys(t))if(Object.getOwnPropertyDescriptor(o,s)!==void 0)throw new Error("Cannot overwrite keys on object schemas containing refinements. Use `.safeExtend()` instead.")}return Oe(e,ue(e._zod.def,{shape:Ho(e,t)}))}function Ho(e,t){const n={};return Ce(n,e,Reflect.ownKeys(ke(e))),Fa(n,t),n}function Ga(e,t){if(!Le(t))throw new Error("Invalid input to safeExtend: expected a plain object");return Oe(e,ue(e._zod.def,{shape:Ho(e,t)}))}function Ha(e,t){if(!t?._zod?.def)throw new Error("Invalid input to merge: expected an object schema. To merge a plain shape, use `.extend()`.");if(e._zod.def.checks?.length)throw new Error(".merge() cannot be used on object schemas containing refinements. Use .safeExtend() instead.");const n={};Ce(n,e,Reflect.ownKeys(ke(e))),Ce(n,t,Reflect.ownKeys(ke(t)));const r=ue(e._zod.def,{shape:n,get catchall(){return t._zod.def.catchall},checks:t._zod.def.checks??[]});return Oe(e,r)}function Tr(e,t,n,r="partial"){const s=t._zod.def.checks;if(s&&s.length>0)throw new Error(`.${r}() cannot be used on object schemas containing refinements`);const a=n?new Set(Wt(t,n)):void 0,u={};return Ce(u,t,Reflect.ownKeys(ke(t)),e&&((c,l)=>a&&!a.has(l)?c:new e({type:"optional",innerType:c}))),Oe(t,ue(t._zod.def,{shape:u,checks:[]}))}function Xa(e,t,n){const r=n?new Set(Wt(t,n)):void 0,o={};return Ce(o,t,Reflect.ownKeys(ke(t)),(s,i)=>r&&!r.has(i)?s:new e({type:"nonoptional",innerType:s})),Oe(t,ue(t._zod.def,{shape:o}))}function we(e,t=0){if(e.aborted===!0)return!0;for(let n=t;n<e.issues.length;n++)if(e.issues[n]?.continue!==!0)return!0;return!1}function eu(e,t=0){if(e.aborted===!0)return!0;for(let n=t;n<e.issues.length;n++)if(e.issues[n]?.continue===!1)return!0;return!1}function Ze(e,t){return t.map(n=>{var r;return(r=n).path??(r.path=[]),n.path.unshift(e),n})}function Qe(e){return typeof e=="string"?e:e?.message}function Rr(e){const t=[];for(const n of e??[]){const r=n._zod.def;if(!/_(length|size)$|_equals$/.test(r.check))break;const o=r.maximum??r.length??r.size;o>=0&&t.push([o,n])}return t}function xn(e,t,n){var r;for(let o=t;o<e.length;o++)(r=e[o]).schema??(r.schema=n)}function Ee(e,t,n){var r;const o=e.inst?._zod?.traits;o?.has("$ZodType")&&(o.has("$ZodCheck")?(r=e).schema??(r.schema=e.inst):e.schema=e.inst);const s=e.schema!==e.inst?e.schema?._zod.def?.error:void 0,i=e.message?e.message:Qe(e.inst?._zod.def?.error?.(e))??Qe(s?.(e))??Qe(t?.error?.(e))??Qe(n.customError?.(e))??Qe(n.localeError?.(e))??"Invalid input",a={};for(const u of Object.keys(e))u==="inst"||u==="schema"||u==="continue"||u==="input"||u==="__proto__"||(a[u]=e[u]);return a.path??(a.path=[]),a.message=i,t?.reportInput&&(a.input=e.input),a}const tu=/[\uD800-\uDBFF]/;function Gn(e){const t=e.length;if(!tu.test(e))return t;let n=t;for(let r=0;r<t-1;r++)(e.charCodeAt(r)&64512)===55296&&(e.charCodeAt(r+1)&64512)===56320&&(n--,r++);return n}function Hn(e){return Array.isArray(e)?"array":typeof e=="string"?"string":"unknown"}function nu(e){const t=typeof e;switch(t){case"number":return Number.isNaN(e)?"nan":"number";case"object":{if(e===null)return"null";if(Array.isArray(e))return"array";const n=e;if(n&&Object.getPrototypeOf(n)!==Object.prototype&&"constructor"in n&&n.constructor)return n.constructor.name}}return t}function nt(...e){const[t,n,r]=e;return typeof t=="string"?{message:t,code:"custom",input:n,inst:r}:{...t}}function ru(e,t){for(const n in t){const r=Object.getOwnPropertyDescriptor(t,n);r.get?Object.defineProperty(e,n,{...r,enumerable:!1}):ou(e,n,r.value)}}function ze(e,t,n,r=!0){return Object.defineProperty(e,t,{configurable:!0,writable:!0,enumerable:r,value:n}),n}function Xo(e,t,n){return ze(e,t,n,!1)}function es(e,t){for(const n in e){const r=e[n];Object.defineProperty(t,n,{configurable:!0,enumerable:!0,get(){return ze(this,n,r(this))},set(o){ze(this,n,o)}})}return t}function ou(e,t,n){Object.defineProperty(e,t,{configurable:!0,get(){return this==null?n:ze(this,t,n.bind(this))},set(r){ze(this,t,r)}})}function su(e,t){const n=Object.getPrototypeOf(e);return t in n?void 0:n}let cn,xe=!1;const iu={configurable:!0,get(){xe=!0}};function D(e,t,n){const r=Object.getPrototypeOf(e._zod);if(t in r&&cn!==e._zod){cn=void 0;return}cn=e._zod,Object.defineProperty(r,t,{configurable:!0,get(){Object.defineProperty(this,t,iu);const o=xe;xe=!1;try{const s=n(this);return xe?delete this[t]:Object.defineProperty(this,t,{configurable:!0,writable:!0,value:s}),xe=xe||o,s}catch(s){throw delete this[t],xe=xe||o,s}},set(o){Object.defineProperty(this,t,{configurable:!0,writable:!0,value:o})}})}function au(e,t,n,r){const o=su(e,t);o&&Object.defineProperty(o,t,{configurable:!0,get(){const s={configurable:!0,writable:!0,enumerable:r,value:void 0};return Object.defineProperty(this,t,s),s.value=n(this),Object.defineProperty(this,t,s),s.value},set(s){Object.defineProperty(this,t,{configurable:!0,writable:!0,enumerable:r,value:s})}})}const uu="~constantCatch";function cu(e){const t=()=>e;return t[uu]=!0,t}var Nr;const ln={value:void 0,enumerable:!1};let Pr="captureStackTrace"in Error?Error:null;function lu(e){const t=Pr;if(t){const n=t.stackTraceLimit;if(typeof n=="number"){try{t.stackTraceLimit=0}catch{return Pr=null,new e}try{return new e}finally{t.stackTraceLimit=n}}}return new e}function b(e,t,n,r){const o={};function s(f){this.def=f,this.constr=p,this.traits=new Set}s.prototype=o;const i=n,a=i&&new WeakSet;function u(f,d){if(f._zod){if(f._zod.traits.has(e))return}else{ln.value=new s(d);try{Object.defineProperty(f,"_zod",ln)}finally{ln.value=void 0}}if(f._zod.traits.add(e),t(f,d),a){const h=Object.getPrototypeOf(f),y=f._zod.constr.prototype;let _=h;for(;_&&_!==y;)_=Object.getPrototypeOf(_);const v=_??h;a.has(v)||(a.add(v),ru(v,i))}const m=p.prototype;for(const h in m)Object.prototype.hasOwnProperty.call(m,h)&&(h in f||(f[h]=m[h].bind(f)))}const c=r?.Parent??Object;class l extends c{}Object.defineProperty(l,"name",{value:e});function p(f){const d=r?.Parent?lu(l):this;u(d,f);const m=d._zod.deferred;if(m){for(const y of m)y();d._zod.deferred=void 0}const h=globalThis.__zod_globalConfig?.postProcessor;return h&&h(d),d}return Object.defineProperty(p,"init",{value:u}),Object.defineProperty(p,Symbol.hasInstance,{value:f=>r?.Parent&&f instanceof r.Parent?!0:f?._zod?.traits?.has(e)}),Object.defineProperty(p,"name",{value:e}),p}class Pe extends Error{constructor(){super("Encountered Promise during synchronous parse. Use .parseAsync() instead.")}}class ts extends Error{constructor(t){super(`Encountered unidirectional transform during encode: ${t}`),this.name="ZodEncodeError"}}(Nr=globalThis).__zod_globalConfig??(Nr.__zod_globalConfig={});const ye=globalThis.__zod_globalConfig;function _e(e){return e&&Object.assign(ye,e),ye}function fu(){const e=this._zod;return e.message??(e.message=JSON.stringify(e.def,jn,2)),e.message}function du(e){this._zod.message=e}const pu={get:fu,set:du,enumerable:!0,configurable:!0},fn={value:void 0,enumerable:!1},Cr=new WeakSet([Object.prototype,Error.prototype]),mu=(e,t)=>{e.name="$ZodError",fn.value=t,Object.defineProperty(e,"issues",fn),fn.value=void 0,Object.defineProperty(e,"message",pu);const n=Object.getPrototypeOf(e);Cr.has(n)||(Cr.add(n),Object.defineProperty(n,"toString",{configurable:!0,enumerable:!1,get(){const r=()=>this.message;return Object.defineProperty(this,"toString",{value:r,configurable:!0,writable:!0}),r},set(r){Object.defineProperty(this,"toString",{value:r,configurable:!0,writable:!0})}}))},hu=b("$ZodError",mu);function gu(e,t,n){return Object.prototype.hasOwnProperty.call(e,t)||(t==="__proto__"?Object.defineProperty(e,t,{value:n(),writable:!0,enumerable:!0,configurable:!0}):e[t]=n()),e[t]}function yu(e,t=n=>n.message){const n={},r=[];for(const o of e.issues)o.path.length>0?gu(n,o.path[0],()=>[]).push(t(o)):r.push(t(o));return{formErrors:r,fieldErrors:n}}function bu(e,t=n=>n.message){const n={_errors:[]},r=(o,s=[])=>{for(const i of o.issues)if(i.code==="invalid_union"&&i.errors.length)i.errors.map(a=>r({issues:a},[...s,...i.path]));else if(i.code==="invalid_key")r({issues:i.issues},[...s,...i.path]);else if(i.code==="invalid_element")r({issues:i.issues},[...s,...i.path]);else{const a=[...s,...i.path];if(a.length===0)n._errors.push(t(i));else{let u=n,c=0;for(;c<a.length;){const l=a[c],p=c===a.length-1;if(l==="_errors"){p&&u._errors.push(t(i)),c++;continue}Object.prototype.hasOwnProperty.call(u,l)||Object.defineProperty(u,l,{value:{_errors:[]},enumerable:!0,writable:!0,configurable:!0});const f=u[l];p&&f._errors.push(t(i)),u=f,c++}}}};return r(e),n}function Qt(e,t){return{callee:t?.callee??e,Err:t?.Err}}const Xn=e=>{const t=(n,r,o,s)=>{const i=o?{...o,async:!1}:{async:!1},a=n._zod.run({value:r,issues:[]},i);if(a instanceof Promise)throw new Pe;if(a.issues.length){const u=new(s?.Err??e)(a.issues.map(c=>Ee(c,i,_e())));throw Wo(u,s?.callee??t),u}return a.value};return t},er=e=>{const t=async(n,r,o,s)=>{const i=o?{...o,async:!0}:{async:!0};let a=n._zod.run({value:r,issues:[]},i);if(a instanceof Promise&&(a=await a),a.issues.length){const u=new(s?.Err??e)(a.issues.map(c=>Ee(c,i,_e())));throw Wo(u,s?.callee??t),u}return a.value};return t},tr=e=>(t,n,r)=>{const o=r?{...r,async:!1}:{async:!1},s=t._zod.run({value:n,issues:[]},o);if(s instanceof Promise)throw new Pe;return s.issues.length?ns(e,s.issues,o):{success:!0,data:s.value}};function ns(e,t,n){let r;return{success:!1,get error(){return r||(r=new e(t.map(o=>Ee(o,n,_e()))),t=void 0,n=void 0),r},set error(o){r=o,t=void 0,n=void 0}}}const nr=e=>async(t,n,r)=>{const o=r?{...r,async:!0}:{async:!0};let s=t._zod.run({value:n,issues:[]},o);return s instanceof Promise&&(s=await s),s.issues.length?ns(e,s.issues,o):{success:!0,data:s.value}},vu=Symbol.for("zod.compile.invalid"),_u=Symbol.for("zod.compile.fallback"),wu=((e,t,n)=>{const r=e._zod.bag.validator;if(r!==void 0){if(r(t)!==vu)return!0;if(r.definite===!0&&n===void 0)return!1}return Su(e,t,n)});function Su(e,t,n){const r=n?{...n,async:!1,abortEarly:!0}:{async:!1,abortEarly:!0},o=e._zod.bag.fallbackRun;let s;if(o?(r[_u]=!0,s=o({value:t,issues:[]},r)):s=e._zod.run({value:t,issues:[]},r),s instanceof Promise)throw new Pe;return s.issues.length===0}const ku=async(e,t,n)=>{const r=n?{...n,async:!0,abortEarly:!0}:{async:!0,abortEarly:!0};let o=e._zod.run({value:t,issues:[]},r);return o instanceof Promise&&(o=await o),o.issues.length===0},$u=e=>{const t=Xn(e),n=(r,o,s,i)=>{const a=s?{...s,direction:"backward"}:{direction:"backward"};return t(r,o,a,Qt(n,i))};return n},Ou=e=>{const t=Xn(e),n=(r,o,s,i)=>t(r,o,s,Qt(n,i));return n},ju=e=>{const t=er(e),n=async(r,o,s,i)=>{const a=s?{...s,direction:"backward"}:{direction:"backward"};return await t(r,o,a,Qt(n,i))};return n},xu=e=>{const t=er(e),n=async(r,o,s,i)=>await t(r,o,s,Qt(n,i));return n},Au=e=>(t,n,r)=>{const o=r?{...r,direction:"backward"}:{direction:"backward"};return tr(e)(t,n,o)},Eu=e=>(t,n,r)=>tr(e)(t,n,r),zu=e=>async(t,n,r)=>{const o=r?{...r,direction:"backward"}:{direction:"backward"};return nr(e)(t,n,o)},Iu=e=>async(t,n,r)=>nr(e)(t,n,r),Tu=/^[cC][0-9a-z]{6,}$/,Ru=/^[0-9a-z]+$/,Nu=/^[0-7][0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{25}$/,Pu=/^[0-9a-vA-V]{20}$/,Cu=/^[A-Za-z0-9]{27}$/,Zu=/^[a-zA-Z0-9_-]{21}$/;function Mu(e){return new RegExp(`^[a-zA-Z0-9_-]{${e}}$`)}const Du=/^P(?:(\d+W)|(?!.*W)(?=\d|T\d)(\d+Y)?(\d+M)?(\d+D)?(T(?=\d)(\d+H)?(\d+M)?(\d+([.,]\d+)?S)?)?)$/,Uu=/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$/,Zr=e=>e?new RegExp(`^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-${e}[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$`):/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/,Fu=/^(?:[A-Za-z0-9_'+\-]+\.)*[A-Za-z0-9_'+\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$/,Lu="^(?=[\\s\\S]*[\\p{Extended_Pictographic}\\p{Regional_Indicator}\\u20E3])[\\p{Extended_Pictographic}\\p{Emoji_Component}]+$";function Bu(){return new RegExp(Lu,"u")}const qu=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,Ju=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$/,Vu=/^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/([0-9]|[1-2][0-9]|3[0-2])$/,Ku=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,Wu=/^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$/,Qu=/^(?:[A-Za-z0-9_-]{4})*(?:[A-Za-z0-9_-]{2,3})?$/,Yu=/^https?$/,Gu=/^\+[1-9]\d{6,14}$/,rs="(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))";function Hu(e){return new RegExp(`^${e}$`)}const Xu=Hu(rs);function An(e){const t="(?:[01]\\d|2[0-3]):[0-5]\\d";return typeof e.precision=="number"?e.precision===-1?`${t}`:e.precision===0?`${t}:[0-5]\\d`:`${t}:[0-5]\\d\\.\\d{${e.precision}}`:e.seconds?`${t}:[0-5]\\d(?:\\.\\d+)?`:`${t}(?::[0-5]\\d(?:\\.\\d+)?)?`}function ec(e){return new RegExp(`^${An(e)}$`)}function tc(e){const t=["Z"];e.offset&&t.push("([+-](?:[01]\\d|2[0-3]):[0-5]\\d)");const n=`${An({precision:e.precision,seconds:!0})}(?:${t.join("|")})`,r=e.local?`${n}|${An({precision:e.precision})}`:n;return new RegExp(`^${rs}T(?:${r})$`)}const nc=/^[\s\S]{0,}$/,rc=/^-?\d+$/,rr=/^-?\d+(?:\.\d+)?$/,oc=/^(?:true|false)$/i,sc=/^null$/i,ic=/^[^A-Z]*$/,ac=/^[^a-z]*$/,le=b("$ZodCheck",(e,t)=>{var n;e._zod??(e._zod={}),e._zod.def=t,(n=e._zod).onattach??(n.onattach=[])}),or=e=>{const t=e.value;return!Da(t)&&t.length!==void 0},At={number:"number",bigint:"bigint",object:"date"},os=b("$ZodCheckLessThan",(e,t)=>{le.init(e,t);const n=At[typeof t.value];e._zod.check=r=>{(t.inclusive?r.value<=t.value:r.value<t.value)||r.issues.push({origin:At[typeof r.value]??n,code:"too_big",maximum:typeof t.value=="object"?t.value.getTime():t.value,input:r.value,inclusive:t.inclusive,inst:e,continue:!t.abort})}}),ss=b("$ZodCheckGreaterThan",(e,t)=>{le.init(e,t);const n=At[typeof t.value];e._zod.check=r=>{(t.inclusive?r.value>=t.value:r.value>t.value)||r.issues.push({origin:At[typeof r.value]??n,code:"too_small",minimum:typeof t.value=="object"?t.value.getTime():t.value,input:r.value,inclusive:t.inclusive,inst:e,continue:!t.abort})}}),uc=b("$ZodCheckMultipleOf",(e,t)=>{le.init(e,t),e._zod.check=n=>{if(typeof n.value!=typeof t.value)throw new Error("Cannot mix number and bigint in multiple_of check.");(typeof n.value=="bigint"?t.value!==BigInt(0)&&n.value%t.value===BigInt(0):Ua(n.value,t.value)===0)||n.issues.push({origin:typeof n.value,code:"not_multiple_of",divisor:t.value,input:n.value,inst:e,continue:!t.abort})}}),cc=b("$ZodCheckNumberFormat",(e,t)=>{le.init(e,t),t.format=t.format||"float64";const n=t.format?.includes("int"),r=n?"int":"number",[o,s]=Go[t.format];e._zod.check=i=>{const a=i.value;if(n){if(!Number.isInteger(a)){i.issues.push({expected:r,format:t.format,code:"invalid_type",continue:!1,input:a,inst:e});return}if(!Number.isSafeInteger(a)){a>0?i.issues.push({input:a,code:"too_big",maximum:Number.MAX_SAFE_INTEGER,note:"Integers must be within the safe integer range.",inst:e,origin:r,inclusive:!0,continue:!t.abort}):i.issues.push({input:a,code:"too_small",minimum:Number.MIN_SAFE_INTEGER,note:"Integers must be within the safe integer range.",inst:e,origin:r,inclusive:!0,continue:!t.abort});return}}a<o&&i.issues.push({origin:"number",input:a,code:"too_small",minimum:o,inclusive:!0,inst:e,continue:!t.abort}),a>s&&i.issues.push({origin:"number",input:a,code:"too_big",maximum:s,inclusive:!0,inst:e,continue:!t.abort})}}),lc=b("$ZodCheckMaxLength",(e,t)=>{var n;le.init(e,t),(n=e._zod.def).when??(n.when=or),e._zod.check=r=>{const o=r.value,s=o.length;if((typeof o=="string"&&s>t.maximum?Gn(o):s)<=t.maximum)return;const a=Hn(o);r.issues.push({origin:a,code:"too_big",maximum:t.maximum,inclusive:!0,input:o,inst:e,continue:!t.abort})}}),fc=b("$ZodCheckMinLength",(e,t)=>{var n;le.init(e,t),(n=e._zod.def).when??(n.when=or),e._zod.check=r=>{const o=r.value,s=o.length;if((typeof o=="string"&&s>=t.minimum&&s<t.minimum*2?Gn(o):s)>=t.minimum)return;const a=Hn(o);r.issues.push({origin:a,code:"too_small",minimum:t.minimum,inclusive:!0,input:o,inst:e,continue:!t.abort})}}),dc=b("$ZodCheckLengthEquals",(e,t)=>{var n;le.init(e,t),(n=e._zod.def).when??(n.when=or),e._zod.check=r=>{const o=r.value,s=o.length,i=typeof o=="string"&&s>=t.length&&s<=t.length*2?Gn(o):s;if(i===t.length)return;const a=Hn(o),u=i>t.length;r.issues.push({origin:a,...u?{code:"too_big",maximum:t.length}:{code:"too_small",minimum:t.length},inclusive:!0,exact:!0,input:r.value,inst:e,continue:!t.abort})}}),Yt=b("$ZodCheckStringFormat",(e,t)=>{var n,r;le.init(e,t),t.pattern?(n=e._zod).check??(n.check=o=>{t.pattern.lastIndex=0,!t.pattern.test(o.value)&&o.issues.push({origin:"string",code:"invalid_format",format:t.format,input:o.value,...t.pattern?{pattern:t.pattern.toString()}:{},inst:e,continue:!t.abort})}):(r=e._zod).check??(r.check=()=>{})}),pc=b("$ZodCheckRegex",(e,t)=>{Yt.init(e,t),e._zod.check=n=>{t.pattern.lastIndex=0,!t.pattern.test(n.value)&&n.issues.push({origin:"string",code:"invalid_format",format:"regex",input:n.value,pattern:t.pattern.toString(),inst:e,continue:!t.abort})}}),mc=b("$ZodCheckLowerCase",(e,t)=>{t.pattern??(t.pattern=ic),Yt.init(e,t)}),hc=b("$ZodCheckUpperCase",(e,t)=>{t.pattern??(t.pattern=ac),Yt.init(e,t)}),gc=b("$ZodCheckIncludes",(e,t)=>{le.init(e,t);const n=Be(t.includes),r=new RegExp(typeof t.position=="number"?`^.{${t.position},}${n}`:n);t.pattern=r,e._zod.check=o=>{o.value.includes(t.includes,t.position)||o.issues.push({origin:"string",code:"invalid_format",format:"includes",includes:t.includes,input:o.value,inst:e,continue:!t.abort})}}),yc=b("$ZodCheckStartsWith",(e,t)=>{le.init(e,t);const n=new RegExp(`^${Be(t.prefix)}.*`);t.pattern??(t.pattern=n),e._zod.check=r=>{r.value.startsWith(t.prefix)||r.issues.push({origin:"string",code:"invalid_format",format:"starts_with",prefix:t.prefix,input:r.value,inst:e,continue:!t.abort})}}),bc=b("$ZodCheckEndsWith",(e,t)=>{le.init(e,t);const n=new RegExp(`.*${Be(t.suffix)}$`);t.pattern??(t.pattern=n),e._zod.check=r=>{r.value.endsWith(t.suffix)||r.issues.push({origin:"string",code:"invalid_format",format:"ends_with",suffix:t.suffix,input:r.value,inst:e,continue:!t.abort})}}),vc=b("$ZodCheckOverwrite",(e,t)=>{le.init(e,t),e._zod.check=n=>{n.value=t.tx(n.value)}});class _c{constructor(t=[],n={}){this.content=[],this.indent=0,this.args=t,this.closed=n}indented(t){this.indent+=1;try{t(this)}finally{this.indent-=1}}write(t){if(typeof t=="function"){t(this,{execution:"sync"}),t(this,{execution:"async"});return}const r=t.split(`
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/index-ByrWASlZ.js","assets/react-XDCjal2T.js","assets/RightSidebar-Cyd0Hm6s.js","assets/app-CG7UnlvD.js","assets/dnd-BCFAPC0L.js","assets/terminal-DaiFCKy_.js","assets/index-Db6cTvcd.css","assets/swiper-Bge5b7oc.js","assets/swiper-C2J0D0kV.css","assets/Markdown-BQK61rwW.js","assets/use-gesture-react.esm-uKjWuDRY.js","assets/referenceSelection-CYduiLc1.js","assets/list-tree-TZoK4D1s.js","assets/Markdown-DKQhs57e.css","assets/GitLoadingSkeleton-D5nkNhPE.js","assets/RecordingSaveDialog-SqE6T39W.js","assets/gestureArbiter-DszagC-d.js","assets/DiffReview-9a_DXlXn.js","assets/DiffViewer-25DyaFuh.js","assets/git-compare-TvhljhDy.js","assets/DiffViewer-T3uj2-aP.css","assets/triangle-alert-DUjdvUeM.js","assets/ChangeWalkthroughPanel-BC7zpkq3.js","assets/chevron-left-BS8PE--U.js","assets/maximize-2-Duk9ucVy.js","assets/AndroidMirrorView-DvaQ4bWE.js","assets/v4-EwEgHOG0.js","assets/unplug-wUkIQYu0.js","assets/circle-BbMJmnZN.js","assets/search-g7nZaX-p.js","assets/arrow-down-C3OQpvij.js","assets/RightSidebar-DW-JEgm2.css"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{a$ as ba,a9 as Bo,cr as g,dE as va,b2 as Er,q as _a,eB as wa,a8 as Sa,as as ka,C as $a,dh as Oa,r as ja}from"./app-CG7UnlvD.js";import{b as w,r as xa}from"./dnd-BCFAPC0L.js";import{C as jt}from"./SessionChatView-BNFqLvSD.js";import{C as Aa}from"./circle-BbMJmnZN.js";import{S as Ea}from"./search-g7nZaX-p.js";import{E as za}from"./external-link-CUbXNBYc.js";import"./react-XDCjal2T.js";import"./terminal-DaiFCKy_.js";import"./clipboardText-CQBpBKPz.js";import"./Markdown-BQK61rwW.js";import"./swiper-Bge5b7oc.js";import"./use-gesture-react.esm-uKjWuDRY.js";import"./referenceSelection-CYduiLc1.js";import"./list-tree-TZoK4D1s.js";import"./quote-BWHaYR1j.js";import"./arrow-down-C3OQpvij.js";const Ia=[["path",{d:"m3 16 4 4 4-4",key:"1co6wj"}],["path",{d:"M7 20V4",key:"1yoxec"}],["path",{d:"m21 8-4-4-4 4",key:"1c9v7m"}],["path",{d:"M17 4v16",key:"7dpous"}]],Ta=ba("arrow-down-up",Ia),Ra=globalThis;Ra[Symbol.for("openui.devtools.autoMount")]=!0;const Na=2e3;function Pa(e){const t=e?.OPENUI_POSTHOG_HOST??"https://dgoeivjus9jfp.cloudfront.net";return{apiKey:e?.OPENUI_POSTHOG_KEY??"phc_3OLW53x09ZTVZSV6BEpj5uycj3ooqR6KOemOjx04e3D",captureUrl:new URL("/capture/",t).toString()}}function $n(e){return e==="1"||e?.toLowerCase()==="true"}function Ca(e){return $n(e?.OPENUI_TELEMETRY_DISABLED)||$n(e?.DO_NOT_TRACK)}function Za(e){return $n(e?.OPENUI_RUNTIME_TELEMETRY_ENABLED)&&!Ca(e)}function qo(e){const t=e.trim();if(!t)return"";try{const r=new URL(t),o=bt(decodeURIComponent(r.pathname));if(r.protocol==="file:")return`file:${o}`;if(r.host)return zr(r.host,o)}catch{}if(/^[A-Za-z]:[\\/]/.test(t))return bt(t);const n=/^(?:[^@/\s]+@)?([^:/\s]+):(.+)$/.exec(t);return n?zr(n[1],n[2]):bt(t)}function zr(e,t){const n=e.trim().toLowerCase(),r=bt(t);return r?`${n}/${r}`:n}function bt(e){return e.trim().replace(/\\/g,"/").replace(/^\/+|\/+$/g,"").replace(/\.git$/i,"")}function On(e){const t=Object.values(e).filter(r=>typeof r=="number");return Object.entries(e).filter(([r,o])=>t.indexOf(+r)===-1).map(([r,o])=>o)}function Ir(e,t="|"){return e.map(n=>Yo(n)).join(t)}function jn(e,t){return typeof t=="bigint"?t.toString():t}class Ma{constructor(t){this._getter=t,this._value=void 0}get value(){const t=this._getter;return t!==void 0&&(this._value=t(),this._getter=void 0),this._value}}function Qn(e){return new Ma(e)}function Da(e){return e==null}function Yn(e){const t=e.startsWith("^")?1:0,n=e.endsWith("$")?e.length-1:e.length;return e.slice(t,n)}function Ua(e,t){const n=e/t,r=Math.round(n),o=4*Number.EPSILON*Math.max(Math.abs(n),1);return Math.abs(n-r)<o?0:n-r}function $e(e,t,n){Object.defineProperty(e,t,{value:n,writable:!0,enumerable:!0,configurable:!0})}function Jo(e){const t=Object.getOwnPropertyDescriptor(e,"shape");return t?.get?t.get.raw:t?.value}function ke(e){return Jo(e._zod.def)??e._zod.def.shape}function Vo(e,t,n){Object.defineProperty(e,t,{get(){const r=n();return $e(this,t,r),r},enumerable:!0,configurable:!0})}function Ko(e,t,n){t in e?$e(e,t,n):e[t]=n}function Ce(e,t,n,r){const o=ke(t);for(const s of n){const i=Object.getOwnPropertyDescriptor(o,s);i.enumerable&&(i.get?Vo(e,s,()=>{const a=t._zod.def.shape[s];return r?r(a,s):a}):Ko(e,s,r?r(i.value,s):i.value))}}function Fa(e,t){for(const n of Reflect.ownKeys(t)){const r=Object.getOwnPropertyDescriptor(t,n);r.enumerable&&(r.get?Vo(e,n,()=>t[n]):Ko(e,n,r.value))}}function ue(...e){const t={};for(const n of e){const r=Object.getOwnPropertyDescriptors(n);Object.assign(t,r)}return Object.defineProperties({},t)}function La(e){return JSON.stringify(e)}function Ba(e){return e.toLowerCase().trim().replace(/[^\w\s-]/g,"").replace(/[\s_-]+/g,"-").replace(/^-+|-+$/g,"")}const Wo="captureStackTrace"in Error?Error.captureStackTrace:(...e)=>{};function xt(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}const qa=Qn(()=>{if(ye.jitless||typeof navigator<"u"&&navigator?.userAgent?.includes("Cloudflare"))return!1;try{const e=Function;return new e(""),!0}catch{return!1}});function Le(e){if(xt(e)===!1)return!1;const t=e.constructor;if(t===void 0||typeof t!="function")return!0;const n=t.prototype;return!(xt(n)===!1||Object.prototype.hasOwnProperty.call(n,"isPrototypeOf")===!1)}function Qo(e){return Le(e)?{...e}:Array.isArray(e)?[...e]:e instanceof Map?new Map(e):e instanceof Set?new Set(e):e}const Ja=new Set(["string","number","symbol"]);function Be(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function Oe(e,t,n){const r=new e._zod.constr(t??e._zod.def);return(!t||n?.parent)&&(r._zod.parent=e),r}function A(e){const t=e;if(!t)return{};if(typeof t=="string")return{error:()=>t};if(t?.message!==void 0){if(t?.error!==void 0)throw new Error("Cannot specify both `message` and `error` params");t.error=t.message}return delete t.message,typeof t.error=="string"?{...t,error:()=>t.error}:t}function Yo(e){return typeof e=="bigint"?e.toString()+"n":typeof e=="string"?`"${e}"`:`${e}`}function Va(e){return Object.keys(e).filter(t=>e[t]._zod.optin!==void 0&&e[t]._zod.optout==="optional")}const Go={safeint:[Number.MIN_SAFE_INTEGER,Number.MAX_SAFE_INTEGER],int32:[-2147483648,2147483647],uint32:[0,4294967295],float32:[-34028234663852886e22,34028234663852886e22],float64:[-Number.MAX_VALUE,Number.MAX_VALUE]},Ka={int64:[BigInt("-9223372036854775808"),BigInt("9223372036854775807")],uint64:[BigInt(0),BigInt("18446744073709551615")]};function Wa(e,t){const n=e._zod.def,r=n.checks;if(r&&r.length>0)throw new Error(".pick() cannot be used on object schemas containing refinements");const s={};return Ce(s,e,Wt(e,t)),Oe(e,ue(n,{shape:s,checks:[]}))}function Wt(e,t){const n=ke(e),r=[];for(const o of Reflect.ownKeys(t)){if(!Object.getOwnPropertyDescriptor(n,o)?.enumerable)throw new Error(`Unrecognized key: "${String(o)}"`);t[o]&&r.push(o)}return r}function Qa(e,t){const n=e._zod.def,r=n.checks;if(r&&r.length>0)throw new Error(".omit() cannot be used on object schemas containing refinements");const s=new Set(Wt(e,t)),i={};return Ce(i,e,Reflect.ownKeys(ke(e)).filter(a=>!s.has(a))),Oe(e,ue(n,{shape:i,checks:[]}))}function Ya(e,t){if(!Le(t))throw new Error("Invalid input to extend: expected a plain object");const n=e._zod.def.checks;if(n&&n.length>0){const o=ke(e);for(const s of Reflect.ownKeys(t))if(Object.getOwnPropertyDescriptor(o,s)!==void 0)throw new Error("Cannot overwrite keys on object schemas containing refinements. Use `.safeExtend()` instead.")}return Oe(e,ue(e._zod.def,{shape:Ho(e,t)}))}function Ho(e,t){const n={};return Ce(n,e,Reflect.ownKeys(ke(e))),Fa(n,t),n}function Ga(e,t){if(!Le(t))throw new Error("Invalid input to safeExtend: expected a plain object");return Oe(e,ue(e._zod.def,{shape:Ho(e,t)}))}function Ha(e,t){if(!t?._zod?.def)throw new Error("Invalid input to merge: expected an object schema. To merge a plain shape, use `.extend()`.");if(e._zod.def.checks?.length)throw new Error(".merge() cannot be used on object schemas containing refinements. Use .safeExtend() instead.");const n={};Ce(n,e,Reflect.ownKeys(ke(e))),Ce(n,t,Reflect.ownKeys(ke(t)));const r=ue(e._zod.def,{shape:n,get catchall(){return t._zod.def.catchall},checks:t._zod.def.checks??[]});return Oe(e,r)}function Tr(e,t,n,r="partial"){const s=t._zod.def.checks;if(s&&s.length>0)throw new Error(`.${r}() cannot be used on object schemas containing refinements`);const a=n?new Set(Wt(t,n)):void 0,u={};return Ce(u,t,Reflect.ownKeys(ke(t)),e&&((c,l)=>a&&!a.has(l)?c:new e({type:"optional",innerType:c}))),Oe(t,ue(t._zod.def,{shape:u,checks:[]}))}function Xa(e,t,n){const r=n?new Set(Wt(t,n)):void 0,o={};return Ce(o,t,Reflect.ownKeys(ke(t)),(s,i)=>r&&!r.has(i)?s:new e({type:"nonoptional",innerType:s})),Oe(t,ue(t._zod.def,{shape:o}))}function we(e,t=0){if(e.aborted===!0)return!0;for(let n=t;n<e.issues.length;n++)if(e.issues[n]?.continue!==!0)return!0;return!1}function eu(e,t=0){if(e.aborted===!0)return!0;for(let n=t;n<e.issues.length;n++)if(e.issues[n]?.continue===!1)return!0;return!1}function Ze(e,t){return t.map(n=>{var r;return(r=n).path??(r.path=[]),n.path.unshift(e),n})}function Qe(e){return typeof e=="string"?e:e?.message}function Rr(e){const t=[];for(const n of e??[]){const r=n._zod.def;if(!/_(length|size)$|_equals$/.test(r.check))break;const o=r.maximum??r.length??r.size;o>=0&&t.push([o,n])}return t}function xn(e,t,n){var r;for(let o=t;o<e.length;o++)(r=e[o]).schema??(r.schema=n)}function Ee(e,t,n){var r;const o=e.inst?._zod?.traits;o?.has("$ZodType")&&(o.has("$ZodCheck")?(r=e).schema??(r.schema=e.inst):e.schema=e.inst);const s=e.schema!==e.inst?e.schema?._zod.def?.error:void 0,i=e.message?e.message:Qe(e.inst?._zod.def?.error?.(e))??Qe(s?.(e))??Qe(t?.error?.(e))??Qe(n.customError?.(e))??Qe(n.localeError?.(e))??"Invalid input",a={};for(const u of Object.keys(e))u==="inst"||u==="schema"||u==="continue"||u==="input"||u==="__proto__"||(a[u]=e[u]);return a.path??(a.path=[]),a.message=i,t?.reportInput&&(a.input=e.input),a}const tu=/[\uD800-\uDBFF]/;function Gn(e){const t=e.length;if(!tu.test(e))return t;let n=t;for(let r=0;r<t-1;r++)(e.charCodeAt(r)&64512)===55296&&(e.charCodeAt(r+1)&64512)===56320&&(n--,r++);return n}function Hn(e){return Array.isArray(e)?"array":typeof e=="string"?"string":"unknown"}function nu(e){const t=typeof e;switch(t){case"number":return Number.isNaN(e)?"nan":"number";case"object":{if(e===null)return"null";if(Array.isArray(e))return"array";const n=e;if(n&&Object.getPrototypeOf(n)!==Object.prototype&&"constructor"in n&&n.constructor)return n.constructor.name}}return t}function nt(...e){const[t,n,r]=e;return typeof t=="string"?{message:t,code:"custom",input:n,inst:r}:{...t}}function ru(e,t){for(const n in t){const r=Object.getOwnPropertyDescriptor(t,n);r.get?Object.defineProperty(e,n,{...r,enumerable:!1}):ou(e,n,r.value)}}function ze(e,t,n,r=!0){return Object.defineProperty(e,t,{configurable:!0,writable:!0,enumerable:r,value:n}),n}function Xo(e,t,n){return ze(e,t,n,!1)}function es(e,t){for(const n in e){const r=e[n];Object.defineProperty(t,n,{configurable:!0,enumerable:!0,get(){return ze(this,n,r(this))},set(o){ze(this,n,o)}})}return t}function ou(e,t,n){Object.defineProperty(e,t,{configurable:!0,get(){return this==null?n:ze(this,t,n.bind(this))},set(r){ze(this,t,r)}})}function su(e,t){const n=Object.getPrototypeOf(e);return t in n?void 0:n}let cn,xe=!1;const iu={configurable:!0,get(){xe=!0}};function D(e,t,n){const r=Object.getPrototypeOf(e._zod);if(t in r&&cn!==e._zod){cn=void 0;return}cn=e._zod,Object.defineProperty(r,t,{configurable:!0,get(){Object.defineProperty(this,t,iu);const o=xe;xe=!1;try{const s=n(this);return xe?delete this[t]:Object.defineProperty(this,t,{configurable:!0,writable:!0,value:s}),xe=xe||o,s}catch(s){throw delete this[t],xe=xe||o,s}},set(o){Object.defineProperty(this,t,{configurable:!0,writable:!0,value:o})}})}function au(e,t,n,r){const o=su(e,t);o&&Object.defineProperty(o,t,{configurable:!0,get(){const s={configurable:!0,writable:!0,enumerable:r,value:void 0};return Object.defineProperty(this,t,s),s.value=n(this),Object.defineProperty(this,t,s),s.value},set(s){Object.defineProperty(this,t,{configurable:!0,writable:!0,enumerable:r,value:s})}})}const uu="~constantCatch";function cu(e){const t=()=>e;return t[uu]=!0,t}var Nr;const ln={value:void 0,enumerable:!1};let Pr="captureStackTrace"in Error?Error:null;function lu(e){const t=Pr;if(t){const n=t.stackTraceLimit;if(typeof n=="number"){try{t.stackTraceLimit=0}catch{return Pr=null,new e}try{return new e}finally{t.stackTraceLimit=n}}}return new e}function b(e,t,n,r){const o={};function s(f){this.def=f,this.constr=p,this.traits=new Set}s.prototype=o;const i=n,a=i&&new WeakSet;function u(f,d){if(f._zod){if(f._zod.traits.has(e))return}else{ln.value=new s(d);try{Object.defineProperty(f,"_zod",ln)}finally{ln.value=void 0}}if(f._zod.traits.add(e),t(f,d),a){const h=Object.getPrototypeOf(f),y=f._zod.constr.prototype;let _=h;for(;_&&_!==y;)_=Object.getPrototypeOf(_);const v=_??h;a.has(v)||(a.add(v),ru(v,i))}const m=p.prototype;for(const h in m)Object.prototype.hasOwnProperty.call(m,h)&&(h in f||(f[h]=m[h].bind(f)))}const c=r?.Parent??Object;class l extends c{}Object.defineProperty(l,"name",{value:e});function p(f){const d=r?.Parent?lu(l):this;u(d,f);const m=d._zod.deferred;if(m){for(const y of m)y();d._zod.deferred=void 0}const h=globalThis.__zod_globalConfig?.postProcessor;return h&&h(d),d}return Object.defineProperty(p,"init",{value:u}),Object.defineProperty(p,Symbol.hasInstance,{value:f=>r?.Parent&&f instanceof r.Parent?!0:f?._zod?.traits?.has(e)}),Object.defineProperty(p,"name",{value:e}),p}class Pe extends Error{constructor(){super("Encountered Promise during synchronous parse. Use .parseAsync() instead.")}}class ts extends Error{constructor(t){super(`Encountered unidirectional transform during encode: ${t}`),this.name="ZodEncodeError"}}(Nr=globalThis).__zod_globalConfig??(Nr.__zod_globalConfig={});const ye=globalThis.__zod_globalConfig;function _e(e){return e&&Object.assign(ye,e),ye}function fu(){const e=this._zod;return e.message??(e.message=JSON.stringify(e.def,jn,2)),e.message}function du(e){this._zod.message=e}const pu={get:fu,set:du,enumerable:!0,configurable:!0},fn={value:void 0,enumerable:!1},Cr=new WeakSet([Object.prototype,Error.prototype]),mu=(e,t)=>{e.name="$ZodError",fn.value=t,Object.defineProperty(e,"issues",fn),fn.value=void 0,Object.defineProperty(e,"message",pu);const n=Object.getPrototypeOf(e);Cr.has(n)||(Cr.add(n),Object.defineProperty(n,"toString",{configurable:!0,enumerable:!1,get(){const r=()=>this.message;return Object.defineProperty(this,"toString",{value:r,configurable:!0,writable:!0}),r},set(r){Object.defineProperty(this,"toString",{value:r,configurable:!0,writable:!0})}}))},hu=b("$ZodError",mu);function gu(e,t,n){return Object.prototype.hasOwnProperty.call(e,t)||(t==="__proto__"?Object.defineProperty(e,t,{value:n(),writable:!0,enumerable:!0,configurable:!0}):e[t]=n()),e[t]}function yu(e,t=n=>n.message){const n={},r=[];for(const o of e.issues)o.path.length>0?gu(n,o.path[0],()=>[]).push(t(o)):r.push(t(o));return{formErrors:r,fieldErrors:n}}function bu(e,t=n=>n.message){const n={_errors:[]},r=(o,s=[])=>{for(const i of o.issues)if(i.code==="invalid_union"&&i.errors.length)i.errors.map(a=>r({issues:a},[...s,...i.path]));else if(i.code==="invalid_key")r({issues:i.issues},[...s,...i.path]);else if(i.code==="invalid_element")r({issues:i.issues},[...s,...i.path]);else{const a=[...s,...i.path];if(a.length===0)n._errors.push(t(i));else{let u=n,c=0;for(;c<a.length;){const l=a[c],p=c===a.length-1;if(l==="_errors"){p&&u._errors.push(t(i)),c++;continue}Object.prototype.hasOwnProperty.call(u,l)||Object.defineProperty(u,l,{value:{_errors:[]},enumerable:!0,writable:!0,configurable:!0});const f=u[l];p&&f._errors.push(t(i)),u=f,c++}}}};return r(e),n}function Qt(e,t){return{callee:t?.callee??e,Err:t?.Err}}const Xn=e=>{const t=(n,r,o,s)=>{const i=o?{...o,async:!1}:{async:!1},a=n._zod.run({value:r,issues:[]},i);if(a instanceof Promise)throw new Pe;if(a.issues.length){const u=new(s?.Err??e)(a.issues.map(c=>Ee(c,i,_e())));throw Wo(u,s?.callee??t),u}return a.value};return t},er=e=>{const t=async(n,r,o,s)=>{const i=o?{...o,async:!0}:{async:!0};let a=n._zod.run({value:r,issues:[]},i);if(a instanceof Promise&&(a=await a),a.issues.length){const u=new(s?.Err??e)(a.issues.map(c=>Ee(c,i,_e())));throw Wo(u,s?.callee??t),u}return a.value};return t},tr=e=>(t,n,r)=>{const o=r?{...r,async:!1}:{async:!1},s=t._zod.run({value:n,issues:[]},o);if(s instanceof Promise)throw new Pe;return s.issues.length?ns(e,s.issues,o):{success:!0,data:s.value}};function ns(e,t,n){let r;return{success:!1,get error(){return r||(r=new e(t.map(o=>Ee(o,n,_e()))),t=void 0,n=void 0),r},set error(o){r=o,t=void 0,n=void 0}}}const nr=e=>async(t,n,r)=>{const o=r?{...r,async:!0}:{async:!0};let s=t._zod.run({value:n,issues:[]},o);return s instanceof Promise&&(s=await s),s.issues.length?ns(e,s.issues,o):{success:!0,data:s.value}},vu=Symbol.for("zod.compile.invalid"),_u=Symbol.for("zod.compile.fallback"),wu=((e,t,n)=>{const r=e._zod.bag.validator;if(r!==void 0){if(r(t)!==vu)return!0;if(r.definite===!0&&n===void 0)return!1}return Su(e,t,n)});function Su(e,t,n){const r=n?{...n,async:!1,abortEarly:!0}:{async:!1,abortEarly:!0},o=e._zod.bag.fallbackRun;let s;if(o?(r[_u]=!0,s=o({value:t,issues:[]},r)):s=e._zod.run({value:t,issues:[]},r),s instanceof Promise)throw new Pe;return s.issues.length===0}const ku=async(e,t,n)=>{const r=n?{...n,async:!0,abortEarly:!0}:{async:!0,abortEarly:!0};let o=e._zod.run({value:t,issues:[]},r);return o instanceof Promise&&(o=await o),o.issues.length===0},$u=e=>{const t=Xn(e),n=(r,o,s,i)=>{const a=s?{...s,direction:"backward"}:{direction:"backward"};return t(r,o,a,Qt(n,i))};return n},Ou=e=>{const t=Xn(e),n=(r,o,s,i)=>t(r,o,s,Qt(n,i));return n},ju=e=>{const t=er(e),n=async(r,o,s,i)=>{const a=s?{...s,direction:"backward"}:{direction:"backward"};return await t(r,o,a,Qt(n,i))};return n},xu=e=>{const t=er(e),n=async(r,o,s,i)=>await t(r,o,s,Qt(n,i));return n},Au=e=>(t,n,r)=>{const o=r?{...r,direction:"backward"}:{direction:"backward"};return tr(e)(t,n,o)},Eu=e=>(t,n,r)=>tr(e)(t,n,r),zu=e=>async(t,n,r)=>{const o=r?{...r,direction:"backward"}:{direction:"backward"};return nr(e)(t,n,o)},Iu=e=>async(t,n,r)=>nr(e)(t,n,r),Tu=/^[cC][0-9a-z]{6,}$/,Ru=/^[0-9a-z]+$/,Nu=/^[0-7][0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{25}$/,Pu=/^[0-9a-vA-V]{20}$/,Cu=/^[A-Za-z0-9]{27}$/,Zu=/^[a-zA-Z0-9_-]{21}$/;function Mu(e){return new RegExp(`^[a-zA-Z0-9_-]{${e}}$`)}const Du=/^P(?:(\d+W)|(?!.*W)(?=\d|T\d)(\d+Y)?(\d+M)?(\d+D)?(T(?=\d)(\d+H)?(\d+M)?(\d+([.,]\d+)?S)?)?)$/,Uu=/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$/,Zr=e=>e?new RegExp(`^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-${e}[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$`):/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/,Fu=/^(?:[A-Za-z0-9_'+\-]+\.)*[A-Za-z0-9_'+\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$/,Lu="^(?=[\\s\\S]*[\\p{Extended_Pictographic}\\p{Regional_Indicator}\\u20E3])[\\p{Extended_Pictographic}\\p{Emoji_Component}]+$";function Bu(){return new RegExp(Lu,"u")}const qu=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,Ju=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$/,Vu=/^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/([0-9]|[1-2][0-9]|3[0-2])$/,Ku=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,Wu=/^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$/,Qu=/^(?:[A-Za-z0-9_-]{4})*(?:[A-Za-z0-9_-]{2,3})?$/,Yu=/^https?$/,Gu=/^\+[1-9]\d{6,14}$/,rs="(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))";function Hu(e){return new RegExp(`^${e}$`)}const Xu=Hu(rs);function An(e){const t="(?:[01]\\d|2[0-3]):[0-5]\\d";return typeof e.precision=="number"?e.precision===-1?`${t}`:e.precision===0?`${t}:[0-5]\\d`:`${t}:[0-5]\\d\\.\\d{${e.precision}}`:e.seconds?`${t}:[0-5]\\d(?:\\.\\d+)?`:`${t}(?::[0-5]\\d(?:\\.\\d+)?)?`}function ec(e){return new RegExp(`^${An(e)}$`)}function tc(e){const t=["Z"];e.offset&&t.push("([+-](?:[01]\\d|2[0-3]):[0-5]\\d)");const n=`${An({precision:e.precision,seconds:!0})}(?:${t.join("|")})`,r=e.local?`${n}|${An({precision:e.precision})}`:n;return new RegExp(`^${rs}T(?:${r})$`)}const nc=/^[\s\S]{0,}$/,rc=/^-?\d+$/,rr=/^-?\d+(?:\.\d+)?$/,oc=/^(?:true|false)$/i,sc=/^null$/i,ic=/^[^A-Z]*$/,ac=/^[^a-z]*$/,le=b("$ZodCheck",(e,t)=>{var n;e._zod??(e._zod={}),e._zod.def=t,(n=e._zod).onattach??(n.onattach=[])}),or=e=>{const t=e.value;return!Da(t)&&t.length!==void 0},At={number:"number",bigint:"bigint",object:"date"},os=b("$ZodCheckLessThan",(e,t)=>{le.init(e,t);const n=At[typeof t.value];e._zod.check=r=>{(t.inclusive?r.value<=t.value:r.value<t.value)||r.issues.push({origin:At[typeof r.value]??n,code:"too_big",maximum:typeof t.value=="object"?t.value.getTime():t.value,input:r.value,inclusive:t.inclusive,inst:e,continue:!t.abort})}}),ss=b("$ZodCheckGreaterThan",(e,t)=>{le.init(e,t);const n=At[typeof t.value];e._zod.check=r=>{(t.inclusive?r.value>=t.value:r.value>t.value)||r.issues.push({origin:At[typeof r.value]??n,code:"too_small",minimum:typeof t.value=="object"?t.value.getTime():t.value,input:r.value,inclusive:t.inclusive,inst:e,continue:!t.abort})}}),uc=b("$ZodCheckMultipleOf",(e,t)=>{le.init(e,t),e._zod.check=n=>{if(typeof n.value!=typeof t.value)throw new Error("Cannot mix number and bigint in multiple_of check.");(typeof n.value=="bigint"?t.value!==BigInt(0)&&n.value%t.value===BigInt(0):Ua(n.value,t.value)===0)||n.issues.push({origin:typeof n.value,code:"not_multiple_of",divisor:t.value,input:n.value,inst:e,continue:!t.abort})}}),cc=b("$ZodCheckNumberFormat",(e,t)=>{le.init(e,t),t.format=t.format||"float64";const n=t.format?.includes("int"),r=n?"int":"number",[o,s]=Go[t.format];e._zod.check=i=>{const a=i.value;if(n){if(!Number.isInteger(a)){i.issues.push({expected:r,format:t.format,code:"invalid_type",continue:!1,input:a,inst:e});return}if(!Number.isSafeInteger(a)){a>0?i.issues.push({input:a,code:"too_big",maximum:Number.MAX_SAFE_INTEGER,note:"Integers must be within the safe integer range.",inst:e,origin:r,inclusive:!0,continue:!t.abort}):i.issues.push({input:a,code:"too_small",minimum:Number.MIN_SAFE_INTEGER,note:"Integers must be within the safe integer range.",inst:e,origin:r,inclusive:!0,continue:!t.abort});return}}a<o&&i.issues.push({origin:"number",input:a,code:"too_small",minimum:o,inclusive:!0,inst:e,continue:!t.abort}),a>s&&i.issues.push({origin:"number",input:a,code:"too_big",maximum:s,inclusive:!0,inst:e,continue:!t.abort})}}),lc=b("$ZodCheckMaxLength",(e,t)=>{var n;le.init(e,t),(n=e._zod.def).when??(n.when=or),e._zod.check=r=>{const o=r.value,s=o.length;if((typeof o=="string"&&s>t.maximum?Gn(o):s)<=t.maximum)return;const a=Hn(o);r.issues.push({origin:a,code:"too_big",maximum:t.maximum,inclusive:!0,input:o,inst:e,continue:!t.abort})}}),fc=b("$ZodCheckMinLength",(e,t)=>{var n;le.init(e,t),(n=e._zod.def).when??(n.when=or),e._zod.check=r=>{const o=r.value,s=o.length;if((typeof o=="string"&&s>=t.minimum&&s<t.minimum*2?Gn(o):s)>=t.minimum)return;const a=Hn(o);r.issues.push({origin:a,code:"too_small",minimum:t.minimum,inclusive:!0,input:o,inst:e,continue:!t.abort})}}),dc=b("$ZodCheckLengthEquals",(e,t)=>{var n;le.init(e,t),(n=e._zod.def).when??(n.when=or),e._zod.check=r=>{const o=r.value,s=o.length,i=typeof o=="string"&&s>=t.length&&s<=t.length*2?Gn(o):s;if(i===t.length)return;const a=Hn(o),u=i>t.length;r.issues.push({origin:a,...u?{code:"too_big",maximum:t.length}:{code:"too_small",minimum:t.length},inclusive:!0,exact:!0,input:r.value,inst:e,continue:!t.abort})}}),Yt=b("$ZodCheckStringFormat",(e,t)=>{var n,r;le.init(e,t),t.pattern?(n=e._zod).check??(n.check=o=>{t.pattern.lastIndex=0,!t.pattern.test(o.value)&&o.issues.push({origin:"string",code:"invalid_format",format:t.format,input:o.value,...t.pattern?{pattern:t.pattern.toString()}:{},inst:e,continue:!t.abort})}):(r=e._zod).check??(r.check=()=>{})}),pc=b("$ZodCheckRegex",(e,t)=>{Yt.init(e,t),e._zod.check=n=>{t.pattern.lastIndex=0,!t.pattern.test(n.value)&&n.issues.push({origin:"string",code:"invalid_format",format:"regex",input:n.value,pattern:t.pattern.toString(),inst:e,continue:!t.abort})}}),mc=b("$ZodCheckLowerCase",(e,t)=>{t.pattern??(t.pattern=ic),Yt.init(e,t)}),hc=b("$ZodCheckUpperCase",(e,t)=>{t.pattern??(t.pattern=ac),Yt.init(e,t)}),gc=b("$ZodCheckIncludes",(e,t)=>{le.init(e,t);const n=Be(t.includes),r=new RegExp(typeof t.position=="number"?`^.{${t.position},}${n}`:n);t.pattern=r,e._zod.check=o=>{o.value.includes(t.includes,t.position)||o.issues.push({origin:"string",code:"invalid_format",format:"includes",includes:t.includes,input:o.value,inst:e,continue:!t.abort})}}),yc=b("$ZodCheckStartsWith",(e,t)=>{le.init(e,t);const n=new RegExp(`^${Be(t.prefix)}.*`);t.pattern??(t.pattern=n),e._zod.check=r=>{r.value.startsWith(t.prefix)||r.issues.push({origin:"string",code:"invalid_format",format:"starts_with",prefix:t.prefix,input:r.value,inst:e,continue:!t.abort})}}),bc=b("$ZodCheckEndsWith",(e,t)=>{le.init(e,t);const n=new RegExp(`.*${Be(t.suffix)}$`);t.pattern??(t.pattern=n),e._zod.check=r=>{r.value.endsWith(t.suffix)||r.issues.push({origin:"string",code:"invalid_format",format:"ends_with",suffix:t.suffix,input:r.value,inst:e,continue:!t.abort})}}),vc=b("$ZodCheckOverwrite",(e,t)=>{le.init(e,t),e._zod.check=n=>{n.value=t.tx(n.value)}});class _c{constructor(t=[],n={}){this.content=[],this.indent=0,this.args=t,this.closed=n}indented(t){this.indent+=1;try{t(this)}finally{this.indent-=1}}write(t){if(typeof t=="function"){t(this,{execution:"sync"}),t(this,{execution:"async"});return}const r=t.split(`
|
|
3
3
|
`).filter(i=>i),o=Math.min(...r.map(i=>i.length-i.trimStart().length)),s=r.map(i=>i.slice(o)).map(i=>" ".repeat(this.indent*2)+i);for(const i of s)this.content.push(i)}compile(){const t=Function,n=this?.content??[""];return new t(...Object.keys(this.closed),`return function (${this.args.join(", ")}) {
|
|
4
4
|
${n.join(`
|
|
5
5
|
`)}
|
|
@@ -274,4 +274,4 @@ ${c.join(`
|
|
|
274
274
|
${_}`:y}const f={};if(!o&&!c&&!a)return{program:u,metadata:f,scripts:new Set,complete:!0,isBundle:!1,error:void 0};o&&i.name!==void 0&&(f.name=i.name);const d=c&&!l?"Invalid scripts bundle":void 0;return{program:u,metadata:f,scripts:l?.names??new Set,complete:!d&&(a||!t||!o),isBundle:!0,error:t?void 0:d,...l?.names.size?{scriptRevision:l.revision}:{}}}function _h({response:e,isStreaming:t,result:n,evaluatedResult:r,library:o,querySnapshot:s,parseExceptionRef:i,runtimeErrorsRef:a,renderErrorsRef:u,onError:c}){const l=w.useRef([]),[p,f]=w.useState(0),d=w.useRef(""),m=w.useRef(c);return m.current=c,w.useEffect(()=>{if(t){l.current=[],d.current!==""&&(d.current="",m.current?.([]));return}const h=[];i.current&&h.push(i.current),e&&!n?.meta.statementCount&&!i.current&&h.push({source:"parser",code:"parse-failed",message:"Response could not be parsed as valid openui-lang",hint:`The entire response must be valid openui-lang code starting with root = ${o.root??"Root"}(...)`}),n?.meta.errors.length&&h.push(...Wm(n.meta.errors,o.toJSONSchema(),Object.keys(o.components))),h.push(...a.current),h.push(...u.current),u.current=[],h.push(...s.__openui_errors??[]),l.current=h;const y=JSON.stringify(h);if(y!==d.current){if(d.current=y,f(_=>_+1),m.current)m.current(h);else if(h.length>0)for(const _ of h)console.warn(`[openui] ${_.source}/${_.code}: ${_.message}`)}},[t,e,n,r,s,o,i,a,u]),{errorsRef:l,errorRevision:p}}const Po="react-lang:stream",wh="streaming",Yi="settled";let Co=0;function Sh(){return typeof globalThis.crypto?.randomUUID=="function"?globalThis.crypto.randomUUID():(Co+=1,`openui-lang-${Date.now().toString(36)}-${Co.toString(36)}`)}function Gi(){return{id:null,updateIndex:0,lastResponse:null,hasPublishedStreamingSnapshot:!1,settled:!1,lastSettledErrorKey:null,startedAt:null,durationMs:null}}function Zo(e,t=Date.now()){e.startedAt??=t,e.settled&&(e.durationMs??=Math.max(0,t-e.startedAt));const n=e.durationMs??Math.max(0,t-e.startedAt);return{startedAt:e.startedAt,elapsedMs:n,...e.durationMs!=null?{durationMs:e.durationMs}:{}}}function kh(e,t,n,r=null,o=Sh){return t?(e.settled&&Object.assign(e,Gi()),e.id??=o(),e.hasPublishedStreamingSnapshot&&e.lastResponse===n?null:(e.hasPublishedStreamingSnapshot=!0,e.lastResponse=n,e.updateIndex+=1,{id:e.id,phase:wh,updateIndex:e.updateIndex})):!e.id||e.settled&&(r===null||e.lastSettledErrorKey===r)?null:(e.updateIndex+=1,e.settled=!0,e.lastSettledErrorKey=r,{id:e.id,phase:Yi,updateIndex:e.updateIndex})}function Mo(e){if(e)return{incomplete:e.meta.incomplete,unresolved:e.meta.unresolved,orphaned:e.meta.orphaned,statementCount:e.meta.statementCount}}function $h({response:e,isStreaming:t,result:n,errorsRef:r,errorRevision:o,publish:s=!0,__libraryId:i}){const a=w.useRef(Gi());w.useEffect(()=>{if(!s)return;const u=r.current,c=t?null:JSON.stringify(u),l=kh(a.current,t,e,c),p=i!==void 0?{__libraryId:i}:{};if(t){l&&Ro.info({id:l.id,kind:Po,phase:l.phase,updateIndex:l.updateIndex,response:e,responseLength:e?.length??0,parser:Mo(n),...Zo(a.current),...p,message:"OpenUI Lang is streaming"});return}l?.phase==="settled"&&Ro(u.length>0?"error":"info",{id:l.id,kind:Po,phase:Yi,updateIndex:l.updateIndex,response:e,responseLength:e?.length??0,parser:Mo(n),errors:u,errorCount:u.length,...Zo(a.current),...p,message:u.length>0?`OpenUI Lang settled with ${u.length} error${u.length===1?"":"s"}`:"OpenUI Lang settled"})},[s,t,e,n,r,o,i])}function Sn(e){return e&&typeof e=="object"&&!Array.isArray(e)&&"value"in e?e.value:e}function Oh({response:e,library:t,isStreaming:n,onAction:r,onStateUpdate:o,initialState:s,toolProvider:i,onError:a,publishObservability:u},c){const l=w.useMemo(()=>Qi(e,n),[e,n]),p=n||!l.complete||!!l.error,f=l.isBundle&&p,d=w.useRef({revision:null,names:new Set});p||(d.current={revision:"scriptRevision"in l?l.scriptRevision??null:null,names:l.scripts});const m=d.current.revision,h=d.current.names,y=w.useMemo(()=>t.toJSONSchema(),[t]),_=w.useMemo(()=>Vm(y,t.root),[y,t.root]),v=w.useMemo(()=>Object.fromEntries(Object.entries(y.functions??{}).flatMap(([T,I])=>{const N=t.functions?.[T]?.fn;return N?[[T,{...I,fn:N}]]:[]})),[y,t.functions]),E=w.useRef(null),k=w.useMemo(()=>{if(E.current=l.error?{source:"parser",code:"parse-failed",message:l.error}:null,!l.program)return null;try{return _.set(l.program,!n)}catch(T){return E.current={source:"parser",code:"parse-exception",message:`Parser crashed: ${T instanceof Error?T.message:String(T)}`,hint:"The response may contain syntax the parser cannot handle"},null}},[_,l.program,l.error,n]),$=w.useMemo(()=>ah(),[]),O=w.useMemo(()=>sh(i??null),[i]);w.useEffect(()=>(O.activate(),()=>O.dispose()),[O]);const C=w.useRef(!1),fe=w.useRef(Symbol());w.useEffect(()=>{if(!k?.stateDeclarations&&!s)return;const T=`${JSON.stringify(k?.stateDeclarations)}::${JSON.stringify(s)}`;if(fe.current===T)return;fe.current=T;const I={};if(s)for(const[N,te]of Object.entries(s))N.startsWith("$")?I[N]=te:$.set(N,te);C.current=!0,$.initialize(k?.stateDeclarations??{},I),C.current=!1},[k?.stateDeclarations,$,s]);const j=w.useSyncExternalStore($.subscribe,$.getSnapshot,$.getSnapshot),z=w.useSyncExternalStore(O.subscribe,O.getSnapshot,O.getSnapshot),S=w.useMemo(()=>({getState:T=>Sn($.get(T)),resolveRef:T=>{const I=O.getMutationResult(T);return I||O.getResult(T)},functions:v,actions:y.actions}),[$,O,v,y.actions]);w.useEffect(()=>{if(p)return;const T=(k?.queryStatements??[]).map(I=>{const N={},te=I.toolAST?Z(I.toolAST,S):"";if(I.deps)for(const Ie of I.deps)N[Ie]=j[Ie];return h.has(te)&&(N.__openuiScriptRevision=m),{statementId:I.statementId,toolName:te,args:I.argsAST?Z(I.argsAST,S):null,defaults:I.defaultsAST?Z(I.defaultsAST,S):null,refreshInterval:I.refreshAST?Z(I.refreshAST,S):void 0,deps:Object.keys(N).length>0?N:void 0,complete:I.complete}});O.evaluateQueries(T)},[p,k?.queryStatements,S,O,j,m,h]),w.useEffect(()=>{if(p)return;const T=(k?.mutationStatements??[]).map(I=>({statementId:I.statementId,toolName:I.toolAST?Z(I.toolAST,S):""}));O.registerMutations(T)},[p,k?.mutationStatements,S,O]);const x=w.useRef({onAction:r,onStateUpdate:o});x.current={onAction:r,onStateUpdate:o};const M=w.useRef(k);M.current=k;const G=w.useRef(null);w.useEffect(()=>(G.current=$.getSnapshot(),$.subscribe(()=>{const T=$.getSnapshot();C.current||T===G.current||(G.current=null,x.current.onStateUpdate?.(T))})),[$]);const U=w.useCallback((T,I)=>{if(!T)return Sn($.get(I));const N=$.get(T);if(!(!N||typeof N!="object"||Array.isArray(N)))return Sn(N[I])},[$]),F=w.useCallback((T,I,N,te,Ie=!0)=>{const Q={value:te,componentType:I};if(!T)$.set(N,Q);else{const se=$.get(T),be=se&&typeof se=="object"&&!Array.isArray(se)?se:{};$.set(T,{...be,[N]:Q})}Ie&&x.current.onStateUpdate?.($.getSnapshot())},[$]),L=w.useCallback(T=>{if(T){const I=$.get(T);if(I&&typeof I=="object"&&!Array.isArray(I))return{[T]:I}}return $.getSnapshot()},[$]),ut=w.useCallback(async(T,I,N)=>{if(f)return;const{onAction:te}=x.current;if(N&&!("steps"in N)){const Q=L(I),se=N.type||ht.ContinueConversation;if(y.actions&&Object.prototype.hasOwnProperty.call(y.actions,se))return;const be={...N.params||{}};N.url&&(be.url=N.url),N.context&&(be.context=N.context),te?.({type:se,params:be,humanFriendlyMessage:T,formState:Q,formName:I});return}const Ie=N;if(Ie?.steps){for(const Q of Ie.steps)switch(Q.type){case ve.Run:if(Q.refType==="mutation"){const se=M.current?.mutationStatements?.find(ya=>ya.statementId===Q.statementId),be=se?.argsAST?Z(se.argsAST,S):{};if(!await O.fireMutation(Q.statementId,be))return}else O.invalidate([Q.statementId]);break;case ve.ToAssistant:te?.({type:ht.ContinueConversation,params:Q.context!==void 0?{context:Q.context}:{},humanFriendlyMessage:Q.message,formState:L(I),formName:I});break;case ve.OpenUrl:te?.({type:ht.OpenUrl,params:{url:Q.url},humanFriendlyMessage:"",formState:L(I),formName:I});break;case"custom_action":te?.({type:Q.name,params:Q.params,humanFriendlyMessage:"",formState:L(I),formName:I});break;case ve.Set:{if(!Q.valueAST){console.warn(`[openui] Set action for ${Q.target} has no valueAST — skipping`);break}const se=Z(Q.valueAST,S);$.set(Q.target,se);break}case ve.Reset:{const se=M.current?.stateDeclarations??{};for(const be of Q.targets)$.set(be,se[be]??null,{pristine:!0});break}}return}te?.({type:ht.ContinueConversation,params:{},humanFriendlyMessage:T,formState:L(I),formName:I})},[f,O,S,L,$,y.actions]),Or=w.useRef([]),jr=w.useRef(n);jr.current=n;const xr=w.useCallback(T=>{jr.current||Or.current.push(T)},[]),sn=z.__openui_loading.length>0||n&&f&&(k?.queryStatements.length??0)>0,an=w.useMemo(()=>z.__openui_errors.filter(T=>T.source==="query"),[z]),pa=w.useCallback(()=>{f||O.invalidate(an.map(T=>T.statementId))},[f,O,an]),un=w.useRef([]),Ar=w.useMemo(()=>{if(!k?.root&&!k?.rootExpression)return k;const T=[],I={ctx:S,library:t,store:$,errors:T};try{const N=nh(k,I);return un.current=T,{...k,root:N}}catch(N){const te=N instanceof Error?N.message:String(N);return T.push({source:"runtime",code:"runtime-error",message:`Prop evaluation failed: ${te}`}),un.current=T,k}},[k,S,t,$,j,z]),ma=w.useMemo(()=>({library:t,renderNode:c,triggerAction:ut,isStreaming:p,getFieldValue:U,setFieldValue:F,store:$,evaluationContext:S,reportError:xr,isQueryLoading:sn}),[t,c,p,sn,ut,U,F,$,S,xr]),{errorsRef:ha,errorRevision:ga}=_h({response:l.program,isStreaming:n,result:k,evaluatedResult:Ar,library:t,querySnapshot:z,parseExceptionRef:E,runtimeErrorsRef:un,renderErrorsRef:Or,onError:a});return $h({response:l.program,isStreaming:n,result:k,errorsRef:ha,errorRevision:ga,publish:u,__libraryId:t.__libraryId}),{result:Ar,parseResult:k,contextValue:ma,isQueryLoading:sn,queryErrors:an,retryQueries:pa}}var jh=class extends w.Component{lastValidChildren=null;constructor(e){super(e),this.state={hasError:!1}}static getDerivedStateFromError(){return{hasError:!0}}componentDidMount(){this.state.hasError||(this.lastValidChildren=this.props.children)}componentDidUpdate(e){this.state.hasError||(this.lastValidChildren=this.props.children),this.state.hasError&&e.children!==this.props.children&&this.setState({hasError:!1})}componentDidCatch(e){const t=this.props.componentName??"Unknown";this.props.onError?.({source:"runtime",code:"render-error",component:t,message:`Component ${t} render failed: ${e.message}`})}render(){return this.state.hasError?this.lastValidChildren:this.props.children}};function Hi(e){if(e==null)return null;if(typeof e=="string")return e;if(typeof e=="number"||typeof e=="boolean")return String(e);if(Array.isArray(e))return e.map((t,n)=>g.jsx(w.Fragment,{children:Hi(t)},n));if(typeof e=="object"&&e!==null){const t=e;if(t.type==="element")return g.jsx(Sr,{node:t})}return null}function Sr({node:e}){const{library:t,reportError:n}=nn(),r=t.components[e.typeName]?.component;return r?g.jsx(jh,{componentName:e.typeName,onError:n,children:g.jsx(xh,{el:e,Comp:r})}):null}function xh({el:e,Comp:t}){const n=mh();return g.jsx(t,{props:e.props,renderNode:n,statementId:e.statementId})}let Do=!1;function Ah(){if(Do||typeof document>"u")return;Do=!0;const e=document.createElement("style");e.textContent="@keyframes openui-spin { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } }",document.head.appendChild(e)}const Xi=()=>g.jsx("div",{role:"status","aria-label":"Loading data",style:{position:"absolute",top:8,right:8,width:16,height:16,border:"2px solid #e5e7eb",borderTopColor:"#3b82f6",borderRadius:"50%",animation:"openui-spin 0.6s linear infinite",zIndex:10}});function ea({response:e,library:t,isStreaming:n=!1,onAction:r,onStateUpdate:o,initialState:s,onParseResult:i,toolProvider:a,queryLoader:u,children:c,onError:l,publishObservability:p}){w.useInsertionEffect(()=>{Ah()},[]);const f=w.useRef(i);f.current=i;const d=w.useRef(a);d.current=a;const m=w.useRef({async callTool(C,fe){const j=d.current??null;if(j==null)throw new Error("[openui] toolProvider is null");if(typeof j.callTool=="function")return rh(await j.callTool({name:C,arguments:fe}));const z=j,S=z[C];if(!S)throw new Vn(C,Object.keys(z));return S(fe)}}),{result:h,parseResult:y,contextValue:_,isQueryLoading:v,queryErrors:E,retryQueries:k}=Oh({response:e,library:t,isStreaming:n,onAction:r,onStateUpdate:o,initialState:s,toolProvider:a!=null?m.current:null,onError:l,publishObservability:p},Hi);w.useEffect(()=>{f.current?.(y)},[y]);const $=w.useMemo(()=>({isLoading:v,errors:E,retry:k,isRetrying:E.length>0&&v}),[v,E,k]),O={root:h?.root??null,query:$,queryLoader:u};return g.jsx(Vi.Provider,{value:_,children:g.jsx(ta.Provider,{value:O,children:c})})}const ta=w.createContext(null);function rn(){const e=w.useContext(ta);if(!e)throw new Error("Renderer slots must be used within Renderer.Root or Renderer.");return e}function na(){return rn().query}function Eh({style:e,hidden:t,...n}){const{root:r,query:o}=rn();return r?g.jsx("div",{...n,"aria-busy":o.isLoading,hidden:t||o.errors.length>0,style:{opacity:o.isLoading?.7:1,transition:"opacity 0.2s ease",...e},children:g.jsx(Sr,{node:r})}):null}function zh({children:e}){const{query:{isLoading:t,errors:n},queryLoader:r}=rn();return!t||n.length>0?null:g.jsx(g.Fragment,{children:e===void 0?r??g.jsx(Xi,{}):e})}function Ih({children:e}){const{errors:t}=na();return t.length===0?null:g.jsx(g.Fragment,{children:e})}function Th({children:e,onClick:t,disabled:n,...r}){const{retry:o,isLoading:s,errors:i}=na(),a=n||s||i.length===0;return g.jsx("button",{type:"button",...r,disabled:a,onClick:u=>{a||u.defaultPrevented||(t?.(u),u.defaultPrevented||o())},children:e})}function Rh(){const{root:e,query:t,queryLoader:n}=rn();return e?g.jsxs("div",{"aria-busy":t.isLoading,style:{position:"relative"},children:[t.isLoading&&(n??g.jsx(Xi,{})),g.jsx("div",{style:{opacity:t.isLoading?.7:1,transition:"opacity 0.2s ease"},children:g.jsx(Sr,{node:e})})]}):null}function Nh({children:e,...t}){return g.jsx(ea,{...t,children:e===void 0?g.jsx(Rh,{}):e})}const Kn=Object.assign(Nh,{Root:ea,Content:Eh,QueryLoading:zh,QueryError:Ih,Retry:Th});function Ph(e,t){const n=nn(),r=Wi();return ih(e,t,n.store??null,n.evaluationContext??null,o=>n.getFieldValue(r,o),(o,s)=>n.setFieldValue(r,void 0,o,s))}w.createContext(null);const ra=w.createContext(null);function oa(){const e=w.useContext(ra);if(!e)throw new Error("Preview slots must be used within WithPreviewRenderer.Root or WithPreviewRenderer.");return e}function sa(){return oa().state}function ia({open:e,defaultOpen:t=!1,onOpenChange:n,onMetadata:r,children:o,...s}){const[i,a]=w.useState(t),u=e??i,c=s.isStreaming===!0,l=w.useId(),p=w.useMemo(()=>Qi(s.response,c),[s.response,c]).metadata.name,f=w.useMemo(()=>p===void 0?{}:{name:p},[p]),d=w.useRef(r);d.current=r,w.useEffect(()=>{d.current?.(f)},[f]);const m=w.useCallback(v=>{v!==u&&(e===void 0&&a(v),n?.(v))},[e,u,n]),h=w.useCallback(()=>m(!0),[m]),y=w.useCallback(()=>m(!1),[m]),_=w.useMemo(()=>({metadata:f,isOpen:u,isStreaming:c,contentId:l,open:h,close:y}),[f,u,c,l,h,y]);return g.jsx(ra.Provider,{value:{state:_,rendererProps:s},children:o})}function aa({children:e,onClick:t,disabled:n,...r}){const{metadata:o,isOpen:s,isStreaming:i,contentId:a,open:u,close:c}=sa();return g.jsx("button",{type:"button",...r,disabled:n,"aria-expanded":s,"aria-controls":s?a:void 0,onClick:l=>{n||l.defaultPrevented||(t?.(l),l.defaultPrevented||(s?c:u)())},children:e===void 0?`${o.name||"Untitled artifact"}${i?" (generating…)":""}`:e})}function ua({children:e,onClick:t,disabled:n,...r}){const{metadata:o,close:s}=sa();return g.jsx("button",{type:"button",...r,disabled:n,onClick:i=>{n||i.defaultPrevented||(t?.(i),i.defaultPrevented||s())},children:e===void 0?`Close ${o.name||"Untitled artifact"}`:e})}function ca({children:e,style:t,...n}){const{state:r,rendererProps:o}=oa();return r.isOpen?g.jsx("section",{"aria-label":r.metadata.name||"Untitled artifact",...n,id:r.contentId,style:{position:"relative",...t},children:e===void 0?g.jsxs(g.Fragment,{children:[g.jsx(ua,{}),g.jsx(Kn,{...o})]}):g.jsx(Kn,{...o,children:e})}):null}function Ch({children:e,...t}){return g.jsx(ia,{...t,children:e===void 0?g.jsxs(g.Fragment,{children:[g.jsx(aa,{}),g.jsx(ca,{})]}):e})}Object.assign(Ch,{Root:ia,Trigger:aa,Content:ca,Close:ua});const Uo=oe().max(16e3),W=oe().max(160),$t=oe().regex(/^[a-zA-Z][a-zA-Z0-9_-]{0,63}$/),Zh=Ke([oe().max(4e3),re().finite(),wt(),Ud()]),Te={Text:P({content:Uo}),Metric:P({label:W,value:W,detail:W.optional()}),Callout:P({title:W,content:Uo,tone:De(["info","success","warning"]).optional()}),Table:P({columns:ae(W).min(1).max(12),rows:ae(ae(Zh).max(12)).max(300),caption:W.optional()}),Chart:P({title:W,labels:ae(W).min(1).max(30),series:ae(P({name:W,values:ae(re().finite()).max(30)})).min(1).max(6),kind:De(["bar","line"]).optional()}),Checklist:P({title:W,items:ae(P({label:W,detail:W.optional(),done:wt()})).max(30)}),Input:P({name:$t,label:W,placeholder:W.optional(),required:wt().optional()}),Select:P({name:$t,label:W,options:ae(W).min(1).max(50),required:wt().optional()}),Checkbox:P({name:$t,label:W}),Button:P({label:W,action:Tp().optional()}),Resource:P({label:W,kind:De(["file","link"]),target:oe().max(4096),description:W.optional()})},la=Object.entries(Te).map(([e,t])=>en({name:e,props:t,component:null,description:{Text:"Markdown prose using the shared preview renderer.",Metric:"A known metric with label, value and optional context.",Callout:"An important explanation; tone info/success/warning.",Table:"A comparison table with horizontally scrollable, filterable and sortable rows.",Chart:"A chart of supplied factual values. Do not invent values.",Checklist:"Explicitly reported checklist items, never inferred Agent activity.",Input:"Text field inside Form; name must be unique in that form.",Select:"Selection field inside Form.",Checkbox:"Checkbox inside Form.",Button:"Clickable action. @ToAssistant(message) continues this same conversation; inside Form also sends the form values.",Resource:"User-opened file preview or external web link. Use an authorized absolute path for files."}[e]})),kr=Ke(la.map(e=>e.ref)),$r=en({name:"Form",description:"User question form. Include Input/Select/Checkbox and a Button with @ToAssistant. Never nest forms.",props:P({name:$t,title:W,fields:ae(kr).max(30)}),component:null}),fa=en({name:"Card",description:"A titled result card, with text, metrics, charts, tables or a form.",props:P({title:W,content:ae(Ke([kr,$r.ref])).max(30)}),component:null}),Mh=en({name:"Stack",description:"Root vertical layout of answer components.",props:P({content:ae(Ke([kr,$r.ref,fa.ref])).max(40)}),component:null}),Ot=hr({id:"termdock-chat@1",root:"Stack",components:[...la,$r,fa,Mh]}),Xe=(e,t)=>JSON.stringify(e)===JSON.stringify(t),kn=e=>!!e&&typeof e=="object"&&!Array.isArray(e);function Wn(e,t,n){return Xe(e,t)?n:!kn(e)||!kn(t)||!kn(n)?t:Object.fromEntries([...new Set([...Object.keys(n),...Object.keys(t)])].filter(r=>!["__proto__","prototype","constructor"].includes(r)).map(r=>[r,Wn(e[r],t[r],n[r])]))}function Dh(e,t,n,r){const o=`termdock:chat-ui:${va()?.targetPeerId||location.origin}:${e}:${t}`,s=n||{revision:0,values:{}},i=w.useRef({base:s,values:s.values,saving:!1,waiters:[],live:!0,blocked:!1,enabled:r});i.current.enabled=r;const[a,u]=w.useState(s.values),[c,l]=w.useState(""),[p,f]=w.useState(""),[d,m]=w.useState(0);w.useEffect(()=>{i.current.live=!0;try{const _=JSON.parse(sessionStorage.getItem(o)||"null");_?.values&&_?.base&&r&&(i.current.values=Wn(_.base.values,_.values,s.values),u(i.current.values),m(v=>v+1))}catch{}return()=>{i.current.live=!1}},[o]),w.useEffect(()=>{!n||n.revision<=i.current.base.revision||i.current.saving||!Xe(i.current.values,i.current.base.values)||(i.current.base=n,i.current.values=n.values,u(n.values))},[n]);const h=w.useCallback(_=>{const v=i.current;if(!(!v.enabled||Xe(_,v.values))){v.values=_,v.blocked=!1,l("正在保存…"),f("");try{sessionStorage.setItem(o,JSON.stringify({base:v.base,values:_}))}catch{}m(E=>E+1)}},[o]),y=w.useCallback(async function _(){const v=i.current;if(!v.enabled||!v.live||v.blocked)return!1;if(v.saving)return await new Promise(O=>v.waiters.push(O)),_();if(Xe(v.values,v.base.values))return!0;const E=v.values,k=v.base,$=Er();v.saving=!0;try{const O=await fetch(`/api/terminal/${encodeURIComponent(e)}/chat/${encodeURIComponent(t)}/state`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({revision:k.revision,values:E}),signal:AbortSignal.timeout(15e3)}),C=await O.json();if(!v.live||!v.enabled||Er()!==$)return!1;if(O.status===409&&C.state){v.values=Wn(k.values,v.values,C.state.values),v.base=C.state,v.blocked=!0,u(v.values);try{sessionStorage.setItem(o,JSON.stringify({base:v.base,values:v.values}))}catch{}throw new Error("其他客户端更新了填写内容,你的修改已保留,请确认后重新保存。")}if(!O.ok)throw new Error("暂时无法保存,填写内容已保留。");return v.base=C,Xe(E,v.values)?(l("已保存"),sessionStorage.removeItem(o)):m(fe=>fe+1),f(""),!0}catch(O){return v.live&&(v.blocked=!0,l(""),f(O instanceof Error?O.message:"暂时无法保存,填写内容已保留。")),!1}finally{v.saving=!1,v.waiters.splice(0).forEach(O=>O())}},[e,t,o]);return w.useEffect(()=>{if(!r)return;const _=setTimeout(()=>{y()},350);return()=>clearTimeout(_)},[d,r,y]),{hydration:a,update:h,save:y,status:c,error:p,retry:()=>{i.current.blocked=!1,y()}}}const yt=e=>!!e&&typeof e=="object"&&!Array.isArray(e);function Uh(e,t){const n=new Map,r=(u,c)=>{if(Array.isArray(u)){u.forEach(l=>r(l,c));return}if(yt(u)&&u.type==="element"&&yt(u.props)){const l=u.props,p=u.typeName==="Form"?String(l.name):c;["Input","Select","Checkbox"].includes(String(u.typeName))&&(!e.formName||p===e.formName)&&n.set(String(l.name),String(l.label)),Object.values(l).forEach(f=>r(f,p))}};r(t);const o=e.formState||{},s=e.formName&&yt(o[e.formName])?o[e.formName]:o,i=[...n].flatMap(([u,c])=>{const l=s[u],p=yt(l)&&"value"in l?l.value:l;return p==null||p===""?[]:[`${c}:${typeof p=="boolean"?p?"是":"否":typeof p=="string"||typeof p=="number"?String(p):""}`]}),a=e.params.context;return[e.humanFriendlyMessage||"提交填写内容",i.length?i.join(`
|
|
275
275
|
`):"",typeof a=="string"?a:""].filter(Boolean).join(`
|
|
276
276
|
|
|
277
|
-
`)}const Fo="min-h-11 w-full min-w-0 rounded-xl border border-border bg-background px-3 py-2 text-base outline-none focus:ring-2 focus:ring-ring disabled:opacity-60 sm:text-sm",at="inline-flex min-h-11 items-center justify-center gap-2 rounded-xl border border-border px-4 py-2 text-sm hover:bg-surface-2 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring disabled:opacity-40",Lo="grid min-w-0 grid-cols-[repeat(auto-fit,minmax(min(100%,12rem),1fr))] gap-x-6 gap-y-4 [&>*:not([data-chat-metric])]:col-span-full",Fh=w.lazy(()=>Bo(()=>import("./RightSidebar-CxeEK1fi.js").then(e=>e.R),__vite__mapDeps([2,3,1,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31])).then(e=>({default:e.FilePreview}))),on=w.createContext({canWrite:!1,resource:e=>{}});function da({columns:e,rows:t,caption:n}){const[r,o]=w.useState(""),[s,i]=w.useState(),a=w.useMemo(()=>{const u=t.filter(c=>!r||c.some(l=>String(l??"").toLocaleLowerCase().includes(r.toLocaleLowerCase())));return s?u.slice().sort((c,l)=>s.direction*(typeof c[s.column]=="number"&&typeof l[s.column]=="number"?Number(c[s.column])-Number(l[s.column]):String(c[s.column]??"").localeCompare(String(l[s.column]??""),void 0,{numeric:!0}))):u},[t,r,s]);return g.jsxs("div",{className:"min-w-0 space-y-2",children:[n&&g.jsx("p",{className:"text-sm font-medium",children:n}),t.length>5&&g.jsxs("label",{className:"flex max-w-sm items-center gap-2 rounded-xl border border-border px-3 text-muted-foreground",children:[g.jsx(Ea,{size:15}),g.jsx("input",{"aria-label":"筛选表格",className:"min-h-11 min-w-0 flex-1 bg-transparent text-sm text-foreground outline-none",value:r,onChange:u=>o(u.target.value),placeholder:"筛选内容…"})]}),g.jsxs("div",{role:"region","aria-label":"交互表格,可横向滚动",tabIndex:0,className:"max-w-full overflow-x-auto rounded-xl border border-border [touch-action:pan-x_pan-y]",children:[g.jsxs("table",{className:"w-full text-left text-sm",children:[g.jsx("thead",{className:"bg-surface",children:g.jsx("tr",{children:e.map((u,c)=>g.jsx("th",{"aria-sort":s?.column===c?s.direction===1?"ascending":"descending":"none",className:"whitespace-nowrap border-b border-border px-3 py-1 font-medium",children:g.jsxs("button",{type:"button",className:"group inline-flex min-h-11 items-center gap-2 text-left focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring sm:min-h-9",onClick:()=>i({column:c,direction:s?.column===c?-s.direction:1}),children:[u,g.jsx(Ta,{size:12,className:s?.column===c?"text-primary":"text-muted-foreground opacity-50 sm:opacity-0 sm:group-hover:opacity-100 sm:group-focus-visible:opacity-100"})]})},c))})}),g.jsx("tbody",{children:a.map((u,c)=>g.jsx("tr",{className:"border-b border-border/40 last:border-0",children:e.map((l,p)=>g.jsx("td",{className:"min-w-40 max-w-sm whitespace-pre-wrap break-words px-3 py-3 align-top leading-6 sm:py-2.5",children:String(u[p]??"")},p))},c))})]}),!a.length&&g.jsx("p",{className:"p-4 text-sm text-muted-foreground",children:"没有匹配的内容"})]})]})}function Lh({title:e,labels:t,series:n,kind:r="bar"}){const[o,s]=w.useState([]),i=n.filter(h=>!o.includes(h.name)),a=i.flatMap(h=>h.values),u=Math.min(0,...a),c=Math.max(1,...a),l=c-u||1,p=h=>{if(Number.isFinite(l))return 190-(h-u)/l*164;const y=Math.max(Math.abs(u),Math.abs(c));return 190-(h/y-u/y)/(c/y-u/y)*164},f=["var(--primary)","var(--accent)","var(--warning)","var(--tmux)","var(--destructive)","var(--foreground)"],d=Math.max(440,t.length*55),m=(d-60)/t.length;return g.jsxs("figure",{className:"min-w-0 space-y-3",children:[g.jsx("figcaption",{className:"text-sm font-medium",children:e}),g.jsx("div",{className:"flex flex-wrap gap-2",children:n.map((h,y)=>g.jsxs("button",{type:"button","aria-pressed":!o.includes(h.name),className:`${at} min-h-9 px-2 text-xs ${o.includes(h.name)?"opacity-40":""}`,onClick:()=>s(_=>_.includes(h.name)?_.filter(v=>v!==h.name):[..._,h.name]),children:[g.jsx("span",{className:"h-2 w-2 rounded-full",style:{backgroundColor:f[y%f.length]}}),h.name]},y))}),g.jsx("div",{role:"region","aria-label":`${e},可横向滚动`,tabIndex:0,className:"max-w-full overflow-x-auto",children:g.jsxs("svg",{role:"img","aria-label":e,viewBox:`0 0 ${d} 230`,className:"h-60 min-w-full",style:{minWidth:d},children:[g.jsx("line",{x1:"40",x2:d-8,y1:p(0),y2:p(0),stroke:"var(--border)"}),g.jsx("text",{x:"4",y:"22",fill:"var(--muted-foreground)",fontSize:"11",children:c.toLocaleString()}),i.map(h=>{const y=n.indexOf(h),_=f[y%f.length];return r==="line"?g.jsxs("g",{children:[g.jsx("polyline",{fill:"none",stroke:_,strokeWidth:"2.5",points:h.values.slice(0,t.length).map((v,E)=>`${40+m*(E+.5)},${p(v)}`).join(" ")}),h.values.slice(0,t.length).map((v,E)=>g.jsx("circle",{cx:40+m*(E+.5),cy:p(v),r:"4",fill:_,children:g.jsxs("title",{children:[t[E]," · ",h.name,": ",v]})},E))]},y):g.jsx("g",{children:h.values.slice(0,t.length).map((v,E)=>g.jsx("rect",{x:40+m*E+m*.15+m*.7/Math.max(1,i.length)*i.indexOf(h),y:Math.min(p(0),p(v)),width:m*.7/Math.max(1,i.length)-2,height:Math.max(1,Math.abs(p(v)-p(0))),rx:"3",fill:_,children:g.jsxs("title",{children:[t[E]," · ",h.name,": ",v]})},E))},y)}),t.map((h,y)=>g.jsxs("text",{x:40+m*(y+.5),y:"216",textAnchor:"middle",fill:"var(--muted-foreground)",fontSize:"11",children:[h.length>9?h.slice(0,8)+"…":h,g.jsx("title",{children:h})]},y))]})}),g.jsxs("details",{className:"text-xs text-muted-foreground",children:[g.jsx("summary",{className:"cursor-pointer py-2",children:"查看数据"}),g.jsx(da,{columns:["项目",...n.map(h=>h.name)],rows:t.map((h,y)=>[h,...n.map(_=>_.values[y]??null)])})]})]})}function Bh({type:e,props:t}){const{canWrite:n}=w.useContext(on),r=String(t.name),o=String(t.label),s=Ph(r,e==="Checkbox"?!1:"");return e==="Checkbox"?g.jsxs("label",{className:"flex min-h-11 items-center gap-3 text-sm",children:[g.jsx("input",{type:"checkbox",className:"h-4 w-4 accent-primary",disabled:!n,checked:s.value===!0,onChange:i=>s.setValue(i.target.checked)}),o]}):g.jsxs("label",{className:"block space-y-2 text-sm",children:[g.jsxs("span",{children:[o,t.required?g.jsx("span",{className:"ml-1 text-muted-foreground",children:"*"}):null]}),e==="Select"?g.jsxs("select",{className:Fo,disabled:!n,required:t.required===!0,value:typeof s.value=="string"?s.value:"",onChange:i=>s.setValue(i.target.value),children:[g.jsx("option",{value:"",children:"请选择"}),t.options.map(i=>g.jsx("option",{children:i},i))]}):g.jsx("input",{className:Fo,type:"text",disabled:!n,required:t.required===!0,maxLength:8e3,value:typeof s.value=="string"?s.value:"",placeholder:String(t.placeholder||""),onChange:i=>s.setValue(i.target.value)})]})}function qh({props:e}){const{canWrite:t}=w.useContext(on),n=hh(),r=Wi();return g.jsx("button",{type:"button","data-ui-submit":!0,className:`${at} bg-primary text-primary-foreground hover:opacity-90`,disabled:!t,onClick:o=>{o.currentTarget.form&&!o.currentTarget.form.reportValidity()||n(String(e.label),r,e.action)},children:String(e.label)})}function Jh({props:e}){const{resource:t}=w.useContext(on),n=String(e.target),r=String(e.label);let o;try{const a=new URL(n);["http:","https:"].includes(a.protocol)&&!a.username&&!a.password&&(o=a)}catch{}const s=g.jsxs(g.Fragment,{children:[g.jsx("span",{className:"text-primary",children:e.kind==="file"?g.jsx(ja,{size:18}):g.jsx(za,{size:18})}),g.jsxs("span",{className:"min-w-0 flex-1 text-left",children:[g.jsx("span",{className:"block break-words font-medium",children:r}),!!e.description&&g.jsx("span",{className:"mt-1 block break-words text-xs text-muted-foreground",children:String(e.description)})]})]}),i=`${at} w-full justify-start py-3`;return e.kind==="link"&&o?g.jsx("a",{className:i,href:o.href,target:"_blank",rel:"noopener noreferrer",children:s}):g.jsx("button",{type:"button",className:i,disabled:e.kind!=="file"||!/^(?:\/|[a-zA-Z]:[\\/])/.test(n),onClick:()=>t(n),children:s})}function Vh({name:e,props:t,renderNode:n}){if(e==="Button"?Te.Button.omit({action:!0}).parse(t):e in Te&&Te[e].parse(t),e==="Text")return g.jsx(jt,{content:String(t.content)});if(e==="Metric")return g.jsxs("dl",{"data-chat-metric":!0,className:"min-w-0 space-y-1 py-1",children:[g.jsx("dt",{className:"text-xs text-muted-foreground",children:String(t.label)}),g.jsxs("dd",{className:"flex flex-wrap items-baseline gap-x-2 gap-y-0.5",children:[g.jsx("span",{className:"break-words text-xl font-semibold leading-7 tabular-nums",children:String(t.value)}),!!t.detail&&g.jsx("span",{className:"text-xs leading-5 text-muted-foreground",children:String(t.detail)})]})]});if(e==="Callout")return g.jsxs("aside",{className:`min-w-0 rounded-r-lg border-l-2 bg-surface px-3 py-2.5 ${t.tone==="warning"?"border-warning":t.tone==="success"?"border-primary":"border-accent"}`,children:[g.jsx("p",{className:"mb-1 text-xs font-medium",children:String(t.title)}),g.jsx(jt,{content:String(t.content)})]});if(e==="Table")return g.jsx(da,{...Te.Table.parse(t)});if(e==="Chart")return g.jsx(Lh,{...Te.Chart.parse(t)});if(e==="Checklist"){const r=Te.Checklist.parse(t);return g.jsxs("section",{className:"space-y-3",children:[g.jsx("h4",{className:"text-sm font-medium",children:r.title}),g.jsx("ul",{className:"space-y-3",children:r.items.map((o,s)=>g.jsxs("li",{className:"flex gap-3",children:[o.done?g.jsx($a,{size:17,className:"mt-0.5 shrink-0 text-primary"}):g.jsx(Aa,{size:17,className:"mt-0.5 shrink-0 text-muted-foreground"}),g.jsxs("div",{className:"min-w-0",children:[g.jsx("p",{className:"text-sm",children:o.label}),o.detail&&g.jsx("p",{className:"mt-1 text-xs leading-5 text-muted-foreground",children:o.detail})]})]},s))})]})}return e==="Input"||e==="Select"||e==="Checkbox"?g.jsx(Bh,{type:e,props:t}):e==="Button"?g.jsx(qh,{props:t}):e==="Resource"?g.jsx(Jh,{props:t}):e==="Form"?g.jsx(Ki.Provider,{value:String(t.name),children:g.jsxs("form",{className:"w-full max-w-2xl space-y-4 rounded-xl border border-border bg-surface p-4",onSubmit:r=>{r.preventDefault(),r.currentTarget.querySelector("[data-ui-submit]")?.click()},children:[g.jsx("h4",{className:"text-sm font-medium",children:String(t.title)}),n(t.fields)]})}):e==="Card"?g.jsxs("section",{className:"min-w-0 space-y-3",children:[g.jsx("h3",{className:"text-base font-semibold leading-6",children:String(t.title)}),g.jsx("div",{className:Lo,children:n(t.content)})]}):g.jsx("div",{className:`${Lo} gap-y-6`,children:n(t.content)})}const Kh=dh({id:Ot.id,root:Ot.root,components:Object.values(Ot.components).map(e=>({...e,component:t=>g.jsx(Vh,{...t,name:e.name})}))}),Wh=Jm(Ot.toJSONSchema());function Qh({path:e,close:t,sessionId:n,canWrite:r}){const o=w.useRef(null),[s,i]=w.useState(null),[a,u]=w.useState(""),[c,l]=w.useState(null);wa(o,!0,t);const p=async(f,d)=>{if(!r){u("此会话仅允许查看");return}await Oa(f,n,()=>o.current?.isConnected===!0,d)?t():u("暂时无法添加到输入框,请稍后重试。")};return xa.createPortal(g.jsx("div",{"data-sidebar-gesture-ignore":!0,className:"fixed inset-0 z-modal-backdrop flex items-center justify-center bg-[var(--app-backdrop)] p-2 sm:p-6",onMouseDown:f=>{f.target===f.currentTarget&&t()},children:g.jsxs("div",{ref:o,tabIndex:-1,role:"dialog","aria-modal":"true","aria-label":"文件预览",className:"z-modal-panel flex h-[90dvh] w-full max-w-5xl flex-col overflow-hidden rounded-2xl border border-border bg-surface text-foreground",children:[g.jsxs("header",{className:"flex min-h-14 shrink-0 items-center gap-3 border-b border-border px-4",children:[g.jsx("span",{className:"min-w-0 flex-1 truncate text-sm",title:e,children:e.split(/[\\/]/).pop()}),g.jsx("button",{type:"button","aria-label":"关闭文件预览",className:at,onClick:t,children:g.jsx(Sa,{size:17})})]}),g.jsxs("div",{className:"min-h-0 flex-1 overflow-auto",children:[a&&g.jsx("p",{role:"alert",className:"px-4 py-2 text-xs text-destructive",children:a}),g.jsx(w.Suspense,{fallback:g.jsx("p",{className:"p-4 text-sm text-muted-foreground",children:"正在读取文件…"}),children:g.jsx(Fh,{filePath:e,onInsertReference:(f,d,m)=>{p(ka(f,null),m)},onInsertText:(f,d,m)=>{p(f,m)},onReferenceCopied:l,isMobile:window.innerWidth<640,markdownOutlineOpen:!1,markdownImageLightboxOpen:!1,lineRange:s,onLineRangeChange:i,insertedReferenceKey:null,copiedReferenceKey:c})})]})]})}),document.body)}const dg=w.memo(function({message:t,sessionId:n,canWrite:r,onAction:o}){const s=t.ui,[i,a]=w.useState(!1),[u,c]=w.useState(""),[l,p]=w.useState(!1),[f,d]=w.useState(),m=w.useMemo(()=>{try{return Wh.parse(s.code)}catch{return null}},[s.code]),h=s.version===1&&m?.root&&!m.meta.incomplete&&!m.meta.errors.length&&!m.meta.unresolved.length&&m.meta.statementCount<=256&&!m.queryStatements.length&&!m.mutationStatements.length,y=Dh(n,t.id,t.uiState,r&&!!h&&!i),_=async v=>{if(!r||l)return;if(v.type==="open_url"){try{const k=new URL(String(v.params.url));if(!["https:","http:"].includes(k.protocol)||k.username||k.password)throw new Error;window.open(k.href,"_blank","noopener,noreferrer")}catch{c("链接无效,请通过消息确认地址。")}return}if(v.type!=="continue_conversation"){c("此操作暂不可用,请通过消息说明你的选择。");return}const E=Uh(v,m?.root||null);p(!0),c("");try{if(!await y.save()){c("请先保存填写内容,再提交。");return}await o(E)||c("暂时无法提交,请稍后重试。")}finally{p(!1)}};return!h||i?g.jsxs("div",{className:"space-y-2",children:[g.jsx(jt,{content:t.content}),g.jsx("p",{className:"text-xs text-muted-foreground",children:"已显示文字说明"})]}):g.jsx(_a,{fallback:g.jsx(jt,{content:t.content}),children:g.jsx(on.Provider,{value:{canWrite:r&&!l,resource:d},children:g.jsxs("div",{"data-chat-rich-content":!0,className:"min-w-0 space-y-3",children:[g.jsx(Kn,{library:Kh,response:s.code,initialState:y.hydration,onStateUpdate:y.update,onAction:v=>{_(v)},onError:v=>{v.some(E=>E.severity!=="warning")&&a(!0)},toolProvider:null,publishObservability:!1}),y.error?g.jsxs("div",{role:"alert",className:"flex flex-wrap items-center gap-2 text-xs text-destructive",children:[g.jsx("span",{children:y.error}),g.jsx("button",{type:"button",className:`${at} min-h-9 text-foreground`,disabled:!r,onClick:y.retry,children:"重新保存"})]}):y.status&&g.jsx("p",{role:"status",className:"text-xs text-muted-foreground",children:y.status}),u&&g.jsx("p",{role:"alert",className:"text-xs text-destructive",children:u}),l&&g.jsx("p",{role:"status",className:"text-xs text-muted-foreground",children:"正在提交…"}),f&&g.jsx(Qh,{path:f,sessionId:n,canWrite:r,close:()=>d(void 0)})]})})})});export{dg as ChatRichContent};
|
|
277
|
+
`)}const Fo="min-h-11 w-full min-w-0 rounded-xl border border-border bg-background px-3 py-2 text-base outline-none focus:ring-2 focus:ring-ring disabled:opacity-60 sm:text-sm",at="inline-flex min-h-11 items-center justify-center gap-2 rounded-xl border border-border px-4 py-2 text-sm hover:bg-surface-2 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring disabled:opacity-40",Lo="grid min-w-0 grid-cols-[repeat(auto-fit,minmax(min(100%,12rem),1fr))] gap-x-6 gap-y-4 [&>*:not([data-chat-metric])]:col-span-full",Fh=w.lazy(()=>Bo(()=>import("./RightSidebar-Cyd0Hm6s.js").then(e=>e.R),__vite__mapDeps([2,3,1,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31])).then(e=>({default:e.FilePreview}))),on=w.createContext({canWrite:!1,resource:e=>{}});function da({columns:e,rows:t,caption:n}){const[r,o]=w.useState(""),[s,i]=w.useState(),a=w.useMemo(()=>{const u=t.filter(c=>!r||c.some(l=>String(l??"").toLocaleLowerCase().includes(r.toLocaleLowerCase())));return s?u.slice().sort((c,l)=>s.direction*(typeof c[s.column]=="number"&&typeof l[s.column]=="number"?Number(c[s.column])-Number(l[s.column]):String(c[s.column]??"").localeCompare(String(l[s.column]??""),void 0,{numeric:!0}))):u},[t,r,s]);return g.jsxs("div",{className:"min-w-0 space-y-2",children:[n&&g.jsx("p",{className:"text-sm font-medium",children:n}),t.length>5&&g.jsxs("label",{className:"flex max-w-sm items-center gap-2 rounded-xl border border-border px-3 text-muted-foreground",children:[g.jsx(Ea,{size:15}),g.jsx("input",{"aria-label":"筛选表格",className:"min-h-11 min-w-0 flex-1 bg-transparent text-sm text-foreground outline-none",value:r,onChange:u=>o(u.target.value),placeholder:"筛选内容…"})]}),g.jsxs("div",{role:"region","aria-label":"交互表格,可横向滚动",tabIndex:0,className:"max-w-full overflow-x-auto rounded-xl border border-border [touch-action:pan-x_pan-y]",children:[g.jsxs("table",{className:"w-full text-left text-sm",children:[g.jsx("thead",{className:"bg-surface",children:g.jsx("tr",{children:e.map((u,c)=>g.jsx("th",{"aria-sort":s?.column===c?s.direction===1?"ascending":"descending":"none",className:"whitespace-nowrap border-b border-border px-3 py-1 font-medium",children:g.jsxs("button",{type:"button",className:"group inline-flex min-h-11 items-center gap-2 text-left focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring sm:min-h-9",onClick:()=>i({column:c,direction:s?.column===c?-s.direction:1}),children:[u,g.jsx(Ta,{size:12,className:s?.column===c?"text-primary":"text-muted-foreground opacity-50 sm:opacity-0 sm:group-hover:opacity-100 sm:group-focus-visible:opacity-100"})]})},c))})}),g.jsx("tbody",{children:a.map((u,c)=>g.jsx("tr",{className:"border-b border-border/40 last:border-0",children:e.map((l,p)=>g.jsx("td",{className:"min-w-40 max-w-sm whitespace-pre-wrap break-words px-3 py-3 align-top leading-6 sm:py-2.5",children:String(u[p]??"")},p))},c))})]}),!a.length&&g.jsx("p",{className:"p-4 text-sm text-muted-foreground",children:"没有匹配的内容"})]})]})}function Lh({title:e,labels:t,series:n,kind:r="bar"}){const[o,s]=w.useState([]),i=n.filter(h=>!o.includes(h.name)),a=i.flatMap(h=>h.values),u=Math.min(0,...a),c=Math.max(1,...a),l=c-u||1,p=h=>{if(Number.isFinite(l))return 190-(h-u)/l*164;const y=Math.max(Math.abs(u),Math.abs(c));return 190-(h/y-u/y)/(c/y-u/y)*164},f=["var(--primary)","var(--accent)","var(--warning)","var(--tmux)","var(--destructive)","var(--foreground)"],d=Math.max(440,t.length*55),m=(d-60)/t.length;return g.jsxs("figure",{className:"min-w-0 space-y-3",children:[g.jsx("figcaption",{className:"text-sm font-medium",children:e}),g.jsx("div",{className:"flex flex-wrap gap-2",children:n.map((h,y)=>g.jsxs("button",{type:"button","aria-pressed":!o.includes(h.name),className:`${at} min-h-9 px-2 text-xs ${o.includes(h.name)?"opacity-40":""}`,onClick:()=>s(_=>_.includes(h.name)?_.filter(v=>v!==h.name):[..._,h.name]),children:[g.jsx("span",{className:"h-2 w-2 rounded-full",style:{backgroundColor:f[y%f.length]}}),h.name]},y))}),g.jsx("div",{role:"region","aria-label":`${e},可横向滚动`,tabIndex:0,className:"max-w-full overflow-x-auto",children:g.jsxs("svg",{role:"img","aria-label":e,viewBox:`0 0 ${d} 230`,className:"h-60 min-w-full",style:{minWidth:d},children:[g.jsx("line",{x1:"40",x2:d-8,y1:p(0),y2:p(0),stroke:"var(--border)"}),g.jsx("text",{x:"4",y:"22",fill:"var(--muted-foreground)",fontSize:"11",children:c.toLocaleString()}),i.map(h=>{const y=n.indexOf(h),_=f[y%f.length];return r==="line"?g.jsxs("g",{children:[g.jsx("polyline",{fill:"none",stroke:_,strokeWidth:"2.5",points:h.values.slice(0,t.length).map((v,E)=>`${40+m*(E+.5)},${p(v)}`).join(" ")}),h.values.slice(0,t.length).map((v,E)=>g.jsx("circle",{cx:40+m*(E+.5),cy:p(v),r:"4",fill:_,children:g.jsxs("title",{children:[t[E]," · ",h.name,": ",v]})},E))]},y):g.jsx("g",{children:h.values.slice(0,t.length).map((v,E)=>g.jsx("rect",{x:40+m*E+m*.15+m*.7/Math.max(1,i.length)*i.indexOf(h),y:Math.min(p(0),p(v)),width:m*.7/Math.max(1,i.length)-2,height:Math.max(1,Math.abs(p(v)-p(0))),rx:"3",fill:_,children:g.jsxs("title",{children:[t[E]," · ",h.name,": ",v]})},E))},y)}),t.map((h,y)=>g.jsxs("text",{x:40+m*(y+.5),y:"216",textAnchor:"middle",fill:"var(--muted-foreground)",fontSize:"11",children:[h.length>9?h.slice(0,8)+"…":h,g.jsx("title",{children:h})]},y))]})}),g.jsxs("details",{className:"text-xs text-muted-foreground",children:[g.jsx("summary",{className:"cursor-pointer py-2",children:"查看数据"}),g.jsx(da,{columns:["项目",...n.map(h=>h.name)],rows:t.map((h,y)=>[h,...n.map(_=>_.values[y]??null)])})]})]})}function Bh({type:e,props:t}){const{canWrite:n}=w.useContext(on),r=String(t.name),o=String(t.label),s=Ph(r,e==="Checkbox"?!1:"");return e==="Checkbox"?g.jsxs("label",{className:"flex min-h-11 items-center gap-3 text-sm",children:[g.jsx("input",{type:"checkbox",className:"h-4 w-4 accent-primary",disabled:!n,checked:s.value===!0,onChange:i=>s.setValue(i.target.checked)}),o]}):g.jsxs("label",{className:"block space-y-2 text-sm",children:[g.jsxs("span",{children:[o,t.required?g.jsx("span",{className:"ml-1 text-muted-foreground",children:"*"}):null]}),e==="Select"?g.jsxs("select",{className:Fo,disabled:!n,required:t.required===!0,value:typeof s.value=="string"?s.value:"",onChange:i=>s.setValue(i.target.value),children:[g.jsx("option",{value:"",children:"请选择"}),t.options.map(i=>g.jsx("option",{children:i},i))]}):g.jsx("input",{className:Fo,type:"text",disabled:!n,required:t.required===!0,maxLength:8e3,value:typeof s.value=="string"?s.value:"",placeholder:String(t.placeholder||""),onChange:i=>s.setValue(i.target.value)})]})}function qh({props:e}){const{canWrite:t}=w.useContext(on),n=hh(),r=Wi();return g.jsx("button",{type:"button","data-ui-submit":!0,className:`${at} bg-primary text-primary-foreground hover:opacity-90`,disabled:!t,onClick:o=>{o.currentTarget.form&&!o.currentTarget.form.reportValidity()||n(String(e.label),r,e.action)},children:String(e.label)})}function Jh({props:e}){const{resource:t}=w.useContext(on),n=String(e.target),r=String(e.label);let o;try{const a=new URL(n);["http:","https:"].includes(a.protocol)&&!a.username&&!a.password&&(o=a)}catch{}const s=g.jsxs(g.Fragment,{children:[g.jsx("span",{className:"text-primary",children:e.kind==="file"?g.jsx(ja,{size:18}):g.jsx(za,{size:18})}),g.jsxs("span",{className:"min-w-0 flex-1 text-left",children:[g.jsx("span",{className:"block break-words font-medium",children:r}),!!e.description&&g.jsx("span",{className:"mt-1 block break-words text-xs text-muted-foreground",children:String(e.description)})]})]}),i=`${at} w-full justify-start py-3`;return e.kind==="link"&&o?g.jsx("a",{className:i,href:o.href,target:"_blank",rel:"noopener noreferrer",children:s}):g.jsx("button",{type:"button",className:i,disabled:e.kind!=="file"||!/^(?:\/|[a-zA-Z]:[\\/])/.test(n),onClick:()=>t(n),children:s})}function Vh({name:e,props:t,renderNode:n}){if(e==="Button"?Te.Button.omit({action:!0}).parse(t):e in Te&&Te[e].parse(t),e==="Text")return g.jsx(jt,{content:String(t.content)});if(e==="Metric")return g.jsxs("dl",{"data-chat-metric":!0,className:"min-w-0 space-y-1 py-1",children:[g.jsx("dt",{className:"text-xs text-muted-foreground",children:String(t.label)}),g.jsxs("dd",{className:"flex flex-wrap items-baseline gap-x-2 gap-y-0.5",children:[g.jsx("span",{className:"break-words text-xl font-semibold leading-7 tabular-nums",children:String(t.value)}),!!t.detail&&g.jsx("span",{className:"text-xs leading-5 text-muted-foreground",children:String(t.detail)})]})]});if(e==="Callout")return g.jsxs("aside",{className:`min-w-0 rounded-r-lg border-l-2 bg-surface px-3 py-2.5 ${t.tone==="warning"?"border-warning":t.tone==="success"?"border-primary":"border-accent"}`,children:[g.jsx("p",{className:"mb-1 text-xs font-medium",children:String(t.title)}),g.jsx(jt,{content:String(t.content)})]});if(e==="Table")return g.jsx(da,{...Te.Table.parse(t)});if(e==="Chart")return g.jsx(Lh,{...Te.Chart.parse(t)});if(e==="Checklist"){const r=Te.Checklist.parse(t);return g.jsxs("section",{className:"space-y-3",children:[g.jsx("h4",{className:"text-sm font-medium",children:r.title}),g.jsx("ul",{className:"space-y-3",children:r.items.map((o,s)=>g.jsxs("li",{className:"flex gap-3",children:[o.done?g.jsx($a,{size:17,className:"mt-0.5 shrink-0 text-primary"}):g.jsx(Aa,{size:17,className:"mt-0.5 shrink-0 text-muted-foreground"}),g.jsxs("div",{className:"min-w-0",children:[g.jsx("p",{className:"text-sm",children:o.label}),o.detail&&g.jsx("p",{className:"mt-1 text-xs leading-5 text-muted-foreground",children:o.detail})]})]},s))})]})}return e==="Input"||e==="Select"||e==="Checkbox"?g.jsx(Bh,{type:e,props:t}):e==="Button"?g.jsx(qh,{props:t}):e==="Resource"?g.jsx(Jh,{props:t}):e==="Form"?g.jsx(Ki.Provider,{value:String(t.name),children:g.jsxs("form",{className:"w-full max-w-2xl space-y-4 rounded-xl border border-border bg-surface p-4",onSubmit:r=>{r.preventDefault(),r.currentTarget.querySelector("[data-ui-submit]")?.click()},children:[g.jsx("h4",{className:"text-sm font-medium",children:String(t.title)}),n(t.fields)]})}):e==="Card"?g.jsxs("section",{className:"min-w-0 space-y-3",children:[g.jsx("h3",{className:"text-base font-semibold leading-6",children:String(t.title)}),g.jsx("div",{className:Lo,children:n(t.content)})]}):g.jsx("div",{className:`${Lo} gap-y-6`,children:n(t.content)})}const Kh=dh({id:Ot.id,root:Ot.root,components:Object.values(Ot.components).map(e=>({...e,component:t=>g.jsx(Vh,{...t,name:e.name})}))}),Wh=Jm(Ot.toJSONSchema());function Qh({path:e,close:t,sessionId:n,canWrite:r}){const o=w.useRef(null),[s,i]=w.useState(null),[a,u]=w.useState(""),[c,l]=w.useState(null);wa(o,!0,t);const p=async(f,d)=>{if(!r){u("此会话仅允许查看");return}await Oa(f,n,()=>o.current?.isConnected===!0,d)?t():u("暂时无法添加到输入框,请稍后重试。")};return xa.createPortal(g.jsx("div",{"data-sidebar-gesture-ignore":!0,className:"fixed inset-0 z-modal-backdrop flex items-center justify-center bg-[var(--app-backdrop)] p-2 sm:p-6",onMouseDown:f=>{f.target===f.currentTarget&&t()},children:g.jsxs("div",{ref:o,tabIndex:-1,role:"dialog","aria-modal":"true","aria-label":"文件预览",className:"z-modal-panel flex h-[90dvh] w-full max-w-5xl flex-col overflow-hidden rounded-2xl border border-border bg-surface text-foreground",children:[g.jsxs("header",{className:"flex min-h-14 shrink-0 items-center gap-3 border-b border-border px-4",children:[g.jsx("span",{className:"min-w-0 flex-1 truncate text-sm",title:e,children:e.split(/[\\/]/).pop()}),g.jsx("button",{type:"button","aria-label":"关闭文件预览",className:at,onClick:t,children:g.jsx(Sa,{size:17})})]}),g.jsxs("div",{className:"min-h-0 flex-1 overflow-auto",children:[a&&g.jsx("p",{role:"alert",className:"px-4 py-2 text-xs text-destructive",children:a}),g.jsx(w.Suspense,{fallback:g.jsx("p",{className:"p-4 text-sm text-muted-foreground",children:"正在读取文件…"}),children:g.jsx(Fh,{filePath:e,onInsertReference:(f,d,m)=>{p(ka(f,null),m)},onInsertText:(f,d,m)=>{p(f,m)},onReferenceCopied:l,isMobile:window.innerWidth<640,markdownOutlineOpen:!1,markdownImageLightboxOpen:!1,lineRange:s,onLineRangeChange:i,insertedReferenceKey:null,copiedReferenceKey:c})})]})]})}),document.body)}const dg=w.memo(function({message:t,sessionId:n,canWrite:r,onAction:o}){const s=t.ui,[i,a]=w.useState(!1),[u,c]=w.useState(""),[l,p]=w.useState(!1),[f,d]=w.useState(),m=w.useMemo(()=>{try{return Wh.parse(s.code)}catch{return null}},[s.code]),h=s.version===1&&m?.root&&!m.meta.incomplete&&!m.meta.errors.length&&!m.meta.unresolved.length&&m.meta.statementCount<=256&&!m.queryStatements.length&&!m.mutationStatements.length,y=Dh(n,t.id,t.uiState,r&&!!h&&!i),_=async v=>{if(!r||l)return;if(v.type==="open_url"){try{const k=new URL(String(v.params.url));if(!["https:","http:"].includes(k.protocol)||k.username||k.password)throw new Error;window.open(k.href,"_blank","noopener,noreferrer")}catch{c("链接无效,请通过消息确认地址。")}return}if(v.type!=="continue_conversation"){c("此操作暂不可用,请通过消息说明你的选择。");return}const E=Uh(v,m?.root||null);p(!0),c("");try{if(!await y.save()){c("请先保存填写内容,再提交。");return}await o(E)||c("暂时无法提交,请稍后重试。")}finally{p(!1)}};return!h||i?g.jsxs("div",{className:"space-y-2",children:[g.jsx(jt,{content:t.content}),g.jsx("p",{className:"text-xs text-muted-foreground",children:"已显示文字说明"})]}):g.jsx(_a,{fallback:g.jsx(jt,{content:t.content}),children:g.jsx(on.Provider,{value:{canWrite:r&&!l,resource:d},children:g.jsxs("div",{"data-chat-rich-content":!0,className:"min-w-0 space-y-3",children:[g.jsx(Kn,{library:Kh,response:s.code,initialState:y.hydration,onStateUpdate:y.update,onAction:v=>{_(v)},onError:v=>{v.some(E=>E.severity!=="warning")&&a(!0)},toolProvider:null,publishObservability:!1}),y.error?g.jsxs("div",{role:"alert",className:"flex flex-wrap items-center gap-2 text-xs text-destructive",children:[g.jsx("span",{children:y.error}),g.jsx("button",{type:"button",className:`${at} min-h-9 text-foreground`,disabled:!r,onClick:y.retry,children:"重新保存"})]}):y.status&&g.jsx("p",{role:"status",className:"text-xs text-muted-foreground",children:y.status}),u&&g.jsx("p",{role:"alert",className:"text-xs text-destructive",children:u}),l&&g.jsx("p",{role:"status",className:"text-xs text-muted-foreground",children:"正在提交…"}),f&&g.jsx(Qh,{path:f,sessionId:n,canWrite:r,close:()=>d(void 0)})]})})})});export{dg as ChatRichContent};
|
|
Binary file
|
|
Binary file
|